From b12a9fb7fc20efc90e418d6cccdfc609a8abd28b Mon Sep 17 00:00:00 2001 From: Mike Long Date: Mon, 6 Jun 2016 23:01:23 -0400 Subject: [PATCH] Refactor & nerf infernal jaunt. Infernal jaunt now has a warm up time for entering and exiting the jaunt. Plus it looks nicer too. --- code/modules/spells/spell_types/demon.dm | 64 +++++++++++++++--------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/code/modules/spells/spell_types/demon.dm b/code/modules/spells/spell_types/demon.dm index 12671cfffba..ddbd41edaa8 100644 --- a/code/modules/spells/spell_types/demon.dm +++ b/code/modules/spells/spell_types/demon.dm @@ -123,48 +123,66 @@ continuing = 1 break if(continuing) - user.infernalphasein() + addtimer(user,"infernalphasein",150,TRUE) else user << "You can only re-appear near a potential signer." revert_cast() return ..() else - user.infernalphaseout() + user.notransform = 1 + user.fakefire() + addtimer(user, "infernalphaseout",150,TRUE,get_turf(user)) start_recharge() return revert_cast() -/mob/living/proc/infernalphaseout() - var/turf/mobloc = get_turf(src.loc) - src.notransform = 1 - spawn(0) - src.visible_message("[src] disappears in a flashfire!") - playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) - var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc) - src.ExtinguishMob() - if(buckled) - buckled.unbuckle_mob(src,force=1) - if(buckled_mobs.len) - unbuckle_all_mobs(force=1) - if(pulledby) - pulledby.stop_pulling() - if(pulling) - stop_pulling() - src.loc = holder - src.holder = holder - src.notransform = 0 - return 1 +/mob/living/proc/infernalphaseout(var/turf/mobloc) + if(get_turf(src) != mobloc) + src << "You must remain still while exiting." + return + dust_animation() + spawn_dust() + src.visible_message("[src] disappears in a flashfire!") + playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) + var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc) + src.ExtinguishMob() + if(buckled) + buckled.unbuckle_mob(src,force=1) + if(buckled_mobs.len) + unbuckle_all_mobs(force=1) + if(pulledby) + pulledby.stop_pulling() + if(pulling) + stop_pulling() + src.loc = holder + src.holder = holder + src.notransform = 0 + fakefireextinguish() /mob/living/proc/infernalphasein() if(src.notransform) src << "You're too busy to jaunt in." return 0 + fakefire() src.loc = get_turf(src) 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) - return 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) /obj/effect/proc_holder/spell/targeted/sintouch name = "Sin Touch"