mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Replaces ex_act and emp_act numbers with defines (#29215)
* defines * defines * explode_none
This commit is contained in:
@@ -138,3 +138,11 @@
|
||||
#define HIS_GRACE_FALL_ASLEEP 160 //If it reaches this point, He falls asleep and resets.
|
||||
|
||||
#define HIS_GRACE_FORCE_BONUS 4 //How much force is gained per kill.
|
||||
|
||||
#define EXPLODE_NONE 0 //Don't even ask me why we need this.
|
||||
#define EXPLODE_DEVASTATE 1
|
||||
#define EXPLODE_HEAVY 2
|
||||
#define EXPLODE_LIGHT 3
|
||||
|
||||
#define EMP_HEAVY 1
|
||||
#define EMP_LIGHT 2
|
||||
|
||||
@@ -125,7 +125,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
E = new
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
|
||||
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//flash mobs
|
||||
@@ -165,20 +165,20 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
var/throw_dist = dist
|
||||
|
||||
if(dist < devastation_range)
|
||||
dist = 1
|
||||
dist = EXPLODE_DEVASTATE
|
||||
else if(dist < heavy_impact_range)
|
||||
dist = 2
|
||||
dist = EXPLODE_HEAVY
|
||||
else if(dist < light_impact_range)
|
||||
dist = 3
|
||||
dist = EXPLODE_LIGHT
|
||||
else
|
||||
dist = 0
|
||||
dist = EXPLODE_NONE
|
||||
|
||||
//------- EX_ACT AND TURF FIRES -------
|
||||
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
|
||||
if(dist > 0)
|
||||
if(dist > EXPLODE_NONE)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
@@ -192,7 +192,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
var/throw_range = rand(throw_dist, max_range)
|
||||
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
|
||||
I.throw_speed = EXPLOSION_THROW_SPEED //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, EXPLOSION_THROW_SPEED)
|
||||
I.throw_at(throw_at, throw_range, EXPLOSION_THROW_SPEED)
|
||||
|
||||
//wait for the lists to repop
|
||||
var/break_condition
|
||||
@@ -208,7 +208,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
|
||||
if(!running)
|
||||
break
|
||||
|
||||
|
||||
//update the trackers
|
||||
affTurfLen = affected_turfs.len
|
||||
expBlockLen = cached_exp_block.len
|
||||
@@ -274,7 +274,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
. = list()
|
||||
var/processed = 0
|
||||
while(!stopped && running)
|
||||
var/I
|
||||
var/I
|
||||
for(I in (processed + 1) to affected_turfs.len) // we cache the explosion block rating of every turf in the explosion area
|
||||
var/turf/T = affected_turfs[I]
|
||||
var/current_exp_block = T.density ? T.explosion_block : 0
|
||||
@@ -282,12 +282,12 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
for(var/obj/O in T)
|
||||
var/the_block = O.explosion_block
|
||||
current_exp_block += the_block == EXPLOSION_BLOCK_PROC ? O.GetExplosionBlock() : the_block
|
||||
|
||||
|
||||
.[T] = current_exp_block
|
||||
|
||||
if(TICK_CHECK)
|
||||
break
|
||||
|
||||
|
||||
processed = I
|
||||
stoplag()
|
||||
|
||||
@@ -346,7 +346,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
TT = get_step_towards(TT,epicenter)
|
||||
if(TT.density)
|
||||
dist += TT.explosion_block
|
||||
|
||||
|
||||
for(var/obj/O in T)
|
||||
var/the_block = O.explosion_block
|
||||
dist += the_block == EXPLOSION_BLOCK_PROC ? O.GetExplosionBlock() : the_block
|
||||
|
||||
@@ -293,11 +293,11 @@
|
||||
if (2)
|
||||
D.adjustBruteLoss(rand(20,30))
|
||||
if (3)
|
||||
D.ex_act(3)
|
||||
D.ex_act(EXPLODE_LIGHT)
|
||||
else
|
||||
D.adjustBruteLoss(rand(10,20))
|
||||
else
|
||||
D.ex_act(3)
|
||||
D.ex_act(EXPLODE_LIGHT)
|
||||
|
||||
else
|
||||
if (A)
|
||||
@@ -404,7 +404,7 @@
|
||||
|
||||
if (falling == 1)
|
||||
if (prob(33) || D.stat)
|
||||
D.ex_act(3)
|
||||
D.ex_act(EXPLODE_LIGHT)
|
||||
else
|
||||
D.adjustBruteLoss(rand(20,30))
|
||||
else
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
/obj/structure/destructible/clockwork/powered/clockwork_obelisk/forced_disable(bad_effects)
|
||||
var/affected = 0
|
||||
for(var/obj/effect/clockwork/spatial_gateway/SG in loc)
|
||||
SG.ex_act(1)
|
||||
SG.ex_act(EXPLODE_DEVASTATE)
|
||||
affected++
|
||||
if(bad_effects)
|
||||
affected += try_use_power(MIN_CLOCKCULT_POWER*4)
|
||||
|
||||
@@ -119,19 +119,19 @@
|
||||
successfulprocess = TRUE
|
||||
if(C.emped)
|
||||
continue
|
||||
C.emp_act(1)
|
||||
C.emp_act(EMP_HEAVY)
|
||||
else if(istype(A, /obj/item/device/radio))
|
||||
var/obj/item/device/radio/O = A
|
||||
successfulprocess = TRUE
|
||||
if(O.emped || !O.on)
|
||||
continue
|
||||
O.emp_act(1)
|
||||
O.emp_act(EMP_HEAVY)
|
||||
else if((isliving(A) && !is_servant_of_ratvar(A)) || istype(A, /obj/structure/closet) || istype(A, /obj/item/weapon/storage)) //other things may have radios in them but we don't care
|
||||
for(var/obj/item/device/radio/O in A.GetAllContents())
|
||||
successfulprocess = TRUE
|
||||
if(O.emped || !O.on)
|
||||
continue
|
||||
O.emp_act(1)
|
||||
O.emp_act(EMP_HEAVY)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
target.flash_act(1,1)
|
||||
if(issilicon(target))
|
||||
var/mob/living/silicon/S = target
|
||||
S.emp_act(1)
|
||||
S.emp_act(EMP_HEAVY)
|
||||
else if(iscarbon(target))
|
||||
var/mob/living/carbon/C = target
|
||||
C.silent += 5
|
||||
|
||||
@@ -434,7 +434,7 @@
|
||||
new /obj/effect/temp_visual/swarmer/disintegration(get_turf(target))
|
||||
do_attack_animation(target)
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
target.ex_act(3)
|
||||
target.ex_act(EXPLODE_LIGHT)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/swarmer/proc/DisperseTarget(mob/living/target)
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
continue
|
||||
to_chat(human, "<span class='revenwarning'>You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")].</span>")
|
||||
new /obj/effect/temp_visual/revenant(human.loc)
|
||||
human.emp_act(1)
|
||||
human.emp_act(EMP_HEAVY)
|
||||
for(var/obj/thing in T)
|
||||
if(istype(thing, /obj/machinery/dominator) || istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes)) //Doesn't work on dominators, SMES and APCs, to prevent kekkery
|
||||
continue
|
||||
@@ -303,12 +303,12 @@
|
||||
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)
|
||||
thing.emp_act(EMP_HEAVY)
|
||||
for(var/mob/living/silicon/robot/S in T) //Only works on cyborgs, not AI
|
||||
playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1)
|
||||
new /obj/effect/temp_visual/revenant(S.loc)
|
||||
S.spark_system.start()
|
||||
S.emp_act(1)
|
||||
S.emp_act(EMP_HEAVY)
|
||||
|
||||
//Blight: Infects nearby humans and in general messes living stuff up.
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight
|
||||
|
||||
@@ -1210,7 +1210,7 @@
|
||||
playsound(get_turf(src), I.usesound, 50, 1)
|
||||
if(!do_after(user, 150*I.toolspeed, target = src))
|
||||
to_chat(user, "<span class='warning'>You slip and [charge] detonates!</span>")
|
||||
charge.ex_act(1)
|
||||
charge.ex_act(EXPLODE_DEVASTATE)
|
||||
user.Knockdown(60)
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
|
||||
@@ -1295,7 +1295,7 @@
|
||||
update_icon(AIRLOCK_OPENING)
|
||||
visible_message("<span class='warning'>[src]'s panel is blown off in a spray of deadly shrapnel!</span>")
|
||||
charge.loc = get_turf(src)
|
||||
charge.ex_act(1)
|
||||
charge.ex_act(EXPLODE_DEVASTATE)
|
||||
detonated = 1
|
||||
charge = null
|
||||
for(var/mob/living/carbon/human/H in orange(2,src))
|
||||
@@ -1361,7 +1361,7 @@
|
||||
|
||||
var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src))
|
||||
if(killthis)
|
||||
killthis.ex_act(2)//Smashin windows
|
||||
killthis.ex_act(EXPLODE_HEAVY)//Smashin windows
|
||||
|
||||
if(density)
|
||||
return TRUE
|
||||
|
||||
@@ -491,9 +491,9 @@ Class Procs:
|
||||
if(prob(85) && explosive)
|
||||
explosion(src.loc,1,2,4,flame_range = 2, adminlog = 0, smoke = 0)
|
||||
else if(prob(50))
|
||||
emp_act(2)
|
||||
emp_act(EMP_LIGHT)
|
||||
else
|
||||
ex_act(2)
|
||||
ex_act(EXPLODE_HEAVY)
|
||||
|
||||
/obj/machinery/Exited(atom/movable/AM, atom/newloc)
|
||||
. = ..()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
else
|
||||
drill_mob(target, chassis.occupant)
|
||||
else
|
||||
target.ex_act(2)
|
||||
target.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
/turf/proc/drill_act(obj/item/mecha_parts/mecha_equipment/drill/drill)
|
||||
return
|
||||
@@ -44,7 +44,7 @@
|
||||
if(istype(drill, /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill))
|
||||
if(drill.do_after_cooldown(src))//To slow down how fast mechs can drill through the station
|
||||
drill.log_message("Drilled through [src]")
|
||||
ex_act(3)
|
||||
ex_act(EXPLODE_LIGHT)
|
||||
else
|
||||
drill.occupant_message("<span class='danger'>[src] is too durable to drill through.</span>")
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/shock()
|
||||
var/obj/mecha/M = in_mecha()
|
||||
if(M)
|
||||
M.emp_act(2)
|
||||
M.emp_act(EMP_LIGHT)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log()
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
if(target && !target.stat)
|
||||
O.throw_at(target, 7, 5)
|
||||
else
|
||||
O.ex_act(2)
|
||||
O.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
/obj/effect/anomaly/bhole/proc/grav(r, ex_act_force, pull_chance, turf_removal_chance)
|
||||
for(var/t = -r, t < r, t++)
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
if(distance < 0)
|
||||
distance = 0
|
||||
if(distance < heavy_range)
|
||||
T.emp_act(1)
|
||||
T.emp_act(EMP_HEAVY)
|
||||
else if(distance == heavy_range)
|
||||
if(prob(50))
|
||||
T.emp_act(1)
|
||||
T.emp_act(EMP_HEAVY)
|
||||
else
|
||||
T.emp_act(2)
|
||||
T.emp_act(EMP_LIGHT)
|
||||
else if(distance <= light_range)
|
||||
T.emp_act(2)
|
||||
T.emp_act(EMP_LIGHT)
|
||||
return 1
|
||||
@@ -218,7 +218,7 @@
|
||||
var/list/cameras = flatten_list(bugged_cameras)
|
||||
var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras
|
||||
if(C && istype(C) && C.bug == src)
|
||||
C.emp_act(1)
|
||||
C.emp_act(EMP_HEAVY)
|
||||
C.bug = null
|
||||
bugged_cameras -= C.c_tag
|
||||
interact()
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
qdel(src)
|
||||
if(2)
|
||||
if(prob(50))
|
||||
ex_act(1)
|
||||
ex_act(EXPLODE_DEVASTATE)
|
||||
if(3)
|
||||
if(prob(25))
|
||||
ex_act(1)
|
||||
ex_act(EXPLODE_DEVASTATE)
|
||||
|
||||
/obj/item/device/doorCharge/Destroy()
|
||||
if(istype(loc, /obj/machinery/door/airlock))
|
||||
|
||||
@@ -381,7 +381,7 @@
|
||||
else
|
||||
A.visible_message("<span class='danger'>[user] blinks \the [src] at \the [A].")
|
||||
to_chat(user, "\The [src] now has [emp_cur_charges] charge\s.")
|
||||
A.emp_act(1)
|
||||
A.emp_act(EMP_HEAVY)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>\The [src] needs time to recharge!</span>")
|
||||
return
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
else if(istype(target, /obj/machinery/camera))
|
||||
var/obj/machinery/camera/C = target
|
||||
if(prob(effectchance * diode.rating))
|
||||
C.emp_act(1)
|
||||
C.emp_act(EMP_HEAVY)
|
||||
outmsg = "<span class='notice'>You hit the lens of [C] with [src], temporarily disabling the camera!</span>"
|
||||
add_logs(user, C, "EMPed", src)
|
||||
else
|
||||
|
||||
@@ -495,7 +495,7 @@
|
||||
if(homerun_ready)
|
||||
user.visible_message("<span class='userdanger'>It's a home run!</span>")
|
||||
target.throw_at(throw_target, rand(8,10), 14, user)
|
||||
target.ex_act(2)
|
||||
target.ex_act(EXPLODE_HEAVY)
|
||||
playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, 1)
|
||||
homerun_ready = 0
|
||||
return
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
return take_damage(M.force*3, mech_damtype, "melee", play_soundeffect, get_dir(src, M)) // multiplied by 3 so we can hit objs hard but not be overpowered against mobs.
|
||||
|
||||
/obj/singularity_act()
|
||||
ex_act(1)
|
||||
ex_act(EXPLODE_DEVASTATE)
|
||||
if(src && !QDELETED(src))
|
||||
qdel(src)
|
||||
return 2
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// Examples
|
||||
/*
|
||||
-- Will call the proc for all computers in the world, thats dir is 2.
|
||||
CALL ex_act(1) ON /obj/machinery/computer IN world WHERE dir == 2
|
||||
CALL ex_act(EXPLODE_DEVASTATE) ON /obj/machinery/computer IN world WHERE dir == 2
|
||||
-- Will open a window with a list of all the closets in the world, with a link to VV them.
|
||||
SELECT /obj/structure/closet/secure_closet/security/cargo IN world WHERE icon_off == "secoff"
|
||||
-- Will change all the tube lights to green
|
||||
|
||||
@@ -156,7 +156,7 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
|
||||
L.gib()
|
||||
else if(istype(A,/obj/))
|
||||
var/obj/O = A
|
||||
O.ex_act(1)
|
||||
O.ex_act(EXPLODE_DEVASTATE)
|
||||
if(O) qdel(O)
|
||||
else if(isturf(A))
|
||||
var/turf/T = A
|
||||
|
||||
@@ -23,4 +23,4 @@
|
||||
|
||||
/datum/round_event/communications_blackout/start()
|
||||
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
|
||||
T.emp_act(1)
|
||||
T.emp_act(EMP_HEAVY)
|
||||
|
||||
@@ -80,7 +80,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
|
||||
if(isturf(clong) || isobj(clong))
|
||||
if(clong.density)
|
||||
clong.ex_act(2)
|
||||
clong.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
else if(isliving(clong))
|
||||
penetrate(clong)
|
||||
@@ -100,4 +100,4 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
var/mob/living/carbon/human/H = L
|
||||
H.adjustBruteLoss(160)
|
||||
if(L && (L.density || prob(10)))
|
||||
L.ex_act(2)
|
||||
L.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
@@ -35,6 +35,6 @@
|
||||
explosion(get_turf(P), 0, 0, 2)
|
||||
// Only a level 1 explosion actually damages the machine
|
||||
// at all
|
||||
P.ex_act(1)
|
||||
P.ex_act(EXPLODE_DEVASTATE)
|
||||
else
|
||||
P.emp_act(1)
|
||||
P.emp_act(EMP_HEAVY)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
for(var/turf/T in linked)
|
||||
if(prob(30))
|
||||
do_sparks(2, 1, T)
|
||||
T.ex_act(3)
|
||||
T.ex_act(EXPLODE_LIGHT)
|
||||
T.hotspot_expose(1000,500,1)
|
||||
|
||||
if(!emagged)
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
stored_obj.forceMove(T)
|
||||
playsound(T,'sound/effects/explosion2.ogg', 200, 1)
|
||||
new /obj/effect/temp_visual/explosion(T)
|
||||
user.ex_act(2)
|
||||
user.ex_act(EXPLODE_HEAVY)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='holoparasite'>[src] glows with a strange <font color=\"[spawner.namedatum.colour]\">light</font>, and you don't touch it.</span>")
|
||||
|
||||
@@ -176,7 +176,7 @@ Difficulty: Hard
|
||||
/mob/living/simple_animal/hostile/megafauna/bubblegum/Bump(atom/A)
|
||||
if(charging)
|
||||
if(isturf(A) || isobj(A) && A.density)
|
||||
A.ex_act(2)
|
||||
A.ex_act(EXPLODE_HEAVY)
|
||||
DestroySurroundings()
|
||||
..()
|
||||
|
||||
|
||||
@@ -254,7 +254,7 @@ Difficulty: Very Hard
|
||||
/obj/item/projectile/colossus/on_hit(atom/target, blocked = FALSE)
|
||||
. = ..()
|
||||
if(isturf(target) || isobj(target))
|
||||
target.ex_act(2)
|
||||
target.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
|
||||
/obj/item/device/gps/internal/colossus
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/blob_act(obj/structure/blob/B)
|
||||
ex_act(1)
|
||||
ex_act(EXPLODE_DEVASTATE)
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/proc/get_electrocute_damage()
|
||||
if(charge >= 1000)
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
/obj/machinery/power/port_gen/pacman/emag_act(mob/user)
|
||||
if(!emagged)
|
||||
emagged = TRUE
|
||||
emp_act(1)
|
||||
emp_act(EMP_HEAVY)
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/attack_hand(mob/user)
|
||||
..()
|
||||
|
||||
@@ -272,7 +272,7 @@ GLOBAL_LIST_INIT(blacklisted_tesla_types, typecacheof(list(/obj/machinery/atmosp
|
||||
if(issilicon(closest_mob))
|
||||
var/mob/living/silicon/S = closest_mob
|
||||
if(stun_mobs)
|
||||
S.emp_act(2)
|
||||
S.emp_act(EMP_LIGHT)
|
||||
tesla_zap(S, 7, power / 1.5, explosive, stun_mobs) // metallic folks bounce it further
|
||||
else
|
||||
tesla_zap(closest_mob, 5, power / 1.5, explosive, stun_mobs)
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
if(wall_pierce++ < wall_pierce_amount)
|
||||
loc = target
|
||||
if(prob(wall_devastate))
|
||||
target.ex_act(2)
|
||||
target.ex_act(EXPLODE_HEAVY)
|
||||
return TRUE
|
||||
if(ismovableatom(target))
|
||||
var/atom/movable/AM = target
|
||||
|
||||
@@ -112,11 +112,11 @@
|
||||
/obj/item/projectile/blastwave/Range()
|
||||
..()
|
||||
if(heavyr)
|
||||
loc.ex_act(1)
|
||||
loc.ex_act(EXPLODE_DEVASTATE)
|
||||
else if(mediumr)
|
||||
loc.ex_act(2)
|
||||
loc.ex_act(EXPLODE_HEAVY)
|
||||
else if(lightr)
|
||||
loc.ex_act(3)
|
||||
loc.ex_act(EXPLODE_LIGHT)
|
||||
else
|
||||
qdel(src)
|
||||
heavyr--
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
/obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE)
|
||||
. = ..()
|
||||
if(isturf(target) || istype(target,/obj/structure/))
|
||||
target.ex_act(2)
|
||||
target.ex_act(EXPLODE_HEAVY)
|
||||
|
||||
/obj/item/projectile/beam/pulse/shot
|
||||
damage = 40
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
if(A == firer)
|
||||
loc = A.loc
|
||||
return
|
||||
A.ex_act(2)
|
||||
A.ex_act(EXPLODE_HEAVY)
|
||||
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
|
||||
for(var/mob/M in urange(10, src))
|
||||
if(!M.stat)
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
/datum/reagent/blob/electromagnetic_web/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
|
||||
reac_volume = ..()
|
||||
if(prob(reac_volume*2))
|
||||
M.emp_act(2)
|
||||
M.emp_act(EMP_LIGHT)
|
||||
if(M)
|
||||
M.apply_damage(reac_volume, BURN)
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
/obj/machinery/bsa/full/proc/fire(mob/user, turf/bullseye)
|
||||
var/turf/point = get_front_turf()
|
||||
for(var/turf/T in getline(get_step(point,dir),get_target_turf()))
|
||||
T.ex_act(1)
|
||||
T.ex_act(EXPLODE_DEVASTATE)
|
||||
point.Beam(get_target_turf(),icon_state="bsa_beam",time=50,maxdistance = world.maxx) //ZZZAP
|
||||
|
||||
message_admins("[key_name_admin(user)] has launched an artillery strike.")
|
||||
|
||||
Reference in New Issue
Block a user