mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-20 19:43:13 +01:00
* Thoroughly resprites boxes. They're now more modular and, importantly, colorable. * Resprites cardboard, as a material. * Repaths boxes behind the scenes to be more object-oriented, with boxes being resorted into their own subtypes. You might notice this in the gargantuan amount of files this PR changes. Part of a bigger (yet modestly-sized still) resprites project. Atomized the boxes bit into this PR specifically so that any conflicts don't destroy any other spriting PRs. <img width="652" height="273" alt="image" src="https://github.com/user-attachments/assets/5590b22d-c9d7-49b5-9adf-0b6e01a6962b" /> <img width="383" height="345" alt="image" src="https://github.com/user-attachments/assets/aab83040-2d5d-4283-b019-3d6bed2e3e47" /> <img width="142" height="343" alt="image" src="https://github.com/user-attachments/assets/75a98d36-0171-4e48-9dec-de5511f35d39" /> <img width="127" height="225" alt="image" src="https://github.com/user-attachments/assets/a1ff8b1b-bd2a-4c0d-b538-32fe401724c3" /> <img width="334" height="399" alt="image" src="https://github.com/user-attachments/assets/e41330ac-ed4a-4e81-a87a-5ba901b47b5c" />
219 lines
7.0 KiB
Plaintext
219 lines
7.0 KiB
Plaintext
/obj/structure/closet/cabinet
|
|
name = "cabinet"
|
|
desc = "Old will forever be in fashion."
|
|
icon_state = "cabinet"
|
|
open_sound = 'sound/machines/wooden_closet_open.ogg'
|
|
close_sound = 'sound/machines/wooden_closet_close.ogg'
|
|
storage_capacity = 45 //such a big closet deserves a little more capacity
|
|
door_anim_angle = 160
|
|
door_anim_squish = 0.22
|
|
door_hinge_x_alt = 7.5
|
|
double_doors = TRUE
|
|
|
|
/obj/structure/closet/cabinet/attackby(obj/item/attacking_item, mob/user)
|
|
if(opened)
|
|
if(istype(attacking_item, /obj/item/grab))
|
|
var/obj/item/grab/G = attacking_item
|
|
mouse_drop_receive(G.affecting, user) //act like they were dragged onto the closet
|
|
return 0
|
|
if(!attacking_item.dropsafety())
|
|
return
|
|
if(attacking_item)
|
|
user.drop_from_inventory(attacking_item, loc)
|
|
else
|
|
user.drop_item()
|
|
else if(istype(attacking_item, /obj/item/stack/packageWrap))
|
|
return
|
|
else
|
|
attack_hand(user)
|
|
return
|
|
|
|
/obj/structure/closet/acloset
|
|
name = "strange closet"
|
|
desc = "It looks alien!"
|
|
icon_state = "decursed"
|
|
|
|
/obj/structure/closet/gimmick
|
|
name = "administrative supply closet"
|
|
icon_state = "syndicate1"
|
|
|
|
/obj/structure/closet/gimmick/russian
|
|
name = "russian surplus closet"
|
|
desc = "It's a storage unit for Russian standard-issue surplus."
|
|
|
|
/obj/structure/closet/gimmick/russian/fill()
|
|
new /obj/item/clothing/head/ushanka/grey(src)
|
|
new /obj/item/clothing/head/ushanka/grey(src)
|
|
new /obj/item/clothing/head/ushanka/grey(src)
|
|
new /obj/item/clothing/head/ushanka/grey(src)
|
|
new /obj/item/clothing/head/ushanka/grey(src)
|
|
|
|
/obj/structure/closet/gimmick/tacticool
|
|
name = "tacticool gear closet"
|
|
desc = "It's a storage unit for Tacticool gear."
|
|
|
|
/obj/structure/closet/gimmick/tacticool/fill()
|
|
new /obj/item/clothing/glasses/eyepatch(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/clothing/gloves/swat(src)
|
|
new /obj/item/clothing/gloves/swat(src)
|
|
new /obj/item/clothing/head/helmet/swat(src)
|
|
new /obj/item/clothing/head/helmet/swat(src)
|
|
new /obj/item/clothing/mask/gas(src)
|
|
new /obj/item/clothing/mask/gas(src)
|
|
new /obj/item/clothing/shoes/combat(src)
|
|
new /obj/item/clothing/shoes/combat(src)
|
|
new /obj/item/clothing/suit/armor/swat(src)
|
|
new /obj/item/clothing/suit/armor/swat(src)
|
|
new /obj/item/clothing/under/syndicate/tacticool(src)
|
|
new /obj/item/clothing/under/syndicate/tacticool(src)
|
|
|
|
|
|
/obj/structure/closet/thunderdome
|
|
name = "\improper Thunderdome closet"
|
|
desc = "Everything you need!"
|
|
icon_state = "syndicate"
|
|
anchored = 1
|
|
|
|
/obj/structure/closet/thunderdome/tdred
|
|
name = "red-team Thunderdome closet"
|
|
|
|
/obj/structure/closet/thunderdome/tdred/fill()
|
|
new /obj/item/clothing/suit/armor/tdome/red(src)
|
|
new /obj/item/clothing/suit/armor/tdome/red(src)
|
|
new /obj/item/clothing/suit/armor/tdome/red(src)
|
|
new /obj/item/melee/energy/sword(src)
|
|
new /obj/item/melee/energy/sword(src)
|
|
new /obj/item/melee/energy/sword(src)
|
|
new /obj/item/gun/energy/laser(src)
|
|
new /obj/item/gun/energy/laser(src)
|
|
new /obj/item/gun/energy/laser(src)
|
|
new /obj/item/melee/baton(src)
|
|
new /obj/item/melee/baton(src)
|
|
new /obj/item/melee/baton(src)
|
|
new /obj/item/storage/box/tactical/flashbangs(src)
|
|
new /obj/item/storage/box/tactical/flashbangs(src)
|
|
new /obj/item/storage/box/tactical/flashbangs(src)
|
|
new /obj/item/clothing/head/helmet/thunderdome(src)
|
|
new /obj/item/clothing/head/helmet/thunderdome(src)
|
|
new /obj/item/clothing/head/helmet/thunderdome(src)
|
|
|
|
/obj/structure/closet/thunderdome/tdgreen
|
|
name = "green-team Thunderdome closet"
|
|
icon_state = "syndicate1"
|
|
|
|
/obj/structure/closet/thunderdome/tdgreen/fill()
|
|
new /obj/item/clothing/suit/armor/tdome/green(src)
|
|
new /obj/item/clothing/suit/armor/tdome/green(src)
|
|
new /obj/item/clothing/suit/armor/tdome/green(src)
|
|
new /obj/item/melee/energy/sword(src)
|
|
new /obj/item/melee/energy/sword(src)
|
|
new /obj/item/melee/energy/sword(src)
|
|
new /obj/item/gun/energy/laser(src)
|
|
new /obj/item/gun/energy/laser(src)
|
|
new /obj/item/gun/energy/laser(src)
|
|
new /obj/item/melee/baton(src)
|
|
new /obj/item/melee/baton(src)
|
|
new /obj/item/melee/baton(src)
|
|
new /obj/item/storage/box/tactical/flashbangs(src)
|
|
new /obj/item/storage/box/tactical/flashbangs(src)
|
|
new /obj/item/storage/box/tactical/flashbangs(src)
|
|
new /obj/item/clothing/head/helmet/thunderdome(src)
|
|
new /obj/item/clothing/head/helmet/thunderdome(src)
|
|
new /obj/item/clothing/head/helmet/thunderdome(src)
|
|
|
|
/obj/structure/closet/skrell
|
|
icon_state = "alien"
|
|
layer = BELOW_OBJ_LAYER
|
|
|
|
/obj/structure/closet/outhouse
|
|
name = "outhouse"
|
|
desc = "A rustic sanitation structure."
|
|
icon_state = "outhouse"
|
|
anchored = TRUE
|
|
canbemoved = FALSE
|
|
open_sound = 'sound/machines/wooden_closet_open.ogg'
|
|
close_sound = 'sound/machines/wooden_closet_close.ogg'
|
|
|
|
/obj/structure/closet/sarcophagus
|
|
name = "sandstone sarcophagus"
|
|
desc = "An ancient sarcophagus made of sandstone."
|
|
icon = 'icons/obj/unathi_ruins.dmi'
|
|
icon_state = "wc_sarcophagus"
|
|
dense_when_open = TRUE
|
|
anchored = TRUE
|
|
canbemoved = FALSE
|
|
open_sound = 'sound/effects/stonedoor_openclose.ogg'
|
|
close_sound = 'sound/effects/stonedoor_openclose.ogg'
|
|
///Icon state for the open sarcophagus
|
|
var/open_state = "wc_sarcophagus_open"
|
|
///Icon state for the closed sarcophagus
|
|
var/closed_state = "wc_sarcophagus"
|
|
///Does this sarcophagus have a booby trap?
|
|
var/trapped = FALSE
|
|
///Has this sarcophagus's trap been triggered?
|
|
var/triggered = FALSE
|
|
|
|
/obj/structure/closet/sarcophagus/update_icon()
|
|
if(!opened)
|
|
layer = OBJ_LAYER
|
|
icon_state = closed_state
|
|
|
|
else
|
|
layer = BELOW_OBJ_LAYER
|
|
icon_state = open_state
|
|
|
|
/obj/structure/closet/sarcophagus/animate_door(var/closing = FALSE)
|
|
return
|
|
|
|
/obj/structure/closet/sarcophagus/attack_hand(mob/user)
|
|
..()
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
if(trapped && !triggered)
|
|
do_trap_effect(H)
|
|
|
|
///Sets off the sarcophagus's trap if not already triggered.
|
|
/obj/structure/closet/sarcophagus/proc/do_trap_effect(var/mob/living/carbon/human/H)
|
|
if(triggered)
|
|
return
|
|
if(prob(33))
|
|
var/turf/T = get_turf(src)
|
|
var/obj/item/arrow/arrow = new(T)
|
|
playsound(usr.loc, 'sound/weapons/crossbow.ogg', 75, 1)
|
|
arrow.throw_at(H, 10, 9, src) //same values as a full draw crossbow shot would have
|
|
|
|
else if(prob(33))
|
|
visible_message(SPAN_DANGER("Flames engulf \the [H]!"))
|
|
H.apply_damage(30, DAMAGE_BURN)
|
|
H.IgniteMob(5)
|
|
|
|
else
|
|
var/datum/reagents/R = new/datum/reagents(20)
|
|
R.my_atom = src
|
|
R.add_reagent(/singleton/reagent/toxin,20)
|
|
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem(/singleton/reagent/toxin) // have to explicitly say the type to avoid issues with warnings
|
|
S.show_log = 0
|
|
S.set_up(R, 10, 0, src, 40)
|
|
S.start()
|
|
qdel(R)
|
|
|
|
triggered = TRUE
|
|
|
|
/obj/structure/closet/sarcophagus/random/Initialize() //low chance of being trapped
|
|
. = ..()
|
|
if(prob(10))
|
|
trapped = TRUE
|
|
|
|
/obj/structure/closet/sarcophagus/mador
|
|
name = "granite sarcophagus"
|
|
desc = "An ancient sarcophagus made of granite."
|
|
icon_state = "mador_sarcophagus"
|
|
closed_state = "mador_sarcophagus"
|
|
open_state = "mador_sarcophagus_open"
|
|
|
|
/obj/structure/closet/sarcophagus/mador/random/Initialize()
|
|
. = ..()
|
|
if(prob(10))
|
|
trapped = TRUE
|