the-figment-that-was-is-now-gone

This commit is contained in:
Fox McCloud
2019-10-01 19:08:15 -04:00
parent a469d0fcf2
commit d29be05f74
93 changed files with 367 additions and 824 deletions

View File

@@ -99,5 +99,6 @@
/obj/effect/dummy/spell_jaunt/ex_act(blah)
return
/obj/effect/dummy/spell_jaunt/bullet_act(blah)
return

View File

@@ -286,35 +286,18 @@
src.occupant.forceMove(src.loc)
src.occupant = null
src.icon_state = "scanner_open"
return
/obj/machinery/dna_scannernew/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(35)
//SN src = null
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(108)
//SN src = null
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(181)
//SN src = null
qdel(src)
if(occupant)
occupant.ex_act(severity)
..()
/obj/machinery/dna_scannernew/handle_atom_del(atom/A)
..()
if(A == occupant)
occupant = null
updateUsrDialog()
update_icon()
// Checks if occupants can be irradiated/mutated - prevents exploits where wearing full rad protection would still let you gain mutations
/obj/machinery/dna_scannernew/proc/radiation_check()
@@ -371,18 +354,6 @@
return
else
..()
return
/obj/machinery/computer/scan_consolenew/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
qdel(src)
return
if(2.0)
if(prob(50))
//SN src = null
qdel(src)
/obj/machinery/computer/scan_consolenew/New()
..()

View File

@@ -46,6 +46,10 @@
GLOB.poi_list.Remove(src)
return ..()
/obj/structure/blob/core/ex_act(severity)
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)
/obj/structure/blob/core/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, overmind_reagent_trigger = 1)
. = ..()
if(obj_integrity > 0)

View File

@@ -129,18 +129,13 @@
A.blob_act(src)
return 1
/obj/structure/blob/ex_act(severity)
..()
var/damage = 150 - 20 * severity
take_damage(damage, BRUTE)
/obj/structure/blob/Crossed(var/mob/living/L, oldloc)
..()
L.blob_act(src)
/obj/structure/blob/tesla_act(power)
..()
take_damage(power/400, BURN)
take_damage(power / 400, BURN, "energy")
/obj/structure/blob/hulk_damage()
return 15

View File

@@ -201,6 +201,18 @@
add_fingerprint(user)
qdel(G)
/obj/machinery/abductor/experiment/ex_act(severity)
if(occupant)
occupant.ex_act(severity)
..()
/obj/machinery/abductor/experiment/handle_atom_del(atom/A)
..()
if(A == occupant)
occupant = null
updateUsrDialog()
update_icon()
/obj/machinery/abductor/experiment/proc/eject_abductee()
if(!occupant)
return

View File

@@ -516,17 +516,6 @@
spawn(5)
qdel(src)
/obj/structure/swarmer/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item))
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
take_damage(I.force)
return
/obj/structure/swarmer/ex_act()
qdel(src)
return
/obj/structure/swarmer/emp_act()
qdel(src)

View File

@@ -333,9 +333,6 @@ var/bomb_set
SSnanoui.update_uis(src)
/obj/machinery/nuclearbomb/ex_act(severity)
return
/obj/machinery/nuclearbomb/blob_act(obj/structure/blob/B)
if(timing == -1.0)
return

View File

@@ -35,21 +35,6 @@
victim = null
return ..()
/obj/machinery/optable/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
qdel(src)
return
if(2.0)
if(prob(50))
//SN src = null
qdel(src)
return
if(3.0)
if(prob(25))
src.density = 0
/obj/machinery/optable/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
if(user.a_intent == INTENT_HARM)
..(user, TRUE)

View File

@@ -43,6 +43,21 @@
QDEL_NULL(storedpda)
return ..()
/obj/machinery/pdapainter/on_deconstruction()
if(storedpda)
storedpda.forceMove(loc)
storedpda = null
/obj/machinery/pdapainter/ex_act(severity)
if(storedpda)
storedpda.ex_act(severity)
..()
/obj/machinery/pdapainter/handle_atom_del(atom/A)
if(A == storedpda)
storedpda = null
update_icon()
/obj/machinery/pdapainter/attackby(obj/item/I, mob/user, params)
if(default_unfasten_wrench(user, I))
power_change()

View File

@@ -346,27 +346,7 @@
/obj/machinery/sleeper/ex_act(severity)
if(filtering)
toggle_filter()
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.forceMove(loc)
A.ex_act(severity)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(loc)
A.ex_act(severity)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(loc)
A.ex_act(severity)
qdel(src)
return
..()
/obj/machinery/sleeper/emp_act(severity)
if(filtering)

View File

@@ -172,26 +172,16 @@
A.forceMove(loc)
/obj/machinery/bodyscanner/ex_act(severity)
switch(severity)
if(1)
for(var/atom/movable/A in src)
A.forceMove(loc)
A.ex_act(severity)
qdel(src)
return
if(2)
if(prob(50))
for(var/atom/movable/A in src)
A.forceMove(loc)
A.ex_act(severity)
qdel(src)
return
if(3)
if(prob(25))
for(var/atom/movable/A in src)
A.forceMove(loc)
A.ex_act(severity)
qdel(src)
if(occupant)
occupant.ex_act(severity)
..()
/obj/machinery/bodyscanner/handle_atom_del(atom/A)
..()
if(A == occupant)
occupant = null
updateUsrDialog()
update_icon()
/obj/machinery/bodyscanner/narsie_act()
go_out()

View File

@@ -239,7 +239,7 @@
. = ..()
/obj/machinery/camera/obj_break(damage_flag)
if(status)
if(status && !(flags & NODECONSTRUCT))
triggerCameraAlarm()
toggle_cam(null, FALSE)
wires.CutAll()

View File

