Merge remote-tracking branch 'origin/master' into what-should-i-name-this-branch

This commit is contained in:
LetterN
2021-11-21 10:34:14 +08:00
213 changed files with 86534 additions and 1331 deletions
+1
View File
@@ -17,6 +17,7 @@ GLOBAL_LIST_EMPTY(all_clockwork_mobs) //All clockwork SERVANTS (not creatures) i
GLOBAL_VAR_INIT(ratvar_approaches, 0) //The servants can choose to "herald" Ratvar, permanently buffing them but announcing their presence to the crew.
GLOBAL_VAR_INIT(ratvar_awakens, 0) //If Ratvar has been summoned; not a boolean, for proper handling of multiple Ratvars
GLOBAL_VAR_INIT(ark_of_the_clockwork_justiciar, FALSE) //The Ark on the Reebe z-level
GLOBAL_VAR_INIT(reebe_loaded, FALSE) //Is reebe loaded right now? If two seperate things in one round try loading reebe.
GLOBAL_VAR_INIT(clockwork_gateway_activated, FALSE) //if a gateway to the celestial derelict has ever been successfully activated
GLOBAL_VAR_INIT(script_scripture_unlocked, FALSE) //If script scripture is available, through converting at least one crewmember
+1 -1
View File
@@ -20,7 +20,7 @@
minimum_pressure = HAZARD_LOW_PRESSURE + 10
maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
minimum_temp = 270
minimum_temp = 281
maximum_temp = 320
/datum/atmosphere/lavaland/check_for_sanity(datum/gas_mixture/mix)
+9 -5
View File
@@ -52,12 +52,16 @@
return
/**
* Properly removes the component from `parent` and cleans up references
* Setting `force` makes it not check for and remove the component from the parent
* Setting `silent` deletes the component without sending a `COMSIG_COMPONENT_REMOVING` signal
*/
* Properly removes the component from `parent` and cleans up references
*
* Arguments:
* * force - makes it not check for and remove the component from the parent
* * silent - deletes the component without sending a [COMSIG_COMPONENT_REMOVING] signal
*/
/datum/component/Destroy(force=FALSE, silent=FALSE)
if(!force && parent)
if(!parent)
return ..()
if(!force)
_RemoveFromParent()
if(!silent)
SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src)
+4 -2
View File
@@ -38,9 +38,11 @@
/datum/component/acid/Destroy()
STOP_PROCESSING(SSprocessing, src)
var/obj/O = parent
level = 0
O.update_overlays()
if(parent) // So, this is how you get runtimes fellas.
UnregisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_ATOM_ATTACK_HAND)) // Don't worry about isitem checks, we don't need them.
var/atom/O = parent
O.update_icon(UPDATE_OVERLAYS)
return ..()
/datum/component/acid/process()
+1 -1
View File
@@ -327,7 +327,7 @@
/atom/movable/fov_holder/has_gravity(turf/T)
return FALSE
/atom/movable/fov_holder/ex_act(severity)
/atom/movable/fov_holder/ex_act(severity, target, origin)
return FALSE
/atom/movable/fov_holder/singularity_act()
+1 -1
View File
@@ -253,7 +253,7 @@ GLOBAL_LIST_EMPTY(explosions)
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)
T.ex_act(dist, origin = src)
exploded_this_tick += T
//--- THROW ITEMS AROUND ---
+9 -5
View File
@@ -596,9 +596,13 @@
//SHOULD_CALL_PARENT(TRUE)
return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON_STATE)
/// Updates the overlays of the atom
/**
* Builds a list of overlays for the atom, this will not apply them.
* If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)],
* This proc is intended to be overridden.
*/
/atom/proc/update_overlays()
//SHOULD_CALL_PARENT(TRUE)
SHOULD_CALL_PARENT(TRUE)
. = list()
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .)
@@ -610,12 +614,12 @@
user.buckle_message_cooldown = world.time + 50
to_chat(user, "<span class='warning'>You can't move while buckled to [src]!</span>")
/atom/proc/contents_explosion(severity, target)
/atom/proc/contents_explosion(severity, target, origin)
return //For handling the effects of explosions on contents that would not normally be effected
/atom/proc/ex_act(severity, target, datum/explosion/E)
/atom/proc/ex_act(severity, target, origin)
set waitfor = FALSE
contents_explosion(severity, target)
contents_explosion(severity, target, origin)
SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
/**
+1 -7
View File
@@ -151,14 +151,8 @@ Credit where due:
var/datum/team/clockcult/main_clockcult
/datum/game_mode/clockwork_cult/pre_setup() //Gamemode and job code is pain. Have fun codediving all of that stuff, whoever works on this next - Delta
var/list/errorList = list()
var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
if(errorList.len) // reebe failed to load
message_admins("Reebe failed to load!")
log_game("Reebe failed to load!")
if(!load_reebe())
return FALSE
for(var/datum/parsed_map/PM in reebes) //Temporarily commented because of z-level loading reliably segfaulting the server.
PM.initTemplateBounds()
if(CONFIG_GET(flag/protect_roles_from_antagonist))
restricted_jobs += protected_jobs
if(CONFIG_GET(flag/protect_assistant_from_antagonist))
+1
View File
@@ -653,6 +653,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
if (drafted_rules.len > 0)
pick_midround_rule(drafted_rules)
else if (random_event_hijacked == HIJACKED_TOO_SOON)
message_admins("DYNAMIC: Midround injection failed when random event was hijacked. Spawning another random event in its place.")
log_game("DYNAMIC: Midround injection failed when random event was hijacked. Spawning another random event in its place.")
// A random event antag would have rolled had this injection check passed.
+2 -2
View File
@@ -58,9 +58,9 @@
storedpda.forceMove(loc)
storedpda = null
/obj/machinery/pdapainter/contents_explosion(severity, target)
/obj/machinery/pdapainter/contents_explosion(severity, target, origin)
if(storedpda)
storedpda.ex_act(severity, target)
storedpda.ex_act(severity, target, origin)
/obj/machinery/pdapainter/handle_atom_del(atom/A)
if(A == storedpda)
+2 -2
View File
@@ -438,9 +438,9 @@ Class Procs:
update_appearance()
return TRUE
/obj/machinery/contents_explosion(severity, target)
/obj/machinery/contents_explosion(severity, target, origin)
if(occupant)
occupant.ex_act(severity, target)
occupant.ex_act(severity, target, origin)
/obj/machinery/handle_atom_del(atom/A)
if(A == occupant)
+2 -2
View File
@@ -55,9 +55,9 @@
storedpart.forceMove(loc)
storedpart = null
/obj/machinery/aug_manipulator/contents_explosion(severity, target)
/obj/machinery/aug_manipulator/contents_explosion(severity, target, origin)
if(storedpart)
storedpart.ex_act(severity, target)
storedpart.ex_act(severity, target, origin)
/obj/machinery/aug_manipulator/handle_atom_del(atom/A)
if(A == storedpart)
+1 -1
View File
@@ -125,7 +125,7 @@
M.reset_perspective(null)
to_chat(M, "The screen bursts into static.")
/obj/machinery/camera/ex_act(severity, target)
/obj/machinery/camera/ex_act(severity, target, origin)
if(invuln)
return
..()
+1 -1
View File
@@ -439,7 +439,7 @@
mob_occupant.copy_from_prefs_vr()
go_out()
/obj/machinery/clonepod/ex_act(severity, target)
/obj/machinery/clonepod/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
go_out()
@@ -258,8 +258,8 @@
//heccing chonker passive, only gives more HP at the start of a new game but has one of the hardest weakpoint to trigger.
if(LAZYACCESS(enemy_passive, "chonker"))
if(weakpoint_check("chonker","power_attack","power_attack","power_attack"))
list_temp += "<br><center><h3>After a lot of power attacks you manage to tip over [enemy_name] as they fall over their enormous weight<center><h3> "
if(weakpoint_check("chonker","attack","attack","power_attack"))
list_temp += "<br><center><h3>After attacking twice, your power attack manages to tip over [enemy_name] as they fall over their enormous weight<center><h3> "
enemy_hp -= 30
//smart passive trait, mainly works in tandem with other traits, makes the enemy unable to be counter_attacked
@@ -302,7 +302,7 @@
else if(!enemy_stance)
var/added_temp
if(rand())
if(prob(80))
added_temp = "you for [attack_amount + 5] damage!"
player_hp -= attack_amount + 5
enemy_stance = "attack"
@@ -451,7 +451,7 @@
msg += "\t<span class='info'>shotgun -> defend, defend, power attack</span>"
msg += "\t<span class='info'>short temper -> counter, counter, counter</span>"
msg += "\t<span class='info'>poisonous -> light attack, light attack, light attack</span>"
msg += "\t<span class='info'>chonker -> power attack, power attack, power attack</span>"
msg += "\t<span class='info'>chonker -> light attack, light attack, power attack</span>"
return msg
/obj/machinery/computer/arcade/battle/emag_act(mob/user)
+1 -1
View File
@@ -407,7 +407,7 @@
if(!stat) //Opens only powered doors.
open() //Open everything!
/obj/machinery/door/ex_act(severity, target)
/obj/machinery/door/ex_act(severity, target, origin)
//if it blows up a wall it should blow up a door
..(severity ? max(1, severity - 1) : 0, target)
+1 -1
View File
@@ -69,7 +69,7 @@
/obj/machinery/door/password/emp_act(severity)
return
/obj/machinery/door/password/ex_act(severity, target)
/obj/machinery/door/password/ex_act(severity, target, origin)
return
/obj/machinery/door/password/wave_ex_act(power, datum/wave_explosion/explosion, dir)
+1 -1
View File
@@ -68,7 +68,7 @@
return ..()
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
/obj/machinery/door/poddoor/ex_act(severity, target)
/obj/machinery/door/poddoor/ex_act(severity, target, origin)
if(severity == 3)
return
..()
+1 -1
View File
@@ -270,7 +270,7 @@
var/range_light = 17
var/range_flame = 17
/obj/item/bombcore/ex_act(severity, target) // Little boom can chain a big boom.
/obj/item/bombcore/ex_act(severity, target, origin) // Little boom can chain a big boom.
detonate()
@@ -84,6 +84,8 @@
icon = 'icons/obj/clockwork_objects.dmi'
hide = TRUE
autolinkers = list("h_relay")
flags_1 = DEFAULT_RICOCHET_1 | NODECONSTRUCT_1
resistance_flags = INDESTRUCTIBLE
//Generic preset relay
/obj/machinery/telecomms/relay/preset/auto
+5 -5
View File
@@ -111,23 +111,23 @@
mecha_log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).", color="red")
. = ..()
/obj/mecha/ex_act(severity, target)
/obj/mecha/ex_act(severity, target, origin)
mecha_log_message("Affected by explosion of severity: [severity].", color="red")
if(prob(deflect_chance))
severity++
log_append_to_last("Armor saved, changing severity to [severity].")
. = ..()
/obj/mecha/contents_explosion(severity, target)
/obj/mecha/contents_explosion(severity, target, origin)
severity++
for(var/X in equipment)
var/obj/item/mecha_parts/mecha_equipment/ME = X
ME.ex_act(severity,target)
ME.ex_act(severity, target, origin)
for(var/Y in trackers)
var/obj/item/mecha_parts/mecha_tracking/MT = Y
MT.ex_act(severity, target)
MT.ex_act(severity, target, origin)
if(occupant)
occupant.ex_act(severity,target)
occupant.ex_act(severity, target, origin)
/obj/mecha/handle_atom_del(atom/A)
if(A == occupant)
+1 -1
View File
@@ -144,7 +144,7 @@
return
/obj/mecha/working/ripley/contents_explosion(severity, target)
/obj/mecha/working/ripley/contents_explosion(severity, target, origin)
for(var/X in cargo)
var/obj/O = X
if(prob(30/severity))
+1 -1
View File
@@ -69,7 +69,7 @@
/obj/effect/anomaly/proc/detonate()
return
/obj/effect/anomaly/ex_act(severity, target)
/obj/effect/anomaly/ex_act(severity, target, origin)
if(severity == 1)
qdel(src)
+1 -1
View File
@@ -60,7 +60,7 @@
STOP_PROCESSING(SSfastprocess, src)
. = ..()
/obj/effect/countdown/ex_act(severity, target) //immune to explosions
/obj/effect/countdown/ex_act(severity, target, origin) //immune to explosions
return
/obj/effect/countdown/syndicatebomb
@@ -77,10 +77,10 @@
else
return ..()
/obj/effect/decal/cleanable/ex_act()
/obj/effect/decal/cleanable/ex_act(severity, target, origin)
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
R.on_ex_act()
R.on_ex_act(severity)
..()
/obj/effect/decal/cleanable/fire_act(exposed_temperature, exposed_volume)
@@ -36,7 +36,7 @@
. = ..()
return /obj/effect/decal/cleanable/blood/gibs/old
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target, origin)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
@@ -47,7 +47,7 @@
. = ..()
setDir(pick(GLOB.cardinals))
/obj/effect/decal/cleanable/glass/ex_act()
/obj/effect/decal/cleanable/glass/ex_act(severity, target, origin)
qdel(src)
/obj/effect/decal/cleanable/glass/wave_ex_act(power, datum/wave_explosion/explosion, dir)
@@ -32,7 +32,7 @@
if (!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/robot_debris/ex_act()
/obj/effect/decal/cleanable/robot_debris/ex_act(severity, target, origin)
return
/obj/effect/decal/cleanable/robot_debris/limb
+1 -1
View File
@@ -17,7 +17,7 @@
/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T)
return isclosedturf(T) || isgroundlessturf(T)
/obj/effect/decal/ex_act(severity, target)
/obj/effect/decal/ex_act(severity, target, origin)
qdel(src)
/obj/effect/decal/fire_act(exposed_temperature, exposed_volume)
+2 -2
View File
@@ -30,7 +30,7 @@
/obj/effect/experience_pressure_difference()
return
/obj/effect/ex_act(severity, target)
/obj/effect/ex_act(severity, target, origin)
if(target == src)
qdel(src)
else
@@ -51,7 +51,7 @@
/obj/effect/ConveyorMove()
return
/obj/effect/abstract/ex_act(severity, target)
/obj/effect/abstract/ex_act(severity, target, origin)
return
/obj/effect/abstract/singularity_pull()
+1 -1
View File
@@ -11,7 +11,7 @@
return
// Please stop bombing the Observer-Start landmark.
/obj/effect/landmark/ex_act()
/obj/effect/landmark/ex_act(severity, target, origin)
return
/obj/effect/landmark/singularity_pull()
@@ -25,7 +25,7 @@
/obj/effect/temp_visual/singularity_pull()
return
/obj/effect/temp_visual/ex_act()
/obj/effect/temp_visual/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/dir_setting
+1 -1
View File
@@ -95,7 +95,7 @@
/obj/item/wallframe/apc/try_build(turf/on_wall, user)
if(!..())
return
var/turf/T = get_turf(on_wall) //the user is not where it needs to be.
var/turf/T = get_turf(user)
var/area/A = get_area(T)
if(A.get_apc())
to_chat(user, "<span class='warning'>This area already has an APC!</span>")
+1 -1
View File
@@ -266,7 +266,7 @@
/obj/effect/chrono_field/singularity_pull()
return
/obj/effect/chrono_field/ex_act()
/obj/effect/chrono_field/ex_act(severity, target, origin)
return
/obj/effect/chrono_field/blob_act(obj/structure/blob/B)
+2
View File
@@ -763,6 +763,8 @@
if(isobj(target))
if(actually_paints)
if(istype(target, /obj/item/canvas)) //dont color our canvas neon green when im trying to paint please
return
var/list/hsl = rgb2hsl(hex2num(copytext(paint_color,2,4)),hex2num(copytext(paint_color,4,6)),hex2num(copytext(paint_color,6,8)))
var/static/whitelisted = typecacheof(list(/obj/structure/window,
/obj/effect/decal/cleanable/crayon,
@@ -144,8 +144,8 @@
/obj/effect/dummy/chameleon/attack_alien()
master.disrupt()
/obj/effect/dummy/chameleon/ex_act(S, T)
contents_explosion(S, T)
/obj/effect/dummy/chameleon/ex_act(severity, target, origin)
contents_explosion(severity, target, origin)
master.disrupt()
/obj/effect/dummy/chameleon/bullet_act()
@@ -14,7 +14,7 @@
attack_verb = list("blown up", "exploded", "detonated")
custom_materials = list(/datum/material/iron=50, /datum/material/glass=30)
/obj/item/doorCharge/ex_act(severity, target)
/obj/item/doorCharge/ex_act(severity, target, origin)
switch(severity)
if(EXPLODE_DEVASTATE)
visible_message("<span class='warning'>[src] detonates!</span>")
@@ -27,7 +27,7 @@
QDEL_NULL(beaker)
return ..()
/obj/item/storage/portable_chem_mixer/ex_act(severity, target)
/obj/item/storage/portable_chem_mixer/ex_act(severity, target, origin)
if(severity < 3)
..()
+1 -1
View File
@@ -31,7 +31,7 @@
user.update_inv_hands()
loc.assume_air(air_contents)
/obj/item/latexballon/ex_act(severity, target)
/obj/item/latexballon/ex_act(severity, target, origin)
burst()
switch(severity)
if (1)
+1 -1
View File
@@ -557,7 +557,7 @@
..()
balanced = 0
/obj/item/melee/supermatter_sword/ex_act(severity, target)
/obj/item/melee/supermatter_sword/ex_act(severity, target, origin)
visible_message("<span class='danger'>The blast wave smacks into [src] and rapidly flashes to ash.</span>",\
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
consume_everything()
+1 -1
View File
@@ -54,7 +54,7 @@
/obj/machinery/door/keycard/emp_act(severity)
return
/obj/machinery/door/keycard/ex_act(severity, target)
/obj/machinery/door/keycard/ex_act(severity, target, origin)
return
/obj/machinery/door/keycard/try_to_activate_door(mob/user)
+2 -2
View File
@@ -18,10 +18,10 @@
/obj/item/storage/AllowDrop()
return TRUE
/obj/item/storage/contents_explosion(severity, target)
/obj/item/storage/contents_explosion(severity, target, origin)
var/in_storage = istype(loc, /obj/item/storage)? (max(0, severity - 1)) : (severity)
for(var/atom/A in contents)
A.ex_act(in_storage, target)
A.ex_act(in_storage, target, origin)
CHECK_TICK
//Cyberboss says: "USE THIS TO FILL IT, NOT INITIALIZE OR NEW"
+1 -1
View File
@@ -56,7 +56,7 @@
throwdamage = 0
take_damage(throwdamage, BRUTE, "melee", 1, get_dir(src, AM))
/obj/ex_act(severity, target)
/obj/ex_act(severity, target, origin)
if(resistance_flags & INDESTRUCTIBLE)
return
..() //contents explosion
@@ -554,9 +554,9 @@
if(!QDELETED(lockerelectronics))
lockerelectronics.accesses = req_access
/obj/structure/closet/contents_explosion(severity, target)
/obj/structure/closet/contents_explosion(severity, target, origin)
for(var/atom/A in contents)
A.ex_act(severity, target)
A.ex_act(severity, target, origin)
CHECK_TICK
/obj/structure/closet/singularity_act()
@@ -21,7 +21,7 @@
if(.) //if we actually closed the locker
recursive_organ_check(src)
/obj/structure/closet/secure_closet/freezer/ex_act()
/obj/structure/closet/secure_closet/freezer/ex_act(severity, target, origin)
if(!jones)
jones = TRUE
else
+2 -2
View File
@@ -32,9 +32,9 @@
stored_extinguisher = null
return ..()
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target)
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target, origin)
if(stored_extinguisher)
stored_extinguisher.ex_act(severity, target)
stored_extinguisher.ex_act(severity, target, origin)
/obj/structure/extinguisher_cabinet/handle_atom_del(atom/A)
if(A == stored_extinguisher)
+8 -1
View File
@@ -1,4 +1,4 @@
#define LOG_BURN_TIMER 150
#define LOG_BURN_TIMER 400
#define PAPER_BURN_TIMER 5
#define MAXIMUM_BURN_TIMER 3000
@@ -12,6 +12,7 @@
pixel_x = -16
resistance_flags = FIRE_PROOF
var/lit = FALSE
light_color = "#E38C2D"
var/fuel_added = 0
var/flame_expiry_timer
@@ -64,6 +65,12 @@
</span>")
adjust_fuel_timer(PAPER_BURN_TIMER)
qdel(T)
else if(istype(T,/obj/item/grown/log))
user.visible_message("<span class='notice'>[user] tosses some \
wood into [src].</span>", "<span class='notice'>You add \
some fuel to [src].</span>")
adjust_fuel_timer(LOG_BURN_TIMER)
qdel(T)
else if(try_light(T,user))
return
else
+10
View File
@@ -40,6 +40,16 @@
density = FALSE
pixel_x = -16
/obj/structure/flora/stump/attackby(obj/item/W, mob/user, params)
if((W.tool_behaviour == TOOL_SHOVEL) && params)
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
if(do_after(user, 20))
new /obj/item/grown/log/tree(get_turf(src))
user.visible_message("[user] digs up [src].", "<span class='notice'>You dig up [src].</span>")
qdel(src)
else
return ..()
/obj/structure/flora/tree/pine
name = "pine tree"
desc = "A coniferous pine tree."
+2 -2
View File
@@ -91,9 +91,9 @@
/obj/structure/guncase/handle_atom_del(atom/A)
update_icon()
/obj/structure/guncase/contents_explosion(severity, target)
/obj/structure/guncase/contents_explosion(severity, target, origin)
for(var/atom/A in contents)
A.ex_act(severity++, target)
A.ex_act(severity++, target, origin)
CHECK_TICK
/obj/structure/guncase/shotgun
@@ -9,6 +9,7 @@
icon_state = "randompile"
density = FALSE
anchored = TRUE
max_integrity = 100
var/loot_amount = 5
var/delete_on_depletion = FALSE
var/can_use_hands = TRUE
+1 -1
View File
@@ -249,7 +249,7 @@
P.setAngle(rotation_angle)
return ..()
/obj/structure/reflector/ex_act()
/obj/structure/reflector/ex_act(severity, target, origin)
if(admin)
return
else
+1 -1
View File
@@ -84,7 +84,7 @@ FLOOR SAFES
/obj/structure/safe/blob_act(obj/structure/blob/B)
return
/obj/structure/safe/ex_act(severity, target)
/obj/structure/safe/ex_act(severity, target, origin)
if(((severity == 2 && target == src) || severity == 1) && explosion_count < BROKEN_THRESHOLD)
explosion_count++
switch(explosion_count)
@@ -50,14 +50,14 @@
empty_pod(location)
qdel(src)
/obj/structure/transit_tube_pod/ex_act(severity, target)
/obj/structure/transit_tube_pod/ex_act(severity, target, origin)
..()
if(!QDELETED(src))
empty_pod()
/obj/structure/transit_tube_pod/contents_explosion(severity, target)
/obj/structure/transit_tube_pod/contents_explosion(severity, target, origin)
for(var/atom/movable/AM in contents)
AM.ex_act(severity, target)
AM.ex_act(severity, target, origin)
/obj/structure/transit_tube_pod/singularity_pull(S, current_size)
..()
+1
View File
@@ -70,6 +70,7 @@
icon_state = "wood"
baseturfs = /turf/closed/indestructible/wood
smooth = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood, /turf/closed/indestructible/wood)
/turf/closed/indestructible/oldshuttle/corner
icon_state = "corner"
+1 -1
View File
@@ -72,7 +72,7 @@
if(mapload && prob(66)) // 2/3 instead of 1/3 (default)
MakeDirty()
/turf/open/floor/ex_act(severity, target)
/turf/open/floor/ex_act(severity, target, origin)
var/shielded = is_shielded()
..()
if(severity != 1 && shielded && target != src)
+1 -1
View File
@@ -195,7 +195,7 @@
return TRUE
return FALSE
/turf/open/floor/plating/foam/ex_act()
/turf/open/floor/plating/foam/ex_act(severity, target, origin)
..()
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
@@ -89,7 +89,7 @@
for(var/obj/item/stack/ore/O in src)
SEND_SIGNAL(W, COMSIG_PARENT_ATTACKBY, O)
/turf/open/floor/plating/asteroid/ex_act(severity, target)
/turf/open/floor/plating/asteroid/ex_act(severity, target, origin)
. = SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
contents_explosion(severity, target)
@@ -120,7 +120,7 @@
/turf/open/floor/plating/beach/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
return
/turf/open/floor/plating/beach/ex_act(severity, target)
/turf/open/floor/plating/beach/ex_act(severity, target, origin)
contents_explosion(severity, target)
/turf/open/floor/plating/beach/sand
@@ -53,7 +53,7 @@
acidpwr = min(acidpwr, 50) //we reduce the power so reinf floor never get melted.
. = ..()
/turf/open/floor/engine/ex_act(severity,target)
/turf/open/floor/engine/ex_act(severity,target, origin)
var/shielded = is_shielded()
contents_explosion(severity, target)
if(severity != 1 && shielded && target != src)
+2 -2
View File
@@ -18,8 +18,8 @@
clawfootstep = FOOTSTEP_LAVA
heavyfootstep = FOOTSTEP_LAVA
/turf/open/lava/ex_act(severity, target)
contents_explosion(severity, target)
/turf/open/lava/ex_act(severity, target, origin)
contents_explosion(severity, target, origin)
/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
return
+2 -2
View File
@@ -171,7 +171,7 @@
/turf/closed/mineral/acid_melt()
ScrapeAway()
/turf/closed/mineral/ex_act(severity, target)
/turf/closed/mineral/ex_act(severity, target, origin)
..()
switch(severity)
if(3)
@@ -661,7 +661,7 @@
/turf/closed/mineral/strong/acid_melt()
return
/turf/closed/mineral/strong/ex_act(severity, target)
/turf/closed/mineral/strong/ex_act(severity, target, origin)
return
#undef MINING_MESSAGE_COOLDOWN
@@ -272,12 +272,10 @@
icon_state = "map-overspace"
fixed_underlay = list("space"=1)
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity)
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity, target, origin)
var/datum/explosion/acted_explosion = null
for(var/datum/explosion/E in GLOB.explosions)
if(E.explosion_id == explosion_id)
acted_explosion = E
break
if(istype(origin, /datum/explosion))
acted_explosion = origin
if(acted_explosion && istype(acted_explosion.explosion_source, /obj/item/bombcore))
var/obj/item/bombcore/large/bombcore = new(get_turf(src))
bombcore.detonate()
+2 -2
View File
@@ -80,7 +80,7 @@
if(girder_type)
new /obj/item/stack/sheet/metal(src)
/turf/closed/wall/ex_act(severity, target)
/turf/closed/wall/ex_act(severity, target, origin)
if(target == src)
dismantle_wall(1,1)
return
@@ -88,7 +88,7 @@
if(1)
//SN src = null
var/turf/NT = ScrapeAway()
NT.contents_explosion(severity, target)
NT.contents_explosion(severity, target, origin)
return
if(2)
if (prob(50))
+2 -2
View File
@@ -451,7 +451,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
/turf/proc/is_shielded()
/turf/contents_explosion(severity, target)
/turf/contents_explosion(severity, target, origin)
var/affecting_level
if(severity == 1)
affecting_level = 1
@@ -469,7 +469,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
var/atom/movable/AM = A
if(!AM.ex_check(explosion_id))
continue
A.ex_act(severity, target)
A.ex_act(severity, target, origin)
CHECK_TICK
/turf/wave_ex_act(power, datum/wave_explosion/explosion, dir)
+1 -1
View File
@@ -1592,7 +1592,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
light_range = 2
duration = 9
/obj/effect/temp_visual/target/ex_act()
/obj/effect/temp_visual/target/ex_act(severity, target, origin)
return
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
@@ -45,7 +45,7 @@
GLOB.poi_list -= src
return ..()
/obj/structure/blob/core/ex_act(severity, target)
/obj/structure/blob/core/ex_act(severity, target, origin)
var/damage = 50 - 10 * severity //remember, the core takes half brute damage, so this is 20/15/10 damage based on severity
take_damage(damage, BRUTE, "bomb", 0)
@@ -8,7 +8,7 @@
linked.examine(user)
return ..()
/obj/effect/clockwork/overlay/ex_act()
/obj/effect/clockwork/overlay/ex_act(severity, target, origin)
return FALSE
/obj/effect/clockwork/overlay/singularity_act()
@@ -36,7 +36,7 @@
return TRUE
. = ..()
/obj/effect/clockwork/sigil/ex_act(severity)
/obj/effect/clockwork/sigil/ex_act(severity, target, origin)
visible_message("<span class='warning'>[src] scatters into thousands of particles.</span>")
qdel(src)
@@ -204,7 +204,7 @@
. = ..()
update_icon()
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
/obj/effect/clockwork/sigil/transmission/ex_act(severity, target, origin)
if(severity == 3)
adjust_clockwork_power(500) //Light explosions charge the network!
visible_message("<span class='warning'>[src] flares a brilliant orange!</span>")
@@ -38,7 +38,7 @@
/obj/effect/clockwork/servant_blocker/singularity_pull()
return
/obj/effect/clockwork/servant_blocker/ex_act(severity, target)
/obj/effect/clockwork/servant_blocker/ex_act(severity, target, origin)
return
/obj/effect/clockwork/servant_blocker/safe_throw_at()
@@ -102,7 +102,7 @@
return TRUE
return ..()
/obj/effect/clockwork/spatial_gateway/ex_act(severity)
/obj/effect/clockwork/spatial_gateway/ex_act(severity, target, origin)
if(severity == 1 && uses)
uses = 0
visible_message("<span class='warning'>[src] is disrupted!</span>")
@@ -251,7 +251,7 @@
name = "stable gateway"
is_stable = TRUE
/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity)
/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity, target, origin)
if(severity == 1)
start_shutdown() //Yes, you can chain devastation-level explosions to delay a gateway shutdown, if you somehow manage to do it without breaking the obelisk. Is it worth it? Probably not.
return TRUE
@@ -214,5 +214,5 @@
sleep(3) //so the animation completes properly
qdel(src)
/obj/effect/clockwork/judicial_marker/ex_act(severity)
/obj/effect/clockwork/judicial_marker/ex_act(severity, target, origin)
return
@@ -231,3 +231,31 @@
to_chat(invoker, "<span class='nezbere'>\"Only one of my weapons may exist in this temporal stream!\"</span>")
return FALSE
return ..()
/datum/clockwork_scripture/create_object/construct/cogscarab
descname = "Building Construct"
name = "Cogscarab"
desc = "Creates a shell for a cogscarab, a drone that helps build your base!"
invocations = list("Arise, drone!", "Create defenses for the true light!")
channel_time = 80
power_cost = 8000
creator_message = "<span class='brass'>Your slab disgorges several chunks of replicant alloy that form into a spiderlike shell.</span>"
usage_tip = "These machines will help you get a base built up while you go out to look for more followers."
tier = SCRIPTURE_APPLICATION
one_per_tile = TRUE
primary_component = BELLIGERENT_EYE
sort_priority = 9
quickbind = TRUE
quickbind_desc = "Creates a cogscarab, good for the backline."
object_path = /obj/item/clockwork/construct_chassis/cogscarab/
construct_type = /mob/living/simple_animal/drone/cogscarab
combat_construct = FALSE
/datum/clockwork_scripture/create_object/construct/cogscarab/update_construct_limit()
var/human_servants = 0
for(var/V in SSticker.mode.servants_of_ratvar)
var/datum/mind/M = V
var/mob/living/L = M.current
if(ishuman(L) && L.stat != DEAD)
human_servants++
construct_limit = round(clamp((human_servants / 4), 1, 3)) //1 per 4 human servants, maximum of 3
@@ -197,7 +197,7 @@
glow = new /obj/effect/clockwork/overlay/gateway_glow(get_turf(src))
glow.linked = src
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity)
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity, target, origin)
var/damage = max((obj_integrity * 0.7) / severity, 100) //requires multiple bombs to take down
take_damage(damage, BRUTE, "bomb", 0)
@@ -241,3 +241,18 @@
parts += printplayerlist(members - eminence)
return "<div class='panel clockborder'>[parts.Join("<br>")]</div>"
//I have no idea where to put this so I'm leaving it here. Loads reebe. Only one reebe can exist, so it's checked via a global var.
/proc/load_reebe()
if(GLOB.reebe_loaded)
return TRUE
var/list/errorList = list()
var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
if(errorList.len) // reebe failed to load
message_admins("Reebe failed to load!")
log_game("Reebe failed to load!")
return FALSE
for(var/datum/parsed_map/PM in reebes)
PM.initTemplateBounds()
GLOB.reebe_loaded = TRUE
return TRUE
@@ -179,7 +179,7 @@
/mob/living/carbon/true_devil/is_literate()
return 1
/mob/living/carbon/true_devil/ex_act(severity, ex_target)
/mob/living/carbon/true_devil/ex_act(severity, target, origin)
if(!ascended)
var/b_loss
switch (severity)
@@ -174,7 +174,7 @@
//Immunities
/mob/living/simple_animal/revenant/ex_act(severity, target)
/mob/living/simple_animal/revenant/ex_act(severity, target, origin)
return 1 //Immune to the effects of explosions.
/mob/living/simple_animal/revenant/wave_ex_act(power, datum/wave_explosion/explosion, dir)
@@ -249,7 +249,7 @@
released and fully healed, because in the end it's just a jape, \
sibling!</B>"
/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
/mob/living/simple_animal/slaughter/laughter/ex_act(severity, target, origin)
switch(severity)
if(1)
death()
@@ -72,10 +72,10 @@
QDEL_NULL(beaker)
return ..()
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target)
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target, origin)
..()
if(beaker)
beaker.ex_act(severity, target)
beaker.ex_act(severity, target, origin)
/obj/machinery/atmospherics/components/unary/cryo_cell/handle_atom_del(atom/A)
..()
@@ -59,10 +59,10 @@
/obj/machinery/atmospherics/components/unary/thermomachine/examine(mob/user)
. = ..()
. += "<span class='notice'>The thermostat is set to [target_temperature]K ([(T0C-target_temperature)*-1]C).</span>"
. += "<span class='notice'>The thermostat is set to [target_temperature]K ([target_temperature-T0C]C).</span>"
if(in_range(user, src) || isobserver(user))
. += "<span class='notice'>The status display reads: Efficiency <b>[(heat_capacity/5000)*100]%</b>.</span>"
. += "<span class='notice'>Temperature range <b>[min_temperature]K - [max_temperature]K ([(T0C-min_temperature)*-1]C - [(T0C-max_temperature)*-1]C)</b>.</span>"
. += "<span class='notice'>The status display reads: Effective heat capacity <b>[heat_capacity] J/K</b>.</span>"
. += "<span class='notice'>Temperature range <b>[min_temperature]K - [max_temperature]K ([min_temperature-T0C]C - [max_temperature-T0C]C)</b>.</span>"
/obj/machinery/atmospherics/components/unary/thermomachine/process_atmos()
..()
@@ -149,5 +149,5 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
if(prob(25))
mezzer()
/obj/singularity/narsie/mini/ex_act()
/obj/singularity/narsie/mini/ex_act(severity, target, origin)
return
+2 -2
View File
@@ -187,10 +187,10 @@
else
..()
/obj/structure/closet/supplypod/ex_act() //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
/obj/structure/closet/supplypod/ex_act(severity, target, origin) //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
return
/obj/structure/closet/supplypod/contents_explosion() //Supplypods also protect their contents from the harmful effects of fucking exploding.
/obj/structure/closet/supplypod/contents_explosion(severity, target, origin) //Supplypods also protect their contents from the harmful effects of fucking exploding.
return
/obj/structure/closet/supplypod/toggle(mob/living/user)
+5
View File
@@ -1118,6 +1118,11 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
return
to_chat(src, span_userdanger("Statpanel failed to load, click <a href='?src=[REF(src)];reload_statbrowser=1'>here</a> to reload the panel "))
/client/proc/check_panel_loaded()
if(statbrowser_ready)
return
to_chat(src, span_userdanger("Statpanel failed to load, click <a href='?src=[REF(src)];reload_statbrowser=1'>here</a> to reload the panel "))
//increment progress for an unlockable loadout item
/client/proc/increment_progress(key, amount)
if(prefs)
+1 -1
View File
@@ -99,7 +99,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
walk(src,0)
walk_towards(src, destination, 1)
/obj/effect/immovablerod/ex_act(severity, target)
/obj/effect/immovablerod/ex_act(severity, target, origin)
return 0
/obj/effect/immovablerod/singularity_act()
+1 -1
View File
@@ -507,7 +507,7 @@
if(master)
master.spawn_spacevine_piece(stepturf, src)
/obj/structure/spacevine/ex_act(severity, target)
/obj/structure/spacevine/ex_act(severity, target, origin)
if(istype(target, type)) //if its agressive spread vine dont do anything
return
var/i
@@ -10,8 +10,12 @@
speech_span = "spooky"
resistance_flags = INDESTRUCTIBLE
var/active = TRUE
var/BallTutorial = FALSE
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
if(BallTutorial)
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and were back again after a few additions here and there. Next to me you can find all the tools youll need to build a nice private house, if youre here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if youre more interested in building a cave dwelling. Finally the umbrella and light sources are because its spooky, and it might rain! As for interesting spots; Theres the old abandoned mansion which you can get to by going through the entrance and towards the east. Theres also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
return
if(!active)
say("Meow!")
return
@@ -27,6 +31,9 @@
say("It doesn't seem like that's magical enough!")
/obj/item/barthpot/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
if(BallTutorial)
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and were back again after a few additions here and there. Next to me you can find all the tools youll need to build a nice private house, if youre here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if youre more interested in building a cave dwelling. Finally the umbrella and light sources are because its spooky, and it might rain! As for interesting spots; Theres the old abandoned mansion which you can get to by going through the entrance and towards the east. Theres also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
return
if(!active)
say("Meow!")
return
@@ -268,3 +268,65 @@
category = "Holiday"
item = /obj/item/card/emag/halloween
surplus = 0
/////////////////////////
// Ball map Items //
/////////////////////////
/obj/item/wisp_lantern/pumpkin
name = "Pumpkin lantern"
desc = "This lantern gives off no light, but is home to a friendly Jacq o' latern."
icon_state = "lantern-on"
var/obj/effect/wisp/pumpkin/wisp2
//Hoooo boy that's some wild code there.
/obj/item/wisp_lantern/pumpkin/Initialize()
. = ..()
qdel(wisp)
wisp2 = new(src)
wisp = wisp2
/obj/effect/wisp/pumpkin
name = "Friendly pumpkin"
desc = "Happy to spook your way."
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "hardhat1_pumpkin_j"
light_range = 5
light_color = "#EE9933"
layer = 0
sight_flags = SEE_MOBS
lighting_alpha = 0
/obj/effect/wisp/pumpkin/update_user_sight(mob/user) //Disables SUPERLIGHTS
return
//Damnit LazyBones
/mob/living/simple_animal/lazy_bones
name = "Lazy Bones"
desc = "Simply refuses to get out of bed!"
icon = 'icons/mob/simple_human.dmi'
icon_state = "skeleton"
icon_living = "skeleton"
icon_dead = "skeleton"
gender = NEUTER
mob_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
turns_per_move = 5
speak_emote = list("rattles")
emote_see = list("rattles")
maxHealth = 40
health = 40
speed = 0
harm_intent_damage = 0
melee_damage_lower = 0
melee_damage_upper = 0
minbodytemp = 0
maxbodytemp = 1500
faction = list("skeleton")
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
deathmessage = "collapses into a pile of bones!"
del_on_death = 1
loot = list(/obj/effect/decal/remains/human)
stop_automated_movement = 1
@@ -50,6 +50,7 @@
var/cached_z
/// I'm busy, don't move.
var/busy = FALSE
var/spawn_cars = FALSE
var/static/blacklisted_items = typecacheof(list(
/obj/effect,
@@ -91,6 +92,9 @@
poof()
/mob/living/simple_animal/jacq/on_attack_hand(mob/living/carbon/human/M)
if(spawn_cars)
spawn_cars(M)
return ..()
if(!active)
say("Hello there [gender_check(M)]!")
return ..()
@@ -101,6 +105,9 @@
..()
/mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M)
if(spawn_cars)
spawn_cars(M)
return ..()
if(!active)
say("Hello there [gender_check(M)]!")
return ..()
@@ -128,6 +135,8 @@
/mob/living/simple_animal/jacq/proc/poof()
if(!active)//if disabled, don't poof
return
last_poof = world.realtime
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
@@ -470,6 +479,30 @@
sleep(20)
poof()
/mob/living/simple_animal/jacq/proc/spawn_cars(mob/living/carbon/C)
visible_message("<b>[src]</b> gives off a glowing smile, <span class='spooky'>\"What ken Ah offer ye? I can magic up a vectorcraft in manual or automatic fer ye.\"</span>")
var/choices_reward = list("Manual", "Automatic", "How do Automatics work?", "Nothing, thanks")
var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward
switch(choice_reward)
if("Manual")
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"Great choice! 'Ere's yer car.\"</span>")
jacqrunes("Great choice! 'Ere's yer car.", C)
new /obj/vehicle/sealed/vectorcraft(loc)
if("Automatic")
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"'Ere's yer car. Not as fast as an automatic mind.\"</span>")
jacqrunes("'Ere's yer car. Not as fast as an automatic mind.", C)
new /obj/vehicle/sealed/vectorcraft/auto(loc)
if("How do Automatics work?")
visible_message("<b>[src]</b> smiles, <span class='spooky'>\"Hold wasd to gain speed in a direction, c to enable/disable the clutch, 1 2 3 4 to change gears (help is gear 1, disarm is gear 2, grab is gear 3 and harm is gear 4) while holding a direction (make sure the clutch is enabled when you change gears, you should hear a sound when you've successfully changed gears), r to toggle handbrake, hold alt for brake and press shift for boost (the machine will beep when the boost is recharged)! If you hear an ebbing sound like \"brbrbrbrbr\" you need to gear down, the whining sound means you need to gear up. Hearing a pleasant \"whumwhumwhum\" is optimal gearage! It can be a lil slow to start, so make sure you're in the 1st gear, andusing a boost to get you started is a good idea. If you've got a good speed you'll likely never need to dip down to gear 1 again, and make sure to hold the acceleration pedal down while changing gears (hold a direction). 1st gear is for slow movement, and it's a good idea to mvoe to 2nd gear as quick as you can, you can coldstart a car from gear one by slowly moving, then using the boost to jump you up to gear 2 speeds. The upper gears are for unlimiting your top speed.\"</span>")
jacqrunes("They're a bit tricky, aye. Basically;", C)
if("Nothing, thanks")
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Suit yerself.\"</span>")
jacqrunes("Suit yerself.", C)
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there.\"</span>")
jacqrunes("Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there. ", C)
/mob/living/simple_animal/jacq/update_mobility()
. = ..()
if(busy)
+1 -1
View File
@@ -203,7 +203,7 @@
return
emergency_shutdown()
/obj/machinery/computer/holodeck/ex_act(severity, target)
/obj/machinery/computer/holodeck/ex_act(severity, target, origin)
emergency_shutdown()
return ..()
+2 -2
View File
@@ -27,10 +27,10 @@
QDEL_NULL(beaker)
return ..()
/obj/machinery/biogenerator/contents_explosion(severity, target)
/obj/machinery/biogenerator/contents_explosion(severity, target, origin)
..()
if(beaker)
beaker.ex_act(severity, target)
beaker.ex_act(severity, target, origin)
/obj/machinery/biogenerator/handle_atom_del(atom/A)
..()
+1 -1
View File
@@ -173,7 +173,7 @@
var/mob/M = loc
M.dropItemToGround(src)
/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity)
/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity, target, origin)
qdel(src) //Ensuring that it's deleted by its own explosion
/obj/item/reagent_containers/food/snacks/grown/firelemon/proc/prime(mob/living/lanced_by)
+2 -2
View File
@@ -224,7 +224,7 @@
if(!QDELETED(src))
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity, target, origin)
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by)
@@ -500,7 +500,7 @@
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity)
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity, target, origin)
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/coconut/deconstruct(disassembled = TRUE)
+7
View File
@@ -193,6 +193,13 @@
new /obj/item/book/manual/wiki/research_and_development(src)
update_icon()
/obj/structure/bookcase/manuals/medical
name = "medical manuals bookcase"
/obj/structure/bookcase/manuals/medical/Initialize()
. = ..()
new /obj/item/book/manual/wiki/medical_cloning(src)
update_icon()
/*
* Book
+1 -1
View File
@@ -26,7 +26,7 @@
color = GLOB.em_block_color
/atom/movable/emissive_blocker/ex_act(severity)
/atom/movable/emissive_blocker/ex_act(severity, target, origin)
return FALSE
/atom/movable/emissive_blocker/singularity_act()
+1 -1
View File
@@ -124,7 +124,7 @@
// Variety of overrides so the overlays don't get affected by weird things.
/atom/movable/lighting_object/ex_act(severity)
/atom/movable/lighting_object/ex_act(severity, target, origin)
return 0
/atom/movable/lighting_object/singularity_act()
@@ -484,7 +484,7 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = TRUE
/obj/effect/warp_cube/ex_act(severity, target)
/obj/effect/warp_cube/ex_act(severity, target, origin)
return
//Meat Hook
@@ -607,7 +607,7 @@
/obj/effect/immortality_talisman/attackby()
return
/obj/effect/immortality_talisman/ex_act()
/obj/effect/immortality_talisman/ex_act(severity, target, origin)
return
/obj/effect/immortality_talisman/singularity_pull()
+1 -1
View File
@@ -346,7 +346,7 @@
to_chat(usr, "<span class='warning'>Required access not found.</span>")
return TRUE
/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
/obj/machinery/mineral/ore_redemption/ex_act(severity, target, origin)
do_sparks(5, TRUE, src)
..()
+1 -1
View File
@@ -270,7 +270,7 @@
SSblackbox.record_feedback("tally", "crusher_voucher_redeemed", 1, selection)
qdel(voucher)
/obj/machinery/mineral/equipment_vendor/ex_act(severity, target)
/obj/machinery/mineral/equipment_vendor/ex_act(severity, target, origin)
do_sparks(5, TRUE, src)
if(prob(50 / severity) && severity < 3)
qdel(src)
+3 -3
View File
@@ -152,7 +152,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
C.forcesay("*scream")
qdel(src)
/obj/item/stack/ore/glass/ex_act(severity, target)
/obj/item/stack/ore/glass/ex_act(severity, target, origin)
if (severity == EXPLODE_NONE)
return
qdel(src)
@@ -314,7 +314,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
GibtoniteReaction(P.firer)
. = ..()
/obj/item/gibtonite/ex_act()
/obj/item/gibtonite/ex_act(severity, target, origin)
GibtoniteReaction(null, 1)
/obj/item/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
@@ -356,7 +356,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
pixel_x = initial(pixel_x) + rand(0, 16) - 8
pixel_y = initial(pixel_y) + rand(0, 8) - 8
/obj/item/stack/ore/ex_act(severity, target)
/obj/item/stack/ore/ex_act(severity, target, origin)
if (!severity || severity >= 2)
return
qdel(src)
+1 -1
View File
@@ -11,7 +11,7 @@
/obj/effect/dummy/phased_mob/slaughter/relaymove(mob/user, direction)
forceMove(get_step(src,direction))
/obj/effect/dummy/phased_mob/slaughter/ex_act()
/obj/effect/dummy/phased_mob/slaughter/ex_act(severity, target, origin)
return
/obj/effect/dummy/phased_mob/slaughter/wave_ex_act(power, datum/wave_explosion/explosion, dir)
+1 -1
View File
@@ -43,7 +43,7 @@
/mob/living/brain/update_mobility()
return ((mobility_flags = (container?.in_contents_of(/obj/mecha)? MOBILITY_FLAGS_DEFAULT : NONE)))
/mob/living/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
/mob/living/brain/ex_act(severity, target, origin) //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
return
/mob/living/brain/wave_ex_act(power, datum/wave_explosion/explosion, dir)

Some files were not shown because too many files have changed in this diff Show More