FNSJ.simulate_mp_defensive_joker = function(joker_obj, context)
	if context.cardarea == G.jokers and context.global then FN.SIM.add_chips(joker_obj.ability.t_chips) end
end

FNSJ.simulate_mp_taxes = function(joker_obj, context)
	if context.cardarea == G.jokers and context.global then FN.SIM.add_mult(joker_obj.ability.extra.mult) end
end

FNSJ.simulate_mp_pacifist = function(joker_obj, context)
	if context.cardarea == G.jokers and context.global and not MP.is_pvp_boss() then
		FN.SIM.x_mult(joker_obj.ability.extra.x_mult)
	end
end

FNSJ.simulate_mp_conjoined_joker = function(joker_obj, context)
	if context.cardarea == G.jokers and context.global and MP.is_pvp_boss() then
		FN.SIM.x_mult(joker_obj.ability.extra.x_mult)
	end
end

FNSJ.simulate_mp_hanging_chad = function(joker_obj, context)
	if context.cardarea == G.play and context.repetition then
		if context.other_card == context.scoring_hand[1] and not context.other_card.debuff then
			FN.SIM.add_reps(joker_obj.ability.extra)
		end
		if context.other_card == context.scoring_hand[2] and not context.other_card.debuff then
			FN.SIM.add_reps(joker_obj.ability.extra)
		end
	end
end

FNSJ.simulate_mp_lets_go_gambling = function(joker_obj, context)
	if context.cardarea == G.jokers and context.global then
		local rand = pseudorandom("gambling") -- Must reuse same pseudorandom value:
		local exact_xmult, min_xmult, max_xmult =
			FN.SIM.get_probabilistic_extremes(rand, joker_obj.ability.extra.odds, joker_obj.ability.extra.xmult, 1)
		local exact_money, min_money, max_money =
			FN.SIM.get_probabilistic_extremes(rand, joker_obj.ability.extra.odds, joker_obj.ability.extra.dollars, 0)

		FN.SIM.add_dollars(exact_money, min_money, max_money)
		FN.SIM.x_mult(exact_xmult, min_xmult, max_xmult)
	end
end

FNSJ.simulate_mp_bloodstone = function(joker_obj, context)
	if context.cardarea == G.play and context.individual then
		if FN.SIM.is_suit(context.other_card, "Hearts") and not context.other_card.debuff then
			local exact_xmult, min_xmult, max_xmult = FN.SIM.get_probabilistic_extremes(
				pseudorandom("nopeagain"),
				joker_obj.ability.extra.odds,
				joker_obj.ability.extra.Xmult,
				1
			)
			FN.SIM.x_mult(exact_xmult, min_xmult, max_xmult)
		end
	end
end
