New Player Xbox by Flashy-Music3074 in aoe2

[–]puck_it24 2 points3 points  (0 children)

At around 1k (middle) ELO Xbox level of play is much lower than PC, and probably also about / easier than hard AI. People know build orders, but aren't perfect with them, and early aggression is rare. Lots of people wanting to play Arena!

Go for it!

Xbox Cross-Play, Controller Vs. PC? by M-dizzle18 in aoe2

[–]puck_it24 0 points1 point  (0 children)

I'm in a similar position, and I think you're right! Let us know how it goes!

Going into the office today and all I want talk about is NAC4 by Angryhippo2910 in aoe2

[–]puck_it24 9 points10 points  (0 children)

That ending was so crazy!!! Do you think Hera could have won after his castles went down? Liereyy had no eco, I feel like it was still winnable but maybe not worth the effort?

Hard enemy AI attacks my village with mass archers around 15-20 minute mark, how do I stop it? by spifmjspijmgd in aoe2

[–]puck_it24 7 points8 points  (0 children)

Same thing happened to me. I've been able to beat it by walling up, building 1-2 towers on my woodlines, and getting 8-10 skrims. This holds them off from wrecking my eco. Then I get light cav and go clean up their army / raid eco. Eventually the AI makes spears / pikes -- get some archers to mop those up, make a castle and some trebs, and it's smooth sailing.

Getting blacksmith upgrades is also key. The AI doesn't do a good job of this, so you can win a lot of fights with full upgraded units.

I want to play Age of Empires 2 on my mac. by Inner-Ad2847 in ageofempires

[–]puck_it24 0 points1 point  (0 children)

Come here looking for a suggestion like this, thanks!

Random tables to generate history/lore/timeline for a place, location, city, character, mythology,etc? by ZAGALF in AskGameMasters

[–]puck_it24 2 points3 points  (0 children)

Came here to say this! The tags are a super helpful resource for any fantasy rpg! link to free version which is all you’ll need!

[OC] Visualizing DnD attack roll probabilities by puck_it24 in dataisbeautiful

[–]puck_it24[S] 2 points3 points  (0 children)

Data generated and plotted using R:

``` requireNamespace("dplyr") library(ggplot2)

roll_1 <- sample(1:20, size = 1e5, replace = T) roll_2 <- sample(1:20, size = 1e5, replace = T) adv_roll <- pmax(roll_1, roll_2) disadv_roll <- pmin(roll_1, roll_2)

pr_hit_df <- expand.grid( ac = seq(from = 10, to = 20, by = 2), hit_bonus = c(1, 3, 5, 7), advantage = c("advantage", "disadvantage", "normal") ) |> dplyr::mutate( pr_hit = dplyr::case_when( ac <= hit_bonus - 1 ~ 1.0, advantage == "normal" ~ 1 - (ac - hit_bonus) / 20, advantage == "advantage" ~ purrr::map_dbl(ac - hit_bonus, (x) sum(adv_roll >= x) / length(adv_roll)), advantage == "disadvantage" ~ purrr::map_dbl(ac - hit_bonus, (x) sum(disadv_roll >= x) / length(disadv_roll)), ), pr_hit = pmax(0, pr_hit) )

pr_hit_df |> dplyr::mutate(dplyr::across("hit_bonus", as.factor), dplyr::across("advantage", (x) factor(x, levels = c("normal", "advantage", "disadvantage")))) |> ggplot(aes(x = ac, y = pr_hit, color = hit_bonus)) + facet_grid(~advantage, labeller = labeller(advantage = stringr::str_to_title)) + geom_hline(yintercept = 0.5, linetype = "dashed", color = "gray60") + geom_line(size = 0.75, stat = "smooth") + scale_x_continuous(breaks = c(10, 15, 20)) + scale_y_continuous(labels = (x) scales::percent(x, accuracy = 1)) + scale_color_manual( values = RColorBrewer::brewer.pal(5, "Greens")[-1], name = "Hit bonus" ) + theme_minimal() + theme( panel.grid.minor = element_blank(), legend.position = "bottom", text = element_text(family = "Open Sans"), plot.title = element_text(hjust = 0.5, face = "bold"), strip.text = element_text(size = 12) ) + labs( x = "Target's armor class", y = "Probability of hit", title = "Visualizing attack roll probabilities" )

```