@@ -538,29 +538,14 @@
..()
/obj/machinery/clonepod/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
A.ex_act(severity)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
A.ex_act(severity)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
A.ex_act(severity)
qdel(src)
return
else
return
..()
if(!QDELETED(src) && occupant)
go_out()
/obj/machinery/clonepod/handle_atom_del(atom/A)
if(A == occupant)
occupant = null
countdown.stop()
/obj/machinery/clonepod/deconstruct(disassembled = TRUE)
if(occupant)

View File

@@ -347,7 +347,7 @@
// HOLOFLOOR DOES NOT GIVE A FUCK
/obj/structure/table/holotable
can_deconstruct = FALSE
flags = NODECONSTRUCT
canSmoothWith = list(/obj/structure/table/holotable)
/obj/structure/table/holotable/wood
@@ -375,7 +375,7 @@
flags = ON_BORDER
/obj/structure/rack/holorack
can_deconstruct = FALSE
flags = NODECONSTRUCT
/obj/item/holo
damtype = STAMINA

View File

@@ -30,31 +30,6 @@
return 0
return 1
/obj/machinery/computer/emp_act(severity)
if(prob(20/severity)) set_broken()
..()
/obj/machinery/computer/ex_act(severity)
if(!(resistance_flags & INDESTRUCTIBLE))
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(25))
qdel(src)
return
if(prob(50))
for(var/x in verbs)
verbs -= x
set_broken()
if(3.0)
if(prob(25))
for(var/x in verbs)
verbs -= x
set_broken()
/obj/machinery/computer/extinguish_light()
set_light(0)
visible_message("<span class='danger'>[src] grows dim, its screen barely readable.</span>")

View File

@@ -73,15 +73,31 @@
break
/obj/machinery/atmospherics/unary/cryo_cell/Destroy()
var/turf/T = get_turf(src)
if(istype(T))
T.contents += contents
var/obj/item/reagent_containers/glass/B = beaker
if(beaker)
B.forceMove(get_step(T, SOUTH)) //Beaker is carefully ejected from the wreckage of the cryotube
beaker = null
QDEL_NULL(beaker)
return ..()
/obj/machinery/atmospherics/unary/cryo_cell/ex_act(severity)
if(occupant)
occupant.ex_act(severity)
if(beaker)
beaker.ex_act(severity)
..()
/obj/machinery/atmospherics/unary/cryo_cell/handle_atom_del(atom/A)
..()
if(A == beaker)
beaker = null
updateUsrDialog()
if(A == occupant)
occupant = null
updateUsrDialog()
update_icon()
/obj/machinery/atmospherics/unary/cryo_cell/on_deconstruction()
if(beaker)
beaker.forceMove(drop_location())
beaker = null
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob)
if(O.loc == user) //no you can't pull things out of your ass
return

View File

@@ -1278,7 +1278,7 @@ About the new airlock wires panel:
safe = TRUE
/obj/machinery/door/airlock/obj_break(damage_flag)
if(!(flags & BROKEN) && can_deconstruct)
if(!(flags & BROKEN) && !(flags & NODECONSTRUCT))
stat |= BROKEN
if(!panel_open)
panel_open = TRUE

View File

@@ -372,5 +372,10 @@
if(!stat) //Opens only powered doors.
open() //Open everything!
/obj/machinery/door/ex_act(severity)
//if it blows up a wall it should blow up a door
..(severity ? max(1, severity - 1) : 0)
/obj/machinery/door/GetExplosionBlock()
return density ? real_explosion_block : 0

View File

@@ -35,7 +35,7 @@
return 0
//"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)
if(severity == 3)
return
..()

View File

@@ -233,7 +233,7 @@
add_fingerprint(user)
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
if(isscrewdriver(I))
if(density || operating)
to_chat(user, "<span class='warning'>You need to open the door to access the maintenance panel!</span>")

View File

@@ -27,20 +27,6 @@
stat |= NOPOWER
set_light(0)
/obj/machinery/dye_generator/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
if(prob(25))
stat |= BROKEN
icon_state = "[initial(icon_state)]-broken"
/obj/machinery/dye_generator/attack_hand(mob/user)
..()
src.add_fingerprint(user)

View File

@@ -87,6 +87,11 @@ var/list/holopads = list()
if(outgoing_call)
outgoing_call.ConnectionFailure(src)
/obj/machinery/hologram/holopad/obj_break()
. = ..()
if(outgoing_call)
outgoing_call.ConnectionFailure(src)
/obj/machinery/hologram/holopad/RefreshParts()
var/holograph_range = 4
for(var/obj/item/stock_parts/capacitor/B in component_parts)

View File

@@ -176,20 +176,6 @@ Class Procs:
new /obj/effect/temp_visual/emp(loc)
..()
/obj/machinery/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
if(prob(25))
qdel(src)
//sets the use_power var and then forces an area power update
/obj/machinery/proc/update_use_power(var/new_use_power)
use_power = new_use_power
@@ -385,7 +371,7 @@ Class Procs:
gl_uid++
/obj/machinery/proc/default_deconstruction_crowbar(var/obj/item/crowbar/C, var/ignore_panel = 0)
if(istype(C) && (panel_open || ignore_panel))
if(istype(C) && (panel_open || ignore_panel) && !(flags & NODECONSTRUCT))
playsound(loc, C.usesound, 50, 1)
deconstruct(TRUE)
return 1
@@ -416,7 +402,7 @@ Class Procs:
stat |= BROKEN
/obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/icon_state_open, var/icon_state_closed, var/obj/item/screwdriver/S)
if(istype(S))
if(!(flags & NODECONSTRUCT) && istype(S))
playsound(loc, S.usesound, 50, 1)
if(!panel_open)
panel_open = 1
@@ -438,7 +424,7 @@ Class Procs:
return 0
/obj/proc/default_unfasten_wrench(mob/user, obj/item/wrench/W, time = 20)
if(istype(W))
if(!(flags & NODECONSTRUCT) && istype(W))
to_chat(user, "<span class='notice'>Now [anchored ? "un" : ""]securing [name].</span>")
playsound(loc, W.usesound, 50, 1)
if(do_after(user, time * W.toolspeed, target = src))
@@ -453,6 +439,8 @@ Class Procs:
/obj/machinery/proc/exchange_parts(mob/user, obj/item/storage/part_replacer/W)
var/shouldplaysound = 0
if((flags & NODECONSTRUCT))
return FALSE
if(istype(W) && component_parts)
if(panel_open || W.works_from_distance)
var/obj/item/circuitboard/CB = locate(/obj/item/circuitboard) in component_parts

