From 4dafc3196ec7492a53610cde5bbcf1079ae295a2 Mon Sep 17 00:00:00 2001 From: Razgriz Date: Tue, 9 Mar 2021 00:25:34 -0700 Subject: [PATCH] Add new ability, remove shifting text --- .../vore/shadekin/rakshasa_abilities.dm | 114 +++++++++++++++++- 1 file changed, 111 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/rakshasa_abilities.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/rakshasa_abilities.dm index fb93f1609c..188dd6da72 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/rakshasa_abilities.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/rakshasa_abilities.dm @@ -90,7 +90,7 @@ return new /obj/effect/decal/cleanable/blood/oil(loc, src) playsound(src, 'sound/rakshasa/Corrosion1.ogg', 100, 1) - my_kin.phase_shift() + my_kin.rakshasa_shift() if(my_kin.ability_flags & AB_PHASE_SHIFTED) cost = 0 //Shifting back is free (but harmful in light) new /obj/effect/decal/cleanable/blood/oil(my_kin.loc) @@ -118,7 +118,7 @@ return new /obj/effect/decal/cleanable/blood/oil(loc, src) playsound(src, 'sound/rakshasa/Corrosion1.ogg', 100, 1) - my_kin.phase_shift() + my_kin.rakshasa_shift() if(my_kin.ability_flags & AB_PHASE_SHIFTED) cost = 0 //Shifting back is free (but harmful in light) new /obj/effect/decal/cleanable/blood/oil(my_kin.loc) @@ -268,8 +268,106 @@ playsound(my_kin.loc, sound, 100, 1) new /obj/structure/gootrap (my_kin.loc) +///////////////////////////////////////////////////////////////// +/obj/effect/rakshasa_ability/flicker + ability_name = "Flicker Lights" + desc = "Flicker the lights." + icon_state = "" + cost = 0 + shift_mode = SHIFTED_OR_NOT + ab_sound = 'sound/effects/stealthoff.ogg' +obj/effect/rakshasa_ability/flicker/do_ability() + if(!..()) + return + my_kin.rakshasa_flicker() + + +//////////////////////////////////////////////////////////////// +//PROCS +//PHASE SHIFTING +//////////////////////////////////////////////////////////////// +//Rakshasa's phase shifts are now more stealthy. No announcement on them phasing in or out. Also, an extra phaseshift with no lights flickering. For flavor. There's probably a better way of doing this, butt fuck it. +/mob/living/simple_mob/shadekin/proc/rakshasa_shift() + var/turf/T = get_turf(src) + if(!T.CanPass(src,T) || loc != T) + to_chat(src,"You can't use that here!") + return FALSE + + forceMove(T) + var/original_canmove = canmove + SetStunned(0) + SetWeakened(0) + if(buckled) + buckled.unbuckle_mob() + if(pulledby) + pulledby.stop_pulling() + stop_pulling() + canmove = FALSE + + //Shifting in + if(ability_flags & AB_PHASE_SHIFTED) + ability_flags &= ~AB_PHASE_SHIFTED + name = real_name + for(var/belly in vore_organs) + var/obj/belly/B = belly + B.escapable = initial(B.escapable) + + overlays.Cut() + alpha = initial(alpha) + invisibility = initial(invisibility) + see_invisible = initial(see_invisible) + incorporeal_move = initial(incorporeal_move) + density = initial(density) + force_max_speed = initial(force_max_speed) + + //Cosmetics mostly + flick("tp_in",src) + sleep(5) //The duration of the TP animation + canmove = original_canmove + + //Potential phase-in vore + if(can_be_drop_pred) //Toggleable in vore panel + var/list/potentials = living_mobs(0) + if(potentials.len) + var/mob/living/target = pick(potentials) + if(istype(target) && target.devourable && target.can_be_drop_prey && vore_selected) + target.forceMove(vore_selected) + to_chat(target,"\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") + + // Do this after the potential vore, so we get the belly + update_icon() + + //Affect nearby lights + for(var/obj/machinery/light/L in machines) + if(L.z != z || get_dist(src,L) > 10) + continue + L.flicker(10) + +//Shifting out + else + ability_flags |= AB_PHASE_SHIFTED + real_name = name + name = "Something" + + for(var/belly in vore_organs) + var/obj/belly/B = belly + B.escapable = FALSE + + overlays.Cut() + flick("tp_out",src) + sleep(5) + invisibility = INVISIBILITY_LEVEL_TWO + see_invisible = INVISIBILITY_LEVEL_TWO + update_icon() + alpha = 127 + + canmove = original_canmove + incorporeal_move = TRUE + density = FALSE + force_max_speed = TRUE + + //////////////////////////////////////////////////////////////// -//Extra phaseshift with no lights flickering. For flavor. Basically just deleted the part that flickers the lights. /mob/living/simple_mob/shadekin/proc/stealth_shift() var/turf/T = get_turf(src) if(!T.CanPass(src,T) || loc != T) @@ -342,3 +440,13 @@ incorporeal_move = TRUE density = FALSE force_max_speed = TRUE + + +//LIGHT FLICKERING +//////////////////////////////////////////////////////////////// +//A flicker proc. Because apparently putting this straight into the ability button doesn't work. +/mob/living/simple_mob/shadekin/proc/rakshasa_flicker() + for(var/obj/machinery/light/L in machines) + if(L.z != z || get_dist(src,L) > 10) + continue + L.flicker(10) \ No newline at end of file