Merge branch 'master' into newmap-master

# Conflicts:
#	aurorastation.dme
This commit is contained in:
Erki
2021-07-13 22:19:58 +03:00
1207 changed files with 24838 additions and 10983 deletions
+1 -1
View File
@@ -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()
+116 -99
View File
@@ -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
+107 -3
View File
@@ -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."
+1 -1
View File
@@ -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()
. = ..()
+2 -2
View File
@@ -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
+4 -79
View File
@@ -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
+1 -1
View File
@@ -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,