mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 21:12:24 +01:00
Merge branch 'master' into newmap-master
# Conflicts: # aurorastation.dme
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
icon_state = "coatrack0"
|
||||
var/obj/item/clothing/suit/coat
|
||||
var/list/allowed = list(/obj/item/clothing/suit/storage/toggle/labcoat, /obj/item/clothing/suit/storage/toggle/det_trench,
|
||||
/obj/item/clothing/suit/storage/forensics, /obj/item/clothing/suit/storage/toggle/trench)
|
||||
/obj/item/clothing/suit/storage/toggle/forensics, /obj/item/clothing/suit/storage/toggle/trench)
|
||||
|
||||
/obj/structure/coatrack/attack_hand(mob/user as mob)
|
||||
if (!ishuman(user))
|
||||
|
||||
@@ -157,8 +157,8 @@
|
||||
return
|
||||
var/did_teleport = FALSE
|
||||
for(var/mob/M in contents)
|
||||
did_teleport = TRUE
|
||||
linked_teleporter.do_teleport(M)
|
||||
if(linked_teleporter.do_teleport(M))
|
||||
did_teleport = TRUE
|
||||
if(did_teleport)
|
||||
linked_teleporter.last_use = world.time
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
new /obj/item/clothing/head/softcap/cargo(src)
|
||||
new /obj/item/clothing/head/bandana/cargo(src)
|
||||
new /obj/item/clothing/head/beret/cargo(src)
|
||||
new /obj/item/modular_computer/handheld/custom_loadout/advanced/cargo_delivery(src)
|
||||
new /obj/item/modular_computer/handheld/preset/supply/cargo_delivery(src)
|
||||
new /obj/item/export_scanner(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/quartermaster
|
||||
@@ -38,16 +38,17 @@
|
||||
new /obj/item/device/radio/headset/qm(src)
|
||||
new /obj/item/device/radio/headset/qm/alt(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/clothing/suit/fire(src)
|
||||
new /obj/item/tank/emergency_oxygen(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/head/softcap/cargo(src)
|
||||
new /obj/item/clothing/head/bandana/cargo(src)
|
||||
new /obj/item/clothing/head/beret/cargo(src)
|
||||
new /obj/item/modular_computer/handheld/custom_loadout/advanced/cargo_delivery(src)
|
||||
new /obj/item/modular_computer/handheld/preset/supply/cargo_delivery(src)
|
||||
new /obj/item/export_scanner(src)
|
||||
new /obj/item/device/orbital_dropper/drill(src)
|
||||
new /obj/item/device/megaphone/cargo(src)
|
||||
new /obj/item/storage/box/goldstar(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/merchant
|
||||
name = "merchant locker"
|
||||
|
||||
@@ -13,10 +13,7 @@
|
||||
new /obj/item/storage/backpack/industrial(src)
|
||||
else
|
||||
new /obj/item/storage/backpack/satchel_eng(src)
|
||||
if (prob(70))
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/webbing(src)
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
new /obj/item/blueprints(src)
|
||||
new /obj/item/clothing/under/rank/chief_engineer(src)
|
||||
new /obj/item/clothing/head/hardhat/white(src)
|
||||
@@ -29,7 +26,7 @@
|
||||
new /obj/item/device/radio/headset/heads/ce/alt(src)
|
||||
new /obj/item/device/megaphone/engi(src)
|
||||
new /obj/item/storage/toolbox/mechanical(src)
|
||||
new /obj/item/clothing/suit/storage/hazardvest(src)
|
||||
new /obj/item/clothing/suit/storage/hazardvest/ce(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/mask/gas/half(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
@@ -121,10 +118,7 @@
|
||||
new /obj/item/storage/backpack/industrial(src)
|
||||
else
|
||||
new /obj/item/storage/backpack/satchel_eng(src)
|
||||
if (prob(70))
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/webbing(src)
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
new /obj/item/storage/toolbox/mechanical(src)
|
||||
new /obj/item/device/radio/headset/headset_eng(src)
|
||||
new /obj/item/device/radio/headset/headset_eng/alt(src)
|
||||
@@ -149,10 +143,7 @@
|
||||
new /obj/item/storage/backpack/industrial(src)
|
||||
else
|
||||
new /obj/item/storage/backpack/satchel_eng(src)
|
||||
if (prob(70))
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/webbing(src)
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
new /obj/item/clothing/suit/fire/atmos(src)
|
||||
new /obj/item/clothing/head/hardhat/red/atmos(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
new /obj/item/clothing/head/hardhat/first_responder(src)
|
||||
new /obj/item/device/radio/headset/headset_med(src)
|
||||
new /obj/item/clothing/glasses/hud/health(src)
|
||||
new /obj/item/storage/backpack/medic/first_responder(src)
|
||||
new /obj/item/clothing/suit/storage/medical_chest_rig(src)
|
||||
new /obj/item/clothing/suit/storage/medical_chest_rig/first_responder(src)
|
||||
new /obj/item/clothing/under/rank/medical/first_responder(src)
|
||||
@@ -122,6 +123,7 @@
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/clothing/mask/gas/alt(src)
|
||||
new /obj/item/clothing/mask/gas/half(src)
|
||||
new /obj/item/auto_cpr(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/CMO
|
||||
name = "chief medical officer's locker"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
new /obj/item/device/radio/headset/headset_sci/alt(src)
|
||||
new /obj/item/tank/air(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
|
||||
new /obj/item/taperoll/science(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/RD
|
||||
name = "research director's locker"
|
||||
@@ -47,6 +47,7 @@
|
||||
new /obj/item/device/pin_extractor(src)
|
||||
new /obj/item/storage/box/fancy/keypouch/sci(src)
|
||||
new /obj/item/storage/box/tethers(src)
|
||||
new /obj/item/taperoll/science(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/RD2
|
||||
name = "research director's attire"
|
||||
|
||||
@@ -69,15 +69,19 @@
|
||||
..()
|
||||
//Supply
|
||||
new /obj/item/storage/box/ids(src)
|
||||
new /obj/item/storage/box/ids( src )
|
||||
new /obj/item/storage/box/ids(src)
|
||||
new /obj/item/storage/box/fancy/keypouch/cargo(src)
|
||||
new /obj/item/storage/box/fancy/keypouch/service(src)
|
||||
//Appearance
|
||||
new /obj/item/clothing/glasses/sunglasses(src)
|
||||
new /obj/item/clothing/suit/armor/carrier/generic(src)
|
||||
new /obj/item/clothing/head/helmet(src)
|
||||
new /obj/item/clothing/accessory/holster/waist(src)
|
||||
//Tools
|
||||
new /obj/item/device/radio/headset/heads/hop(src)
|
||||
new /obj/item/device/radio/headset/heads/hop/alt(src)
|
||||
new /obj/item/device/megaphone/command(src)
|
||||
new /obj/item/storage/box/goldstar(src)
|
||||
new /obj/item/gun/energy/disruptorpistol(src)
|
||||
new /obj/item/gun/projectile/sec/flash(src)
|
||||
new /obj/item/device/flash(src)
|
||||
@@ -127,14 +131,9 @@
|
||||
new /obj/item/clothing/suit/armor/carrier/hos(src)
|
||||
new /obj/item/clothing/accessory/leg_guard(src)
|
||||
new /obj/item/clothing/accessory/arm_guard(src)
|
||||
if(prob(50))
|
||||
new /obj/item/clothing/under/rank/head_of_security(src)
|
||||
new /obj/item/clothing/head/beret/security/hos(src)
|
||||
new /obj/item/clothing/head/hos(src)
|
||||
else
|
||||
new /obj/item/clothing/under/rank/head_of_security/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/hos/corp(src)
|
||||
new /obj/item/clothing/head/hos/corp(src)
|
||||
new /obj/item/clothing/under/rank/head_of_security/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/hos/corp(src)
|
||||
new /obj/item/clothing/head/hos/corp(src)
|
||||
new /obj/item/clothing/head/helmet/hos(src)
|
||||
new /obj/item/clothing/suit/storage/security/hos(src)
|
||||
new /obj/item/clothing/accessory/badge/hos(src)
|
||||
@@ -181,14 +180,9 @@
|
||||
new /obj/item/clothing/suit/armor/carrier/hos(src)
|
||||
new /obj/item/clothing/accessory/leg_guard(src)
|
||||
new /obj/item/clothing/accessory/arm_guard(src)
|
||||
if(prob(50)) // chance to spawn either corporate or regular outfit. to prevent locker bloat which makes it lag when right clicked
|
||||
new /obj/item/clothing/under/rank/head_of_security(src)
|
||||
new /obj/item/clothing/head/beret/security/hos(src)
|
||||
new /obj/item/clothing/head/hos(src)
|
||||
else
|
||||
new /obj/item/clothing/under/rank/head_of_security/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/corp(src)
|
||||
new /obj/item/clothing/head/hos/corp(src)
|
||||
new /obj/item/clothing/under/rank/head_of_security/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/corp(src)
|
||||
new /obj/item/clothing/head/hos/corp(src)
|
||||
new /obj/item/clothing/head/helmet/hos(src)
|
||||
new /obj/item/clothing/suit/storage/security/hos(src)
|
||||
//Tools
|
||||
@@ -224,17 +218,9 @@
|
||||
new /obj/item/clothing/suit/armor/carrier/officer(src)
|
||||
new /obj/item/clothing/accessory/arm_guard(src)
|
||||
new /obj/item/clothing/accessory/leg_guard(src)
|
||||
if(prob(50))
|
||||
if(prob(50))
|
||||
new /obj/item/clothing/under/rank/warden(src)
|
||||
else
|
||||
new /obj/item/clothing/under/rank/warden/blue(src)
|
||||
new /obj/item/clothing/head/beret/security/warden(src)
|
||||
new /obj/item/clothing/head/warden(src)
|
||||
else
|
||||
new /obj/item/clothing/under/rank/warden/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/corp(src)
|
||||
new /obj/item/clothing/head/warden/corp(src)
|
||||
new /obj/item/clothing/under/rank/warden/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/corp(src)
|
||||
new /obj/item/clothing/head/warden/corp(src)
|
||||
new /obj/item/clothing/head/helmet/security(src)
|
||||
new /obj/item/clothing/suit/storage/security/warden(src)
|
||||
new /obj/item/clothing/accessory/badge/warden(src)
|
||||
@@ -249,10 +235,8 @@
|
||||
new /obj/item/melee/baton/loaded(src)
|
||||
new /obj/item/gun/energy/disruptorpistol(src)
|
||||
//Belts
|
||||
if (prob(50))
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/pouches/black(src)
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
new /obj/item/clothing/accessory/holster/waist(src)
|
||||
new /obj/item/storage/belt/security(src)
|
||||
|
||||
|
||||
@@ -286,10 +270,7 @@
|
||||
new /obj/item/device/holowarrant(src)
|
||||
new /obj/item/device/flashlight/flare/glowstick/red(src)
|
||||
//Belts
|
||||
if (prob(50))
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/pouches/black(src)
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
new /obj/item/storage/belt/security(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/security
|
||||
@@ -311,17 +292,9 @@
|
||||
new /obj/item/clothing/suit/armor/carrier/officer(src)
|
||||
new /obj/item/clothing/accessory/arm_guard(src)
|
||||
new /obj/item/clothing/accessory/leg_guard(src)
|
||||
if(prob(50))
|
||||
if(prob(50))
|
||||
new /obj/item/clothing/under/rank/security(src)
|
||||
else
|
||||
new /obj/item/clothing/under/rank/security/blue(src)
|
||||
new /obj/item/clothing/head/beret/security/officer(src)
|
||||
new /obj/item/clothing/head/softcap/security(src)
|
||||
else
|
||||
new /obj/item/clothing/under/rank/security/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/corp(src)
|
||||
new /obj/item/clothing/head/softcap/security/corp(src)
|
||||
new /obj/item/clothing/under/rank/security/corp(src)
|
||||
new /obj/item/clothing/head/beret/security/corp(src)
|
||||
new /obj/item/clothing/head/softcap/security/corp(src)
|
||||
new /obj/item/clothing/head/helmet/security(src)
|
||||
new /obj/item/clothing/suit/storage/security/officer(src)
|
||||
new /obj/item/clothing/accessory/badge/officer(src)
|
||||
@@ -342,10 +315,7 @@
|
||||
new /obj/item/device/flashlight/flare/glowstick/red(src)
|
||||
new /obj/item/handcuffs(src)
|
||||
//Belts
|
||||
if (prob(50))
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/pouches/black(src)
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
new /obj/item/clothing/accessory/holster/hip(src)
|
||||
new /obj/item/storage/belt/security(src)
|
||||
|
||||
@@ -382,14 +352,15 @@
|
||||
|
||||
/obj/structure/closet/secure_closet/investigator/fill()
|
||||
//Appearance
|
||||
new /obj/item/storage/backpack/satchel/leather(src)
|
||||
new /obj/item/clothing/suit/storage/det_jacket(src)
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/under/det/black(src)
|
||||
new /obj/item/clothing/under/det/classic(src)
|
||||
new /obj/item/clothing/accessory/badge/dia(src)
|
||||
new /obj/item/clothing/accessory/badge/investigator(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/forensics(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/gloves/black/forensic(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
//Tools
|
||||
@@ -400,8 +371,11 @@
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/device/laser_pointer/blue(src)
|
||||
new /obj/item/device/camera/detective(src)
|
||||
new /obj/item/device/camera_film(src)
|
||||
//Belts
|
||||
new /obj/item/clothing/accessory/holster/waist(src)
|
||||
new /obj/item/clothing/accessory/storage/pouches/black(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/injection
|
||||
name = "lethal injections locker"
|
||||
|
||||
@@ -55,9 +55,7 @@
|
||||
new /obj/item/clothing/suit/space/emergency(src)
|
||||
new /obj/item/clothing/head/helmet/space/emergency(src)
|
||||
new /obj/item/device/oxycandle(src)
|
||||
new /obj/item/inflatable/door(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/storage/bag/inflatable/emergency(src)
|
||||
if ("all")
|
||||
new /obj/item/storage/toolbox/emergency(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi(src)
|
||||
@@ -74,9 +72,7 @@
|
||||
new /obj/item/device/oxycandle(src)
|
||||
new /obj/item/airbubble(src)
|
||||
new /obj/item/airbubble(src)
|
||||
new /obj/item/inflatable/door(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/storage/bag/inflatable/emergency(src)
|
||||
|
||||
/obj/structure/closet/emcloset/legacy/fill()
|
||||
..()
|
||||
@@ -94,19 +90,19 @@
|
||||
icon_opened = "fireclosetopen"
|
||||
|
||||
/obj/structure/closet/firecloset/fill()
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/clothing/head/hardhat/firefighter(src)
|
||||
new /obj/item/clothing/suit/fire(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/tank/oxygen/red(src)
|
||||
new /obj/item/extinguisher(src)
|
||||
new /obj/item/clothing/head/hardhat/red(src)
|
||||
|
||||
/obj/structure/closet/firecloset/full/fill()
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/clothing/head/hardhat/firefighter(src)
|
||||
new /obj/item/clothing/suit/fire(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/tank/oxygen/red(src)
|
||||
new /obj/item/extinguisher(src)
|
||||
new /obj/item/clothing/head/hardhat/red(src)
|
||||
|
||||
|
||||
|
||||
@@ -167,12 +163,12 @@
|
||||
icon_closed = "radsuitcloset"
|
||||
|
||||
/obj/structure/closet/radiation/fill()
|
||||
new /obj/item/clothing/suit/radiation(src)
|
||||
new /obj/item/clothing/head/radiation(src)
|
||||
new /obj/item/clothing/glasses/safety/goggles(src)
|
||||
new /obj/item/clothing/suit/radiation(src)
|
||||
new /obj/item/clothing/head/radiation(src)
|
||||
new /obj/item/clothing/glasses/safety/goggles(src)
|
||||
for(var/i = 1 to 2)
|
||||
new /obj/item/clothing/head/radiation(src)
|
||||
new /obj/item/clothing/suit/radiation(src)
|
||||
new /obj/item/clothing/glasses/safety/goggles(src)
|
||||
for(var/i = 1 to 2)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/hyronalin(src)
|
||||
|
||||
/*
|
||||
* Bombsuit closet
|
||||
@@ -220,12 +216,12 @@
|
||||
wall_mounted = 1
|
||||
|
||||
/obj/structure/closet/hydrant/fill()
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/clothing/head/hardhat/firefighter(src)
|
||||
new /obj/item/clothing/suit/fire(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/tank/oxygen/red(src)
|
||||
new /obj/item/extinguisher(src)
|
||||
new /obj/item/clothing/head/hardhat/red(src)
|
||||
|
||||
if (prob(25))
|
||||
new /obj/item/ladder_mobile(src)
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
new /obj/item/gun/energy/retro(src)
|
||||
new /obj/item/gun/projectile/gauss(src)
|
||||
new /obj/item/gun/projectile/gauss(src)
|
||||
new /obj/item/material/knife/bayonet(src)
|
||||
new /obj/item/material/knife/bayonet(src)
|
||||
new /obj/item/ammo_magazine/gauss(src)
|
||||
new /obj/item/ammo_magazine/gauss(src)
|
||||
new /obj/item/ammo_magazine/gauss(src)
|
||||
@@ -63,6 +65,7 @@
|
||||
new /obj/item/clothing/head/helmet/space/void/coalition(src)
|
||||
new /obj/item/clothing/suit/space/void/coalition(src)
|
||||
new /obj/item/gun/projectile/gauss(src)
|
||||
new /obj/item/material/knife/bayonet(src)
|
||||
new /obj/item/ammo_magazine/gauss(src)
|
||||
new /obj/item/ammo_magazine/gauss(src)
|
||||
new /obj/item/ammo_magazine/gauss(src)
|
||||
@@ -197,7 +200,7 @@
|
||||
/obj/structure/closet/crate/secure/gear_loadout/ram_ranch/fill()
|
||||
for(var/i in 1 to 6)
|
||||
var/obj/item/clothing/under/shorts/khaki/pants = new(src)
|
||||
var/obj/item/clothing/accessory/dressshirt_r/shirt = new(src)
|
||||
var/obj/item/clothing/accessory/dressshirt/rolled/shirt = new(src)
|
||||
var/obj/item/clothing/accessory/chaps/chaps = new(src)
|
||||
var/obj/item/clothing/accessory/suspenders/suspenders = new(src)
|
||||
var/obj/item/clothing/accessory/wcoat_rec/waistcoat = new(src)
|
||||
@@ -218,7 +221,7 @@
|
||||
|
||||
/obj/structure/closet/crate/secure/gear_loadout/ram_ranch/single/fill()
|
||||
var/obj/item/clothing/under/shorts/khaki/pants = new(src)
|
||||
var/obj/item/clothing/accessory/dressshirt_r/shirt = new(src)
|
||||
var/obj/item/clothing/accessory/dressshirt/rolled/shirt = new(src)
|
||||
var/obj/item/clothing/accessory/chaps/chaps = new(src)
|
||||
var/obj/item/clothing/accessory/suspenders/suspenders = new(src)
|
||||
var/obj/item/clothing/accessory/wcoat_rec/waistcoat = new(src)
|
||||
@@ -426,7 +429,7 @@
|
||||
new /obj/item/ammo_magazine/plasma(src)
|
||||
new /obj/item/ammo_magazine/plasma(src)
|
||||
|
||||
/obj/structure/closet/crate/secure/gear_loadout/ninja/hacker/fill()
|
||||
/obj/structure/closet/crate/secure/gear_loadout/ninja/hacker
|
||||
associated_hardsuit = /obj/item/rig/light/hacker/ninja
|
||||
|
||||
/obj/structure/closet/crate/secure/gear_loadout/ninja/hacker/fill()
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
#define STATE_CLOSED 0
|
||||
#define STATE_OPEN 1
|
||||
|
||||
/obj/item/inflatable
|
||||
name = "inflatable"
|
||||
desc_info = "Inflate by using it in your hand. The inflatable barrier will inflate on your tile. To deflate it, use the 'deflate' verb."
|
||||
w_class = ITEMSIZE_SMALL
|
||||
icon = 'icons/obj/inflatable.dmi'
|
||||
icon = 'icons/obj/contained_items/tools/inflatables.dmi'
|
||||
var/deploy_path = null
|
||||
|
||||
/obj/item/inflatable/attack_self(mob/user)
|
||||
if(!deploy_path)
|
||||
return
|
||||
playsound(loc, 'sound/items/zip.ogg', 75, 1)
|
||||
to_chat(user, "<span class='notice'>You inflate \the [src].</span>")
|
||||
playsound(loc, 'sound/items/zip.ogg', 75, TRUE)
|
||||
to_chat(user, SPAN_NOTICE("You inflate \the [src]."))
|
||||
var/obj/structure/inflatable/R = new deploy_path(user.loc)
|
||||
src.transfer_fingerprints_to(R)
|
||||
transfer_fingerprints_to(R)
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
@@ -21,7 +24,7 @@
|
||||
icon_state = "folded_wall"
|
||||
deploy_path = /obj/structure/inflatable/wall
|
||||
|
||||
/obj/item/inflatable/door/
|
||||
/obj/item/inflatable/door
|
||||
name = "inflatable door"
|
||||
desc = "A folded membrane which rapidly expands into a simple door on activation."
|
||||
icon_state = "folded_door"
|
||||
@@ -31,40 +34,43 @@
|
||||
name = "inflatable"
|
||||
desc = "An inflated membrane. Do not puncture."
|
||||
desc_info = "To remove these safely, use the 'deflate' verb. Hitting these with any objects will probably puncture and break it forever."
|
||||
density = 1
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
icon = 'icons/obj/inflatable.dmi'
|
||||
icon = 'icons/obj/contained_items/tools/inflatables.dmi'
|
||||
icon_state = "wall"
|
||||
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
atmos_canpass = CANPASS_DENSITY
|
||||
|
||||
var/deflating = FALSE
|
||||
var/undeploy_path = null
|
||||
var/torn_path = null
|
||||
var/health = 50.0
|
||||
|
||||
/obj/structure/inflatable/wall
|
||||
name = "inflatable wall"
|
||||
undeploy_path = /obj/item/inflatable/wall
|
||||
torn_path = /obj/item/inflatable/torn
|
||||
|
||||
/obj/structure/inflatable/New(location)
|
||||
..()
|
||||
update_nearby_tiles(need_rebuild=1)
|
||||
/obj/structure/inflatable/Initialize(mapload)
|
||||
. = ..()
|
||||
update_nearby_tiles(need_rebuild = TRUE)
|
||||
|
||||
/obj/structure/inflatable/Destroy()
|
||||
update_nearby_tiles()
|
||||
return ..()
|
||||
|
||||
/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
|
||||
var/proj_damage = Proj.get_structure_damage()
|
||||
if(!proj_damage) return
|
||||
if(!proj_damage)
|
||||
return
|
||||
|
||||
health -= proj_damage
|
||||
..()
|
||||
if(health <= 0)
|
||||
deflate(1)
|
||||
deflate(TRUE)
|
||||
return
|
||||
|
||||
/obj/structure/inflatable/ex_act(severity)
|
||||
@@ -73,54 +79,72 @@
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
deflate(1)
|
||||
deflate(TRUE)
|
||||
return
|
||||
if(3.0)
|
||||
if(prob(50))
|
||||
deflate(1)
|
||||
deflate(TRUE)
|
||||
return
|
||||
|
||||
/obj/structure/inflatable/attack_hand(mob/user as mob)
|
||||
/obj/structure/inflatable/attack_hand(mob/user)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/structure/inflatable/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(!istype(W) || istype(W, /obj/item/inflatable_dispenser)) return
|
||||
/obj/structure/inflatable/attackby(obj/item/W, mob/user)
|
||||
if(!istype(W) || istype(W, /obj/item/inflatable_dispenser))
|
||||
return
|
||||
if(deflating)
|
||||
return
|
||||
|
||||
if (can_puncture(W))
|
||||
visible_message("<span class='danger'>[user] pierces [src] with [W]!</span>")
|
||||
deflate(1)
|
||||
if(W.damtype == BRUTE || W.damtype == BURN)
|
||||
if(W.can_puncture())
|
||||
user.visible_message(SPAN_DANGER("[user] pierces \the [src] with \the [W]!"), SPAN_WARNING("You pierce \the [src] with \the [W]!"))
|
||||
deflate(TRUE)
|
||||
else if(W.damtype == BRUTE || W.damtype == BURN)
|
||||
hit(W.force)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/structure/inflatable/proc/hit(var/damage, var/sound_effect = 1)
|
||||
/obj/structure/inflatable/proc/hit(var/damage, var/sound_effect = TRUE)
|
||||
health = max(0, health - damage)
|
||||
if(sound_effect)
|
||||
playsound(loc, 'sound/effects/glass_hit.ogg', 75, 1)
|
||||
if(health <= 0)
|
||||
deflate(1)
|
||||
deflate(TRUE)
|
||||
|
||||
/obj/structure/inflatable/CtrlClick()
|
||||
hand_deflate()
|
||||
|
||||
/obj/structure/inflatable/proc/deflate(var/violent=0)
|
||||
playsound(loc, 'sound/machines/hiss.ogg', 75, 1)
|
||||
/obj/structure/inflatable/proc/deflate(var/violent = FALSE)
|
||||
if(deflating)
|
||||
return
|
||||
playsound(loc, 'sound/machines/hiss.ogg', 75, TRUE)
|
||||
if(violent)
|
||||
visible_message("[src] rapidly deflates!")
|
||||
var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc)
|
||||
src.transfer_fingerprints_to(R)
|
||||
qdel(src)
|
||||
if(!torn_path)
|
||||
return
|
||||
deflating = TRUE
|
||||
visible_message(SPAN_WARNING("\The [src] rapidly deflates!"))
|
||||
var/matrix/M = new
|
||||
M.Scale(0.6)
|
||||
M.Turn(pick(-40, 40))
|
||||
animate(src, 0.2 SECONDS, transform = M)
|
||||
addtimer(CALLBACK(src, .proc/post_tear), 0.2 SECONDS)
|
||||
else
|
||||
if(!undeploy_path)
|
||||
return
|
||||
visible_message("\The [src] slowly deflates.")
|
||||
addtimer(CALLBACK(src, .proc/post_deflate), 26)
|
||||
deflating = TRUE
|
||||
visible_message(SPAN_NOTICE("\The [src] slowly deflates."))
|
||||
var/matrix/M = new
|
||||
M.Scale(0.6)
|
||||
animate(src, 2.6 SECONDS, transform = M)
|
||||
addtimer(CALLBACK(src, .proc/post_deflate), 2.6 SECONDS)
|
||||
|
||||
/obj/structure/inflatable/proc/post_deflate()
|
||||
var/obj/item/inflatable/R = new undeploy_path(src.loc)
|
||||
src.transfer_fingerprints_to(R)
|
||||
var/obj/item/inflatable/R = new undeploy_path(loc)
|
||||
transfer_fingerprints_to(R)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/inflatable/proc/post_tear()
|
||||
var/obj/item/inflatable/torn/R = new torn_path(loc)
|
||||
transfer_fingerprints_to(R)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/inflatable/verb/hand_deflate()
|
||||
@@ -138,11 +162,11 @@
|
||||
health -= damage
|
||||
user.do_attack_animation(src)
|
||||
if(health <= 0)
|
||||
user.visible_message("<span class='danger'>[user] [attack_verb] open the [src]!</span>")
|
||||
addtimer(CALLBACK(src, .proc/deflate, 1), 1)
|
||||
user.visible_message(SPAN_DANGER("[user] [attack_verb] open the [src]!"))
|
||||
INVOKE_ASYNC(src, .proc/deflate, TRUE)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] [attack_verb] at [src]!</span>")
|
||||
return 1
|
||||
user.visible_message(SPAN_DANGER("[user] [attack_verb] at [src]!"))
|
||||
return TRUE
|
||||
|
||||
/obj/structure/inflatable/door //Based on mineral door code
|
||||
name = "inflatable door"
|
||||
@@ -154,17 +178,18 @@
|
||||
|
||||
icon_state = "door_closed"
|
||||
undeploy_path = /obj/item/inflatable/door
|
||||
torn_path = /obj/item/inflatable/door/torn
|
||||
|
||||
var/state = 0 //closed, 1 == open
|
||||
var/isSwitchingStates = 0
|
||||
var/state = STATE_CLOSED
|
||||
var/isSwitchingStates = FALSE
|
||||
|
||||
/obj/structure/inflatable/door/attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral
|
||||
/obj/structure/inflatable/door/attack_ai(mob/user)
|
||||
if(isAI(user)) //so the AI can't open it
|
||||
return
|
||||
else if(isrobot(user) && Adjacent(user)) //but cyborgs can
|
||||
return TryToSwitchState(user)
|
||||
|
||||
/obj/structure/inflatable/door/attack_hand(mob/user as mob)
|
||||
/obj/structure/inflatable/door/attack_hand(mob/user)
|
||||
return TryToSwitchState(user)
|
||||
|
||||
/obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
@@ -174,17 +199,12 @@
|
||||
return !opacity
|
||||
return !density
|
||||
|
||||
/obj/structure/inflatable/door/proc/TryToSwitchState(atom/user)
|
||||
if(isSwitchingStates) return
|
||||
if(ismob(user))
|
||||
var/mob/M = user
|
||||
if(M.client)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!C.handcuffed)
|
||||
SwitchState()
|
||||
else
|
||||
SwitchState()
|
||||
/obj/structure/inflatable/door/proc/TryToSwitchState(mob/user)
|
||||
if(isSwitchingStates)
|
||||
return
|
||||
if(use_check_and_message(user))
|
||||
return
|
||||
SwitchState()
|
||||
|
||||
/obj/structure/inflatable/door/proc/SwitchState()
|
||||
if(state)
|
||||
@@ -195,29 +215,33 @@
|
||||
|
||||
/obj/structure/inflatable/door/proc/Open()
|
||||
set waitfor = FALSE
|
||||
|
||||
if(isSwitchingStates)
|
||||
return
|
||||
isSwitchingStates = 1
|
||||
isSwitchingStates = TRUE
|
||||
density = FALSE
|
||||
state = STATE_OPEN
|
||||
flick("door_opening",src)
|
||||
sleep(10)
|
||||
density = 0
|
||||
opacity = 0
|
||||
state = 1
|
||||
addtimer(CALLBACK(src, .proc/ResetOpen), 1 SECOND)
|
||||
|
||||
/obj/structure/inflatable/door/proc/ResetOpen()
|
||||
update_icon()
|
||||
isSwitchingStates = 0
|
||||
isSwitchingStates = FALSE
|
||||
|
||||
/obj/structure/inflatable/door/proc/Close()
|
||||
set waitfor = FALSE
|
||||
|
||||
if(isSwitchingStates)
|
||||
return
|
||||
isSwitchingStates = 1
|
||||
flick("door_closing",src)
|
||||
sleep(10)
|
||||
density = 1
|
||||
opacity = 0
|
||||
state = 0
|
||||
isSwitchingStates = TRUE
|
||||
flick("door_closing", src)
|
||||
addtimer(CALLBACK(src, .proc/ResetClose), 1 SECOND)
|
||||
|
||||
/obj/structure/inflatable/door/proc/ResetClose()
|
||||
density = TRUE
|
||||
state = STATE_CLOSED
|
||||
update_icon()
|
||||
isSwitchingStates = 0
|
||||
isSwitchingStates = FALSE
|
||||
|
||||
/obj/structure/inflatable/door/update_icon()
|
||||
if(state)
|
||||
@@ -225,52 +249,45 @@
|
||||
else
|
||||
icon_state = "door_closed"
|
||||
|
||||
/obj/structure/inflatable/door/deflate(var/violent=0)
|
||||
playsound(loc, 'sound/machines/hiss.ogg', 75, 1)
|
||||
if(violent)
|
||||
visible_message("[src] rapidly deflates!")
|
||||
var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc)
|
||||
src.transfer_fingerprints_to(R)
|
||||
qdel(src)
|
||||
else
|
||||
visible_message("[src] slowly deflates.")
|
||||
addtimer(CALLBACK(src, .proc/post_deflate), 26)
|
||||
|
||||
/obj/item/inflatable/torn
|
||||
name = "torn inflatable wall"
|
||||
desc = "A folded membrane which rapidly expands into a large cubical shape on activation. It is too torn to be usable."
|
||||
icon = 'icons/obj/inflatable.dmi'
|
||||
icon_state = "folded_wall_torn"
|
||||
|
||||
attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>The inflatable wall is too torn to be inflated!</span>")
|
||||
add_fingerprint(user)
|
||||
/obj/item/inflatable/torn/attack_self(mob/user)
|
||||
to_chat(user, SPAN_NOTICE("The inflatable wall is too torn to be inflated!"))
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/inflatable/door/torn
|
||||
name = "torn inflatable door"
|
||||
desc = "A folded membrane which rapidly expands into a simple door on activation. It is too torn to be usable."
|
||||
icon = 'icons/obj/inflatable.dmi'
|
||||
icon_state = "folded_door_torn"
|
||||
|
||||
attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>The inflatable door is too torn to be inflated!</span>")
|
||||
add_fingerprint(user)
|
||||
/obj/item/inflatable/door/torn/attack_self(mob/user)
|
||||
to_chat(user, SPAN_NOTICE("The inflatable door is too torn to be inflated!"))
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/storage/briefcase/inflatable
|
||||
/obj/item/storage/bag/inflatable
|
||||
name = "inflatable barrier box"
|
||||
desc = "Contains inflatable walls and doors."
|
||||
icon = 'icons/obj/contained_items/tools/inflatables.dmi'
|
||||
icon_state = "inf_box"
|
||||
item_state = "box"
|
||||
item_state = "inf_box"
|
||||
contained_sprite = TRUE
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
display_contents_with_number = TRUE
|
||||
max_storage_space = 28
|
||||
force_column_number = 3 // we want 4 slots to appear, so 3 columns + 1 free (to insert stuff)
|
||||
storage_slots = 14
|
||||
can_hold = list(/obj/item/inflatable)
|
||||
starts_with = list(/obj/item/inflatable/door = 5, /obj/item/inflatable/wall = 7)
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/inflatable/door(src)
|
||||
new /obj/item/inflatable/door(src)
|
||||
new /obj/item/inflatable/door(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
new /obj/item/inflatable/wall(src)
|
||||
use_sound = 'sound/items/storage/briefcase.ogg'
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
pickup_sound = 'sound/items/pickup/backpack.ogg'
|
||||
|
||||
/obj/item/storage/bag/inflatable/emergency
|
||||
starts_with = list(/obj/item/inflatable/door = 2, /obj/item/inflatable/wall = 3)
|
||||
|
||||
#undef STATE_CLOSED
|
||||
#undef STATE_OPEN
|
||||
@@ -1,4 +1,3 @@
|
||||
//wip wip wup
|
||||
/obj/structure/mirror
|
||||
name = "mirror"
|
||||
desc = "A SalonPro Nano-Mirror(TM) brand mirror! The leading technology in hair salon products, utilizing nano-machinery to style your hair just right."
|
||||
@@ -8,6 +7,29 @@
|
||||
anchored = 1
|
||||
var/shattered = 0
|
||||
|
||||
/// Visual object for handling the viscontents
|
||||
var/datum/weakref/ref
|
||||
vis_flags = VIS_HIDE
|
||||
var/timerid = null
|
||||
|
||||
/obj/structure/mirror/Initialize()
|
||||
. = ..()
|
||||
var/obj/effect/reflection/reflection = new(src.loc)
|
||||
reflection.setup_visuals(src)
|
||||
ref = WEAKREF(reflection)
|
||||
|
||||
entered_event.register(loc, reflection, /obj/effect/reflection/proc/check_vampire_enter)
|
||||
exited_event.register(loc, reflection, /obj/effect/reflection/proc/check_vampire_exit)
|
||||
|
||||
/obj/structure/mirror/Destroy()
|
||||
var/obj/effect/reflection/reflection = ref.resolve()
|
||||
if(istype(reflection))
|
||||
entered_event.unregister(loc, reflection)
|
||||
exited_event.unregister(loc, reflection)
|
||||
qdel(reflection)
|
||||
ref = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/mirror/attack_hand(mob/user as mob)
|
||||
if(shattered)
|
||||
return
|
||||
@@ -19,7 +41,7 @@
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.change_appearance(APPEARANCE_HAIR, H, FALSE, ui_state = default_state, state_object = src)
|
||||
H.change_appearance(APPEARANCE_ALL_HAIR, H, FALSE, ui_state = default_state, state_object = src)
|
||||
|
||||
/obj/structure/mirror/proc/shatter()
|
||||
if(shattered) return
|
||||
@@ -28,9 +50,13 @@
|
||||
playsound(src, /decl/sound_category/glass_break_sound, 70, 1)
|
||||
desc = "Oh no, seven years of bad luck!"
|
||||
|
||||
var/obj/effect/reflection/reflection = ref.resolve()
|
||||
if(istype(reflection))
|
||||
reflection.alpha_icon_state = "mirror_mask_broken"
|
||||
reflection.update_mirror_filters()
|
||||
|
||||
|
||||
/obj/structure/mirror/bullet_act(var/obj/item/projectile/Proj)
|
||||
|
||||
if(prob(Proj.get_structure_damage() * 2))
|
||||
if(!shattered)
|
||||
shatter()
|
||||
@@ -64,6 +90,84 @@
|
||||
user.visible_message("<span class='danger'>[user] hits [src] and bounces off!</span>")
|
||||
return 1
|
||||
|
||||
/obj/effect/reflection
|
||||
name = "reflection"
|
||||
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE
|
||||
mouse_opacity = 0
|
||||
vis_flags = VIS_HIDE
|
||||
layer = ABOVE_OBJ_LAYER
|
||||
var/alpha_icon = 'icons/obj/watercloset.dmi'
|
||||
var/alpha_icon_state = "mirror_mask"
|
||||
var/obj/mirror
|
||||
desc = "Why are you locked in the bathroom?"
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
|
||||
var/blur_filter
|
||||
|
||||
/obj/effect/reflection/proc/setup_visuals(target)
|
||||
mirror = target
|
||||
|
||||
if(mirror.pixel_x > 0)
|
||||
dir = WEST
|
||||
else if (mirror.pixel_x < 0)
|
||||
dir = EAST
|
||||
|
||||
if(mirror.pixel_y > 0)
|
||||
dir = SOUTH
|
||||
else if (mirror.pixel_y < 0)
|
||||
dir = NORTH
|
||||
|
||||
pixel_x = mirror.pixel_x
|
||||
pixel_y = mirror.pixel_y
|
||||
|
||||
blur_filter = filter(type="blur", size = 1)
|
||||
|
||||
update_mirror_filters()
|
||||
|
||||
/obj/effect/reflection/proc/update_mirror_filters()
|
||||
filters = null
|
||||
|
||||
vis_contents = null
|
||||
|
||||
if(!mirror)
|
||||
return
|
||||
|
||||
var/matrix/M = matrix()
|
||||
if(dir == WEST || dir == EAST)
|
||||
M.Scale(-1, 1)
|
||||
else if(dir == SOUTH|| dir == NORTH)
|
||||
M.Scale(1, -1)
|
||||
pixel_y = mirror.pixel_y + 5
|
||||
|
||||
transform = M
|
||||
|
||||
filters += filter("type" = "alpha", "icon" = icon(alpha_icon, alpha_icon_state), "x" = 0, "y" = 0)
|
||||
for(var/mob/living/carbon/human/H in loc)
|
||||
check_vampire_enter(H.loc, H)
|
||||
|
||||
vis_contents += get_turf(mirror)
|
||||
|
||||
/obj/effect/reflection/proc/check_vampire_enter(var/turf/T, var/mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
return
|
||||
var/datum/vampire/V = H.get_antag_datum(MODE_VAMPIRE)
|
||||
if(V)
|
||||
if(V.status & VAMP_ISTHRALL)
|
||||
filters += blur_filter
|
||||
else
|
||||
H.vis_flags |= VIS_HIDE
|
||||
|
||||
/obj/effect/reflection/proc/check_vampire_exit(var/turf/T, var/mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
return
|
||||
var/datum/vampire/V = H.get_antag_datum(MODE_VAMPIRE)
|
||||
if(V)
|
||||
if(V.status & VAMP_ISTHRALL)
|
||||
filters -= blur_filter
|
||||
else
|
||||
H.vis_flags &= ~VIS_HIDE
|
||||
|
||||
/obj/item/mirror
|
||||
name = "mirror"
|
||||
desc = "A SalonPro Nano-Mirror(TM) brand mirror! Now a portable version."
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
flags = OPENCONTAINER
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
var/bucketsize = 360 //about 3x the size relative to a regular bucket.
|
||||
var/bucketsize = 600 //about 2x the size relative to a regular bucket.
|
||||
|
||||
/obj/structure/mopbucket/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -540,7 +540,7 @@
|
||||
desc = "The tajaran flag of the People's Republic of Adhomai."
|
||||
flag_path = "pra"
|
||||
desc_fluff = "Lead by President Njadrasanukii Hadii, the People's Republic of Adhomai are considered the 'loyalist' faction on Adhomai and enjoy galactic recognition as the \
|
||||
government of Adhomai. It claims to be the true keeper of Al'marii's legacy. However, the PRA can be described as a Hadiist branch of Al'marii's revolutionary ideology - that means \
|
||||
government of Adhomai. It claims to be the true keeper of Al'mari's legacy. However, the PRA can be described as a Hadiist branch of Al'mari's revolutionary ideology - that means \
|
||||
putting the State at the top of a hierarchy of power. The PRA is a very centralized state, but in recent years has slowly been able to start making true its promises to bring \
|
||||
revolution to the masses. With land reform, enfranchisement of women and peasantry, literacy initiatives, and the collectivization of farms and the means of production, the PRA is \
|
||||
struggling to hold true to its radical ideals while an entrenched upper party stubbornly tries to hold onto power."
|
||||
@@ -554,7 +554,7 @@
|
||||
desc = "The tajaran flag of the People's Republic of Adhomai."
|
||||
icon_state = "pra"
|
||||
desc_fluff = "Lead by President Njadrasanukii Hadii, the People's Republic of Adhomai are considered the 'loyalist' faction on Adhomai and enjoy galactic recognition as the \
|
||||
government of Adhomai. It claims to be the true keeper of Al'marii's legacy. However, the PRA can be described as a Hadiist branch of Al'marii's revolutionary ideology - that means \
|
||||
government of Adhomai. It claims to be the true keeper of Al'mari's legacy. However, the PRA can be described as a Hadiist branch of Al'mari's revolutionary ideology - that means \
|
||||
putting the State at the top of a hierarchy of power. The PRA is a very centralized state, but in recent years has slowly been able to start making true its promises to bring \
|
||||
revolution to the masses. With land reform, enfranchisement of women and peasantry, literacy initiatives, and the collectivization of farms and the means of production, the PRA is \
|
||||
struggling to hold true to its radical ideals while an entrenched upper party stubbornly tries to hold onto power."
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
desc = "This is used to lie in, sleep in or strap on."
|
||||
desc_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.<br>\
|
||||
Anyone with restraints, such as handcuffs, will not be able to unbuckle themselves. They must use the Resist button, or verb, to break free of \
|
||||
the buckles, instead."
|
||||
the buckles, instead. \ To unbuckle people as a stationbound, click the bed with an empty gripper."
|
||||
icon = 'icons/obj/furniture.dmi'
|
||||
icon_state = "bed"
|
||||
anchored = TRUE
|
||||
@@ -31,7 +31,7 @@
|
||||
slowdown = 5
|
||||
|
||||
/obj/structure/bed/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
LAZYADD(can_buckle, /mob/living)
|
||||
|
||||
/obj/structure/bed/New(newloc, new_material = MATERIAL_STEEL, new_padding_material)
|
||||
@@ -228,6 +228,7 @@
|
||||
var/base_state = "standard"
|
||||
var/item_bedpath = /obj/item/roller
|
||||
var/obj/item/reagent_containers/beaker
|
||||
var/obj/item/vitals_monitor/vitals
|
||||
var/iv_attached = 0
|
||||
var/iv_stand = TRUE
|
||||
var/patient_shift = 9 //How much are mobs moved up when they are buckled_to.
|
||||
@@ -238,8 +239,14 @@
|
||||
..()
|
||||
LAZYADD(can_buckle, /obj/structure/closet/body_bag)
|
||||
|
||||
/obj/structure/bed/roller/Destroy()
|
||||
QDEL_NULL(beaker)
|
||||
QDEL_NULL(vitals)
|
||||
return ..()
|
||||
|
||||
/obj/structure/bed/roller/update_icon()
|
||||
overlays.Cut()
|
||||
cut_overlays()
|
||||
vis_contents = list()
|
||||
if(density)
|
||||
icon_state = "[base_state]_up"
|
||||
else
|
||||
@@ -249,18 +256,31 @@
|
||||
var/percentage = round((beaker.reagents.total_volume / beaker.volume) * 100, 25)
|
||||
var/image/filling = image(icon, "iv_filling[percentage]")
|
||||
filling.color = beaker.reagents.get_color()
|
||||
iv.overlays += filling
|
||||
iv.add_overlay(filling)
|
||||
if(percentage < 25)
|
||||
iv.overlays += image(icon, "light_low")
|
||||
iv.add_overlay(image(icon, "light_low"))
|
||||
if(density)
|
||||
iv.pixel_y = 6
|
||||
overlays += iv
|
||||
add_overlay(iv)
|
||||
if(vitals)
|
||||
vitals.update_monitor()
|
||||
vis_contents += vitals
|
||||
if(bag_strap && istype(buckled, /obj/structure/closet/body_bag))
|
||||
LAZYADD(buckled.overlays, image(icon, bag_strap))
|
||||
|
||||
/obj/structure/bed/roller/attackby(obj/item/I, mob/user)
|
||||
if(iswrench(I) || istype(I, /obj/item/stack) || iswirecutter(I))
|
||||
return 1
|
||||
if(istype(I, /obj/item/vitals_monitor))
|
||||
if(vitals)
|
||||
to_chat(user, SPAN_WARNING("\The [src] already has a vitals monitor attached!"))
|
||||
return
|
||||
to_chat(user, SPAN_NOTICE("You attach \the [I] to \the [src]."))
|
||||
user.drop_from_inventory(I, src)
|
||||
vitals = I
|
||||
vitals.bed = src
|
||||
update_icon()
|
||||
return
|
||||
if(iv_stand && !beaker && (istype(I, /obj/item/reagent_containers/glass/beaker) || istype(I, /obj/item/reagent_containers/blood)))
|
||||
if(!user.unEquip(I, target = src))
|
||||
return
|
||||
@@ -299,6 +319,14 @@
|
||||
beaker = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/bed/roller/proc/remove_vitals(mob/user)
|
||||
to_chat(user, SPAN_NOTICE("You detach \the [vitals] from \the [src]."))
|
||||
vitals.bed = null
|
||||
vitals.update_monitor()
|
||||
user.put_in_hands(vitals)
|
||||
vitals = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/bed/roller/proc/attach_iv(mob/living/carbon/human/target, mob/user)
|
||||
if(!beaker)
|
||||
return
|
||||
@@ -318,7 +346,7 @@
|
||||
..()
|
||||
if(use_check(usr) || !Adjacent(usr))
|
||||
return
|
||||
if(!ishuman(usr))
|
||||
if(!ishuman(usr) && (!isrobot(usr) || isDrone(usr))) //Humans and borgs can collapse, but not drones
|
||||
return
|
||||
if(over_object == buckled && beaker)
|
||||
if(iv_attached)
|
||||
@@ -333,6 +361,9 @@
|
||||
if(beaker)
|
||||
remove_beaker(usr)
|
||||
return
|
||||
if(vitals)
|
||||
remove_vitals(usr)
|
||||
return
|
||||
if(buckled)
|
||||
return
|
||||
collapse()
|
||||
|
||||
@@ -12,21 +12,6 @@
|
||||
obj_flags = OBJ_FLAG_ROTATABLE_ANCHORED
|
||||
var/propelled = 0 // Check for fire-extinguisher-driven chairs
|
||||
|
||||
/obj/structure/bed/chair/attackby(obj/item/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(!padding_material && istype(W, /obj/item/assembly/shock_kit))
|
||||
var/obj/item/assembly/shock_kit/SK = W
|
||||
if(!SK.status)
|
||||
to_chat(user, "<span class='notice'>\The [SK] is not ready to be attached!</span>")
|
||||
return
|
||||
var/obj/structure/bed/chair/e_chair/E = new (src.loc, material.name)
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
E.set_dir(dir)
|
||||
E.part = SK
|
||||
user.drop_from_inventory(SK,E)
|
||||
SK.master = E
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/bed/chair/do_simple_ranged_interaction(var/mob/user)
|
||||
if(!buckled && user)
|
||||
rotate(user)
|
||||
@@ -125,18 +110,54 @@
|
||||
icon_state = "sofamiddle_preview"
|
||||
base_icon = "sofamiddle"
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/leather/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/comfy/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/cloth/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/left
|
||||
icon_state = "sofaend_left_preview"
|
||||
base_icon = "sofaend_left"
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/left/leather/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/left/comfy/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/left/cloth/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/right
|
||||
icon_state = "sofaend_right_preview"
|
||||
base_icon = "sofaend_right"
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/right/leather/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/right/comfy/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/right/cloth/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/corner
|
||||
icon_state = "sofacorner_preview"
|
||||
base_icon = "sofacorner"
|
||||
|
||||
/obj/structure/bed/chair/comfy/sofa/corner/leather/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/corner/comfy/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
|
||||
|
||||
obj/structure/bed/chair/comfy/sofa/corner/cloth/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
|
||||
|
||||
/obj/structure/bed/chair/office
|
||||
name = "office chair"
|
||||
material_alteration = MATERIAL_ALTERATION_NAME || MATERIAL_ALTERATION_DESC
|
||||
|
||||
@@ -1,78 +1,3 @@
|
||||
/obj/structure/bed/chair/e_chair
|
||||
name = "electric chair"
|
||||
desc = "Looks absolutely SHOCKING!"
|
||||
icon_state = "echair0"
|
||||
var/on = 0
|
||||
var/obj/item/assembly/shock_kit/part = null
|
||||
var/last_time = 0
|
||||
|
||||
/obj/structure/bed/chair/e_chair/update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/bed/chair/e_chair/Initialize()
|
||||
. = ..()
|
||||
add_overlay(image('icons/obj/furniture.dmi', src, "echair_over", MOB_LAYER + 1))
|
||||
if(!part)
|
||||
part = new /obj/item/assembly/shock_kit(src)
|
||||
part.master = src
|
||||
part.part1 = new /obj/item/clothing/head/helmet(part)
|
||||
part.part2 = new /obj/item/device/radio/electropack(part)
|
||||
part.part1.master = part
|
||||
part.part2.master = part
|
||||
|
||||
/obj/structure/bed/chair/e_chair/Destroy()
|
||||
if (part)
|
||||
part.master = null
|
||||
part = null
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/structure/bed/chair/e_chair/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(W.iswrench())
|
||||
var/obj/structure/bed/chair/C = new /obj/structure/bed/chair(loc)
|
||||
playsound(loc, W.usesound, 50, 1)
|
||||
C.set_dir(dir)
|
||||
part.forceMove(get_turf(src))
|
||||
part.master = null
|
||||
part = null
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/bed/chair/e_chair/verb/toggle()
|
||||
set name = "Toggle Electric Chair"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat || usr.paralysis || usr.stunned || usr.weakened || usr.lying || usr.restrained() || usr.buckled_to)
|
||||
return
|
||||
|
||||
if(on)
|
||||
on = 0
|
||||
icon_state = "echair0"
|
||||
else
|
||||
on = 1
|
||||
shock()
|
||||
icon_state = "echair1"
|
||||
to_chat(usr, "<span class='notice'>You switch [on ? "on" : "off"] [src].</span>")
|
||||
|
||||
/obj/structure/bed/chair/e_chair/proc/shock()
|
||||
if(!on)
|
||||
return
|
||||
|
||||
var/obj/structure/cable/C = locate(/obj/structure/cable, get_turf(src))
|
||||
var/datum/powernet/PN = C.powernet
|
||||
flick("echair1", src)
|
||||
spark(src, 12, alldirs)
|
||||
if(istype(buckled, /mob/living) && istype(C))
|
||||
var/mob/living/M = buckled
|
||||
if(electrocute_mob(M, C, src, 1.25, BP_HEAD))
|
||||
to_chat(M, "<span class='danger'>You feel a deep shock course through your body!</span>")
|
||||
sleep(1)
|
||||
if(electrocute_mob(M, C, src, 1.25, BP_HEAD))
|
||||
M.Stun(PN.get_electrocute_damage()*10)
|
||||
visible_message("<span class='danger'>The electric chair goes off!</span>", "<span class='danger'>You hear an electrical discharge!</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/pocketwatch
|
||||
name = "pocketwatch"
|
||||
desc = "A watch that goes in your pocket."
|
||||
@@ -169,12 +94,12 @@
|
||||
var/thrall_response = alert(H, "Do you believe in hypnosis?", "Willpower", "Yes", "No")
|
||||
if(thrall_response == "No")
|
||||
H.sleeping = max(H.sleeping - 40, 0)
|
||||
H.drowsyness = max(H.drowsyness - 60, 0)
|
||||
H.drowsiness = max(H.drowsiness - 60, 0)
|
||||
thrall = null
|
||||
STOP_PROCESSING(SSfast_process, src)
|
||||
else
|
||||
H.sleeping = max(H.sleeping, 40)
|
||||
H.drowsyness = max(H.drowsyness, 60)
|
||||
H.drowsiness = max(H.drowsiness, 60)
|
||||
else
|
||||
STOP_PROCESSING(SSfast_process, src)
|
||||
|
||||
@@ -233,7 +158,7 @@
|
||||
H.visible_message("<span class='warning'>[H] falls into a deep slumber!</span>", "<span class ='danger'>You fall into a deep slumber!</span>")
|
||||
|
||||
H.sleeping = max(H.sleeping, 40)
|
||||
H.drowsyness = max(H.drowsyness, 60)
|
||||
H.drowsiness = max(H.drowsiness, 60)
|
||||
thrall = WEAKREF(H)
|
||||
START_PROCESSING(SSfast_process, src)
|
||||
|
||||
@@ -580,7 +505,7 @@
|
||||
var/obj/item/organ/internal/brain/sponge = H.internal_organs_by_name[BP_BRAIN]
|
||||
var/braindamage = H.getBrainLoss()
|
||||
if(sponge && istype(sponge))
|
||||
if(!sponge.lobotomized)
|
||||
if(!sponge.prepared)
|
||||
to_chat(user, "<span class='notice'>Scans indicate [braindamage] distinct abnormalities present in subject.</span>")
|
||||
return
|
||||
else
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
/obj/item/storage/box/donkpockets = 3,
|
||||
/obj/item/storage/box/mousetraps = 3,
|
||||
/obj/item/storage/wallet = 3,
|
||||
/obj/item/clothing/gloves/fyellow = 2,
|
||||
/obj/item/clothing/gloves/yellow/budget = 2,
|
||||
/obj/item/clothing/gloves/latex = 2,
|
||||
/obj/item/clothing/head/welding = 2,
|
||||
/obj/item/clothing/mask/gas/alt = 2,
|
||||
|
||||
Reference in New Issue
Block a user