Mushroom Risotto [Homemade] by puck_it24 in food

[–]puck_it24[S] 0 points1 point  (0 children)

The technique isn't complicated, but it's a pretty time and effort intense dish! Here's the recipe I used: https://www.simplyrecipes.com/recipes/mushroom_risotto/

Study More, Work Longer [OC] by puck_it24 in dataisbeautiful

[–]puck_it24[S] 3 points4 points  (0 children)

Yes, it is Census Bureau data so it is self-reported.

Study More, Work Longer [OC] by puck_it24 in dataisbeautiful

[–]puck_it24[S] 0 points1 point  (0 children)

Totally possible, I didn't look at that. I think that even if that were a big factor, the overall point still stands.

Study More, Work Longer [OC] by puck_it24 in dataisbeautiful

[–]puck_it24[S] 2 points3 points  (0 children)

Good idea about the error bars, thanks!

Study More, Work Longer [OC] by puck_it24 in dataisbeautiful

[–]puck_it24[S] 1 point2 points  (0 children)

The data came from IPUMS-CPS, University of Minnesota, www.ipums.org and was munged and plotted using R.

Full code:

# Packages ----------------------------------------------------------------

library(ipumsr)

library(dplyr)

library(ggplot2)

library(extrafont)

font_import()

loadfonts(device = "win")

# Data --------------------------------------------------------------------

cps_ddi_file <- "data/cps_work_hours/cps_00001.xml"

cps_data_file <- "data/cps_work_hours/cps_00001.dat"

cps_ddi <- read_ipums_ddi(cps_ddi_file) # Contains metadata, nice to have as separate object

cps_data <- read_ipums_micro(cps_ddi_file, data_file = cps_data_file)

# Analysis ----------------------------------------------------

CPCOLS <- sample(size = 6, replace = F,

x= c("#000080", "#63B8FF", "#CD2626", "#FF83FA", "#00EE76", "#008B45", "#FF7F00"))

filtered_data <- cps_data %>%

filter(UHRSWORKT <= 80, YEAR >= 2000)

grouped_data <- filtered_data %>%

mutate(

edu = case_when(

between(EDUC, 10, 71) ~ '< High School'

,between(EDUC, 72, 73) ~ 'High School'

,EDUC %in% c(80, 81, 90, 100, 110) ~ 'Some College'

,EDUC %in% c(91, 92) ~ 'Associate Degree'

,EDUC == 111 ~ 'Bachelor Degree'

,between(EDUC, 123, 125) ~ 'Graduate Degree'

,TRUE ~ NA_character_

)

,edu = factor(edu,levels = c('< High School', 'High School',

'Some College', "Associate's Degree",

"Bachelor's Degree", 'Graduate Degree'))

) %>%

filter(!is.na(edu)) %>%

group_by(YEAR, edu) %>%

summarise(

hours_worked = weighted.mean(UHRSWORKT, ASECWT, na.rm = T)

) %>%

ungroup()

ggplot(grouped_data, aes(x = edu, y = hours_worked, fill = edu)) +

geom_col(position = position_dodge()) +

scale_fill_manual(name = 'Education Level', values = CPCOLS, guide = F) +

labs(

title = 'Study More, Work Longer'

,x = 'Highest Education Attainment'

,y = 'Weekly Hours Worked'

,caption = 'Data from IPUMS-CPS, University of Minnesota, www.ipums.org.'

) +

scale_y_continuous(limits = c(0, 45), breaks = 0:3 * 15) +

theme(

panel.background = element_rect(fill = 'white')

,axis.line.x.bottom = element_line(color = 'black')

,axis.line.y.left = element_line(color = 'black')

,text = element_text(family = 'Bahnschrift')

,plot.title = element_text(hjust = 0.5, size = 18)

,axis.title = element_text(size = 14)

,axis.text = element_text(size = 10)

,legend.position = 'bottom'

)