From 2762e3b530d4cca40a583c2926bd1b617ce90b8b Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Fri, 24 Nov 2017 05:45:47 -0500 Subject: [PATCH 1/3] Fixes Lord Singuloth hungering for more than he should --- code/datums/beam.dm | 5 + .../clock_effects/city_of_cogs_rift.dm | 7 + .../clock_cult/clock_effects/clock_overlay.dm | 5 + .../clock_effects/general_markers.dm | 6 + .../clock_effects/servant_blocker.dm | 6 + .../clock_effects/spatial_gateway.dm | 8 + .../clock_cult/clock_items/judicial_visor.dm | 6 + code/game/gamemodes/cult/cult_structures.dm | 6 + code/game/gamemodes/wizard/artefact.dm | 6 + code/game/objects/effects/bump_teleporter.dm | 22 ++ code/game/objects/effects/countdown.dm | 6 + code/game/objects/effects/effects.dm | 6 + code/game/objects/effects/forcefields.dm | 3 + code/game/objects/effects/misc.dm | 6 + code/game/objects/effects/portals.dm | 6 + code/game/objects/effects/step_triggers.dm | 196 ++++++++++++++++++ code/game/objects/items/chrono_eraser.dm | 3 + code/modules/admin/sound_emitter.dm | 3 + .../atmospherics/environmental/LINDA_fire.dm | 3 + .../modules/clothing/spacesuits/chronosuit.dm | 6 + code/modules/events/immovable_rod.dm | 6 + code/modules/flufftext/Hallucination.dm | 6 + code/modules/mining/fulton.dm | 6 + .../mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mining/mine_items.dm | 6 + .../simple_animal/guardian/types/ranged.dm | 6 + .../particle_accelerator/particle.dm | 3 + code/modules/projectiles/guns/beam_rifle.dm | 6 + code/modules/projectiles/projectile/energy.dm | 6 + code/modules/spells/spell.dm | 6 + .../spell_types/spacetime_distortion.dm | 6 + 31 files changed, 373 insertions(+), 1 deletion(-) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 3276a5f5b9..252a305af2 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -149,6 +149,11 @@ owner = null return ..() +/obj/effect/ebeam/singularity_pull() + return +/obj/effect/ebeam/singularity_act() + return + /atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time = 3) var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time) INVOKE_ASYNC(newbeam, /datum/beam/.proc/Start) diff --git a/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm b/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm index e41acb421a..ab47f1af55 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm @@ -10,6 +10,13 @@ light_power = 3 light_color = "#6A4D2F" + +/obj/effect/clockwork/city_of_cogs_rift/singularity_act() + return + +/obj/effect/clockwork/city_of_cogs_rift/singularity_pull() + return + /obj/effect/clockwork/city_of_cogs_rift/Initialize() . = ..() visible_message("The air above [loc] shimmers and pops as a [name] forms there!") diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm b/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm index e8cba1a39d..f3de8d04a8 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm @@ -10,6 +10,11 @@ /obj/effect/clockwork/overlay/ex_act() return FALSE +/obj/effect/clockwork/overlay/singularity_act() + return +/obj/effect/clockwork/overlay/singularity_pull() + return + /obj/effect/clockwork/overlay/singularity_pull(S, current_size) return diff --git a/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm b/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm index a3465fac05..6e6704a68c 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm @@ -11,6 +11,12 @@ animate(src, alpha = 0, time = 10) QDEL_IN(src, 10) +/obj/effect/clockwork/general_marker/singularity_act() + return + +/obj/effect/clockwork/general_marker/singularity_pull() + return + /obj/effect/clockwork/general_marker/inathneq name = "Inath-neq, the Resonant Cogwheel" desc = "A humanoid form blazing with blue fire. It radiates an aura of kindness and caring." diff --git a/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm b/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm index 988c00b2f5..194747cefc 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm @@ -18,3 +18,9 @@ to_chat(L, "The space beyond here can't be accessed by you or other servants.") return return TRUE + +/obj/effect/clockwork/servant_blocker/singularity_act() + return + +/obj/effect/clockwork/servant_blocker/singularity_pull() + return diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm index cbfe5d043c..50076e0919 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm @@ -109,6 +109,14 @@ return TRUE return FALSE + +/obj/effect/clockwork/spatial_gateway/singularity_act() + return + +/obj/effect/clockwork/spatial_gateway/singularity_pull() + return + + /obj/effect/clockwork/spatial_gateway/CollidedWith(atom/movable/AM) ..() if(!QDELETED(AM)) diff --git a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm b/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm index 51ffdd9e10..4f6485310b 100644 --- a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm +++ b/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm @@ -162,6 +162,12 @@ user = caster INVOKE_ASYNC(src, .proc/judicialblast) +/obj/effect/clockwork/judicial_marker/singularity_act() + return + +/obj/effect/clockwork/judicial_marker/singularity_pull() + return + /obj/effect/clockwork/judicial_marker/proc/judicialblast() playsound(src, 'sound/magic/magic_missile.ogg', 50, 1, 1, 1) flick("judicial_marker", src) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 2dcaf23bc6..440dfaede6 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -240,3 +240,9 @@ icon_state = "hole" density = TRUE anchored = TRUE + +/obj/effect/gateway/singularity_act() + return + +/obj/effect/gateway/singularity_pull() + return diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 3007ec51ba..cd50f52d5f 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -66,6 +66,12 @@ else return ..() +/obj/effect/rend/singularity_pull() + return + +/obj/effect/rend/singularity_pull() + return + /obj/item/veilrender/vealrender name = "veal render" desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index 5ba643e943..5e17ee9e89 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -7,6 +7,7 @@ invisibility = INVISIBILITY_ABSTRACT //nope, can't see this anchored = TRUE density = TRUE +<<<<<<< HEAD opacity = 0 var/static/list/AllTeleporters @@ -19,6 +20,27 @@ LAZYREMOVE(AllTeleporters, src) return ..() +======= + opacity = 0 + + var/static/list/AllTeleporters + +/obj/effect/bump_teleporter/New() + ..() + LAZYADD(AllTeleporters, src) + +/obj/effect/bump_teleporter/Destroy() + LAZYREMOVE(AllTeleporters, src) + return ..() + + +/obj/effect/bump_teleporter/singularity_act() + return + +/obj/effect/bump_teleporter/singularity_pull() + return + +>>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) /obj/effect/bump_teleporter/CollidedWith(atom/movable/AM) if(!ismob(AM)) return diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index f4b67b7df2..8448e2a7e7 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -154,3 +154,9 @@ else var/time_left = max(0, (A.death_time - world.time) / 10) return round(time_left) + +/obj/effect/countdown/singularity_pull() + return + +/obj/effect/countdown/singularity_act() + return diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index d5f8e28d2a..2b456b2ed7 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -56,3 +56,9 @@ /obj/effect/abstract/singularity_act() return + +/obj/effect/dummy/singularity_pull() + return + +/obj/effect/dummy/singularity_act() + return diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index 024fb4b4ea..edf7b4f519 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -7,6 +7,9 @@ density = TRUE CanAtmosPass = ATMOS_PASS_DENSITY +/obj/effect/forcefield/singularity_pull() + return + /obj/effect/forcefield/cult desc = "An unholy shield that blocks all attacks." name = "glowing wall" diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index cadee92161..d7d36acde1 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -12,6 +12,12 @@ var/def_zone pass_flags = PASSTABLE +/obj/effect/beam/singularity_act() + return + +/obj/effect/beam/singularity_pull() + return + /obj/effect/spawner name = "object spawner" diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index f932ec9830..427e9eefe2 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -75,6 +75,12 @@ if(isturf(hard_target_override)) hard_target = hard_target_override +/obj/effect/portal/singularity_pull() + return + +/obj/effect/portal/singularity_act() + return + /obj/effect/portal/proc/link_portal(obj/effect/portal/newlink) linked = newlink if(atmos_link) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 93faacbf68..229dfc56de 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -6,6 +6,7 @@ var/mobs_only = FALSE invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit anchored = TRUE +<<<<<<< HEAD /obj/effect/step_trigger/proc/Trigger(atom/movable/A) return 0 @@ -192,3 +193,198 @@ if(happens_once) qdel(src) +======= + +/obj/effect/step_trigger/proc/Trigger(atom/movable/A) + return 0 + +/obj/effect/step_trigger/Crossed(H as mob|obj) + ..() + if(!H) + return + if(isobserver(H) && !affect_ghosts) + return + if(!ismob(H) && mobs_only) + return + Trigger(H) + + +/obj/effect/step_trigger/singularity_act() + return + +/obj/effect/step_trigger/singularity_pull() + return + +/* Sends a message to mob when triggered*/ + +/obj/effect/step_trigger/message + var/message //the message to give to the mob + var/once = 1 + mobs_only = TRUE + +/obj/effect/step_trigger/message/Trigger(mob/M) + if(M.client) + to_chat(M, "[message]") + if(once) + qdel(src) + +/* Tosses things in a certain direction */ + +/obj/effect/step_trigger/thrower + var/direction = SOUTH // the direction of throw + var/tiles = 3 // if 0: forever until atom hits a stopper + var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung + var/speed = 1 // delay of movement + var/facedir = 0 // if 1: atom faces the direction of movement + var/nostop = 0 // if 1: will only be stopped by teleporters + var/list/affecting = list() + +/obj/effect/step_trigger/thrower/Trigger(atom/A) + if(!A || !ismovableatom(A)) + return + var/atom/movable/AM = A + var/curtiles = 0 + var/stopthrow = 0 + for(var/obj/effect/step_trigger/thrower/T in orange(2, src)) + if(AM in T.affecting) + return + + if(ismob(AM)) + var/mob/M = AM + if(immobilize) + M.canmove = 0 + + affecting.Add(AM) + while(AM && !stopthrow) + if(tiles) + if(curtiles >= tiles) + break + if(AM.z != src.z) + break + + curtiles++ + + sleep(speed) + + // Calculate if we should stop the process + if(!nostop) + for(var/obj/effect/step_trigger/T in get_step(AM, direction)) + if(T.stopper && T != src) + stopthrow = 1 + else + for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction)) + if(T.stopper) + stopthrow = 1 + + if(AM) + var/predir = AM.dir + step(AM, direction) + if(!facedir) + AM.setDir(predir) + + + + affecting.Remove(AM) + + if(ismob(AM)) + var/mob/M = AM + if(immobilize) + M.canmove = 1 + +/* Stops things thrown by a thrower, doesn't do anything */ + +/obj/effect/step_trigger/stopper + +/* Instant teleporter */ + +/obj/effect/step_trigger/teleporter + var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!) + var/teleport_y = 0 + var/teleport_z = 0 + +/obj/effect/step_trigger/teleporter/Trigger(atom/movable/A) + if(teleport_x && teleport_y && teleport_z) + + A.x = teleport_x + A.y = teleport_y + A.z = teleport_z + +/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ + +/obj/effect/step_trigger/teleporter/random + var/teleport_x_offset = 0 + var/teleport_y_offset = 0 + var/teleport_z_offset = 0 + +/obj/effect/step_trigger/teleporter/random/Trigger(atom/movable/A) + if(teleport_x && teleport_y && teleport_z) + if(teleport_x_offset && teleport_y_offset && teleport_z_offset) + + A.x = rand(teleport_x, teleport_x_offset) + A.y = rand(teleport_y, teleport_y_offset) + A.z = rand(teleport_z, teleport_z_offset) + +/* Fancy teleporter, creates sparks and smokes when used */ + +/obj/effect/step_trigger/teleport_fancy + var/locationx + var/locationy + var/uses = 1 //0 for infinite uses + var/entersparks = 0 + var/exitsparks = 0 + var/entersmoke = 0 + var/exitsmoke = 0 + +/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M) + var/dest = locate(locationx, locationy, z) + M.Move(dest) + + if(entersparks) + var/datum/effect_system/spark_spread/s = new + s.set_up(4, 1, src) + s.start() + if(exitsparks) + var/datum/effect_system/spark_spread/s = new + s.set_up(4, 1, dest) + s.start() + + if(entersmoke) + var/datum/effect_system/smoke_spread/s = new + s.set_up(4, 1, src, 0) + s.start() + if(exitsmoke) + var/datum/effect_system/smoke_spread/s = new + s.set_up(4, 1, dest, 0) + s.start() + + uses-- + if(uses == 0) + qdel(src) + +/* Simple sound player, Mapper friendly! */ + +/obj/effect/step_trigger/sound_effect + var/sound //eg. path to the sound, inside '' eg: 'growl.ogg' + var/volume = 100 + var/freq_vary = 1 //Should the frequency of the sound vary? + var/extra_range = 0 // eg World.view = 7, extra_range = 1, 7+1 = 8, 8 turfs radius + var/happens_once = 0 + var/triggerer_only = 0 //Whether the triggerer is the only person who hears this + + +/obj/effect/step_trigger/sound_effect/Trigger(atom/movable/A) + var/turf/T = get_turf(A) + + if(!T) + return + + if(triggerer_only && ismob(A)) + var/mob/B = A + B.playsound_local(T, sound, volume, freq_vary) + else + playsound(T, sound, volume, freq_vary, extra_range) + + if(happens_once) + qdel(src) + +>>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 6f1ab39013..d65ef6fc2a 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -252,6 +252,9 @@ /obj/effect/chrono_field/singularity_act() return +/obj/effect/chrono_field/singularity_pull() + return + /obj/effect/chrono_field/ex_act() return diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 129c6c92c8..b7ec8c36b5 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -30,6 +30,9 @@ /obj/effect/sound_emitter/singularity_act() return +/obj/effect/sound_emitter/singularity_pull() + return + /obj/effect/sound_emitter/examine(mob/user) ..() if(!isobserver(user)) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index ca234308d8..d0c0979366 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -179,6 +179,9 @@ var/mob/living/L = AM L.fire_act(temperature, volume) +/obj/effect/hotspot/singularity_pull() + return + /obj/effect/dummy/fire name = "fire" desc = "OWWWWWW. IT BURNS. Tell a coder if you're seeing this." diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index c5a4f3a58a..a2b5a864c4 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -252,6 +252,12 @@ var/obj/screen/chronos_target/target_ui = null var/obj/item/clothing/suit/space/chronos/chronosuit +/obj/effect/chronos_cam/singularity_act() + return + +/obj/effect/chronos_cam/singularity_pull() + return + /obj/effect/chronos_cam/proc/create_target_ui() if(holder && holder.client && chronosuit) if(target_ui) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 3b0cb1921a..b933e566be 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -68,6 +68,12 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 /obj/effect/immovablerod/ex_act(severity, target) return 0 +/obj/effect/immovablerod/singularity_act() + return + +/obj/effect/immovablerod/singularity_pull() + return + /obj/effect/immovablerod/Collide(atom/clong) if(prob(10)) playsound(src, 'sound/effects/bang.ogg', 50, 1) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 749b98c09a..866b763fe6 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -98,6 +98,12 @@ GLOBAL_LIST_INIT(hallucinations_major, list( var/image_layer = MOB_LAYER var/active = TRUE //qdelery +/obj/effect/hallucination/singularity_pull() + return + +/obj/effect/hallucination/singularity_act() + return + /obj/effect/hallucination/simple/Initialize(mapload, var/mob/living/carbon/T) . = ..() target = T diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index ecbd8a4135..743e84aca4 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -183,3 +183,9 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) if(L.stat != DEAD) return 1 return 0 + +/obj/effect/extraction_holder/singularity_pull() + return + +/obj/effect/extraction_holder/singularity_pull() + return diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index d7fca5c84f..18eb52c8f8 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -366,7 +366,7 @@ return /obj/effect/immortality_talisman/singularity_pull() - return 0 + return /obj/effect/immortality_talisman/Destroy(force) if(!can_destroy && !force) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 9625a47cf8..8d36922bdf 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -12,6 +12,12 @@ ..() set_light(set_luminosity, set_cap) +/obj/effect/light_emitter/singularity_pull() + return + +/obj/effect/light_emitter/singularity_act() + return + /**********************Miner Lockers**************************/ /obj/structure/closet/wardrobe/miner diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index e3792d40ba..ccec94bea8 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -117,3 +117,9 @@ var/list/guardians = spawner.summoner.hasparasites() for(var/para in guardians) to_chat(para, "[AM] has crossed surveillance snare, [name].") + +/obj/effect/snare/singularity_act() + return + +/obj/effect/snare/singularity_pull() + return diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index f04c61426b..2756d879d1 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -51,6 +51,9 @@ /obj/effect/accelerated_particle/ex_act(severity, target) qdel(src) +/obj/effect/accelerated_particle/singularity_pull() + return + /obj/effect/accelerated_particle/proc/toxmob(mob/living/M) M.rad_act(energy*6) diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm index f2d99bc849..a88e271056 100644 --- a/code/modules/projectiles/guns/beam_rifle.dm +++ b/code/modules/projectiles/guns/beam_rifle.dm @@ -772,3 +772,9 @@ icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "zoom_mode" background_icon_state = "bg_tech" + +/obj/effect/projectile_beam/singularity_pull() + return + +/obj/effect/projectile_beam/singularity_act() + return diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 4bf6ea43b1..d19079d563 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -86,6 +86,12 @@ qdel(src) +/obj/effect/nettingportal/singularity_act() + return + +/obj/effect/nettingportal/singularity_pull() + return + /obj/item/projectile/energy/trap name = "energy snare" diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index e8d65cae9f..85956b0c6d 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -38,6 +38,12 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th remove_ranged_ability() return ..() +/obj/effect/proc_holder/singularity_act() + return + +/obj/effect/proc_holder/singularity_pull() + return + /obj/effect/proc_holder/proc/InterceptClickOn(mob/living/caller, params, atom/A) if(caller.ranged_ability != src || ranged_ability_user != caller) //I'm not actually sure how these would trigger, but, uh, safety, I guess? to_chat(caller, "[caller.ranged_ability.name] has been disabled.") diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm index 25b170745f..ed6abe1410 100644 --- a/code/modules/spells/spell_types/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/spacetime_distortion.dm @@ -73,6 +73,12 @@ var/sound var/walks_left = 50 //prevents the game from hanging in extreme cases (such as minigun fire) +/obj/effect/cross_action/singularity_act() + return + +/obj/effect/cross_action/singularity_pull() + return + /obj/effect/cross_action/spacetime_dist/Initialize(mapload) . = ..() sound = "sound/guitar/[safepick(GLOB.guitar_notes)]" From 7b2a926235be59228f56da76ef6bbd86ad2592d6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 17:58:29 -0500 Subject: [PATCH 2/3] Update bump_teleporter.dm --- code/game/objects/effects/bump_teleporter.dm | 42 ++++++-------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index 5e17ee9e89..8eb4c986de 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -1,26 +1,12 @@ -/obj/effect/bump_teleporter - name = "bump-teleporter" - icon = 'icons/mob/screen_gen.dmi' - icon_state = "x2" - var/id = null //id of this bump_teleporter. - var/id_target = null //id of bump_teleporter which this moves you to. - invisibility = INVISIBILITY_ABSTRACT //nope, can't see this +/obj/effect/bump_teleporter + name = "bump-teleporter" + icon = 'icons/mob/screen_gen.dmi' + icon_state = "x2" + var/id = null //id of this bump_teleporter. + var/id_target = null //id of bump_teleporter which this moves you to. + invisibility = INVISIBILITY_ABSTRACT //nope, can't see this anchored = TRUE density = TRUE -<<<<<<< HEAD - opacity = 0 - - var/static/list/AllTeleporters - -/obj/effect/bump_teleporter/New() - ..() - LAZYADD(AllTeleporters, src) - -/obj/effect/bump_teleporter/Destroy() - LAZYREMOVE(AllTeleporters, src) - return ..() - -======= opacity = 0 var/static/list/AllTeleporters @@ -33,20 +19,18 @@ LAZYREMOVE(AllTeleporters, src) return ..() - /obj/effect/bump_teleporter/singularity_act() return /obj/effect/bump_teleporter/singularity_pull() return ->>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025) /obj/effect/bump_teleporter/CollidedWith(atom/movable/AM) if(!ismob(AM)) - return - if(!id_target) - return - - for(var/obj/effect/bump_teleporter/BT in AllTeleporters) - if(BT.id == src.id_target) + return + if(!id_target) + return + + for(var/obj/effect/bump_teleporter/BT in AllTeleporters) + if(BT.id == src.id_target) AM.forceMove(BT.loc) //Teleport to location with correct id. From d04bbbdd677dbb18196718f5e140eca39fdd1b7a Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 24 Nov 2017 17:59:18 -0500 Subject: [PATCH 3/3] Update step_triggers.dm --- code/game/objects/effects/step_triggers.dm | 203 +-------------------- 1 file changed, 7 insertions(+), 196 deletions(-) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 229dfc56de..bfed048eff 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -1,199 +1,11 @@ -/* Simple object type, calls a proc when "stepped" on by something */ - -/obj/effect/step_trigger - var/affect_ghosts = 0 - var/stopper = 1 // stops throwers - var/mobs_only = FALSE - invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit +/* Simple object type, calls a proc when "stepped" on by something */ + +/obj/effect/step_trigger + var/affect_ghosts = 0 + var/stopper = 1 // stops throwers + var/mobs_only = FALSE + invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit anchored = TRUE -<<<<<<< HEAD - -/obj/effect/step_trigger/proc/Trigger(atom/movable/A) - return 0 - -/obj/effect/step_trigger/Crossed(H as mob|obj) - ..() - if(!H) - return - if(isobserver(H) && !affect_ghosts) - return - if(!ismob(H) && mobs_only) - return - Trigger(H) - -/* Sends a message to mob when triggered*/ - -/obj/effect/step_trigger/message - var/message //the message to give to the mob - var/once = 1 - mobs_only = TRUE - -/obj/effect/step_trigger/message/Trigger(mob/M) - if(M.client) - to_chat(M, "[message]") - if(once) - qdel(src) - -/* Tosses things in a certain direction */ - -/obj/effect/step_trigger/thrower - var/direction = SOUTH // the direction of throw - var/tiles = 3 // if 0: forever until atom hits a stopper - var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung - var/speed = 1 // delay of movement - var/facedir = 0 // if 1: atom faces the direction of movement - var/nostop = 0 // if 1: will only be stopped by teleporters - var/list/affecting = list() - -/obj/effect/step_trigger/thrower/Trigger(atom/A) - if(!A || !ismovableatom(A)) - return - var/atom/movable/AM = A - var/curtiles = 0 - var/stopthrow = 0 - for(var/obj/effect/step_trigger/thrower/T in orange(2, src)) - if(AM in T.affecting) - return - - if(ismob(AM)) - var/mob/M = AM - if(immobilize) - M.canmove = 0 - - affecting.Add(AM) - while(AM && !stopthrow) - if(tiles) - if(curtiles >= tiles) - break - if(AM.z != src.z) - break - - curtiles++ - - sleep(speed) - - // Calculate if we should stop the process - if(!nostop) - for(var/obj/effect/step_trigger/T in get_step(AM, direction)) - if(T.stopper && T != src) - stopthrow = 1 - else - for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction)) - if(T.stopper) - stopthrow = 1 - - if(AM) - var/predir = AM.dir - step(AM, direction) - if(!facedir) - AM.setDir(predir) - - - - affecting.Remove(AM) - - if(ismob(AM)) - var/mob/M = AM - if(immobilize) - M.canmove = 1 - -/* Stops things thrown by a thrower, doesn't do anything */ - -/obj/effect/step_trigger/stopper - -/* Instant teleporter */ - -/obj/effect/step_trigger/teleporter - var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!) - var/teleport_y = 0 - var/teleport_z = 0 - -/obj/effect/step_trigger/teleporter/Trigger(atom/movable/A) - if(teleport_x && teleport_y && teleport_z) - - A.x = teleport_x - A.y = teleport_y - A.z = teleport_z - -/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ - -/obj/effect/step_trigger/teleporter/random - var/teleport_x_offset = 0 - var/teleport_y_offset = 0 - var/teleport_z_offset = 0 - -/obj/effect/step_trigger/teleporter/random/Trigger(atom/movable/A) - if(teleport_x && teleport_y && teleport_z) - if(teleport_x_offset && teleport_y_offset && teleport_z_offset) - - A.x = rand(teleport_x, teleport_x_offset) - A.y = rand(teleport_y, teleport_y_offset) - A.z = rand(teleport_z, teleport_z_offset) - -/* Fancy teleporter, creates sparks and smokes when used */ - -/obj/effect/step_trigger/teleport_fancy - var/locationx - var/locationy - var/uses = 1 //0 for infinite uses - var/entersparks = 0 - var/exitsparks = 0 - var/entersmoke = 0 - var/exitsmoke = 0 - -/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M) - var/dest = locate(locationx, locationy, z) - M.Move(dest) - - if(entersparks) - var/datum/effect_system/spark_spread/s = new - s.set_up(4, 1, src) - s.start() - if(exitsparks) - var/datum/effect_system/spark_spread/s = new - s.set_up(4, 1, dest) - s.start() - - if(entersmoke) - var/datum/effect_system/smoke_spread/s = new - s.set_up(4, 1, src, 0) - s.start() - if(exitsmoke) - var/datum/effect_system/smoke_spread/s = new - s.set_up(4, 1, dest, 0) - s.start() - - uses-- - if(uses == 0) - qdel(src) - -/* Simple sound player, Mapper friendly! */ - -/obj/effect/step_trigger/sound_effect - var/sound //eg. path to the sound, inside '' eg: 'growl.ogg' - var/volume = 100 - var/freq_vary = 1 //Should the frequency of the sound vary? - var/extra_range = 0 // eg World.view = 7, extra_range = 1, 7+1 = 8, 8 turfs radius - var/happens_once = 0 - var/triggerer_only = 0 //Whether the triggerer is the only person who hears this - - -/obj/effect/step_trigger/sound_effect/Trigger(atom/movable/A) - var/turf/T = get_turf(A) - - if(!T) - return - - if(triggerer_only && ismob(A)) - var/mob/B = A - B.playsound_local(T, sound, volume, freq_vary) - else - playsound(T, sound, volume, freq_vary, extra_range) - - if(happens_once) - qdel(src) - -======= /obj/effect/step_trigger/proc/Trigger(atom/movable/A) return 0 @@ -387,4 +199,3 @@ if(happens_once) qdel(src) ->>>>>>> f912b6e... Fixes Lord Singuloth hungering for more than he should (#33025)