mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 14:08:31 +01:00
Refactors armor into dedicated subtypes (#71986)
## About The Pull Request See title. ## Why It's Good For The Game Code is cleaner, and more readable/intuitive Technically closes https://github.com/tgstation/dev-cycles-initiative/issues/8 ## Changelog 🆑 refactor: armor, from the ground up basically /🆑 Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
@@ -6,12 +6,20 @@
|
||||
req_access = list(ACCESS_BAR)
|
||||
max_integrity = 500
|
||||
integrity_failure = 0.5
|
||||
armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/sign_barsign
|
||||
buildable_sign = FALSE
|
||||
|
||||
var/panel_open = FALSE
|
||||
var/datum/barsign/chosen_sign
|
||||
|
||||
/datum/armor/sign_barsign
|
||||
melee = 20
|
||||
bullet = 20
|
||||
laser = 20
|
||||
energy = 100
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/sign/barsign/Initialize(mapload)
|
||||
. = ..()
|
||||
set_sign(new /datum/barsign/hiddensigns/signoff)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
drag_slowdown = 1.5 // Same as a prone mob
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 70, ACID = 60)
|
||||
armor_type = /datum/armor/structure_closet
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
|
||||
/// The overlay for the closet's door
|
||||
@@ -70,6 +70,14 @@
|
||||
|
||||
var/contents_initialized = FALSE
|
||||
|
||||
/datum/armor/structure_closet
|
||||
melee = 20
|
||||
bullet = 10
|
||||
laser = 10
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 60
|
||||
|
||||
/obj/structure/closet/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -4,10 +4,18 @@
|
||||
locked = TRUE
|
||||
icon_state = "secure"
|
||||
max_integrity = 250
|
||||
armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80)
|
||||
armor_type = /datum/armor/closet_secure_closet
|
||||
secure = TRUE
|
||||
damage_deflection = 20
|
||||
|
||||
/datum/armor/closet_secure_closet
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/secure_closet/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(SSdcs, COMSIG_GLOB_GREY_TIDE, PROC_REF(grey_tide))
|
||||
|
||||
@@ -5,10 +5,18 @@
|
||||
secure = TRUE
|
||||
locked = TRUE
|
||||
max_integrity = 500
|
||||
armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80)
|
||||
armor_type = /datum/armor/crate_secure
|
||||
var/tamperproof = 0
|
||||
damage_deflection = 25
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NO_MISSING_ITEM_ERROR, TRAIT_GENERIC)
|
||||
@@ -47,6 +55,14 @@
|
||||
name = "secure hydroponics crate"
|
||||
icon_state = "hydrosecurecrate"
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/freezer //for consistency with other "freezer" closets/crates
|
||||
desc = "An insulated crate with a lock on it, used to secure perishables."
|
||||
name = "secure kitchen crate"
|
||||
@@ -58,6 +74,14 @@
|
||||
req_access = list(ACCESS_KITCHEN)
|
||||
tamperproof = 10
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/freezer/pizza/PopulateContents()
|
||||
. = ..()
|
||||
new /obj/effect/spawner/random/food_or_drink/pizzaparty(src)
|
||||
@@ -85,6 +109,14 @@
|
||||
///Is the crate being bought by a person, or a budget card?
|
||||
var/department_purchase = FALSE
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/owned/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A conspicuous crate with the Syndicate logo on it. You don't know how to open it."
|
||||
icon_state = "syndicrate"
|
||||
max_integrity = 500
|
||||
armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0)
|
||||
armor_type = /datum/armor/crate_syndicrate
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
integrity_failure = 0 //prevents bust_open from activating
|
||||
/// variable that only lets the crate open if opened by a key from the uplink
|
||||
@@ -12,6 +12,12 @@
|
||||
var/list/unlock_contents = list()
|
||||
|
||||
/// if the crate takes damage it will explode 25% of the time
|
||||
/datum/armor/crate_syndicrate
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
|
||||
/obj/structure/closet/crate/syndicrate/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1)
|
||||
if(created_items)
|
||||
return ..()
|
||||
@@ -60,6 +66,12 @@
|
||||
icon_state = "syndicrate_key"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/datum/armor/crate_syndicrate
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
|
||||
/obj/item/syndicrate_key/Initialize(mapload)
|
||||
. = ..()
|
||||
register_item_context()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list(MELEE = 30, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 70, ACID = 100)
|
||||
armor_type = /datum/armor/structure_displaycase
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
///The showpiece item inside the case
|
||||
@@ -29,6 +29,12 @@
|
||||
///Used for subtypes that have a UI in them. The examine on click while adjecent will not fire, as we already get a popup
|
||||
var/autoexamine_while_closed = TRUE
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase/Initialize(mapload)
|
||||
. = ..()
|
||||
if(start_showpiece_type)
|
||||
@@ -227,6 +233,12 @@
|
||||
var/obj/item/electronics/airlock/electronics
|
||||
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase_chassis/attackby(obj/item/I, mob/user, params)
|
||||
if(I.tool_behaviour == TOOL_WRENCH) //The player can only deconstruct the wooden frame
|
||||
to_chat(user, span_notice("You start disassembling [src]..."))
|
||||
@@ -307,6 +319,12 @@
|
||||
///the trophy message
|
||||
var/trophy_message = ""
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase/trophy/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.trophy_cases += src
|
||||
@@ -423,6 +441,12 @@
|
||||
/obj/item/showpiece_dummy
|
||||
name = "holographic replica"
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/item/showpiece_dummy/Initialize(mapload, path)
|
||||
. = ..()
|
||||
var/obj/item/item_path = path
|
||||
@@ -448,6 +472,12 @@
|
||||
///The Account which will receive payment for purchases. Set by the first ID to swipe the tray.
|
||||
var/datum/bank_account/payments_acc = null
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase/forsale/update_icon_state()
|
||||
icon_state = "[initial(icon_state)][broken ? "_broken" : (open ? "_open" : (!showpiece ? "_empty" : null))]"
|
||||
return ..()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "fireaxe"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
armor = list(MELEE = 50, BULLET = 20, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 0, FIRE = 90, ACID = 50)
|
||||
armor_type = /datum/armor/structure_fireaxecabinet
|
||||
max_integrity = 150
|
||||
integrity_failure = 0.33
|
||||
/// Do we need to be unlocked to be opened.
|
||||
@@ -21,6 +21,14 @@
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
|
||||
|
||||
/datum/armor/structure_fireaxecabinet
|
||||
melee = 50
|
||||
bullet = 20
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 90
|
||||
acid = 50
|
||||
|
||||
/obj/structure/fireaxecabinet/Initialize(mapload)
|
||||
. = ..()
|
||||
held_item = new item_path(src)
|
||||
|
||||
@@ -12,12 +12,19 @@
|
||||
pass_flags_self = PASSGRILLE
|
||||
flags_1 = CONDUCT_1
|
||||
pressure_resistance = 5*ONE_ATMOSPHERE
|
||||
armor = list(MELEE = 50, BULLET = 70, LASER = 70, ENERGY = 100, BOMB = 10, BIO = 0, FIRE = 0, ACID = 0)
|
||||
armor_type = /datum/armor/structure_grille
|
||||
max_integrity = 50
|
||||
integrity_failure = 0.4
|
||||
var/rods_type = /obj/item/stack/rods
|
||||
var/rods_amount = 2
|
||||
|
||||
/datum/armor/structure_grille
|
||||
melee = 50
|
||||
bullet = 70
|
||||
laser = 70
|
||||
energy = 100
|
||||
bomb = 10
|
||||
|
||||
/obj/structure/grille/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/atmos_sensitive, mapload)
|
||||
|
||||
@@ -6,10 +6,17 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
anchored = TRUE
|
||||
max_integrity = 1
|
||||
armor = list(MELEE = 0, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 0, BIO = 0, FIRE = 20, ACID = 20)
|
||||
armor_type = /datum/armor/structure_holosign
|
||||
var/obj/item/holosign_creator/projector
|
||||
var/use_vis_overlay = TRUE
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/Initialize(mapload, source_projector)
|
||||
. = ..()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
@@ -59,6 +66,13 @@
|
||||
max_integrity = 20
|
||||
var/allow_walk = TRUE //can we pass through it on walk intent
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/CanAllowThrough(atom/movable/mover, border_dir)
|
||||
. = ..()
|
||||
if(.)
|
||||
@@ -76,6 +90,13 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "holosign"
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/wetsign/CanAllowThrough(atom/movable/mover, border_dir)
|
||||
. = ..()
|
||||
if(iscarbon(mover))
|
||||
@@ -109,6 +130,13 @@
|
||||
max_integrity = 150
|
||||
icon_state = "holo_tram"
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/atmos/Initialize(mapload)
|
||||
. = ..()
|
||||
air_update_turf(TRUE, TRUE)
|
||||
@@ -128,6 +156,13 @@
|
||||
max_integrity = 10
|
||||
allow_walk = FALSE
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/bullet_act(obj/projectile/P)
|
||||
take_damage((P.damage / 5) , BRUTE, MELEE, 1) //Doesn't really matter what damage flag it is.
|
||||
if(istype(P, /obj/projectile/energy/electrode))
|
||||
@@ -144,6 +179,13 @@
|
||||
var/force_allaccess = FALSE
|
||||
var/buzzcd = 0
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/medical/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("The biometric scanners are <b>[force_allaccess ? "off" : "on"]</b>.")
|
||||
@@ -189,6 +231,13 @@
|
||||
max_integrity = 20
|
||||
var/shockcd = 0
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/projectile/P)
|
||||
take_damage(P.damage, BRUTE, MELEE, 1) //Yeah no this doesn't get projectile resistance.
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
base_icon_state = "lattice"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 50)
|
||||
armor_type = /datum/armor/structure_lattice
|
||||
max_integrity = 50
|
||||
layer = LATTICE_LAYER //under pipes
|
||||
plane = FLOOR_PLANE
|
||||
@@ -18,6 +18,11 @@
|
||||
var/build_material = /obj/item/stack/rods
|
||||
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/examine(mob/user)
|
||||
. = ..()
|
||||
. += deconstruction_hints(user)
|
||||
@@ -81,6 +86,11 @@
|
||||
canSmoothWith = SMOOTH_GROUP_CATWALK
|
||||
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/catwalk/deconstruction_hints(mob/user)
|
||||
return span_notice("The supporting rods look like they could be <b>cut</b>.")
|
||||
|
||||
@@ -101,6 +111,11 @@
|
||||
desc = "A heavily reinforced catwalk used to build bridges in hostile environments. It doesn't look like anything could make this budge."
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/catwalk/mining/deconstruction_hints(mob/user)
|
||||
return
|
||||
|
||||
@@ -118,6 +133,11 @@
|
||||
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/lava/deconstruction_hints(mob/user)
|
||||
return span_notice("The rods look like they could be <b>cut</b>, but the <i>heat treatment will shatter off</i>. There's space for a <i>tile</i>.")
|
||||
|
||||
|
||||
@@ -12,7 +12,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 = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/structure_mineral_door
|
||||
can_atmos_pass = ATMOS_PASS_DENSITY
|
||||
rad_insulation = RAD_MEDIUM_INSULATION
|
||||
material_flags = MATERIAL_EFFECTS
|
||||
@@ -28,6 +28,13 @@
|
||||
var/sheetType = /obj/item/stack/sheet/iron //what we're made of
|
||||
var/sheetAmount = 10 //how much it takes to construct us.
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/Initialize(mapload)
|
||||
. = ..()
|
||||
var/obj/item/stack/initialized_mineral = new sheetType // Okay this kinda sucks.
|
||||
@@ -241,6 +248,13 @@
|
||||
opacity = FALSE
|
||||
rad_insulation = RAD_VERY_LIGHT_INSULATION
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/transparent/Close()
|
||||
..()
|
||||
set_opacity(FALSE)
|
||||
@@ -267,6 +281,13 @@
|
||||
max_integrity = 200
|
||||
rad_insulation = RAD_VERY_LIGHT_INSULATION
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/wood/pickaxe_door(mob/living/user, obj/item/I)
|
||||
return
|
||||
|
||||
@@ -293,6 +314,13 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 20
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/paperframe/Initialize(mapload)
|
||||
. = ..()
|
||||
if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
|
||||
|
||||
@@ -9,10 +9,15 @@
|
||||
layer = SIGN_LAYER
|
||||
custom_materials = list(/datum/material/gold = 2000)
|
||||
max_integrity = 200 //Twice as durable as regular signs.
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/structure_plaque
|
||||
///Custom plaque structures and items both start "unengraved", once engraved with a fountain pen their text can't be altered again. Static plaques are already engraved.
|
||||
var/engraved = FALSE
|
||||
|
||||
/datum/armor/structure_plaque
|
||||
melee = 50
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/plaque //The item version of the above.
|
||||
icon = 'icons/obj/signs.dmi'
|
||||
icon_state = "blankplaque"
|
||||
@@ -24,12 +29,17 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
custom_materials = list(/datum/material/gold = 2000)
|
||||
max_integrity = 200
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/item_plaque
|
||||
///This points the item to make the proper structure when placed on a wall.
|
||||
var/plaque_path = /obj/structure/plaque
|
||||
///Custom plaque structures and items both start "unengraved", once engraved with a fountain pen their text can't be altered again.
|
||||
var/engraved = FALSE
|
||||
|
||||
/datum/armor/item_plaque
|
||||
melee = 50
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/plaque/attack_hand(mob/user, list/modifiers)
|
||||
. = ..()
|
||||
if(. || user.is_blind())
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
gender = PLURAL
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "plasticflaps"
|
||||
armor = list(MELEE = 100, BULLET = 80, LASER = 80, ENERGY = 100, BOMB = 50, BIO = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/structure_plasticflaps
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
@@ -13,6 +13,15 @@
|
||||
/obj/structure/plasticflaps/opaque
|
||||
opacity = TRUE
|
||||
|
||||
/datum/armor/structure_plasticflaps
|
||||
melee = 100
|
||||
bullet = 80
|
||||
laser = 80
|
||||
energy = 100
|
||||
bomb = 50
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/plasticflaps/Initialize(mapload)
|
||||
. = ..()
|
||||
alpha = 0
|
||||
|
||||
@@ -8,13 +8,20 @@
|
||||
anchored = TRUE
|
||||
pass_flags_self = LETPASSTHROW|PASSSTRUCTURE
|
||||
/// armor more or less consistent with grille. max_integrity about one time and a half that of a grille.
|
||||
armor = list(MELEE = 50, BULLET = 70, LASER = 70, ENERGY = 100, BOMB = 10, BIO = 0, FIRE = 0, ACID = 0)
|
||||
armor_type = /datum/armor/structure_railing
|
||||
max_integrity = 75
|
||||
|
||||
var/climbable = TRUE
|
||||
///Initial direction of the railing.
|
||||
var/ini_dir
|
||||
|
||||
/datum/armor/structure_railing
|
||||
melee = 50
|
||||
bullet = 70
|
||||
laser = 70
|
||||
energy = 100
|
||||
bomb = 10
|
||||
|
||||
/obj/structure/railing/corner //aesthetic corner sharp edges hurt oof ouch
|
||||
icon_state = "railing_corner"
|
||||
density = FALSE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
layer = SIGN_LAYER
|
||||
custom_materials = list(/datum/material/plastic = 2000)
|
||||
max_integrity = 100
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/structure_sign
|
||||
///Determines if a sign is unwrenchable.
|
||||
var/buildable_sign = TRUE
|
||||
resistance_flags = FLAMMABLE
|
||||
@@ -15,6 +15,11 @@
|
||||
///sign_change_name is used to make nice looking, alphebetized and categorized names when you use a pen on any sign item or structure which is_editable.
|
||||
var/sign_change_name
|
||||
|
||||
/datum/armor/structure_sign
|
||||
melee = 50
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/sign/blank //This subtype is necessary for now because some other things (posters, picture frames, paintings) inheret from the parent type.
|
||||
icon_state = "backing"
|
||||
name = "sign backing"
|
||||
@@ -32,7 +37,7 @@
|
||||
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
custom_materials = list(/datum/material/plastic = 2000)
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
|
||||
armor_type = /datum/armor/item_sign
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 100
|
||||
///The type of sign structure that will be created when placed on a turf, the default looks just like a sign backing item.
|
||||
@@ -40,6 +45,11 @@
|
||||
///This determines if you can select this sign type when using a pen on a sign backing. False by default, set to true per sign type to override.
|
||||
var/is_editable = TRUE
|
||||
|
||||
/datum/armor/item_sign
|
||||
melee = 50
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/sign/Initialize(mapload) //Signs not attached to walls are always rotated so they look like they're laying horizontal.
|
||||
. = ..()
|
||||
var/matrix/M = matrix()
|
||||
|
||||
@@ -391,7 +391,11 @@
|
||||
canSmoothWith = SMOOTH_GROUP_GLASS_TABLES
|
||||
max_integrity = 70
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100)
|
||||
armor_type = /datum/armor/table_glass
|
||||
|
||||
/datum/armor/table_glass
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/table/glass/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -480,6 +484,10 @@
|
||||
smoothing_groups = SMOOTH_GROUP_WOOD_TABLES //Don't smooth with SMOOTH_GROUP_TABLES
|
||||
canSmoothWith = SMOOTH_GROUP_WOOD_TABLES
|
||||
|
||||
/datum/armor/table_glass
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/table/wood/narsie_act(total_override = TRUE)
|
||||
if(!total_override)
|
||||
..()
|
||||
@@ -508,6 +516,10 @@
|
||||
canSmoothWith = SMOOTH_GROUP_FANCY_WOOD_TABLES
|
||||
var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi' // see Initialize()
|
||||
|
||||
/datum/armor/table_glass
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/table/wood/fancy/Initialize(mapload)
|
||||
. = ..()
|
||||
// Needs to be set dynamically because table smooth sprites are 32x34,
|
||||
@@ -583,7 +595,16 @@
|
||||
buildstack = /obj/item/stack/sheet/plasteel
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
armor = list(MELEE = 10, BULLET = 30, LASER = 30, ENERGY = 100, BOMB = 20, BIO = 0, FIRE = 80, ACID = 70)
|
||||
armor_type = /datum/armor/table_reinforced
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/table/reinforced/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
@@ -632,6 +653,15 @@
|
||||
smoothing_groups = SMOOTH_GROUP_BRONZE_TABLES //Don't smooth with SMOOTH_GROUP_TABLES
|
||||
canSmoothWith = SMOOTH_GROUP_BRONZE_TABLES
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/table/bronze/tablepush(mob/living/user, mob/living/pushed_mob)
|
||||
..()
|
||||
playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 50, TRUE)
|
||||
@@ -695,6 +725,15 @@
|
||||
var/mob/living/carbon/patient = null
|
||||
var/obj/machinery/computer/operating/computer = null
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/table/optable/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/direction in GLOB.alldirs)
|
||||
@@ -768,6 +807,15 @@
|
||||
pass_flags_self = LETPASSTHROW //You can throw objects over this, despite it's density.
|
||||
max_integrity = 20
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/rack/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("It's held together by a couple of <b>bolts</b>.")
|
||||
@@ -849,6 +897,15 @@
|
||||
custom_materials = list(/datum/material/iron=2000)
|
||||
var/building = FALSE
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/item/rack_parts/attackby(obj/item/W, mob/user, params)
|
||||
if (W.tool_behaviour == TOOL_WRENCH)
|
||||
new /obj/item/stack/sheet/iron(user.loc)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
max_integrity = 50
|
||||
can_be_unanchored = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100)
|
||||
armor_type = /datum/armor/structure_window
|
||||
can_atmos_pass = ATMOS_PASS_PROC
|
||||
rad_insulation = RAD_VERY_LIGHT_INSULATION
|
||||
pass_flags_self = PASSGLASS
|
||||
@@ -34,6 +34,11 @@
|
||||
/// If some inconsiderate jerk has had their blood spilled on this window, thus making it cleanable
|
||||
var/bloodied = FALSE
|
||||
|
||||
/datum/armor/structure_window
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/Initialize(mapload, direct)
|
||||
. = ..()
|
||||
if(direct)
|
||||
@@ -440,7 +445,7 @@
|
||||
icon_state = "rwindow"
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list(MELEE = 80, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 0, FIRE = 80, ACID = 100)
|
||||
armor_type = /datum/armor/window_reinforced
|
||||
max_integrity = 75
|
||||
explosion_block = 1
|
||||
damage_deflection = 11
|
||||
@@ -453,6 +458,12 @@
|
||||
//If you find this like 4 years later and construction still hasn't been refactored, I'm so sorry for this //Adding a timestamp, I found this in 2020, I hope it's from this year -Lemon
|
||||
//2021 AND STILLLL GOING STRONG
|
||||
//2022 BABYYYYY ~lewc
|
||||
/datum/armor/window_reinforced
|
||||
melee = 80
|
||||
bomb = 25
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/reinforced/attackby_secondary(obj/item/tool, mob/user, params)
|
||||
switch(state)
|
||||
if(RWINDOW_SECURE)
|
||||
@@ -563,12 +574,19 @@
|
||||
icon_state = "plasmawindow"
|
||||
reinf = FALSE
|
||||
heat_resistance = 25000
|
||||
armor = list(MELEE = 80, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 45, BIO = 0, FIRE = 99, ACID = 100)
|
||||
armor_type = /datum/armor/window_plasma
|
||||
max_integrity = 200
|
||||
explosion_block = 1
|
||||
glass_type = /obj/item/stack/sheet/plasmaglass
|
||||
rad_insulation = RAD_MEDIUM_INSULATION
|
||||
|
||||
/datum/armor/window_plasma
|
||||
melee = 80
|
||||
bullet = 5
|
||||
bomb = 45
|
||||
fire = 99
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/plasma/Initialize(mapload, direct)
|
||||
. = ..()
|
||||
RemoveElement(/datum/element/atmos_sensitive)
|
||||
@@ -600,13 +618,20 @@
|
||||
icon_state = "plasmarwindow"
|
||||
reinf = TRUE
|
||||
heat_resistance = 50000
|
||||
armor = list(MELEE = 80, BULLET = 20, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 0, FIRE = 99, ACID = 100)
|
||||
armor_type = /datum/armor/reinforced_plasma
|
||||
max_integrity = 500
|
||||
damage_deflection = 21
|
||||
explosion_block = 2
|
||||
glass_type = /obj/item/stack/sheet/plasmarglass
|
||||
rad_insulation = RAD_HEAVY_INSULATION
|
||||
|
||||
/datum/armor/reinforced_plasma
|
||||
melee = 80
|
||||
bullet = 20
|
||||
bomb = 60
|
||||
fire = 99
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/reinforced/plasma/block_superconductivity()
|
||||
return TRUE
|
||||
|
||||
@@ -716,6 +741,13 @@
|
||||
glass_amount = 2
|
||||
|
||||
//there is a sub shuttle window in survival_pod.dm for mining pods
|
||||
/datum/armor/reinforced_plasma
|
||||
melee = 80
|
||||
bullet = 20
|
||||
bomb = 60
|
||||
fire = 99
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/reinforced/shuttle//this is called reinforced because it is reinforced w/titanium
|
||||
name = "shuttle window"
|
||||
desc = "A reinforced, air-locked pod window."
|
||||
@@ -729,7 +761,7 @@
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list(MELEE = 90, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 80, ACID = 100)
|
||||
armor_type = /datum/armor/reinforced_shuttle
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE
|
||||
@@ -739,6 +771,12 @@
|
||||
receive_ricochet_chance_mod = 1.2
|
||||
rad_insulation = RAD_MEDIUM_INSULATION
|
||||
|
||||
/datum/armor/reinforced_shuttle
|
||||
melee = 90
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/reinforced/shuttle/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard/titanium(location)
|
||||
@@ -769,7 +807,7 @@
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
heat_resistance = 1600
|
||||
armor = list(MELEE = 95, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 80, ACID = 100)
|
||||
armor_type = /datum/armor/plasma_plastitanium
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_SHUTTLE_PARTS + SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM
|
||||
@@ -779,6 +817,12 @@
|
||||
glass_amount = 2
|
||||
rad_insulation = RAD_EXTREME_INSULATION
|
||||
|
||||
/datum/armor/plasma_plastitanium
|
||||
melee = 95
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/reinforced/plasma/plastitanium/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard/plastitanium(location)
|
||||
@@ -811,7 +855,7 @@
|
||||
decon_speed = 10
|
||||
can_atmos_pass = ATMOS_PASS_YES
|
||||
resistance_flags = FLAMMABLE
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
|
||||
armor_type = /datum/armor/none
|
||||
knock_sound = SFX_PAGE_TURN
|
||||
bash_sound = 'sound/weapons/slashmiss.ogg'
|
||||
break_sound = 'sound/items/poster_ripped.ogg'
|
||||
@@ -819,6 +863,12 @@
|
||||
var/static/mutable_appearance/torn = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "torn", layer = ABOVE_OBJ_LAYER - 0.1)
|
||||
var/static/mutable_appearance/paper = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "paper", layer = ABOVE_OBJ_LAYER - 0.1)
|
||||
|
||||
/datum/armor/plasma_plastitanium
|
||||
melee = 95
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/paperframe/Initialize(mapload)
|
||||
. = ..()
|
||||
update_appearance()
|
||||
|
||||
Reference in New Issue
Block a user