mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-26 10:12:17 +00:00
I-carry-onward
This commit is contained in:
@@ -968,7 +968,7 @@
|
||||
/turf/simulated/floor/mineral/bananium/lubed,
|
||||
/area/ruin/powered/clownplanet)
|
||||
"bD" = (
|
||||
/obj/effect/decal/mecha_wreckage/honker,
|
||||
/obj/structure/mecha_wreckage/honker,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4;
|
||||
invisibility = 101
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"s" = (
|
||||
/obj/effect/decal/mecha_wreckage/phazon,
|
||||
/obj/structure/mecha_wreckage/phazon,
|
||||
/turf/simulated/shuttle/floor{
|
||||
tag = "icon-floor2";
|
||||
icon_state = "floor2"
|
||||
@@ -104,14 +104,14 @@
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"u" = (
|
||||
/obj/effect/decal/mecha_wreckage/ripley/firefighter,
|
||||
/obj/structure/mecha_wreckage/ripley/firefighter,
|
||||
/turf/simulated/shuttle/floor{
|
||||
tag = "icon-floor2";
|
||||
icon_state = "floor2"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"v" = (
|
||||
/obj/effect/decal/mecha_wreckage/ripley,
|
||||
/obj/structure/mecha_wreckage/ripley,
|
||||
/turf/simulated/shuttle/floor{
|
||||
tag = "icon-floor2";
|
||||
icon_state = "floor2"
|
||||
@@ -150,7 +150,7 @@
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"A" = (
|
||||
/obj/effect/decal/mecha_wreckage/durand,
|
||||
/obj/structure/mecha_wreckage/durand,
|
||||
/turf/simulated/shuttle/floor{
|
||||
tag = "icon-floor2";
|
||||
icon_state = "floor2"
|
||||
@@ -194,7 +194,7 @@
|
||||
/turf/simulated/floor/plating/airless,
|
||||
/area/ruin/powered)
|
||||
"J" = (
|
||||
/obj/effect/decal/mecha_wreckage/odysseus,
|
||||
/obj/structure/mecha_wreckage/odysseus,
|
||||
/turf/simulated/shuttle/floor{
|
||||
tag = "icon-floor2";
|
||||
icon_state = "floor2"
|
||||
@@ -205,7 +205,7 @@
|
||||
/turf/space,
|
||||
/area/space/nearstation)
|
||||
"L" = (
|
||||
/obj/effect/decal/mecha_wreckage/gygax,
|
||||
/obj/structure/mecha_wreckage/gygax,
|
||||
/turf/simulated/shuttle/floor{
|
||||
tag = "icon-floor3";
|
||||
icon_state = "floor3"
|
||||
|
||||
@@ -3156,7 +3156,7 @@
|
||||
},
|
||||
/area/awaymission/BMPship/Aft)
|
||||
"ia" = (
|
||||
/obj/effect/decal/mecha_wreckage/ripley,
|
||||
/obj/structure/mecha_wreckage/ripley,
|
||||
/turf/simulated/floor/plating/airless,
|
||||
/area/awaymission)
|
||||
"ib" = (
|
||||
|
||||
@@ -3483,7 +3483,7 @@
|
||||
},
|
||||
/area/awaymission/centcomAway/general)
|
||||
"iP" = (
|
||||
/obj/effect/decal/mecha_wreckage/ripley,
|
||||
/obj/structure/mecha_wreckage/ripley,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "dark"
|
||||
},
|
||||
@@ -4924,7 +4924,7 @@
|
||||
},
|
||||
/area/awaymission/centcomAway/general)
|
||||
"lW" = (
|
||||
/obj/effect/decal/mecha_wreckage/seraph,
|
||||
/obj/structure/mecha_wreckage/seraph,
|
||||
/turf/simulated/floor/plasteel{
|
||||
tag = "icon-vault (NORTHEAST)";
|
||||
icon_state = "vault";
|
||||
|
||||
@@ -9138,7 +9138,7 @@
|
||||
},
|
||||
/area/admin)
|
||||
"vH" = (
|
||||
/obj/effect/decal/mecha_wreckage/phazon,
|
||||
/obj/structure/mecha_wreckage/phazon,
|
||||
/turf/unsimulated/floor{
|
||||
tag = "icon-floor";
|
||||
icon_state = "floor"
|
||||
|
||||
@@ -56,18 +56,6 @@
|
||||
if(overmind) //we should have an overmind, but...
|
||||
overmind.update_health_hud()
|
||||
|
||||
/obj/structure/blob/core/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
||||
return
|
||||
|
||||
/obj/structure/blob/core/update_icon()
|
||||
cut_overlays()
|
||||
color = null
|
||||
var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob")
|
||||
if(overmind)
|
||||
blob_overlay.color = overmind.blob_reagent_datum.color
|
||||
add_overlay(blob_overlay)
|
||||
add_overlay(mutable_appearance('icons/mob/blob.dmi', "blob_core_overlay"))
|
||||
|
||||
/obj/structure/blob/core/RegenHealth()
|
||||
return // Don't regen, we handle it in Life()
|
||||
|
||||
|
||||
@@ -20,9 +20,6 @@
|
||||
var/image/C = new('icons/mob/blob.dmi', "blob_node_overlay")
|
||||
src.overlays += C
|
||||
|
||||
/obj/structure/blob/node/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
||||
return
|
||||
|
||||
/obj/structure/blob/node/Destroy()
|
||||
blob_nodes -= src
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
@@ -37,12 +34,3 @@
|
||||
Pulse(5, i, color)
|
||||
obj_integrity = min(max_integrity, obj_integrity + 1)
|
||||
color = null
|
||||
|
||||
/obj/structure/blob/node/update_icon()
|
||||
cut_overlays()
|
||||
color = null
|
||||
var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob")
|
||||
if(overmind)
|
||||
blob_overlay.color = overmind.blob_reagent_datum.color
|
||||
add_overlay(blob_overlay)
|
||||
add_overlay(mutable_appearance('icons/mob/blob.dmi', "blob_node_overlay"))
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/structure/blob/shield
|
||||
name = "strong blob"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_idle"
|
||||
icon_state = "blob_shield"
|
||||
desc = "Some blob creature thingy"
|
||||
max_integrity = 150
|
||||
brute_resist = 0.25
|
||||
@@ -26,9 +26,6 @@
|
||||
atmosblock = TRUE
|
||||
air_update_turf(1)
|
||||
|
||||
/obj/structure/blob/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
||||
return
|
||||
|
||||
/obj/structure/blob/shield/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
if(istype(mover) && mover.checkpass(PASSBLOB)) return 1
|
||||
return 0
|
||||
@@ -36,7 +33,7 @@
|
||||
/obj/structure/blob/shield/reflective
|
||||
name = "reflective blob"
|
||||
desc = "A solid wall of slightly twitching tendrils with a reflective glow."
|
||||
icon_state = "blob_idle_glow"
|
||||
icon_state = "blob_glow"
|
||||
max_integrity = 100
|
||||
brute_resist = 0.5
|
||||
explosion_block = 2
|
||||
|
||||
@@ -53,12 +53,6 @@
|
||||
var/atom/movable/mover = caller
|
||||
. = . || mover.checkpass(PASSBLOB)
|
||||
|
||||
/obj/structure/blob/update_icon() //Updates color based on overmind color if we have an overmind.
|
||||
if(overmind)
|
||||
add_atom_colour(overmind.blob_reagent_datum.color, FIXED_COLOUR_PRIORITY)
|
||||
else
|
||||
remove_atom_colour(FIXED_COLOUR_PRIORITY)
|
||||
|
||||
/obj/structure/blob/process()
|
||||
Life()
|
||||
return
|
||||
|
||||
@@ -234,8 +234,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/camera/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(!(stat & BROKEN))
|
||||
return 0
|
||||
if(stat & BROKEN)
|
||||
return damage_amount
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/camera/obj_break(damage_flag)
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
if(occupant.health >= 0 && occupant.stat == DEAD)
|
||||
occupant.update_revive()
|
||||
occupant.lying = 0
|
||||
update_icon()
|
||||
sleep(10)
|
||||
active = 0
|
||||
add_fingerprint(usr)
|
||||
|
||||
@@ -8,18 +8,17 @@
|
||||
light_color = "#00FF00"
|
||||
var/prize = /obj/item/stack/tickets
|
||||
|
||||
/obj/machinery/computer/arcade/power_change()
|
||||
..()
|
||||
if(!(stat & (BROKEN|NOPOWER)))
|
||||
set_light(2)
|
||||
else
|
||||
set_light(0)
|
||||
/obj/machinery/computer/arcade/proc/Reset()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/arcade/New()
|
||||
..()
|
||||
if(!circuit)
|
||||
var/choice = pick(subtypesof(/obj/machinery/computer/arcade))
|
||||
new choice(loc)
|
||||
qdel(src)
|
||||
return
|
||||
Reset()
|
||||
|
||||
|
||||
/obj/machinery/computer/arcade/proc/prizevend(var/score)
|
||||
@@ -65,7 +64,7 @@
|
||||
var/blocked = 0 //Player cannot attack/heal while set
|
||||
var/turtle = 0
|
||||
|
||||
/obj/machinery/computer/arcade/battle/New()
|
||||
/obj/machinery/computer/arcade/battle/Reset()
|
||||
var/name_action
|
||||
var/name_part1
|
||||
var/name_part2
|
||||
@@ -166,7 +165,7 @@
|
||||
turtle = 0
|
||||
|
||||
if(emagged)
|
||||
New()
|
||||
Reset()
|
||||
emagged = 0
|
||||
|
||||
add_fingerprint(usr)
|
||||
@@ -186,7 +185,7 @@
|
||||
new /obj/item/clothing/head/collectable/petehat(get_turf(src))
|
||||
message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
|
||||
log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.")
|
||||
New()
|
||||
Reset()
|
||||
emagged = 0
|
||||
else
|
||||
feedback_inc("arcade_win_normal")
|
||||
@@ -311,7 +310,7 @@
|
||||
var/spaceport_freebie = 0
|
||||
var/last_spaceport_action = ""
|
||||
|
||||
/obj/machinery/computer/arcade/orion_trail/New()
|
||||
/obj/machinery/computer/arcade/orion_trail/Reset()
|
||||
// Sets up the main trail
|
||||
stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime")
|
||||
stopblurbs = list(
|
||||
|
||||
@@ -453,6 +453,7 @@
|
||||
to_chat(user, "<span class='notice'>You wrench the frame into place.</span>")
|
||||
anchored = 1
|
||||
state = 1
|
||||
return
|
||||
if(istype(P, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = P
|
||||
if(!WT.remove_fuel(0, user))
|
||||
@@ -471,6 +472,7 @@
|
||||
to_chat(user, "<span class='notice'>You unfasten the frame.</span>")
|
||||
anchored = 0
|
||||
state = 0
|
||||
return
|
||||
if(istype(P, /obj/item/circuitboard) && !circuit)
|
||||
var/obj/item/circuitboard/B = P
|
||||
if(B.board_type == "computer")
|
||||
@@ -482,11 +484,13 @@
|
||||
P.loc = src
|
||||
else
|
||||
to_chat(user, "<span class='warning'>This frame does not accept circuit boards of this type!</span>")
|
||||
return
|
||||
if(istype(P, /obj/item/screwdriver) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You screw the circuit board into place.</span>")
|
||||
state = 2
|
||||
icon_state = "2"
|
||||
return
|
||||
if(istype(P, /obj/item/crowbar) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You remove the circuit board.</span>")
|
||||
@@ -501,6 +505,7 @@
|
||||
to_chat(user, "<span class='notice'>You unfasten the circuit board.</span>")
|
||||
state = 1
|
||||
icon_state = "1"
|
||||
return
|
||||
if(istype(P, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = P
|
||||
if(C.amount >= 5)
|
||||
@@ -525,7 +530,7 @@
|
||||
icon_state = "2"
|
||||
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc )
|
||||
A.amount = 5
|
||||
|
||||
return
|
||||
if(istype(P, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/G = P
|
||||
if(G.amount >= 2)
|
||||
@@ -549,6 +554,7 @@
|
||||
state = 3
|
||||
icon_state = "3"
|
||||
new /obj/item/stack/sheet/glass(loc, 2)
|
||||
return
|
||||
if(istype(P, /obj/item/screwdriver))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You connect the monitor.</span>")
|
||||
@@ -563,6 +569,7 @@
|
||||
SC.can_order_contraband = C.contraband_enabled
|
||||
qdel(src)
|
||||
return
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/obj/machinery/constructable_frame/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
new /obj/item/stack/sheet/metal(loc, 5)
|
||||
if(state >= 3)
|
||||
if(state >= 2)
|
||||
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil(loc)
|
||||
A.amount = 5
|
||||
if(circuit)
|
||||
@@ -121,8 +121,6 @@
|
||||
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil(src.loc,5)
|
||||
A.amount = 5
|
||||
return
|
||||
return
|
||||
|
||||
if(3)
|
||||
if(istype(P, /obj/item/crowbar))
|
||||
playsound(src.loc, P.usesound, 50, 1)
|
||||
@@ -214,8 +212,10 @@
|
||||
to_chat(user, "<span class='danger'>You cannot add that to the machine!</span>")
|
||||
return 0
|
||||
return
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
return ..()
|
||||
|
||||
|
||||
//Machine Frame Circuit Boards
|
||||
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
|
||||
micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
max_temperature = 30000
|
||||
infra_luminosity = 8
|
||||
force = 40
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/durand
|
||||
wreckage = /obj/structure/mecha_wreckage/durand
|
||||
|
||||
/obj/mecha/combat/durand/GrantActions(mob/living/user, human_occupant = 0)
|
||||
..()
|
||||
@@ -41,4 +41,4 @@
|
||||
max_temperature = 30000
|
||||
infra_luminosity = 8
|
||||
force = 40
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/durand/old
|
||||
wreckage = /obj/structure/mecha_wreckage/durand/old
|
||||
@@ -11,7 +11,7 @@
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 6
|
||||
leg_overload_coeff = 2
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/gygax
|
||||
wreckage = /obj/structure/mecha_wreckage/gygax
|
||||
internal_damage_threshold = 35
|
||||
max_equip = 3
|
||||
maxsize = 2
|
||||
@@ -44,7 +44,7 @@
|
||||
max_temperature = 35000
|
||||
leg_overload_coeff = 100
|
||||
operation_req_access = list(access_syndicate)
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
|
||||
wreckage = /obj/structure/mecha_wreckage/gygax/dark
|
||||
max_equip = 4
|
||||
maxsize = 2
|
||||
starting_voice = /obj/item/mecha_modkit/voice/syndicate
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 5
|
||||
operation_req_access = list(access_clown)
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/honker
|
||||
wreckage = /obj/structure/mecha_wreckage/honker
|
||||
add_req_access = 0
|
||||
max_equip = 3
|
||||
starting_voice = /obj/item/mecha_modkit/voice/honk
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
infra_luminosity = 3
|
||||
operation_req_access = list(access_cent_specops)
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/marauder
|
||||
wreckage = /obj/structure/mecha_wreckage/marauder
|
||||
add_req_access = 0
|
||||
internal_damage_threshold = 25
|
||||
force = 45
|
||||
@@ -52,7 +52,7 @@
|
||||
operation_req_access = list(access_cent_commander)
|
||||
step_in = 3
|
||||
max_integrity = 550
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/seraph
|
||||
wreckage = /obj/structure/mecha_wreckage/seraph
|
||||
internal_damage_threshold = 20
|
||||
force = 80
|
||||
max_equip = 8
|
||||
@@ -89,7 +89,7 @@
|
||||
icon_state = "mauler"
|
||||
initial_icon = "mauler"
|
||||
operation_req_access = list(access_syndicate)
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/mauler
|
||||
wreckage = /obj/structure/mecha_wreckage/mauler
|
||||
starting_voice = /obj/item/mecha_modkit/voice/syndicate
|
||||
|
||||
/obj/mecha/combat/marauder/mauler/loaded/New()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 50, "fire" = 100, "acid" = 100)
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 3
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/phazon
|
||||
wreckage = /obj/structure/mecha_wreckage/phazon
|
||||
add_req_access = 1
|
||||
//operation_req_access = list()
|
||||
internal_damage_threshold = 25
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
deflect_chance = 30
|
||||
armor = list("melee" = 25, "bullet" = 20, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
max_temperature = 15000
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/reticence
|
||||
wreckage = /obj/structure/mecha_wreckage/reticence
|
||||
operation_req_access = list(access_mime)
|
||||
add_req_access = 0
|
||||
internal_damage_threshold = 60
|
||||
|
||||
@@ -40,10 +40,9 @@
|
||||
if(isliving(target))
|
||||
drill_mob(target, chassis.occupant)
|
||||
playsound(src, 'sound/weapons/drill.ogg', 40, TRUE)
|
||||
else if(istype(target, /obj))
|
||||
else if(isobj(target))
|
||||
var/obj/O = target
|
||||
//O.take_damage(15, BRUTE, 0, FALSE, get_dir(chassis, target))
|
||||
O.ex_act(2)//TO-DO-OBJECT-DAMAGE: Kill off when everything is damageable
|
||||
O.take_damage(15, BRUTE, 0, FALSE, get_dir(chassis, target))
|
||||
playsound(src, 'sound/weapons/drill.ogg', 40, TRUE)
|
||||
else
|
||||
set_ready_state(TRUE)
|
||||
|
||||
@@ -113,7 +113,6 @@
|
||||
smoke_system.set_up(3, src)
|
||||
smoke_system.attach(src)
|
||||
add_cell()
|
||||
|
||||
START_PROCESSING(SSobj, src)
|
||||
GLOB.poi_list |= src
|
||||
log_message("[src] created.")
|
||||
@@ -602,24 +601,31 @@
|
||||
if(occupant)
|
||||
occupant.ex_act(severity)
|
||||
|
||||
/obj/mecha/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
occupant = null
|
||||
icon_state = initial(icon_state)+"-open"
|
||||
setDir(dir_in)
|
||||
|
||||
/obj/mecha/Destroy()
|
||||
if(occupant)
|
||||
occupant.SetSleeping(destruction_sleep_duration)
|
||||
go_out()
|
||||
var/mob/living/silicon/ai/AI
|
||||
for(var/mob/M in src) //Let's just be ultra sure
|
||||
if(isAI(M))
|
||||
M.gib() //AIs are loaded into the mech computer itself. When the mech dies, so does the AI. Forever.
|
||||
occupant = null
|
||||
AI = M //AIs are loaded into the mech computer itself. When the mech dies, so does the AI. They can be recovered with an AI card from the wreck.
|
||||
else
|
||||
M.forceMove(loc)
|
||||
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/E in equipment)
|
||||
E.detach(loc)
|
||||
qdel(E)
|
||||
equipment.Cut()
|
||||
QDEL_NULL(cell)
|
||||
QDEL_NULL(internal_tank)
|
||||
|
||||
if(AI)
|
||||
AI.gib() //No wreck, no AI to recover
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
GLOB.poi_list.Remove(src)
|
||||
if(loc)
|
||||
@@ -638,7 +644,7 @@
|
||||
/obj/mecha/emp_act(severity)
|
||||
if(get_charge())
|
||||
use_power((cell.charge/3)/(severity*2))
|
||||
take_damage(50 / severity, "energy")
|
||||
take_damage(30 / severity, BURN, "energy", 1)
|
||||
log_message("EMP detected", 1)
|
||||
check_for_internal_damage(list(MECHA_INT_FIRE, MECHA_INT_TEMP_CONTROL, MECHA_INT_CONTROL_LOST, MECHA_INT_SHORT_CIRCUIT), 1)
|
||||
|
||||
@@ -646,7 +652,7 @@
|
||||
..()
|
||||
if(exposed_temperature > max_temperature)
|
||||
log_message("Exposed to dangerous temperature.", 1)
|
||||
take_damage(5, "fire")
|
||||
take_damage(5, BURN, 0, 1)
|
||||
check_for_internal_damage(list(MECHA_INT_FIRE, MECHA_INT_TEMP_CONTROL))
|
||||
|
||||
//////////////////////
|
||||
@@ -1355,7 +1361,7 @@
|
||||
if(cabin_air && cabin_air.return_volume()>0)
|
||||
cabin_air.temperature = min(6000+T0C, cabin_air.return_temperature()+rand(10,15))
|
||||
if(cabin_air.return_temperature() > max_temperature/2)
|
||||
take_damage(4/round(max_temperature/cabin_air.return_temperature(),0.1),"fire")
|
||||
take_damage(4/round(max_temperature/cabin_air.return_temperature(),0.1), BURN, 0, 0)
|
||||
|
||||
if(internal_damage & MECHA_INT_TANK_BREACH) //remove some air from internal tank
|
||||
if(internal_tank)
|
||||
@@ -1444,7 +1450,7 @@
|
||||
if(isAI(occupant))
|
||||
AI = occupant
|
||||
occupant = null
|
||||
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(loc, AI)
|
||||
var/obj/structure/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
|
||||
|
||||
@@ -3,170 +3,180 @@
|
||||
///////////////////////////////////
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage
|
||||
name = "Exosuit wreckage"
|
||||
desc = "Remains of some unfortunate mecha. Completely unrepairable."
|
||||
/obj/structure/mecha_wreckage
|
||||
name = "exosuit wreckage"
|
||||
desc = "Remains of some unfortunate mecha. Completely unrepairable, but perhaps something can be salvaged."
|
||||
icon = 'icons/mecha/mecha.dmi'
|
||||
density = 1
|
||||
anchored = 0
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
opacity = 0
|
||||
var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel,/obj/item/stack/sheet/metal,/obj/item/stack/rods)
|
||||
var/list/wirecutters_salvage = list(/obj/item/stack/cable_coil)
|
||||
var/list/crowbar_salvage
|
||||
var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/metal, /obj/item/stack/rods)
|
||||
var/salvage_num = 5
|
||||
var/list/crowbar_salvage = list()
|
||||
var/wires_removed = FALSE
|
||||
var/mob/living/silicon/ai/AI //AIs to be salvaged
|
||||
var/list/parts
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/New()
|
||||
..()
|
||||
crowbar_salvage = new
|
||||
/obj/structure/mecha_wreckage/Initialize(mapload, mob/living/silicon/ai/AI_pilot)
|
||||
. = ..()
|
||||
if(parts)
|
||||
for(var/i in 1 to 2)
|
||||
if(!parts.len)
|
||||
break
|
||||
if(prob(60))
|
||||
continue
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts = null
|
||||
if(!AI_pilot) //Type-checking for this is already done in mecha/Destroy()
|
||||
return
|
||||
AI = AI_pilot
|
||||
AI.apply_damage(150, BURN) //Give the AI a bit of damage from the "shock" of being suddenly shut down
|
||||
AI.death() //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair.
|
||||
AI.forceMove(src) //Put the dead AI inside the wreckage for recovery
|
||||
add_overlay(mutable_appearance('icons/obj/projectiles.dmi', "green_laser")) //Overlay for the recovery beacon
|
||||
AI.controlled_mech = null
|
||||
AI.remote_control = null
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/ex_act(severity)
|
||||
if(severity < 2)
|
||||
qdel(src)
|
||||
/obj/structure/mecha_wreckage/Destroy()
|
||||
QDEL_NULL(AI)
|
||||
QDEL_LIST(crowbar_salvage)
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/bullet_act(obj/item/projectile/Proj)
|
||||
/obj/structure/mecha_wreckage/examine(mob/user)
|
||||
. = ..()
|
||||
if(!AI)
|
||||
return
|
||||
. += "<span class='notice'>The AI recovery beacon is active.</span>"
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(salvage_num <= 0)
|
||||
user.visible_message("[user] begins to slice apart the now completely stripped [src].", "You begin to slice apart the [src].", "You hear the sound of a welder nearby.")
|
||||
if(WT.remove_fuel(0,user) && do_after(user, 80 * WT.toolspeed, target = src))
|
||||
user.visible_message("The now-dilapidated [src] falls apart in a clatter.", "As you slice apart the final support structures, the [src] falls apart in a heap.", "You hear metal clanking to the floor.")
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
var/obj/item/stack/rods/rods = new /obj/item/stack/rods(src.loc)
|
||||
rods.amount = 2
|
||||
qdel(src)
|
||||
else
|
||||
if(isemptylist(welder_salvage))
|
||||
to_chat(user, "<span class='warning'>What's left on the [src] cannot be removed with a welder, besides the frame itself</span>")
|
||||
else if(WT.remove_fuel(0,user))
|
||||
var/type = prob(70)?pick(welder_salvage):null
|
||||
if(type)
|
||||
/obj/structure/mecha_wreckage/attackby(obj/item/I, mob/user, params)
|
||||
if(iswelder(I))
|
||||
if(salvage_num <= 0 || !length(welder_salvage))
|
||||
to_chat(user, "<span class='notice'>You don't see anything that can be cut with [I]!</span>")
|
||||
return
|
||||
var/obj/item/weldingtool/WT = I
|
||||
playsound(get_turf(src), WT.usesound, 50, TRUE)
|
||||
if(!WT.remove_fuel(0, user))
|
||||
return
|
||||
if(prob(30))
|
||||
to_chat(user, "<span class='notice'>You fail to salvage anything valuable from [src]!</span>")
|
||||
return
|
||||
var/type = pick(welder_salvage)
|
||||
var/N = new type(get_turf(user))
|
||||
user.visible_message("[user] cuts [N] from [src]", "You cut [N] from [src]", "You hear a sound of welder nearby")
|
||||
if(istype(N, /obj/item/mecha_parts/part))
|
||||
user.visible_message("[user] cuts [N] from [src].", "<span class='notice'>You cut [N] from [src].</span>")
|
||||
if(!istype(N, /obj/item/stack))
|
||||
welder_salvage -= type
|
||||
salvage_num--
|
||||
else
|
||||
to_chat(user, "You failed to salvage anything valuable from [src].")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
|
||||
else if(istype(W, /obj/item/wirecutters))
|
||||
if(salvage_num <= 0)
|
||||
to_chat(user, "You don't see anything that can be cut with [W].")
|
||||
return
|
||||
else if(!isemptylist(wirecutters_salvage))
|
||||
var/type = prob(70)?pick(wirecutters_salvage):null
|
||||
if(type)
|
||||
var/N = new type(get_turf(user))
|
||||
user.visible_message("[user] cuts [N] from [src].", "You cut [N] from [src].")
|
||||
salvage_num--
|
||||
else
|
||||
to_chat(user, "You failed to salvage anything valuable from [src].")
|
||||
else if(istype(W, /obj/item/crowbar))
|
||||
if(!isemptylist(crowbar_salvage))
|
||||
|
||||
if(iswirecutter(I))
|
||||
if(wires_removed)
|
||||
to_chat(user, "<span class='notice'>You don't see anything that can be cut with [I]!</span>")
|
||||
return
|
||||
var/N = new /obj/item/stack/cable_coil(get_turf(user), rand(1, 3))
|
||||
user.visible_message("[user] cuts [N] from [src].", "<span class='notice'>You cut [N] from [src].</span>")
|
||||
wires_removed = TRUE
|
||||
return
|
||||
|
||||
if(iscrowbar(I))
|
||||
if(crowbar_salvage.len)
|
||||
var/obj/S = pick(crowbar_salvage)
|
||||
if(S)
|
||||
S.loc = get_turf(user)
|
||||
S.forceMove(user.drop_location())
|
||||
user.visible_message("<span class='notice'>[user] pries [S] from [src].</span>", "<span class='notice'>You pry [S] from [src].</span>")
|
||||
crowbar_salvage -= S
|
||||
user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].")
|
||||
else
|
||||
to_chat(user, "You don't see anything that can be pried with [W].")
|
||||
else
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You don't see anything that can be cut with [I]!</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/gygax
|
||||
name = "Gygax wreckage"
|
||||
icon_state = "gygax-broken"
|
||||
/obj/structure/mecha_wreckage/transfer_ai(interaction, mob/user, null, obj/item/aicard/card)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/gygax/New()
|
||||
..()
|
||||
var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso,
|
||||
//Proc called on the wreck by the AI card.
|
||||
if(interaction != AI_TRANS_TO_CARD) //AIs can only be transferred in one direction, from the wreck to the card.
|
||||
return
|
||||
if(!AI) //No AI in the wreck
|
||||
to_chat(user, "<span class='warning'>No AI backups found.</span>")
|
||||
return
|
||||
cut_overlays() //Remove the recovery beacon overlay
|
||||
AI.forceMove(card) //Move the dead AI to the card.
|
||||
if(AI.client) //AI player is still in the dead AI and is connected
|
||||
to_chat(AI, "The remains of your file system have been recovered on a mobile storage device.")
|
||||
else //Give the AI a heads-up that it is probably going to get fixed.
|
||||
AI.notify_ghost_cloning("You have been recovered from the wreckage!", source = card)
|
||||
to_chat(user, "<span class='boldnotice'>Backup files recovered</span>: [AI.name] ([rand(1000, 9999)].exe) salvaged from [name] and stored within local memory.")
|
||||
AI = null
|
||||
|
||||
/obj/structure/mecha_wreckage/gygax
|
||||
name = "\improper Gygax wreckage"
|
||||
icon_state = "gygax-broken"
|
||||
parts = list(
|
||||
/obj/item/mecha_parts/part/gygax_torso,
|
||||
/obj/item/mecha_parts/part/gygax_head,
|
||||
/obj/item/mecha_parts/part/gygax_left_arm,
|
||||
/obj/item/mecha_parts/part/gygax_right_arm,
|
||||
/obj/item/mecha_parts/part/gygax_left_leg,
|
||||
/obj/item/mecha_parts/part/gygax_right_leg)
|
||||
for(var/i=0;i<2;i++)
|
||||
if(!isemptylist(parts) && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
return
|
||||
/obj/item/mecha_parts/part/gygax_right_leg
|
||||
)
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/gygax/dark
|
||||
name = "Dark Gygax wreckage"
|
||||
/obj/structure/mecha_wreckage/gygax/dark
|
||||
name = "\improper Dark Gygax wreckage"
|
||||
icon_state = "darkgygax-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/marauder
|
||||
name = "Marauder wreckage"
|
||||
/obj/structure/mecha_wreckage/marauder
|
||||
name = "\improper Marauder wreckage"
|
||||
icon_state = "marauder-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/mauler
|
||||
name = "Mauler wreckage"
|
||||
/obj/structure/mecha_wreckage/mauler
|
||||
name = "\improper Mauler wreckage"
|
||||
icon_state = "mauler-broken"
|
||||
desc = "The syndicate won't be very happy about this..."
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/seraph
|
||||
name = "Seraph wreckage"
|
||||
/obj/structure/mecha_wreckage/seraph
|
||||
name = "\improper Seraph wreckage"
|
||||
icon_state = "seraph-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/reticence
|
||||
/obj/structure/mecha_wreckage/reticence
|
||||
name = "\improper Reticence wreckage"
|
||||
icon_state = "mime-broken"
|
||||
icon_state = "reticence-broken"
|
||||
color = "#87878715"
|
||||
desc = "..."
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/ripley
|
||||
name = "Ripley wreckage"
|
||||
/obj/structure/mecha_wreckage/ripley
|
||||
name = "\improper Ripley wreckage"
|
||||
icon_state = "ripley-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/ripley/New()
|
||||
..()
|
||||
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||
parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||
/obj/item/mecha_parts/part/ripley_left_arm,
|
||||
/obj/item/mecha_parts/part/ripley_right_arm,
|
||||
/obj/item/mecha_parts/part/ripley_left_leg,
|
||||
/obj/item/mecha_parts/part/ripley_right_leg)
|
||||
for(var/i=0;i<2;i++)
|
||||
if(!isemptylist(parts) && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
return
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/ripley/firefighter
|
||||
name = "Firefighter wreckage"
|
||||
/obj/structure/mecha_wreckage/ripley/mkii
|
||||
name = "\improper Ripley MK-II wreckage"
|
||||
icon_state = "ripleymkii-broken"
|
||||
|
||||
/obj/structure/mecha_wreckage/ripley/firefighter
|
||||
name = "\improper Firefighter wreckage"
|
||||
icon_state = "firefighter-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/ripley/firefighter/New()
|
||||
..()
|
||||
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||
parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||
/obj/item/mecha_parts/part/ripley_left_arm,
|
||||
/obj/item/mecha_parts/part/ripley_right_arm,
|
||||
/obj/item/mecha_parts/part/ripley_left_leg,
|
||||
/obj/item/mecha_parts/part/ripley_right_leg,
|
||||
/obj/item/clothing/suit/fire)
|
||||
for(var/i=0;i<2;i++)
|
||||
if(!isemptylist(parts) && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
return
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/ripley/deathripley
|
||||
name = "Death-Ripley wreckage"
|
||||
/obj/structure/mecha_wreckage/ripley/deathripley
|
||||
name = "\improper Death-Ripley wreckage"
|
||||
icon_state = "deathripley-broken"
|
||||
parts = null
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/honker
|
||||
name = "Honker wreckage"
|
||||
/obj/structure/mecha_wreckage/honker
|
||||
name = "\improper H.O.N.K wreckage"
|
||||
icon_state = "honker-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/honker/New()
|
||||
..()
|
||||
var/list/parts = list(
|
||||
desc = "All is right in the universe."
|
||||
parts = list(
|
||||
/obj/item/mecha_parts/chassis/honker,
|
||||
/obj/item/mecha_parts/part/honker_torso,
|
||||
/obj/item/mecha_parts/part/honker_head,
|
||||
@@ -174,59 +184,33 @@
|
||||
/obj/item/mecha_parts/part/honker_right_arm,
|
||||
/obj/item/mecha_parts/part/honker_left_leg,
|
||||
/obj/item/mecha_parts/part/honker_right_leg)
|
||||
for(var/i=0;i<2;i++)
|
||||
if(!isemptylist(parts) && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
return
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/durand
|
||||
name = "Durand wreckage"
|
||||
/obj/structure/mecha_wreckage/durand
|
||||
name = "\improper Durand wreckage"
|
||||
icon_state = "durand-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/durand/New()
|
||||
..()
|
||||
var/list/parts = list(
|
||||
parts = list(
|
||||
/obj/item/mecha_parts/part/durand_torso,
|
||||
/obj/item/mecha_parts/part/durand_head,
|
||||
/obj/item/mecha_parts/part/durand_left_arm,
|
||||
/obj/item/mecha_parts/part/durand_right_arm,
|
||||
/obj/item/mecha_parts/part/durand_left_leg,
|
||||
/obj/item/mecha_parts/part/durand_right_leg)
|
||||
for(var/i=0;i<2;i++)
|
||||
if(!isemptylist(parts) && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/durand/old
|
||||
name = "Durand wreckage"
|
||||
/obj/structure/mecha_wreckage/durand/old
|
||||
icon_state = "old_durand-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/phazon
|
||||
name = "Phazon wreckage"
|
||||
/obj/structure/mecha_wreckage/phazon
|
||||
name = "\improper Phazon wreckage"
|
||||
icon_state = "phazon-broken"
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/odysseus
|
||||
name = "Odysseus wreckage"
|
||||
/obj/structure/mecha_wreckage/odysseus
|
||||
name = "\improper Odysseus wreckage"
|
||||
icon_state = "odysseus-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/odysseus/New()
|
||||
..()
|
||||
var/list/parts = list(
|
||||
parts = list(
|
||||
/obj/item/mecha_parts/part/odysseus_torso,
|
||||
/obj/item/mecha_parts/part/odysseus_head,
|
||||
/obj/item/mecha_parts/part/odysseus_left_arm,
|
||||
/obj/item/mecha_parts/part/odysseus_right_arm,
|
||||
/obj/item/mecha_parts/part/odysseus_left_leg,
|
||||
/obj/item/mecha_parts/part/odysseus_right_leg)
|
||||
for(var/i=0;i<2;i++)
|
||||
if(!isemptylist(parts) && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
return
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
step_in = 3
|
||||
max_temperature = 15000
|
||||
max_integrity = 120
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/odysseus
|
||||
wreckage = /obj/structure/mecha_wreckage/odysseus
|
||||
internal_damage_threshold = 35
|
||||
deflect_chance = 15
|
||||
step_energy_drain = 6
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
deflect_chance = 15
|
||||
armor = list("melee" = 40, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
max_equip = 6
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/ripley
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley
|
||||
var/list/cargo = new
|
||||
var/cargo_capacity = 15
|
||||
var/hides = 0
|
||||
@@ -72,7 +72,7 @@
|
||||
lights_power = 7
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 60, "bio" = 0, "rad" = 70, "fire" = 100, "acid" = 100)
|
||||
max_equip = 5 // More armor, less tools
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/firefighter
|
||||
|
||||
/obj/mecha/working/ripley/deathripley
|
||||
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
|
||||
@@ -86,7 +86,7 @@
|
||||
max_integrity = 300
|
||||
lights_power = 7
|
||||
armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 0, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/ripley/deathripley
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/deathripley
|
||||
step_energy_drain = 0
|
||||
normal_step_energy_drain = 0
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
trigger_alarm()
|
||||
|
||||
/obj/structure/displaycase/proc/trigger_alarm()
|
||||
set waitfor = FALSE
|
||||
if(alert && is_station_contact(z))
|
||||
var/area/alarmed = get_area(src)
|
||||
alarmed.burglaralert(src)
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
else
|
||||
bound_width = world.icon_size
|
||||
bound_height = width * world.icon_size
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/structure/door_assembly/multi_tile/Move()
|
||||
. = ..()
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
|
||||
/obj/machinery/icemachine/New()
|
||||
..()
|
||||
create_reagents(500)
|
||||
|
||||
/obj/machinery/icemachine/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
visible_message("<span class='userdanger'>[src] blows apart!</span>")
|
||||
do_sparks(3, 1, src)
|
||||
new /obj/effect/decal/cleanable/blood/oil(loc)
|
||||
var/obj/effect/decal/mecha_wreckage/gygax/dark/wreck = new /obj/effect/decal/mecha_wreckage/gygax/dark(loc)
|
||||
var/obj/structure/mecha_wreckage/gygax/dark/wreck = new /obj/structure/mecha_wreckage/gygax/dark(loc)
|
||||
wreck.name = "sentry bot wreckage"
|
||||
|
||||
raise_alert("[src] destroyed.")
|
||||
|
||||
@@ -673,8 +673,8 @@
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
|
||||
/obj/machinery/power/apc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if((!(stat & BROKEN) || malfai))
|
||||
return 0
|
||||
if(stat & BROKEN)
|
||||
return damage_amount
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/apc/obj_break(damage_flag)
|
||||
|
||||
@@ -38,6 +38,10 @@
|
||||
else if(istype(A, /obj/singularity))
|
||||
var/obj/singularity/S = A
|
||||
S.energy += energy
|
||||
else if(istype(A, /obj/structure/blob))
|
||||
var/obj/structure/blob/B = A
|
||||
B.take_damage(energy * 0.6)
|
||||
movement_range = 0
|
||||
|
||||
/obj/effect/accelerated_particle/Crossed(atom/A, oldloc)
|
||||
if(isliving(A))
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
else if(closest_blob)
|
||||
continue
|
||||
|
||||
else if(istype(A, /obj/structure))
|
||||
else if(isstructure(A))
|
||||
var/obj/structure/S = A
|
||||
var/dist = get_dist(source, A)
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !S.being_shocked)
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
if(!user.drop_item())
|
||||
return
|
||||
if(I)
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
|
||||
to_chat(user, "You place \the [I] into the [src].")
|
||||
for(var/mob/M in viewers(src))
|
||||
@@ -833,14 +833,14 @@
|
||||
// will expel any holder inside at the time
|
||||
// then delete the pipe
|
||||
// remains : set to leave broken pipe pieces in place
|
||||
/obj/structure/disposalpipe/proc/broken(var/remains = 0)
|
||||
/obj/structure/disposalpipe/proc/broken(remains = 0)
|
||||
if(remains)
|
||||
for(var/D in cardinal)
|
||||
if(D & dpdir)
|
||||
var/obj/structure/disposalpipe/broken/P = new(src.loc)
|
||||
P.dir = D
|
||||
P.setDir(D)
|
||||
|
||||
src.invisibility = 101 // make invisible (since we won't delete the pipe immediately)
|
||||
invisibility = 101 // make invisible (since we won't delete the pipe immediately)
|
||||
var/obj/structure/disposalholder/H = locate() in src
|
||||
if(H)
|
||||
// holder was present
|
||||
@@ -863,6 +863,18 @@
|
||||
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)
|
||||
broken(0)
|
||||
if(2)
|
||||
health -= rand(5, 15)
|
||||
healthcheck()
|
||||
if(3)
|
||||
health -= rand(0, 15)
|
||||
healthcheck()
|
||||
|
||||
// test health for brokenness
|
||||
/obj/structure/disposalpipe/proc/healthcheck()
|
||||
if(health < -2)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 836 KiB After Width: | Height: | Size: 1.2 MiB |
Reference in New Issue
Block a user