From 810f3d90527dbc57c82e8751fa6e016d7ae5573c Mon Sep 17 00:00:00 2001 From: lordpidey Date: Thu, 14 Jul 2016 03:41:01 -0400 Subject: [PATCH] Small devil fixes (#19302) * Removes errant cast from devilinfo.add_soul() * Clarifies a banishment ritual in the Codex Gigas. Sprinkling holy water isn't enough, it needs to be in the devil's bloodstream. * Infernal jaunt now correctly extinguishes the user. Revival contracts no longer actually set the target on fire, but rather uses a fake fire. * Pitchforks don't burn devils or soulless on use/pickup anymore. Adds cast charge time to infernal jaunt, so that it's impossible to jaunt while already jaunting. Adds feedback to using infernal jaunt to jaunt in. --- code/game/gamemodes/devil/devilinfo.dm | 5 ++--- code/game/objects/items/weapons/twohanded.dm | 4 ++-- code/modules/mob/living/carbon/carbon.dm | 7 +++++++ code/modules/mob/living/living.dm | 6 ++++++ code/modules/paperwork/contract.dm | 6 ++---- code/modules/spells/spell_types/devil.dm | 18 +++--------------- 6 files changed, 22 insertions(+), 24 deletions(-) diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/game/gamemodes/devil/devilinfo.dm index b512422ef5c..75d5c0ca724 100644 --- a/code/game/gamemodes/devil/devilinfo.dm +++ b/code/game/gamemodes/devil/devilinfo.dm @@ -35,7 +35,7 @@ var/global/list/lawlorify = list ( BAN_STRIKEUNCONCIOUS = "This devil only shows interest in those who are awake.", BAN_HURTLIZARD = "This devil will not strike a lizardman first.", BAN_HURTANIMAL = "This devil avoids hurting animals.", - BANISH_WATER = "To banish the devil, you must sprinkle holy water upon it's body.", + BANISH_WATER = "To banish the devil, you must infuse it's body with holy water.", BANISH_COFFIN = "This devil will return to life if it's remains are not placed within a coffin.", BANISH_FORMALDYHIDE = "To banish the devil, you must inject it's lifeless body with embalming fluid.", BANISH_RUNES = "This devil will resurrect after death, unless it's remains are within a rune.", @@ -138,11 +138,10 @@ var/global/list/lawlorify = list ( return pick(BANISH_WATER, BANISH_COFFIN, BANISH_FORMALDYHIDE, BANISH_RUNES, BANISH_CANDLES, BANISH_DESTRUCTION, BANISH_FUNERAL_GARB) /datum/devilinfo/proc/add_soul(datum/mind/soul) - var/mob/living/carbon/human/H = owner.current if(soulsOwned.Find(soul)) return soulsOwned += soul - H.nutrition = NUTRITION_LEVEL_FULL + owner.current.nutrition = NUTRITION_LEVEL_FULL owner.current << "You feel satiated as you received a new soul." update_hud() switch(SOULVALUE) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index d1be98828ea..f3fe39a88cb 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -510,7 +510,7 @@ /obj/item/weapon/twohanded/pitchfork/demonic/pickup(mob/user) if(istype(user, /mob/living)) var/mob/living/U = user - if(U.mind && (!U.mind.devilinfo || (U.mind.soulOwner == U.mind))) //Burn hands unless they are a devil or have sold their soul + if(U.mind && !U.mind.devilinfo && (U.mind.soulOwner == U.mind)) //Burn hands unless they are a devil or have sold their soul U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ "\"As you pick up the [src] your arms ignite, reminding you of all your past sins.\"") if(ishuman(U)) @@ -520,7 +520,7 @@ U.adjustFireLoss(rand(force/2,force)) /obj/item/weapon/twohanded/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && (!user.mind.devilinfo || (user.mind.soulOwner == user.mind))) + if(user.mind && !user.mind.devilinfo && (user.mind.soulOwner != user.mind)) user << "The [src] burns in your hands." user.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm")) ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 8d6995a0aa1..961977cc4f2 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -790,3 +790,10 @@ blood_volume -= amount return ..() +/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") + overlays_standing[FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"= fire_icon, "layer"=-FIRE_LAYER) + apply_overlay(FIRE_LAYER) + +/mob/living/carbon/fakefireextinguish() + remove_overlay(FIRE_LAYER) + diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 313781735f7..51296df2196 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1044,3 +1044,9 @@ Sorry Giacom. Please don't be mad :( G.Recall() G << "Your summoner has changed \ form!" + +/mob/living/proc/fakefireextinguish() + return + +/mob/living/proc/fakefire() + return \ No newline at end of file diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index df21427279d..9974737affd 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -187,11 +187,9 @@ add_logs(user, H, "infernally revived via contract") user.visible_message("With a sudden blaze, [H] stands back up.") H.adjust_fire_stacks(20) - H.IgniteMob() + H.fakefire() FulfillContract(H) - sleep(5) - H.ExtinguishMob() - H.adjustFireLoss(0) + addtimer(H, "fakefireextinguish",5,TRUE) else ..() diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 90de8e124df..87e1d2fcd24 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -93,7 +93,7 @@ /obj/effect/proc_holder/spell/targeted/infernal_jaunt name = "Infernal Jaunt" desc = "Use hellfire to phase out of existence." - charge_max = 10 + charge_max = 200 clothes_req = 0 selection_type = "range" range = -1 @@ -121,6 +121,7 @@ else user.notransform = 1 user.fakefire() + src << "You begin to phase back into sinful flames." addtimer(user, "infernalphaseout",150,TRUE,get_turf(user)) start_recharge() return @@ -159,20 +160,7 @@ src.client.eye = src src.visible_message("[src] appears in a firey blaze!") playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) - addtimer(src, "fakefireextinguish" ,15,TRUE,get_turf(src)) - -/mob/living/proc/fakefire() - return - -/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") - overlays_standing[FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"= fire_icon, "layer"=-FIRE_LAYER) - apply_overlay(FIRE_LAYER) - -/mob/living/proc/fakefireextinguish() - return - -/mob/living/carbon/fakefireextinguish() - remove_overlay(FIRE_LAYER) + addtimer(src, "fakefireextinguish", 15,TRUE) /obj/effect/proc_holder/spell/targeted/sintouch name = "Sin Touch"