Skip to content

Commit 15e52e6

Browse files
committed
base stuff
1 parent 017cbd7 commit 15e52e6

File tree

9 files changed

+101
-384
lines changed

9 files changed

+101
-384
lines changed

items/code.lua

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5023,14 +5023,10 @@ local copypaste = {
50235023
cost = 14,
50245024
blueprint_compat = true,
50255025
loc_vars = function(self, info_queue, card)
5026+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or 2)
50265027
return {
50275028
vars = {
5028-
card and cry_prob(
5029-
math.min(card.ability.extra.odds / 2, card.ability.cry_prob or 1),
5030-
card.ability.extra.odds,
5031-
card.ability.cry_rigged
5032-
) or 1,
5033-
card and card.ability.extra.odds or 2,
5029+
num, denom
50345030
}, -- this effectively prevents a copypaste from ever initially misprinting at above 50% odds. still allows rigging/oops
50355031
key = Cryptid.gameset_loc(self, { madness = "madness", exp_modest = "modest" }),
50365032
}
@@ -5070,13 +5066,7 @@ local copypaste = {
50705066
then
50715067
if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
50725068
if
5073-
pseudorandom("cry_copypaste_joker")
5074-
< cry_prob(
5075-
math.min(card.ability.extra.odds / 2, card.ability.cry_prob),
5076-
card.ability.extra.odds,
5077-
card.ability.cry_rigged
5078-
)
5079-
/ card.ability.extra.odds
5069+
SMODS.pseudorandom_probability(card, "cry_copypaste_joker", 1, card and card.ability.extra.odds or 2)
50805070
then
50815071
G.E_MANAGER:add_event(Event({
50825072
func = function()

items/epic.lua

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -211,19 +211,19 @@ local googol_play = {
211211
atlas = "atlasepic",
212212
soul_pos = { x = 10, y = 0, extra = { x = 4, y = 0 } },
213213
loc_vars = function(self, info_queue, card)
214+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
214215
return {
215216
vars = {
216-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
217-
card.ability.extra.odds,
217+
num,
218+
denom,
218219
number_format(card.ability.extra.Xmult),
219220
},
220221
}
221222
end,
222223
calculate = function(self, card, context)
223224
if
224225
context.joker_main
225-
and pseudorandom("cry_googol_play")
226-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds
226+
and SMODS.pseudorandom_element(card, "cry_googol_play", 1, card and card.ability.extra.odds or self.config.extra.odds)
227227
then
228228
return {
229229
message = localize({
@@ -877,10 +877,11 @@ local boredom = {
877877
cost = 14,
878878
blueprint_compat = true,
879879
loc_vars = function(self, info_queue, card)
880+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
880881
return {
881882
vars = {
882-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
883-
card.ability.extra.odds,
883+
num,
884+
denom
884885
},
885886
}
886887
end,
@@ -892,9 +893,7 @@ local boredom = {
892893
and not (context.other_card.ability and context.other_card.ability.name == "cry-Boredom")
893894
then
894895
if
895-
pseudorandom("cry_boredom_joker")
896-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged)
897-
/ card.ability.extra.odds
896+
SMODS.pseudorandom_element(card, "cry_boredom_joker", 1, card and card.ability.extra.odds or self.config.extra.odds)
898897
then
899898
return {
900899
message = localize("k_again_ex"),
@@ -908,8 +907,7 @@ local boredom = {
908907
if
909908
context.repetition
910909
and context.cardarea == G.play
911-
and pseudorandom("cry_boredom_card")
912-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds
910+
and SMODS.pseudorandom_element(card, "cry_boredom_card", 1, card and card.ability.extra.odds or self.config.extra.odds)
913911
then
914912
return {
915913
message = localize("k_again_ex"),
@@ -1470,10 +1468,10 @@ local bonusjoker = {
14701468
enhancement_gate = "m_bonus",
14711469
loc_vars = function(self, info_queue, card)
14721470
info_queue[#info_queue + 1] = G.P_CENTERS.m_bonus
1471+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
14731472
return {
14741473
vars = {
1475-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
1476-
card.ability.extra.odds,
1474+
num, denom,
14771475
number_format(card.ability.extra.add),
14781476
},
14791477
}
@@ -1483,8 +1481,7 @@ local bonusjoker = {
14831481
if context.individual and context.cardarea == G.play then
14841482
if SMODS.has_enhancement(context.other_card, "m_bonus") then
14851483
if
1486-
pseudorandom("bonusjoker")
1487-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds
1484+
SMODS.pseudorandom_probability(card, "bonusjoker", 1, card and card.ability.extra.odds or self.config.extra.odds)
14881485
and card.ability.immutable.check < 2
14891486
and not context.retrigger_joker
14901487
then
@@ -1579,10 +1576,11 @@ local multjoker = {
15791576
loc_vars = function(self, info_queue, card)
15801577
info_queue[#info_queue + 1] = G.P_CENTERS.m_mult
15811578
info_queue[#info_queue + 1] = G.P_CENTERS.c_cryptid
1579+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
15821580
return {
15831581
vars = {
1584-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
1585-
card.ability.extra.odds,
1582+
num,
1583+
denom
15861584
},
15871585
}
15881586
end,
@@ -1594,9 +1592,7 @@ local multjoker = {
15941592
and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit
15951593
then
15961594
if
1597-
pseudorandom("multjoker")
1598-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged)
1599-
/ card.ability.extra.odds
1595+
SMODS.pseudorandom_probability(card, "multjoker", 1, card and card.ability.extra.odds or self.config.extra.odds)
16001596
then
16011597
G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
16021598
G.E_MANAGER:add_event(Event({

items/m.lua

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -538,10 +538,11 @@ local notebook = {
538538
demicoloncompat = true,
539539
loc_vars = function(self, info_queue, card)
540540
info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly
541+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
541542
return {
542543
vars = {
543-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
544-
card.ability.extra.odds,
544+
num,
545+
denom,
545546
number_format(card.ability.immutable.slots),
546547
number_format(card.ability.extra.active),
547548
number_format(card.ability.extra.jollies),
@@ -565,8 +566,7 @@ local notebook = {
565566
end
566567
if
567568
to_number(jollycount) >= to_number(card.ability.extra.jollies) --if there are 5 or more jolly jokers
568-
or pseudorandom("cry_notebook")
569-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds
569+
or SMODS.pseudorandom_element(card, "cry_notebook", 1, card and card.ability.extra.odds or self.config.extra.odds)
570570
then
571571
card.ability.immutable.slots = to_number(
572572
math.min(
@@ -831,20 +831,19 @@ local scrabble = {
831831
if Cryptid.enabled("e_cry_m") == true then
832832
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m
833833
end
834+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
834835
return {
835836
vars = {
836-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
837-
card.ability.extra.odds,
837+
num,
838+
denom
838839
},
839840
}
840841
end,
841842
calculate = function(self, card, context)
842843
if context.cardarea == G.jokers and context.before and not context.retrigger_joker then
843844
local check = false
844845
if
845-
pseudorandom("scrabbleother")
846-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged)
847-
/ card.ability.extra.odds
846+
SMODS.pseudorandom_element(card, "scrabbleother", 1, card and card.ability.extra.odds or self.config.extra.odds)
848847
then
849848
check = true
850849
local card = create_card("Joker", G.jokers, nil, 0.9, nil, nil, nil, "scrabbletile")

items/misc.lua

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ local echo = {
2424
pos = { x = 2, y = 0 },
2525
config = { retriggers = 2, extra = 2 },
2626
loc_vars = function(self, info_queue, card)
27+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra or self.config.extra)
2728
return {
2829
vars = {
2930
card and card.ability.retriggers or self.config.retriggers,
30-
card and cry_prob(card.ability.cry_prob or 1, card.ability.extra, card.ability.cry_rigged) or 1,
31-
card and card.ability.extra or self.config.extra,
31+
num,
32+
denom
3233
},
33-
} -- note that the check for (card.ability.cry_prob or 1) is probably unnecessary due to cards being initialised with ability.cry_prob
34+
}
3435
end,
3536
calculate = function(self, card, context)
3637
if
3738
context.repetition
38-
and pseudorandom("echo")
39-
< cry_prob(card.ability.cry_prob or 1, card.ability.extra or 2, card.ability.cry_rigged) / (card.ability.extra or 2)
39+
and SMODS.pseudorandom_element(card, "cry_echo", 1, card and card.ability.extra or self.config.extra)
4040
then
4141
return {
4242
message = localize("k_again_ex"),
@@ -210,13 +210,15 @@ local abstract = {
210210
config = { extra = { Emult = 1.15, odds_after_play = 2, odds_after_round = 4, marked = false, survive = false } },
211211
--#1# emult, #2# in #3# chance card is destroyed after play, #4# in #5$ chance card is destroyed at end of round (even discarded or in deck)
212212
loc_vars = function(self, info_queue, card)
213+
local num1, denom1 = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds_after_play or self.config.extra.odds_after_play)
214+
local num2, denom2 = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds_after_round or self.config.extra.odds_after_round)
213215
return {
214216
vars = {
215217
card.ability.extra.Emult,
216-
cry_prob(card.ability.cry_prob, card.ability.extra.odds_after_play, card.ability.cry_rigged),
217-
card.ability.extra.odds_after_play,
218-
cry_prob(card.ability.cry_prob, card.ability.extra.odds_after_round, card.ability.cry_rigged),
219-
card.ability.extra.odds_after_round,
218+
num1,
219+
denom1,
220+
num2,
221+
denom2
220222
},
221223
}
222224
end,
@@ -228,8 +230,7 @@ local abstract = {
228230
and not card.ability.extra.marked
229231
and not card.ability.eternal
230232
and not card.ability.extra.survive --this presvents repitition of shatter chance by shutting it out once it confirms to "survive"
231-
and pseudorandom("cry_abstract_destroy")
232-
< cry_prob(card.ability.cry_prob, card.ability.extra.odds_after_play, card.ability.cry_rigged) / card.ability.extra.odds_after_play
233+
and SMODS.pseudorandom_probability(card, "cry_abstract_destroy", 1, card and card.ability.extra.odds_after_play or self.config.extra.odds_after_play)
233234
then -- the 'card.area' part makes sure the card has a chance to survive if in the play area
234235
card.ability.extra.marked = true
235236
elseif context.cardarea == G.play and not card.ability.extra.marked then
@@ -2538,9 +2539,7 @@ return {
25382539
function Card:calculate_abstract_break()
25392540
if self.config.center_key == "m_cry_abstract" and not self.ability.extra.marked then
25402541
if
2541-
pseudorandom("cry_abstract_destroy2")
2542-
< cry_prob(self.ability.cry_prob, self.ability.extra.odds_after_round, self.ability.cry_rigged)
2543-
/ self.ability.extra.odds_after_round
2542+
SMODS.pseudorandom_probability(card, "cry_abstract_destroy2", 1, card and card.ability.extra.odds_after_round or self.config.extra.odds_after_round)
25442543
then
25452544
self.ability.extra.marked = true
25462545
--KUFMO HAS abstract!!!!111!!!

items/misc_joker.lua

Lines changed: 18 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3833,18 +3833,15 @@ local rnjoker = {
38333833
config = {},
38343834
order = 59,
38353835
loc_vars = function(self, info_queue, card)
3836+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.cond_value or 0)
38363837
local vars = {
38373838
vars = {
38383839
(card.ability.extra and card.ability.extra.value_mod and card.ability.extra.value) or 0,
38393840
(card.ability.extra and card.ability.extra.value and card.ability.extra.value_mod)
38403841
or (card.ability.extra and card.ability.extra.value)
38413842
or 0,
3842-
card.ability.extra and card.ability.extra.cond_value or 0,
3843-
cry_prob(
3844-
card.ability.cry_prob,
3845-
card.ability.extra and card.ability.extra.cond_value or 0,
3846-
card.ability.cry_rigged
3847-
),
3843+
denom,
3844+
num
38483845
},
38493846
}
38503847
if card.ability.extra and card.ability.extra.color then
@@ -4074,14 +4071,7 @@ local rnjoker = {
40744071
end
40754072
elseif j.cond == "odds" then
40764073
if
4077-
pseudorandom("rnj")
4078-
< (
4079-
cry_prob(
4080-
card.ability.cry_prob,
4081-
card.ability.extra.cond_value,
4082-
card.ability.cry_rigged
4083-
) / card.ability.extra.cond_value
4084-
)
4074+
SMODS.pseudorandom_probability(card, "rnj", 1, card and card.ability.extra.cond_value or 0)
40854075
then
40864076
cond_passed = true
40874077
end
@@ -4363,14 +4353,7 @@ local rnjoker = {
43634353
end
43644354
elseif j.cond == "odds" then
43654355
if
4366-
pseudorandom("rnj")
4367-
< (
4368-
cry_prob(
4369-
card.ability.cry_prob,
4370-
card.ability.extra.cond_value,
4371-
card.ability.cry_rigged
4372-
) / card.ability.extra.cond_value
4373-
)
4356+
SMODS.pseudorandom_element(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
43744357
then
43754358
cond_passed = true
43764359
end
@@ -4453,14 +4436,7 @@ local rnjoker = {
44534436
end
44544437
elseif j.cond == "odds" then
44554438
if
4456-
pseudorandom("rnj")
4457-
< (
4458-
cry_prob(
4459-
card.ability.cry_prob,
4460-
card.ability.extra.cond_value,
4461-
card.ability.cry_rigged
4462-
) / card.ability.extra.cond_value
4463-
)
4439+
SMODS.pseudorandom_probability(card, "rnj", 1, card and card.ability.extra.cond_value or 0)
44644440
then
44654441
cond_passed = true
44664442
end
@@ -7631,10 +7607,11 @@ local oldblueprint = {
76317607
},
76327608
}
76337609
end
7610+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.extra.odds or self.config.extra.odds)
76347611
return {
76357612
vars = {
7636-
cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged),
7637-
card.ability.extra.odds,
7613+
num,
7614+
denom
76387615
},
76397616
main_end = main_end,
76407617
}
@@ -7827,24 +7804,22 @@ local busdriver = {
78277804
blueprint_compat = true,
78287805
demicoloncompat = true,
78297806
loc_vars = function(self, info_queue, card)
7830-
local prob = cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged)
7831-
local oddy = math.max(1, card.ability.extra.odds)
7807+
local num, denom = SMODS.get_probability_vars(card, 3, card and card.ability.extra.odds or self.config.extra.odds)
7808+
local num2 = denom - num
78327809
return {
78337810
vars = {
7834-
(oddy - 1 / prob),
7811+
num,
78357812
number_format(card.ability.extra.mult),
7836-
oddy,
7837-
(1 / prob),
7813+
denom,
7814+
num2,
78387815
},
78397816
}
78407817
end,
78417818
calculate = function(self, card, context)
78427819
if context.joker_main and (to_big(card.ability.extra.mult) > to_big(0)) then
78437820
local oddy = math.max(1, card.ability.extra.odds)
78447821
if
7845-
pseudorandom("busdriver")
7846-
< 1
7847-
- (1 / (cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) * oddy))
7822+
SMODS.pseudorandom_element(card, "cry_busdriver", 3, card and card.ability.extra.odds or self.config.extra.odds)
78487823
then
78497824
return {
78507825
message = localize({
@@ -9368,8 +9343,9 @@ local digitalhallucinations = {
93689343
order = 130,
93699344
config = { odds = 2 },
93709345
loc_vars = function(self, info_queue, card)
9346+
local num, denom = SMODS.get_probability_vars(card, 1, card and card.ability.odds or self.config.odds)
93719347
return {
9372-
vars = { cry_prob(card.ability.cry_prob, card.ability.odds, card.ability.cry_rigged), card.ability.odds },
9348+
vars = { num, denom },
93739349
}
93749350
end,
93759351
atlas = "atlasthree",
@@ -9383,8 +9359,7 @@ local digitalhallucinations = {
93839359
if
93849360
context.open_booster
93859361
and (
9386-
pseudorandom("digi")
9387-
< cry_prob(card.ability.cry_prob, card.ability.odds, card.ability.cry_rigged) / card.ability.odds
9362+
SMODS.pseudorandom_element(card, "digi", 1, card and card.ability.odds or self.config.odds)
93889363
)
93899364
then
93909365
local boosty = context.card

0 commit comments

Comments
 (0)