Merge pull request #12245 from Fox-McCloud/universal-damage

Universal Object Damage
This commit is contained in:
variableundefined
2019-10-06 23:22:48 -04:00
committed by GitHub
567 changed files with 5193 additions and 5472 deletions
+7 -10
View File
@@ -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()
..()
@@ -171,9 +172,6 @@
else
return ..()
/obj/structure/closet/crate/secure/loot/attack_animal(mob/user)
boom(user)
/obj/structure/closet/crate/secure/loot/attackby(obj/item/W, mob/user)
if(locked)
if(istype(W, /obj/item/card/emag))
@@ -205,16 +203,15 @@
return 1
return ..()
/obj/structure/closet/crate/secure/loot/emag_act(mob/user)
if(locked)
boom(user)
/obj/structure/closet/crate/secure/loot/togglelock(mob/user)
if(locked)
boom(user)
else
..()
/obj/structure/closet/crate/secure/loot/proc/boom(mob/user)
to_chat(user, "<span class='danger'>The crate's anti-tamper system activates!</span>")
for(var/atom/movable/AM in src)
qdel(AM)
var/turf/T = get_turf(src)
explosion(T, -1, -1, 1, 1)
qdel(src)
/obj/structure/closet/crate/secure/loot/deconstruct(disassembled = TRUE)
boom()
@@ -12,7 +12,7 @@
hoodtype = /obj/item/clothing/head/hooded/explorer
armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
hide_tail_by_species = list("Vox" , "Vulpkanin" , "Unathi" , "Tajaran")
sprite_sheets = list(
@@ -34,7 +34,7 @@
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi',
@@ -50,9 +50,9 @@
item_state = "hostile_env"
flags = THICKMATERIAL //not spaceproof
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
burn_state = LAVA_PROOF
resistance_flags = FIRE_PROOF | LAVA_PROOF
slowdown = 0
armor = list(melee = 70, bullet = 40, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 100)
armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
/obj/item/clothing/suit/space/hostile_environment/New()
@@ -81,8 +81,8 @@
w_class = WEIGHT_CLASS_NORMAL
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
flags = THICKMATERIAL // no space protection
armor = list(melee = 70, bullet = 40, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 100)
burn_state = LAVA_PROOF
armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | LAVA_PROOF
/obj/item/clothing/head/helmet/space/hostile_environment/New()
..()
@@ -20,6 +20,8 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
desc = "Prism-brand path illumination devices. Used by miners to mark paths and warn of danger."
icon = 'icons/obj/lighting.dmi'
icon_state = "marker"
armor = list("melee" = 50, "bullet" = 75, "laser" = 75, "energy" = 75, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 25, "acid" = 0)
max_integrity = 50
merge_type = /obj/item/stack/marker_beacon
max_amount = 100
var/picked_color = "random"
@@ -85,7 +87,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
update_icon()
/obj/structure/marker_beacon/deconstruct(disassembled = TRUE)
if(can_deconstruct)
if(!(flags & NODECONSTRUCT))
var/obj/item/stack/marker_beacon/M = new(loc)
M.picked_color = picked_color
M.update_icon()
@@ -80,7 +80,7 @@
flags = PREVENT_CLICK_UNDER
reinf = TRUE
heat_resistance = 1600
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100)
armor = list("melee" = 90, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
smooth = SMOOTH_MORE
canSmoothWith = list(/turf/simulated/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod)
explosion_block = 3
@@ -213,7 +213,7 @@
light_color = "#DDFFD3"
max_n_of_items = 10
pixel_y = -4
can_deconstruct = FALSE
flags = NODECONSTRUCT
var/empty = FALSE
/obj/machinery/smartfridge/survival_pod/Initialize(mapload)
@@ -271,8 +271,9 @@
return !arbitraryatmosblockingvar
/obj/structure/fans/deconstruct()
if(buildstacktype)
new buildstacktype(loc, buildstackamount)
if(!(flags & NODECONSTRUCT))
if(buildstacktype)
new buildstacktype(loc, buildstackamount)
qdel(src)
/obj/structure/fans/attackby(obj/item/W, mob/user, params)
@@ -294,11 +295,8 @@
/obj/structure/fans/tiny/invisible
name = "air flow blocker"
resistance_flags = INDESTRUCTIBLE
burn_state = LAVA_PROOF
unacidable = TRUE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
invisibility = INVISIBILITY_ABSTRACT
//Signs
/obj/structure/sign/mining
name = "nanotrasen mining corps sign"
+1 -1
View File
@@ -188,7 +188,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
return TRUE
return FALSE
/obj/effect/extraction_holder/singularity_pull()
/obj/effect/extraction_holder/singularity_act()
return
/obj/effect/extraction_holder/singularity_pull()
@@ -49,6 +49,7 @@ GLOBAL_LIST(labor_sheet_values)
return
else
to_chat(user, "<span class='notice'>There's an ID inserted already.</span>")
return
return ..()
/obj/machinery/mineral/labor_claim_console/attack_hand(mob/user)
@@ -91,7 +92,7 @@ GLOBAL_LIST(labor_sheet_values)
if(href_list["handle_id"])
if(inserted_id)
if(!usr.put_in_hands(inserted_id))
inserted_id.forceMove(get_turf(src))
inserted_id.forceMove(get_turf(src))
inserted_id = null
else
var/obj/item/I = usr.get_active_hand()
@@ -143,6 +144,7 @@ GLOBAL_LIST(labor_sheet_values)
/**********************Prisoner Collection Unit**************************/
/obj/machinery/mineral/stacking_machine/laborstacker
damage_deflection = 21
var/points = 0 //The unclaimed value of ore stacked.
/obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp)
@@ -153,6 +155,7 @@ GLOBAL_LIST(labor_sheet_values)
if(istype(I, /obj/item/stack/sheet) && user.canUnEquip(I))
var/obj/item/stack/sheet/inp = I
points += inp.point_value * inp.amount
return
return ..()
/**********************Point Lookup Console**************************/
@@ -179,5 +182,5 @@ GLOBAL_LIST(labor_sheet_values)
to_chat(user, "<span class='notice'>Collect points by bringing smelted minerals to the Labor Shuttle stacking machine. Reach your quota to earn your release.</span>")
else
to_chat(user, "<span class='warning'>Error: Invalid ID</span>")
else
return ..()
return
return ..()
+2 -11
View File
@@ -26,17 +26,6 @@
base_icon = "[icon_state][rand(1, 4)]"
icon_state = base_icon
/obj/structure/flora/ash/ex_act(severity, target)
switch(severity)
if(1)
qdel(src)
if(2)
if(prob(80))
qdel(src)
if(3)
if(prob(50))
qdel(src)
/obj/structure/flora/ash/proc/harvest(user)
if(harvested)
return 0
@@ -160,6 +149,8 @@
icon = 'icons/obj/lavaland/ash_flora.dmi'
icon_state = "mushroom_shavings"
w_class = WEIGHT_CLASS_TINY
resistance_flags = FLAMMABLE
max_integrity = 100
seed = /obj/item/seeds/lavaland/polypore
wine_power = 0.2
@@ -168,8 +168,7 @@
force = 25
damtype = BURN
hitsound = 'sound/weapons/sear.ogg'
burn_state = LAVA_PROOF
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/turf_type = /turf/simulated/floor/plating/lava/smooth
var/transform_string = "lava"
var/reset_turf_type = /turf/simulated/floor/plating/asteroid/basalt
@@ -26,8 +26,7 @@
icon_state = "blackbox"
luminosity = 8
max_n_of_items = INFINITY
unacidable = 1
burn_state = LAVA_PROOF
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
pixel_y = -4
use_power = NO_POWER_USE
var/memory_saved = FALSE
@@ -113,11 +112,10 @@
desc = "A strange chunk of crystal, being in the presence of it fills you with equal parts excitement and dread."
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "anomaly_crystal"
luminosity = 8
light_range = 8
use_power = NO_POWER_USE
density = 1
burn_state = LAVA_PROOF
unacidable = 1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/activation_method = "touch"
var/activation_damage_type = null
var/last_use_timer = 0
@@ -140,7 +138,7 @@
/obj/machinery/anomalous_crystal/attackby(obj/item/I, mob/user, params)
ActivationReaction(user,"weapon")
..()
return ..()
/obj/machinery/anomalous_crystal/bullet_act(obj/item/projectile/P, def_zone)
..()
@@ -440,6 +438,7 @@
icon_state = null //This shouldn't even be visible, so if it DOES show up, at least nobody will notice
density = 1
anchored = 1
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
var/mob/living/simple_animal/holder_animal
/obj/structure/closet/stasis/process()
@@ -14,6 +14,7 @@
icon = 'icons/obj/storage.dmi'
icon_state = "cultpack"
slot_flags = SLOT_BACK
resistance_flags = INDESTRUCTIBLE
var/obj/item/storage/backpack/shared/bag
/obj/item/shared_storage/red
@@ -164,7 +165,7 @@
icon_state = "goliath_boat"
icon = 'icons/obj/lavaland/dragonboat.dmi'
held_key_type = /obj/item/oar
burn_state = LAVA_PROOF
resistance_flags = LAVA_PROOF | FIRE_PROOF
/obj/vehicle/lavaboat/relaymove(mob/user, direction)
var/turf/next = get_step(src, direction)
@@ -184,7 +185,7 @@
desc = "Not to be confused with the kind Research hassles you for."
force = 12
w_class = WEIGHT_CLASS_NORMAL
burn_state = LAVA_PROOF
resistance_flags = LAVA_PROOF | FIRE_PROOF
/datum/crafting_recipe/oar
name = "goliath bone oar"
@@ -207,7 +208,6 @@
desc = "A tiny ship inside a bottle."
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "ship_bottle"
burn_state = LAVA_PROOF
/obj/item/ship_in_a_bottle/attack_self(mob/user)
to_chat(user, "You're not sure how they get the ships in these things, but you're pretty sure you know how to get it out.")
@@ -396,6 +396,7 @@
desc = "A dread talisman that can render you completely invulnerable."
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "talisman"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
actions_types = list(/datum/action/item_action/immortality)
var/cooldown = 0
@@ -441,6 +442,9 @@
/obj/effect/immortality_talisman/ex_act()
return
/obj/effect/immortality_talisman/singularity_act()
return
/obj/effect/immortality_talisman/singularity_pull()
return 0
@@ -6,8 +6,7 @@
icon_state = "necrocrate"
icon_opened = "necrocrateopen"
icon_closed = "necrocrate"
burn_state = LAVA_PROOF
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/structure/closet/crate/necropolis/tendril
desc = "It's watching you suspiciously."
+3 -8
View File
@@ -368,14 +368,9 @@
to_chat(usr, "<span class='warning'>Required access not found.</span>")
updateUsrDialog()
/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
do_sparks(5, 1, src)
if(severity == 1)
if(prob(50))
qdel(src)
else if(severity == 2)
if(prob(25))
qdel(src)
/obj/machinery/mineral/ore_redemption/ex_act(severity)
do_sparks(5, TRUE, src)
..()
/obj/machinery/mineral/ore_redemption/power_change()
..()
+3 -3
View File
@@ -194,7 +194,7 @@
return
else
RedeemVoucher(I, user)
return
return
if(istype(I,/obj/item/card/id))
if(!powered())
return
@@ -206,8 +206,8 @@
C.forceMove(src)
inserted_id = C
interact(user)
return
..()
return
return ..()
/obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/mining_voucher/voucher, mob/redeemer)
var/items = list("Survival Capsule and Explorer's Webbing", "Resonator Kit", "Minebot Kit", "Extraction and Rescue Kit", "Crusher Kit", "Mining Conscription Kit")
-1
View File
@@ -5,7 +5,6 @@
name = "Light emitter"
anchored = TRUE
invisibility = 101
unacidable = TRUE
var/set_luminosity = 8
var/set_cap = 0
+1 -2
View File
@@ -5,8 +5,7 @@
icon_state = "moneybag"
force = 10
throwforce = 0
burn_state = FLAMMABLE
burntime = 20
resistance_flags = FLAMMABLE
max_integrity = 100
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
+6 -1
View File
@@ -59,7 +59,7 @@
return ..()
/obj/item/stack/ore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
..()
. = ..()
if(isnull(refined_type))
return
else
@@ -124,6 +124,11 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
to_chat(C, "<span class='userdanger'>[src] gets into your eyes! The pain, it burns!</span>")
qdel(src)
/obj/item/stack/ore/glass/ex_act(severity)
if(severity == EXPLODE_NONE)
return
qdel(src)
/obj/item/stack/ore/glass/basalt
name = "volcanic ash"
icon_state = "volcanic_sand"
+4 -9
View File
@@ -10,10 +10,7 @@
pressure_resistance = 5 * ONE_ATMOSPHERE
/obj/structure/ore_box/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/t_scanner/adv_mining_scanner))
attack_hand(user)
return
else if(istype(W, /obj/item/stack/ore))
if(istype(W, /obj/item/stack/ore))
if(!user.drop_item())
return
W.forceMove(src)
@@ -30,6 +27,8 @@
if(do_after(user, 50 * C.toolspeed, target = src))
user.visible_message("<span class='notice'>[user] pries [src] apart.</span>", "<span class='notice'>You pry apart [src].</span>", "<span class='italics'>You hear splitting wood.</span>")
deconstruct(TRUE, user)
else
return ..()
/obj/structure/ore_box/attack_hand(mob/user)
if(Adjacent(user))
@@ -63,10 +62,6 @@
to_chat(usr, "<span class='notice'>You empty the box.</span>")
updateUsrDialog()
obj/structure/ore_box/ex_act(severity, target)
if(prob(100 / severity) && severity < 3)
qdel(src) //nothing but ores can get inside unless its a bug and ores just return nothing on ex_act, not point in calling it on them
/obj/structure/ore_box/deconstruct(disassembled = TRUE, mob/user)
var/obj/item/stack/sheet/wood/W = new (loc, 4)
if(user)
@@ -84,7 +79,7 @@ obj/structure/ore_box/ex_act(severity, target)
CHECK_TICK
/obj/structure/ore_box/onTransitZ()
return
return
/obj/structure/ore_box/verb/empty_box()
set name = "Empty Ore Box"