From f4ba1686669b6cd54c0f3d2c5d2c4eb6b15ad5df Mon Sep 17 00:00:00 2001 From: Hinaichigo Date: Mon, 6 Jun 2022 22:33:24 -0400 Subject: [PATCH] Tweaks luck-related values for slots and lotto tickets (#32707) * Update lotto.dm * Update slot_machine.dm * Update lotto.dm * Update slot_machine.dm * Update slot_machine.dm * Update lotto.dm * Update slot_machine.dm * Update slot_machine.dm * Update lotto.dm --- code/game/machinery/computer/slot_machine.dm | 4 +++- code/modules/games/cards/lotto.dm | 18 +++++------------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/code/game/machinery/computer/slot_machine.dm b/code/game/machinery/computer/slot_machine.dm index eaa1eefe25c..a2481354100 100644 --- a/code/game/machinery/computer/slot_machine.dm +++ b/code/game/machinery/computer/slot_machine.dm @@ -109,7 +109,9 @@ //Take luck into account. if(spinner) var/spinnerluck = spinner.luck() - var/jostlepower = rand(25,3000) + var/jostlepower = 25 + for(var/i in 1 to 3) + jostlepower = max(jostlepower, rand(25, i * 1000)) var/jostles = min(round(abs(spinnerluck), jostlepower) / jostlepower, 1000) while(jostles) if(jostle(spinnerluck > 0)) diff --git a/code/modules/games/cards/lotto.dm b/code/modules/games/cards/lotto.dm index 4bd5caf1d73..08b4afe7129 100644 --- a/code/modules/games/cards/lotto.dm +++ b/code/modules/games/cards/lotto.dm @@ -9,6 +9,7 @@ var/winnings = 0 var/list/prizelist = list(100000,50000,10000,5000,1000,500,250,100,50,20,10,5,4,3,2,1) var/list/problist = list(0.0001, 0.0002, 0.001, 0.002, 0.01, 0.02, 0.04, 0.2, 1, 2.5, 5, 10, 12.5, 17, 20, 25) + var/tuning_value = 1/5 //Used to adjust expected values. /obj/item/toy/lotto_ticket/New() ..() @@ -16,14 +17,13 @@ pixel_x = rand(-9, 9) * PIXEL_MULTIPLIER /obj/item/toy/lotto_ticket/proc/scratch(var/input_prize_multiplier, var/mob/user) - var/tuning_value = 1/5 //Used to adjust expected values. var/profit = 0 var/luck = user?.luck() for(var/prize = 1 to problist.len) var/thisprob = problist[prize] //Take luck into account. - if(user ? user.lucky_prob(thisprob, luckfactor = 1/5000, maxskew = 25, ourluck = luck) : prob(thisprob)) - profit = prizelist[prize]*input_prize_multiplier*tuning_value + if(user ? user.lucky_prob(thisprob, luckfactor = 1/12000, maxskew = 49.9, ourluck = luck) : prob(thisprob)) + profit = prizelist[prize] * prize_multiplier * tuning_value return profit //Flash code taken from Blinder @@ -102,23 +102,15 @@ icon_state = "lotto_3" prize_multiplier = 50 //EV 45.50, ER -4.50 - //Emag card /obj/item/toy/lotto_ticket/supermatter_surprise name = "Supermatter Surprise lottery ticket" desc = "An extremely expensive scratch-off lottery ticket. Guaranteed win of up to 5,000,000 credits! Experimental film material - use at your own risk!" icon_state = "lotto_4" + prize_multiplier = 50 + tuning_value = 1 var/flashed = FALSE -/obj/item/toy/lotto_ticket/supermatter_surprise/scratch() - var/input_prize_multiplier = 50 - var/profit = 0 - while(!profit) - for(var/prize = 1 to problist.len) - if(prob(problist[prize])) - profit = prizelist[prize]*input_prize_multiplier - return profit - /obj/item/toy/lotto_ticket/supermatter_surprise/attackby(obj/item/weapon/S, mob/user) ..() if(!flashed)