diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index a7b87bb5f58..70d24233e43 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -94,9 +94,8 @@ /datum/disease/transformation/jungle_fever/do_disease_transformation(var/mob/living/carbon/affected_mob) if(!ismonkey(affected_mob)) - if(ticker && istype(ticker.mode, /datum/game_mode/monkey)) - ticker.mode:ape_infectees |= affected_mob.mind affected_mob.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) + ticker.mode.add_monkey(affected_mob.mind) /datum/disease/transformation/jungle_fever/stage_act() ..() @@ -113,8 +112,7 @@ affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh.")) /datum/disease/transformation/jungle_fever/cure() - if(ticker && istype(ticker.mode, /datum/game_mode/monkey)) - ticker.mode:ape_infectees.Remove(affected_mob.mind) + ticker.mode.remove_monkey(affected_mob.mind) ..() diff --git a/code/game/gamemodes/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm index 43502623a87..cc4cd8722ab 100644 --- a/code/game/gamemodes/monkey/monkey.dm +++ b/code/game/gamemodes/monkey/monkey.dm @@ -1,3 +1,6 @@ +/datum/game_mode + var/list/ape_infectees = list() + /datum/game_mode/monkey name = "monkey" config_tag = "monkey" @@ -15,8 +18,6 @@ var/carriers_to_make = 1 var/list/carriers = list() - var/list/ape_infectees = list() - var/monkeys_to_win = 0 var/escaped_monkeys = 0 @@ -82,6 +83,14 @@ else return 1 +/datum/game_mode/proc/add_monkey(datum/mind/monkey_mind) + ape_infectees |= monkey_mind + monkey_mind.special_role = "Infected Monkey" + +/datum/game_mode/proc/remove_monkey(datum/mind/monkey_mind) + ape_infectees.Remove(monkey_mind) + monkey_mind.special_role = null + /datum/game_mode/monkey/declare_completion() if(!check_monkey_victory())