View File

@@ -163,22 +163,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
. = ..()
update_icon()
/obj/machinery/newscaster/ex_act(severity)
switch(severity)
if(1)
qdel(src)
return
if(2)
stat |= BROKEN
if(prob(50))
qdel(src)
else
update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in.
else
if(prob(50))
stat |= BROKEN
update_icon()
/obj/machinery/newscaster/attack_ghost(mob/user)
ui_interact(user)

View File

@@ -63,26 +63,16 @@
return 1
/obj/machinery/recharge_station/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
A.ex_act(severity)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
A.ex_act(severity)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
A.forceMove(src.loc)
A.ex_act(severity)
qdel(src)
if(occupant)
occupant.ex_act(severity)
..()
/obj/machinery/recharge_station/handle_atom_del(atom/A)
..()
if(A == occupant)
occupant = null
updateUsrDialog()
update_icon()
/obj/machinery/recharge_station/narsie_act()
go_out()

View File

@@ -37,6 +37,14 @@
if(.)
payload.detonate()
/obj/machinery/syndicatebomb/obj_break()
if(!try_detonate())
..()
/obj/machinery/syndicatebomb/obj_destruction()
if(!try_detonate())
..()
/obj/machinery/syndicatebomb/process()
if(!active)
STOP_PROCESSING(SSfastprocess, src)

View File

@@ -5,6 +5,7 @@
maint_access = 0
damage_absorption = list("brute"=0.7,"fire"=1,"bullet"=0.7,"laser"=0.85,"energy"=1,"bomb"=0.8)
armor = list(melee = 30, bullet = 30, laser = 15, energy = 20, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
destruction_sleep_duration = 2
var/am = "d3c2fbcadca903a41161ccc9df9cf948"
/obj/mecha/combat/moved_inside(var/mob/living/carbon/human/H as mob)

View File

@@ -50,6 +50,7 @@
max_equip = 4
maxsize = 2
starting_voice = /obj/item/mecha_modkit/voice/syndicate
destruction_sleep_duration = 1
/obj/mecha/combat/gygax/dark/loaded/New()
..()

View File

@@ -18,6 +18,7 @@
force = 45
max_equip = 5
starting_voice = /obj/item/mecha_modkit/voice/nanotrasen
destruction_sleep_duration = 1
/obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0)
. = ..()

View File

@@ -82,6 +82,8 @@
var/activated = FALSE
var/power_warned = FALSE
var/destruction_sleep_duration = 1 //Time that mech pilot is put to sleep for if mech is destroyed
var/melee_cooldown = 10
var/melee_can_hit = 1
@@ -620,6 +622,8 @@
/obj/mecha/Destroy()
if(occupant)
occupant.SetSleeping(destruction_sleep_duration)
go_out()
for(var/mob/M in src) //Let's just be ultra sure
if(isAI(M))
@@ -627,36 +631,15 @@
else
M.forceMove(loc)
if(prob(30))
explosion(get_turf(loc), 0, 0, 1, 3)
if(wreckage)
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(loc)
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
if(E.salvageable && prob(30))
WR.crowbar_salvage += E
E.forceMove(WR)
E.equip_ready = 1
else
E.forceMove(loc)
E.detach(loc)
qdel(E)
if(cell)
WR.crowbar_salvage += cell
cell.forceMove(WR)
cell.charge = rand(0, cell.charge)
if(internal_tank)
WR.crowbar_salvage += internal_tank
internal_tank.forceMove(WR)
else
QDEL_LIST(equipment)
equipment.Cut()
QDEL_NULL(cell)
QDEL_NULL(internal_tank)
STOP_PROCESSING(SSobj, src)
GLOB.poi_list.Remove(src)
equipment.Cut()
cell = null
internal_tank = null
if(loc)
loc.assume_air(cabin_air)
air_update_turf()
@@ -1492,6 +1475,32 @@
visual_effect_icon = ATTACK_EFFECT_MECHTOXIN
..()
/obj/mecha/obj_destruction()
if(wreckage)
var/mob/living/silicon/ai/AI
if(isAI(occupant))
AI = occupant
occupant = null
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(loc, AI)
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
if(E.salvageable && prob(30))
WR.crowbar_salvage += E
E.detach(WR) //detaches from src into WR
E.equip_ready = 1
else
E.detach(loc)
qdel(E)
if(cell)
WR.crowbar_salvage += cell
cell.forceMove(WR)
cell.charge = rand(0, cell.charge)
cell = null
if(internal_tank)
WR.crowbar_salvage += internal_tank
internal_tank.forceMove(WR)
cell = null
. = ..()
/obj/mecha/CtrlClick(mob/living/L)
if(occupant != L || !istype(L))
return ..()

View File

@@ -123,11 +123,6 @@
/obj/item/mecha_parts/mecha_tracking/emp_act()
qdel(src)
return
/obj/item/mecha_parts/mecha_tracking/ex_act()
qdel(src)
return
/obj/item/mecha_parts/mecha_tracking/proc/in_mecha()
if(istype(loc, /obj/mecha))

View File

@@ -22,9 +22,7 @@
/obj/effect/decal/mecha_wreckage/ex_act(severity)
if(severity < 2)
spawn
qdel(src)
return
/obj/effect/decal/mecha_wreckage/bullet_act(obj/item/projectile/Proj)
return

View File

@@ -172,6 +172,9 @@ var/global/list/image/splatter_cache = list()
overlays += giblets
. = ..()
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity)
return
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibup1", "gibup1", "gibup1")

