mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 02:24:11 +01:00
for-if-I-stand-I-stand-by-his-will-alone
This commit is contained in:
@@ -13,6 +13,7 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
|
||||
anchored = 1
|
||||
layer = GAS_PIPE_HIDDEN_LAYER //under wires
|
||||
resistance_flags = FIRE_PROOF
|
||||
max_integrity = 200
|
||||
plane = FLOOR_PLANE
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
name = "pressure tank"
|
||||
desc = "A large vessel containing pressurized gas."
|
||||
|
||||
max_integrity = 800
|
||||
|
||||
var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters ~tweaked it a little to simulate a pressure tank without needing to recode them yet
|
||||
|
||||
density = 1
|
||||
|
||||
@@ -295,8 +295,9 @@
|
||||
~~~~~~~~~~~~~~~~~~~~~*/
|
||||
/obj/mecha/proc/diag_hud_set_mechhealth()
|
||||
var/image/holder = hud_list[DIAG_MECH_HUD]
|
||||
holder.icon_state = "huddiag[RoundDiagBar(health/initial(health))]"
|
||||
|
||||
var/icon/I = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = I.Height() - world.icon_size
|
||||
holder.icon_state = "huddiag[RoundDiagBar(obj_integrity/max_integrity)]"
|
||||
|
||||
/obj/mecha/proc/diag_hud_set_mechcell()
|
||||
var/image/holder = hud_list[DIAG_BATT_HUD]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "blob core"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blank_blob"
|
||||
health = 200
|
||||
max_integrity = 400
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 90)
|
||||
fire_resist = 2
|
||||
point_return = -1
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
name = "factory blob"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_factory"
|
||||
health = 100
|
||||
fire_resist = 2
|
||||
max_integrity = 200
|
||||
point_return = 18
|
||||
var/list/spores = list()
|
||||
var/max_spores = 3
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
name = "blob node"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blank_blob"
|
||||
health = 100
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 65, "acid" = 90)
|
||||
fire_resist = 2
|
||||
point_return = 18
|
||||
|
||||
/obj/structure/blob/node/New(loc, var/h = 100)
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
name = "resource blob"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_resource"
|
||||
health = 30
|
||||
fire_resist = 2
|
||||
max_integrity = 60
|
||||
point_return = 12
|
||||
var/resource_delay = 0
|
||||
|
||||
|
||||
@@ -3,20 +3,28 @@
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_idle"
|
||||
desc = "Some blob creature thingy"
|
||||
health = 75
|
||||
fire_resist = 2
|
||||
point_return = 4
|
||||
var/maxHealth = 75
|
||||
max_integrity = 150
|
||||
brute_resist = 0.25
|
||||
explosion_block = 3
|
||||
atmosblock = TRUE
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
|
||||
/obj/structure/blob/shield/core
|
||||
point_return = 0
|
||||
|
||||
/obj/structure/blob/shield/update_icon()
|
||||
if(health <= 0)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
..()
|
||||
if(obj_integrity < max_integrity * 0.5)
|
||||
icon_state = "[initial(icon_state)]_damaged"
|
||||
name = "weakened [initial(name)]"
|
||||
desc = "A wall of twitching tendrils."
|
||||
atmosblock = FALSE
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
atmosblock = TRUE
|
||||
air_update_turf(1)
|
||||
|
||||
/obj/structure/blob/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
||||
return
|
||||
@@ -29,9 +37,9 @@
|
||||
name = "reflective blob"
|
||||
desc = "A solid wall of slightly twitching tendrils with a reflective glow."
|
||||
icon_state = "blob_idle_glow"
|
||||
brute_resist = 0
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
max_integrity = 100
|
||||
brute_resist = 0.5
|
||||
explosion_block = 2
|
||||
point_return = 9
|
||||
flags_2 = CHECK_RICOCHET_1
|
||||
var/reflect_chance = 80 //80% chance to reflect
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
if(blob_core)
|
||||
stat(null, "Core Health: [blob_core.health]")
|
||||
stat(null, "Core Health: [blob_core.obj_integrity]")
|
||||
stat(null, "Power Stored: [blob_points]/[max_blob_points]")
|
||||
|
||||
/mob/camera/blob/Move(var/NewLoc, var/Dir = 0)
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
return
|
||||
|
||||
|
||||
else if(S.health < S.maxHealth * 0.5)
|
||||
else if(S.obj_integrity < S.max_integrity * 0.5)
|
||||
to_chat(src, "<span class='warning'>This shield blob is too damaged to be modified properly!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -7,12 +7,14 @@
|
||||
density = 0
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
max_integrity = 30
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
|
||||
var/point_return = 0 //How many points the blob gets back when it removes a blob of that type. If less than 0, blob cannot be removed.
|
||||
var/health = 30
|
||||
var/health_timestamp = 0
|
||||
var/brute_resist = 4
|
||||
var/fire_resist = 1
|
||||
var/atmosblock = FALSE //if the blob blocks atmos and heat spread
|
||||
var/mob/camera/blob/overmind
|
||||
|
||||
|
||||
@@ -23,15 +25,22 @@
|
||||
..(loc)
|
||||
for(var/atom/A in loc)
|
||||
A.blob_act(src)
|
||||
if(atmosblock)
|
||||
air_update_turf(1)
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/blob/Destroy()
|
||||
if(atmosblock)
|
||||
atmosblock = FALSE
|
||||
air_update_turf(1)
|
||||
blobs -= src
|
||||
if(isturf(loc)) //Necessary because Expand() is retarded and spawns a blob and then deletes it
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
return ..()
|
||||
|
||||
/obj/structure/blob/BlockSuperconductivity()
|
||||
return atmosblock
|
||||
|
||||
/obj/structure/blob/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
if(height==0)
|
||||
@@ -40,6 +49,9 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/structure/blob/CanAtmosPass(turf/T)
|
||||
return !atmosblock
|
||||
|
||||
/obj/structure/blob/CanAStarPass(ID, dir, caller)
|
||||
. = 0
|
||||
if(ismovableatom(caller))
|
||||
@@ -215,15 +227,27 @@
|
||||
/obj/structure/blob/normal
|
||||
icon_state = "blob"
|
||||
light_range = 0
|
||||
health = 21
|
||||
obj_integrity = 21 //doesn't start at full health
|
||||
max_integrity = 25
|
||||
brute_resist = 0.25
|
||||
|
||||
/obj/structure/blob/normal/update_icon()
|
||||
if(health <= 0)
|
||||
qdel(src)
|
||||
else if(health <= 15)
|
||||
..()
|
||||
if(obj_integrity <= 15)
|
||||
icon_state = "blob_damaged"
|
||||
name = "fragile blob"
|
||||
desc = "A thin lattice of slightly twitching tendrils."
|
||||
brute_resist = 0.5
|
||||
else if(overmind)
|
||||
icon_state = "blob"
|
||||
name = "blob"
|
||||
desc = "A thick wall of writhing tendrils."
|
||||
brute_resist = 0.25
|
||||
else
|
||||
icon_state = "blob"
|
||||
name = "dead blob"
|
||||
desc = "A thick wall of lifeless tendrils."
|
||||
brute_resist = 0.25
|
||||
|
||||
/* // Used to create the glow sprites. Remember to set the animate loop to 1, instead of infinite!
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@
|
||||
for(var/obj/machinery/porta_turret/turret in GLOB.machines)
|
||||
var/turf/T = get_turf(turret)
|
||||
if(is_station_level(T.z))
|
||||
turret.health += 30
|
||||
turret.obj_integrity += 30
|
||||
turret.eprojectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
|
||||
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
|
||||
|
||||
@@ -477,10 +477,9 @@
|
||||
anchored = 1
|
||||
light_range = 1
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
var/health = 30
|
||||
max_integrity = 30
|
||||
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
max_integrity = 30
|
||||
var/lon_range = 1
|
||||
|
||||
/obj/structure/swarmer/New()
|
||||
@@ -525,7 +524,7 @@
|
||||
icon_state = "trap"
|
||||
light_range = 1
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
health = 10
|
||||
max_integrity = 10
|
||||
|
||||
/obj/structure/swarmer/trap/Crossed(var/atom/movable/AM, oldloc)
|
||||
if(isliving(AM))
|
||||
@@ -566,7 +565,7 @@
|
||||
icon_state = "barricade"
|
||||
light_range = 1
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
health = 50
|
||||
max_integrity = 50
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
|
||||
@@ -400,6 +400,7 @@ var/bomb_set
|
||||
name = "nuclear authentication disk"
|
||||
desc = "Better keep this safe."
|
||||
icon_state = "nucleardisk"
|
||||
max_integrity = 250
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
current_heat_capacity = 1000
|
||||
layer = 3
|
||||
max_integrity = 300
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 30)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/New()
|
||||
@@ -168,6 +169,7 @@
|
||||
anchored = 1.0
|
||||
layer = 3
|
||||
current_heat_capacity = 1000
|
||||
max_integrity = 300
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 30)
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/New()
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "pdapainter"
|
||||
density = 1
|
||||
anchored = 1
|
||||
max_integrity = 200
|
||||
var/obj/item/pda/storedpda = null
|
||||
var/list/colorlist = list()
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
layer = 3
|
||||
plane = FLOOR_PLANE
|
||||
anchored = 1.0
|
||||
max_integrity = 200
|
||||
armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
|
||||
var/uses = 20
|
||||
var/disabled = TRUE
|
||||
|
||||
@@ -80,6 +80,8 @@
|
||||
active_power_usage = 8
|
||||
power_channel = ENVIRON
|
||||
req_one_access = list(access_atmospherics, access_engine_equip)
|
||||
max_integrity = 250
|
||||
integrity_failure = 80
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
siemens_strength = 1
|
||||
|
||||
@@ -51,6 +51,8 @@ var/datum/canister_icons/canister_icon_container = new()
|
||||
var/health = 100.0
|
||||
flags = CONDUCT
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 50)
|
||||
max_integrity = 250
|
||||
integrity_failure = 100
|
||||
|
||||
var/menu = 0
|
||||
//used by nanoui: 0 = main menu, 1 = relabel
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
var/obj/machinery/atmospherics/pipe/target = null
|
||||
anchored = TRUE
|
||||
max_integrity = 150
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 0)
|
||||
power_channel = ENVIRON
|
||||
var/frequency = ATMOS_DISTRO_FREQ
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/machinery/portable_atmospherics
|
||||
name = "atmoalter"
|
||||
use_power = NO_POWER_USE
|
||||
max_integrity = 250
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 60, "acid" = 30)
|
||||
var/datum/gas_mixture/air_contents = new
|
||||
|
||||
|
||||
@@ -255,7 +255,8 @@
|
||||
assembly.update_icon()
|
||||
assembly = null
|
||||
else
|
||||
new /obj/item/camera_assembly(loc)
|
||||
var/obj/item/I = new /obj/item/camera_assembly(loc)
|
||||
I.obj_integrity = I.max_integrity * 0.5
|
||||
new /obj/item/stack/cable_coil(loc, 2)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
name = "AI core"
|
||||
icon = 'icons/mob/AI.dmi'
|
||||
icon_state = "0"
|
||||
max_integrity = 500
|
||||
var/state = 0
|
||||
var/datum/ai_laws/laws = null
|
||||
var/obj/item/circuitboard/circuit = null
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 300
|
||||
active_power_usage = 300
|
||||
max_integrity = 200
|
||||
integrity_failure = 100
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20)
|
||||
var/obj/item/circuitboard/circuit = null //if circuit==null, computer can't disassembly
|
||||
var/processing = 0
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = NO_POWER_USE
|
||||
max_integrity = 100
|
||||
max_integrity = 250
|
||||
var/obj/item/circuitboard/circuit = null
|
||||
var/list/components = null
|
||||
var/list/req_components = null
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
plane = GAME_PLANE
|
||||
interact_offline = 1
|
||||
max_integrity = 350
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 30, "acid" = 30)
|
||||
var/on = 0
|
||||
var/temperature_archived
|
||||
|
||||
@@ -284,7 +284,6 @@
|
||||
icon_state = "frame1"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
max_integrity = 300
|
||||
var/constructionStep = CONSTRUCTION_NOCIRCUIT
|
||||
var/reinforced = 0
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
explosion_block = 3
|
||||
heat_proof = TRUE
|
||||
safe = FALSE
|
||||
max_integrity = 600
|
||||
armor = list("melee" = 50, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
damage_deflection = 70
|
||||
|
||||
@@ -40,8 +40,7 @@
|
||||
|
||||
/obj/machinery/door/window/Destroy()
|
||||
density = FALSE
|
||||
for(var/I in debris)
|
||||
qdel(I)
|
||||
QDEL_LIST(debris)
|
||||
if(obj_integrity == 0)
|
||||
playsound(src, "shatter", 70, 1)
|
||||
QDEL_NULL(electronics)
|
||||
|
||||
@@ -12,6 +12,8 @@ FIRE ALARM
|
||||
var/timing = 0.0
|
||||
var/lockdownbyai = 0
|
||||
anchored = 1.0
|
||||
max_integrity = 250
|
||||
integrity_failure = 100
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30)
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
desc = "A wall-mounted flashbulb device."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "mflash1"
|
||||
max_integrity = 250
|
||||
integrity_failure = 100
|
||||
damage_deflection = 10
|
||||
var/id = null
|
||||
var/range = 2 //this is roughly the size of brig cell
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon_state = "flood00"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
max_integrity = 100
|
||||
integrity_failure = 80
|
||||
light_power = 20
|
||||
var/on = FALSE
|
||||
var/obj/item/stock_parts/cell/high/cell = null
|
||||
|
||||
@@ -45,6 +45,7 @@ var/list/holopads = list()
|
||||
active_power_usage = 100
|
||||
layer = TURF_LAYER+0.1 //Preventing mice and drones from sneaking under them.
|
||||
plane = FLOOR_PLANE
|
||||
max_integrity = 300
|
||||
armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0)
|
||||
var/list/masters = list()//List of living mobs that use the holopad
|
||||
var/list/holorays = list()//Holoray-mob link.
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "igniter1"
|
||||
plane = FLOOR_PLANE
|
||||
max_integrity = 300
|
||||
armor = list(melee = 50, bullet = 30, laser = 70, energy = 50, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/id = null
|
||||
|
||||
@@ -97,6 +97,7 @@ Class Procs:
|
||||
name = "machinery"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
pressure_resistance = 15
|
||||
max_integrity = 200
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/stat = 0
|
||||
var/emagged = 0
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
anchored = 1
|
||||
max_integrity = 500
|
||||
armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80)
|
||||
var/open = 0 // true if cover is open
|
||||
var/locked = 1 // true if controls are locked
|
||||
|
||||
@@ -79,6 +79,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
icon = 'icons/obj/terminals.dmi'
|
||||
icon_state = "newscaster_normal"
|
||||
armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
|
||||
max_integrity = 200
|
||||
integrity_failure = 50
|
||||
var/screen = NEWSCASTER_MAIN
|
||||
var/paper_remaining = 15
|
||||
var/securityCaster = 0
|
||||
@@ -139,21 +141,24 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
return ..()
|
||||
|
||||
/obj/machinery/newscaster/update_icon()
|
||||
overlays.Cut()
|
||||
cut_overlays()
|
||||
if(inoperable())
|
||||
icon_state = "newscaster_off"
|
||||
if(stat & BROKEN) //If the thing is smashed, add crack overlay on top of the unpowered sprite.
|
||||
overlays += image(icon, "crack3")
|
||||
else
|
||||
if(!news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message
|
||||
icon_state = "newscaster_normal"
|
||||
if(alert) //new message alert overlay
|
||||
overlays += "newscaster_alert"
|
||||
add_overlay("newscaster_alert")
|
||||
var/hp_percent = obj_integrity * 100 /max_integrity
|
||||
switch(hp_percent)
|
||||
if(75 to 100)
|
||||
return
|
||||
if(50 to 75)
|
||||
add_overlay("crack1")
|
||||
if(25 to 50)
|
||||
add_overlay("crack2")
|
||||
else
|
||||
icon_state = "newscaster_wanted"
|
||||
|
||||
if(hitstaken > 0) //Cosmetic damage overlay
|
||||
overlays += image(icon, "crack[hitstaken]")
|
||||
add_overlay("crack3")
|
||||
|
||||
/obj/machinery/newscaster/power_change()
|
||||
..()
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power
|
||||
active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power
|
||||
power_channel = EQUIP //drains power from the EQUIPMENT channel
|
||||
|
||||
max_integrity = 160 //the turret's health
|
||||
integrity_failure = 80
|
||||
armor = list(melee = 50, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 90, acid = 90)
|
||||
var/raised = 0 //if the turret cover is "open" and the turret is raised
|
||||
var/raising= 0 //if the turret is currently opening or closing its cover
|
||||
|
||||
@@ -38,6 +38,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
||||
anchored = 1
|
||||
icon = 'icons/obj/terminals.dmi'
|
||||
icon_state = "req_comp0"
|
||||
max_integrity = 300
|
||||
armor = list("melee" = 70, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department
|
||||
var/list/message_log = list() //List of all messages
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "sheater0"
|
||||
name = "space heater"
|
||||
desc = "Made by Space Amish using traditional space techniques, this heater is guaranteed not to set the station on fire."
|
||||
max_integrity = 250
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 10)
|
||||
var/obj/item/stock_parts/cell/cell
|
||||
var/on = 0
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
var/maxsize = 2
|
||||
internal_damage_threshold = 50
|
||||
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"
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
initial_icon = "durand"
|
||||
step_in = 4
|
||||
dir_in = 1 //Facing North.
|
||||
health = 400
|
||||
max_integrity = 400
|
||||
deflect_chance = 20
|
||||
damage_absorption = list("brute"=0.5,"fire"=1.1,"bullet"=0.65,"laser"=0.85,"energy"=0.9,"bomb"=0.8)
|
||||
armor = list(melee = 40, bullet = 35, laser = 15, energy = 10, bomb = 20, bio = 0, rad = 50, fire = 100, acid = 100)
|
||||
max_temperature = 30000
|
||||
infra_luminosity = 8
|
||||
@@ -36,9 +35,9 @@
|
||||
initial_icon = "old_durand"
|
||||
step_in = 4
|
||||
dir_in = 1 //Facing North.
|
||||
health = 400
|
||||
max_integrity = 400
|
||||
deflect_chance = 20
|
||||
damage_absorption = list("brute"=0.5,"fire"=1.1,"bullet"=0.65,"laser"=0.85,"energy"=0.9,"bomb"=0.8)
|
||||
armor = list(melee = 50, bullet = 35, laser = 15, energy = 15, bomb = 20, bio = 0, rad = 50, fire = 100, acid = 100)
|
||||
max_temperature = 30000
|
||||
infra_luminosity = 8
|
||||
force = 40
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
initial_icon = "gygax"
|
||||
step_in = 3
|
||||
dir_in = 1 //Facing North.
|
||||
health = 250
|
||||
max_integrity = 250
|
||||
deflect_chance = 5
|
||||
damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
|
||||
armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 6
|
||||
@@ -39,9 +38,8 @@
|
||||
name = "Dark Gygax"
|
||||
icon_state = "darkgygax"
|
||||
initial_icon = "darkgygax"
|
||||
health = 300
|
||||
max_integrity = 300
|
||||
deflect_chance = 15
|
||||
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8)
|
||||
armor = list(melee = 40, bullet = 40, laser = 50, energy = 35, bomb = 20, bio = 0, rad =20, fire = 100, acid = 100)
|
||||
max_temperature = 35000
|
||||
leg_overload_coeff = 100
|
||||
|
||||
@@ -4,10 +4,9 @@
|
||||
icon_state = "honker"
|
||||
initial_icon = "honker"
|
||||
step_in = 3
|
||||
health = 140
|
||||
max_integrity = 140
|
||||
deflect_chance = 60
|
||||
internal_damage_threshold = 60
|
||||
damage_absorption = list("brute"=1.2,"fire"=1.5,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1)
|
||||
armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 5
|
||||
@@ -28,7 +27,7 @@
|
||||
ME.attach(src)
|
||||
|
||||
/obj/mecha/combat/honker/get_stats_part()
|
||||
var/integrity = health/initial(health)*100
|
||||
var/integrity = obj_integrity/max_integrity*100
|
||||
var/cell_charge = get_charge()
|
||||
var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
|
||||
var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
icon_state = "marauder"
|
||||
initial_icon = "marauder"
|
||||
step_in = 5
|
||||
health = 500
|
||||
max_integrity = 500
|
||||
deflect_chance = 25
|
||||
damage_absorption = list("brute"=0.5,"fire"=0.7,"bullet"=0.45,"laser"=0.6,"energy"=0.7,"bomb"=0.7)
|
||||
armor = list("melee" = 50, "bullet" = 55, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 60, "fire" = 100, "acid" = 100)
|
||||
max_temperature = 60000
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
@@ -52,7 +51,7 @@
|
||||
initial_icon = "seraph"
|
||||
operation_req_access = list(access_cent_commander)
|
||||
step_in = 3
|
||||
health = 550
|
||||
max_integrity = 550
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/seraph
|
||||
internal_damage_threshold = 20
|
||||
force = 80
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
dir_in = 2 //Facing south.
|
||||
step_energy_drain = 3
|
||||
normal_step_energy_drain = 3
|
||||
health = 200
|
||||
max_integrity = 200
|
||||
deflect_chance = 30
|
||||
damage_absorption = list("brute"=0.7,"fire"=0.7,"bullet"=0.7,"laser"=0.7,"energy"=0.7,"bomb"=0.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
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
initial_icon = "mime"
|
||||
step_in = 2
|
||||
dir_in = 1 //Facing North.
|
||||
health = 150
|
||||
max_integrity = 150
|
||||
deflect_chance = 30
|
||||
damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
|
||||
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
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
icon_state = "mecha_equip"
|
||||
force = 5
|
||||
origin_tech = "materials=2;engineering=2"
|
||||
max_integrity = 300
|
||||
var/equip_cooldown = 0
|
||||
var/equip_ready = 1
|
||||
var/energy_drain = 0
|
||||
|
||||
@@ -245,8 +245,8 @@
|
||||
chassis.clearInternalDamage(int_dam_flag)
|
||||
repaired = 1
|
||||
break
|
||||
if(health_boost<0 || chassis.health < initial(chassis.health))
|
||||
chassis.health += min(health_boost, initial(chassis.health)-chassis.health)
|
||||
if(h_boost<0 || chassis.obj_integrity < chassis.max_integrity)
|
||||
chassis.obj_integrity += min(h_boost, chassis.max_integrity-chassis.obj_integrity)
|
||||
repaired = 1
|
||||
if(repaired)
|
||||
if(!chassis.use_power(energy_drain))
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
if(recharge_port && !QDELETED(recharge_port))
|
||||
data["recharge_port"] = list("mech" = null)
|
||||
if(recharge_port.recharging_mecha && !QDELETED(recharge_port.recharging_mecha))
|
||||
data["recharge_port"]["mech"] = list("health" = recharge_port.recharging_mecha.health, "maxhealth" = initial(recharge_port.recharging_mecha.health), "cell" = null)
|
||||
data["recharge_port"]["mech"] = list("health" = recharge_port.recharging_mecha.obj_integrity, "maxhealth" = initial(recharge_port.recharging_mecha.max_integrity), "cell" = null)
|
||||
if(recharge_port.recharging_mecha.cell && !QDELETED(recharge_port.recharging_mecha.cell))
|
||||
data["has_mech"] = 1
|
||||
data["mecha_name"] = recharge_port.recharging_mecha || "None"
|
||||
|
||||
+14
-32
@@ -15,6 +15,7 @@
|
||||
layer = MOB_LAYER //icon draw layer
|
||||
infra_luminosity = 15 //byond implementation is bugged.
|
||||
force = 5
|
||||
max_integrity = 300 //max_integrity is base health
|
||||
armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
var/list/facing_modifiers = list(MECHA_FRONT_ARMOUR = 1.5, MECHA_SIDE_ARMOUR = 1, MECHA_BACK_ARMOUR = 0.5)
|
||||
var/ruin_mecha = FALSE //if the mecha starts on a ruin, don't automatically give it a tracking beacon to prevent metagaming.
|
||||
@@ -27,10 +28,7 @@
|
||||
var/step_energy_drain = 10
|
||||
var/melee_energy_drain = 15
|
||||
var/overload_step_energy_drain_min = 100
|
||||
var/health = 300 //health is health
|
||||
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
|
||||
//the values in this list show how much damage will pass through, not how much will be absorbed.
|
||||
var/list/damage_absorption = list("brute"=0.8,"fire"=1.2,"bullet"=0.9,"laser"=1,"energy"=1,"bomb"=1)
|
||||
var/obj/item/stock_parts/cell/cell
|
||||
var/state = 0
|
||||
var/list/log = new
|
||||
@@ -167,7 +165,7 @@
|
||||
|
||||
/obj/mecha/examine(mob/user)
|
||||
. = ..()
|
||||
var/integrity = health/initial(health)*100
|
||||
var/integrity = obj_integrity * 100 / max_integrity
|
||||
switch(integrity)
|
||||
if(85 to 100)
|
||||
. += "It's fully intact."
|
||||
@@ -328,8 +326,7 @@
|
||||
else
|
||||
occupant.clear_alert("mechaport")
|
||||
if(leg_overload_mode)
|
||||
take_damage(1)
|
||||
if(health < initial(health) - initial(health) / 3)
|
||||
if(obj_integrity < max_integrity - max_integrity / 3)
|
||||
leg_overload_mode = FALSE
|
||||
step_in = initial(step_in)
|
||||
step_energy_drain = initial(step_energy_drain)
|
||||
@@ -436,10 +433,11 @@
|
||||
//////// Internal damage ////////
|
||||
///////////////////////////////////
|
||||
|
||||
/obj/mecha/proc/check_for_internal_damage(var/list/possible_int_damage,var/ignore_threshold=null)
|
||||
if(!islist(possible_int_damage) || isemptylist(possible_int_damage)) return
|
||||
/obj/mecha/proc/check_for_internal_damage(list/possible_int_damage, ignore_threshold=null)
|
||||
if(!islist(possible_int_damage) || isemptylist(possible_int_damage))
|
||||
return
|
||||
if(prob(20))
|
||||
if(ignore_threshold || health*100/initial(health)<internal_damage_threshold)
|
||||
if(ignore_threshold || obj_integrity*100/max_integrity < internal_damage_threshold)
|
||||
for(var/T in possible_int_damage)
|
||||
if(internal_damage & T)
|
||||
possible_int_damage -= T
|
||||
@@ -447,11 +445,10 @@
|
||||
if(int_dam_flag)
|
||||
setInternalDamage(int_dam_flag)
|
||||
if(prob(5))
|
||||
if(ignore_threshold || health*100/initial(health)<internal_damage_threshold)
|
||||
var/obj/item/mecha_parts/mecha_equipment/destr = safepick(equipment)
|
||||
if(destr)
|
||||
qdel(destr)
|
||||
return
|
||||
if(ignore_threshold || obj_integrity*100/max_integrity < internal_damage_threshold)
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = safepick(equipment)
|
||||
if(ME)
|
||||
qdel(ME)
|
||||
|
||||
/obj/mecha/proc/hasInternalDamage(int_dam_flag=null)
|
||||
return int_dam_flag ? internal_damage&int_dam_flag : internal_damage
|
||||
@@ -534,21 +531,6 @@
|
||||
if(.)
|
||||
. *= booster_damage_modifier
|
||||
|
||||
/obj/mecha/proc/absorbDamage(damage,damage_type)
|
||||
return call((proc_res["dynabsorbdamage"]||src), "dynabsorbdamage")(damage,damage_type)
|
||||
|
||||
/obj/mecha/proc/dynabsorbdamage(damage,damage_type)
|
||||
return damage*(listgetindex(damage_absorption,damage_type) || 1)
|
||||
|
||||
|
||||
/obj/mecha/proc/update_health()
|
||||
if(health > 0)
|
||||
spark_system.start()
|
||||
diag_hud_set_mechhealth()
|
||||
else
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/mecha/attack_hand(mob/living/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
|
||||
@@ -773,7 +755,7 @@
|
||||
|
||||
else if(iswelder(W) && user.a_intent != INTENT_HARM)
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(health < initial(health))
|
||||
if(obj_integrity < max_integrity)
|
||||
if(WT.remove_fuel(0, user))
|
||||
user.visible_message("<span class='notice'>[user] starts repairing some damage to [name].</span>", "<span class='notice'>You start repairing some damage to [name]</span>")
|
||||
if(do_after_once(user, 15 * WT.toolspeed, target = src, attempt_cancel_message = "You stop repairing [name]."))
|
||||
@@ -782,7 +764,7 @@
|
||||
user.visible_message("<span class='notice'>[user] repairs the damaged gas tank.</span>", "<span class='notice'>You repair the damaged gas tank.</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] repairs some damage to [name].</span>", "<span class='notice'>You repair some damage to [name].</span>")
|
||||
health += min(20, initial(health) - health)
|
||||
obj_integrity += min(10, max_integrity - obj_integrity)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The welder must be on for this task!</span>")
|
||||
else
|
||||
@@ -1073,7 +1055,7 @@
|
||||
visible_message("<span class='notice'>[user] starts to climb into [src]")
|
||||
|
||||
if(do_after(user, 40, target = src))
|
||||
if(health <= 0)
|
||||
if(obj_integrity <= 0)
|
||||
to_chat(user, "<span class='warning'>You cannot get in the [name], it has been destroyed!</span>")
|
||||
else if(occupant)
|
||||
to_chat(user, "<span class='danger'>[occupant] was faster! Try better next time, loser.</span>")
|
||||
|
||||
@@ -113,7 +113,6 @@
|
||||
chassis.log_message("Toggled defence mode.")
|
||||
UpdateButtonIcon()
|
||||
|
||||
|
||||
/datum/action/innate/mecha/mech_overload_mode
|
||||
name = "Toggle leg actuators overload"
|
||||
button_icon_state = "mech_overload_off"
|
||||
@@ -121,7 +120,7 @@
|
||||
/datum/action/innate/mecha/mech_overload_mode/Activate(forced_state = null)
|
||||
if(!owner || !chassis || chassis.occupant != owner)
|
||||
return
|
||||
if(chassis.health < initial(chassis.health) - initial(chassis.health) / 3)
|
||||
if(chassis.obj_integrity < chassis.max_integrity - chassis.max_integrity / 3)
|
||||
chassis.occupant_message("<span class='danger'>The leg actuators are too damaged to overload!</span>")
|
||||
return // Can't activate them if the mech is too damaged
|
||||
if(!isnull(forced_state))
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
answer["cell_percentage"] = round(M.cell.percent())
|
||||
else
|
||||
answer["cell"] = 0
|
||||
answer["integrity"] = M.health/initial(M.health)*100
|
||||
answer["integrity"] = round((M.obj_integrity/M.max_integrity*100), 0.01)
|
||||
answer["airtank"] = M.return_pressure()
|
||||
answer["pilot"] = "[M.occupant||"None"]"
|
||||
var/area/area = get_area(M)
|
||||
@@ -109,7 +109,7 @@
|
||||
var/cell_charge = M.get_charge()
|
||||
var/area/A = get_area(M)
|
||||
var/answer = {"<b>Name:</b> [M.name]
|
||||
<b>Integrity:</b> [M.health/initial(M.health)*100]%
|
||||
<b>Integrity:</b> [M.obj_integrity / M.max_integrity * 100]%
|
||||
<b>Cell charge:</b> [isnull(cell_charge)?"Not found":"[M.cell.percent()]%"]
|
||||
<b>Airtank:</b> [M.return_pressure()]kPa
|
||||
<b>Pilot:</b> [M.occupant||"None"]
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
|
||||
/obj/mecha/proc/get_stats_part()
|
||||
var/integrity = health/initial(health)*100
|
||||
var/integrity = obj_integrity/max_integrity*100
|
||||
var/cell_charge = get_charge()
|
||||
var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
|
||||
var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
initial_icon = "odysseus"
|
||||
step_in = 3
|
||||
max_temperature = 15000
|
||||
health = 120
|
||||
max_integrity = 120
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/odysseus
|
||||
internal_damage_threshold = 35
|
||||
deflect_chance = 15
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
var/fast_pressure_step_in = 2 //step_in while in normal pressure conditions
|
||||
var/slow_pressure_step_in = 4 //step_in while in better pressure conditions
|
||||
max_temperature = 20000
|
||||
health = 200
|
||||
max_integrity = 200
|
||||
lights_power = 7
|
||||
deflect_chance = 15
|
||||
damage_absorption = list("brute"=0.6,"fire"=1,"bullet"=0.8,"laser"=0.9,"energy"=1,"bomb"=0.6)
|
||||
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
|
||||
var/list/cargo = new
|
||||
var/cargo_capacity = 15
|
||||
var/hides = 0
|
||||
|
||||
/obj/mecha/working/ripley/Move()
|
||||
. = ..()
|
||||
@@ -32,9 +32,8 @@
|
||||
ore.forceMove(ore_box)
|
||||
|
||||
/obj/mecha/working/ripley/Destroy()
|
||||
while(damage_absorption["brute"] < 0.6)
|
||||
new /obj/item/stack/sheet/animalhide/goliath_hide(loc)
|
||||
damage_absorption["brute"] = damage_absorption["brute"] + 0.1 //If a goliath-plated ripley gets killed, all the plates drop
|
||||
for(var/i=1, i <= hides, i++)
|
||||
new /obj/item/stack/sheet/animalhide/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop
|
||||
for(var/atom/movable/A in cargo)
|
||||
A.forceMove(loc)
|
||||
step_rand(A)
|
||||
@@ -43,30 +42,24 @@
|
||||
|
||||
/obj/mecha/working/ripley/go_out()
|
||||
..()
|
||||
if(damage_absorption["brute"] < 0.6 && damage_absorption["brute"] > 0.3)
|
||||
overlays = null
|
||||
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-open")
|
||||
else if(damage_absorption["brute"] == 0.3)
|
||||
overlays = null
|
||||
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full-open")
|
||||
update_icon()
|
||||
|
||||
/obj/mecha/working/ripley/moved_inside(var/mob/living/carbon/human/H as mob)
|
||||
/obj/mecha/working/ripley/moved_inside(mob/living/carbon/human/H)
|
||||
..()
|
||||
if(damage_absorption["brute"] < 0.6 && damage_absorption["brute"] > 0.3)
|
||||
overlays = null
|
||||
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g")
|
||||
else if(damage_absorption["brute"] == 0.3)
|
||||
overlays = null
|
||||
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full")
|
||||
update_icon()
|
||||
|
||||
/obj/mecha/working/ripley/mmi_moved_inside(var/obj/item/mmi/mmi_as_oc as obj,mob/user as mob)
|
||||
/obj/mecha/working/ripley/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user)
|
||||
..()
|
||||
if(damage_absorption["brute"] < 0.6 && damage_absorption["brute"] > 0.3)
|
||||
overlays = null
|
||||
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g")
|
||||
else if(damage_absorption["brute"] == 0.3)
|
||||
overlays = null
|
||||
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full")
|
||||
update_icon()
|
||||
|
||||
/obj/mecha/working/ripley/update_icon()
|
||||
..()
|
||||
if(hides)
|
||||
cut_overlays()
|
||||
if(hides < 3)
|
||||
add_overlay(occupant ? "ripley-g" : "ripley-g-open")
|
||||
else
|
||||
add_overlay(occupant ? "ripley-g-full" : "ripley-g-full-open")
|
||||
|
||||
/obj/mecha/working/ripley/firefighter
|
||||
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
|
||||
@@ -74,10 +67,9 @@
|
||||
icon_state = "firefighter"
|
||||
initial_icon = "firefighter"
|
||||
max_temperature = 65000
|
||||
health = 250
|
||||
max_integrity = 250
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
lights_power = 7
|
||||
damage_absorption = list("brute"=0.6,"fire"=0.5,"bullet"=0.7,"laser"=0.7,"energy"=1,"bomb"=0.4)
|
||||
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
|
||||
@@ -91,9 +83,9 @@
|
||||
slow_pressure_step_in = 3
|
||||
opacity=0
|
||||
max_temperature = 65000
|
||||
health = 300
|
||||
max_integrity = 300
|
||||
lights_power = 7
|
||||
damage_absorption = list("brute"=0.6,"fire"=0.4,"bullet"=0.6,"laser"=0.6,"energy"=1,"bomb"=0.3)
|
||||
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
|
||||
step_energy_drain = 0
|
||||
normal_step_energy_drain = 0
|
||||
@@ -107,6 +99,7 @@
|
||||
/obj/mecha/working/ripley/mining
|
||||
desc = "An old, dusty mining ripley."
|
||||
name = "APLU \"Miner\""
|
||||
obj_integrity = 75 //Low starting health
|
||||
|
||||
/obj/mecha/working/ripley/mining/New()
|
||||
..()
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
/obj/structure/glowshroom
|
||||
name = "glowshroom"
|
||||
desc = "Mycena Bregprox, a species of mushroom that glows in the dark."
|
||||
anchored = 1
|
||||
anchored = TRUE
|
||||
opacity = 0
|
||||
density = 0
|
||||
density = FALSE
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "glowshroom" //replaced in New
|
||||
layer = 2.1
|
||||
var/endurance = 30
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
max_integrity = 30
|
||||
var/delay = 1200
|
||||
var/floor = 0
|
||||
var/generation = 1
|
||||
@@ -52,7 +52,8 @@
|
||||
myseed.adjust_production(rand(-3,6))
|
||||
myseed.adjust_endurance(rand(-3,6))
|
||||
delay = delay - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
||||
endurance = myseed.endurance
|
||||
obj_integrity = myseed.endurance
|
||||
max_integrity = myseed.endurance
|
||||
if(myseed.get_gene(/datum/plant_gene/trait/glow))
|
||||
var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
|
||||
set_light(G.glow_range(myseed), G.glow_power(myseed), G.glow_color)
|
||||
@@ -151,23 +152,6 @@
|
||||
floor = 1
|
||||
return 1
|
||||
|
||||
/obj/structure/glowshroom/attackby(obj/item/I, mob/user)
|
||||
..()
|
||||
var/damage_to_do = I.force
|
||||
if(istype(I, /obj/item/scythe))
|
||||
var/obj/item/scythe/S = I
|
||||
if(S.extend) //so folded telescythes won't get damage boosts / insta-clears (they instead will instead be treated like non-scythes)
|
||||
damage_to_do *= 4
|
||||
for(var/obj/structure/glowshroom/G in range(1,src))
|
||||
G.endurance -= damage_to_do
|
||||
G.CheckEndurance()
|
||||
return
|
||||
else if(I.sharp)
|
||||
damage_to_do = I.force * 3 // wirecutter: 6->18, knife 10->30, hatchet 12->36
|
||||
if(I.damtype != STAMINA)
|
||||
endurance -= damage_to_do
|
||||
CheckEndurance()
|
||||
|
||||
/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)
|
||||
@@ -175,12 +159,7 @@
|
||||
/obj/structure/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
..()
|
||||
if(exposed_temperature > 300)
|
||||
endurance -= 5
|
||||
CheckEndurance()
|
||||
|
||||
/obj/structure/glowshroom/proc/CheckEndurance()
|
||||
if(endurance <= 0)
|
||||
qdel(src)
|
||||
take_damage(5, BURN, 0, 0)
|
||||
|
||||
/obj/structure/glowshroom/acid_act(acidpwr, acid_volume)
|
||||
. = 1
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
var/health = 15
|
||||
max_integrity = 15
|
||||
var/mob/living/carbon/human/master_commander = null
|
||||
|
||||
/obj/structure/spider/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
@@ -26,31 +26,10 @@
|
||||
master_commander = null
|
||||
return ..()
|
||||
|
||||
/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>")
|
||||
else
|
||||
visible_message("<span class='danger'>[user] has attacked [src] with [W]!</span>")
|
||||
var/damage = W.force / 4
|
||||
if(iswelder(W))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0, user))
|
||||
damage = 15
|
||||
playsound(loc, WT.usesound, 100, 1)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
health -= damage
|
||||
healthcheck()
|
||||
|
||||
/obj/structure/spider/proc/healthcheck()
|
||||
if(health <= 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
..()
|
||||
if(exposed_temperature > 300)
|
||||
health -= 5
|
||||
healthcheck()
|
||||
take_damage(5, BURN, 0, 0)
|
||||
|
||||
/obj/structure/spider/stickyweb
|
||||
icon_state = "stickyweb1"
|
||||
@@ -105,7 +84,7 @@
|
||||
icon_state = "spiderling"
|
||||
anchored = 0
|
||||
layer = 2.75
|
||||
health = 3
|
||||
max_integrity = 3
|
||||
var/amount_grown = 0
|
||||
var/grow_as = null
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
|
||||
@@ -123,6 +102,7 @@
|
||||
/obj/structure/spider/spiderling/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
entry_vent = null
|
||||
new /obj/effect/decal/cleanable/spiderling_remains(get_turf(src))
|
||||
return ..()
|
||||
|
||||
/obj/structure/spider/spiderling/Bump(atom/user)
|
||||
@@ -131,15 +111,6 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/spider/spiderling/proc/die()
|
||||
visible_message("<span class='alert'>[src] dies!</span>")
|
||||
new /obj/effect/decal/cleanable/spiderling_remains(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/spider/spiderling/healthcheck()
|
||||
if(health <= 0)
|
||||
die()
|
||||
|
||||
/obj/structure/spider/spiderling/process()
|
||||
if(travelling_in_vent)
|
||||
if(istype(loc, /turf))
|
||||
@@ -229,7 +200,7 @@
|
||||
name = "cocoon"
|
||||
desc = "Something wrapped in silky spider web"
|
||||
icon_state = "cocoon1"
|
||||
health = 60
|
||||
max_integrity = 60
|
||||
|
||||
/obj/structure/spider/cocoon/New()
|
||||
..()
|
||||
|
||||
@@ -15,6 +15,8 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
var/inhand_x_dimension = 32
|
||||
var/inhand_y_dimension = 32
|
||||
|
||||
max_integrity = 200
|
||||
|
||||
can_be_hit = FALSE
|
||||
suicidal_hands = TRUE
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
sound = 'sound/items/zip.ogg'
|
||||
var/item_path = /obj/item/bodybag
|
||||
density = 0
|
||||
integrity_failure = 0
|
||||
|
||||
|
||||
/obj/structure/closet/body_bag/attackby(W as obj, mob/user as mob, params)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
lefthand_file = 'icons/mob/inhands/equipment/instruments_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/instruments_righthand.dmi'
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 100
|
||||
var/datum/song/handheld/song
|
||||
var/instrumentId = "generic"
|
||||
var/instrumentExt = "mid"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 40
|
||||
var/heal_brute = 0
|
||||
var/heal_burn = 0
|
||||
var/self_delay = 20
|
||||
|
||||
@@ -133,52 +133,41 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \
|
||||
flags = NOBLUDGEON
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
layer = MOB_LAYER
|
||||
var/static/list/can_strengthen_clothing
|
||||
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!can_strengthen_clothing)
|
||||
can_strengthen_clothing = typecacheof(list(
|
||||
var/static/list/goliath_platable_armor_typecache = typecacheof(list(
|
||||
/obj/item/clothing/suit/space/hardsuit/mining,
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/mining,
|
||||
/obj/item/clothing/suit/hooded/explorer,
|
||||
/obj/item/clothing/head/hooded/explorer,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/mining
|
||||
))
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/mining))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide/afterattack(atom/target, mob/user, proximity_flag)
|
||||
if(proximity_flag)
|
||||
if(is_type_in_typecache(target, can_strengthen_clothing))
|
||||
var/obj/item/clothing/C = target
|
||||
var/current_armor = C.armor
|
||||
if(current_armor["melee"] < 60)
|
||||
current_armor["melee"] = min(current_armor["melee"] + 10, 60)
|
||||
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
|
||||
use(1)
|
||||
if(!proximity_flag)
|
||||
return
|
||||
if(is_type_in_typecache(target, goliath_platable_armor_typecache))
|
||||
var/obj/item/clothing/C = target
|
||||
var/list/current_armor = C.armor
|
||||
if(current_armor["melee"] < 60)
|
||||
current_armor["melee"] = min(current_armor["melee"] + 10, 60)
|
||||
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
|
||||
use(1)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't improve [C] any further!</span>")
|
||||
else if(istype(target, /obj/mecha/working/ripley))
|
||||
var/obj/mecha/working/ripley/D = target
|
||||
if(D.hides < 3)
|
||||
D.hides++
|
||||
D.armor["melee"] = min(D.armor["melee"] + 10, 70)
|
||||
D.armor["bullet"] = min(D.armor["bullet"] + 5, 50)
|
||||
D.armor["laser"] = min(D.armor["laser"] + 5, 50)
|
||||
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
|
||||
D.update_icon()
|
||||
if(D.hides == 3)
|
||||
D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - its pilot must be an experienced monster hunter."
|
||||
else
|
||||
to_chat(user, "<span class='info'>You can't improve [C] any further.</span>")
|
||||
return
|
||||
if(istype(target, /obj/mecha/working/ripley))
|
||||
var/obj/mecha/D = target
|
||||
if(D.icon_state != "ripley-open")
|
||||
to_chat(user, "<span class='info'>You can't add armour onto the mech while someone is inside!</span>")
|
||||
return
|
||||
var/list/damage_absorption = D.damage_absorption
|
||||
if(damage_absorption["brute"] > 0.3)
|
||||
damage_absorption["brute"] = max(damage_absorption["brute"] - 0.1, 0.3)
|
||||
damage_absorption["bullet"] = damage_absorption["bullet"] - 0.05
|
||||
damage_absorption["fire"] = damage_absorption["fire"] - 0.05
|
||||
damage_absorption["laser"] = damage_absorption["laser"] - 0.025
|
||||
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
|
||||
use(1)
|
||||
D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-open")
|
||||
D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates."
|
||||
if(damage_absorption["brute"] == 0.3)
|
||||
D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-full-open")
|
||||
D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - the pilot must be an experienced monster hunter."
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't improve [D] any further!</span>")
|
||||
return
|
||||
use(1)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't improve [D] any further!</span>")
|
||||
|
||||
/obj/item/stack/sheet/animalhide/ashdrake
|
||||
name = "ash drake hide"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
hitsound = 'sound/weapons/blade1.ogg' // Probably more appropriate than the previous hitsound. -- Dave
|
||||
usesound = 'sound/weapons/blade1.ogg'
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
toolspeed = 1
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
materials = list(MAT_METAL=200)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 50
|
||||
max_integrity = 100
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list(5,10,20,30,50,70)
|
||||
volume = 70
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
attack_verb = list("stabbed", "slashed", "sliced", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
armor = list("melee" = 100, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
||||
max_integrity = 40
|
||||
resistance_flags = ACID_PROOF
|
||||
sharp = TRUE
|
||||
var/cooldown = 0
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
|
||||
slot_flags = SLOT_BELT
|
||||
attack_verb = list("whipped", "lashed", "disciplined")
|
||||
max_integrity = 300
|
||||
var/use_item_overlays = 0 // Do we have overlays for items held inside the belt?
|
||||
|
||||
/obj/item/storage/belt/update_icon()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
slot_flags = SLOT_BACK
|
||||
slowdown = 1
|
||||
actions_types = list(/datum/action/item_action/toggle_mister)
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
@@ -182,6 +182,7 @@
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
usesound = 'sound/items/crowbar.ogg'
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -231,6 +232,7 @@
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
block_chance = 75
|
||||
sharp_when_wielded = TRUE // only sharp when wielded
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
light_power = 2
|
||||
@@ -340,6 +342,7 @@
|
||||
sharp = TRUE
|
||||
no_spin_thrown = TRUE
|
||||
var/obj/item/grenade/explosive = null
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
var/icon_prefix = "spearglass"
|
||||
|
||||
@@ -811,6 +814,7 @@
|
||||
force_wielded = 15
|
||||
attack_verb = list("attacked", "impaled", "pierced")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
throw_speed = 7
|
||||
throw_range = 15
|
||||
attack_verb = list("banned")
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -48,6 +49,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
block_chance = 50
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -74,6 +76,7 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
block_chance = 50
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
pressure_resistance = 8
|
||||
max_integrity = 300
|
||||
var/climbable
|
||||
var/mob/climber
|
||||
var/broken = FALSE
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon = 'icons/obj/barsigns.dmi'
|
||||
icon_state = "empty"
|
||||
req_access = list(access_bar)
|
||||
max_integrity = 500
|
||||
integrity_failure = 250
|
||||
armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
var/list/barsigns=list()
|
||||
var/list/hiddensigns
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon = 'icons/obj/closet.dmi'
|
||||
icon_state = "closed"
|
||||
density = 1
|
||||
max_integrity = 200
|
||||
integrity_failure = 50
|
||||
armor = list("melee" = 20, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60)
|
||||
var/icon_closed = "closed"
|
||||
var/icon_opened = "open"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
opened = 0
|
||||
locked = 1
|
||||
broken = 0
|
||||
max_integrity = 250
|
||||
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
damage_deflection = 20
|
||||
var/large = 1
|
||||
|
||||
@@ -220,6 +220,7 @@
|
||||
var/greenlight = "securecrateg"
|
||||
var/sparks = "securecratesparks"
|
||||
var/emag = "securecrateemag"
|
||||
max_integrity = 500
|
||||
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
damage_deflection = 25
|
||||
var/tamperproof = 0
|
||||
@@ -529,6 +530,7 @@
|
||||
icon_state = "largemetal"
|
||||
icon_opened = "largemetalopen"
|
||||
icon_closed = "largemetal"
|
||||
integrity_failure = 0 //Makes the crate break when integrity reaches 0, instead of opening and becoming an invisible sprite.
|
||||
|
||||
/obj/structure/closet/crate/large/close()
|
||||
. = ..()
|
||||
|
||||
@@ -98,6 +98,8 @@ GLOBAL_LIST_INIT(captain_display_cases, list())
|
||||
anchored = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 30, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
|
||||
max_integrity = 200
|
||||
integrity_failure = 50
|
||||
var/health = 30
|
||||
var/obj/item/occupant = null
|
||||
var/destroyed = FALSE
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
icon_state = "extinguisher_closed"
|
||||
anchored = 1
|
||||
density = 0
|
||||
max_integrity = 200
|
||||
integrity_failure = 50
|
||||
var/obj/item/extinguisher/has_extinguisher = null
|
||||
var/extinguishertype
|
||||
var/opened = 0
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
density = TRUE
|
||||
opacity = TRUE
|
||||
max_integrity = 100
|
||||
|
||||
canSmoothWith = list(
|
||||
/turf/simulated/wall,
|
||||
@@ -226,6 +227,7 @@
|
||||
mineral = /obj/item/stack/sheet/mineral/diamond
|
||||
walltype = /turf/simulated/wall/mineral/diamond
|
||||
canSmoothWith = list(/obj/structure/falsewall/diamond, /turf/simulated/wall/mineral/diamond)
|
||||
max_integrity = 800
|
||||
|
||||
|
||||
/obj/structure/falsewall/plasma
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/state = GIRDER_NORMAL
|
||||
var/girderpasschance = 20 // percentage chance that a projectile passes through the girder.
|
||||
var/health = 200
|
||||
max_integrity = 200
|
||||
var/can_displace = TRUE //If the girder can be moved around by crowbarring it
|
||||
var/metalUsed = 2 //used to determine amount returned in deconstruction
|
||||
|
||||
@@ -376,14 +376,14 @@
|
||||
anchored = 0
|
||||
state = GIRDER_DISPLACED
|
||||
girderpasschance = 25
|
||||
health = 120
|
||||
max_integrity = 120
|
||||
|
||||
/obj/structure/girder/reinforced
|
||||
name = "reinforced girder"
|
||||
icon_state = "reinforced"
|
||||
state = GIRDER_REINF
|
||||
girderpasschance = 0
|
||||
health = 350
|
||||
max_integrity = 350
|
||||
|
||||
/obj/structure/girder/cult
|
||||
name = "runed girder"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
desc = "The frame of a meat spike."
|
||||
density = 1
|
||||
anchored = 0
|
||||
max_integrity = 200
|
||||
|
||||
/obj/structure/kitchenspike_frame/attackby(obj/item/I, mob/user, params)
|
||||
add_fingerprint(user)
|
||||
@@ -37,6 +38,7 @@
|
||||
anchored = 1
|
||||
buckle_lying = FALSE
|
||||
can_buckle = TRUE
|
||||
max_integrity = 250
|
||||
|
||||
//ATTACK HAND IGNORING PARENT RETURN VALUE
|
||||
/obj/structure/kitchenspike/attack_hand(mob/user)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
|
||||
max_integrity = 50
|
||||
layer = LATTICE_LAYER //under pipes
|
||||
plane = FLOOR_PLANE
|
||||
var/number_of_rods = 1
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
icon = 'icons/obj/doors/mineral_doors.dmi'
|
||||
icon_state = "metal"
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 50)
|
||||
var/initial_state
|
||||
var/state = 0 //closed, 1 == open
|
||||
@@ -148,13 +149,13 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/mineral_door/iron
|
||||
hardness = 3
|
||||
max_integrity = 300
|
||||
|
||||
/obj/structure/mineral_door/silver
|
||||
name = "silver door"
|
||||
icon_state = "silver"
|
||||
sheetType = /obj/item/stack/sheet/mineral/silver
|
||||
hardness = 3
|
||||
max_integrity = 300
|
||||
|
||||
/obj/structure/mineral_door/gold
|
||||
name = "gold door"
|
||||
@@ -165,14 +166,14 @@
|
||||
name = "uranium door"
|
||||
icon_state = "uranium"
|
||||
sheetType = /obj/item/stack/sheet/mineral/uranium
|
||||
hardness = 3
|
||||
max_integrity = 300
|
||||
light_range = 2
|
||||
|
||||
/obj/structure/mineral_door/sandstone
|
||||
name = "sandstone door"
|
||||
icon_state = "sandstone"
|
||||
sheetType = /obj/item/stack/sheet/mineral/sandstone
|
||||
hardness = 0.5
|
||||
max_integrity = 100
|
||||
|
||||
/obj/structure/mineral_door/transparent
|
||||
opacity = 0
|
||||
@@ -208,7 +209,7 @@
|
||||
name = "diamond door"
|
||||
icon_state = "diamond"
|
||||
sheetType = /obj/item/stack/sheet/mineral/diamond
|
||||
hardness = 10
|
||||
max_integrity = 1000
|
||||
|
||||
/obj/structure/mineral_door/wood
|
||||
name = "wood door"
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
icon_state = "mirror"
|
||||
density = 0
|
||||
anchored = 1
|
||||
max_integrity = 200
|
||||
integrity_failure = 100
|
||||
var/list/ui_users = list()
|
||||
|
||||
/obj/structure/mirror/New(turf/T, newdir = SOUTH, building = FALSE)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "morgue1"
|
||||
density = 1
|
||||
max_integrity = 400
|
||||
dir = EAST
|
||||
var/obj/structure/m_tray/connected = null
|
||||
var/list/status_descriptors = list(
|
||||
@@ -184,6 +185,7 @@
|
||||
var/obj/structure/morgue/connected = null
|
||||
anchored = 1.0
|
||||
pass_flags = LETPASSTHROW
|
||||
max_integrity = 350
|
||||
|
||||
|
||||
/obj/structure/m_tray/attack_hand(mob/user as mob)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "nboard00"
|
||||
density = 0
|
||||
anchored = 1
|
||||
max_integrity = 150
|
||||
var/notices = 0
|
||||
|
||||
/obj/structure/noticeboard/Initialize()
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
opacity = 0
|
||||
density = 0
|
||||
layer = 3.5
|
||||
max_integrity = 100
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
|
||||
/obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
@@ -66,6 +67,7 @@
|
||||
/obj/structure/sign/double/map
|
||||
name = "station map"
|
||||
desc = "A framed picture of the station."
|
||||
max_integrity = 500
|
||||
|
||||
/obj/structure/sign/double/map/left
|
||||
icon_state = "map-left"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = ""
|
||||
density = 1
|
||||
anchored = 0
|
||||
max_integrity = 100
|
||||
var/oreAmount = 5
|
||||
var/material_drop_type = /obj/item/stack/sheet/metal
|
||||
|
||||
@@ -61,6 +62,7 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/statue/uranium
|
||||
max_integrity = 300
|
||||
light_range = 2
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/uranium
|
||||
var/last_event = 0
|
||||
@@ -98,6 +100,7 @@
|
||||
active = null
|
||||
|
||||
/obj/structure/statue/plasma
|
||||
max_integrity = 200
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/plasma
|
||||
desc = "This statue is suitably made from plasma."
|
||||
|
||||
@@ -145,6 +148,7 @@
|
||||
PlasmaBurn()
|
||||
|
||||
/obj/structure/statue/gold
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/gold
|
||||
desc = "This is a highly valuable statue made from gold."
|
||||
|
||||
@@ -169,6 +173,7 @@
|
||||
icon_state = "rd"
|
||||
|
||||
/obj/structure/statue/silver
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/silver
|
||||
desc = "This is a valuable statue made from silver."
|
||||
|
||||
@@ -193,6 +198,7 @@
|
||||
icon_state = "medborg"
|
||||
|
||||
/obj/structure/statue/diamond
|
||||
max_integrity = 1000
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/diamond
|
||||
desc = "This is a very expensive diamond statue."
|
||||
|
||||
@@ -209,6 +215,7 @@
|
||||
icon_state = "ai2"
|
||||
|
||||
/obj/structure/statue/bananium
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/bananium
|
||||
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
|
||||
var/spam_flag = 0
|
||||
@@ -237,6 +244,7 @@
|
||||
spam_flag = 0
|
||||
|
||||
/obj/structure/statue/sandstone
|
||||
max_integrity = 50
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/sandstone
|
||||
|
||||
/obj/structure/statue/sandstone/assistant
|
||||
@@ -251,6 +259,7 @@
|
||||
icon_state = "venus"
|
||||
|
||||
/obj/structure/statue/tranquillite
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/tranquillite
|
||||
desc = "..."
|
||||
|
||||
@@ -278,10 +287,10 @@
|
||||
icon_state = "snowman"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
max_integrity = 50
|
||||
|
||||
/obj/structure/snowman/built
|
||||
desc = "Just like the ones you remember from childhood!"
|
||||
max_integrity = 50
|
||||
|
||||
/obj/structure/snowman/built/Destroy()
|
||||
new /obj/item/reagent_containers/food/snacks/grown/carrot(drop_location())
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
desc = "It's a gruesome pile of thick, sticky resin shaped like a nest."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "nest"
|
||||
var/health = 100
|
||||
max_integrity = 120
|
||||
var/image/nest_overlay
|
||||
comfort = 0
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
buckle_lying = FALSE // you sit in a chair, not lay
|
||||
anchored = TRUE
|
||||
resistance_flags = NONE
|
||||
max_integrity = 250
|
||||
integrity_failure = 25
|
||||
buckle_offset = 0
|
||||
var/buildstacktype = /obj/item/stack/sheet/metal
|
||||
var/buildstackamount = 1
|
||||
|
||||
@@ -482,7 +482,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
cancolor = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list("melee" = 80, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
max_integrity = 50
|
||||
max_integrity = 75
|
||||
explosion_block = 1
|
||||
damage_deflection = 11
|
||||
glass_type = /obj/item/stack/sheet/rglass
|
||||
@@ -554,7 +554,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
shardtype = /obj/item/shard/plasma
|
||||
glass_type = /obj/item/stack/sheet/plasmaglass
|
||||
heat_resistance = 32000
|
||||
max_integrity = 120
|
||||
max_integrity = 200
|
||||
explosion_block = 1
|
||||
armor = list("melee" = 80, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 45, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
|
||||
|
||||
@@ -568,7 +568,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
shardtype = /obj/item/shard/plasma
|
||||
glass_type = /obj/item/stack/sheet/plasmarglass
|
||||
reinf = TRUE
|
||||
max_integrity = 160
|
||||
max_integrity = 500
|
||||
explosion_block = 2
|
||||
armor = list("melee" = 80, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
|
||||
damage_deflection = 21
|
||||
@@ -603,7 +603,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
shardtype = /obj/item/shard/plasma
|
||||
glass_type = /obj/item/stack/sheet/plasmaglass
|
||||
heat_resistance = 32000
|
||||
max_integrity = 240
|
||||
max_integrity = 300
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = list(/obj/structure/window/full/basic, /obj/structure/window/full/reinforced, /obj/structure/window/full/reinforced/tinted, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced)
|
||||
explosion_block = 1
|
||||
@@ -618,7 +618,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
glass_type = /obj/item/stack/sheet/plasmarglass
|
||||
smooth = SMOOTH_TRUE
|
||||
reinf = TRUE
|
||||
max_integrity = 320
|
||||
max_integrity = 1000
|
||||
explosion_block = 2
|
||||
armor = list("melee" = 80, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
|
||||
|
||||
@@ -632,7 +632,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
icon_state = "r_window"
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = list(/obj/structure/window/full/basic, /obj/structure/window/full/reinforced, /obj/structure/window/full/reinforced/tinted, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced)
|
||||
max_integrity = 100
|
||||
max_integrity = 150
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list("melee" = 80, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
@@ -658,7 +658,7 @@ obj/structure/window/full/reinforced/ice
|
||||
desc = "A reinforced, air-locked pod window."
|
||||
icon = 'icons/obj/smooth_structures/shuttle_window.dmi'
|
||||
icon_state = "shuttle_window"
|
||||
max_integrity = 160
|
||||
max_integrity = 150
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
explosion_block = 3
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "shuttle"
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
max_integrity = 500
|
||||
armor = list(melee = 100, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) //default + ignores melee
|
||||
|
||||
/obj/structure/shuttle/shuttleRotate(rotation)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/obj/item/clothing
|
||||
name = "clothing"
|
||||
max_integrity = 200
|
||||
integrity_failure = 80
|
||||
resistance_flags = FLAMMABLE
|
||||
var/list/species_restricted = null //Only these species can wear this kit.
|
||||
var/scan_reagents = 0 //Can the wearer see reagents while it's equipped?
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
|
||||
icon_state = "hardsuit0-engineering"
|
||||
item_state = "eng_helm"
|
||||
max_integrity = 300
|
||||
armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 50, "acid" = 75)
|
||||
var/basestate = "hardsuit"
|
||||
allowed = list(/obj/item/flashlight)
|
||||
@@ -87,6 +88,7 @@
|
||||
desc = "A special space suit for environments that might pose hazards beyond just the vacuum of space. Provides more protection than a standard space suit."
|
||||
icon_state = "hardsuit-engineering"
|
||||
item_state = "eng_hardsuit"
|
||||
max_integrity = 300
|
||||
armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 50, "acid" = 75)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/t_scanner, /obj/item/rcd, /obj/item/rpd)
|
||||
siemens_coefficient = 0
|
||||
|
||||
@@ -219,6 +219,7 @@
|
||||
icon_state = "durathread"
|
||||
item_state = "durathread"
|
||||
strip_delay = 60
|
||||
max_integrity = 200
|
||||
resistance_flags = FLAMMABLE
|
||||
armor = list("melee" = 20, "bullet" = 10, "laser" = 30, "energy" = 5, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 50)
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
lefthand_file = 'icons/goonstation/mob/inhands/items_lefthand.dmi'
|
||||
righthand_file = 'icons/goonstation/mob/inhands/items_righthand.dmi'
|
||||
materials = list(MAT_GLASS=500)
|
||||
max_integrity = 20
|
||||
resistance_flags = ACID_PROOF
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
icon = 'icons/obj/cooking_machines.dmi'
|
||||
icon_state = "icecream_vat"
|
||||
use_power = IDLE_POWER_USE
|
||||
max_integrity = 300
|
||||
idle_power_usage = 20
|
||||
var/obj/item/reagent_containers/glass/beaker = null
|
||||
var/useramount = 15 //Last used amount
|
||||
|
||||
@@ -53,6 +53,7 @@ var/list/ingredients_source = list(
|
||||
icon_state = "icecream_vat"
|
||||
density = 1
|
||||
anchored = 0
|
||||
max_integrity = 300
|
||||
var/list/ingredients = list()
|
||||
var/dispense_flavour = 1
|
||||
var/obj/item/reagent_containers/glass/held_container
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
icon_state = "beebox"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
max_integrity = 300
|
||||
var/mob/living/simple_animal/hostile/poison/bees/queen/queen_bee = null
|
||||
var/list/bees = list() //bees owned by the box, not those inside it
|
||||
var/list/honeycombs = list()
|
||||
|
||||
@@ -136,6 +136,7 @@
|
||||
bitesize_mod = 2
|
||||
tastes = list("cherry" = 1, "explosion" = 1)
|
||||
volume = 125 //Gives enough room for the black powder at max potency
|
||||
max_integrity = 40
|
||||
wine_power = 0.8
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
var/lastattempt = null
|
||||
var/attempts = 10
|
||||
var/codelen = 4
|
||||
integrity_failure = 0 //no breaking open the crate
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/New()
|
||||
..()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user