mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
Explosion attack log update (#31070)
* Ex_act() logging update * Fixes * Priming * Fixes * Fixes * More mob attack logs * Fixes * Other carbons * Forgot these * Forgot these * Possible fix * Last resort * Obvious typo gets ignored * Using fingerprints for more logging * Basis of explosion system using it too, only for plasma cigars for now * Fix * Moved here * TTV log fix * Formatting ckey in too Co-authored-by: kanef <kanef9x@protonmail.com>
This commit is contained in:
@@ -395,16 +395,16 @@
|
||||
IED = null
|
||||
..()
|
||||
|
||||
/obj/item/weapon/beartrap/ex_act(var/severity)
|
||||
/obj/item/weapon/beartrap/ex_act(var/severity, var/child = null, var/mob/whodunnit)
|
||||
switch(severity)
|
||||
if (1)
|
||||
qdel(src)
|
||||
if (2)
|
||||
if (IED)
|
||||
IED.prime()
|
||||
IED.prime(whodunnit)
|
||||
if (3)
|
||||
if (IED && prob(50))
|
||||
IED.prime()
|
||||
IED.prime(whodunnit)
|
||||
|
||||
/obj/item/weapon/beartrap/armed
|
||||
armed = 1
|
||||
@@ -691,7 +691,7 @@
|
||||
message_admins(log_str)
|
||||
log_game(log_str)
|
||||
spawn(IED.det_time)
|
||||
IED.prime()
|
||||
IED.prime(L)
|
||||
desc = initial(desc)
|
||||
overlays.Remove(ied_overlay)
|
||||
if (trappeduser && trappedorgan?.amputated)//check if they lost their leg, and get them out of the trap
|
||||
@@ -831,7 +831,7 @@
|
||||
src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"")
|
||||
message_admins("[C] triggered the explosive wet floor sign at [loc] ([x], [y], [z]): <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>, last touched by [fingerprintslast].")
|
||||
log_game("[C] triggered the explosive wet floor sign at [loc]([x], [y], [z]): <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>, last touched by [fingerprintslast].")
|
||||
explosion(src.loc,-1,2,0)
|
||||
explosion(src.loc,-1,2,0, whodunnit = get_mob_by_key(fingerprintslast))
|
||||
if(ishuman(C))
|
||||
dead_legs(C)
|
||||
if(src)
|
||||
|
||||
@@ -474,7 +474,7 @@ its easier to just keep the beam vertical.
|
||||
// 3 is light damage.
|
||||
//
|
||||
// child is set to the child object that exploded, if available.
|
||||
/atom/proc/ex_act(var/severity, var/child=null)
|
||||
/atom/proc/ex_act(var/severity, var/child=null, var/mob/whodunnit)
|
||||
return
|
||||
|
||||
/atom/proc/mech_drill_act(var/severity, var/child=null)
|
||||
|
||||
@@ -158,7 +158,7 @@ rcd light flash thingy on matter drain
|
||||
var/obj/machinery/M = targets[1]
|
||||
M.visible_message("<span class='notice'>You hear a loud electrical buzzing sound!</span>")
|
||||
spawn(50)
|
||||
explosion(get_turf(M), -1, 1, 2, 3) //C4 Radius + 1 Dest for the machine
|
||||
explosion(get_turf(M), -1, 1, 2, 3, whodunnit = user) //C4 Radius + 1 Dest for the machine
|
||||
qdel(M)
|
||||
|
||||
/datum/AI_Module/large/place_cyborg_autoborger
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user)
|
||||
..()
|
||||
explosion(user.loc, -1, 0, 2, 3, 0)
|
||||
explosion(user.loc, -1, 0, 2, 3, 0, whodunnit = user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/smoke
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
if(emagged) //Oh shit nigger what are you doing
|
||||
spark(src, 5)
|
||||
spawn(15)
|
||||
explosion(src.loc, -1, 1, 3, adminlog = 0) //Overload
|
||||
explosion(src.loc, -1, 1, 3, adminlog = 0, whodunnit = user) //Overload
|
||||
qdel(src) //It exploded, rip
|
||||
return
|
||||
usr.put_in_hands(charging)
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
return 0
|
||||
else if(user in cheaters)
|
||||
to_chat(usr, "<span class='danger'>[enemy_name] throws a bomb at you for trying to cheat him again.</span>")
|
||||
explosion(holder.loc,-1,0,2)//IED sized explosion
|
||||
explosion(holder.loc,-1,0,2, whodunnit = user)//IED sized explosion
|
||||
user.gib()
|
||||
cheaters = null
|
||||
qdel(src)
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/action(target)
|
||||
if(can_pre_detonate && grenade)
|
||||
grenade.prime()
|
||||
grenade.prime(chassis.occupant)
|
||||
grenade = null
|
||||
return
|
||||
if(!action_checks(target))
|
||||
@@ -393,7 +393,7 @@
|
||||
spawn(det_time)
|
||||
if(grenade)
|
||||
grenade = null
|
||||
G.prime()
|
||||
G.prime(chassis.occupant)
|
||||
do_after_cooldown()
|
||||
return
|
||||
|
||||
|
||||
@@ -1037,8 +1037,9 @@ steam.start() -- spawns the effect
|
||||
var/amount // TNT equivalent
|
||||
var/flashing = 0 // does explosion creates flash effect?
|
||||
var/flashing_factor = 0 // factor of how powerful the flash effect relatively to the explosion
|
||||
var/mob/user //for investigation
|
||||
|
||||
/datum/effect/system/reagents_explosion/set_up (amt, loc, flash = 0, flash_fact = 0)
|
||||
/datum/effect/system/reagents_explosion/set_up (amt, loc, flash = 0, flash_fact = 0, var/mob/whodunnit)
|
||||
amount = amt
|
||||
if(istype(loc, /turf/))
|
||||
location = loc
|
||||
@@ -1047,6 +1048,7 @@ steam.start() -- spawns the effect
|
||||
|
||||
flashing = flash
|
||||
flashing_factor = flash_fact
|
||||
user = whodunnit
|
||||
|
||||
return
|
||||
|
||||
@@ -1078,7 +1080,7 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/M in viewers(8, location))
|
||||
to_chat(M, "<span class='warning'>The solution violently explodes.</span>")
|
||||
|
||||
explosion(location, devastation, heavy, light, flash)
|
||||
explosion(location, devastation, heavy, light, flash, whodunnit = user)
|
||||
|
||||
/datum/effect/system/reagents_explosion/proc/holder_damage(var/atom/holder)
|
||||
if(holder)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
trigger(AM)
|
||||
|
||||
/obj/effect/mine/proc/trigger(mob/living/carbon/AM)
|
||||
explosion(loc, 0, 1, 2, 3)
|
||||
explosion(loc, 0, 1, 2, 3, whodunnit = AM)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/dnascramble
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
var/explosion_shake_message_cooldown = 0
|
||||
|
||||
/proc/explosion(turf/epicenter, const/devastation_range, const/heavy_impact_range, const/light_impact_range, const/flash_range, adminlog = 1, ignored = 0, verbose = 1)
|
||||
/proc/explosion(turf/epicenter, const/devastation_range, const/heavy_impact_range, const/light_impact_range, const/flash_range, adminlog = 1, ignored = 0, verbose = 1, var/mob/whodunnit)
|
||||
var/explosion_time = world.time
|
||||
|
||||
spawn()
|
||||
@@ -99,8 +99,8 @@ var/explosion_shake_message_cooldown = 0
|
||||
if(!istype(M.loc,/turf/space))
|
||||
M << 'sound/effects/explosionfar.ogg'
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</A>)")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([formatJumpTo(epicenter,"JMP")]) [whodunnit ? " caused by [whodunnit] [whodunnit.ckey ? "([whodunnit.ckey])" : "(no key)"] ([formatJumpTo(whodunnit,"JMP")])" : ""]")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] [whodunnit ? " caused by [whodunnit] [whodunnit.ckey ? "([whodunnit.ckey])" : "(no key)"]" : ""]")
|
||||
|
||||
//Pause the lighting updates for a bit.
|
||||
var/postponeCycles = max(round(devastation_range/8),1)
|
||||
@@ -118,7 +118,7 @@ var/explosion_shake_message_cooldown = 0
|
||||
var/z0 = epicenter.z
|
||||
|
||||
|
||||
explosion_destroy(epicenter,epicenter,devastation_range,heavy_impact_range,light_impact_range,flash_range,explosion_time)
|
||||
explosion_destroy(epicenter,epicenter,devastation_range,heavy_impact_range,light_impact_range,flash_range,explosion_time,whodunnit)
|
||||
|
||||
var/took = stop_watch(watch)
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
@@ -135,7 +135,7 @@ var/explosion_shake_message_cooldown = 0
|
||||
|
||||
return 1
|
||||
|
||||
/proc/explosion_destroy(turf/epicenter, turf/offcenter, const/devastation_range, const/heavy_impact_range, const/light_impact_range, const/flash_range, var/explosion_time)
|
||||
/proc/explosion_destroy(turf/epicenter, turf/offcenter, const/devastation_range, const/heavy_impact_range, const/light_impact_range, const/flash_range, var/explosion_time, var/mob/whodunnit)
|
||||
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range)
|
||||
|
||||
var/x0 = offcenter.x
|
||||
@@ -202,13 +202,13 @@ var/explosion_shake_message_cooldown = 0
|
||||
A.throw_at(throwT,pushback+2,500)
|
||||
//else A.GotoExplosionThrowDest(throwT, 50)
|
||||
//world.log << "THROWING [A] AT [throwT]"
|
||||
A.ex_act(dist)
|
||||
A.ex_act(dist,null,whodunnit)
|
||||
|
||||
T.ex_act(dist)
|
||||
T.ex_act(dist,null,whodunnit)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
explosion_destroy_multi_z(epicenter, offcenter, devastation_range / 2, heavy_impact_range / 2, light_impact_range / 2, flash_range / 2, explosion_time)
|
||||
explosion_destroy_multi_z(epicenter, offcenter, devastation_range / 2, heavy_impact_range / 2, light_impact_range / 2, flash_range / 2, explosion_time, whodunnit)
|
||||
|
||||
proc/secondaryexplosion(turf/epicenter, range)
|
||||
for(var/turf/tile in trange(range, epicenter))
|
||||
|
||||
@@ -2311,7 +2311,7 @@ var/global/msg_id = 0
|
||||
log_admin("[key_name(U)] attempted to blow up [P] with the Detomatix cartridge and succeeded")
|
||||
message_admins("[key_name_admin(U)] attempted to blow up [P] with the Detomatix cartridge and succeeded", 1)
|
||||
cartridge:shock_charges--
|
||||
P.explode()
|
||||
P.explode(U)
|
||||
else
|
||||
U.unset_machine()
|
||||
U << browse(null, "window=pda")
|
||||
@@ -2786,7 +2786,7 @@ obj/item/device/pda/AltClick()
|
||||
if(A.Adjacent(user))
|
||||
return dev_analys.preattack(A, user, 1)
|
||||
|
||||
/obj/item/device/pda/proc/explode() //This needs tuning.
|
||||
/obj/item/device/pda/proc/explode(var/mob/user) //This needs tuning.
|
||||
var/turf/T = get_turf(src.loc)
|
||||
|
||||
if (ismob(loc))
|
||||
@@ -2796,7 +2796,7 @@ obj/item/device/pda/AltClick()
|
||||
if(T)
|
||||
T.hotspot_expose(700,125,surfaces=istype(loc,/turf))
|
||||
|
||||
explosion(T, -1, -1, 2, 3)
|
||||
explosion(T, -1, -1, 2, 3, whodunnit = user)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
visible_message(message)
|
||||
if(catastrophic)
|
||||
spawn(0.5 SECONDS)
|
||||
explosion(loc, 0, prob(15), 2, 0)
|
||||
explosion(loc, 0, prob(15), 2, 0, whodunnit = user)
|
||||
|
||||
/obj/item/device/camera_bug/Destroy()
|
||||
camera_bugs -= src
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
user.register_event(/event/face, src, /obj/item/device/maracas/proc/chickchicky)
|
||||
chickchicky()
|
||||
|
||||
/obj/item/device/maracas/throw_impact(atom/hit_atom)
|
||||
/obj/item/device/maracas/throw_impact(atom/hit_atom, var/speed, var/mob/user)
|
||||
if(emagged)
|
||||
explosion(get_turf(src), -1 ,1, 3)
|
||||
explosion(get_turf(src), -1 ,1, 3, whodunnit = user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/maracas/dropped(mob/user)
|
||||
|
||||
@@ -469,7 +469,7 @@
|
||||
icon_state = "fireball_flask"
|
||||
|
||||
/obj/item/potion/fireball/imbibe_effect(mob/living/user)
|
||||
explosion(get_turf(user), -1, 1, 2, 5)
|
||||
explosion(get_turf(user), -1, 1, 2, 5, whodunnit = user)
|
||||
|
||||
/obj/item/potion/fireball/impact_atom(atom/target)
|
||||
explosion(get_turf(target), -1, 1, 2, 5)
|
||||
|
||||
@@ -868,7 +868,7 @@
|
||||
sleep(50)
|
||||
say("Someone pass the boombox.")
|
||||
sleep(5)
|
||||
explosion(get_turf(src), -1,1,4)
|
||||
explosion(get_turf(src), -1,1,4, whodunnit = user)
|
||||
qdel(src)
|
||||
else
|
||||
return
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
say("That is enough for [crackers_to_dispense] crackers!")
|
||||
if(crackers_to_dispense > 100)
|
||||
visible_message("<span class = 'warning'>\The [src]'s matter fabrication unit overloads!</span>")
|
||||
explosion(loc, 0, prob(15), 2, 0)
|
||||
explosion(loc, 0, prob(15), 2, 0, whodunnit = user)
|
||||
qdel(src)
|
||||
return
|
||||
for(var/x = 1 to crackers_to_dispense)
|
||||
@@ -452,7 +452,7 @@ var/global/list/alcatraz_stuff = list(
|
||||
var/datum/organ/external/active_hand = user.get_active_hand_organ()
|
||||
if(active_hand)
|
||||
active_hand.explode()
|
||||
explosion(user, -1, 0, 2)
|
||||
explosion(user, -1, 0, 2, whodunnit = user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/head/helmet/donutgiver/Hear(var/datum/speech/speech, var/rendered_speech="")
|
||||
|
||||
@@ -340,7 +340,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
|
||||
if(reagents.get_reagent_amount(PLASMA)) //Plasma explodes when exposed to fire
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount(PLASMA)/2.5, 1), get_turf(src), 0, 0)
|
||||
e.set_up(round(reagents.get_reagent_amount(PLASMA)/2.5, 1), get_turf(src), 0, 0, whodunnit = usr)
|
||||
e.start()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
@@ -350,7 +350,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
|
||||
|
||||
if(reagents.get_reagent_amount(FUEL)) //Fuel explodes, too, but much less violently
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount(FUEL)/5, 1), get_turf(src), 0, 0)
|
||||
e.set_up(round(reagents.get_reagent_amount(FUEL)/5, 1), get_turf(src), 0, 0, whodunnit = usr)
|
||||
e.start()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
result = 24
|
||||
sleep(40)
|
||||
var/turf/epicenter = get_turf(src)
|
||||
explosion(epicenter, round(result*0.25), round(result*0.5), round(result), round(result*1.5), 1, cap)
|
||||
explosion(epicenter, round(result*0.25), round(result*0.5), round(result), round(result*1.5), 1, cap, whodunnit = user)
|
||||
if(cap)
|
||||
for(var/obj/machinery/computer/bhangmeter/bhangmeter in doppler_arrays)
|
||||
if(bhangmeter)
|
||||
@@ -272,7 +272,7 @@
|
||||
to_chat(user, "<span class=sinister><B>You get nothing. No curse or reward! </span></B>")
|
||||
if(13)
|
||||
to_chat(user, "<span class=sinister><B>You've rolled 13! The cursed dice is broken! </span></B>")
|
||||
explosion(get_turf(src), 0, 0, 4, 7)
|
||||
explosion(get_turf(src), 0, 0, 4, 7, whodunnit = user)
|
||||
to_chat(user, "<span class=danger><B>The dice explosively shatters! </span></B>")
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -143,10 +143,10 @@
|
||||
to_chat(user, "<span class='notice'>There is no room for \the [I] in the improvised explosive!.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
|
||||
/obj/item/weapon/grenade/iedcasing/prime(var/mob/user) //Blowing that can up
|
||||
update_mob()
|
||||
process_shrapnel()
|
||||
explosion(get_turf(src.loc),-1,0,2)
|
||||
explosion(get_turf(src.loc),-1,0,2, whodunnit = user)
|
||||
|
||||
if(istype(loc, /obj/item/weapon/beartrap))
|
||||
var/obj/item/weapon/beartrap/boomtrap = loc
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
prime(user)
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/proc/prime()
|
||||
/obj/item/weapon/grenade/proc/prime(var/mob/user)
|
||||
// playsound(loc, 'sound/items/Welder2.ogg', 25, 1)
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
origin_tech = Tc_SYNDICATE + "=2" + Tc_COMBAT + "=3"
|
||||
det_time = 3 SECONDS
|
||||
|
||||
/obj/item/weapon/grenade/syndigrenade/prime()
|
||||
/obj/item/weapon/grenade/syndigrenade/prime(var/mob/user)
|
||||
..()
|
||||
explosion(loc, 0, 2, 4, 6) //Explosive grenades pack a decent punch and are perfectly capable of breaking the hull, so beware
|
||||
explosion(loc, 0, 2, 4, 6, whodunnit = user) //Explosive grenades pack a decent punch and are perfectly capable of breaking the hull, so beware
|
||||
spawn()
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
var/turf/T = get_turf(M)
|
||||
|
||||
M.gib()
|
||||
explosion(T, 1, 3, 4, 6)
|
||||
explosion(T, 1, 3, 4, 6, whodunnit = M)
|
||||
T.hotspot_expose(3500, 125, surfaces = 1)
|
||||
|
||||
qdel(src)
|
||||
@@ -140,7 +140,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
var/turf/T = get_turf(M)
|
||||
|
||||
M.gib()
|
||||
explosion(T, 1, 1, 3, 4)
|
||||
explosion(T, 1, 1, 3, 4, whodunnit = M)
|
||||
T.hotspot_expose(3500, 125, surfaces = 1)
|
||||
|
||||
qdel(src)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
message_admins("[key_name_admin(user)] detonated [H] and [src], creating an explosion.")
|
||||
log_game("[key_name(user)] detonated [H] and [src], creating an explosion.")
|
||||
empulse(T,(20),(40))
|
||||
explosion(T, 5, 10, 20, 40, 1)
|
||||
explosion(T, 5, 10, 20, 40, 1, whodunnit = user)
|
||||
user.gib() //Just to be sure
|
||||
else
|
||||
investigation_log(I_SINGULO,"has become a singularity. Caused by [user.key]")
|
||||
|
||||
@@ -328,9 +328,9 @@
|
||||
if(prob(1))
|
||||
to_chat(user, "<span class='notice'>You hit [pick("a good and caring parent", "a criminal", "someone everyone will miss",
|
||||
"someone no one will miss", "a thief", "an abusive parent", "a space communist", "an alcoholic", "an adventurer")].</span>")
|
||||
explosion(target, 0, 0, 1)
|
||||
explosion(target, 0, 0, 1, whodunnit = user)
|
||||
|
||||
/obj/item/weapon/damocles/throw_impact(atom/hit_atom, speed, mob/user)
|
||||
..()
|
||||
explosion(get_turf(src), 0, 2, 3)
|
||||
explosion(get_turf(src), 0, 2, 3, whodunnit = user)
|
||||
qdel(src)
|
||||
|
||||
@@ -267,8 +267,8 @@
|
||||
var/turf/epicenter = get_turf(loc)
|
||||
|
||||
// to_chat(world, "<span class='notice'>Exploding Pressure: [pressure] kPa, intensity: [range]</span>")
|
||||
|
||||
explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5), 1, cap)
|
||||
var/mob/user = istype(src.loc,/obj/item/device/transfer_valve) ? get_mob_by_key(loc.fingerprintslast) : get_mob_by_key(fingerprintslast)
|
||||
explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5), 1, cap, whodunnit = user)
|
||||
if(cap)
|
||||
for(var/obj/machinery/computer/bhangmeter/bhangmeter in doppler_arrays)
|
||||
if(bhangmeter)
|
||||
|
||||
@@ -674,23 +674,23 @@ var/list/admin_verbs_mod = list(
|
||||
set desc = "Cause an explosion of varying strength at your location."
|
||||
|
||||
var/turf/epicenter = mob.loc
|
||||
var/list/choices = list("Small Bomb (1,2,3)", "Medium Bomb (2,3,4)", "Big Bomb (3,5,7)", "Custom Bomb")
|
||||
var/list/choices = list("Small Bomb (1,3,4)", "Medium Bomb (3,7,14)", "Big Bomb (7,14,28)", "Custom Bomb")
|
||||
var/choice = input("What size explosion would you like to produce?") in choices | null
|
||||
switch(choice)
|
||||
if(null)
|
||||
return 0
|
||||
if("Small Bomb (1,2,3)")
|
||||
explosion(epicenter, 1, 2, 3, 3)
|
||||
if("Medium Bomb (2,3,4)")
|
||||
explosion(epicenter, 2, 3, 4, 4)
|
||||
if("Big Bomb (3,5,7)")
|
||||
explosion(epicenter, 3, 5, 7, 5)
|
||||
if("Small Bomb (1,3,4)")
|
||||
explosion(epicenter, 1, 3, 4, 4, whodunnit = usr)
|
||||
if("Medium Bomb (3,7,14)")
|
||||
explosion(epicenter, 3, 7, 14, 14, whodunnit = usr)
|
||||
if("Big Bomb (7,14,28)")
|
||||
explosion(epicenter, 7, 14, 28, 28, whodunnit = usr)
|
||||
if("Custom Bomb")
|
||||
var/devastation_range = input("Devastation range (in tiles):") as num
|
||||
var/heavy_impact_range = input("Heavy impact range (in tiles):") as num
|
||||
var/light_impact_range = input("Light impact range (in tiles):") as num
|
||||
var/flash_range = input("Flash range (in tiles):") as num
|
||||
explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, whodunnit = usr)
|
||||
|
||||
log_admin("[key_name(usr)] creating an admin explosion at [epicenter.loc] ([epicenter.x],[epicenter.y],[epicenter.z]).")
|
||||
message_admins("<span class='notice'>[key_name_admin(src)] creating an admin explosion at [epicenter.loc] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</A>).</span>")
|
||||
|
||||
@@ -3879,7 +3879,7 @@
|
||||
feedback_add_details("admin_secrets_fun_used","SC")
|
||||
var/choice = input("You sure you want to destroy the universe and create a large explosion at your location? Misuse of this could result in removal of flags or hilarity.") in list("NO TIME TO EXPLAIN", "Cancel")
|
||||
if(choice == "NO TIME TO EXPLAIN")
|
||||
explosion(get_turf(usr), 8, 16, 24, 32, 1)
|
||||
explosion(get_turf(usr), 8, 16, 24, 32, 1, whodunnit = usr)
|
||||
new /turf/unsimulated/wall/supermatter(get_turf(usr))
|
||||
SetUniversalState(/datum/universal_state/supermatter_cascade)
|
||||
message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]")
|
||||
|
||||
@@ -744,7 +744,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if (alert(src, "Are you sure you want to do this? It will laaag.", "Confirmation", "Yes", "No") == "No")
|
||||
return
|
||||
|
||||
explosion(O, devastation, heavy, light, flash)
|
||||
explosion(O, devastation, heavy, light, flash, whodunnit = usr)
|
||||
log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flash]) at ([O.x],[O.y],[O.z])")
|
||||
message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flash]) at ([O.x],[O.y],[O.z])", 1)
|
||||
feedback_add_details("admin_verb","EXPL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
for(var/turf/T in get_area_turfs(thearea.type))
|
||||
L+=T
|
||||
var/loc = pick(L)
|
||||
explosion(loc,2,5,11)
|
||||
explosion(loc,2,5,11, whodunnit = usr)
|
||||
reload = 0
|
||||
|
||||
/*mob/proc/openfire()
|
||||
|
||||
@@ -983,7 +983,7 @@ obj/item/clothing/suit/cassock
|
||||
var/message_say = user.handle_suicide_bomb_cause()
|
||||
to_chat(viewers(user), "<span class='danger'>[user] activates the [src]! It looks like \he's going out with a bang!</span>")
|
||||
user.say(message_say)
|
||||
explosion(user, 1, 3, 6)
|
||||
explosion(user, 1, 3, 6, whodunnit = user)
|
||||
message_admins("[user] has detonated \the [src]!")
|
||||
qdel(src) //Just in case
|
||||
return SUICIDE_ACT_CUSTOM
|
||||
@@ -992,7 +992,7 @@ obj/item/clothing/suit/cassock
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(!ishuman(H) || !active)
|
||||
return
|
||||
explosion(H, 1, 3, 6)
|
||||
explosion(H, 1, 3, 6, whodunnit = H)
|
||||
message_admins("[H] has detonated \the [src]!")
|
||||
qdel(src) //Just in case
|
||||
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
if(ourVendor)
|
||||
ourVendor.forceMove(loc)
|
||||
else
|
||||
explosion(loc, 1,2,2)
|
||||
explosion(loc, 1,2,2, whodunnit = src)
|
||||
..(gibbed)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
l_store.emp_act(severity)
|
||||
..()
|
||||
|
||||
/mob/living/carbon/alien/humanoid/ex_act(severity)
|
||||
/mob/living/carbon/alien/humanoid/ex_act(severity, var/child=null, var/mob/whodunnit)
|
||||
if(flags & INVULNERABLE)
|
||||
return
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
switch (severity)
|
||||
if(1)
|
||||
b_loss += 500
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
gib()
|
||||
return
|
||||
|
||||
@@ -61,6 +62,7 @@
|
||||
f_loss += 60
|
||||
ear_damage += 30
|
||||
ear_deaf += 120
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: [shielded ? "60" : "120"]", admin_warn = TRUE)
|
||||
|
||||
if(3)
|
||||
b_loss += 30
|
||||
@@ -68,6 +70,7 @@
|
||||
Paralyse(TRUE)
|
||||
ear_damage += 15
|
||||
ear_deaf += 60
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 30", admin_warn = TRUE)
|
||||
|
||||
adjustBruteLoss(b_loss)
|
||||
adjustFireLoss(f_loss)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
..(amount)
|
||||
|
||||
|
||||
/mob/living/carbon/alien/larva/ex_act(severity)
|
||||
/mob/living/carbon/alien/larva/ex_act(severity, var/child=null, var/mob/whodunnit)
|
||||
if(flags & INVULNERABLE)
|
||||
return
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
switch (severity)
|
||||
if(1)
|
||||
b_loss += 500
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
gib()
|
||||
return
|
||||
if(2)
|
||||
@@ -62,12 +63,14 @@
|
||||
f_loss += 60
|
||||
ear_damage += 30
|
||||
ear_deaf += 120
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 120", admin_warn = TRUE)
|
||||
if(3)
|
||||
b_loss += 30
|
||||
if(prob(50))
|
||||
Paralyse(1)
|
||||
ear_damage += 15
|
||||
ear_deaf += 60
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 30", admin_warn = TRUE)
|
||||
|
||||
adjustBruteLoss(b_loss)
|
||||
adjustFireLoss(f_loss)
|
||||
|
||||
@@ -261,7 +261,7 @@
|
||||
if(H && B)
|
||||
to_chat(H, "<span class='danger'>You were disintegrated by [B.my_rel.deity_name]'s bolt of lightning.</span>")
|
||||
H.attack_log += text("\[[time_stamp()]\] <font color='orange'>Farted on a bible and suffered [B.my_rel.deity_name]'s wrath.</font>")
|
||||
explosion(get_turf(H),-1,-1,1,5) //Tiny explosion with flash
|
||||
explosion(get_turf(H),-1,-1,1,5, whodunnit = H) //Tiny explosion with flash
|
||||
H.dust()
|
||||
//Ayy lmao
|
||||
|
||||
|
||||
@@ -408,7 +408,7 @@ emp_act
|
||||
w_uniform.apply_luminol()
|
||||
update_inv_w_uniform(update)
|
||||
|
||||
/mob/living/carbon/human/ex_act(var/severity, var/noblind = FALSE)
|
||||
/mob/living/carbon/human/ex_act(var/severity, var/child=null, var/mob/whodunnit, var/noblind = FALSE)
|
||||
if(flags & INVULNERABLE)
|
||||
return FALSE
|
||||
|
||||
@@ -424,6 +424,7 @@ emp_act
|
||||
b_loss += 300
|
||||
if(!prob(gotarmor)) //Percent chance equal to their armor resist to not gib instantly.
|
||||
gib()
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
return
|
||||
else
|
||||
var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
|
||||
@@ -441,10 +442,12 @@ emp_act
|
||||
if (BLOB_ACT_MEDIUM)
|
||||
if (stat == 2 && client)
|
||||
gib()
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
return
|
||||
|
||||
else if (stat == 2 && !client)
|
||||
gibs(loc, virus2)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -526,6 +529,7 @@ emp_act
|
||||
if(LIMB_LEFT_ARM)
|
||||
update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message)
|
||||
if(update)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity]", admin_warn = TRUE)
|
||||
UpdateDamageIcon()
|
||||
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
powerlevel = 0 // oh no, the power!
|
||||
..()
|
||||
|
||||
/mob/living/carbon/slime/ex_act(severity)
|
||||
/mob/living/carbon/slime/ex_act(severity, var/child=null, var/mob/whodunnit)
|
||||
if(flags & INVULNERABLE)
|
||||
return
|
||||
|
||||
@@ -246,16 +246,19 @@
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
b_loss += 500
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
return
|
||||
|
||||
if (2.0)
|
||||
|
||||
b_loss += 60
|
||||
f_loss += 60
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 120", admin_warn = TRUE)
|
||||
|
||||
|
||||
if(3.0)
|
||||
b_loss += 30
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 30", admin_warn = TRUE)
|
||||
|
||||
adjustBruteLoss(b_loss)
|
||||
adjustFireLoss(f_loss)
|
||||
|
||||
@@ -433,7 +433,7 @@ var/list/ai_list = list()
|
||||
message_admins("[key_name_admin(src)] called the shuttle due to being hit with an EMP.'.")
|
||||
..()
|
||||
|
||||
/mob/living/silicon/ai/ex_act(severity)
|
||||
/mob/living/silicon/ai/ex_act(severity, var/child=null, var/mob/whodunnit)
|
||||
if(flags & INVULNERABLE)
|
||||
return
|
||||
|
||||
@@ -445,13 +445,16 @@ var/list/ai_list = list()
|
||||
if(!isDead())
|
||||
adjustBruteLoss(100)
|
||||
adjustFireLoss(100)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 200", admin_warn = TRUE)
|
||||
if(2.0)
|
||||
if(!isDead())
|
||||
adjustBruteLoss(60)
|
||||
adjustFireLoss(60)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 120", admin_warn = TRUE)
|
||||
if(3.0)
|
||||
if(!isDead())
|
||||
adjustBruteLoss(30)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 30", admin_warn = TRUE)
|
||||
|
||||
updatehealth()
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
visible_message("<span class='danger'>[name] begins to spark violently!</span>")
|
||||
playsound(src, 'sound/machines/Alarm_short.ogg', 75, FALSE)
|
||||
spawn(30)
|
||||
explosion(src.loc, 2, 5, 8, 10)
|
||||
explosion(src.loc, 2, 5, 8, 10, whodunnit = src)
|
||||
gibbed = TRUE
|
||||
gib()
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
stat = DEAD
|
||||
icon_state = "ai-crash"
|
||||
spawn(10)
|
||||
explosion(loc, 3, 6, 12, 15)
|
||||
explosion(loc, 3, 6, 12, 15, whodunnit = src)
|
||||
gib()
|
||||
|
||||
return ..(gibbed)
|
||||
@@ -44,7 +44,7 @@
|
||||
if(connected_ai.explosive_cyborgs)
|
||||
visible_message("<span class='notice'>You hear a soft beep.</span>")
|
||||
spawn(10)
|
||||
explosion(src.loc, 1, 4, 5, 6)
|
||||
explosion(src.loc, 1, 4, 5, 6, whodunnit = src)
|
||||
gib()
|
||||
return
|
||||
if(!gibbed)
|
||||
|
||||
@@ -456,7 +456,7 @@
|
||||
return FALSE
|
||||
|
||||
|
||||
/mob/living/silicon/robot/ex_act(severity)
|
||||
/mob/living/silicon/robot/ex_act(severity, var/child=null, var/mob/whodunnit)
|
||||
if(flags & INVULNERABLE)
|
||||
to_chat(src, "The bus' robustness protects you from the explosion.")
|
||||
return
|
||||
@@ -468,15 +468,18 @@
|
||||
if(!isDead())
|
||||
adjustBruteLoss(100)
|
||||
adjustFireLoss(100)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 200", admin_warn = TRUE)
|
||||
gib()
|
||||
return
|
||||
if(2.0)
|
||||
if(!isDead())
|
||||
adjustBruteLoss(60)
|
||||
adjustFireLoss(60)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 120", admin_warn = TRUE)
|
||||
if(3.0)
|
||||
if(!isDead())
|
||||
adjustBruteLoss(30)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 30", admin_warn = TRUE)
|
||||
|
||||
updatehealth()
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
src.name = "Spider-bot ([M.brainmob.name])"
|
||||
|
||||
/mob/living/simple_animal/spiderbot/proc/explode() //When emagged.
|
||||
explosion(get_turf(loc), -1, -1, 3, 5)
|
||||
explosion(get_turf(loc), -1, -1, 3, 5, whodunnit = src)
|
||||
death()
|
||||
|
||||
/mob/living/simple_animal/spiderbot/update_icon()
|
||||
|
||||
@@ -373,5 +373,5 @@
|
||||
sleep(10)
|
||||
var/turf/eloc = get_turf(loc)
|
||||
qdel(src)
|
||||
explosion(eloc,1,2,3)
|
||||
explosion(eloc,1,2,3, whodunnit = src)
|
||||
new /obj/item/weapon/gun/gatling(eloc)
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
..(TRUE)
|
||||
|
||||
explosion(T, -1, 1, 2)
|
||||
explosion(T, -1, 1, 2, whodunnit = src)
|
||||
|
||||
/obj/effect/landmark/corpse/skellington
|
||||
name = "skellington"
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
var/turf/T = get_turf(src)
|
||||
new /obj/effect/gibspawner/generic(T)
|
||||
qdel(src)
|
||||
explosion(T, -1, 1, 4)
|
||||
explosion(T, -1, 1, 4, whodunnit = src)
|
||||
|
||||
/mob/living/simple_animal/hostile/necromorph/puker
|
||||
desc = "A twisted, engorged husk of what was once human. It reeks of stomach acid."
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
walk(src,0)
|
||||
spawn(rand(50,80))
|
||||
if(!disabled && exploding)
|
||||
explosion(get_turf(src), 0, 1, 4, 7)
|
||||
explosion(get_turf(src), 0, 1, 4, 7, whodunnit = src)
|
||||
//proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -805,7 +805,7 @@
|
||||
if(istype(held_item, /obj/item/weapon/grenade))
|
||||
var/obj/item/weapon/grenade/G = held_item
|
||||
G.forceMove(src.loc)
|
||||
G.prime()
|
||||
G.prime(src)
|
||||
to_chat(src, "You let go of [held_item]!")
|
||||
held_item = null
|
||||
return 1
|
||||
|
||||
@@ -580,22 +580,24 @@ var/global/list/animal_count = list() //Stores types, and amount of animals of t
|
||||
..(gibbed)
|
||||
|
||||
|
||||
/mob/living/simple_animal/ex_act(severity)
|
||||
/mob/living/simple_animal/ex_act(severity, var/child=null, var/mob/whodunnit)
|
||||
if(flags & INVULNERABLE)
|
||||
return
|
||||
..()
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
adjustBruteLoss(500)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Gibbed", admin_warn = TRUE)
|
||||
gib()
|
||||
return
|
||||
|
||||
if (2.0)
|
||||
adjustBruteLoss(60)
|
||||
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 60", admin_warn = TRUE)
|
||||
|
||||
if(3.0)
|
||||
adjustBruteLoss(30)
|
||||
add_attacklogs(src, whodunnit, "got caught in an explosive blast from", addition = "Severity: [severity], Damage: 30", admin_warn = TRUE)
|
||||
|
||||
/mob/living/simple_animal/adjustBruteLoss(damage)
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
var/turf/gloc = get_turf(loc)
|
||||
visible_message("<span class='danger'><B>[src] shudders violently and explodes!</B>","<span class='warning'>You feel your body rupture!</span></span>")
|
||||
gib()
|
||||
explosion(gloc, -1, -1, 3, 5)
|
||||
explosion(gloc, -1, -1, 3, 5, whodunnit = src)
|
||||
|
||||
/mob/living/simple_animal/vox/armalis/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
user.delayNextAttack(8)
|
||||
|
||||
@@ -148,12 +148,12 @@ var/global/list/visible_spaces = list(/turf/simulated/open, /turf/simulated/floo
|
||||
multi_z_spiral_block(epicenter,max_range,inward,1,shape)
|
||||
|
||||
// Halves above and below, as per suggestion by deity on how to handle multi-z explosions
|
||||
/proc/explosion_destroy_multi_z(turf/epicenter, turf/offcenter, const/devastation_range, const/heavy_impact_range, const/light_impact_range, const/flash_range, var/explosion_time)
|
||||
/proc/explosion_destroy_multi_z(turf/epicenter, turf/offcenter, const/devastation_range, const/heavy_impact_range, const/light_impact_range, const/flash_range, var/explosion_time, var/mob/whodunnit)
|
||||
if(HasAbove(offcenter.z) && (devastation_range >= 1 || heavy_impact_range >= 1 || light_impact_range >= 1 || flash_range >= 1))
|
||||
var/turf/upcenter = GetAbove(offcenter)
|
||||
if(upcenter.z > epicenter.z)
|
||||
explosion_destroy(epicenter, upcenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, explosion_time)
|
||||
explosion_destroy(epicenter, upcenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, explosion_time, whodunnit)
|
||||
if(HasBelow(offcenter.z) && (devastation_range >= 1 || heavy_impact_range >= 1 || light_impact_range >= 1 || flash_range >= 1))
|
||||
var/turf/downcenter = GetBelow(offcenter)
|
||||
if(downcenter.z < epicenter.z)
|
||||
explosion_destroy(epicenter, downcenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, explosion_time)
|
||||
explosion_destroy(epicenter, downcenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, explosion_time, whodunnit)
|
||||
|
||||
@@ -834,7 +834,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
owner.visible_message("<span class='danger'>\The [owner]'s [display_name] explodes violently!</span>", \
|
||||
"<span class='danger'>Your [display_name] explodes violently!</span>", \
|
||||
"<span class='danger'>You hear an explosion followed by a scream!</span>")
|
||||
explosion(get_turf(owner), -1, -1, 2, 3)
|
||||
explosion(get_turf(owner), -1, -1, 2, 3, whodunnit = owner)
|
||||
spark(src, 5, FALSE)
|
||||
|
||||
if(organ)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
if(exploding && !exploded)
|
||||
message_admins("AME explosion at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>) - Last touched by [fingerprintslast]",0,1)
|
||||
exploded=1
|
||||
explosion(get_turf(src),8,10,12,15)
|
||||
explosion(get_turf(src),8,10,12,15, whodunnit = get_mob_by_key(fingerprintslast))
|
||||
if(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
message_admins("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
|
||||
|
||||
charge = 0
|
||||
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range, whodunnit = get_mob_by_key(fingerprintslast))
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ var/global/list/obj/machinery/light/alllights = list()
|
||||
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
|
||||
explode()
|
||||
explode(get_mob_by_key(fingerprintslast))
|
||||
else if( prob( min(60, current_bulb.switchcount*current_bulb.switchcount*0.01) ) )
|
||||
if(current_bulb.status == LIGHT_OK && trigger)
|
||||
current_bulb.status = LIGHT_BURNED
|
||||
@@ -342,7 +342,7 @@ var/global/list/obj/machinery/light/alllights = list()
|
||||
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
|
||||
explode()
|
||||
explode(get_mob_by_key(fingerprintslast))
|
||||
else
|
||||
to_chat(user, "This type of light requires a [fitting].")
|
||||
return
|
||||
@@ -583,11 +583,11 @@ var/global/list/obj/machinery/light/alllights = list()
|
||||
/*
|
||||
* Explode the light.
|
||||
*/
|
||||
/obj/machinery/light/proc/explode()
|
||||
/obj/machinery/light/proc/explode(var/mob/user)
|
||||
spawn(0)
|
||||
broken() // Break it first to give a warning.
|
||||
sleep(2)
|
||||
explosion(get_turf(src), 0, 0, 2, 2)
|
||||
explosion(get_turf(src), 0, 0, 2, 2, whodunnit = user)
|
||||
sleep(1)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
return
|
||||
|
||||
/obj/item/projectile/missile/proc/explode()
|
||||
explosion(src.loc, 1, 1, 2, 7, 0)
|
||||
explosion(src.loc, 1, 1, 2, 7, 0, whodunnit = firer)
|
||||
playsound(src.loc, "explosion", 50, 1)
|
||||
del(src)
|
||||
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
return 0
|
||||
if(prob(max(0, fire_delay/2-5)))
|
||||
var/turf/T = get_turf(loc)
|
||||
explosion(T, 0, 1, 3, 5)
|
||||
explosion(T, 0, 1, 3, 5, whodunnit = M)
|
||||
M.drop_item(src, force_drop = 1)
|
||||
qdel(src)
|
||||
to_chat(M, "<span class='danger'>\The [src] explodes!.</span>")
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
to_chat(user, "<span class='danger'>\The [src]'s firing mechanism fails!</span>")
|
||||
loaded_item.forceMove(user.loc)
|
||||
loaded_item = null
|
||||
explosion(user, -1, 0, 2)
|
||||
explosion(user, -1, 0, 2, whodunnit = user)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -388,9 +388,9 @@
|
||||
admin_warn(user)
|
||||
add_fingerprint(user)
|
||||
update_icon()
|
||||
fuse_burn()
|
||||
fuse_burn(user)
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/proc/fuse_burn()
|
||||
/obj/item/cannonball/fuse_bomb/proc/fuse_burn(var/mob/user)
|
||||
set waitfor = 0
|
||||
|
||||
if(src && src.fuse_lit)
|
||||
@@ -398,9 +398,9 @@
|
||||
sleep(10)
|
||||
src.seconds_left--
|
||||
src.update_icon()
|
||||
.()
|
||||
.(user)
|
||||
else
|
||||
src.detonation()
|
||||
src.detonation(user)
|
||||
return
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/extinguish()
|
||||
@@ -408,12 +408,12 @@
|
||||
fuse_lit = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/proc/detonation()
|
||||
explosion(get_turf(src), -1, 0, 4) //buff range to compensate for this somehow breaching
|
||||
/obj/item/cannonball/fuse_bomb/proc/detonation(var/mob/user)
|
||||
explosion(get_turf(src), -1, 0, 4, whodunnit = user) //buff range to compensate for this somehow breaching
|
||||
qdel(src)
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/admin/detonation() //okay, this one can breach if it wants
|
||||
explosion(get_turf(src), -1, 1, 3)
|
||||
/obj/item/cannonball/fuse_bomb/admin/detonation(var/mob/user) //okay, this one can breach if it wants
|
||||
explosion(get_turf(src), -1, 1, 3, whodunnit = user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/update_icon()
|
||||
@@ -459,8 +459,8 @@
|
||||
bombers += log_str
|
||||
log_game(log_str)
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/ex_act(severity)//MWAHAHAHA
|
||||
detonation()
|
||||
/obj/item/cannonball/fuse_bomb/ex_act(severity, var/child = null, var/mob/whodunnit)//MWAHAHAHA
|
||||
detonation(whodunnit)
|
||||
|
||||
/obj/item/cannonball/fuse_bomb/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)//consistency
|
||||
..()
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
else //Needed to get that shitty default suicide_act out of the way
|
||||
user.visible_message("<span class='danger'>[user] fiddles with \the [src]'s safeties and suddenly aims it at \his feet! It looks like \he's trying to commit suicide.</span>")
|
||||
sleep(1 SECONDS) //RUN YOU IDIOT, RUN
|
||||
explosion(src.loc, -1, 1, 4, 8)
|
||||
explosion(src.loc, -1, 1, 4, 8, whodunnit = user)
|
||||
if(src) //Is the rocket launcher somehow still here ?
|
||||
qdel(src) //This never happened
|
||||
return SUICIDE_ACT_BRUTELOSS
|
||||
@@ -152,7 +152,7 @@
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] fiddles with \the [src]'s safeties and suddenly aims it at \his feet! It looks like \he's trying to commit suicide.</span>")
|
||||
sleep(1 SECONDS) //RUN YOU IDIOT, RUN
|
||||
explosion(src.loc, 1, 3, 5, 8) //Using the actual rocket damage, instead of the very old, super nerfed value
|
||||
explosion(src.loc, 1, 3, 5, 8, whodunnit = user) //Using the actual rocket damage, instead of the very old, super nerfed value
|
||||
return SUICIDE_ACT_BRUTELOSS
|
||||
|
||||
/obj/item/weapon/gun/projectile/rocketlauncher/nikita/attackby(var/obj/item/A as obj, mob/user as mob)
|
||||
|
||||
@@ -216,7 +216,7 @@ obj/item/projectile/bullet/suffocationbullet
|
||||
|
||||
/obj/item/projectile/bullet/burstbullet/on_hit(var/atom/target, var/blocked = 0)
|
||||
..()
|
||||
explosion(target, 0,1,1,5)
|
||||
explosion(target, 0,1,1,5, whodunnit = firer)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/bullet/boombullet
|
||||
@@ -388,7 +388,7 @@ obj/item/projectile/bullet/suffocationbullet
|
||||
var/heavy_impact_range = 0.5
|
||||
var/light_impact_range = 1
|
||||
var/flash_range = light_impact_range
|
||||
explosion(target.loc, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
explosion(target.loc, devastation_range, heavy_impact_range, light_impact_range, flash_range, whodunnit = firer)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/bullet/osipr
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
var/A_turf = get_turf(A)
|
||||
..()
|
||||
if(special_collision == PROJECTILE_COLLISION_DEFAULT || special_collision == PROJECTILE_COLLISION_BLOCKED)
|
||||
explosion(A_turf, exdev, exheavy, exlight, exflash)
|
||||
explosion(A_turf, exdev, exheavy, exlight, exflash, whodunnit = firer)
|
||||
if(!gcDestroyed)
|
||||
qdel(src)
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/rocket/nikita/proc/detonate(var/atom/A)
|
||||
explosion(A, exdev, exheavy, exlight, exflash)
|
||||
explosion(A, exdev, exheavy, exlight, exflash, whodunnit = firer)
|
||||
if(!gcDestroyed)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
msg_admin_attack("[key_name(Proj.firer)] shot [src]/([formatJumpTo(src)]) with a [Proj.type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[Proj.firer.x];Y=[Proj.firer.y];Z=[Proj.firer.z]'>JMP</a>)") //BS12 EDIT ALG
|
||||
else
|
||||
msg_admin_attack("[src] was shot by a [Proj.type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)") //BS12 EDIT ALG
|
||||
explode()
|
||||
explode(Proj.firer)
|
||||
return ..()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/suicide_act(var/mob/living/user)
|
||||
@@ -227,15 +227,15 @@
|
||||
if(car.occupant && istype(car.occupant, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = car.occupant
|
||||
H.audible_scream("fueltank_crash")
|
||||
explode()
|
||||
explode(car.occupant)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/proc/explode()
|
||||
/obj/structure/reagent_dispensers/fueltank/proc/explode(var/mob/user)
|
||||
if (reagents.total_volume > 500)
|
||||
explosion(src.loc,1,2,4)
|
||||
explosion(src.loc,1,2,4, whodunnit = user)
|
||||
else if (reagents.total_volume > 100)
|
||||
explosion(src.loc,0,1,3)
|
||||
explosion(src.loc,0,1,3, whodunnit = user)
|
||||
else
|
||||
explosion(src.loc,-1,1,2)
|
||||
explosion(src.loc,-1,1,2, whodunnit = user)
|
||||
if(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
if(prob(Proj.damage/2))
|
||||
if(Proj.firer)
|
||||
msg_admin_attack("[key_name(Proj.firer)] blew up [src]/([formatJumpTo(src)]) with a [Proj.type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[Proj.firer.x];Y=[Proj.firer.y];Z=[Proj.firer.z]'>JMP</a>)")
|
||||
explosion(get_turf(src), 1, 2, 3, 3)
|
||||
explosion(get_turf(src), 1, 2, 3, 3, whodunnit = Proj.firer)
|
||||
src.investigation_log(I_ARTIFACT, "|| blew up after taking damage from || [Proj.type] || fired by [Proj.firer ? "[key_name(Proj.firer)]" : "something"].")
|
||||
qdel(src)
|
||||
return ..()
|
||||
@@ -115,7 +115,7 @@
|
||||
src.visible_message("<span class='warning'>\The [user] damages \the [src] with \the [O].</span>")
|
||||
if(prob(O.force/2))
|
||||
msg_admin_attack("[user] blew up [src]/([formatJumpTo(src)]) with [O] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
explosion(get_turf(src), 1, 2, 3, 3)
|
||||
explosion(get_turf(src), 1, 2, 3, 3, whodunnit = user)
|
||||
src.investigation_log(I_ARTIFACT, "|| blew up after taking damage from || [O] || attacked by [key_name(user)].")
|
||||
qdel(src)
|
||||
else
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
if(prob(Proj.damage/2))
|
||||
if(Proj.firer)
|
||||
msg_admin_attack("[key_name(Proj.firer)] blew up [src]/([formatJumpTo(src)]) with a [Proj.type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[Proj.firer.x];Y=[Proj.firer.y];Z=[Proj.firer.z]'>JMP</a>)")
|
||||
explosion(get_turf(src), -1, 2, 3, 3)
|
||||
explosion(get_turf(src), -1, 2, 3, 3, whodunnit = Proj.firer)
|
||||
src.investigation_log(I_ARTIFACT, "|| blew up after taking damage from || [Proj.type] || fired by [Proj.firer ? "[key_name(Proj.firer)]" : "something"].")
|
||||
qdel(src)
|
||||
return ..()
|
||||
@@ -158,7 +158,7 @@
|
||||
if(prob(O.force/2))
|
||||
msg_admin_attack("[user] blew up [src]/([formatJumpTo(src)]) with [O] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
src.investigation_log(I_ARTIFACT, "|| blew up after taking damage from || [O] || attacked by [key_name(user)].")
|
||||
explosion(get_turf(src), -1, 2, 3, 3)
|
||||
explosion(get_turf(src), -1, 2, 3, 3, whodunnit = user)
|
||||
qdel(src)
|
||||
else
|
||||
src.visible_message("<span class='warning'>\The [user] taps \the [src] with \the [O].</span>")
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
/spell/targeted/projectile/dumbfire/fireball/prox_cast(var/list/targets, spell_holder)
|
||||
for(var/mob/living/M in targets)
|
||||
apply_spell_damage(M)
|
||||
explosion(get_turf(spell_holder), ex_severe, ex_heavy, ex_light, ex_flash)
|
||||
explosion(get_turf(spell_holder), ex_severe, ex_heavy, ex_light, ex_flash, whodunnit = spell_holder)
|
||||
return targets
|
||||
|
||||
/spell/targeted/projectile/dumbfire/fireball/choose_prox_targets(mob/user = usr, var/atom/movable/spell_holder)
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
radio_connection = null
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/supermatter/proc/explode()
|
||||
/obj/machinery/power/supermatter/proc/explode(var/mob/user)
|
||||
has_exploded++
|
||||
var/turf/T = get_turf(src)
|
||||
if (has_exploded <= 1)
|
||||
@@ -131,7 +131,7 @@
|
||||
var/turf/turff = get_turf(src)
|
||||
new /turf/unsimulated/wall/supermatter(turff)
|
||||
SetUniversalState(/datum/universal_state/supermatter_cascade)
|
||||
explosion(turff, explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
|
||||
explosion(turff, explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1, whodunnit = user)
|
||||
empulse(turff, 100, 200, 1)
|
||||
else if (has_exploded == 2)// yeah not gonna report it more than once to not flood the logs if it glitches badly
|
||||
log_admin("[name] at [T.loc] has tried exploding despite having already exploded once. Looks like it wasn't properly deleted (gcDestroyed = [gcDestroyed]).")
|
||||
@@ -141,11 +141,11 @@
|
||||
if (has_exploded > 1)
|
||||
stack_trace("[name] at [T.loc] has tried exploding despite having already exploded once. Looks like it wasn't properly deleted (gcDestroyed = [gcDestroyed]).")
|
||||
|
||||
/obj/machinery/power/supermatter/shard/explode()
|
||||
/obj/machinery/power/supermatter/shard/explode(var/mob/user)
|
||||
has_exploded++
|
||||
var/turf/T = get_turf(src)
|
||||
if (has_exploded <= 1)
|
||||
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
|
||||
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1, whodunnit = user)
|
||||
empulse(get_turf(src), 100, 200, 1)
|
||||
else if (has_exploded == 2)// yeah not gonna report it more than once to not flood the logs if it glitches badly
|
||||
log_admin("[name] at [T.loc] has tried exploding despite having already exploded once. Looks like it wasn't properly deleted (gcDestroyed = [gcDestroyed]).")
|
||||
@@ -158,12 +158,12 @@
|
||||
Consume(AM)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/power/supermatter/ex_act(severity)
|
||||
/obj/machinery/power/supermatter/ex_act(severity,var/mob/whodunnit)
|
||||
switch(severity)
|
||||
if(3.0)
|
||||
return //Should be improved
|
||||
else
|
||||
return explode()
|
||||
return explode(whodunnit)
|
||||
|
||||
/obj/machinery/power/supermatter/shard/singularity_act(current_size, obj/machinery/singularity/S)
|
||||
var/super = FALSE
|
||||
|
||||
Reference in New Issue
Block a user