View File

@@ -75,6 +75,9 @@
. = ..()
QDEL_IN(src, 2 MINUTES)
/obj/effect/decal/cleanable/greenglow/ex_act()
return
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
desc = "Somebody should remove that."

View File

@@ -34,6 +34,17 @@
/obj/effect/experience_pressure_difference()
return
/obj/effect/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(60))
qdel(src)
if(3)
if(prob(25))
qdel(src)
/obj/effect/decal
plane = FLOOR_PLANE
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
@@ -68,7 +79,7 @@
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
R.on_ex_act()
..()
qdel(src)
/obj/effect/decal/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
if(reagents)

View File

@@ -168,17 +168,6 @@
endurance -= damage_to_do
CheckEndurance()
/obj/structure/glowshroom/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(50))
qdel(src)
if(3)
if(prob(5))
qdel(src)
/obj/structure/glowshroom/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
if(damage_type == BURN && damage_amount)
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)

View File

@@ -26,18 +26,6 @@
master_commander = null
return ..()
//similar to weeds, but only barfed out by nurses manually
/obj/structure/spider/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(50))
qdel(src)
if(3)
if(prob(5))
qdel(src)
/obj/structure/spider/attackby(obj/item/W, mob/user, params)
if(W.attack_verb.len)
visible_message("<span class='danger'>[user] has [pick(W.attack_verb)] [src] with [W]!</span>")

View File

@@ -141,22 +141,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
if(B && B.loc == loc)
qdel(src)
/obj/item/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
if(prob(5))
qdel(src)
return
else
return
/obj/item/verb/move_to_top()
set name = "Move To Top"
set category = null

View File

@@ -105,12 +105,3 @@
update_icon()
return 1
/obj/item/aicard/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
if(2.0)
if(prob(50)) qdel(src)
if(3.0)
if(prob(25)) qdel(src)

View File

@@ -121,7 +121,7 @@
/obj/effect/dummy/chameleon/attack_alien()
master.disrupt()
/obj/effect/dummy/chameleon/ex_act(var/severity) //no longer bomb-proof
/obj/effect/dummy/chameleon/ex_act(severity) //no longer bomb-proof
for(var/mob/M in src)
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
spawn()

View File

@@ -335,12 +335,6 @@
M.emp_act(severity)
..()
/obj/item/paicard/ex_act(severity)
if(pai)
pai.ex_act(severity)
else
qdel(src)
/obj/item/paicard/extinguish_light()
pai.extinguish_light()
set_light(0)

View File

@@ -33,11 +33,6 @@
else
to_chat(user, "<span class='notice'>The gift was empty!</span>")
qdel(src)
return
/obj/item/a_gift/ex_act()
qdel(src)
return
/obj/effect/spresent/relaymove(mob/user as mob)
if(user.stat)

View File

@@ -193,12 +193,10 @@
if(!proximity)
return
if(wielded) //destroys windows and grilles in one hit
if(istype(A, /obj/structure/window))
var/obj/structure/window/W = A
W.take_damage(200, BRUTE, "melee", 0)
else if(istype(A, /obj/structure/grille))
var/obj/structure/grille/G = A
G.take_damage(40, BRUTE, "melee", 0)
if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille))
var/obj/structure/W = A
W.obj_destruction("fireaxe")
/obj/item/twohanded/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone.
icon_state = "bone_axe0"

View File

@@ -8,7 +8,6 @@
var/list/species_exception = null // list() of species types, if a species cannot put items in a certain slot, but species type is in list, it will be able to wear that item
var/sharp = 0 // whether this object cuts
var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING!
var/can_deconstruct = TRUE
var/damtype = "brute"
var/force = 0
var/list/armor

View File

@@ -5,18 +5,6 @@
var/mob/climber
var/broken = FALSE
/obj/structure/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
return
/obj/structure/New()
if (!armor)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)

View File

@@ -301,6 +301,7 @@
break
/obj/structure/alien/egg/obj_break(damage_flag)
if(!(flags & NODECONSTRUCT))
if(status != BURST)
Burst(kill = TRUE)

View File

@@ -38,6 +38,10 @@
else
desc = "It displays \"[name]\"."
/obj/structure/sign/barsign/obj_break(damage_flag)
if(!broken && !(flags & NODECONSTRUCT))
broken = TRUE
/obj/structure/sign/barsign/deconstruct(disassembled = TRUE)
new /obj/item/stack/sheet/metal(drop_location(), 2)
new /obj/item/stack/cable_coil(drop_location(), 2)

View File

@@ -124,32 +124,20 @@
if(!(opened ? close() : open()))
to_chat(user, "<span class='notice'>It won't budge!</span>")
/obj/structure/closet/proc/bust_open()
welded = FALSE //applies to all lockers
locked = FALSE //applies to critter crates and secure lockers only
broken = TRUE //applies to secure lockers only
open()
/obj/structure/closet/deconstruct(disassembled = TRUE)
if(ispath(material_drop) && material_drop_amount && !(flags & NODECONSTRUCT))
new material_drop(loc, material_drop_amount)
qdel(src)
/obj/structure/closet/ex_act(severity)
switch(severity)
if(1)
for(var/atom/movable/A in src)//pulls everything out of the locker and hits it with an explosion
A.ex_act(severity++)
dump_contents()
qdel(src)
if(2)
if(prob(50))
for(var/atom/movable/A in src)
A.ex_act(severity++)
dump_contents()
new /obj/item/stack/sheet/metal(loc)
qdel(src)
if(3)
if(prob(5))
for(var/atom/movable/A in src)
A.ex_act(severity++)
dump_contents()
new /obj/item/stack/sheet/metal(loc)
qdel(src)
/obj/structure/closet/obj_break(damage_flag)
if(!broken && !(flags & NODECONSTRUCT))
bust_open()
/obj/structure/closet/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/rcs) && !opened)
@@ -407,6 +395,16 @@
if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS)))
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
/obj/structure/closet/ex_act(severity)
for(var/atom/A in contents)
A.ex_act(severity)
CHECK_TICK
..()
/obj/structure/closet/singularity_act()
dump_contents()
..()
/obj/structure/closet/AllowDrop()
return TRUE

