diff --git a/code/datums/spells/construct_spells.dm b/code/datums/spells/construct_spells.dm index 54003d8ed0b..e471cf084a8 100644 --- a/code/datums/spells/construct_spells.dm +++ b/code/datums/spells/construct_spells.dm @@ -2,13 +2,15 @@ /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser charge_max = 1800 + action_icon_state = "artificer" + action_background_icon_state = "bg_demon" /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser/cult cult_req = 1 charge_max = 2500 /obj/effect/proc_holder/spell/aoe_turf/conjure/floor - name = "Floor Construction" + name = "Summon Cult Floor" desc = "This spell constructs a cult floor" school = "conjuration" @@ -17,11 +19,12 @@ invocation = "none" invocation_type = "none" range = 0 - summon_type = list(/turf/simulated/floor/plasteel/cult) - centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles + summon_type = list(/turf/simulated/floor/engine/cult) + action_icon_state = "floorconstruct" + action_background_icon_state = "bg_cult" /obj/effect/proc_holder/spell/aoe_turf/conjure/wall - name = "Lesser Construction" + name = "Summon Cult Wall" desc = "This spell constructs a cult wall" school = "conjuration" @@ -30,8 +33,10 @@ invocation = "none" invocation_type = "none" range = 0 + action_icon_state = "lesserconstruct" + action_background_icon_state = "bg_cult" + summon_type = list(/turf/simulated/wall/cult) - centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles /obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced name = "Greater Construction" @@ -43,7 +48,6 @@ invocation = "none" invocation_type = "none" range = 0 - centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles summon_type = list(/turf/simulated/wall/r_wall) @@ -57,7 +61,8 @@ invocation = "none" invocation_type = "none" range = 0 - + action_icon_state = "summonsoulstone" + action_background_icon_state = "bg_demon" summon_type = list(/obj/item/device/soulstone) @@ -76,8 +81,10 @@ invocation = "none" invocation_type = "none" range = 0 - summon_type = list(/obj/effect/forcefield) + summon_type = list(/obj/effect/forcefield/cult) summon_lifespan = 200 + action_icon_state = "cultforcewall" + action_background_icon_state = "bg_demon" /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift @@ -93,6 +100,8 @@ include_user = 1 jaunt_duration = 50 //in deciseconds centcom_cancast = 0 //Stop people from getting to centcom + action_icon_state = "phaseshift" + action_background_icon_state = "bg_demon" /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_disappear(atom/movable/overlay/animation, mob/living/target) animation.icon_state = "phase_shift" @@ -118,6 +127,8 @@ invocation_type = "none" proj_lifespan = 10 max_targets = 6 + action_icon_state = "magicm" + action_background_icon_state = "bg_demon" /obj/effect/proc_holder/spell/targeted/smoke/disable @@ -135,3 +146,5 @@ smoke_spread = 3 smoke_amt = 4 + action_icon_state = "parasmoke" + action_background_icon_state = "bg_cult" diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 886afccc01d..388fe8a0bbf 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -147,7 +147,7 @@ Class Procs: if(use_power && stat == 0) use_power(7500/severity) - new/obj/effect/overlay/temp/emp(src.loc) + PoolOrNew(/obj/effect/overlay/temp/emp, src.loc) ..() /obj/machinery/proc/open_machine() diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index 98177d53658..fb738123e0a 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -11,7 +11,10 @@ /obj/effect/forcefield/CanAtmosPass(turf/T) return !density - +/obj/effect/forcefield/cult + desc = "An unholy shield that blocks all attacks." + name = "glowing wall" + icon_state = "cultshield" ///////////Mimewalls/////////// diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 2c56d1201b5..e27a24e299c 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -20,21 +20,40 @@ spawn(10) qdel(src) /obj/effect/overlay/temp + icon = 'icons/effects/effects.dmi' + icon_state = "nothing" anchored = 1 layer = 4.1 mouse_opacity = 0 var/duration = 10 var/randomdir = 1 +/obj/effect/overlay/temp/Destroy() + ..() + return QDEL_HINT_PUTINPOOL + /obj/effect/overlay/temp/New() if(randomdir) dir = pick(cardinal) + flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation. spawn(duration) qdel(src) + +/obj/effect/overlay/temp/cult + name = "unholy glow" + icon_state = "wallglow" + layer = 2.01 + randomdir = 0 + duration = 10 + +/obj/effect/overlay/temp/cult/floor + icon_state = "floorglow" + duration = 5 + + /obj/effect/overlay/temp/revenant name = "spooky lights" - icon = 'icons/effects/effects.dmi' icon_state = "purplesparkles" /obj/effect/overlay/temp/revenant/cracks @@ -42,15 +61,15 @@ icon_state = "purplecrack" duration = 6 + /obj/effect/overlay/temp/emp name = "emp sparks" - icon = 'icons/effects/effects.dmi' icon_state = "empdisable" /obj/effect/overlay/temp/emp/pulse name = "emp pulse" icon_state = "emp pulse" - duration = 20 + duration = 8 randomdir = 0 diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 2e057a088e9..04df8194e9d 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -9,7 +9,7 @@ log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") if(heavy_range > 1) - new/obj/effect/overlay/temp/emp/pulse(epicenter) + PoolOrNew(/obj/effect/overlay/temp/emp/pulse, epicenter) if(heavy_range > light_range) light_range = heavy_range diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index fd7ee8d355b..c39d15e7249 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -169,7 +169,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," /turf/simulated/floor/narsie_act() if(prob(20)) - ChangeTurf(/turf/simulated/floor/plasteel/cult) + ChangeTurf(/turf/simulated/floor/engine/cult) /turf/simulated/floor/can_have_cabling() return !burnt & !broken & !lava diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 9ed49d5e41a..215fb69564a 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -124,6 +124,10 @@ name = "engraved floor" icon_state = "cult" +/turf/simulated/floor/engine/cult/New() + PoolOrNew(/obj/effect/overlay/temp/cult/floor, src) + ..() + /turf/simulated/floor/engine/cult/narsie_act() return diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm index 85e46a81449..e1e0da396f3 100644 --- a/code/game/turfs/simulated/walls_misc.dm +++ b/code/game/turfs/simulated/walls_misc.dm @@ -7,6 +7,10 @@ builtin_sheet = null canSmoothWith = null +/turf/simulated/wall/cult/New() + PoolOrNew(/obj/effect/overlay/temp/cult, src) + ..() + /turf/simulated/wall/cult/break_wall() new /obj/effect/decal/cleanable/blood(src) return (new /obj/structure/cultgirder(src)) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 00068884b21..ab354044d90 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -27,7 +27,7 @@ /mob/living/simple_animal/construct/New() ..() for(var/spell in construct_spells) - mob_spell_list += new spell(src) + AddSpell(new spell(null)) /mob/living/simple_animal/construct/death() ..(1) @@ -165,10 +165,10 @@ speed = 0 environment_smash = 2 attack_sound = 'sound/weapons/punch2.ogg' - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, - /obj/effect/proc_holder/spell/aoe_turf/conjure/wall, + construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall, /obj/effect/proc_holder/spell/aoe_turf/conjure/floor, /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone, + /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ use magic missile, repair allied constructs (by clicking on them), \ diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm index d0d58fd61a9..2fb6d94e61e 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm @@ -105,7 +105,7 @@ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(4, 0, L) s.start() - new/obj/effect/overlay/temp/revenant(L.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, L.loc) sleep(20) if(!L.on) //wait, wait, don't shock me return @@ -137,19 +137,19 @@ spawn(0) if(T.flags & NOJAUNT) T.flags -= NOJAUNT - new/obj/effect/overlay/temp/revenant(T) - if(istype(T, /turf/simulated/floor) && !istype(T, /turf/simulated/floor/plating) && prob(15)) + PoolOrNew(/obj/effect/overlay/temp/revenant, T) + if(!istype(T, /turf/simulated/floor/plating) && !istype(T, /turf/simulated/floor/engine/cult) && istype(T, /turf/simulated/floor) && prob(15)) var/turf/simulated/floor/floor = T if(floor.intact) floor.builtin_tile.loc = floor floor.broken = 0 floor.burnt = 0 floor.make_plating(1) - if(!istype(T, /turf/simulated/wall/shuttle) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15)) - new/obj/effect/overlay/temp/revenant(T) + if(!istype(T, /turf/simulated/wall/shuttle) && !istype(T, /turf/simulated/wall/cult) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15)) + PoolOrNew(/obj/effect/overlay/temp/revenant, T) T.ChangeTurf(/turf/simulated/wall/rust) if(!istype(T, /turf/simulated/wall/r_wall/rust) && istype(T, /turf/simulated/wall/r_wall) && prob(15)) - new/obj/effect/overlay/temp/revenant(T) + PoolOrNew(/obj/effect/overlay/temp/revenant, T) T.ChangeTurf(/turf/simulated/wall/r_wall/rust) for(var/obj/structure/closet/closet in T.contents) closet.open() @@ -161,7 +161,7 @@ for(var/obj/structure/window/window in T.contents) window.hit(rand(50,90)) if(window && window.fulltile) - new/obj/effect/overlay/temp/revenant/cracks(window.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant/cracks, window.loc) for(var/obj/machinery/light/light in T.contents) light.flicker(20) //spooky @@ -182,7 +182,7 @@ spawn(0) for(var/obj/machinery/bot/bot in T.contents) if(!bot.emagged) - new/obj/effect/overlay/temp/revenant(bot.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, bot.loc) bot.locked = 0 bot.open = 1 bot.Emag(null) @@ -190,21 +190,21 @@ if(human == user) continue human << "You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")]." - new/obj/effect/overlay/temp/revenant(human.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, human.loc) human.emp_act(1) for(var/obj/thing in T.contents) if(istype(thing, /obj/machinery/dominator) || istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes) || istype(thing, /obj/machinery/bot)) //Doesn't work on dominators, SMES and APCs, to prevent kekkery continue if(prob(20)) if(prob(50)) - new/obj/effect/overlay/temp/revenant(thing.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, thing.loc) thing.emag_act(null) else if(!istype(thing, /obj/machinery/clonepod)) //I hate everything but mostly the fact there's no better way to do this without just not affecting it at all thing.emp_act(1) for(var/mob/living/silicon/robot/S in T.contents) //Only works on cyborgs, not AI playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) - new/obj/effect/overlay/temp/revenant(S.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, S.loc) S.spark_system.start() S.emp_act(1) @@ -225,7 +225,7 @@ for(var/mob/living/mob in T.contents) if(mob == user) continue - new/obj/effect/overlay/temp/revenant(mob.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, mob.loc) if(iscarbon(mob)) if(ishuman(mob)) var/mob/living/carbon/human/H = mob @@ -253,18 +253,18 @@ mob.adjustToxLoss(5) for(var/obj/effect/spacevine/vine in T.contents) //Fucking with botanists, the ability. vine.color = "#823abb" - new/obj/effect/overlay/temp/revenant(vine.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, vine.loc) spawn(20) if(vine) qdel(vine) for(var/obj/effect/glowshroom/shroom in T.contents) shroom.color = "#823abb" - new/obj/effect/overlay/temp/revenant(shroom.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, shroom.loc) spawn(20) if(shroom) qdel(shroom) for(var/obj/machinery/hydroponics/tray in T.contents) - new/obj/effect/overlay/temp/revenant(tray.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, tray.loc) tray.pestlevel = rand(8, 10) tray.weedlevel = rand(8, 10) tray.toxic = rand(45, 55) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_blight.dm b/code/modules/mob/living/simple_animal/revenant/revenant_blight.dm index a74e9b714f2..a0b8f813c4f 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant_blight.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant_blight.dm @@ -23,11 +23,11 @@ affected_mob << "You suddenly feel [pick("sick and tired", "disoriented", "tired and confused", "nauseated", "faint", "dizzy")]..." affected_mob.confused += 10 affected_mob.adjustStaminaLoss(10) - new/obj/effect/overlay/temp/revenant(affected_mob.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc) if(stagedamage < stage) stagedamage++ affected_mob.adjustToxLoss(stage*3) //should, normally, do about 45 toxin damage. - new/obj/effect/overlay/temp/revenant(affected_mob.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc) ..() //So we don't increase a stage before applying the stage damage. switch(stage) if(2) @@ -44,7 +44,7 @@ if(5) affected_mob << "You feel like [pick("nothing's worth it anymore", "nobody ever needed your help", "nothing you did mattered", "everything you tried to do was worthless")]." affected_mob.adjustStaminaLoss(45) - new/obj/effect/overlay/temp/revenant(affected_mob.loc) + PoolOrNew(/obj/effect/overlay/temp/revenant, affected_mob.loc) if(affected_mob.dna && affected_mob.dna.species) affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#1d2953") affected_mob.dna.species.handle_hair(affected_mob,"#1d2953") diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 6ae43874eec..78564886196 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -24,7 +24,7 @@ /obj/singularity/narsie/large/New() ..() - world << "NAR-SIE HAS RISEN" + world << "NAR-SIE HAS RISEN" world << pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg') var/area/A = get_area(src) @@ -75,7 +75,7 @@ for(var/mob/living/carbon/M in oviewers(8, src)) if(M.stat == CONSCIOUS) if(!iscultist(M)) - M << "You feel conscious thought crumble away in an instant as you gaze upon [src.name]..." + M << "You feel conscious thought crumble away in an instant as you gaze upon [src.name]..." M.apply_effect(3, STUN) @@ -122,12 +122,14 @@ /obj/singularity/narsie/proc/acquire(mob/food) - target << "NAR-SIE HAS LOST INTEREST IN YOU" + if(food == target) + return + target << "NAR-SIE HAS LOST INTEREST IN YOU." target = food - if(ishuman(target)) - target << "NAR-SIE HUNGERS FOR YOUR SOUL" + if(isliving(target)) + target << "NAR-SIE HUNGERS FOR YOUR SOUL." else - target << "NAR-SIE HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL" + target << "NAR-SIE HAS CHOSEN YOU TO LEAD HER TO HER NEXT MEAL." //Wizard narsie /obj/singularity/narsie/wizard diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index e6fe509cbed..6706d7f6781 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 0e0d8d125e5..b95549b5cc9 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index fc01fde3aa2..fceaea75516 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -65,7 +65,9 @@ h1.alert, h2.alert {color: #000000;} .suicide {color: #ff5050; font-style: italic;} .green {color: #03ff39;} .shadowling {color: #3b2769;} +.cultsmall {color: #960000;} .cult {color: #960000; font-weight: bold; font-size: 3;} +.narsie {color: #960000; font-weight: bold; font-size: 15;} .purple {color: #5e2d79;} .revennotice {color: #1d2953;}