mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 23:17:28 +01:00
Merge remote-tracking branch 'upstream/dev' into Service
This commit is contained in:
@@ -450,7 +450,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Wooden planks crate"
|
||||
group = "Engineering"
|
||||
|
||||
|
||||
/datum/supply_packs/plastic50
|
||||
name = "50 plastic sheets"
|
||||
contains = list(/obj/item/stack/sheet/mineral/plastic)
|
||||
@@ -980,7 +980,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/clothing/under/rank/mailman,
|
||||
/obj/item/clothing/under/dress/dress_saloon,
|
||||
/obj/item/clothing/suit/suspenders,
|
||||
/obj/item/clothing/suit/storage/labcoat/mad,
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/mad,
|
||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit,
|
||||
/obj/item/clothing/under/schoolgirl,
|
||||
/obj/item/clothing/under/owl,
|
||||
@@ -1003,7 +1003,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/datum/supply_packs/formal_wear
|
||||
contains = list(/obj/item/clothing/head/bowler,
|
||||
/obj/item/clothing/head/that,
|
||||
/obj/item/clothing/suit/storage/lawyer/bluejacket,
|
||||
/obj/item/clothing/suit/storage/toggle/lawyer/bluejacket,
|
||||
/obj/item/clothing/suit/storage/lawyer/purpjacket,
|
||||
/obj/item/clothing/under/suit_jacket,
|
||||
/obj/item/clothing/under/suit_jacket/female,
|
||||
|
||||
@@ -34,7 +34,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_r_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
|
||||
|
||||
|
||||
var/sound/announce_sound = (ticker.current_state <= GAME_STATE_SETTING_UP)? null : sound('sound/misc/boatswain.ogg', volume=20)
|
||||
captain_announcement.Announce("All hands, Captain [H.real_name] on deck!", new_sound=announce_sound)
|
||||
|
||||
|
||||
@@ -352,7 +352,7 @@
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/cmo(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/cmo(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
if(H.backbag == 1)
|
||||
@@ -62,13 +62,13 @@
|
||||
switch(H.mind.role_alt_title)
|
||||
if("Emergency Physician")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/fr_jacket(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
if("Surgeon")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(H), slot_head)
|
||||
if("Virologist")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
|
||||
switch(H.backbag)
|
||||
@@ -77,7 +77,7 @@
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if("Medical Doctor")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
if("Nurse")
|
||||
if(H.gender == FEMALE)
|
||||
if(prob(50))
|
||||
@@ -89,7 +89,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
@@ -123,7 +123,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/chemist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit)
|
||||
switch(H.backbag)
|
||||
if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back)
|
||||
@@ -153,7 +153,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/genetics(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
switch(H.backbag)
|
||||
if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
@@ -188,7 +188,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/viro(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
@@ -224,7 +224,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych/turtleneck(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
switch(H.backbag)
|
||||
if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
@@ -58,7 +58,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
|
||||
switch(H.backbag)
|
||||
if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
@@ -89,7 +89,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
|
||||
switch(H.backbag)
|
||||
if(1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
@@ -122,7 +122,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand)
|
||||
if(H.backbag == 1)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
flag = CYBORG
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 0
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "your laws and the AI" //Nodrak
|
||||
selection_color = "#ddffdd"
|
||||
|
||||
@@ -348,7 +348,7 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
proc/EquipRank(var/mob/living/carbon/human/H, var/rank, var/joined_late = 0)
|
||||
|
||||
if(!H) return 0
|
||||
if(!H) return null
|
||||
|
||||
var/datum/job/job = GetJob(rank)
|
||||
var/list/spawn_in_storage = list()
|
||||
@@ -445,8 +445,7 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
switch(rank)
|
||||
if("Cyborg")
|
||||
H.Robotize()
|
||||
return 1
|
||||
return H.Robotize()
|
||||
if("AI","Clown") //don't need bag preference stuff!
|
||||
else
|
||||
switch(H.backbag) //BS12 EDIT
|
||||
@@ -525,7 +524,7 @@ var/global/datum/controller/occupations/job_master
|
||||
H.hud_updateflag |= (1 << ID_HUD)
|
||||
H.hud_updateflag |= (1 << IMPLOYAL_HUD)
|
||||
H.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
return 1
|
||||
return H
|
||||
|
||||
|
||||
proc/spawnId(var/mob/living/carbon/human/H, rank, title)
|
||||
|
||||
+134
-35
@@ -6,9 +6,6 @@
|
||||
* ~ Zuhayr
|
||||
*/
|
||||
|
||||
//Used for logging people entering cryosleep and important items they are carrying.
|
||||
var/global/list/frozen_crew = list()
|
||||
var/global/list/frozen_items = list()
|
||||
|
||||
//Main cryopod console.
|
||||
|
||||
@@ -20,6 +17,25 @@ var/global/list/frozen_items = list()
|
||||
circuit = "/obj/item/weapon/circuitboard/cryopodcontrol"
|
||||
var/mode = null
|
||||
|
||||
//Used for logging people entering cryosleep and important items they are carrying.
|
||||
var/list/frozen_crew = list()
|
||||
var/list/frozen_items = list()
|
||||
|
||||
var/storage_type = "crewmembers"
|
||||
var/storage_name = "Cryogenic Oversight Control"
|
||||
var/allow_items = 1
|
||||
|
||||
/obj/machinery/computer/cryopod/robot
|
||||
name = "robotic storage console"
|
||||
desc = "An interface between crew and the robotic storage systems"
|
||||
icon = 'icons/obj/robot_storage.dmi'
|
||||
icon_state = "console"
|
||||
circuit = "/obj/item/weapon/circuitboard/robotstoragecontrol"
|
||||
|
||||
storage_type = "cyborgs"
|
||||
storage_name = "Robotic Storage Control"
|
||||
allow_items = 0
|
||||
|
||||
/obj/machinery/computer/cryopod/attack_ai()
|
||||
src.attack_hand()
|
||||
|
||||
@@ -35,12 +51,13 @@ var/global/list/frozen_items = list()
|
||||
if (!( ticker ))
|
||||
return
|
||||
|
||||
dat += "<hr/><br/><b>Cryogenic Oversight Control</b><br/>"
|
||||
dat += "<hr/><br/><b>[storage_name]</b><br/>"
|
||||
dat += "<i>Welcome, [user.real_name].</i><br/><br/><hr/>"
|
||||
dat += "<a href='?src=\ref[src];log=1'>View storage log</a>.<br>"
|
||||
dat += "<a href='?src=\ref[src];view=1'>View objects</a>.<br>"
|
||||
dat += "<a href='?src=\ref[src];item=1'>Recover object</a>.<br>"
|
||||
dat += "<a href='?src=\ref[src];allitems=1'>Recover all objects</a>.<br>"
|
||||
if(allow_items)
|
||||
dat += "<a href='?src=\ref[src];view=1'>View objects</a>.<br>"
|
||||
dat += "<a href='?src=\ref[src];item=1'>Recover object</a>.<br>"
|
||||
dat += "<a href='?src=\ref[src];allitems=1'>Recover all objects</a>.<br>"
|
||||
|
||||
user << browse(dat, "window=cryopod_console")
|
||||
onclose(user, "cryopod_console")
|
||||
@@ -56,7 +73,7 @@ var/global/list/frozen_items = list()
|
||||
|
||||
if(href_list["log"])
|
||||
|
||||
var/dat = "<b>Recently stored crewmembers</b><br/><hr/><br/>"
|
||||
var/dat = "<b>Recently stored [storage_type]</b><br/><hr/><br/>"
|
||||
for(var/person in frozen_crew)
|
||||
dat += "[person]<br/>"
|
||||
dat += "<hr/>"
|
||||
@@ -64,6 +81,7 @@ var/global/list/frozen_items = list()
|
||||
user << browse(dat, "window=cryolog")
|
||||
|
||||
if(href_list["view"])
|
||||
if(!allow_items) return
|
||||
|
||||
var/dat = "<b>Recently stored objects</b><br/><hr/><br/>"
|
||||
for(var/obj/item/I in frozen_items)
|
||||
@@ -73,6 +91,7 @@ var/global/list/frozen_items = list()
|
||||
user << browse(dat, "window=cryoitems")
|
||||
|
||||
else if(href_list["item"])
|
||||
if(!allow_items) return
|
||||
|
||||
if(frozen_items.len == 0)
|
||||
user << "\blue There is nothing to recover from storage."
|
||||
@@ -92,6 +111,7 @@ var/global/list/frozen_items = list()
|
||||
frozen_items -= I
|
||||
|
||||
else if(href_list["allitems"])
|
||||
if(!allow_items) return
|
||||
|
||||
if(frozen_items.len == 0)
|
||||
user << "\blue There is nothing to recover from storage."
|
||||
@@ -111,6 +131,11 @@ var/global/list/frozen_items = list()
|
||||
build_path = "/obj/machinery/computer/cryopod"
|
||||
origin_tech = "programming=3"
|
||||
|
||||
/obj/item/weapon/circuitboard/robotstoragecontrol
|
||||
name = "Circuit board (Robotic Storage Console)"
|
||||
build_path = "/obj/machinery/computer/cryopod/robot"
|
||||
origin_tech = "programming=3"
|
||||
|
||||
//Decorative structures to go alongside cryopods.
|
||||
/obj/structure/cryofeed
|
||||
|
||||
@@ -143,12 +168,23 @@ var/global/list/frozen_items = list()
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
var/base_icon_state = "body_scanner_0"
|
||||
var/occupied_icon_state = "body_scanner_1"
|
||||
var/on_store_message = "has entered long-term storage."
|
||||
var/on_store_name = "Cryogenic Oversight"
|
||||
var/on_enter_occupant_message = "You feel cool air surround you. You go numb as your senses turn inward."
|
||||
var/allow_occupant_types = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
var/disallow_occupant_types = list()
|
||||
|
||||
var/mob/occupant = null // Person waiting to be despawned.
|
||||
var/orient_right = null // Flips the sprite.
|
||||
var/time_till_despawn = 18000 // 30 minutes-ish safe period before being despawned.
|
||||
var/time_entered = 0 // Used to keep track of the safe period.
|
||||
var/obj/item/device/radio/intercom/announce //
|
||||
|
||||
var/obj/machinery/computer/cryopod/control_computer
|
||||
var/last_no_computer_message = 0
|
||||
|
||||
// These items are preserved when the process() despawn proc occurs.
|
||||
var/list/preserve_items = list(
|
||||
/obj/item/weapon/hand_tele,
|
||||
@@ -169,16 +205,64 @@ var/global/list/frozen_items = list()
|
||||
orient_right = 1
|
||||
icon_state = "body_scanner_0-r"
|
||||
|
||||
/obj/machinery/cryopod/New()
|
||||
/obj/machinery/cryopod/robot
|
||||
name = "robotic storage unit"
|
||||
desc = "A storage unit for robots."
|
||||
icon = 'icons/obj/robot_storage.dmi'
|
||||
icon_state = "pod_0"
|
||||
base_icon_state = "pod_0"
|
||||
occupied_icon_state = "pod_1"
|
||||
on_store_message = "has entered robotic storage."
|
||||
on_store_name = "Robotic Storage Oversight"
|
||||
on_enter_occupant_message = "The storage unit broadcasts a sleep signal to you. Your systems start to shut down, and you enter low-power mode."
|
||||
allow_occupant_types = list(/mob/living/silicon/robot)
|
||||
disallow_occupant_types = list(/mob/living/silicon/robot/drone)
|
||||
|
||||
/obj/machinery/cryopod/robot/right
|
||||
orient_right = 1
|
||||
icon_state = "pod_0-r"
|
||||
|
||||
/obj/machinery/cryopod/New()
|
||||
announce = new /obj/item/device/radio/intercom(src)
|
||||
|
||||
if(orient_right)
|
||||
icon_state = "body_scanner_0-r"
|
||||
icon_state = "[base_icon_state]-r"
|
||||
else
|
||||
icon_state = "body_scanner_0"
|
||||
icon_state = base_icon_state
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/cryopod/initialize()
|
||||
..()
|
||||
|
||||
find_control_computer()
|
||||
|
||||
/obj/machinery/cryopod/proc/find_control_computer(urgent=0)
|
||||
control_computer = locate(/obj/machinery/computer/cryopod) in src.loc.loc
|
||||
|
||||
// Don't send messages unless we *need* the computer, and less than five minutes have passed since last time we messaged
|
||||
if(!control_computer && urgent && last_no_computer_message + 5*60*10 < world.time)
|
||||
log_admin("Cryopod in [src.loc.loc] could not find control computer!")
|
||||
message_admins("Cryopod in [src.loc.loc] could not find control computer!")
|
||||
last_no_computer_message = world.time
|
||||
|
||||
return control_computer != null
|
||||
|
||||
/obj/machinery/cryopod/proc/check_occupant_allowed(mob/M)
|
||||
var/correct_type = 0
|
||||
for(var/type in allow_occupant_types)
|
||||
if(istype(M, type))
|
||||
correct_type = 1
|
||||
break
|
||||
|
||||
if(!correct_type) return 0
|
||||
|
||||
for(var/type in disallow_occupant_types)
|
||||
if(istype(M, type))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
//Lifted from Unity stasis.dm and refactored. ~Zuhayr
|
||||
/obj/machinery/cryopod/process()
|
||||
if(occupant)
|
||||
@@ -187,9 +271,18 @@ var/global/list/frozen_items = list()
|
||||
return
|
||||
|
||||
if(!occupant.client && occupant.stat<2) //Occupant is living and has no client.
|
||||
if(!control_computer)
|
||||
if(!find_control_computer(urgent=1))
|
||||
return
|
||||
|
||||
//Drop all items into the pod.
|
||||
for(var/obj/item/W in occupant)
|
||||
if(istype(W, /obj/item/device/mmi))
|
||||
if(istype(occupant, /mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R = occupant
|
||||
if(R.mmi == W)
|
||||
del(W)
|
||||
continue
|
||||
occupant.drop_from_inventory(W)
|
||||
W.loc = src
|
||||
|
||||
@@ -215,8 +308,11 @@ var/global/list/frozen_items = list()
|
||||
if(!preserve)
|
||||
del(W)
|
||||
else
|
||||
frozen_items += W
|
||||
W.loc = null
|
||||
if(control_computer && control_computer.allow_items)
|
||||
control_computer.frozen_items += W
|
||||
W.loc = null
|
||||
else
|
||||
W.loc = src.loc
|
||||
|
||||
//Update any existing objectives involving this mob.
|
||||
for(var/datum/objective/O in all_objectives)
|
||||
@@ -265,9 +361,9 @@ var/global/list/frozen_items = list()
|
||||
del(G)
|
||||
|
||||
if(orient_right)
|
||||
icon_state = "body_scanner_0-r"
|
||||
icon_state = "[base_icon_state]-r"
|
||||
else
|
||||
icon_state = "body_scanner_0"
|
||||
icon_state = base_icon_state
|
||||
|
||||
//TODO: Check objectives/mode, update new targets if this mob is the target, spawn new antags?
|
||||
|
||||
@@ -275,10 +371,10 @@ var/global/list/frozen_items = list()
|
||||
occupant.ckey = null
|
||||
|
||||
//Make an announcement and log the person entering storage.
|
||||
frozen_crew += "[occupant.real_name]"
|
||||
control_computer.frozen_crew += "[occupant.real_name]"
|
||||
|
||||
announce.autosay("[occupant.real_name] has entered long-term storage.", "Cryogenic Oversight")
|
||||
visible_message("\blue The crypod hums and hisses as it moves [occupant.real_name] into storage.", 3)
|
||||
announce.autosay("[occupant.real_name] [on_store_message]", "[on_store_name]")
|
||||
visible_message("\blue \The [src] hums and hisses as it moves [occupant.real_name] into storage.", 3)
|
||||
|
||||
// Delete the mob.
|
||||
del(occupant)
|
||||
@@ -293,17 +389,20 @@ var/global/list/frozen_items = list()
|
||||
if(istype(G, /obj/item/weapon/grab))
|
||||
|
||||
if(occupant)
|
||||
user << "\blue The cryo pod is in use."
|
||||
user << "\blue \The [src] is in use."
|
||||
return
|
||||
|
||||
if(!ismob(G:affecting))
|
||||
return
|
||||
|
||||
if(!check_occupant_allowed(G:affecting))
|
||||
return
|
||||
|
||||
var/willing = null //We don't want to allow people to be forced into despawning.
|
||||
var/mob/M = G:affecting
|
||||
|
||||
if(M.client)
|
||||
if(alert(M,"Would you like to enter cryosleep?",,"Yes","No") == "Yes")
|
||||
if(alert(M,"Would you like to enter long-term storage?",,"Yes","No") == "Yes")
|
||||
if(!M || !G || !G:affecting) return
|
||||
willing = 1
|
||||
else
|
||||
@@ -311,7 +410,7 @@ var/global/list/frozen_items = list()
|
||||
|
||||
if(willing)
|
||||
|
||||
visible_message("[user] starts putting [G:affecting:name] into the cryo pod.", 3)
|
||||
visible_message("[user] starts putting [G:affecting:name] into \the [src].", 3)
|
||||
|
||||
if(do_after(user, 20))
|
||||
if(!M || !G || !G:affecting) return
|
||||
@@ -323,11 +422,11 @@ var/global/list/frozen_items = list()
|
||||
M.client.eye = src
|
||||
|
||||
if(orient_right)
|
||||
icon_state = "body_scanner_1-r"
|
||||
icon_state = "[occupied_icon_state]-r"
|
||||
else
|
||||
icon_state = "body_scanner_1"
|
||||
icon_state = occupied_icon_state
|
||||
|
||||
M << "\blue You feel cool air surround you. You go numb as your senses turn inward."
|
||||
M << "\blue [on_enter_occupant_message]"
|
||||
M << "\blue <b>If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.</b>"
|
||||
occupant = M
|
||||
time_entered = world.time
|
||||
@@ -349,9 +448,9 @@ var/global/list/frozen_items = list()
|
||||
return
|
||||
|
||||
if(orient_right)
|
||||
icon_state = "body_scanner_0-r"
|
||||
icon_state = "[base_icon_state]-r"
|
||||
else
|
||||
icon_state = "body_scanner_0"
|
||||
icon_state = base_icon_state
|
||||
|
||||
//Eject any items that aren't meant to be in the pod.
|
||||
var/list/items = src.contents
|
||||
@@ -370,11 +469,11 @@ var/global/list/frozen_items = list()
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat != 0 || !(ishuman(usr) || ismonkey(usr)))
|
||||
if(usr.stat != 0 || !check_occupant_allowed(usr))
|
||||
return
|
||||
|
||||
if(src.occupant)
|
||||
usr << "\blue <B>The cryo pod is in use.</B>"
|
||||
usr << "\blue <B>\The [src] is in use.</B>"
|
||||
return
|
||||
|
||||
for(var/mob/living/carbon/slime/M in range(1,usr))
|
||||
@@ -382,7 +481,7 @@ var/global/list/frozen_items = list()
|
||||
usr << "You're too busy getting your life sucked out of you."
|
||||
return
|
||||
|
||||
visible_message("[usr] starts climbing into the cryo pod.", 3)
|
||||
visible_message("[usr] starts climbing into \the [src].", 3)
|
||||
|
||||
if(do_after(usr, 20))
|
||||
|
||||
@@ -390,7 +489,7 @@ var/global/list/frozen_items = list()
|
||||
return
|
||||
|
||||
if(src.occupant)
|
||||
usr << "\blue <B>The cryo pod is in use.</B>"
|
||||
usr << "\blue <B>\The [src] is in use.</B>"
|
||||
return
|
||||
|
||||
usr.stop_pulling()
|
||||
@@ -400,11 +499,11 @@ var/global/list/frozen_items = list()
|
||||
src.occupant = usr
|
||||
|
||||
if(orient_right)
|
||||
icon_state = "body_scanner_1-r"
|
||||
icon_state = "[occupied_icon_state]-r"
|
||||
else
|
||||
icon_state = "body_scanner_1"
|
||||
icon_state = occupied_icon_state
|
||||
|
||||
usr << "\blue You feel cool air surround you. You go numb as your senses turn inward."
|
||||
usr << "\blue [on_enter_occupant_message]"
|
||||
usr << "\blue <b>If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.</b>"
|
||||
occupant = usr
|
||||
time_entered = world.time
|
||||
@@ -426,9 +525,9 @@ var/global/list/frozen_items = list()
|
||||
occupant = null
|
||||
|
||||
if(orient_right)
|
||||
icon_state = "body_scanner_0-r"
|
||||
icon_state = "[base_icon_state]-r"
|
||||
else
|
||||
icon_state = "body_scanner_0"
|
||||
icon_state = base_icon_state
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -48,6 +48,10 @@
|
||||
latejoin_cryo += loc
|
||||
del(src)
|
||||
|
||||
if("JoinLateCyborg")
|
||||
latejoin_cyborg += loc
|
||||
del(src)
|
||||
|
||||
//prisoners
|
||||
if("prisonwarp")
|
||||
prisonwarp += loc
|
||||
@@ -133,7 +137,7 @@
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/storage/labcoat/mad(src.loc)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/mad(src.loc)
|
||||
new /obj/item/clothing/glasses/gglasses(src.loc)
|
||||
del(src)
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@
|
||||
|
||||
/obj/structure/coatrack/update_icon()
|
||||
overlays.Cut()
|
||||
if (istype(coat, /obj/item/clothing/suit/storage/labcoat))
|
||||
if (istype(coat, /obj/item/clothing/suit/storage/toggle/labcoat))
|
||||
overlays += image(icon, icon_state = "coat_lab")
|
||||
if (istype(coat, /obj/item/clothing/suit/storage/labcoat/cmo))
|
||||
if (istype(coat, /obj/item/clothing/suit/storage/toggle/labcoat/cmo))
|
||||
overlays += image(icon, icon_state = "coat_cmo")
|
||||
if (istype(coat, /obj/item/clothing/suit/storage/det_suit))
|
||||
overlays += image(icon, icon_state = "coat_det")
|
||||
@@ -93,7 +93,7 @@
|
||||
new /obj/item/clothing/under/lawyer/black(src)
|
||||
new /obj/item/clothing/under/lawyer/red(src)
|
||||
new /obj/item/clothing/under/lawyer/bluesuit(src)
|
||||
new /obj/item/clothing/suit/storage/lawyer/bluejacket(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket(src)
|
||||
new /obj/item/clothing/under/lawyer/purpsuit(src)
|
||||
new /obj/item/clothing/suit/storage/lawyer/purpjacket(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
new /obj/item/clothing/under/rank/medical(src)
|
||||
new /obj/item/clothing/under/rank/nurse(src)
|
||||
new /obj/item/clothing/under/rank/orderly(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/fr_jacket(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/fr_jacket(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
// new /obj/item/weapon/cartridge/medical(src)
|
||||
new /obj/item/device/radio/headset/headset_med(src)
|
||||
@@ -130,8 +130,8 @@
|
||||
new /obj/item/clothing/under/rank/medical/purple(src)
|
||||
new /obj/item/clothing/head/surgery/purple(src)
|
||||
new /obj/item/clothing/under/rank/chief_medical_officer(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/cmo(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/cmoalt(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt(src)
|
||||
new /obj/item/weapon/cartridge/cmo(src)
|
||||
new /obj/item/clothing/gloves/latex(src)
|
||||
new /obj/item/clothing/shoes/brown (src)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/scientist(src)
|
||||
//new /obj/item/clothing/suit/labcoat/science(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
// new /obj/item/weapon/cartridge/signal/science(src)
|
||||
new /obj/item/device/radio/headset/headset_sci(src)
|
||||
@@ -39,7 +39,7 @@
|
||||
new /obj/item/clothing/under/rank/research_director(src)
|
||||
new /obj/item/clothing/under/rank/research_director/rdalt(src)
|
||||
new /obj/item/clothing/under/rank/research_director/dress_rd(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/weapon/cartridge/rd(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/leather(src)
|
||||
|
||||
@@ -240,9 +240,9 @@
|
||||
new /obj/item/clothing/under/rank/scientist(src)
|
||||
new /obj/item/clothing/under/rank/scientist(src)
|
||||
new /obj/item/clothing/under/rank/scientist(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
@@ -261,8 +261,8 @@
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/roboticist(src)
|
||||
new /obj/item/clothing/under/rank/roboticist(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
@@ -281,8 +281,8 @@
|
||||
new /obj/item/clothing/under/rank/chemist(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/chemist(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/chemist(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -297,8 +297,8 @@
|
||||
new /obj/item/clothing/under/rank/geneticist(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/genetics(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/genetics(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -313,8 +313,8 @@
|
||||
new /obj/item/clothing/under/rank/virologist(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/virologist(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat/virologist(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
return
|
||||
@@ -334,8 +334,8 @@
|
||||
new /obj/item/clothing/under/rank/medical/purple(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
return
|
||||
|
||||
@@ -129,6 +129,7 @@ var/list/newplayer_start = list()
|
||||
var/list/latejoin = list()
|
||||
var/list/latejoin_gateway = list()
|
||||
var/list/latejoin_cryo = list()
|
||||
var/list/latejoin_cyborg = list()
|
||||
|
||||
var/list/prisonwarp = list() //prisoners go to these
|
||||
var/list/holdingfacility = list() //captured people go here
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
name = "Scientist"
|
||||
corpseradio = /obj/item/device/radio/headset/headset_sci
|
||||
corpseuniform = /obj/item/clothing/under/rank/scientist
|
||||
corpsesuit = /obj/item/clothing/suit/storage/labcoat/science
|
||||
corpsesuit = /obj/item/clothing/suit/storage/toggle/labcoat/science
|
||||
corpseback = /obj/item/weapon/storage/backpack
|
||||
corpseshoes = /obj/item/clothing/shoes/white
|
||||
corpseid = 1
|
||||
|
||||
@@ -18,13 +18,13 @@ var/global/list/gear_datums = list()
|
||||
//create a list of gear datums to sort
|
||||
for(var/type in typesof(/datum/gear)-/datum/gear)
|
||||
var/datum/gear/G = new type()
|
||||
|
||||
|
||||
var/category = (G.sort_category in sort_categories)? G.sort_category : "unknown"
|
||||
sort_categories[category][G.display_name] = G
|
||||
|
||||
|
||||
for (var/category in sort_categories)
|
||||
gear_datums.Add(sortAssoc(sort_categories[category]))
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
/datum/gear
|
||||
@@ -475,13 +475,13 @@ var/global/list/gear_datums = list()
|
||||
|
||||
/datum/gear/brown_jacket
|
||||
display_name = "leather jacket, brown"
|
||||
path = /obj/item/clothing/suit/storage/brown_jacket
|
||||
path = /obj/item/clothing/suit/storage/toggle/brown_jacket
|
||||
cost = 3
|
||||
slot = slot_wear_suit
|
||||
|
||||
/datum/gear/brown_jacket_nt
|
||||
display_name = "leather jacket, NanoTrasen, brown"
|
||||
path = /obj/item/clothing/suit/storage/brown_jacket/nanotrasen
|
||||
path = /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen
|
||||
cost = 3
|
||||
slot = slot_wear_suit
|
||||
|
||||
|
||||
@@ -10,6 +10,17 @@ var/list/spawntypes = list()
|
||||
var/msg //Message to display on the arrivals computer.
|
||||
var/list/turfs //List of turfs to spawn on.
|
||||
var/display_name //Name used in preference setup.
|
||||
var/list/restrict_job = null
|
||||
var/list/disallow_job = null
|
||||
|
||||
proc/check_job_spawning(job)
|
||||
if(restrict_job && !(job in restrict_job))
|
||||
return 0
|
||||
|
||||
if(disallow_job && (job in disallow_job))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/datum/spawnpoint/arrivals
|
||||
display_name = "Arrivals Shuttle"
|
||||
@@ -30,7 +41,17 @@ var/list/spawntypes = list()
|
||||
/datum/spawnpoint/cryo
|
||||
display_name = "Cryogenic Storage"
|
||||
msg = "has completed cryogenic revival"
|
||||
disallow_job = list("Cyborg")
|
||||
|
||||
/datum/spawnpoint/cryo/New()
|
||||
..()
|
||||
turfs = latejoin_cryo
|
||||
turfs = latejoin_cryo
|
||||
|
||||
/datum/spawnpoint/cyborg
|
||||
display_name = "Cyborg Storage"
|
||||
msg = "has been activated from storage"
|
||||
restrict_job = list("Cyborg")
|
||||
|
||||
/datum/spawnpoint/cyborg/New()
|
||||
..()
|
||||
turfs = latejoin_cyborg
|
||||
@@ -141,11 +141,13 @@
|
||||
sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi')
|
||||
|
||||
//Lawyer
|
||||
/obj/item/clothing/suit/storage/lawyer/bluejacket
|
||||
/obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
|
||||
name = "Blue Suit Jacket"
|
||||
desc = "A snappy dress jacket."
|
||||
icon_state = "suitjacket_blue_open"
|
||||
item_state = "suitjacket_blue_open"
|
||||
icon_open = "suitjacket_blue_open"
|
||||
icon_closed = "suitjacket_blue"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
@@ -158,62 +160,31 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
//Internal Affairs
|
||||
/obj/item/clothing/suit/storage/internalaffairs
|
||||
/obj/item/clothing/suit/storage/toggle/internalaffairs
|
||||
name = "Internal Affairs Jacket"
|
||||
desc = "A smooth black jacket."
|
||||
icon_state = "ia_jacket_open"
|
||||
item_state = "ia_jacket"
|
||||
icon_open = "ia_jacket_open"
|
||||
icon_closed = "ia_jacket"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
verb/toggle()
|
||||
set name = "Toggle Coat Buttons"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
switch(icon_state)
|
||||
if("ia_jacket_open")
|
||||
src.icon_state = "ia_jacket"
|
||||
usr << "You button up the jacket."
|
||||
if("ia_jacket")
|
||||
src.icon_state = "ia_jacket_open"
|
||||
usr << "You unbutton the jacket."
|
||||
else
|
||||
usr << "You attempt to button-up the velcro on your [src], before promptly realising how retarded you are."
|
||||
return
|
||||
update_clothing_icon() //so our overlays update
|
||||
|
||||
//Medical
|
||||
/obj/item/clothing/suit/storage/fr_jacket
|
||||
/obj/item/clothing/suit/storage/toggle/fr_jacket
|
||||
name = "first responder jacket"
|
||||
desc = "A high-visibility jacket worn by medical first responders."
|
||||
icon_state = "fr_jacket_open"
|
||||
item_state = "fr_jacket"
|
||||
icon_open = "fr_jacket_open"
|
||||
icon_closed = "fr_jacket"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
verb/toggle()
|
||||
set name = "Toggle Jacket Buttons"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
switch(icon_state)
|
||||
if("fr_jacket_open")
|
||||
src.icon_state = "fr_jacket"
|
||||
usr << "You button up the jacket."
|
||||
if("fr_jacket")
|
||||
src.icon_state = "fr_jacket_open"
|
||||
usr << "You unbutton the jacket."
|
||||
update_clothing_icon() //so our overlays update
|
||||
|
||||
//Mime
|
||||
/obj/item/clothing/suit/suspenders
|
||||
name = "suspenders"
|
||||
|
||||
@@ -1,177 +1,104 @@
|
||||
/obj/item/clothing/suit/storage/labcoat
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat
|
||||
name = "labcoat"
|
||||
desc = "A suit that protects against minor chemical spills."
|
||||
icon_state = "labcoat_open"
|
||||
item_state = "labcoat" //Is this even used for anything?
|
||||
icon_open = "labcoat_open"
|
||||
icon_closed = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
|
||||
sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi')
|
||||
|
||||
verb/toggle()
|
||||
set name = "Toggle Labcoat Buttons"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
//Why???
|
||||
switch(icon_state)
|
||||
if("labcoat_open")
|
||||
src.icon_state = "labcoat"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat")
|
||||
src.icon_state = "labcoat_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("red_labcoat_open")
|
||||
src.icon_state = "red_labcoat"
|
||||
usr << "You button up the labcoat."
|
||||
if("red_labcoat")
|
||||
src.icon_state = "red_labcoat_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("blue_labcoat_open")
|
||||
src.icon_state = "blue_labcoat"
|
||||
usr << "You button up the labcoat."
|
||||
if("blue_labcoat")
|
||||
src.icon_state = "blue_labcoat_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("purple_labcoat_open")
|
||||
src.icon_state = "purple_labcoat"
|
||||
usr << "You button up the labcoat."
|
||||
if("purple_labcoat")
|
||||
src.icon_state = "purple_labcoat_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("green_labcoat_open")
|
||||
src.icon_state = "green_labcoat"
|
||||
usr << "You button up the labcoat."
|
||||
if("green_labcoat")
|
||||
src.icon_state = "green_labcoat_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("orange_labcoat_open")
|
||||
src.icon_state = "orange_labcoat"
|
||||
usr << "You button up the labcoat."
|
||||
if("orange_labcoat")
|
||||
src.icon_state = "orange_labcoat_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labcoat_cmo_open")
|
||||
src.icon_state = "labcoat_cmo"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat_cmo")
|
||||
src.icon_state = "labcoat_cmo_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labcoat_cmoalt_open")
|
||||
src.icon_state = "labcoat_cmoalt"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat_cmoalt")
|
||||
src.icon_state = "labcoat_cmoalt_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labcoat_gen_open")
|
||||
src.icon_state = "labcoat_gen"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat_gen")
|
||||
src.icon_state = "labcoat_gen_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labcoat_chem_open")
|
||||
src.icon_state = "labcoat_chem"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat_chem")
|
||||
src.icon_state = "labcoat_chem_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labcoat_vir_open")
|
||||
src.icon_state = "labcoat_vir"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat_vir")
|
||||
src.icon_state = "labcoat_vir_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labcoat_tox_open")
|
||||
src.icon_state = "labcoat_tox"
|
||||
usr << "You button up the labcoat."
|
||||
if("labcoat_tox")
|
||||
src.icon_state = "labcoat_tox_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if("labgreen_open")
|
||||
src.icon_state = "labgreen"
|
||||
usr << "You button up the labcoat."
|
||||
if("labgreen")
|
||||
src.icon_state = "labgreen_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
if ("labcoat_black_open")
|
||||
src.icon_state = "labcoat_black"
|
||||
usr << "You button up the labcoat."
|
||||
if ("labcoat_black")
|
||||
src.icon_state = "labcoat_black_open"
|
||||
usr << "You unbutton the labcoat."
|
||||
else
|
||||
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
|
||||
return
|
||||
update_clothing_icon() //so our overlays update
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/red
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/red
|
||||
name = "red labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is red."
|
||||
icon_state = "red_labcoat_open"
|
||||
item_state = "red_labcoat"
|
||||
icon_open = "red_labcoat_open"
|
||||
icon_closed = "red_labcoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/blue
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/blue
|
||||
name = "blue labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is blue."
|
||||
icon_state = "blue_labcoat_open"
|
||||
item_state = "blue_labcoat"
|
||||
icon_open = "blue_labcoat_open"
|
||||
icon_closed = "blue_labcoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/purple
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/purple
|
||||
name = "purple labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is purple."
|
||||
icon_state = "purple_labcoat_open"
|
||||
item_state = "purple_labcoat"
|
||||
icon_open = "purple_labcoat_open"
|
||||
icon_closed = "purple_labcoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/orange
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/orange
|
||||
name = "orange labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is orange."
|
||||
icon_state = "orange_labcoat_open"
|
||||
item_state = "orange_labcoat"
|
||||
icon_open = "orange_labcoat_open"
|
||||
icon_closed = "orange_labcoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/green
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/green
|
||||
name = "green labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is green."
|
||||
icon_state = "green_labcoat_open"
|
||||
item_state = "green_labcoat"
|
||||
icon_open = "green_labcoat_open"
|
||||
icon_closed = "green_labcoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/cmo
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/cmo
|
||||
name = "chief medical officer's labcoat"
|
||||
desc = "Bluer than the standard model."
|
||||
icon_state = "labcoat_cmo_open"
|
||||
item_state = "labcoat_cmo"
|
||||
icon_open = "labcoat_cmo_open"
|
||||
icon_closed = "labcoat_cmo"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/cmoalt
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/cmoalt
|
||||
name = "chief medical officer labcoat"
|
||||
desc = "A labcoat with command blue highlights."
|
||||
icon_state = "labcoat_cmoalt_open"
|
||||
icon_open = "labcoat_cmoalt_open"
|
||||
icon_closed = "labcoat_cmoalt"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/mad
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/mad
|
||||
name = "The Mad's labcoat"
|
||||
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
|
||||
icon_state = "labgreen_open"
|
||||
item_state = "labgreen"
|
||||
icon_open = "labgreen_open"
|
||||
icon_closed = "labgreen"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/genetics
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/genetics
|
||||
name = "Geneticist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
|
||||
icon_state = "labcoat_gen_open"
|
||||
icon_open = "labcoat_gen_open"
|
||||
icon_closed = "labcoat_gen"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/chemist
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/chemist
|
||||
name = "Chemist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
|
||||
icon_state = "labcoat_chem_open"
|
||||
icon_open = "labcoat_chem_open"
|
||||
icon_closed = "labcoat_chem"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/virologist
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/virologist
|
||||
name = "Virologist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
|
||||
icon_state = "labcoat_vir_open"
|
||||
icon_open = "labcoat_vir_open"
|
||||
icon_closed = "labcoat_vir"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/science
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/science
|
||||
name = "Scientist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
|
||||
icon_state = "labcoat_tox_open"
|
||||
icon_open = "labcoat_tox_open"
|
||||
icon_closed = "labcoat_tox"
|
||||
|
||||
@@ -199,28 +199,6 @@
|
||||
item_state = "ianshirt"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
//Blue suit jacket toggle
|
||||
/obj/item/clothing/suit/suit/verb/toggle()
|
||||
set name = "Toggle Jacket Buttons"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
if(src.icon_state == "suitjacket_blue_open")
|
||||
src.icon_state = "suitjacket_blue"
|
||||
src.item_state = "suitjacket_blue"
|
||||
usr << "You button up the suit jacket."
|
||||
else if(src.icon_state == "suitjacket_blue")
|
||||
src.icon_state = "suitjacket_blue_open"
|
||||
src.item_state = "suitjacket_blue_open"
|
||||
usr << "You unbutton the suit jacket."
|
||||
else
|
||||
usr << "You button-up some imaginary buttons on your [src]."
|
||||
return
|
||||
update_clothing_icon()
|
||||
|
||||
//pyjamas
|
||||
//originally intended to be pinstripes >.>
|
||||
|
||||
@@ -401,38 +379,20 @@
|
||||
icon_state = "leather_jacket_nt"
|
||||
|
||||
//This one has buttons for some reason
|
||||
/obj/item/clothing/suit/storage/brown_jacket
|
||||
/obj/item/clothing/suit/storage/toggle/brown_jacket
|
||||
name = "leather jacket"
|
||||
desc = "A brown leather coat."
|
||||
icon_state = "brown_jacket"
|
||||
item_state = "brown_jacket"
|
||||
var/open_state = "brown_jacket_open"
|
||||
icon_open = "brown_jacket_open"
|
||||
icon_closed = "brown_jacket"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/brown_jacket/nanotrasen
|
||||
/obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen
|
||||
desc = "A brown leather coat. The letters NT are proudly displayed on the back."
|
||||
icon_state = "brown_jacket_nt"
|
||||
open_state = "brown_jacket_nt_open"
|
||||
|
||||
/obj/item/clothing/suit/storage/brown_jacket/verb/toggle()
|
||||
set name = "Toggle Jacket Buttons"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
//The inhand sprite (the mob sprite that appears when holding the item in your hand)
|
||||
//is unchanged, so update only icon_state, not item_state.
|
||||
if(icon_state == open_state)
|
||||
usr << "You button up the jacket."
|
||||
src.icon_state = initial(icon_state)
|
||||
|
||||
else if(icon_state == initial(icon_state))
|
||||
usr << "You unbutton the jacket."
|
||||
src.icon_state = open_state
|
||||
|
||||
update_clothing_icon() //so our overlays update
|
||||
icon_open = "brown_jacket_nt_open"
|
||||
icon_closed = "brown_jacket_nt"
|
||||
|
||||
/obj/item/clothing/suit/hoodie
|
||||
name = "grey hoodie"
|
||||
|
||||
@@ -26,4 +26,26 @@
|
||||
|
||||
/obj/item/clothing/suit/storage/hear_talk(mob/M, var/msg)
|
||||
pockets.hear_talk(M, msg)
|
||||
..()
|
||||
..()
|
||||
|
||||
//Jackets with buttons, used for labcoats, IA jackets, First Responder jackets, and brown jackets.
|
||||
/obj/item/clothing/suit/storage/toggle
|
||||
var/icon_open
|
||||
var/icon_closed
|
||||
verb/toggle()
|
||||
set name = "Toggle Coat Buttons"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
icon_state = icon_closed
|
||||
usr << "You button up the coat."
|
||||
else if(icon_state == icon_closed)
|
||||
icon_state = icon_open
|
||||
usr << "You unbutton the coat."
|
||||
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
|
||||
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
|
||||
return
|
||||
update_clothing_icon() //so our overlays update
|
||||
@@ -120,7 +120,7 @@
|
||||
New()
|
||||
..()
|
||||
var/blocked = list(/obj/item/clothing/suit/chameleon, /obj/item/clothing/suit/space/space_ninja,
|
||||
/obj/item/clothing/suit/golem, /obj/item/clothing/suit/suit, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice,
|
||||
/obj/item/clothing/suit/golem, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice,
|
||||
/obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits.
|
||||
for(var/U in typesof(/obj/item/clothing/suit)-blocked)
|
||||
var/obj/item/clothing/suit/V = new U
|
||||
@@ -257,7 +257,7 @@
|
||||
icon_state = A.icon_state
|
||||
item_state = A.item_state
|
||||
item_color = A.item_color
|
||||
|
||||
|
||||
//so our overlays update.
|
||||
if (ismob(src.loc))
|
||||
var/mob/M = src.loc
|
||||
@@ -464,7 +464,7 @@
|
||||
icon_state = A.icon_state
|
||||
item_state = A.item_state
|
||||
flags_inv = A.flags_inv
|
||||
|
||||
|
||||
//so our overlays update.
|
||||
if (ismob(src.loc))
|
||||
var/mob/M = src.loc
|
||||
|
||||
@@ -865,11 +865,13 @@
|
||||
icon_state = "mitlabcoat"
|
||||
item_state = "mitlabcoat"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/fluff/epsilon //Devildabeast: Looping Song
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/fluff/epsilon //Devildabeast: Looping Song
|
||||
name = "e UMi labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a black stripe on the shoulder. The abbreviation \"e UMi\" is written on the back in bold text."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "labcoat_black_open"
|
||||
icon_open = "labcoat_black_open"
|
||||
icon_closed = "labcoat_black"
|
||||
item_state = "labcoat_black"
|
||||
|
||||
/obj/item/clothing/suit/storage/det_suit/fluff/leatherjack //atomicdog92: Seth Sealis
|
||||
|
||||
@@ -302,8 +302,8 @@
|
||||
|
||||
job_master.AssignRole(src, rank, 1)
|
||||
|
||||
var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind
|
||||
job_master.EquipRank(character, rank, 1) //equips the human
|
||||
var/mob/living/character = create_character() //creates the human and transfers vars and mind
|
||||
character = job_master.EquipRank(character, rank, 1) //equips the human
|
||||
UpdateFactionList(character)
|
||||
EquipCustomItems(character)
|
||||
|
||||
@@ -315,8 +315,13 @@
|
||||
S = spawntypes[spawning_at]
|
||||
|
||||
if(S && istype(S))
|
||||
character.loc = pick(S.turfs)
|
||||
join_message = S.msg
|
||||
if(S.check_job_spawning(rank))
|
||||
character.loc = pick(S.turfs)
|
||||
join_message = S.msg
|
||||
else
|
||||
character << "Your chosen spawnpoint ([S.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead."
|
||||
character.loc = pick(latejoin)
|
||||
join_message = "has arrived on the station"
|
||||
else
|
||||
character.loc = pick(latejoin)
|
||||
join_message = "has arrived on the station"
|
||||
@@ -338,9 +343,9 @@
|
||||
//Grab some data from the character prefs for use in random news procs.
|
||||
|
||||
AnnounceArrival(character, rank, join_message)
|
||||
|
||||
else
|
||||
character.Robotize()
|
||||
AnnounceCyborg(character, rank, join_message)
|
||||
|
||||
del(src)
|
||||
|
||||
proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message)
|
||||
@@ -351,6 +356,15 @@
|
||||
a.autosay("[character.real_name],[rank ? " [rank]," : " visitor," ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer")
|
||||
del(a)
|
||||
|
||||
proc/AnnounceCyborg(var/mob/living/character, var/rank, var/join_message)
|
||||
if (ticker.current_state == GAME_STATE_PLAYING)
|
||||
var/obj/item/device/radio/intercom/a = new /obj/item/device/radio/intercom(null)// BS12 EDIT Arrivals Announcement Computer, rather than the AI.
|
||||
if(character.mind.role_alt_title)
|
||||
rank = character.mind.role_alt_title
|
||||
// can't use their name here, since cyborg namepicking is done post-spawn, so we'll just say "A new Cyborg has arrived"/"A new Android has arrived"/etc.
|
||||
a.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer")
|
||||
del(a)
|
||||
|
||||
proc/LateChoices()
|
||||
var/mills = world.time // 1/10 of a second, not real milliseconds but whatever
|
||||
//var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something
|
||||
|
||||
Reference in New Issue
Block a user