View File

@@ -92,12 +92,6 @@
for(var/mob/M in src)
shatter(M)
/obj/structure/closet/statue/ex_act(severity)
for(var/mob/M in src)
M.ex_act(severity)
health -= 60 / severity
check_health()
/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob, params)
user.changeNext_move(CLICK_CD_MELEE)
health -= I.force

View File

@@ -178,23 +178,6 @@
return
else return attack_hand(user)
/obj/structure/closet/crate/ex_act(severity)
switch(severity)
if(1.0)
for(var/obj/O in src.contents)
qdel(O)
qdel(src)
return
if(2.0)
for(var/obj/O in src.contents)
if(prob(50))
qdel(O)
qdel(src)
return
if(3.0)
if(prob(50))
qdel(src)
/obj/structure/closet/singularity_act()
dump_contents()
..()

View File

@@ -178,21 +178,14 @@ GLOBAL_LIST_INIT(captain_display_cases, list())
burglar_alarm()
qdel(src)
/obj/structure/displaycase/ex_act(severity)
switch(severity)
if(1)
new /obj/item/shard(loc)
if(occupant)
dump()
qdel(src)
if(2)
if(prob(50))
src.health -= 15
src.healthcheck()
if(3)
if(prob(50))
src.health -= 5
src.healthcheck()
/obj/structure/displaycase/obj_break(damage_flag)
if(!broken && !(flags & NODECONSTRUCT))
density = FALSE
broken = 1
new /obj/item/shard( src.loc )
playsound(src, "shatter", 70, TRUE)
update_icon()
burglar_alarm()
/obj/structure/displaycase/proc/healthcheck()
if(src.health <= 0)

View File

@@ -48,6 +48,16 @@
QDEL_NULL(has_extinguisher)
return ..()
/obj/structure/extinguisher_cabinet/ex_act(severity)
if(has_extinguisher)
has_extinguisher.ex_act(severity)
..()
/obj/structure/extinguisher_cabinet/handle_atom_del(atom/A)
if(A == has_extinguisher)
has_extinguisher = null
update_icon()
/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user, params)
if(isrobot(user) || isalien(user))
return
@@ -125,6 +135,15 @@
opened = !opened
update_icon()
/obj/structure/extinguisher_cabinet/obj_break(damage_flag)
if(!broken && !(flags & NODECONSTRUCT))
broken = 1
opened = 1
if(has_extinguisher)
has_extinguisher.forceMove(loc)
has_extinguisher = null
update_icon()
/obj/structure/extinguisher_cabinet/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
new /obj/item/stack/sheet/metal(loc)

View File

@@ -22,8 +22,6 @@
density = TRUE
opacity = TRUE
can_deconstruct = TRUE
canSmoothWith = list(
/turf/simulated/wall,
/turf/simulated/wall/r_wall,
@@ -123,22 +121,17 @@
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0,user))
dismantle(user)
dismantle(user, TRUE)
else
to_chat(user, "<span class='warning'>You can't reach, close it first!</span>")
if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/pickaxe/drill/diamonddrill) || istype(W, /obj/item/pickaxe/drill/jackhammer) || istype(W, /obj/item/melee/energy/blade))
dismantle(user)
dismantle(user, TRUE)
/obj/structure/falsewall/proc/dismantle(mob/user)
/obj/structure/falsewall/proc/dismantle(mob/user, disassembled = TRUE)
user.visible_message("<span class='notice'>[user] dismantles the false wall.</span>", "<span class='warning'>You dismantle the false wall.</span>")
if(can_deconstruct)
new girder_type(loc)
if(mineral_amount)
for(var/i in 1 to mineral_amount)
new mineral(loc)
playsound(src, 'sound/items/welder.ogg', 100, 1)
qdel(src)
playsound(src, 'sound/items/welder.ogg', 100, TRUE)
deconstruct(disassembled)
/obj/structure/falsewall/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))

View File

@@ -370,26 +370,6 @@
new /obj/structure/girder/cult(loc)
qdel(src)
/obj/structure/girder/ex_act(severity)
switch(severity)
if(1)
qdel(src)
return
if(2)
if(prob(75))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
return
if(3)
if(prob(40))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
return
else
return
/obj/structure/girder/displaced
name = "displaced girder"
icon_state = "displaced"

View File

@@ -42,13 +42,6 @@
//height=42
icon='icons/fence-ns.dmi'
/obj/structure/grille/ex_act(severity)
switch(severity)
if(1)
qdel(src)
else
take_damage(rand(5,10), BRUTE, 0)
/obj/structure/grille/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
. = ..()
update_icon()
@@ -234,9 +227,9 @@
..()
/obj/structure/grille/obj_break()
if(!broken && can_deconstruct)
if(!broken && !(flags & NODECONSTRUCT))
new broken_type(loc)
var/obj/R = new rods_type(loc, rods_broken)
var/obj/R = new rods_type(drop_location(), rods_broken)
transfer_fingerprints_to(R)
qdel(src)

View File

@@ -10,21 +10,6 @@
var/occupied = 1
var/destroyed = 0
/obj/structure/lamarr/ex_act(severity)
switch(severity)
if(1)
new /obj/item/shard(loc)
Break()
qdel(src)
if(2)
if(prob(50))
src.health -= 15
src.healthcheck()
if(3)
if(prob(50))
src.health -= 5
src.healthcheck()
/obj/structure/lamarr/proc/healthcheck()
if(src.health <= 0)
if(!( src.destroyed ))

View File

