diff --git a/code/datums/diseases/ectoplasmic.dm b/code/datums/diseases/ectoplasmic.dm index 7f9645f7ab9..06b17032931 100644 --- a/code/datums/diseases/ectoplasmic.dm +++ b/code/datums/diseases/ectoplasmic.dm @@ -14,9 +14,10 @@ /datum/disease/ectoplasmic/stage_act() if(!..()) return FALSE + var/create_effect = FALSE var/mob/living/carbon/human/human = affected_mob - var/turf/turf = get_turf(human) + switch(stage) if(3) if(prob(10)) @@ -45,15 +46,15 @@ to_chat(human, span_warning("You suddenly feel [pick("sick and tired", "nauseated", "dizzy", "stabbing pain in your head")].")) create_effect = TRUE if(5) - if(prob(70)) + if(prob(SYMPTOM_ACTIVATION_PROB * 10)) + human.influenceSin() + to_chat(human, span_revenbignotice("You suddenly feel your soul become corrupted.")) + else human.apply_damage(80, STAMINA) to_chat(human, "You feel very tired, but disease left you.") - create_effect = TRUE - cure() - if(prob(30)) - if(human.influenceSin()) - create_effect = TRUE - to_chat(human, span_revenbignotice("You suddenly feel your soul become corrupted.")) - cure() - if(create_effect && turf) - new /obj/effect/temp_visual/revenant(turf) + + create_effect = TRUE + cure() + + if(create_effect && isturf(human.loc)) + new /obj/effect/temp_visual/revenant(human.loc) diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 87e430f423e..4685377069f 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -516,7 +516,6 @@ reveal = 7 SECONDS aoe_range = 4 - /obj/effect/proc_holder/spell/aoe/revenant/blight/create_new_targeting() var/datum/spell_targeting/aoe/target = new() target.range = aoe_range @@ -530,6 +529,9 @@ if(target.mind in SSticker.mode.sintouched) return FALSE + if(locate(/datum/disease/ectoplasmic) in target.diseases) + return FALSE + return TRUE /obj/effect/proc_holder/spell/aoe/revenant/blight/cast(list/targets, mob/living/simple_animal/revenant/user = usr) diff --git a/code/game/gamemodes/miniantags/sintouched/objectives.dm b/code/game/gamemodes/miniantags/sintouched/objectives.dm index 5e6daa1ae22..be5ebe4b8cd 100644 --- a/code/game/gamemodes/miniantags/sintouched/objectives.dm +++ b/code/game/gamemodes/miniantags/sintouched/objectives.dm @@ -17,9 +17,8 @@ /datum/objective/sintouched/proc/on_apply() return -/datum/objective/sintouched/New(mob/living/carbon/human/human) - ..() - user = human // Currently not to mind +/datum/objective/sintouched/proc/init_sin(mob/living/carbon/human/human) + user = human on_apply() /datum/objective/sintouched/Destroy(force) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3752a4114f5..49061aaf1b5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1770,33 +1770,39 @@ Eyes need to have significantly high darksight to shine unless the mob has the X /mob/living/carbon/human/proc/influenceSin() if(!mind) return + var/datum/objective/sintouched/sin_objective + switch(rand(1,7))//traditional seven deadly sins... except lust. if(1) // acedia add_game_logs("[src] was influenced by the sin of Acedia.", src) - sin_objective = new /datum/objective/sintouched/acedia(src) + sin_objective = new /datum/objective/sintouched/acedia if(2) // Gluttony add_game_logs("[src] was influenced by the sin of gluttony.", src) - sin_objective = new /datum/objective/sintouched/gluttony(src) + sin_objective = new /datum/objective/sintouched/gluttony if(3) // Greed add_game_logs("[src] was influenced by the sin of greed.", src) - sin_objective = new /datum/objective/sintouched/greed(src) + sin_objective = new /datum/objective/sintouched/greed if(4) // sloth add_game_logs("[src] was influenced by the sin of sloth.", src) - sin_objective = new /datum/objective/sintouched/sloth(src) + sin_objective = new /datum/objective/sintouched/sloth if(5) // Wrath add_game_logs("[src] was influenced by the sin of wrath.", src) - sin_objective = new /datum/objective/sintouched/wrath(src) + sin_objective = new /datum/objective/sintouched/wrath if(6) // Envy add_game_logs("[src] was influenced by the sin of envy.", src) - sin_objective = new /datum/objective/sintouched/envy(src) + sin_objective = new /datum/objective/sintouched/envy if(7) // Pride add_game_logs("[src] was influenced by the sin of pride.", src) - sin_objective = new /datum/objective/sintouched/pride(src) - SSticker.mode.sintouched += mind - mind.objectives += sin_objective + sin_objective = new /datum/objective/sintouched/pride + + sin_objective.init_sin(src) + LAZYADD(SSticker.mode.sintouched, mind) + LAZYADD(mind.objectives, sin_objective) + var/obj_count = 1 - to_chat(src, " Your current objectives:") + to_chat(src, span_notice("Your current objectives:")) + for(var/datum/objective/objective in mind.objectives) to_chat(src, "Objective #[obj_count]: [objective.explanation_text]") obj_count++