@@ -49,15 +49,6 @@
/obj/structure/lattice/blob_act(obj/structure/blob/B)
return
/obj/structure/lattice/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
qdel(src)
if(3)
return
/obj/structure/lattice/singularity_pull(S, current_size)
if(current_size >= STAGE_FOUR)
deconstruct()

View File

@@ -136,23 +136,7 @@
else if(user.a_intent != INTENT_HARM)
attack_hand(user)
else
attacked_by(W, user)
/obj/structure/mineral_door/attacked_by(obj/item/I, mob/user)
if(I.damtype != STAMINA)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
visible_message("<span class='notice'>[user] hits \the [src] with \the [I].</span>")
if(damageSound)
playsound(loc, damageSound, 100, 1)
else
playsound(loc, I.hitsound, 100, 1)
hardness -= I.force / 100
CheckHardness()
/obj/structure/mineral_door/proc/CheckHardness()
if(hardness <= 0)
deconstruct(FALSE)
return ..()
/obj/structure/mineral_door/deconstruct(disassembled = TRUE)
var/turf/T = get_turf(src)
@@ -163,20 +147,6 @@
new sheetType(T, max(sheetAmount - 2, 1))
qdel(src)
/obj/structure/mineral_door/ex_act(severity = 1)
switch(severity)
if(1)
deconstruct(FALSE)
if(2)
if(prob(20))
deconstruct(FALSE)
else
hardness--
CheckHardness()
if(3)
hardness -= 0.1
CheckHardness()
/obj/structure/mineral_door/iron
hardness = 3

View File

@@ -34,16 +34,16 @@
ui_users[user] = AC
AC.ui_interact(user)
/obj/structure/mirror/proc/shatter()
if(broken)
return
broken = TRUE
/obj/structure/mirror/obj_break(damage_flag, mapload)
if(!broken && !(flags & NODECONSTRUCT))
icon_state = "mirror_broke"
playsound(src, "shatter", 70, 1)
if(!mapload)
playsound(src, "shatter", 70, TRUE)
if(desc == initial(desc))
desc = "Oh no, seven years of bad luck!"
broken = TRUE
/obj/structure/mirror/attackby(obj/item/I, mob/living/user, params)
user.changeNext_move(CLICK_CD_MELEE)
if(isscrewdriver(I))
user.visible_message("<span class='notice'>[user] begins to unfasten [src].</span>", "<span class='notice'>You begin to unfasten [src].</span>")
if(do_after(user, 30 * I.toolspeed, target = src))
@@ -55,18 +55,7 @@
new /obj/item/mounted/mirror(get_turf(user))
qdel(src)
return
user.do_attack_animation(src)
if(broken)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
if(prob(I.force * 2))
visible_message("<span class='warning'>[user] smashes [src] with [I]!</span>")
shatter()
else
visible_message("<span class='warning'>[user] hits [src] with [I]!</span>")
playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1)
return ..()
/obj/structure/mirror/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
@@ -167,8 +156,5 @@
/obj/structure/mirror/magic/attackby(obj/item/I, mob/living/user, params)
return
/obj/structure/mirror/magic/shatter()
return //can't be broken. it's magic, i ain't gotta explain shit
/obj/structure/mirror/magic/proc/curse(mob/living/user)
return

View File

@@ -33,18 +33,3 @@
playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1)
if(src.reagents.total_volume < 1)
to_chat(user, "<span class='notice'>Out of water!</span>")
return
/obj/structure/mopbucket/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
if(prob(5))
qdel(src)
return

View File

@@ -95,19 +95,8 @@
return CanAStarPass(ID, to_dir, M.pulling)
return TRUE //diseases, stings, etc can pass
/obj/structure/plasticflaps/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(50))
qdel(src)
if(3)
if(prob(5))
qdel(src)
/obj/structure/plasticflaps/deconstruct(disassembled = TRUE)
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
new /obj/item/stack/sheet/plastic/five(loc)
qdel(src)

View File

@@ -16,17 +16,6 @@
if(BURN)
playsound(loc, 'sound/items/welder.ogg', 80, TRUE)
/obj/structure/sign/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
qdel(src)
return
if(3.0)
qdel(src)
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
if(istype(tool, /obj/item/screwdriver) && !istype(src, /obj/structure/sign/double))
to_chat(user, "You unfasten the sign with your [tool].")

View File

@@ -295,21 +295,6 @@
icon_state = "bar"
item_chair = /obj/item/chair/stool/bar
/obj/structure/chair/stool/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(70))
new buildstacktype(loc, buildstackamount)
qdel(src)
return
if(3.0)
if(prob(50))
new buildstacktype(loc, buildstackamount)
qdel(src)
/obj/item/chair
name = "chair"
desc = "Bar brawl essential."

View File

@@ -210,7 +210,7 @@
if(istype(I, /obj/item/grab))
tablepush(I, user)
return
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
if(isscrewdriver(I) && deconstruction_ready)
to_chat(user, "<span class='notice'>You start disassembling [src]...</span>")
playsound(loc, I.usesound, 50, 1)
@@ -386,7 +386,7 @@
/obj/structure/table/glass/Crossed(atom/movable/AM, oldloc)
. = ..()
if(!can_deconstruct)
if(flags & NODECONSTRUCT)
return
if(!isliving(AM))
return
@@ -616,7 +616,7 @@
held_items += item.UID()
/obj/structure/table/tray/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
var/turf/T = get_turf(src)
new buildstack(T, buildstackamount)
qdel(src)

View File

@@ -257,7 +257,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
take_damage(75)
return
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
if(isscrewdriver(I))
playsound(src, I.usesound, 75, 1)
if(reinf)

View File

@@ -198,14 +198,3 @@
if(master)
master.receive_signal()
return TRUE
/obj/item/assembly_holder/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(50))
qdel(src)
if(3)
if(prob(25))
qdel(src)

View File

@@ -60,7 +60,7 @@
STOP_PROCESSING(SSfastprocess, src)
return ..()
/obj/effect/countdown/ex_act(severity, target) //immune to explosions
/obj/effect/countdown/ex_act(severity) //immune to explosions
return
/obj/effect/countdown/singularity_pull()

View File

@@ -95,4 +95,3 @@
/obj/effect/space_dust/ex_act(severity)
qdel(src)
return

View File

@@ -40,6 +40,13 @@
beaker.ex_act(severity)
..()
/obj/machinery/biogenerator/handle_atom_del(atom/A)
..()
if(A == beaker)
beaker = null
update_icon()
updateUsrDialog()
/obj/machinery/biogenerator/RefreshParts()
var/E = 0
var/P = 0

View File

@@ -213,7 +213,7 @@
light_color = "#DDFFD3"
max_n_of_items = 10
pixel_y = -4
can_deconstruct = FALSE
flags = NODECONSTRUCT
var/empty = FALSE
/obj/machinery/smartfridge/survival_pod/Initialize(mapload)

View File

@@ -26,17 +26,6 @@
base_icon = "[icon_state][rand(1, 4)]"
icon_state = base_icon
/obj/structure/flora/ash/ex_act(severity, target)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(80))
qdel(src)
if(3)
if(prob(50))
qdel(src)
/obj/structure/flora/ash/proc/harvest(user)
if(harvested)
return 0

View File

@@ -368,14 +368,9 @@
to_chat(usr, "<span class='warning'>Required access not found.</span>")
updateUsrDialog()
/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
do_sparks(5, 1, src)
if(severity == 1)
if(prob(50))
qdel(src)
else if(severity == 2)
if(prob(25))
qdel(src)
/obj/machinery/mineral/ore_redemption/ex_act(severity)
do_sparks(5, TRUE, src)
..()
/obj/machinery/mineral/ore_redemption/power_change()
..()

View File

@@ -124,6 +124,11 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
to_chat(C, "<span class='userdanger'>[src] gets into your eyes! The pain, it burns!</span>")
qdel(src)
/obj/item/stack/ore/glass/ex_act(severity)
if(severity == EXPLODE_NONE)
return
qdel(src)
/obj/item/stack/ore/glass/basalt
name = "volcanic ash"
icon_state = "volcanic_sand"

View File

@@ -137,22 +137,6 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles,
var/occupied = 1
var/destroyed = 0
/obj/structure/tribble_cage/ex_act(severity)
switch(severity)
if(1)
new /obj/item/shard( src.loc )
Break()
qdel(src)
if(2)
if(prob(50))
src.health -= 15
src.healthcheck()
if(3)
if(prob(50))
src.health -= 5
src.healthcheck()
/obj/structure/tribble_cage/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
..()

View File

@@ -16,7 +16,7 @@
break_apart()
/obj/item/modular_computer/proc/break_apart()
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
physical.visible_message("\The [src] breaks apart!")
var/turf/newloc = get_turf(src)
new /obj/item/stack/sheet/metal(newloc, round(steel_sheet_cost/2))

View File

@@ -180,24 +180,6 @@
copyitem.forceMove(get_turf(src))
copyitem = null
updateUsrDialog()
return
/obj/machinery/photocopier/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
if(2.0)
if(prob(50))
qdel(src)
else
if(toner > 0)
new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
toner = 0
else
if(prob(50))
if(toner > 0)
new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
toner = 0
/obj/machinery/photocopier/proc/copy(var/obj/item/paper/copy)
var/obj/item/paper/c = new /obj/item/paper (loc)
@@ -318,6 +300,11 @@
P.pixel_x = rand(-9, 9)
return P
/obj/machinery/photocopier/obj_break(damage_flag)
if(!(flags & NODECONSTRUCT))
if(toner > 0)
new /obj/effect/decal/cleanable/blood/oil(get_turf(src))
toner = 0
/obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user)
check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off.

View File

@@ -1294,27 +1294,6 @@
update()
..()
/obj/machinery/power/apc/ex_act(severity)
switch(severity)
if(1.0)
//set_broken() //now Destroy() do what we need
if(cell)
cell.ex_act(1.0) // more lags woohoo
qdel(src)
return
if(2.0)
if(prob(50))
set_broken()
if(cell && prob(50))
cell.ex_act(2.0)
if(3.0)
if(prob(25))
set_broken()
if(cell && prob(25))
cell.ex_act(3.0)
return
/obj/machinery/power/apc/blob_act(obj/structure/blob/B)
set_broken()

View File

@@ -145,19 +145,13 @@
..()
/obj/item/stock_parts/cell/ex_act(severity)
..()
if(!QDELETED(src))
switch(severity)
if(EXPLODE_DEVASTATE)
qdel(src)
if(EXPLODE_HEAVY)
if(prob(50))
qdel(src)
return
if(2)
if(prob(50))
corrupt()
if(EXPLODE_LIGHT)
if(prob(25))
qdel(src)
return
if(3)
if(prob(25))
corrupt()

View File

@@ -569,19 +569,6 @@
explosion(loc,0,0,0,flame_range = 5, adminlog = 0)
qdel(src)
// explosion effect
// destroy the whole light fixture or just shatter it
/obj/machinery/light/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
break_light_tube()
if(3.0)
break_light_tube()
// timed process
// use power

View File

@@ -96,13 +96,10 @@ var/global/list/rad_collectors = list()
..()
return 1
/obj/machinery/power/rad_collector/ex_act(severity)
switch(severity)
if(2, 3)
/obj/machinery/power/rad_collector/obj_break(damage_flag)
if(!(stat & BROKEN) && !(flags & NODECONSTRUCT))
eject()
return ..()
stat |= BROKEN
/obj/machinery/power/rad_collector/proc/eject()
locked = 0

View File

@@ -310,20 +310,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
if(process_tool_hit(W,user))
return
..()
return
/obj/machinery/particle_accelerator/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
if(prob(25))
qdel(src)
/obj/machinery/particle_accelerator/proc/update_state()
return 0

View File

@@ -142,19 +142,6 @@
stat |= BROKEN
unset_control()
update_icon()
return
/obj/machinery/power/solar/ex_act(severity, target)
..()
if(!QDELETED(src))
switch(severity)
if(2)
if(prob(50) && broken())
new /obj/item/shard(src.loc)
if(3)
if(prob(25) && broken())
new /obj/item/shard(src.loc)
/obj/machinery/power/solar/fake/New(var/turf/loc, var/obj/item/solar_assembly/S)
..(loc, S, 0)
@@ -447,6 +434,12 @@
if(BURN)
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/machinery/power/solar_control/obj_break(damage_flag)
if(!(stat & BROKEN) && !(flags & NODECONSTRUCT))
playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
stat |= BROKEN
update_icon()
/obj/machinery/power/solar_control/process()
lastgen = gen
gen = 0
@@ -518,18 +511,6 @@
stat |= BROKEN
update_icon()
/obj/machinery/power/solar_control/ex_act(severity, target)
..()
if(!QDELETED(src))
switch(severity)
if(2)
if(prob(50))
broken()
if(3)
if(prob(25))
broken()
//
// MISC
//

View File

@@ -56,7 +56,7 @@
/obj/machinery/chem_dispenser/mutagensaltpeter
name = "botanical chemical dispenser"
desc = "Creates and dispenses chemicals useful for botany."
can_deconstruct = FALSE
flags = NODECONSTRUCT
dispensable_reagents = list(
"mutagen",
@@ -134,12 +134,16 @@
SSnanoui.update_uis(src) // update all UIs attached to src
/obj/machinery/chem_dispenser/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(50))
qdel(src)
if(severity < 3)
if(beaker)
beaker.ex_act(severity)
..()
/obj/machinery/chem_dispenser/handle_atom_del(atom/A)
..()
if(A == beaker)
beaker = null
overlays.Cut()
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
// update the ui if it exists, returns null if no ui is passed/found

View File

@@ -42,12 +42,21 @@
reagents.maximum_volume += B.reagents.maximum_volume
/obj/machinery/chem_master/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(50))
qdel(src)
if(severity < 3)
if(beaker)
beaker.ex_act(severity)
if(loaded_pill_bottle)
loaded_pill_bottle.ex_act(severity)
..()
/obj/machinery/chem_master/handle_atom_del(atom/A)
..()
if(A == beaker)
beaker = null
reagents.clear_reagents()
update_icon()
else if(A == loaded_pill_bottle)
loaded_pill_bottle = null
/obj/machinery/chem_master/update_icon()
overlays.Cut()

View File

@@ -122,6 +122,11 @@
beaker.ex_act(severity)
..()
/obj/machinery/reagentgrinder/handle_atom_del(atom/A)
if(A == beaker)
beaker = null
update_icon()
/obj/machinery/reagentgrinder/update_icon()
if(beaker)
icon_state = "juicer1"

View File

@@ -45,6 +45,7 @@ obj/item/reagent_containers/proc/add_initial_reagents()
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
R.on_ex_act()
if(!QDELETED(src))
..()
/obj/item/reagent_containers/attack_self(mob/user)

View File

@@ -827,8 +827,6 @@
H.vent_gas(T) // all gas vent to turf
qdel(H)
return
// call to break the pipe
// will expel any holder inside at the time
// then delete the pipe
@@ -863,24 +861,6 @@
spawn(2) // delete pipe after 2 ticks to ensure expel proc finished
qdel(src)
// pipe affected by explosion
/obj/structure/disposalpipe/ex_act(severity)
switch(severity)
if(1.0)
broken(0)
return
if(2.0)
health -= rand(5,15)
healthcheck()
return
if(3.0)
health -= rand(0,15)
healthcheck()
return
// test health for brokenness
/obj/structure/disposalpipe/proc/healthcheck()
if(health < -2)

View File

@@ -10,6 +10,18 @@
var/giftwrapped = 0
var/sortTag = 0
/obj/structure/bigDelivery/Destroy()
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
AM.forceMove(T)
return ..()
/obj/structure/bigDelivery/ex_act(severity)
for(var/atom/movable/AM in contents)
AM.ex_act()
CHECK_TICK
..()
/obj/structure/bigDelivery/attack_hand(mob/user as mob)
playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1)
if(wrapped)
@@ -75,6 +87,12 @@
var/giftwrapped = 0
var/sortTag = 0
/obj/item/smallDelivery/ex_act(severity)
for(var/atom/movable/AM in contents)
AM.ex_act()
CHECK_TICK
..()
/obj/item/smallDelivery/attack_self(mob/user as mob)
if(wrapped && wrapped.loc) //sometimes items can disappear. For example, bombs. --rastaf0
wrapped.loc = user.loc

View File

@@ -97,7 +97,7 @@
/obj/machinery/r_n_d/server/ex_act(severity)
griefProtection()
..()
return ..()
/obj/machinery/r_n_d/server/blob_act(obj/structure/blob/B)
griefProtection()

View File

@@ -77,7 +77,6 @@
icon_state = "wall_gear"
climbable = TRUE
max_integrity = 100
can_deconstruct = TRUE
anchored = TRUE
density = TRUE
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -141,7 +140,7 @@
return ..()
/obj/structure/clockwork/wall_gear/deconstruct(disassembled = TRUE)
if(can_deconstruct && disassembled)
if(!(flags & NODECONSTRUCT) && disassembled)
new /obj/item/stack/tile/brass(loc, 3)
return ..()

View File

@@ -237,25 +237,6 @@
gen_collision() //Generate collision again
return 1
//////////////////////DAMAGE PROCS
/obj/tram/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if(prob(50))
qdel(src)
return
if(3.0)
if(prob(25))
qdel(src)
return
/obj/tram/blob_act(obj/structure/blob/B)
if(prob(50))
qdel(src)
/obj/tram/attack_animal(var/mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0) return
if(prob(M.melee_damage_upper))