Merge remote-tracking branch 'upstream/master' into kk-misc3

This commit is contained in:
Killian
2020-12-15 06:43:40 +00:00
147 changed files with 102422 additions and 49406 deletions
+5
View File
@@ -0,0 +1,5 @@
/obj/machinery/atmospherics/pipe/tank/phoron/full
start_pressure = 15000
/obj/machinery/atmospherics/pipe/tank/air/full
start_pressure = 15000
+1 -1
View File
@@ -26,7 +26,7 @@
#define BORGMESON 0x1
#define BORGTHERM 0x2
#define BORGXRAY 0x4
#define BORGMATERIAL 8
#define BORGMATERIAL 0x8
#define STANCE_ATTACK 11 // Backwards compatability
#define STANCE_ATTACKING 12 // Ditto
+7
View File
@@ -3,6 +3,7 @@
*/
var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type
var/global/list/hair_accesories_list= list()// Stores /datum/sprite_accessory/hair_accessory indexed by type
var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type
var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type
var/global/list/negative_traits = list() // Negative custom species traits, indexed by path
@@ -451,6 +452,12 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
var/datum/sprite_accessory/wing/instance = new path()
wing_styles_list[path] = instance
// Custom Hair Accessories
paths = typesof(/datum/sprite_accessory/hair_accessory) - /datum/sprite_accessory/hair_accessory
for(var/path in paths)
var/datum/sprite_accessory/hair_accessory/instance = new path()
hair_accesories_list[path] = instance
// Custom species traits
paths = typesof(/datum/trait) - /datum/trait
for(var/path in paths)
+158 -47
View File
@@ -21,14 +21,20 @@
/datum/supply_pack/costumes/tesh_smocks_vr
name = "Teshari smocks"
num_contained = 4
contains = list(
/obj/item/clothing/under/seromi/smock,
/obj/item/clothing/under/seromi/smock/rainbow,
/obj/item/clothing/under/seromi/smock/red,
/obj/item/clothing/under/seromi/smock/white,
/obj/item/clothing/under/seromi/smock/yellow
/obj/item/clothing/under/seromi/smock/red,
/obj/item/clothing/under/seromi/smock/yellow,
/obj/item/clothing/under/seromi/smock/rainbow,
/obj/item/clothing/under/seromi/smock/dress,
/obj/item/clothing/under/seromi/smock/blackutilitysmock,
/obj/item/clothing/under/seromi/smock/greydress,
/obj/item/clothing/under/seromi/smock/blackutility,
/obj/item/clothing/under/seromi/smock/bluegreydress
)
cost = 25
cost = 20
containertype = /obj/structure/closet/crate
containername = "Teshari smocks crate"
@@ -36,18 +42,18 @@
name = "Teshari undercoats"
num_contained = 4
contains = list(
/obj/item/clothing/under/seromi/undercoat/standard/blue_grey,
/obj/item/clothing/under/seromi/undercoat/standard/brown_grey,
/obj/item/clothing/under/seromi/undercoat/standard/green_grey,
/obj/item/clothing/under/seromi/undercoat/standard/lightgrey_grey,
/obj/item/clothing/under/seromi/undercoat/standard/orange,
/obj/item/clothing/under/seromi/undercoat/standard/orange_grey,
/obj/item/clothing/under/seromi/undercoat/standard/pink_grey,
/obj/item/clothing/under/seromi/undercoat/standard/purple_grey,
/obj/item/clothing/under/seromi/undercoat/standard/rainbow,
/obj/item/clothing/under/seromi/undercoat/standard/red_grey,
/obj/item/clothing/under/seromi/undercoat/standard/lightgrey_grey,
/obj/item/clothing/under/seromi/undercoat/standard/white_grey,
/obj/item/clothing/under/seromi/undercoat/standard/yellow_grey
/obj/item/clothing/under/seromi/undercoat/standard/red_grey,
/obj/item/clothing/under/seromi/undercoat/standard/orange,
/obj/item/clothing/under/seromi/undercoat/standard/yellow_grey,
/obj/item/clothing/under/seromi/undercoat/standard/green_grey,
/obj/item/clothing/under/seromi/undercoat/standard/blue_grey,
/obj/item/clothing/under/seromi/undercoat/standard/purple_grey,
/obj/item/clothing/under/seromi/undercoat/standard/pink_grey,
/obj/item/clothing/under/seromi/undercoat/standard/brown_grey
)
cost = 20
containertype = /obj/structure/closet/crate
@@ -57,19 +63,18 @@
name = "Teshari undercoats (black)"
num_contained = 4
contains = list(
/obj/item/clothing/under/seromi/undercoat/standard/black,
/obj/item/clothing/under/seromi/undercoat/standard/black_blue,
/obj/item/clothing/under/seromi/undercoat/standard/black_brown,
/obj/item/clothing/under/seromi/undercoat/standard/black_green,
/obj/item/clothing/under/seromi/undercoat/standard/black_grey,
/obj/item/clothing/under/seromi/undercoat/standard/black_lightgrey,
/obj/item/clothing/under/seromi/undercoat/standard/black_midgrey,
/obj/item/clothing/under/seromi/undercoat,
/obj/item/clothing/under/seromi/undercoat/standard/black_orange,
/obj/item/clothing/under/seromi/undercoat/standard/black_pink,
/obj/item/clothing/under/seromi/undercoat/standard/black_purple,
/obj/item/clothing/under/seromi/undercoat/standard/black_red,
/obj/item/clothing/under/seromi/undercoat/standard/black_grey,
/obj/item/clothing/under/seromi/undercoat/standard/black_white,
/obj/item/clothing/under/seromi/undercoat/standard/black_yellow
/obj/item/clothing/under/seromi/undercoat/standard/black_red,
/obj/item/clothing/under/seromi/undercoat/standard/black,
/obj/item/clothing/under/seromi/undercoat/standard/black_yellow,
/obj/item/clothing/under/seromi/undercoat/standard/black_green,
/obj/item/clothing/under/seromi/undercoat/standard/black_blue,
/obj/item/clothing/under/seromi/undercoat/standard/black_purple,
/obj/item/clothing/under/seromi/undercoat/standard/black_pink,
/obj/item/clothing/under/seromi/undercoat/standard/black_brown
)
cost = 20
containertype = /obj/structure/closet/crate
@@ -79,18 +84,18 @@
name = "Teshari cloaks"
num_contained = 4
contains = list(
/obj/item/clothing/suit/storage/seromi/cloak/standard/blue_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/brown_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/green_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/lightgrey_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange,
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/pink_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/purple_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow,
/obj/item/clothing/suit/storage/seromi/cloak/standard/red_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/white,
/obj/item/clothing/suit/storage/seromi/cloak/standard/white_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/yellow_grey
/obj/item/clothing/suit/storage/seromi/cloak/standard/red_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/yellow_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/green_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/blue_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/purple_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/pink_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/brown_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow,
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange
)
cost = 40
containertype = /obj/structure/closet/crate
@@ -100,19 +105,125 @@
name = "Teshari cloaks (black)"
num_contained = 4
contains = list(
/obj/item/clothing/suit/storage/seromi/cloak/standard/black,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_blue,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_brown,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_green,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_lightgrey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_midgrey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_orange,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_pink,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_purple,
/obj/item/clothing/suit/storage/seromi/cloak,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_red,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_orange,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_yellow,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_green,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_blue,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_purple,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_pink,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_brown,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_grey,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_white,
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_yellow
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_glow,
/obj/item/clothing/suit/storage/seromi/cloak/standard/dark_retrowave
)
cost = 40
containertype = /obj/structure/closet/crate
containername = "Teshari cloaks crate"
/datum/supply_pack/costumes/tesh_worksuits_vr
name = "Teshari worksuits"
num_contained = 4
contains = list(
/obj/item/clothing/under/seromi/undercoat/standard/worksuit,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackpurple,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackorange,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackblue,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackgreen,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whitered,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whitepurple,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whiteorange,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whiteblue,
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whitegreen
)
cost = 20
containertype = /obj/structure/closet/crate
containername = "Teshari worksuits crate"
/datum/supply_pack/randomised/costumes/tesh_beltcloaks_vr
name = "Teshari cloaks (belted)"
num_contained = 4
contains = list(
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/orange_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/rainbow,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/lightgrey_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/white_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/red_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/orange,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/yellow_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/green_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/blue_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/purple_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/pink_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/brown_grey
)
cost = 40
containertype = /obj/structure/closet/crate
containername = "Teshari cloaks crate"
/datum/supply_pack/randomised/costumes/tesh_beltcloaks_b_vr
name = "Teshari cloaks (belted, black)"
num_contained = 4
contains = list(
/obj/item/clothing/suit/storage/seromi/beltcloak,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_orange,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_grey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_midgrey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_lightgrey,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_white,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_red,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_yellow,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_green,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_blue,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_purple,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_pink,
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_brown
)
cost = 40
containertype = /obj/structure/closet/crate
containername = "Teshari cloaks crate"
/datum/supply_pack/randomised/costumes/tesh_hoodcloaks_vr
name = "Teshari cloaks (hooded)"
num_contained = 4
contains = list(
/obj/item/clothing/suit/storage/hooded/teshari/standard/orange_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/lightgrey_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/white_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/red_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/orange,
/obj/item/clothing/suit/storage/hooded/teshari/standard/yellow_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/green_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/blue_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/purple_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/pink_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/brown_grey
)
cost = 40
containertype = /obj/structure/closet/crate
containername = "Teshari cloaks crate"
/datum/supply_pack/randomised/costumes/tesh_hoodcloaks_b_vr
name = "Teshari cloaks (hooded, black)"
num_contained = 4
contains = list(
/obj/item/clothing/suit/storage/hooded/teshari,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_orange,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_grey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_midgrey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_lightgrey,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_white,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_red,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_yellow,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_green,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_blue,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_purple,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_pink,
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_brown
)
cost = 40
containertype = /obj/structure/closet/crate
@@ -262,7 +373,7 @@
cost = 60
containertype = /obj/structure/closet/crate
containername = "Saddlebags crate"
/datum/supply_pack/costumes/knights_gear
name = "Knights Gear"
contains = list(
+31 -2
View File
@@ -297,7 +297,7 @@
/obj/item/weapon/storage/part_replacer
name = "rapid part exchange device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
desc = "A special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "RPED"
w_class = ITEMSIZE_HUGE
can_hold = list(/obj/item/weapon/stock_parts)
@@ -311,10 +311,11 @@
max_storage_space = 100
drop_sound = 'sound/items/drop/device.ogg'
pickup_sound = 'sound/items/pickup/device.ogg'
var/panel_req = TRUE
/obj/item/weapon/storage/part_replacer/adv
name = "advanced rapid part exchange device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a greatly upgraded storage capacity"
desc = "A special mechanical module made to store, sort, and apply standard machine parts. This one has a greatly upgraded storage capacity."
icon_state = "RPED"
w_class = ITEMSIZE_HUGE
can_hold = list(/obj/item/weapon/stock_parts)
@@ -327,6 +328,31 @@
max_w_class = ITEMSIZE_NORMAL
max_storage_space = 400
/obj/item/weapon/storage/part_replacer/adv/discount_bluespace
name = "discount bluespace rapid part exchange device"
desc = "A special mechanical module made to store, sort, and apply standard machine parts. This one has a further increased storage capacity, \
and the ability to work on machines with closed maintenance panels."
storage_slots = 400
max_storage_space = 800
panel_req = FALSE
/obj/item/weapon/storage/part_replacer/drop_contents() // hacky-feeling tier-based drop system
hide_from(usr)
var/turf/T = get_turf(src)
var/lowest_rating = INFINITY // We want the lowest-part tier rating in the RPED so we only drop the lowest-tier parts.
/*
* Why not just use the stock part's rating variable?
* Future-proofing for a potential future where stock parts aren't the only thing that can fit in an RPED.
* see: /tg/ and /vg/'s RPEDs fitting power cells, beakers, etc.
*/
for(var/obj/item/B in contents)
if(B.rped_rating() < lowest_rating)
lowest_rating = B.rped_rating()
for(var/obj/item/B in contents)
if(B.rped_rating() > lowest_rating)
continue
remove_from_storage(B, T)
/obj/item/weapon/stock_parts
name = "stock part"
desc = "What?"
@@ -342,6 +368,9 @@
src.pixel_y = rand(-5.0, 5)
..()
/obj/item/weapon/stock_parts/get_rating()
return rating
//Rank 1
/obj/item/weapon/stock_parts/console_screen
-6
View File
@@ -16,9 +16,3 @@
/obj/machinery/button/attackby(obj/item/weapon/W, mob/user as mob)
return attack_hand(user)
// VOREStation Edit Begin
/obj/machinery/button/attack_hand(obj/item/weapon/W, mob/user as mob)
if(..()) return 1
playsound(src, 'sound/machines/button.ogg', 100, 1)
// VOREStation Edit End
+23
View File
@@ -0,0 +1,23 @@
/obj/machinery/button/attack_hand(obj/item/weapon/W, mob/user as mob)
if(..()) return 1
playsound(src, 'sound/machines/button.ogg', 100, 1)
/obj/machinery/button/windowtint/multitint
name = "tint control"
desc = "A remote control switch for polarized windows and doors."
/obj/machinery/button/windowtint/multitint/toggle_tint()
use_power(5)
active = !active
update_icon()
var/in_range = range(src,range)
for(var/obj/structure/window/reinforced/polarized/W in in_range)
if(W.id == src.id || !W.id)
spawn(0)
W.toggle()
for(var/obj/machinery/door/D in in_range)
if(D.icon_tinted)
if(D.id_tint == src.id || !D.id_tint)
spawn(0)
D.toggle()
+26
View File
@@ -0,0 +1,26 @@
/obj/machinery/computer/security/abductor
name = "camera uplink"
desc = "Used for hacking into camera networks"
icon = 'icons/obj/abductor.dmi'
icon_state = "camera"
network = list( "Mercenary",
"Cargo",
"Circuits",
"Civilian",
"Command",
"Engine",
"Engineering",
"Exploration",
"Medical",
"Mining Outpost",
"Outside",
"Research",
"Research Outpost",
"Robots",
"Security",
"Telecommunications",
"Tether",
"TalonShip",
"Entertainment",
"Communicators"
)
+12
View File
@@ -20,3 +20,15 @@
req_one_access = list()
normalspeed = FALSE // So it closes faster and hopefully keeps the warm air inside.
hackProof = TRUE //VOREStation Edit - No borgos
/obj/machinery/door/airlock/glass_security/polarized
name = "Electrochromic Security Airlock"
icon_tinted = 'icons/obj/doors/Doorsectinted_vr.dmi'
/obj/machinery/door/airlock/glass_medical/polarized
name = "Electrochromic Medical Airlock"
icon_tinted = 'icons/obj/doors/doormedtinted_vr.dmi'
/obj/machinery/door/airlock/glass_command/polarized
name = "Electrochormic Command Airlock"
icon_tinted = 'icons/obj/doors/Doorcomtinted_vr.dmi'
+28
View File
@@ -4,6 +4,9 @@
/obj/machinery/door
var/reinforcing = 0 //vorestation addition
var/tintable = 0
var/icon_tinted
var/id_tint
/obj/machinery/door/firedoor
heat_proof = 1
@@ -102,4 +105,29 @@
/obj/machinery/door/blast/regular/
heat_proof = 1 //just so repairing them doesn't try to fireproof something that never takes fire damage
/obj/machinery/door/proc/toggle()
if(glass)
icon = icon_tinted
glass = 0
if(!operating && density)
set_opacity(1)
else
icon = initial(icon)
glass = 1
if(!operating)
set_opacity(0)
/obj/machinery/button/windowtint/doortint
name = "door tint control"
desc = "A remote control switch for polarized glass doors."
/obj/machinery/button/windowtint/doortint/toggle_tint()
use_power(5)
active = !active
update_icon()
for(var/obj/machinery/door/D in range(src,range))
if(D.icon_tinted && (D.id_tint == src.id || !D.id_tint))
spawn(0)
D.toggle()
return
@@ -0,0 +1,22 @@
/obj/machinery/door/airlock/multi_tile/glass/polarized
name = "Electrochromic Glass Airlock"
icon_tinted = 'icons/obj/doors/Door2x1tinted_vr.dmi'
/obj/machinery/door/airlock/multi_tile/glass/polarized/New()
..()
create_fillers()
/obj/machinery/door/airlock/multi_tile/glass/polarized/toggle()
. = ..()
if(!operating)
if(filler1)
filler1.set_opacity(opacity)
if(filler2)
filler2.set_opacity(opacity)
/obj/machinery/door/airlock/multi_tile/glass/polarized/close()
. = ..()
if(filler1)
filler1.set_opacity(!glass)
if(filler2)
filler2.set_opacity(!glass)
+7 -5
View File
@@ -327,7 +327,10 @@ Class Procs:
return 0
if(!component_parts)
return 0
if(panel_open)
to_chat(user, "<span class='notice'>Following parts detected in [src]:</span>")
for(var/obj/item/C in component_parts)
to_chat(user, "<span class='notice'> [C.name]</span>")
if(panel_open || !R.panel_req)
var/obj/item/weapon/circuitboard/CB = circuit
var/P
for(var/obj/item/weapon/stock_parts/A in component_parts)
@@ -347,10 +350,6 @@ Class Procs:
break
update_icon()
RefreshParts()
else
to_chat(user, "<span class='notice'>Following parts detected in the machine:</span>")
for(var/var/obj/item/C in component_parts) //var/var/obj/item/C?
to_chat(user, "<span class='notice'> [C.name]</span>")
return 1
// Default behavior for wrenching down machines. Supports both delay and instant modes.
@@ -426,6 +425,9 @@ Class Procs:
/obj/machinery/proc/dismantle()
playsound(src, 'sound/items/Crowbar.ogg', 50, 1)
for(var/obj/I in contents)
if(istype(I,/obj/item/weapon/card/id))
I.forceMove(src.loc)
//TFF 3/6/19 - port Cit RP fix of infinite frames. If it doesn't have a circuit board, don't create a frame. Return a smack instead. BONK!
if(!circuit)
return 0
+36 -17
View File
@@ -87,25 +87,44 @@
else if(ishuman(occupant))
var/mob/living/carbon/human/H = occupant
// In case they somehow end up with positive values for otherwise unobtainable damage...
if(H.getToxLoss() > 0)
H.adjustToxLoss(-(rand(1,3)))
if(H.getOxyLoss() > 0)
H.adjustOxyLoss(-(rand(1,3)))
if(H.getCloneLoss() > 0)
H.adjustCloneLoss(-(rand(1,3)))
if(H.getBrainLoss() > 0)
H.adjustBrainLoss(-(rand(1,3)))
if(H.isSynthetic())
// In case they somehow end up with positive values for otherwise unobtainable damage...
if(H.getToxLoss() > 0)
H.adjustToxLoss(-(rand(1,3)))
if(H.getOxyLoss() > 0)
H.adjustOxyLoss(-(rand(1,3)))
if(H.getCloneLoss() > 0)
H.adjustCloneLoss(-(rand(1,3)))
if(H.getBrainLoss() > 0)
H.adjustBrainLoss(-(rand(1,3)))
// Also recharge their internal battery.
if(H.isSynthetic() && H.nutrition < 500) //VOREStation Edit
H.nutrition = min(H.nutrition+10, 500) //VOREStation Edit
cell.use(7000/450*10)
// Also recharge their internal battery.
if(H.isSynthetic() && H.nutrition < 500) //VOREStation Edit
H.nutrition = min(H.nutrition+10, 500) //VOREStation Edit
cell.use(7000/450*10)
// And clear up radiation
if(H.radiation > 0)
H.radiation = max(H.radiation - rand(5, 15), 0)
// And clear up radiation
if(H.radiation > 0)
H.radiation = max(H.radiation - rand(5, 15), 0)
if(H.wearing_rig) // stepping into a borg charger to charge your rig and fix your shit
var/obj/item/weapon/rig/wornrig = H.get_rig()
if(wornrig) // just to make sure
for(var/obj/item/rig_module/storedmod in wornrig.installed_modules)
if(weld_rate && storedmod.damage && cell.checked_use(weld_power_use * weld_rate * CELLRATE))
to_chat(H, "<span class='notice'>[storedmod] is repaired!</span>")
storedmod.damage = 0
if(wornrig.chest)
var/obj/item/clothing/suit/space/rig/rigchest = wornrig.chest
if(weld_rate && rigchest.damage && cell.checked_use(weld_power_use * weld_rate * CELLRATE))
rigchest.breaches = list()
rigchest.calc_breach_damage()
to_chat(H, "<span class='notice'>[rigchest] is repaired!</span>")
if(wornrig.cell)
var/obj/item/weapon/cell/rigcell = wornrig.cell
var/diff = min(rigcell.maxcharge - rigcell.charge, charging_power * CELLRATE) // Capped by charging_power / tick
var/charge_used = cell.use(diff)
rigcell.give(charge_used)
/obj/machinery/recharge_station/examine(mob/user)
. = ..()
@@ -237,7 +256,7 @@
else if(istype(L, /mob/living/carbon/human))
var/mob/living/carbon/human/H = L
if(H.isSynthetic())
if(H.isSynthetic() || H.wearing_rig)
add_fingerprint(H)
H.reset_view(src)
H.forceMove(src)
+4 -2
View File
@@ -233,17 +233,19 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
if(is_freq_listening(signal)) // detect subspace signals
signal.data["done"] = 1 // mark the signal as being broadcasted
//signal.data["done"] = 1 // mark the signal as being broadcasted since we're a broadcaster
signal.data["compression"] = 0
/*
// Search for the original signal and mark it as done as well
var/datum/signal/original = signal.data["original"]
if(original)
original.data["done"] = 1
*/
// For some reason level is both used as a list and not a list, and now it needs to be a list.
// Because this is a 'all in one' machine, we're gonna just cheat.
signal.data["level"] = using_map.contact_levels.Copy()
//signal.data["level"] = using_map.contact_levels.Copy()
if(signal.data["slow"] > 0)
sleep(signal.data["slow"]) // simulate the network lag if necessary
@@ -0,0 +1,46 @@
//ERT version with unlimited range (doesn't even check) and uses no power, to enable ert comms to work anywhere.
/obj/machinery/telecomms/allinone/ert
use_power = USE_POWER_OFF
idle_power_usage = 0
/obj/machinery/telecomms/allinone/ert/receive_signal(datum/signal/signal)
if(!on) // has to be on to receive messages
return
if(is_freq_listening(signal)) // detect subspace signals
//signal.data["done"] = 1 // mark the signal as being broadcasted since we're a broadcaster
signal.data["compression"] = 0
/*
// Search for the original signal and mark it as done as well
var/datum/signal/original = signal.data["original"]
if(original)
original.data["done"] = 1
*/
// For some reason level is both used as a list and not a list, and now it needs to be a list.
// Because this is a 'all in one' machine, we're gonna just cheat.
//signal.data["level"] = using_map.contact_levels.Copy()
if(signal.data["slow"] > 0)
sleep(signal.data["slow"]) // simulate the network lag if necessary
/* ###### Broadcast a message using signal.data ###### */
var/datum/radio_frequency/connection = signal.data["connection"]
var/list/forced_radios
for(var/weakref/wr in linked_radios_weakrefs)
var/obj/item/device/radio/R = wr.resolve()
if(istype(R))
LAZYDISTINCTADD(forced_radios, R)
if(connection.frequency in CENT_FREQS) // if ert broadcast, just
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], DATA_NORMAL,
signal.data["compression"], list(0), connection.frequency,
signal.data["verb"], forced_radios)
+176
View File
@@ -84,6 +84,158 @@
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/mysterysoup = 10)
vend_delay = 15
//Specific food vending machines for events that want them!
/obj/machinery/vending/fooditalian
name = "Italian Imports"
desc = "You wanted some italian food? Well here's some imported from the local pizza place!"
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza = 15,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza = 15,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita = 15,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza = 15,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pineapple = 15,
/obj/item/weapon/reagent_containers/food/snacks/pastatomato = 10,
/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti = 10,
/obj/item/weapon/reagent_containers/food/snacks/meatball = 15
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza = 1)
vend_delay = 10
/obj/machinery/vending/foodfast
name = "United Grills"
desc = "Not sure how they're united but man is this grilled food delicious! Though it seems to just be a lot of fast food..."
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/monkeyburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/cheeseburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/fishburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/clownburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/mimeburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/superbiteburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/burger/bacon = 10,
/obj/item/weapon/reagent_containers/food/snacks/hotdog = 10,
/obj/item/weapon/reagent_containers/food/snacks/chickenfillet = 10,
/obj/item/weapon/reagent_containers/food/snacks/fries = 10,
/obj/item/weapon/reagent_containers/food/snacks/cheesyfries = 10,
/obj/item/weapon/reagent_containers/food/snacks/chilicheesefries = 10
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/ghostburger = 3,
/obj/item/weapon/reagent_containers/food/snacks/tofuburger = 5)
vend_delay = 10
/obj/machinery/vending/foodmeat
name = "Meaty Marvels"
desc = "What's a marvel is how you're not ordering from this machine yet!"
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/ribplate = 15,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread = 15,
/obj/item/weapon/reagent_containers/food/snacks/meat_pocket = 15,
/obj/item/weapon/reagent_containers/food/snacks/meatpie = 15,
/obj/item/weapon/reagent_containers/food/snacks/bacon_flatbread = 15,
/obj/item/weapon/reagent_containers/food/snacks/roastbeef = 15,
/obj/item/weapon/reagent_containers/food/snacks/stuffed_meatball = 15,
/obj/item/weapon/reagent_containers/food/snacks/meatsteak = 20
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight = 5)
vend_delay = 10
/obj/machinery/vending/foodasian
name = "Authenticate Asian"
desc = "Some good ol' Sol food!"
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi = 10,
/obj/item/weapon/reagent_containers/food/snacks/chawanmushi = 10,
/obj/item/weapon/reagent_containers/food/snacks/generalschicken = 10,
/obj/item/weapon/reagent_containers/food/snacks/chickenkatsu = 10,
/obj/item/weapon/reagent_containers/food/snacks/sweet_and_sour = 10,
/obj/item/weapon/reagent_containers/food/snacks/bibimbap = 10,
/obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup = 10,
/obj/item/weapon/reagent_containers/food/snacks/kitsuneudon = 10,
/obj/item/weapon/reagent_containers/food/snacks/milosoup = 10,
/obj/item/weapon/reagent_containers/food/snacks/lomein = 10,
/obj/item/weapon/reagent_containers/food/snacks/friedrice = 10
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/monkeyburger = 1)
vend_delay = 10
/obj/machinery/vending/foodfish
name = "Fishy Food"
desc = "Don't mind the name, this is 100% fish!"
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/grilled_carp = 10,
/obj/item/weapon/reagent_containers/food/snacks/kudzudonburi = 10,
/obj/item/weapon/reagent_containers/food/snacks/zestfish = 10,
/obj/item/weapon/reagent_containers/food/snacks/lobstercooked = 10,
/obj/item/weapon/reagent_containers/food/snacks/sashimi = 10,
/obj/item/weapon/reagent_containers/food/snacks/sharkmeatcooked = 10,
/obj/item/weapon/reagent_containers/food/snacks/sharkmeatdip = 10,
/obj/item/weapon/reagent_containers/food/snacks/sharkmeatcubes = 10,
/obj/item/weapon/reagent_containers/food/snacks/cuttlefishcooked = 10,
/obj/item/weapon/reagent_containers/food/snacks/monkfishcooked = 10
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/monkfish = 1)
vend_delay = 10
/obj/machinery/vending/foodveggie
name = "Veggie Varieties"
desc = "Even vegitarians have their own vending machines! How thoughtful."
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/beetsoup = 10,
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm = 10,
/obj/item/weapon/reagent_containers/food/snacks/eggbowl = 10,
/obj/item/weapon/reagent_containers/food/snacks/flowerchildsalad = 15,
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad = 15,
/obj/item/weapon/reagent_containers/food/snacks/fruitsalad = 15,
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese = 10,
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat = 10,
/obj/item/weapon/reagent_containers/food/snacks/tofurkey = 10,
/obj/item/weapon/reagent_containers/food/snacks/stuffing = 10
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/meatsteak = 1)
vend_delay = 10
/obj/machinery/vending/fooddessert
name = "Delightful Desserts"
desc = "Even if you've stuffed your face with a pizza or two, you ALWAYS have room for dessert!"
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/applepie = 10,
/obj/item/weapon/reagent_containers/food/snacks/cherrypie = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/keylimepie = 10,
/obj/item/weapon/reagent_containers/food/snacks/pie = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie = 10,
/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis = 10,
/obj/item/weapon/reagent_containers/food/snacks/funnelcake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake = 10,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/peanutcake = 10,
/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich = 15,
/obj/item/weapon/reagent_containers/food/snacks/cookie = 15,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/brownies = 10,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 10,
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece = 20
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/donut/chaos = 10)
vend_delay = 10
/obj/machinery/vending/foodstuffing
name = "Stuffing Site"
desc = "Is... is it just full of stuffing? No wait, there's turkey in there too."
icon_state = "hotfood"
products = list(/obj/item/weapon/reagent_containers/food/snacks/stuffing = 50,
/obj/item/weapon/reagent_containers/food/snacks/sliceable/turkey= 20
)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/tofurkey = 10)
vend_delay = 10
//End of food event machines
/* For later, then
/obj/machinery/vending/weapon_machine
name = "Frozen Star Guns&Ammo"
@@ -1456,6 +1608,30 @@
req_log_access = access_cmo
has_logs = 1
/obj/machinery/vending/abductor
name = "Abduct-U"
desc = "A mysterious machine which can fabricate many tools for acquiring test subjects."
icon = 'icons/obj/abductor_vr.dmi'
icon_state = "dispenser_2way"
products = list(/obj/item/weapon/card/id/syndicate/station_access = 1,
/obj/item/weapon/storage/box/syndie_kit/chameleon = 1,
/obj/item/clothing/mask/bandana = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/device/radio/headset/syndicate/alt = 1,
/obj/item/device/pda = 1,
/obj/item/device/communicator = 1,
/obj/item/weapon/tape_roll = 2,
/obj/item/weapon/handcuffs = 4,
/obj/item/weapon/handcuffs/legcuffs = 4,
/obj/item/weapon/cell/device/weapon/recharge/alien = 2,
/obj/item/device/chameleon = 1,
/obj/item/weapon/storage/mre/menu11 = 2,
/obj/item/device/flash = 2,
/obj/item/weapon/pen/reagent/paralysis = 4,
/obj/item/device/perfect_tele/alien = 1
)
vend_delay = 15
/obj/machinery/vending/loadout
name = "Fingers and Toes"
desc = "A special vendor for gloves and shoes!"
+9
View File
@@ -942,3 +942,12 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
/obj/item/proc/openTip(location, control, params, user)
openToolTip(user, src, params, title = name, content = desc)
// These procs are for RPEDs and part ratings. The concept for this was borrowed from /vg/station.
// Gets the rating of the item, used in stuff like machine construction.
/obj/item/proc/get_rating()
return FALSE
// Like the above, but used for RPED sorting of parts.
/obj/item/proc/rped_rating()
return get_rating()
@@ -92,11 +92,11 @@
else
return ..()
/obj/item/device/perfect_tele/proc/unload_ammo(mob/user)
/obj/item/device/perfect_tele/proc/unload_ammo(mob/user, var/ignore_inactive_hand_check = 0)
if(battery_lock)
to_chat(user,"<span class='notice'>[src] does not have a battery port.</span>")
return
if(user.get_inactive_hand() == src && power_source)
if((user.get_inactive_hand() == src || ignore_inactive_hand_check) && power_source)
to_chat(user,"<span class='notice'>You eject \the [power_source] from \the [src].</span>")
user.put_in_hands(power_source)
power_source = null
@@ -111,7 +111,7 @@
return FALSE
return TRUE
/obj/item/device/perfect_tele/attack_self(mob/user)
/obj/item/device/perfect_tele/attack_self(mob/user, var/radial_menu_anchor = src)
if(loc_network)
for(var/obj/item/device/perfect_tele_beacon/stationary/nb in premade_tele_beacons)
if(nb.tele_network == loc_network)
@@ -124,8 +124,7 @@
and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \
going to use this device for ERP purposes. This device records all warnings given and teleport events for \
admin review in case of pref-breaking, so just don't do it.","OOC WARNING")
var/choice = show_radial_menu(user, src, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
var/choice = show_radial_menu(user, radial_menu_anchor, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
if(!choice)
return
@@ -281,7 +280,7 @@
//Seems okay to me!
return TRUE
/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity)
/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity, var/ignore_fail_chance = 0)
//No, you can't teleport people from over there.
if(!proximity)
return
@@ -312,11 +311,12 @@
R.force_dismount(rider)
//Failure chance
if(prob(failure_chance) && beacons.len >= 2)
var/list/wrong_choices = beacons - destination.tele_name
var/wrong_name = pick(wrong_choices)
destination = beacons[wrong_name]
to_chat(user,"<span class='warning'>\The [src] malfunctions and sends you to the wrong beacon!</span>")
if (!ignore_fail_chance)
if(prob(failure_chance) && beacons.len >= 2)
var/list/wrong_choices = beacons - destination.tele_name
var/wrong_name = pick(wrong_choices)
destination = beacons[wrong_name]
to_chat(user,"<span class='warning'>\The [src] malfunctions and sends you to the wrong beacon!</span>")
//Destination beacon vore checking
var/turf/dT = get_turf(destination)
@@ -83,6 +83,30 @@
icon = 'icons/mob/alien.dmi'
icon_state = "weed_extract"
//Step one - dehairing.
/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(has_edge(W) || is_sharp(W))
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
user.visible_message("<span class='notice'>\The [user] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
if(do_after(user,50))
to_chat(user, "<span class='notice'>You cut the hair from this [src.singular_name]</span>")
//Try locating an exisitng stack on the tile and add to there if possible
for(var/obj/item/stack/hairlesshide/HS in user.loc)
if(HS.amount < 50 && istype(HS, process_type))
HS.amount++
src.use(1)
return
//If it gets to here it means it did not find a suitable stack on the tile.
var/obj/item/stack/HS = new process_type(usr.loc)
if(istype(HS))
HS.amount = 1
src.use(1)
else
..()
//Step two - washing..... it's actually in washing machine code, and ere.
/obj/item/stack/hairlesshide
name = "hairless hide"
desc = "This hide was stripped of it's hair, but still needs tanning."
@@ -106,6 +130,19 @@
return
/obj/item/stack/hairlesshide/proc/rapidcure(var/stacknum = 1)
stacknum = min(stacknum, amount)
while(stacknum)
var/obj/item/stack/wetleather/I = new wet_type(get_turf(src))
if(istype(I))
I.dry()
use(1)
stacknum -= 1
//Step three - drying
/obj/item/stack/wetleather
name = "wet leather"
desc = "This leather has been cleaned but still needs to be dried."
@@ -119,31 +156,6 @@
var/dry_type = /obj/item/stack/material/leather
//Step one - dehairing.
/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(has_edge(W) || is_sharp(W))
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
usr.visible_message("<span class='notice'>\The [usr] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
if(do_after(user,50))
to_chat(usr, "<span class='notice'>You cut the hair from this [src.singular_name]</span>")
//Try locating an exisitng stack on the tile and add to there if possible
for(var/obj/item/stack/hairlesshide/HS in usr.loc)
if(HS.amount < 50 && istype(HS, process_type))
HS.amount++
src.use(1)
return
//If it gets to here it means it did not find a suitable stack on the tile.
var/obj/item/stack/HS = new process_type(usr.loc)
if(istype(HS))
HS.amount = 1
src.use(1)
else
..()
//Step two - washing..... it's actually in washing machine code.
//Step three - drying
/obj/item/stack/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
if(exposed_temperature >= drying_threshold_temperature)
+14 -5
View File
@@ -6,12 +6,12 @@
*/
/*
* Banana Peals
* Banana Peels
*/
/obj/item/weapon/bananapeel/Crossed(atom/movable/AM as mob|obj)
if(AM.is_incorporeal())
return
if (istype(AM, /mob/living))
if(istype(AM, /mob/living))
var/mob/living/M = AM
M.slip("the [src.name]",4)
/*
@@ -28,7 +28,7 @@
/obj/item/weapon/soap/Crossed(atom/movable/AM as mob|obj)
if(AM.is_incorporeal())
return
if (istype(AM, /mob/living))
if(istype(AM, /mob/living))
var/mob/living/M = AM
M.slip("the [src.name]",3)
@@ -68,11 +68,20 @@
/*
* Bike Horns
*/
/obj/item/weapon/bikehorn
var/honk_sound = 'sound/items/bikehorn.ogg'
/obj/item/weapon/bikehorn/attack_self(mob/user as mob)
if (spam_flag == 0)
if(spam_flag == 0)
spam_flag = 1
playsound(src, 'sound/items/bikehorn.ogg', 50, 1)
playsound(src, honk_sound, 50, 1)
src.add_fingerprint(user)
spawn(20)
spam_flag = 0
return
/obj/item/weapon/bikehorn/Crossed(atom/movable/AM as mob|obj)
if(AM.is_incorporeal())
return
if(istype(AM, /mob/living))
playsound(src, honk_sound, 50, 1)
@@ -124,7 +124,7 @@
to_chat(user, "<span class='notice'>You fill the [src].</span>")
else if(!silent)
to_chat(user, "<span class='notice'>You fail to pick anything up with \the [src].</span>")
if(istype(user.pulling, /obj/structure/ore_box/)) //Bit of a crappy way to do this, as it doubles spam for the user, but it works.
if(istype(user.pulling, /obj/structure/ore_box)) //Bit of a crappy way to do this, as it doubles spam for the user, but it works.
var/obj/structure/ore_box/O = user.pulling
O.attackby(src, user)
@@ -523,9 +523,11 @@
if(((!(ishuman(usr) || isrobot(usr))) && (src.loc != usr)) || usr.stat || usr.restrained())
return
drop_contents()
var/turf/T = get_turf(src)
/obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs
hide_from(usr)
var/turf/T = get_turf(src)
for(var/obj/item/I in contents)
remove_from_storage(I, T)
+4 -4
View File
@@ -133,13 +133,13 @@
return FALSE
if(istype(consumed_fuel, /obj/item/stack/material/log))
next_fuel_consumption = world.time + 2 MINUTES
next_fuel_consumption = world.time + 6 MINUTES //VOREStation Edit
qdel(consumed_fuel)
update_icon()
return TRUE
else if(istype(consumed_fuel, /obj/item/stack/material/wood)) // One log makes two planks of wood.
next_fuel_consumption = world.time + 1 MINUTE
next_fuel_consumption = world.time + 3 MINUTE //VOREStation Edit
qdel(consumed_fuel)
update_icon()
return TRUE
@@ -330,13 +330,13 @@
return FALSE
if(istype(consumed_fuel, /obj/item/stack/material/log))
next_fuel_consumption = world.time + 2 MINUTES
next_fuel_consumption = world.time + 6 MINUTES //VOREStation Edit
qdel(consumed_fuel)
update_icon()
return TRUE
else if(istype(consumed_fuel, /obj/item/stack/material/wood)) // One log makes two planks of wood.
next_fuel_consumption = world.time + 1 MINUTE
next_fuel_consumption = world.time + 3 MINUTES //VOREStation Edit
qdel(consumed_fuel)
update_icon()
return TRUE
@@ -8,9 +8,10 @@
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper_1"
icon_state_opened = "sleeper_0"
density = TRUE
density = FALSE
ghost_query_type = /datum/ghost_query/stowaway
anchored = FALSE
anchored = TRUE
invisibility = 60
var/occupant_type = "stowaway"
@@ -123,7 +124,9 @@
if(allow_appearance_change)
H.change_appearance(APPEARANCE_ALL, H, check_species_whitelist = 1)
visible_message("<span class='aliem'>\The [src] [pick("gurgles", "seizes", "clangs")] before releasing \the [H]!</span>")
// visible_message("<span class='aliem'>\The [src] [pick("gurgles", "seizes", "clangs")] before releasing \the [H]!</span>")
qdel(src)
// Manual Variant
// This one lacks the emag option due to the fact someone has to activate it, and they will probably help the person.
@@ -10,4 +10,8 @@
desc = "This seems to be a container for something."
icon = 'icons/obj/abductor_vr.dmi'
icon_state = "experiment"
interaction_message = "<span class='warning'>You don't see any mechanism to open this thing. Probably for the best.</span>"
interaction_message = "<span class='warning'>You don't see any mechanism to open this thing. Probably for the best.</span>"
/obj/structure/prop/alien/dispenser/twoway
icon = 'icons/obj/abductor_vr.dmi'
icon_state = "dispenser_2way"
+5
View File
@@ -0,0 +1,5 @@
/obj/structure/sign/itg
icon = 'icons/obj/decals_vr.dmi'
name = "\improper ITG"
desc = "A polished metal sign which reads 'Ironcrest Transport Group'."
icon_state = "itg"
@@ -451,6 +451,7 @@
busy = 0
O.clean_blood()
O.water_act(rand(1,10))
user.visible_message( \
"<span class='notice'>[user] washes \a [I] using \the [src].</span>", \
"<span class='notice'>You wash \a [I] using \the [src].</span>")
@@ -129,4 +129,7 @@
/obj/effect/floor_decal/emblem/talon_big
icon_state = "talon_big"
/obj/effect/floor_decal/emblem/talon_big/center
icon_state = "talon_center"
icon_state = "talon_center"
/obj/effect/floor_decal/emblem/itgdauntless
icon_state = "itgdauntless"
+8 -1
View File
@@ -16,4 +16,11 @@
name = "flesh"
desc = "This slick flesh ripples and squishes under your touch"
icon = 'icons/turf/stomach_vr.dmi'
icon_base = "flesh_floor"
icon_base = "flesh_floor"
/decl/flooring/grass/outdoors
flags = TURF_REMOVE_SHOVEL
/decl/flooring/grass/outdoors/forest
icon = 'icons/turf/outdoors.dmi'
icon_base = "grass-dark"
@@ -12,6 +12,11 @@
light_power = 0.8
light_color = "#66ffff" // Bright cyan.
/turf/simulated/shuttle/floor/alienplating/vacuum
oxygen = 0
nitrogen = 0
temperature = TCMB
/turf/simulated/floor/flesh
name = "flesh"
desc = "This slick flesh ripples and squishes under your touch"
@@ -83,3 +88,4 @@
desc = "It is entirely made of sick, gurgling flesh. It is releasing a sickly odour."
icon_state = "bloodfloor_2"
icon = 'icons/goonstation/turf/meatland.dmi'
+3 -1
View File
@@ -6,7 +6,7 @@ var/list/grass_types = list(
name = "grass"
icon_state = "grass0"
edge_blending_priority = 4
initial_flooring = /decl/flooring/grass
initial_flooring = /decl/flooring/grass/outdoors // VOREStation Edit
turf_layers = list(
/turf/simulated/floor/outdoors/rocks,
/turf/simulated/floor/outdoors/dirt
@@ -81,6 +81,7 @@ var/list/grass_types = list(
grass_chance = 80
//tree_chance = 20
edge_blending_priority = 5
initial_flooring = /decl/flooring/grass/outdoors/forest // VOREStation Edit
/turf/simulated/floor/outdoors/grass/sif/forest
name = "thick growth"
@@ -94,3 +95,4 @@ var/list/grass_types = list(
/obj/structure/flora/sif/eyes = 5,
/obj/structure/flora/sif/tendrils = 30
)
@@ -15,6 +15,18 @@
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/eyes/blindfold
display_name = "blindfold"
path = /obj/item/clothing/glasses/sunglasses/blindfold
/datum/gear/eyes/whiteblindfold //I may have lost my sight, but at least these folks can see my RAINBOW BLINDFOLD
display_name = "blindfold, white (recolorable)"
path = /obj/item/clothing/glasses/sunglasses/blindfold/whiteblindfold
/datum/gear/eyes/whiteblindfold/New()
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/eyes/glasses
display_name = "Glasses, prescription"
path = /obj/item/clothing/glasses/regular
@@ -88,6 +88,13 @@
ckeywhitelist = list("arokha")
character_name = list("Aronai Sieyes")
/datum/gear/fluff/astraether_ritualknife
path = /obj/item/weapon/material/knife/ritual
display_name = "Astra's Ritual Knife"
description = "A well kept strange ritual knife, There is a small tag with the name 'Astra Ether' on it. They are probably looking for this."
ckeywhitelist = list("astraether")
character_name = list("Astra Ether")
/datum/gear/fluff/collar/azura
path = /obj/item/clothing/accessory/collar/azura
display_name = "collar, Azura"
@@ -745,6 +752,12 @@
character_name = list("Clara Mali")
cost = 1
/datum/gear/fluff/nikki_dorky_outfit
path = /obj/item/weapon/storage/box/fluff
display_name = "Nikki's Witchy Outfit"
ckeywhitelist = list("ryumi")
character_name = list("Nikki Yumeno")
// S CKEYS
/datum/gear/fluff/brynhild_medal
path = /obj/item/clothing/accessory/medal/silver/valor
@@ -66,4 +66,9 @@
/datum/gear/suit/roles/medical/paramedic_vest
display_name = "paramedic vest"
path = /obj/item/clothing/suit/storage/toggle/paramedic
allowed_roles = list("Chief Medical Officer","Paramedic","Medical Doctor")
allowed_roles = list("Chief Medical Officer","Paramedic","Medical Doctor")
//greek thing
/datum/gear/suit/chiton
display_name = "chiton"
path = /obj/item/clothing/suit/chiton
@@ -40,6 +40,15 @@
path = /obj/item/clothing/under/rank/khi/sci
allowed_roles = list("Research Director", "Scientist", "Roboticist", "Xenobiologist", "Xenobotanist", "Pathfinder", "Explorer")
/datum/gear/uniform/job_khi/crg
display_name = "khi uniform, cargo"
path = /obj/item/clothing/under/rank/khi/crg
allowed_roles = list("Quartermaster", "Cargo Technician", "Shaft Miner")
/datum/gear/uniform/job_khi/civ
display_name = "khi uniform, civ"
path = /obj/item/clothing/under/rank/khi/civ
//Federation jackets
/datum/gear/suit/job_fed/sec
display_name = "fed uniform, sec"
@@ -166,36 +166,41 @@
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/uniform/dept/undercoat/cap
display_name = "facility director undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/cap
allowed_roles = list("Facility Director")
/datum/gear/uniform/dept/undercoat/hop
display_name = "head of personnel undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/hop
allowed_roles = list("Head of Personnel")
/datum/gear/uniform/dept/undercoat/rd
display_name = "research director undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/rd
allowed_roles = list("Research Director")
/datum/gear/uniform/dept/undercoat/hos
display_name = "head of security undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/hos
allowed_roles = list("Head of Security")
/datum/gear/uniform/dept/undercoat/ce
display_name = "chief engineer undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/ce
allowed_roles = list("Chief Engineer")
/datum/gear/uniform/dept/undercoat/ce_w
display_name = "chief engineer undercoat - white (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/ce_w
allowed_roles = list("Chief Engineer")
/datum/gear/uniform/dept/undercoat/cmo
display_name = "chief medical officer undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/cmo
allowed_roles = list("Chief Medical Officer")
/datum/gear/uniform/dept/undercoat/qm
display_name = "quartermaster undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/qm
allowed_roles = list("Quartermaster")
/datum/gear/uniform/dept/undercoat/command
display_name = "command undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/command
allowed_roles = list("Site Manager","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director")
/datum/gear/uniform/dept/undercoat/command_g
display_name = "command undercoat - gold buttons (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/command_g
allowed_roles = list("Site Manager","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director")
/datum/gear/uniform/dept/undercoat/cmo
display_name = "chief medical officer undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/cmo
allowed_roles = list("Chief Medical Officer")
/datum/gear/uniform/dept/undercoat/cargo
display_name = "cargo undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/cargo
@@ -214,7 +219,7 @@
/datum/gear/uniform/dept/undercoat/service
display_name = "service undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/service
allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian")
allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian","Chaplain")
/datum/gear/uniform/dept/undercoat/engineer
display_name = "engineering undercoat (Teshari)"
@@ -234,122 +239,283 @@
/datum/gear/uniform/dept/undercoat/robo
display_name = "roboticist undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/robo
allowed_roles = list("Roboticist")
allowed_roles = list("Research Director","Roboticist")
/datum/gear/uniform/dept/undercoat/medical
display_name = "medical undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Paramedic","Geneticist","Psychiatrist")
/datum/gear/uniform/dept/undercoat/chemistry
display_name = "chemist undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/chemistry
allowed_roles = list("Chemist")
allowed_roles = list("Chief Medical Officer","Chemist")
/datum/gear/uniform/dept/undercoat/virology
display_name = "virologist undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/viro
allowed_roles = list("Medical Doctor")
allowed_roles = list("Chief Medical Officer","Medical Doctor")
/datum/gear/uniform/dept/undercoat/psych
display_name = "psychiatrist undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/psych
allowed_roles = list("Chief Medical Officer","Psychiatrist")
/datum/gear/uniform/dept/undercoat/paramedic
display_name = "paramedic undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/para
allowed_roles = list("Paramedic")
allowed_roles = list("Chief Medical Officer","Paramedic")
/datum/gear/uniform/dept/undercoat/iaa
display_name = "internal affairs undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/iaa
allowed_roles = list("Internal Affairs Agent")
/datum/gear/suit/dept/cloak/
/datum/gear/suit/dept/cloak
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/dept/cloak/cap
display_name = "facility director cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs
allowed_roles = list("Facility Director")
/datum/gear/suit/dept/cloak/hop
display_name = "head of personnel cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/hop
allowed_roles = list("Head of Personnel")
/datum/gear/suit/dept/cloak/rd
display_name = "research director cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/rd
allowed_roles = list("Research Director")
/datum/gear/suit/dept/cloak/hos
display_name = "head of security cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/hos
allowed_roles = list("Head of Security")
/datum/gear/suit/dept/cloak/hos/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/hos,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/hos))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/cloak/dept/ce
display_name = "chief engineer cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/ce
allowed_roles = list("Chief Engineer")
/datum/gear/suit/dept/cloak/qm
display_name = "quartermaster cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/qm
allowed_roles = list("Quartermaster")
/datum/gear/suit/dept/cloak/command
display_name = "command cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/command
allowed_roles = list("Site Manager","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director")
/datum/gear/suit/dept/cloak/ce/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/ce,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/ce))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/cmo
display_name = "chief medical officer cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/cmo
allowed_roles = list("Chief Medical Officer")
/datum/gear/suit/dept/cloak/cmo/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/cmo,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cmo))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/qm
display_name = "quartermaster cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/qm
allowed_roles = list("Chief Medical Officer")
/datum/gear/suit/dept/cloak/qm/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/qm,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/qm))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/cargo
display_name = "cargo cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/cargo
allowed_roles = list("Cargo Technician","Quartermaster","Shaft Miner")
allowed_roles = list("Quartermaster","Shaft Miner","Cargo Technician")
/datum/gear/suit/dept/cloak/cargo/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/cargo,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cargo))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/mining
display_name = "mining cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/mining
allowed_roles = list("Quartermaster","Shaft Miner")
/datum/gear/suit/dept/cloak/mining/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/mining,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/mining))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/security
display_name = "security cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/sec
allowed_roles = list("Head of Security","Detective","Warden","Security Officer",)
allowed_roles = list("Head of Security","Detective","Warden","Security Officer")
/datum/gear/suit/dept/cloak/security/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/sec,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/sec))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/service
display_name = "service cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/service
allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian")
allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian","Chaplain")
/datum/gear/suit/dept/cloak/service/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/service,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/service))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/engineer
display_name = "engineering cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/eningeer
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/engineer
allowed_roles = list("Chief Engineer","Station Engineer")
/datum/gear/suit/dept/cloak/engineer/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/engineer,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/engineer))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/atmos
display_name = "atmospherics cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/atmos
allowed_roles = list("Chief Engineer","Atmospheric Technician")
/datum/gear/suit/dept/cloak/atmos/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/atmos,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/atmos))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/research
display_name = "scientist cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/sci
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
allowed_roles = list("Research Director","Scientist","Roboticist","Xenobiologist")
/datum/gear/suit/dept/cloak/research/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/sci,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/sci))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/robo
display_name = "roboticist cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/robo
allowed_roles = list("Roboticist")
allowed_roles = list("Research Director","Roboticist")
/datum/gear/suit/dept/cloak/robo/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/robo,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/robo))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/medical
display_name = "medical cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/suit/dept/cloak/medical/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/medical,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/medical))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/chemistry
display_name = "chemist cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/chemistry
allowed_roles = list("Chemist")
/datum/gear/suit/dept/cloak/chemistry/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/chemistry,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/chemistry))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/virology
display_name = "virologist cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/viro
allowed_roles = list("Medical Doctor")
/datum/gear/suit/dept/cloak/virology/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/viro,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/viro))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/psych
display_name = "psychiatrist cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/psych
allowed_roles = list("Chief Medical Officer","Psychiatrist")
/datum/gear/suit/dept/cloak/paramedic
display_name = "paramedic cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/para
allowed_roles = list("Paramedic")
allowed_roles = list("Chief Medical Officer","Paramedic")
/datum/gear/suit/dept/cloak/paramedic/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/para,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/para))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/iaa
display_name = "internal affairs cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa
allowed_roles = list("Internal Affairs Agent")
/datum/gear/suit/dept/cloak/iaa/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/iaa))
var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/uniform/smockcolor
display_name = "smock, recolorable (Teshari)"
path = /obj/item/clothing/under/seromi/smock/white
@@ -360,6 +526,73 @@
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/beltcloak
display_name = "belted cloak selection (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/standard
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/beltcloak/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/beltcloak/standard))
var/obj/item/clothing/suit/storage/seromi/beltcloak/standard/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/beltcloak_color
display_name = "belted cloak, recolorable (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/standard/white_grey
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/beltcloak_color/New()
..()
gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/dept/beltcloak/wrdn
display_name = "warden belted cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/jobs/wrdn
allowed_roles = list("Head of Security","Warden")
/datum/gear/suit/dept/beltcloak/jani
display_name = "janitor belted cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/jobs/jani
allowed_roles = list("Janitor")
/datum/gear/suit/dept/beltcloak/cmd
display_name = "command belted cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/jobs/command
allowed_roles = list("Site Manager","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director")
/datum/gear/suit/cloak_hood
display_name = "hooded cloak selection (Teshari)"
path = /obj/item/clothing/suit/storage/hooded/teshari/standard
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/cloak_hood/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/hooded/teshari/standard))
var/obj/item/clothing/suit/storage/seromi/cloak/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/uniform/worksuit
display_name = "worksuit selection (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/standard/worksuit
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/uniform/worksuit/New()
..()
var/list/worksuits = list()
for(var/worksuit in typesof(/obj/item/clothing/under/seromi/undercoat/standard/worksuit))
var/obj/item/clothing/under/seromi/undercoat/standard/worksuit/worksuit_type = worksuit
worksuits[initial(worksuit_type.name)] = worksuit_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(worksuits))
/datum/gear/uniform/undercoatcolor
display_name = "undercoat, recolorable (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/standard/white_grey
@@ -96,385 +96,3 @@
display_name = "white wedding dress (Wolf/Horse-taur)"
path = /obj/item/clothing/suit/taur_dress/white
sort_category = "Xenowear"
//Net new alternate job undercoats.
/datum/gear/suit/dept/undercoat/cap
display_name = "facility director undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/cap_vr
allowed_roles = list("Site Manager")
/datum/gear/suit/dept/undercoat/psych
display_name = "psychiatrist undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/psych_vr
allowed_roles = list("Psychiatrist")
/datum/gear/suit/dept/undercoat/rd
display_name = "research director undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/rd_vr
allowed_roles = list("Research Director")
/datum/gear/suit/dept/undercoat/hos
display_name = "head of security undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/hos_vr
allowed_roles = list("Head of Security")
/datum/gear/suit/dept/undercoat/hop
display_name = "head of personnel undercoat (Teshari)"
path = /obj/item/clothing/under/seromi/undercoat/jobs/hop_vr
allowed_roles = list("Head of Personnel")
//Added to allow selection of alternate job undercoats.
./datum/gear/uniform/dept/undercoat/ce/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/qm/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/cmo/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/cargo/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/mining/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/security/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/service/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/engineer/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/atmos/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/research/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/robo/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/medical/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/chemistry/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/virology/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/paramedic/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
/datum/gear/uniform/dept/undercoat/iaa/New()
..()
var/list/undercoats = list()
for(var/undercoat in typesof(path))
var/obj/item/clothing/under/seromi/undercoat/jobs/undercoat_type = undercoat
undercoats[initial(undercoat_type.name)] = undercoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
//Net new alternate cloak sprites.
/datum/gear/suit/cloak_vr
display_name = "cloak selection (Teshari) (VR)"
path = /obj/item/clothing/suit/storage/teshari/cloak_vr/standard
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/cloak_vr/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/teshari/cloak_vr/standard))
var/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/cloak_vr_color
display_name = "cloak, recolorable (Teshari) (VR)"
path = /obj/item/clothing/suit/storage/teshari/cloak_vr/standard/white
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/cloak_vr_color/New()
..()
gear_tweaks += gear_tweak_free_color_choice
//Net new alternate job cloaks
/datum/gear/suit/dept/cloak/cap
display_name = "facility director cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/cap_vr
allowed_roles = list("Site Manager")
/datum/gear/suit/dept/cloak/psych
display_name = "psychiatrist cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/psych_vr
allowed_roles = list("Psychiatrist")
/datum/gear/suit/dept/cloak/rd
display_name = "research director cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/rd_vr
allowed_roles = list("Research Director")
/datum/gear/suit/dept/cloak/hos
display_name = "head of security cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/hos_vr
allowed_roles = list("Head of Security")
/datum/gear/suit/dept/cloak/hop
display_name = "head of personnel cloak (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/hop_vr
allowed_roles = list("Head of Personnel")
//Added to allow selection of alternate job cloaks.
/datum/gear/suit/dept/cloak/ce/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/qm/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/command/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/cmo/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/cargo/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/mining/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/security/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/service/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/engineer/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/atmos/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/research/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/robo/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/medical/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/chemistry/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/virology/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/paramedic/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/dept/cloak/iaa/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(path))
var/obj/item/clothing/suit/storage/seromi/cloak/jobs/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
//Added from CHOMP
/datum/gear/suit/cloak_hood
display_name = "hooded cloak selection (Teshari)"
path = /obj/item/clothing/suit/storage/hooded/teshari/standard
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/cloak_hood/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/hooded/teshari/standard))
var/obj/item/clothing/suit/storage/seromi/cloak/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/beltcloak
display_name = "belted cloak selection (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/standard
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/beltcloak/New()
..()
var/list/cloaks = list()
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/beltcloak/standard))
var/obj/item/clothing/suit/storage/seromi/beltcloak/standard/cloak_type = cloak
cloaks[initial(cloak_type.name)] = cloak_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
/datum/gear/suit/beltcloak_color
display_name = "belted cloak, recolorable (Teshari)"
path = /obj/item/clothing/suit/storage/seromi/beltcloak/standard/white_grey
whitelisted = SPECIES_TESHARI
sort_category = "Xenowear"
/datum/gear/suit/beltcloak_color/New()
..()
gear_tweaks += gear_tweak_free_color_choice
+5
View File
@@ -392,6 +392,11 @@ BLIND // can't see anything
drop_sound = 'sound/items/drop/gloves.ogg'
pickup_sound = 'sound/items/pickup/gloves.ogg'
/obj/item/clothing/glasses/sunglasses/blindfold/whiteblindfold
name = "white blindfold"
desc = "A white blindfold that covers the eyes, preventing sight."
icon_state = "blindfoldwhite"
/obj/item/clothing/glasses/sunglasses/blindfold/tape
name = "length of tape"
desc = "It's a robust DIY blindfold!"
@@ -0,0 +1,12 @@
/obj/item/rig_module/mounted/sizegun
icon = 'icons/obj/rig_modules.dmi'
icon_state = "sizegun"
name = "mounted size gun"
desc = "A size gun to be mounted on a rig suit. Features interface-based target size adjustment for hands-free size-altering shenanigans."
engage_string = "Select Size"
interface_name = "mounted sizegun"
interface_desc = "A wrist-mounted, hardsuit cell-powered, size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
gun_type = /obj/item/weapon/gun/energy/sizegun/mounted
+667 -69
View File
@@ -1,47 +1,23 @@
// Standard Cloaks
/obj/item/clothing/suit/storage/seromi/cloak
name = "broken cloak"
name = "black cloak"
desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside."
icon = 'icons/mob/species/seromi/teshari_cloak.dmi'
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
icon_state = "tesh_cloak_bo"
item_state = "tesh_cloak_bo"
icon_state = "tesh_cloak_bn"
item_state = "tesh_cloak_bn"
species_restricted = list(SPECIES_TESHARI)
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_orange
name = "black and orange cloak"
icon_state = "tesh_cloak_bo"
item_state = "tesh_cloak_bo"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_grey
name = "black and grey cloak"
icon_state = "tesh_cloak_bg"
item_state = "tesh_cloak_bg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_midgrey
name = "black and medium grey cloak"
icon_state = "tesh_cloak_bmg"
item_state = "tesh_cloak_bmg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_lightgrey
name = "black and light grey cloak"
icon_state = "tesh_cloak_blg"
item_state = "tesh_cloak_blg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_white
name = "black and white cloak"
icon_state = "tesh_cloak_bw"
item_state = "tesh_cloak_bw"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_red
name = "black and red cloak"
icon_state = "tesh_cloak_br"
item_state = "tesh_cloak_br"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black
name = "black cloak"
icon_state = "tesh_cloak_bn"
item_state = "tesh_cloak_bn"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_orange
name = "black and orange cloak"
icon_state = "tesh_cloak_bo"
item_state = "tesh_cloak_bo"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_yellow
name = "black and yellow cloak"
@@ -73,20 +49,20 @@
icon_state = "tesh_cloak_bbr"
item_state = "tesh_cloak_bbr"
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange_grey
name = "orange and grey cloak"
icon_state = "tesh_cloak_og"
item_state = "tesh_cloak_og"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_grey
name = "black and grey cloak"
icon_state = "tesh_cloak_bg"
item_state = "tesh_cloak_bg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow
name = "rainbow cloak"
icon_state = "tesh_cloak_rainbow"
item_state = "tesh_cloak_rainbow"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_white
name = "black and white cloak"
icon_state = "tesh_cloak_bw"
item_state = "tesh_cloak_bw"
/obj/item/clothing/suit/storage/seromi/cloak/standard/lightgrey_grey
name = "light grey and grey cloak"
icon_state = "tesh_cloak_lgg"
item_state = "tesh_cloak_lgg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/white
name = "white cloak"
icon_state = "tesh_cloak_wn"
item_state = "tesh_cloak_wn"
/obj/item/clothing/suit/storage/seromi/cloak/standard/white_grey
name = "white and grey cloak"
@@ -98,10 +74,10 @@
icon_state = "tesh_cloak_rg"
item_state = "tesh_cloak_rg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange
name = "orange cloak"
icon_state = "tesh_cloak_on"
item_state = "tesh_cloak_on"
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange_grey
name = "orange and grey cloak"
icon_state = "tesh_cloak_og"
item_state = "tesh_cloak_og"
/obj/item/clothing/suit/storage/seromi/cloak/standard/yellow_grey
name = "yellow and grey cloak"
@@ -133,10 +109,46 @@
icon_state = "tesh_cloak_brg"
item_state = "tesh_cloak_brg"
/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow
name = "rainbow cloak"
icon_state = "tesh_cloak_rainbow"
item_state = "tesh_cloak_rainbow"
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange
name = "orange cloak"
icon_state = "tesh_cloak_on"
item_state = "tesh_cloak_on"
/obj/item/clothing/suit/storage/seromi/cloak/standard/dark_retrowave
name = "dark aesthetic cloak"
icon_state = "tesh_cloak_dretrowave"
item_state = "tesh_cloak_dretrowave"
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_glow
name = "black and glowing cloak"
icon_state = "tesh_cloak_bglowing"
item_state = "tesh_cloak_bglowing"
// Job Cloaks
/obj/item/clothing/suit/storage/seromi/cloak/jobs
icon = 'icons/mob/species/seromi/deptcloak.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/cap
name = "facility director cloak"
desc = "A soft Teshari cloak made for the Facility Director"
icon_state = "tesh_cloak_cap"
item_state = "tesh_cloak_cap"
//Cargo
/obj/item/clothing/suit/storage/seromi/cloak/jobs/qm
name = "quartermaster cloak"
desc = "A soft Teshari cloak made for the Quartermaster"
icon_state = "tesh_cloak_qm"
item_state = "tesh_cloak_qm"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/cargo
name = "cargo cloak"
desc = "A soft Teshari cloak made for the Cargo department"
@@ -149,11 +161,7 @@
icon_state = "tesh_cloak_mine"
item_state = "tesh_cloak_mine"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/command
name = "command cloak"
desc = "A soft Teshari cloak made for the Command department"
icon_state = "tesh_cloak_comm"
item_state = "tesh_cloak_comm"
//Engineering
/obj/item/clothing/suit/storage/seromi/cloak/jobs/ce
name = "cheif engineer cloak"
@@ -161,7 +169,7 @@
icon_state = "tesh_cloak_ce"
item_state = "tesh_cloak_ce"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/eningeer
/obj/item/clothing/suit/storage/seromi/cloak/jobs/engineer
name = "engineering cloak"
desc = "A soft Teshari cloak made for the Engineering department"
icon_state = "tesh_cloak_engie"
@@ -173,6 +181,8 @@
icon_state = "tesh_cloak_atmos"
item_state = "tesh_cloak_atmos"
//Medical
/obj/item/clothing/suit/storage/seromi/cloak/jobs/cmo
name = "chief medical officer cloak"
desc = "A soft Teshari cloak made the Cheif Medical Officer"
@@ -203,6 +213,20 @@
icon_state = "tesh_cloak_para"
item_state = "tesh_cloak_para"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/psych
name = " psychiatrist cloak"
desc = "A soft Teshari cloak made for the Psychiatrist"
icon_state = "tesh_cloak_psych"
item_state = "tesh_cloak_psych"
//Science
/obj/item/clothing/suit/storage/seromi/cloak/jobs/rd
name = "research director cloak"
desc = "A soft Teshari cloak made for the Research Director"
icon_state = "tesh_cloak_rd"
item_state = "tesh_cloak_rd"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/sci
name = "scientist cloak"
desc = "A soft Teshari cloak made for the Science department"
@@ -215,34 +239,46 @@
icon_state = "tesh_cloak_robo"
item_state = "tesh_cloak_robo"
//Security
/obj/item/clothing/suit/storage/seromi/cloak/jobs/hos
name = "head of security cloak"
desc = "A soft Teshari cloak made for the Head of Security"
icon_state = "tesh_cloak_hos"
item_state = "tesh_cloak_hos"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/sec
name = "security cloak"
desc = "A soft Teshari cloak made for the Security department"
icon_state = "tesh_cloak_sec"
item_state = "tesh_cloak_sec"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/qm
name = "quartermaster cloak"
desc = "A soft Teshari cloak made for the Quartermaster"
icon_state = "tesh_cloak_qm"
item_state = "tesh_cloak_qm"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/service
name = "service cloak"
desc = "A soft Teshari cloak made for the Service department"
icon_state = "tesh_cloak_serv"
item_state = "tesh_cloak_serv"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa
name = "internal affairs cloak"
desc = "A soft Teshari cloak made for the Internal Affairs Agent"
icon_state = "tesh_cloak_iaa"
item_state = "tesh_cloak_iaa"
//Service
/obj/item/clothing/suit/storage/seromi/cloak/jobs/hop
name = "head of personnel cloak"
desc = "A soft Teshari cloak made for the Head of Personnel"
icon_state = "tesh_cloak_hop"
item_state = "tesh_cloak_hop"
/obj/item/clothing/suit/storage/seromi/cloak/jobs/service
name = "service cloak"
desc = "A soft Teshari cloak made for the Service department"
icon_state = "tesh_cloak_serv"
item_state = "tesh_cloak_serv"
//Misc
/obj/item/clothing/suit/storage/toggle/labcoat/teshari
name = "Teshari labcoat"
desc = "A small suit that protects against minor chemical spills. This one is a good fit on Teshari."
icon = 'icons/mob/species/seromi/suit.dmi'
icon = 'icons/obj/clothing/species/seromi/suits.dmi'
icon_override = 'icons/mob/species/seromi/suit.dmi'
icon_state = "tesh_labcoat"
species_restricted = list(SPECIES_TESHARI)
@@ -256,7 +292,6 @@
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
species_restricted = list(SPECIES_TESHARI)
/obj/item/clothing/suit/storage/toggle/tesharicoatwhite
name = "small coat"
desc = "A coat that seems too small to fit a human."
@@ -264,4 +299,567 @@
icon_override = 'icons/mob/species/seromi/suit.dmi'
icon_state = "tesharicoatwhite"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
species_restricted = list(SPECIES_TESHARI)
species_restricted = list(SPECIES_TESHARI)
//Hooded teshari cloaks
/obj/item/clothing/suit/storage/hooded/teshari
name = "Hooded Teshari Cloak"
desc = "A soft teshari cloak with an added hood."
icon_override = 'icons/mob/species/seromi/teshari_hood.dmi'
icon = 'icons/mob/species/seromi/teshari_hood.dmi'
icon_state = "tesh_hcloak_bo"
item_state_slots = list(slot_r_hand_str = "tesh_hcloak_bo", slot_l_hand_str = "tesh_hcloak_bo")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
flags_inv = HIDEHOLSTER|HIDETIE
//hooded = 1 Variable no longer exists, hood is now handled by code/modules/clothing/suit/storage/hooded.dm
action_button_name = "Toggle Cloak Hood"
hoodtype = /obj/item/clothing/head/tesh_hood
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
/obj/item/clothing/head/tesh_hood
name = "Cloak Hood"
desc = "A hood attached to a teshari cloak."
icon_override = 'icons/mob/species/seromi/teshari_hood.dmi'
icon = 'icons/mob/species/seromi/teshari_hood.dmi'
icon_state = "tesh_hood_bo"
item_state_slots = list(slot_r_hand_str = "tesh_hood_bo", slot_l_hand_str = "tesh_hood_bo")
flags_inv = BLOCKHAIR
body_parts_covered = HEAD
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_orange
name = "black and orange hooded cloak"
icon_state = "tesh_hcloak_bo"
item_state = "tesh_hcloak_bo"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_orange
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_grey
name = "black and grey hooded cloak"
icon_state = "tesh_hcloak_bg"
item_state = "tesh_hcloak_bg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_midgrey
name = "black and medium grey hooded cloak"
icon_state = "tesh_hcloak_bmg"
item_state = "tesh_hcloak_bmg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_midgrey
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_lightgrey
name = "black and light grey hooded cloak"
icon_state = "tesh_hcloak_blg"
item_state = "tesh_hcloak_blg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_lightgrey
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_white
name = "black and white hooded cloak"
icon_state = "tesh_hcloak_bw"
item_state = "tesh_hcloak_bw"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_white
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_red
name = "black and red hooded cloak"
icon_state = "tesh_hcloak_br"
item_state = "tesh_hcloak_br"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_red
/obj/item/clothing/suit/storage/hooded/teshari/standard/black
name = "black hooded cloak"
icon_state = "tesh_hcloak_bn"
item_state = "tesh_hcloak_bn"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_yellow
name = "black and yellow hooded cloak"
icon_state = "tesh_hcloak_by"
item_state = "tesh_hcloak_by"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_yellow
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_green
name = "black and green hooded cloak"
icon_state = "tesh_hcloak_bgr"
item_state = "tesh_hcloak_bgr"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_green
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_blue
name = "black and blue hooded cloak"
icon_state = "tesh_hcloak_bbl"
item_state = "tesh_hcloak_bbl"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_blue
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_purple
name = "black and purple hooded cloak"
icon_state = "tesh_hcloak_bp"
item_state = "tesh_hcloak_bp"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_purple
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_pink
name = "black and pink hooded cloak"
icon_state = "tesh_hcloak_bpi"
item_state = "tesh_hcloak_bpi"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_pink
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_brown
name = "black and brown hooded cloak"
icon_state = "tesh_hcloak_bbr"
item_state = "tesh_hcloak_bbr"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_brown
/obj/item/clothing/suit/storage/hooded/teshari/standard/orange_grey
name = "orange and grey hooded cloak"
icon_state = "tesh_hcloak_og"
item_state = "tesh_hcloak_og"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/orange_grey
///obj/item/clothing/suit/storage/hooded/teshari/standard/rainbow
// name = "rainbow hooded cloak"
// icon_state = "tesh_hcloak_rainbow"
// item_state = "tesh_hcloak_rainbow"
// hoodtype = /obj/item/clothing/head/tesh_hood/standard/rainbow
/obj/item/clothing/suit/storage/hooded/teshari/standard/lightgrey_grey
name = "light grey and grey hooded cloak"
icon_state = "tesh_hcloak_lgg"
item_state = "tesh_hcloak_lgg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/lightgrey_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/white_grey
name = "white and grey hooded cloak"
icon_state = "tesh_hcloak_wg"
item_state = "tesh_hcloak_wg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/white_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/red_grey
name = "red and grey hooded cloak"
icon_state = "tesh_hcloak_rg"
item_state = "tesh_hcloak_rg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/red_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/orange
name = "orange hooded cloak"
icon_state = "tesh_hcloak_on"
item_state = "tesh_hcloak_on"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/orange
/obj/item/clothing/suit/storage/hooded/teshari/standard/yellow_grey
name = "yellow and grey hooded cloak"
icon_state = "tesh_hcloak_yg"
item_state = "tesh_hcloak_yg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/yellow_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/green_grey
name = "green and grey hooded cloak"
icon_state = "tesh_hcloak_gg"
item_state = "tesh_hcloak_gg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/green_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/blue_grey
name = "blue and grey hooded cloak"
icon_state = "tesh_hcloak_blug"
item_state = "tesh_hcloak_blug"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/blue_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/purple_grey
name = "purple and grey hooded cloak"
icon_state = "tesh_hcloak_pg"
item_state = "tesh_hcloak_pg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/purple_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/pink_grey
name = "pink and grey hooded cloak"
icon_state = "tesh_hcloak_pig"
item_state = "tesh_hcloak_pig"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/pink_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/brown_grey
name = "brown and grey hooded cloak"
icon_state = "tesh_hcloak_brg"
item_state = "tesh_hcloak_brg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/brown_grey
//The actual hoods
/obj/item/clothing/head/tesh_hood/standard/black_orange
name = "black and orange cloak hood"
icon_state = "tesh_hood_bo"
item_state = "tesh_hood_bo"
/obj/item/clothing/head/tesh_hood/standard/black_grey
name = "black and grey cloak hood"
icon_state = "tesh_hood_bg"
item_state = "tesh_hood_bg"
/obj/item/clothing/head/tesh_hood/standard/black_midgrey
name = "black and medium grey cloak hood"
icon_state = "tesh_hood_bmg"
item_state = "tesh_hood_bmg"
/obj/item/clothing/head/tesh_hood/standard/black_lightgrey
name = "black and light grey cloak hood"
icon_state = "tesh_hood_blg"
item_state = "tesh_hood_blg"
/obj/item/clothing/head/tesh_hood/standard/black_white
name = "black and white cloak hood"
icon_state = "tesh_hood_bw"
item_state = "tesh_hood_bw"
/obj/item/clothing/head/tesh_hood/standard/black_red
name = "black and red cloak hood"
icon_state = "tesh_hood_br"
item_state = "tesh_hood_br"
/obj/item/clothing/head/tesh_hood/standard/black
name = "black cloak hood"
icon_state = "tesh_hood_bn"
item_state = "tesh_hood_bn"
/obj/item/clothing/head/tesh_hood/standard/black_yellow
name = "black and yellow cloak hood"
icon_state = "tesh_hood_by"
item_state = "tesh_hood_by"
/obj/item/clothing/head/tesh_hood/standard/black_green
name = "black and green cloak hood"
icon_state = "tesh_hood_bgr"
item_state = "tesh_hood_bgr"
/obj/item/clothing/head/tesh_hood/standard/black_blue
name = "black and blue cloak hood"
icon_state = "tesh_hood_bbl"
item_state = "tesh_hood_bbl"
/obj/item/clothing/head/tesh_hood/standard/black_purple
name = "black and purple cloak hood"
icon_state = "tesh_hood_bp"
item_state = "tesh_hood_bp"
/obj/item/clothing/head/tesh_hood/standard/black_pink
name = "black and pink cloak hood"
icon_state = "tesh_hood_bpi"
item_state = "tesh_hood_bpi"
/obj/item/clothing/head/tesh_hood/standard/black_brown
name = "black and brown cloak hood"
icon_state = "tesh_hood_bbr"
item_state = "tesh_hood_bbr"
/obj/item/clothing/head/tesh_hood/standard/orange_grey
name = "orange and grey cloak hood"
icon_state = "tesh_hood_og"
item_state = "tesh_hood_og"
/obj/item/clothing/head/tesh_hood/standard/rainbow
name = "rainbow cloak hood"
icon_state = "tesh_hood_rainbow"
item_state = "tesh_hood_rainbow"
/obj/item/clothing/head/tesh_hood/standard/lightgrey_grey
name = "light grey and grey cloak hood"
icon_state = "tesh_hood_lgg"
item_state = "tesh_hood_lgg"
/obj/item/clothing/head/tesh_hood/standard/white_grey
name = "white and grey cloak hood"
icon_state = "tesh_hood_wg"
item_state = "tesh_hood_wg"
/obj/item/clothing/head/tesh_hood/standard/red_grey
name = "red and grey cloak hood"
icon_state = "tesh_hood_rg"
item_state = "tesh_hood_rg"
/obj/item/clothing/head/tesh_hood/standard/orange
name = "orange cloak hood"
icon_state = "tesh_hood_on"
item_state = "tesh_hood_on"
/obj/item/clothing/head/tesh_hood/standard/yellow_grey
name = "yellow and grey cloak hood"
icon_state = "tesh_hood_yg"
item_state = "tesh_hood_yg"
/obj/item/clothing/head/tesh_hood/standard/green_grey
name = "green and grey cloak hood"
icon_state = "tesh_hood_gg"
item_state = "tesh_hood_gg"
/obj/item/clothing/head/tesh_hood/standard/blue_grey
name = "blue and grey cloak hood"
icon_state = "tesh_hood_blug"
item_state = "tesh_hood_blug"
/obj/item/clothing/head/tesh_hood/standard/purple_grey
name = "purple and grey cloak hood"
icon_state = "tesh_hood_pg"
item_state = "tesh_hood_pg"
/obj/item/clothing/head/tesh_hood/standard/pink_grey
name = "pink and grey cloak hood"
icon_state = "tesh_hood_pig"
item_state = "tesh_hood_pig"
/obj/item/clothing/head/tesh_hood/standard/brown_grey
name = "brown and grey cloak hood"
icon_state = "tesh_hood_brg"
item_state = "tesh_hood_brg"
//Belted cloaks
/obj/item/clothing/suit/storage/seromi/beltcloak
name = "belted cloak"
desc = "A more ridged and stylized Teshari cloak."
icon = 'icons/mob/species/seromi/teshari_cloak.dmi'
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
icon_state = "tesh_beltcloak_bo"
item_state = "tesh_beltcloak_bo"
species_restricted = list(SPECIES_TESHARI)
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_orange
name = "black belted cloak (orange)"
icon_state = "tesh_beltcloak_bo"
item_state = "tesh_beltcloak_bo"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_grey
name = "black belted cloak"
icon_state = "tesh_beltcloak_bg"
item_state = "tesh_beltcloak_bg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_midgrey
name = "black belted cloak (medium grey)"
icon_state = "tesh_beltcloak_bmg"
item_state = "tesh_beltcloak_bmg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_lightgrey
name = "black belted cloak (light grey)"
icon_state = "tesh_beltcloak_blg"
item_state = "tesh_beltcloak_blg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_white
name = "black belted cloak (white)"
icon_state = "tesh_beltcloak_bw"
item_state = "tesh_beltcloak_bw"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_red
name = "black belted cloak (red)"
icon_state = "tesh_beltcloak_br"
item_state = "tesh_beltcloak_br"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black
name = "black simple belted cloak"
icon_state = "tesh_beltcloak_bn"
item_state = "tesh_beltcloak_bn"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_yellow
name = "black belted cloak (yellow)"
icon_state = "tesh_beltcloak_by"
item_state = "tesh_beltcloak_by"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_green
name = "black belted cloak (green)"
icon_state = "tesh_beltcloak_bgr"
item_state = "tesh_beltcloak_bgr"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_blue
name = "black belted cloak (blue)"
icon_state = "tesh_beltcloak_bbl"
item_state = "tesh_beltcloak_bbl"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_purple
name = "black belted cloak (purple)"
icon_state = "tesh_beltcloak_bp"
item_state = "tesh_beltcloak_bp"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_pink
name = "black belted cloak (pink)"
icon_state = "tesh_beltcloak_bpi"
item_state = "tesh_beltcloak_bpi"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_brown
name = "black belted cloak (brown)"
icon_state = "tesh_beltcloak_bbr"
item_state = "tesh_beltcloak_bbr"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/orange_grey
name = "orange belted cloak"
icon_state = "tesh_beltcloak_og"
item_state = "tesh_beltcloak_og"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/rainbow
name = "rainbow belted cloak"
icon_state = "tesh_beltcloak_rainbow"
item_state = "tesh_beltcloak_rainbow"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/lightgrey_grey
name = "light grey belted cloak"
icon_state = "tesh_beltcloak_lgg"
item_state = "tesh_beltcloak_lgg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/white_grey
name = "white belted cloak"
icon_state = "tesh_beltcloak_wg"
item_state = "tesh_beltcloak_wg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/red_grey
name = "red belted cloak"
icon_state = "tesh_beltcloak_rg"
item_state = "tesh_beltcloak_rg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/orange
name = "orange simple belted cloak"
icon_state = "tesh_beltcloak_on"
item_state = "tesh_beltcloak_on"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/yellow_grey
name = "yellow belted cloak"
icon_state = "tesh_beltcloak_yg"
item_state = "tesh_beltcloak_yg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/green_grey
name = "green belted cloak"
icon_state = "tesh_beltcloak_gg"
item_state = "tesh_beltcloak_gg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/blue_grey
name = "blue belted cloak"
icon_state = "tesh_beltcloak_blug"
item_state = "tesh_beltcloak_blug"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/purple_grey
name = "purple belted cloak"
icon_state = "tesh_beltcloak_pg"
item_state = "tesh_beltcloak_pg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/pink_grey
name = "pink belted cloak"
icon_state = "tesh_beltcloak_pig"
item_state = "tesh_beltcloak_pig"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/brown_grey
name = "brown belted cloak"
icon_state = "tesh_beltcloak_brg"
item_state = "tesh_beltcloak_brg"
//Belted job cloaks
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs
icon = 'icons/mob/species/seromi/deptcloak.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak.dmi'
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cargo
name = "cargo belted cloak"
desc = "A soft Teshari cloak made for the Cargo department"
icon_state = "tesh_beltcloak_car"
item_state = "tesh_beltcloak_car"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/mining
name = "mining belted cloak"
desc = "A soft Teshari cloak made for Mining"
icon_state = "tesh_beltcloak_mine"
item_state = "tesh_beltcloak_mine"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/command
name = "command belted cloak"
desc = "A soft Teshari cloak made for the Command department"
icon_state = "tesh_beltcloak_comm"
item_state = "tesh_beltcloak_comm"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/ce
name = "chief engineer belted cloak"
desc = "A soft Teshari cloak made the Chief Engineer"
icon_state = "tesh_beltcloak_ce"
item_state = "tesh_beltcloak_ce"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/engineer
name = "engineering belted cloak"
desc = "A soft Teshari cloak made for the Engineering department"
icon_state = "tesh_beltcloak_engie"
item_state = "tesh_beltcloak_engie"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/atmos
name = "atmospherics belted cloak"
desc = "A soft Teshari cloak made for the Atmospheric Technician"
icon_state = "tesh_beltcloak_atmos"
item_state = "tesh_beltcloak_atmos"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cmo
name = "chief medical officer belted cloak"
desc = "A soft Teshari cloak made the Chief Medical Officer"
icon_state = "tesh_beltcloak_cmo"
item_state = "tesh_beltcloak_cmo"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/medical
name = "medical belted cloak"
desc = "A soft Teshari cloak made for the Medical department"
icon_state = "tesh_beltcloak_doc"
item_state = "tesh_beltcloak_doc"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/chemistry
name = "chemist belted cloak"
desc = "A soft Teshari cloak made for the Chemist"
icon_state = "tesh_beltcloak_vrem"
item_state = "tesh_beltcloak_vrem"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/viro
name = "virologist belted cloak"
desc = "A soft Teshari cloak made for the Virologist"
icon_state = "tesh_beltcloak_viro"
item_state = "tesh_beltcloak_viro"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/para
name = "paramedic belted cloak"
desc = "A soft Teshari cloak made for the Paramedic"
icon_state = "tesh_beltcloak_para"
item_state = "tesh_beltcloak_para"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/sci
name = "scientist belted cloak"
desc = "A soft Teshari cloak made for the Science department"
icon_state = "tesh_beltcloak_sci"
item_state = "tesh_beltcloak_sci"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/robo
name = "roboticist belted cloak"
desc = "A soft Teshari cloak made for the Roboticist"
icon_state = "tesh_beltcloak_robo"
item_state = "tesh_beltcloak_robo"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/sec
name = "security belted cloak"
desc = "A soft Teshari cloak made for the Security department"
icon_state = "tesh_beltcloak_sec"
item_state = "tesh_beltcloak_sec"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/qm
name = "quartermaster belted cloak"
desc = "A soft Teshari cloak made for the Quartermaster"
icon_state = "tesh_beltcloak_qm"
item_state = "tesh_beltcloak_qm"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/service
name = "service belted cloak"
desc = "A soft Teshari cloak made for the Service department"
icon_state = "tesh_beltcloak_serv"
item_state = "tesh_beltcloak_serv"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/iaa
name = "internal affairs belted cloak"
desc = "A soft Teshari cloak made for the Internal Affairs Agent"
icon_state = "tesh_beltcloak_iaa"
item_state = "tesh_beltcloak_iaa"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/wrdn
name = "warden belted cloak"
desc = "A soft Teshari cloak made for the Warden"
icon_state = "tesh_beltcloak_wrdn"
item_state = "tesh_beltcloak_wrdn"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/hos
name = "security chief belted cloak"
desc = "A soft Teshari cloak made for the Head of Security"
icon_state = "tesh_beltcloak_hos"
item_state = "tesh_beltcloak_hos"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/jani
name = "janitor belted cloak"
desc = "A soft Teshari cloak made for the Janitor"
icon_state = "tesh_beltcloak_jani"
item_state = "tesh_beltcloak_jani"
@@ -1,830 +0,0 @@
//Hooded teshari cloaks
/obj/item/clothing/suit/storage/hooded/teshari
name = "Hooded Teshari Cloak"
desc = "A soft teshari cloak with an added hood."
icon_override = 'icons/mob/species/seromi/teshari_hood_vr.dmi'
icon = 'icons/mob/species/seromi/teshari_hood_vr.dmi'
icon_state = "tesh_hcloak_bo"
item_state_slots = list(slot_r_hand_str = "tesh_hcloak_bo", slot_l_hand_str = "tesh_hcloak_bo")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
flags_inv = HIDEHOLSTER|HIDETIE
//hooded = 1 Variable no longer exists, hood is now handled by code/modules/clothing/suit/storage/hooded.dm
action_button_name = "Toggle Cloak Hood"
hoodtype = /obj/item/clothing/head/tesh_hood
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
/obj/item/clothing/head/tesh_hood
name = "Cloak Hood"
desc = "A hood attached to a teshari cloak."
icon_override = 'icons/mob/species/seromi/teshari_hood_vr.dmi'
icon = 'icons/mob/species/seromi/teshari_hood_vr.dmi'
icon_state = "tesh_hood_bo"
item_state_slots = list(slot_r_hand_str = "tesh_hood_bo", slot_l_hand_str = "tesh_hood_bo")
flags_inv = BLOCKHAIR
body_parts_covered = HEAD
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_orange
name = "black and orange hooded cloak"
icon_state = "tesh_hcloak_bo"
item_state = "tesh_hcloak_bo"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_orange
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_grey
name = "black and grey hooded cloak"
icon_state = "tesh_hcloak_bg"
item_state = "tesh_hcloak_bg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_midgrey
name = "black and medium grey hooded cloak"
icon_state = "tesh_hcloak_bmg"
item_state = "tesh_hcloak_bmg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_midgrey
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_lightgrey
name = "black and light grey hooded cloak"
icon_state = "tesh_hcloak_blg"
item_state = "tesh_hcloak_blg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_lightgrey
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_white
name = "black and white hooded cloak"
icon_state = "tesh_hcloak_bw"
item_state = "tesh_hcloak_bw"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_white
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_red
name = "black and red hooded cloak"
icon_state = "tesh_hcloak_br"
item_state = "tesh_hcloak_br"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_red
/obj/item/clothing/suit/storage/hooded/teshari/standard/black
name = "black hooded cloak"
icon_state = "tesh_hcloak_bn"
item_state = "tesh_hcloak_bn"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_yellow
name = "black and yellow hooded cloak"
icon_state = "tesh_hcloak_by"
item_state = "tesh_hcloak_by"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_yellow
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_green
name = "black and green hooded cloak"
icon_state = "tesh_hcloak_bgr"
item_state = "tesh_hcloak_bgr"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_green
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_blue
name = "black and blue hooded cloak"
icon_state = "tesh_hcloak_bbl"
item_state = "tesh_hcloak_bbl"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_blue
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_purple
name = "black and purple hooded cloak"
icon_state = "tesh_hcloak_bp"
item_state = "tesh_hcloak_bp"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_purple
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_pink
name = "black and pink hooded cloak"
icon_state = "tesh_hcloak_bpi"
item_state = "tesh_hcloak_bpi"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_pink
/obj/item/clothing/suit/storage/hooded/teshari/standard/black_brown
name = "black and brown hooded cloak"
icon_state = "tesh_hcloak_bbr"
item_state = "tesh_hcloak_bbr"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_brown
/obj/item/clothing/suit/storage/hooded/teshari/standard/orange_grey
name = "orange and grey hooded cloak"
icon_state = "tesh_hcloak_og"
item_state = "tesh_hcloak_og"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/orange_grey
///obj/item/clothing/suit/storage/hooded/teshari/standard/rainbow
// name = "rainbow hooded cloak"
// icon_state = "tesh_hcloak_rainbow"
// item_state = "tesh_hcloak_rainbow"
// hoodtype = /obj/item/clothing/head/tesh_hood/standard/rainbow
/obj/item/clothing/suit/storage/hooded/teshari/standard/lightgrey_grey
name = "light grey and grey hooded cloak"
icon_state = "tesh_hcloak_lgg"
item_state = "tesh_hcloak_lgg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/lightgrey_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/white_grey
name = "white and grey hooded cloak"
icon_state = "tesh_hcloak_wg"
item_state = "tesh_hcloak_wg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/white_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/red_grey
name = "red and grey hooded cloak"
icon_state = "tesh_hcloak_rg"
item_state = "tesh_hcloak_rg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/red_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/orange
name = "orange hooded cloak"
icon_state = "tesh_hcloak_on"
item_state = "tesh_hcloak_on"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/orange
/obj/item/clothing/suit/storage/hooded/teshari/standard/yellow_grey
name = "yellow and grey hooded cloak"
icon_state = "tesh_hcloak_yg"
item_state = "tesh_hcloak_yg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/yellow_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/green_grey
name = "green and grey hooded cloak"
icon_state = "tesh_hcloak_gg"
item_state = "tesh_hcloak_gg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/green_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/blue_grey
name = "blue and grey hooded cloak"
icon_state = "tesh_hcloak_blug"
item_state = "tesh_hcloak_blug"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/blue_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/purple_grey
name = "purple and grey hooded cloak"
icon_state = "tesh_hcloak_pg"
item_state = "tesh_hcloak_pg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/purple_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/pink_grey
name = "pink and grey hooded cloak"
icon_state = "tesh_hcloak_pig"
item_state = "tesh_hcloak_pig"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/pink_grey
/obj/item/clothing/suit/storage/hooded/teshari/standard/brown_grey
name = "brown and grey hooded cloak"
icon_state = "tesh_hcloak_brg"
item_state = "tesh_hcloak_brg"
hoodtype = /obj/item/clothing/head/tesh_hood/standard/brown_grey
//The actual hoods
/obj/item/clothing/head/tesh_hood/standard/black_orange
name = "black and orange cloak hood"
icon_state = "tesh_hood_bo"
item_state = "tesh_hood_bo"
/obj/item/clothing/head/tesh_hood/standard/black_grey
name = "black and grey cloak hood"
icon_state = "tesh_hood_bg"
item_state = "tesh_hood_bg"
/obj/item/clothing/head/tesh_hood/standard/black_midgrey
name = "black and medium grey cloak hood"
icon_state = "tesh_hood_bmg"
item_state = "tesh_hood_bmg"
/obj/item/clothing/head/tesh_hood/standard/black_lightgrey
name = "black and light grey cloak hood"
icon_state = "tesh_hood_blg"
item_state = "tesh_hood_blg"
/obj/item/clothing/head/tesh_hood/standard/black_white
name = "black and white cloak hood"
icon_state = "tesh_hood_bw"
item_state = "tesh_hood_bw"
/obj/item/clothing/head/tesh_hood/standard/black_red
name = "black and red cloak hood"
icon_state = "tesh_hood_br"
item_state = "tesh_hood_br"
/obj/item/clothing/head/tesh_hood/standard/black
name = "black cloak hood"
icon_state = "tesh_hood_bn"
item_state = "tesh_hood_bn"
/obj/item/clothing/head/tesh_hood/standard/black_yellow
name = "black and yellow cloak hood"
icon_state = "tesh_hood_by"
item_state = "tesh_hood_by"
/obj/item/clothing/head/tesh_hood/standard/black_green
name = "black and green cloak hood"
icon_state = "tesh_hood_bgr"
item_state = "tesh_hood_bgr"
/obj/item/clothing/head/tesh_hood/standard/black_blue
name = "black and blue cloak hood"
icon_state = "tesh_hood_bbl"
item_state = "tesh_hood_bbl"
/obj/item/clothing/head/tesh_hood/standard/black_purple
name = "black and purple cloak hood"
icon_state = "tesh_hood_bp"
item_state = "tesh_hood_bp"
/obj/item/clothing/head/tesh_hood/standard/black_pink
name = "black and pink cloak hood"
icon_state = "tesh_hood_bpi"
item_state = "tesh_hood_bpi"
/obj/item/clothing/head/tesh_hood/standard/black_brown
name = "black and brown cloak hood"
icon_state = "tesh_hood_bbr"
item_state = "tesh_hood_bbr"
/obj/item/clothing/head/tesh_hood/standard/orange_grey
name = "orange and grey cloak hood"
icon_state = "tesh_hood_og"
item_state = "tesh_hood_og"
/obj/item/clothing/head/tesh_hood/standard/rainbow
name = "rainbow cloak hood"
icon_state = "tesh_hood_rainbow"
item_state = "tesh_hood_rainbow"
/obj/item/clothing/head/tesh_hood/standard/lightgrey_grey
name = "light grey and grey cloak hood"
icon_state = "tesh_hood_lgg"
item_state = "tesh_hood_lgg"
/obj/item/clothing/head/tesh_hood/standard/white_grey
name = "white and grey cloak hood"
icon_state = "tesh_hood_wg"
item_state = "tesh_hood_wg"
/obj/item/clothing/head/tesh_hood/standard/red_grey
name = "red and grey cloak hood"
icon_state = "tesh_hood_rg"
item_state = "tesh_hood_rg"
/obj/item/clothing/head/tesh_hood/standard/orange
name = "orange cloak hood"
icon_state = "tesh_hood_on"
item_state = "tesh_hood_on"
/obj/item/clothing/head/tesh_hood/standard/yellow_grey
name = "yellow and grey cloak hood"
icon_state = "tesh_hood_yg"
item_state = "tesh_hood_yg"
/obj/item/clothing/head/tesh_hood/standard/green_grey
name = "green and grey cloak hood"
icon_state = "tesh_hood_gg"
item_state = "tesh_hood_gg"
/obj/item/clothing/head/tesh_hood/standard/blue_grey
name = "blue and grey cloak hood"
icon_state = "tesh_hood_blug"
item_state = "tesh_hood_blug"
/obj/item/clothing/head/tesh_hood/standard/purple_grey
name = "purple and grey cloak hood"
icon_state = "tesh_hood_pg"
item_state = "tesh_hood_pg"
/obj/item/clothing/head/tesh_hood/standard/pink_grey
name = "pink and grey cloak hood"
icon_state = "tesh_hood_pig"
item_state = "tesh_hood_pig"
/obj/item/clothing/head/tesh_hood/standard/brown_grey
name = "brown and grey cloak hood"
icon_state = "tesh_hood_brg"
item_state = "tesh_hood_brg"
//Belted cloaks
/obj/item/clothing/suit/storage/seromi/beltcloak
name = "belted cloak"
desc = "A more ridged and stylized Teshari cloak."
icon = 'icons/mob/species/seromi/teshari_cloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/teshari_cloak_vr.dmi'
icon_state = "tesh_beltcloak_bo"
item_state = "tesh_beltcloak_bo"
species_restricted = list(SPECIES_TESHARI)
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_orange
name = "black belted cloak (orange)"
icon_state = "tesh_beltcloak_bo"
item_state = "tesh_beltcloak_bo"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_grey
name = "black belted cloak"
icon_state = "tesh_beltcloak_bg"
item_state = "tesh_beltcloak_bg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_midgrey
name = "black belted cloak (medium grey)"
icon_state = "tesh_beltcloak_bmg"
item_state = "tesh_beltcloak_bmg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_lightgrey
name = "black belted cloak (light grey)"
icon_state = "tesh_beltcloak_blg"
item_state = "tesh_beltcloak_blg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_white
name = "black belted cloak (white)"
icon_state = "tesh_beltcloak_bw"
item_state = "tesh_beltcloak_bw"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_red
name = "black belted cloak (red)"
icon_state = "tesh_beltcloak_br"
item_state = "tesh_beltcloak_br"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black
name = "black simple belted cloak"
icon_state = "tesh_beltcloak_bn"
item_state = "tesh_beltcloak_bn"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_yellow
name = "black belted cloak (yellow)"
icon_state = "tesh_beltcloak_by"
item_state = "tesh_beltcloak_by"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_green
name = "black belted cloak (green)"
icon_state = "tesh_beltcloak_bgr"
item_state = "tesh_beltcloak_bgr"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_blue
name = "black belted cloak (blue)"
icon_state = "tesh_beltcloak_bbl"
item_state = "tesh_beltcloak_bbl"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_purple
name = "black belted cloak (purple)"
icon_state = "tesh_beltcloak_bp"
item_state = "tesh_beltcloak_bp"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_pink
name = "black belted cloak (pink)"
icon_state = "tesh_beltcloak_bpi"
item_state = "tesh_beltcloak_bpi"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/black_brown
name = "black belted cloak (brown)"
icon_state = "tesh_beltcloak_bbr"
item_state = "tesh_beltcloak_bbr"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/orange_grey
name = "orange belted cloak"
icon_state = "tesh_beltcloak_og"
item_state = "tesh_beltcloak_og"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/rainbow
name = "rainbow belted cloak"
icon_state = "tesh_beltcloak_rainbow"
item_state = "tesh_beltcloak_rainbow"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/lightgrey_grey
name = "light grey belted cloak"
icon_state = "tesh_beltcloak_lgg"
item_state = "tesh_beltcloak_lgg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/white_grey
name = "white belted cloak"
icon_state = "tesh_beltcloak_wg"
item_state = "tesh_beltcloak_wg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/red_grey
name = "red belted cloak"
icon_state = "tesh_beltcloak_rg"
item_state = "tesh_beltcloak_rg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/orange
name = "orange simple belted cloak"
icon_state = "tesh_beltcloak_on"
item_state = "tesh_beltcloak_on"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/yellow_grey
name = "yellow belted cloak"
icon_state = "tesh_beltcloak_yg"
item_state = "tesh_beltcloak_yg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/green_grey
name = "green belted cloak"
icon_state = "tesh_beltcloak_gg"
item_state = "tesh_beltcloak_gg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/blue_grey
name = "blue belted cloak"
icon_state = "tesh_beltcloak_blug"
item_state = "tesh_beltcloak_blug"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/purple_grey
name = "purple belted cloak"
icon_state = "tesh_beltcloak_pg"
item_state = "tesh_beltcloak_pg"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/pink_grey
name = "pink belted cloak"
icon_state = "tesh_beltcloak_pig"
item_state = "tesh_beltcloak_pig"
/obj/item/clothing/suit/storage/seromi/beltcloak/standard/brown_grey
name = "brown belted cloak"
icon_state = "tesh_beltcloak_brg"
item_state = "tesh_beltcloak_brg"
//Belted job cloaks
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs
icon = 'icons/mob/species/seromi/teshari_cloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/teshari_cloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cargo
name = "cargo belted cloak"
desc = "A soft Teshari cloak made for the Cargo department"
icon_state = "tesh_beltcloak_car"
item_state = "tesh_beltcloak_car"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/mining
name = "mining belted cloak"
desc = "A soft Teshari cloak made for Mining"
icon_state = "tesh_beltcloak_mine"
item_state = "tesh_beltcloak_mine"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/command
name = "command belted cloak"
desc = "A soft Teshari cloak made for the Command department"
icon_state = "tesh_beltcloak_comm"
item_state = "tesh_beltcloak_comm"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/ce
name = "chief engineer belted cloak"
desc = "A soft Teshari cloak made the Chief Engineer"
icon_state = "tesh_beltcloak_ce"
item_state = "tesh_beltcloak_ce"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/engineer
name = "engineering belted cloak"
desc = "A soft Teshari cloak made for the Engineering department"
icon_state = "tesh_beltcloak_engie"
item_state = "tesh_beltcloak_engie"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/atmos
name = "atmospherics belted cloak"
desc = "A soft Teshari cloak made for the Atmospheric Technician"
icon_state = "tesh_beltcloak_atmos"
item_state = "tesh_beltcloak_atmos"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/cmo
name = "chief medical officer belted cloak"
desc = "A soft Teshari cloak made the Chief Medical Officer"
icon_state = "tesh_beltcloak_cmo"
item_state = "tesh_beltcloak_cmo"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/medical
name = "medical belted cloak"
desc = "A soft Teshari cloak made for the Medical department"
icon_state = "tesh_beltcloak_doc"
item_state = "tesh_beltcloak_doc"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/chemistry
name = "chemist belted cloak"
desc = "A soft Teshari cloak made for the Chemist"
icon_state = "tesh_beltcloak_vrem"
item_state = "tesh_beltcloak_vrem"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/viro
name = "virologist belted cloak"
desc = "A soft Teshari cloak made for the Virologist"
icon_state = "tesh_beltcloak_viro"
item_state = "tesh_beltcloak_viro"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/para
name = "paramedic belted cloak"
desc = "A soft Teshari cloak made for the Paramedic"
icon_state = "tesh_beltcloak_para"
item_state = "tesh_beltcloak_para"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/sci
name = "scientist belted cloak"
desc = "A soft Teshari cloak made for the Science department"
icon_state = "tesh_beltcloak_sci"
item_state = "tesh_beltcloak_sci"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/robo
name = "roboticist belted cloak"
desc = "A soft Teshari cloak made for the Roboticist"
icon_state = "tesh_beltcloak_robo"
item_state = "tesh_beltcloak_robo"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/sec
name = "security belted cloak"
desc = "A soft Teshari cloak made for the Security department"
icon_state = "tesh_beltcloak_sec"
item_state = "tesh_beltcloak_sec"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/qm
name = "quartermaster belted cloak"
desc = "A soft Teshari cloak made for the Quartermaster"
icon_state = "tesh_beltcloak_qm"
item_state = "tesh_beltcloak_qm"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/service
name = "service belted cloak"
desc = "A soft Teshari cloak made for the Service department"
icon_state = "tesh_beltcloak_serv"
item_state = "tesh_beltcloak_serv"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/iaa
name = "internal affairs belted cloak"
desc = "A soft Teshari cloak made for the Internal Affairs Agent"
icon_state = "tesh_beltcloak_iaa"
item_state = "tesh_beltcloak_iaa"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/wrdn
name = "warden belted cloak"
desc = "A soft Teshari cloak made for the Warden"
icon_state = "tesh_beltcloak_wrdn"
item_state = "tesh_beltcloak_wrdn"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/hos
name = "security chief belted cloak"
desc = "A soft Teshari cloak made for the Head of Security"
icon_state = "tesh_beltcloak_hos"
item_state = "tesh_beltcloak_hos"
/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/jani
name = "janitor belted cloak"
desc = "A soft Teshari cloak made for the Janitor"
icon_state = "tesh_beltcloak_jani"
item_state = "tesh_beltcloak_jani"
//Alternate standard & job cloaks.
/obj/item/clothing/suit/storage/teshari/cloak_vr
name = "black cloak (VR)"
desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside."
icon = 'icons/mob/species/seromi/teshari_cloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/teshari_cloak_vr.dmi'
icon_state = "tesh_cloak_bn"
item_state = "tesh_cloak_bn"
species_restricted = list(SPECIES_TESHARI)
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_red
name = "black and red cloak (VR)"
icon_state = "tesh_cloak_br"
item_state = "tesh_cloak_br"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_orange
name = "black and orange cloak (VR)"
icon_state = "tesh_cloak_bo"
item_state = "tesh_cloak_bo"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_yellow
name = "black and yellow cloak (VR)"
icon_state = "tesh_cloak_by"
item_state = "tesh_cloak_by"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_green
name = "black and green cloak (VR)"
icon_state = "tesh_cloak_bgr"
item_state = "tesh_cloak_bgr"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_blue
name = "black and blue cloak (VR)"
icon_state = "tesh_cloak_bbl"
item_state = "tesh_cloak_bbl"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_purple
name = "black and purple cloak (VR)"
icon_state = "tesh_cloak_bp"
item_state = "tesh_cloak_bp"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_pink
name = "black and pink cloak (VR)"
icon_state = "tesh_cloak_bpi"
item_state = "tesh_cloak_bpi"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_brown
name = "black and brown cloak (VR)"
icon_state = "tesh_cloak_bbr"
item_state = "tesh_cloak_bbr"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_grey
name = "black and grey cloak (VR)"
icon_state = "tesh_cloak_bg"
item_state = "tesh_cloak_bg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_white
name = "black and white cloak (VR)"
icon_state = "tesh_cloak_bw"
item_state = "tesh_cloak_bw"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/black_glow
name = "black and glowing cloak (VR)"
icon_state = "tesh_cloak_bglowing"
item_state = "tesh_cloak_bglowing"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/dark_retrowave
name = "dark aesthetic cloak (VR)"
icon_state = "tesh_cloak_dretrowave"
item_state = "tesh_cloak_dretrowave"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/white
name = "white cloak (VR)"
icon_state = "tesh_cloak_wn"
item_state = "tesh_cloak_wn"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/white_grey
name = "white and grey cloak (VR)"
icon_state = "tesh_cloak_wg"
item_state = "tesh_cloak_wg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/red_grey
name = "red and grey cloak (VR)"
icon_state = "tesh_cloak_rg"
item_state = "tesh_cloak_rg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/orange_grey
name = "orange and grey cloak (VR)"
icon_state = "tesh_cloak_og"
item_state = "tesh_cloak_og"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/yellow_grey
name = "yellow and grey cloak (VR)"
icon_state = "tesh_cloak_yg"
item_state = "tesh_cloak_yg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/green_grey
name = "green and grey cloak (VR)"
icon_state = "tesh_cloak_gg"
item_state = "tesh_cloak_gg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/blue_grey
name = "blue and grey cloak (VR)"
icon_state = "tesh_cloak_blug"
item_state = "tesh_cloak_blug"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/purple_grey
name = "purple and grey cloak (VR)"
icon_state = "tesh_cloak_pg"
item_state = "tesh_cloak_pg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/pink_grey
name = "pink and grey cloak (VR)"
icon_state = "tesh_cloak_pig"
item_state = "tesh_cloak_pig"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/brown_grey
name = "brown and grey cloak (VR)"
icon_state = "tesh_cloak_brg"
item_state = "tesh_cloak_brg"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/rainbow
name = "rainbow cloak (VR)"
icon_state = "tesh_cloak_rainbow"
item_state = "tesh_cloak_rainbow"
/obj/item/clothing/suit/storage/teshari/cloak_vr/standard/orange
name = "orange cloak (VR)"
icon_state = "tesh_cloak_on"
item_state = "tesh_cloak_on"
//Alternate Job Cloaks - subpathed for ease of access in loadouts. If the path ends in _vr not /vr it's net-new.
/obj/item/clothing/suit/storage/seromi/cloak/jobs/cap_vr
name = "facility director cloak (VR)"
desc = "A soft Teshari cloak made for the Facility Director"
icon_state = "tesh_cloak_cap"
item_state = "tesh_cloak_cap"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
//Cargo
/obj/item/clothing/suit/storage/seromi/cloak/jobs/qm/vr
name = "quartermaster cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/cargo/vr
name = "cargo cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/mining/vr
name = "mining cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/command/vr
name = "command cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
//Engineering
/obj/item/clothing/suit/storage/seromi/cloak/jobs/ce/vr
name = "chief engineer cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/eningeer/vr
name = "engineering cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/atmos/vr
name = "atmospherics cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
//Medical
/obj/item/clothing/suit/storage/seromi/cloak/jobs/cmo/vr
name = "chief medical officer cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/medical/vr
name = "medical cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/chemistry/vr
name = "chemist cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/viro/vr
name = "virologist cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/para/vr
name = "paramedic cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/psych_vr
name = "psychiatrist cloak (VR)"
desc = "A soft Teshari cloak made for the Psychiatrist"
icon_state = "tesh_cloak_psych"
item_state = "tesh_cloak_psych"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
//Science
/obj/item/clothing/suit/storage/seromi/cloak/jobs/rd_vr
name = "research director cloak (VR)"
desc = "A soft Teshari cloak made for the Research Director"
icon_state = "tesh_cloak_rd"
item_state = "tesh_cloak_rd"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/sci/vr
name = "scientist cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/robo/vr
name = "roboticist cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
//Security
/obj/item/clothing/suit/storage/seromi/cloak/jobs/hos_vr
name = "head of security cloak (VR)"
desc = "A soft Teshari cloak made for the Head of Security"
icon_state = "tesh_cloak_hos"
item_state = "tesh_cloak_hos"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/sec/vr
name = "security cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa/vr
name = "internal affairs cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
//Service
/obj/item/clothing/suit/storage/seromi/cloak/jobs/hop_vr
name = "head of personnel cloak (VR)"
desc = "A soft Teshari cloak made for the Head of Personnel"
icon_state = "tesh_cloak_hop"
item_state = "tesh_cloak_hop"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
/obj/item/clothing/suit/storage/seromi/cloak/jobs/service/vr
name = "service cloak (VR)"
icon = 'icons/mob/species/seromi/deptcloak_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptcloak_vr.dmi'
@@ -1,6 +1,13 @@
/obj/item/clothing/suit/customs
desc = "A standard SolCom Customs formal jacket."
/obj/item/clothing/suit/chiton
name = "chiton"
desc = "A traditional piece of clothing from Greece."
icon = 'icons/mob/suit_vr.dmi'
icon_state = "chiton"
icon_override = 'icons/obj/clothing/suits_vr.dmi' //why won't it work without this WHY GOD PLEASE
//HERE BE TAUR RELATED CLOTHES
/*
+101 -103
View File
@@ -77,6 +77,60 @@
name = "small blue and grey dress"
icon_state = "teshari_bluegreydress"
// Worksuits
/obj/item/clothing/under/seromi/undercoat/standard/worksuit
name = "small black and red worksuit"
icon_state = "teshari_black_red_worksuit"
item_state = "teshari_black_red_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackpurple
name = "small black and purple worksuit"
icon_state = "teshari_black_purple_worksuit"
item_state = "teshari_black_purple_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackorange
name = "small black and orange worksuit"
icon_state = "teshari_black_orange_worksuit"
item_state = "teshari_black_orange_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackblue
name = "small black and blue worksuit"
icon_state = "teshari_black_blue_worksuit"
item_state = "teshari_black_blue_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/blackgreen
name = "small black and greeen worksuit"
icon_state = "teshari_black_green_worksuit"
item_state = "teshari_black_green_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whitered
name = "small white and red worksuit"
icon_state = "teshari_white_red_worksuit"
item_state = "teshari_white_red_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whitepurple
name = "small white and purple worksuit"
icon_state = "teshari_white_purple_worksuit"
item_state = "teshari_white_purple_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whiteorange
name = "small white and orange worksuit"
icon_state = "teshari_white_orange_worksuit"
item_state = "teshari_white_orange_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whiteblue
name = "small white and blue worksuit"
icon_state = "teshari_white_blue_worksuit"
item_state = "teshari_white_blue_worksuit"
/obj/item/clothing/under/seromi/undercoat/standard/worksuit/whitegreen
name = "small white and green worksuit"
icon_state = "teshari_white_green_worksuit"
item_state = "teshari_white_green_worksuit"
//Standard Undercoats
/obj/item/clothing/under/seromi/undercoat
name = "Undercoat"
desc = "A Teshari traditional garb, with a modern twist! Made of micro and nanofibres to make it light and billowy, perfect for going fast and stylishly!"
@@ -96,16 +150,6 @@
icon_state = "tesh_uniform_bg"
item_state = "tesh_uniform_bg"
/obj/item/clothing/under/seromi/undercoat/standard/black_midgrey
name = "black and medium grey undercoat"
icon_state = "tesh_uniform_bmg"
item_state = "tesh_uniform_bmg"
/obj/item/clothing/under/seromi/undercoat/standard/black_lightgrey
name = "black and light grey undercoat"
icon_state = "tesh_uniform_blg"
item_state = "tesh_uniform_blg"
/obj/item/clothing/under/seromi/undercoat/standard/black_white
name = "black and white undercoat"
icon_state = "tesh_uniform_bw"
@@ -211,93 +255,23 @@
icon_state = "tesh_uniform_brg"
item_state = "tesh_uniform_brg"
/obj/item/clothing/under/seromi/undercoat/standard/blackredworksuit
name = "small black and red worksuit"
icon_state = "teshari_black_red_worksuit"
item_state = "teshari_black_red_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/blackpurpleworksuit
name = "small black and purple worksuit"
icon_state = "teshari_black_purple_worksuit"
item_state = "teshari_black_purple_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/blackpurpleworksuit
name = "small black and orange worksuit"
icon_state = "teshari_black_orange_worksuit"
item_state = "teshari_black_orange_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/blackblueworksuit
name = "small black and blue worksuit"
icon_state = "teshari_black_blue_worksuit"
item_state = "teshari_black_blue_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/blackgreenworksuit
name = "small black and greeen worksuit"
icon_state = "teshari_black_green_worksuit"
item_state = "teshari_black_green_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/whiteredworksuit
name = "small white and red worksuit"
icon_state = "teshari_white_red_worksuit"
item_state = "teshari_white_red_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/whitepurpleworksuit
name = "small white and purple worksuit"
icon_state = "teshari_white_purple_worksuit"
item_state = "teshari_white_purple_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/whiteorangeworksuit
name = "small white and orange worksuit"
icon_state = "teshari_white_orange_worksuit"
item_state = "teshari_white_orange_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/whiteblueworksuit
name = "small white and blue worksuit"
icon_state = "teshari_white_blue_worksuit"
item_state = "teshari_white_blue_worksuit"
desc = "A small worksuit designed for a Teshari"
/obj/item/clothing/under/seromi/undercoat/standard/whitegreenworksuit
name = "small white and green worksuit"
icon_state = "teshari_white_green_worksuit"
item_state = "teshari_white_green_worksuit"
desc = "A small worksuit designed for a Teshari"
//Job Undercoats
/obj/item/clothing/under/seromi/undercoat/jobs
icon = 'icons/mob/species/seromi/deptjacket.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/cargo
name = "cargo undercoat"
desc = "A traditional Teshari garb made for the Cargo department"
icon_state = "tesh_uniform_car"
item_state = "tesh_uniform_car"
/obj/item/clothing/under/seromi/undercoat/jobs/cap
name = "facility director undercoat"
desc = "A traditional Teshari garb made for the Facility Director"
icon_state = "tesh_uniform_cap"
item_state = "tesh_uniform_cap"
/obj/item/clothing/under/seromi/undercoat/jobs/mining
name = "mining undercoat"
desc = "A traditional Teshari garb made for Mining"
icon_state = "tesh_uniform_mine"
item_state = "tesh_uniform_mine"
/obj/item/clothing/under/seromi/undercoat/jobs/command
name = "command undercoat"
desc = "A traditional Teshari garb made for the Command department"
icon_state = "tesh_uniform_comm"
item_state = "tesh_uniform_comm"
/obj/item/clothing/under/seromi/undercoat/jobs/command_g
name = "command undercoat"
desc = "A traditional Teshari garb made for the Command department. This one has fancier gold buttons"
icon_state = "tesh_uniform_comm_g"
item_state = "tesh_uniform_comm_g"
/obj/item/clothing/under/seromi/undercoat/jobs/hop
name = "head of personnel undercoat"
desc = "A traditional Teshari garb made for the Head of Personnel"
icon_state = "tesh_uniform_hop"
item_state = "tesh_uniform_hop"
/obj/item/clothing/under/seromi/undercoat/jobs/ce
name = "cheif engineer undercoat"
@@ -305,11 +279,17 @@
icon_state = "tesh_uniform_ce"
item_state = "tesh_uniform_ce"
/obj/item/clothing/under/seromi/undercoat/jobs/ce_w
name = "cheif engineer undercoat"
desc = "A traditional Teshari garb made for the Chief Engineer. This one is white"
icon_state = "tesh_uniform_ce_w"
item_state = "tesh_uniform_ce_w"
/obj/item/clothing/under/seromi/undercoat/jobs/hos
name = "head of security undercoat"
desc = "A traditional Teshari garb made for the Head of Security"
icon_state = "tesh_uniform_hos"
item_state = "tesh_uniform_hos"
/obj/item/clothing/under/seromi/undercoat/jobs/rd
name = "research director undercoat"
desc = "A traditional Teshari garb made for the Research Director"
icon_state = "tesh_uniform_rd"
item_state = "tesh_uniform_rd"
/obj/item/clothing/under/seromi/undercoat/jobs/engineer
name = "engineering undercoat"
@@ -329,6 +309,24 @@
icon_state = "tesh_uniform_cmo"
item_state = "tesh_uniform_cmo"
/obj/item/clothing/under/seromi/undercoat/jobs/qm
name = "quartermaster undercoat"
desc = "A traditional Teshari garb made for the Quartermaster"
icon_state = "tesh_uniform_qm"
item_state = "tesh_uniform_qm"
/obj/item/clothing/under/seromi/undercoat/jobs/cargo
name = "cargo undercoat"
desc = "A traditional Teshari garb made for the Cargo department"
icon_state = "tesh_uniform_car"
item_state = "tesh_uniform_car"
/obj/item/clothing/under/seromi/undercoat/jobs/mining
name = "mining undercoat"
desc = "A traditional Teshari garb made for Mining"
icon_state = "tesh_uniform_mine"
item_state = "tesh_uniform_mine"
/obj/item/clothing/under/seromi/undercoat/jobs/medical
name = "medical undercoat"
desc = "A traditional Teshari garb made for the Medical department"
@@ -347,6 +345,12 @@
icon_state = "tesh_uniform_viro"
item_state = "tesh_uniform_viro"
/obj/item/clothing/under/seromi/undercoat/jobs/psych
name = "psychiatrist undercoat"
desc = "A traditional Teshari garb made for the Psychiatrist"
icon_state = "tesh_uniform_psych"
item_state = "tesh_uniform_psych"
/obj/item/clothing/under/seromi/undercoat/jobs/para
name = "paramedic undercoat"
desc = "A traditional Teshari garb made for the Paramedic"
@@ -371,12 +375,6 @@
icon_state = "tesh_uniform_sec"
item_state = "tesh_uniform_sec"
/obj/item/clothing/under/seromi/undercoat/jobs/qm
name = "quartermaster undercoat"
desc = "A traditional Teshari garb made for the Quartermaster"
icon_state = "tesh_uniform_qm"
item_state = "tesh_uniform_qm"
/obj/item/clothing/under/seromi/undercoat/jobs/service
name = "service undercoat"
desc = "A traditional Teshari garb made for the Service department"
@@ -387,4 +385,4 @@
name = "internal affairs undercoat"
desc = "A traditional Teshari garb made for the Internal Affairs Agent"
icon_state = "tesh_uniform_iaa"
item_state = "tesh_uniform_iaa"
item_state = "tesh_uniform_iaa"
@@ -1,121 +0,0 @@
//Alternate job undercoat sprites. If the path ends in _vr not /vr it's net-new.
/obj/item/clothing/under/seromi/undercoat/jobs/cargo/vr
name = "cargo undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/mining/vr
name = "mining undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/cap_vr
name = "facility director undercoat (VR)"
desc = "A traditional Teshari garb made for the Facility Director"
icon_state = "tesh_uniform_cap"
item_state = "tesh_uniform_cap"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/hop_vr
name = "head of personnel undercoat (VR)"
desc = "A traditional Teshari garb made for the Head of Personnel"
icon_state = "tesh_uniform_hop"
item_state = "tesh_uniform_hop"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/ce/vr
name = "chief engineer undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/engineer/vr
name = "engineering undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/atmos/vr
name = "atmospherics undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/cmo/vr
name = "chief medical officer undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/medical/vr
name = "medical undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/chemistry/vr
name = "chemist undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/viro/vr
name = "virologist undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/para/vr
name = "paramedic undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/psych_vr
name = "psychiatrist undercoat (VR)"
desc = "A traditional Teshari garb made for the Psychiatrist"
icon_state = "tesh_uniform_psych"
item_state = "tesh_uniform_psych"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/rd_vr
name = "research director undercoat (VR)"
desc = "A traditional Teshari garb made for the Research Director"
icon_state = "tesh_uniform_rd"
item_state = "tesh_uniform_rd"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/sci/vr
name = "scientist undercoat(VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/robo/vr
name = "roboticist undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/hos_vr
name = "head of security undercoat (VR)"
desc = "A traditional Teshari garb made for the Head of Security."
icon_state = "tesh_uniform_hos"
item_state = "tesh_uniform_hos"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/sec/vr
name = "security undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/qm/vr
name = "quartermaster undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/service/vr
name = "service undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
/obj/item/clothing/under/seromi/undercoat/jobs/iaa/vr
name = "internal affairs undercoat (VR)"
icon = 'icons/mob/species/seromi/deptjacket_vr.dmi'
icon_override = 'icons/mob/species/seromi/deptjacket_vr.dmi'
+1 -1
View File
@@ -122,7 +122,7 @@
transaction_purpose = t_purpose
item_list += t_purpose
var/t_amount = round(input("Enter price", "New price") as num)
if (!t_amount || !Adjacent(usr)) return
if (!t_amount || !Adjacent(usr) || t_amount < 0) return
transaction_amount += t_amount
price_list += t_amount
playsound(src, 'sound/machines/twobeep.ogg', 25)
@@ -12,7 +12,10 @@
"Fennec" = /mob/living/simple_mob/vore/fennec,
"Fennix" = /mob/living/simple_mob/vore/fennix,
"Jelly Blob" = /mob/living/simple_mob/animal/space/jelly,
"Wolf" = /mob/living/simple_mob/animal/wolf)
"Wolf" = /mob/living/simple_mob/animal/wolf,
"Sect Queen" = /mob/living/simple_mob/vore/sect_queen,
"Defanged Xenomorph" = /mob/living/simple_mob/vore/xeno_defanged,
)
/datum/event/maintenance_predator/start()
+3
View File
@@ -176,6 +176,9 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
/obj/item/seeds/towermycelium
seed_type = "towercap"
/obj/item/seeds/redtowermycelium
seed_type = "redcap"
/obj/item/seeds/glowshroom
seed_type = "glowshroom"
@@ -28,4 +28,4 @@
kitchen_tag = "egg-plant"
mutants = null
chems = list("nutriment" = list(1,5), "egg" = list(3,12))
has_item_product = /obj/item/weapon/reagent_containers/food/snacks/egg/purple
has_item_product = /obj/item/weapon/reagent_containers/food/snacks/egg/purple
@@ -131,7 +131,7 @@
seed_name = "tower cap"
display_name = "tower caps"
chems = list("woodpulp" = list(10,1))
mutants = null
mutants = list("redcap")
has_item_product = /obj/item/stack/material/log
/datum/seed/mushroom/towercap/New()
@@ -142,6 +142,18 @@
set_trait(TRAIT_PLANT_COLOUR,"#857F41")
set_trait(TRAIT_PLANT_ICON,"mushroom8")
/datum/seed/mushroom/towercap/red
name = "redcap"
seed_name = "red cap"
display_name = "red caps"
chems = list("woodpulp" = list(10,1), "tannin" = list(1,10))
mutants = null
has_item_product = null
/datum/seed/mushroom/towercap/red/New()
..()
set_trait(TRAIT_PRODUCT_COLOUR,"#b81414")
/datum/seed/mushroom/glowshroom
name = "glowshroom"
seed_name = "glowshroom"
@@ -0,0 +1,38 @@
//Tobacco/varieties.
/datum/seed/tobacco
name = "tobacco"
seed_name = "tobacco"
display_name = "tobacco"
kitchen_tag = "tobacco"
mutants = list("stimbush")
chems = list("nutriment" = list(1,15), "nicotine" = list(1,20))
/datum/seed/tobacco/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"leafy")
set_trait(TRAIT_PRODUCT_COLOUR,"#6f5648")
set_trait(TRAIT_PLANT_ICON,"ambrosia")
set_trait(TRAIT_IDEAL_LIGHT, 8)
/datum/seed/tobacco/stimbush
name = "stimbush"
seed_name = "stim-bush"
display_name = "stim-bush"
chems = list("nutriment" = list(1,10), "hyperzine" = list(1,10), "synaptizine" = list(1,5))
/datum/seed/tobacco/stimbush/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,6)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"leafy")
set_trait(TRAIT_PRODUCT_COLOUR,"#e08a1e")
set_trait(TRAIT_PLANT_ICON,"ambrosia")
set_trait(TRAIT_IDEAL_LIGHT, 10)
+1
View File
@@ -1051,6 +1051,7 @@ var/list/name_to_material
//TODO PLACEHOLDERS:
/datum/material/leather
name = MAT_LEATHER
display_name = "plainleather"
icon_colour = "#5C4831"
stack_type = /obj/item/stack/material/leather
stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2)
+25 -3
View File
@@ -85,6 +85,7 @@
data["showAllOres"] = show_all_ores
data["power"] = machine.active
data["speed"] = machine.speed_process
return data
@@ -137,6 +138,9 @@
else
to_chat(usr, "<span class='warning'>No valid ID.</span>")
. = TRUE
if("speed_toggle")
machine.toggle_speed()
. = TRUE
else
return FALSE
@@ -204,6 +208,26 @@
if(src.output) break
return
/obj/machinery/mineral/processing_unit/proc/toggle_speed(var/forced)
var/area/refinery_area = get_area(src)
if(forced)
speed_process = forced
else
speed_process = !speed_process // switching gears
if(speed_process) // high gear
STOP_MACHINE_PROCESSING(src)
START_PROCESSING(SSfastprocess, src)
else // low gear
STOP_PROCESSING(SSfastprocess, src)
START_MACHINE_PROCESSING(src)
for(var/obj/machinery/mineral/unloading_machine/unloader in refinery_area.contents)
unloader.toggle_speed()
for(var/obj/machinery/conveyor_switch/cswitch in refinery_area.contents)
cswitch.toggle_speed()
for(var/obj/machinery/mineral/stacking_machine/stacker in refinery_area.contents)
stacker.toggle_speed()
/obj/machinery/mineral/processing_unit/process()
if (!src.output || !src.input)
@@ -215,9 +239,7 @@
var/list/tick_alloys = list()
//Grab some more ore to process this tick.
for(var/i = 0,i<sheets_per_tick,i++)
var/obj/item/weapon/ore/O = locate() in input.loc
if(!O) break
for(var/obj/item/weapon/ore/O in input.loc)
if(!isnull(ores_stored[O.material]))
ores_stored[O.material]++
points += ore_values[O.material] // Give Points!
+12
View File
@@ -110,6 +110,18 @@
return
return
/obj/machinery/mineral/stacking_machine/proc/toggle_speed(var/forced)
if(forced)
speed_process = forced
else
speed_process = !speed_process // switching gears
if(speed_process) // high gear
STOP_MACHINE_PROCESSING(src)
START_PROCESSING(SSfastprocess, src)
else // low gear
STOP_PROCESSING(SSfastprocess, src)
START_MACHINE_PROCESSING(src)
/obj/machinery/mineral/stacking_machine/process()
if (src.output && src.input)
var/turf/T = get_turf(input)
+12
View File
@@ -22,6 +22,18 @@
if(output)
break
/obj/machinery/mineral/unloading_machine/proc/toggle_speed(var/forced)
if(forced)
speed_process = forced
else
speed_process = !speed_process // switching gears
if(speed_process) // high gear
STOP_MACHINE_PROCESSING(src)
START_PROCESSING(SSfastprocess, src)
else // low gear
STOP_PROCESSING(SSfastprocess, src)
START_MACHINE_PROCESSING(src)
/obj/machinery/mineral/unloading_machine/process()
if (src.output && src.input)
if (locate(/obj/structure/ore_box, input.loc))
+5
View File
@@ -21,6 +21,7 @@
w_class = ITEMSIZE_LARGE
matter = list(DEFAULT_WALL_MATERIAL = 3750)
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
var/sand_dig = FALSE // does this thing dig sand?
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
attack_verb = list("hit", "pierced", "sliced", "attacked")
var/drill_sound = "pickaxe"
@@ -43,6 +44,7 @@
icon_state = "handdrill"
item_state = "jackhammer"
digspeed = 30
sand_dig = TRUE
origin_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
desc = "Yours is the drill that will pierce through the rock walls."
drill_verb = "drilling"
@@ -93,6 +95,7 @@
icon_state = "diamonddrill"
item_state = "jackhammer"
digspeed = 5 //Digs through walls, girders, and can dig up sand
sand_dig = TRUE
origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 5)
desc = "Yours is the drill that will pierce the heavens!"
drill_verb = "drilling"
@@ -102,6 +105,7 @@
icon_state = "jackhammer"
item_state = "jackhammer"
digspeed = 15
sand_dig = TRUE
desc = "Cracks rocks with sonic blasts. This one seems like an improved design."
drill_verb = "hammering"
@@ -122,6 +126,7 @@
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
sharp = 0
edge = 1
var/digspeed = 40
/obj/item/weapon/shovel/spade
name = "spade"
+13 -12
View File
@@ -304,19 +304,20 @@ turf/simulated/mineral/floor/light_corner
return
if(!density)
var/valid_tool = 0
var/digspeed = 40
var/list/usable_tools = list(
/obj/item/weapon/shovel,
/obj/item/weapon/pickaxe/diamonddrill,
/obj/item/weapon/pickaxe/drill,
/obj/item/weapon/pickaxe/borgdrill
)
if(istype(W, /obj/item/weapon/shovel))
var/obj/item/weapon/shovel/S = W
valid_tool = 1
digspeed = S.digspeed
var/valid_tool
for(var/valid_type in usable_tools)
if(istype(W,valid_type))
if(istype(W, /obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/P = W
if(P.sand_dig)
valid_tool = 1
break
digspeed = P.digspeed
if(valid_tool)
if (sand_dug)
@@ -330,7 +331,7 @@ turf/simulated/mineral/floor/light_corner
to_chat(user, "<span class='notice'>You start digging.</span>")
playsound(user, 'sound/effects/rustle1.ogg', 50, 1)
if(!do_after(user,40)) return
if(!do_after(user,digspeed)) return
to_chat(user, "<span class='notice'>You dug a hole.</span>")
GetDrilled()
@@ -544,7 +545,7 @@ turf/simulated/mineral/floor/light_corner
if(!density)
if(!sand_dug)
sand_dug = 1
for(var/i=0;i<(rand(3)+2);i++)
for(var/i=0;i<5;i++)
new/obj/item/weapon/ore/glass(src)
update_icon()
return
+9
View File
@@ -331,6 +331,15 @@ GLOBAL_LIST_EMPTY(unique_deployable)
light_power = 1
light_color = "#FFFFFF"
/obj/structure/fans/hardlight/colorable
name = "hardlight shield"
icon_state = "hardlight_colorable"
/obj/structure/fans/hardlight/colorable/abductor
name = "hardlight shield"
icon_state = "hardlight_colorable"
color = "#ff0099"
//Signs
/obj/structure/sign/mining
name = "nanotrasen mining corps sign"
@@ -102,6 +102,7 @@
var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc.
var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc.
var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc.
var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var
// set below is EMP interactivity for nonsynth carbons
var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG
var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive
@@ -382,7 +382,7 @@ var/global/list/disallowed_protean_accessories = list(
B.owner = blob
//We can still speak our languages!
blob.languages = languages
blob.languages = languages.Copy()
//Flip them to the protean panel
if(panel_was_up)
@@ -313,7 +313,7 @@
material_name = MAT_STEEL
/datum/modifier/protean/steel/tick()
holder.adjustBruteLoss(-10,include_robo = TRUE) //Looks high, but these ARE modified by species resistances, so this is really 20% of this
holder.adjustBruteLoss(-2,include_robo = TRUE) //Looks high, but these ARE modified by species resistances, so this is really 20% of this
holder.adjustFireLoss(-1,include_robo = TRUE) //And this is really double this
var/mob/living/carbon/human/H = holder
for(var/organ in H.internal_organs)
@@ -140,4 +140,10 @@
/datum/trait/colorblind/para_taj/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..(S,H)
H.add_modifier(/datum/modifier/trait/colorblind_taj)
/datum/trait/neural_hypersensitivity
name = "Neural Hypersensitivity"
desc = "Your nerves are particularly sensitive to physical changes, leading to experiencing twice the intensity of pain and pleasure alike. Doubles traumatic shock."
cost = -1
var_changes = list("traumatic_mod" = 2)
@@ -78,21 +78,22 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define SUIT_STORE_LAYER 17 //Suit storage-slot item
#define BACK_LAYER 18 //Back-slot item
#define HAIR_LAYER 19 //The human's hair
#define EARS_LAYER 20 //Both ear-slot items (combined image)
#define EYES_LAYER 21 //Mob's eyes (used for glowing eyes)
#define FACEMASK_LAYER 22 //Mask-slot item
#define HEAD_LAYER 23 //Head-slot item
#define HANDCUFF_LAYER 24 //Handcuffs, if the human is handcuffed, in a secret inv slot
#define LEGCUFF_LAYER 25 //Same as handcuffs, for legcuffs
#define L_HAND_LAYER 26 //Left-hand item
#define R_HAND_LAYER 27 //Right-hand item
#define WING_LAYER 28 //VOREStation edit. Simply move this up a number if things are added.
#define TAIL_LAYER_ALT 29 //VOREStation edit. Simply move this up a number if things are added.
#define MODIFIER_EFFECTS_LAYER 30 //Effects drawn by modifiers
#define FIRE_LAYER 31 //'Mob on fire' overlay layer
#define WATER_LAYER 32 //'Mob submerged' overlay layer
#define TARGETED_LAYER 33 //'Aimed at' overlay layer
#define TOTAL_LAYERS 33 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
#define HAIR_ACCESSORY_LAYER 20 //VOREStation edit. Simply move this up a number if things are added.
#define EARS_LAYER 21 //Both ear-slot items (combined image)
#define EYES_LAYER 22 //Mob's eyes (used for glowing eyes)
#define FACEMASK_LAYER 23 //Mask-slot item
#define HEAD_LAYER 24 //Head-slot item
#define HANDCUFF_LAYER 25 //Handcuffs, if the human is handcuffed, in a secret inv slot
#define LEGCUFF_LAYER 26 //Same as handcuffs, for legcuffs
#define L_HAND_LAYER 27 //Left-hand item
#define R_HAND_LAYER 28 //Right-hand item
#define WING_LAYER 29 //VOREStation edit. Simply move this up a number if things are added.
#define TAIL_LAYER_ALT 30 //VOREStation edit. Simply move this up a number if things are added.
#define MODIFIER_EFFECTS_LAYER 31 //Effects drawn by modifiers
#define FIRE_LAYER 32 //'Mob on fire' overlay layer
#define WATER_LAYER 33 //'Mob submerged' overlay layer
#define TARGETED_LAYER 34 //'Aimed at' overlay layer
#define TOTAL_LAYERS 34 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
//////////////////////////////////
/mob/living/carbon/human
@@ -407,6 +408,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//Reset our hair
remove_layer(HAIR_LAYER)
remove_layer(HAIR_ACCESSORY_LAYER) //VOREStation Edit
update_eyes() //Pirated out of here, for glowing eyes.
var/obj/item/organ/external/head/head_organ = get_organ(BP_HEAD)
@@ -464,10 +466,26 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(head_organ.transparent) //VOREStation Edit. For better slime limbs.
face_standing += rgb(,,,120)
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER)
apply_layer(HAIR_LAYER)
// VOREStation Edit - START
var/icon/hair_acc_s = get_hair_accessory_overlay()
var/image/hair_acc_s_image = null
if(hair_acc_s)
if(hair_accessory_style.ignores_lighting)
hair_acc_s_image = image(hair_acc_s)
hair_acc_s_image.plane = PLANE_LIGHTING_ABOVE
hair_acc_s_image.appearance_flags = appearance_flags
if (hair_acc_s_image)
overlays_standing[HAIR_ACCESSORY_LAYER] = hair_acc_s_image
apply_layer(HAIR_ACCESSORY_LAYER)
return
overlays_standing[HAIR_ACCESSORY_LAYER] = image(hair_acc_s, layer = BODY_LAYER+HAIR_ACCESSORY_LAYER)
apply_layer(HAIR_ACCESSORY_LAYER)
// VOREStation Edit - END
/mob/living/carbon/human/update_eyes()
if(QDESTROYING(src))
return
+8 -2
View File
@@ -13,8 +13,7 @@
1.2 * src.getShockFireLoss() + \
1.2 * src.getShockBruteLoss() + \
1.7 * src.getCloneLoss() + \
2 * src.halloss + \
-1 * src.chem_effects[CE_PAINKILLER]
2 * src.halloss
if(src.slurring)
src.traumatic_shock -= 20
@@ -27,6 +26,13 @@
src.traumatic_shock += 30
else if(organ.is_dislocated())
src.traumatic_shock += 15
// Some individuals/species are more or less supectible to pain. Default trauma_mod = 1. Does not affect painkillers
if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
H.traumatic_shock *= H.species.trauma_mod
src.traumatic_shock += -1 * src.chem_effects[CE_PAINKILLER]
if(src.traumatic_shock < 0)
src.traumatic_shock = 0
@@ -689,6 +689,7 @@
max_item_count = 10
startdrain = 100
analyzer = TRUE
recycles = FALSE
/obj/item/device/dogborg/sleeper/compactor/decompiler
name = "Matter Decompiler"
@@ -704,6 +705,7 @@
icon_state = "decompiler"
max_item_count = 20
delivery = TRUE
recycles = FALSE
/obj/item/device/dogborg/sleeper/compactor/supply //Miner borg belly
name = "Supply Satchel"
@@ -711,5 +713,6 @@
icon_state = "sleeperc"
injection_chems = list("glucose","inaprovaline","tricordrazine")
max_item_count = 10
recycles = FALSE
#undef SLEEPER_INJECT_COST
@@ -0,0 +1,75 @@
// Beeg bug do beeg noms. It also glows in the dark for maximum spook power.
/datum/category_item/catalogue/fauna/sect_queen //TODO: VIRGO_LORE_WRITING_WIP
name = "Creature - Sect Queen"
desc = "A massively-sized insect that is native, although rarely spotted outside of its colony, to Virgo 3B. \
It bears the combined physical traits of several of Earth's insects. Its forelegs have claws bearing serrated \
edges, which it uses in both self-defense and during its hunts. Covering its body is a layer of thick and \
protective chitin, resilient enough to absorb most physical damage. It is not uncommon for a queen to go out \
alone to search for potential new nesting grounds... or perhaps it does so to seek bigger prey that its much \
smaller drones might be unable to acquire. The lack of chitin on the underside of its abdomen is deliberate, \
as the flesh is very elastic and stretchable, allowing the queen to carry multiple large prey inside of its \
stomach with ease."
value = CATALOGUER_REWARD_MEDIUM
/mob/living/simple_mob/vore/sect_queen
name = "sect queen"
desc = "A titanic, chitin-plated insectoid whose multiple crimson eyes cast a frightful red light. Its \
abdomen has an unusually soft and... flexible-looking underbelly..."
icon_dead = "sect_queen_dead"
icon_living = "sect_queen"
icon_state = "sect_queen"
icon = 'icons/mob/vore64x64.dmi'
vis_height = 64
has_eye_glow = TRUE
faction = "insects"
maxHealth = 200
health = 200
see_in_dark = 8
melee_damage_lower = 8
melee_damage_upper = 16
grab_resist = 100 // you can't even wrap your arms around this thing, how could you hope to grab it???
vore_active = 1
vore_capacity = 2
vore_pounce_chance = 70 // v hongry buggo
vore_icons = SA_ICON_LIVING
//Beeg bug don't give a fuck about atmos. Something something, phoron mutation.
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
response_help = "pats"
response_disarm = "tries to shove"
response_harm = "hits"
attacktext = list("slashed")
friendly = list("nuzzles", "caresses", "headbumps against", "leans against", "nibbles affectionately on", "antennae tickles") // D'awww
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
max_buckled_mobs = 1 //Yeehaw
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
mount_offset_y = 26
ai_holder_type = /datum/ai_holder/simple_mob/melee
say_list_type = /datum/say_list/sect_queen
/datum/say_list/sect_queen
say_got_target = list("chitters angrily!")
@@ -181,6 +181,7 @@
/datum/ai_holder/simple_mob/woof/cass
retaliate = 0
violent_breakthrough = 0
/datum/ai_holder/simple_mob/ranged/kiting/threatening/woof
hostile = 1
@@ -0,0 +1,68 @@
// Basically xenos that have been more or less neutered to be balanced as maintenance preds.
/datum/category_item/catalogue/fauna/xeno_defanged //TODO: VIRGO_LORE_WRITING_WIP
name = "Creature - \"Defanged\" Xenomorph"
desc = "Under normal circumstances, a xenomorph is more than capable of parasitic reproduction, discharging \
digestive acid at high velocities, and utilizing the blade at the blade at the end of its long tail as a \
far-reaching melee weapon. However, this particular instance of xenomorph is capable of none of these things. \
\"Defanged\" is not used literally in this case when referring to these types of xenomorphs since their fangs, \
ironically, are still intact. What it does mean is that the creature's other more lethal components have been \
surgically removed, usually for the purposes of keeping it in captivity in the same way that one may de-claw a \
lion in for keeping it in a zoo. This xenomorph has had its reproductive organs, as well as its acid-spitting \
glands, and the blade at the end of its tail removed. Its claws and fangs however are left intact. The ethicality \
of this practice on captive xenomorphs has been frequently challenged by animal activists."
value = CATALOGUER_REWARD_MEDIUM
/mob/living/simple_mob/vore/xeno_defanged
name = "defanged xenomorph"
desc = "A chitin-covered bipedal creature who appears to have had its means of reproduction and acid-spitting \
removed. It still looks nasty all the same though!"
icon_dead = "xeno_dead"
icon_living = "xeno"
icon_state = "xeno"
icon = 'icons/mob/vore64x64.dmi'
vis_height = 64
faction = "xeno"
maxHealth = 150
health = 150
see_in_dark = 10
//Something something, phoron mutation.
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
melee_damage_lower = 8
melee_damage_upper = 16
grab_resist = 50 // they're still slippery buggers!
vore_active = 1
vore_capacity = 2
vore_pounce_chance = 50
vore_icons = SA_ICON_LIVING
response_help = "pats"
response_disarm = "tries to shove"
response_harm = "hits"
attacktext = list("slashed")
friendly = list("nuzzles", "caresses", "headbumps against", "leans against", "nibbles affectionately on")
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
ai_holder_type = /datum/ai_holder/simple_mob/melee
say_list_type = /datum/say_list/xeno_defanged
/datum/say_list/xeno_defanged
say_got_target = list("hisses angrily!")
+4 -4
View File
@@ -1025,7 +1025,7 @@ mob/proc/yank_out_object()
set hidden = TRUE
if(!canface())
return FALSE
if(pixel_y <= 16)
if(pixel_y <= (default_pixel_y + 16))
pixel_y++
is_shifted = TRUE
@@ -1033,7 +1033,7 @@ mob/proc/yank_out_object()
set hidden = TRUE
if(!canface())
return FALSE
if(pixel_y >= -16)
if(pixel_y >= (default_pixel_y - 16))
pixel_y--
is_shifted = TRUE
@@ -1041,7 +1041,7 @@ mob/proc/yank_out_object()
set hidden = TRUE
if(!canface())
return FALSE
if(pixel_x >= -16)
if(pixel_x >= (default_pixel_x - 16))
pixel_x--
is_shifted = TRUE
@@ -1049,7 +1049,7 @@ mob/verb/shifteast()
set hidden = TRUE
if(!canface())
return FALSE
if(pixel_x <= 16)
if(pixel_x <= (default_pixel_x + 16))
pixel_x++
is_shifted = TRUE
// End VOREstation edit
+17
View File
@@ -0,0 +1,17 @@
// The alien ships should use fancy consoles and things
/obj/machinery/computer/ship/helm/abductor
icon = 'icons/obj/abductor.dmi'
icon_state = "console"
/obj/machinery/computer/ship/engines/abductor
icon = 'icons/obj/abductor.dmi'
icon_state = "camera_flipped"
/obj/machinery/computer/ship/navigation/abductor
icon = 'icons/obj/abductor.dmi'
icon_state = "camera"
/obj/machinery/computer/ship/sensors/abductor
icon = 'icons/obj/abductor.dmi'
icon_state = "console"
icon_screen = null
+4
View File
@@ -85,6 +85,10 @@ proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A)
if (!M)
return
// Is the landmark still on the map.
if(!isturf(M.loc))
return
// Don't let AI eyes yeet themselves off the map
if(istype(A, /mob/observer/eye))
return
+2 -1
View File
@@ -202,7 +202,8 @@
/obj/item/weapon/pen/reagent/sleepy/New()
..()
reagents.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin//30 Chloral seems to be fatal, reducing it to 22./N
reagents.add_reagent("chloralhydrate", 1) //VOREStation Edit
reagents.add_reagent("stoxin", 14) //VOREStation Add
/*
@@ -376,6 +376,22 @@
name = "Robust Harvest"
id = "robustharvest"
/datum/reagent/toxin/fertilizer/tannin
name = "tannin"
id = "tannin"
description = "A chemical found in some plants as a natural pesticide. It may also aid in regulating growth."
taste_description = "puckering"
taste_mult = 1.2
reagent_state = LIQUID
strength = 1.5
color = "#e67819"
/datum/reagent/toxin/fertilizer/tannin/touch_obj(var/obj/O, var/volume)
if(istype(O, /obj/item/stack/hairlesshide))
var/obj/item/stack/hairlesshide/HH = O
HH.rapidcure(round(volume))
..()
/datum/reagent/toxin/plantbgone
name = "Plant-B-Gone"
id = "plantbgone"
@@ -65,3 +65,9 @@
/obj/item/weapon/reagent_containers/chem_disp_cartridge/nutriment,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/protein
)
/obj/machinery/chemical_dispenser/ert/specialops/abductor
name = "chemical dispenser"
icon = 'icons/obj/abductor_vr.dmi'
icon_state = "dispenser_2way"
desc = "A mysterious machine which can fabricate many chemicals."
+22
View File
@@ -40,6 +40,18 @@
default_apply_parts()
/obj/machinery/conveyor/proc/toggle_speed(var/forced)
if(forced)
speed_process = forced
else
speed_process = !speed_process // switching gears
if(speed_process) // high gear
STOP_MACHINE_PROCESSING(src)
START_PROCESSING(SSfastprocess, src)
else // low gear
STOP_PROCESSING(SSfastprocess, src)
START_MACHINE_PROCESSING(src)
/obj/machinery/conveyor/proc/setmove()
if(operating == FORWARDS)
movedir = forwards
@@ -186,6 +198,7 @@
var/list/conveyors // the list of converyors that are controlled by this switch
anchored = 1
var/speed_active = FALSE // are the linked conveyors on SSfastprocess?
@@ -200,6 +213,15 @@
if(C.id == id)
conveyors += C
/obj/machinery/conveyor_switch/proc/toggle_speed(var/forced)
speed_active = !speed_active // switching gears
if(speed_active) // high gear
for(var/obj/machinery/conveyor/C in conveyors)
C.toggle_speed(TRUE)
else // low gear
for(var/obj/machinery/conveyor/C in conveyors)
C.toggle_speed(FALSE)
// update the icon depending on the position
/obj/machinery/conveyor_switch/proc/update()
+43 -1
View File
@@ -15,6 +15,7 @@ Note: Must be placed within 3 tiles of the R&D Console
use_power = USE_POWER_IDLE
idle_power_usage = 30
active_power_usage = 2500
var/rped_recycler_ready = TRUE
/obj/machinery/r_n_d/destructive_analyzer/Initialize()
. = ..()
@@ -22,7 +23,7 @@ Note: Must be placed within 3 tiles of the R&D Console
/obj/machinery/r_n_d/destructive_analyzer/RefreshParts()
var/T = 0
for(var/obj/item/weapon/stock_parts/S in src)
for(var/obj/item/weapon/stock_parts/S in component_parts)
T += S.rating
decon_mod = T * 0.1
@@ -76,3 +77,44 @@ Note: Must be placed within 3 tiles of the R&D Console
busy = 0
return 1
return
/obj/machinery/r_n_d/destructive_analyzer/MouseDrop_T(atom/dropping, mob/living/user)
if(istype(dropping, /obj/item/weapon/storage/part_replacer))
var/obj/item/weapon/storage/part_replacer/replacer = dropping
replacer.hide_from(user)
if(!linked_console)
to_chat(user, "<span class='notice'>\The [src] must be linked to an R&D console first.</span>")
return 0
if(!linked_console.linked_lathe)
to_chat(user, "<span class='notice'>Link a protolathe to [src]'s R&D console first.</span>")
return 0
if(!rped_recycler_ready)
to_chat(user, "<span class='notice'>\The [src]'s stock parts recycler isn't ready yet.</span>")
return 0
var/obj/machinery/r_n_d/protolathe/lathe_to_fill = linked_console.linked_lathe
var/lowest_rating = INFINITY // We want the lowest-part tier rating in the RPED so we only recycle the lowest-tier parts.
for(var/obj/item/B in replacer.contents)
if(B.rped_rating() < lowest_rating)
lowest_rating = B.rped_rating()
if(lowest_rating == INFINITY)
to_chat(user, "<span class='notice'>Mass part deconstruction attempt canceled - no valid parts for recycling detected.</span>")
return 0
for(var/obj/item/B in replacer.contents)
if(B.rped_rating() > lowest_rating)
continue
if(lathe_to_fill && B.matter) // Sending salvaged materials to the lathe...
for(var/t in B.matter)
if(t in lathe_to_fill.materials)
lathe_to_fill.materials[t] += B.matter[t] * src.decon_mod
qdel(B)
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
rped_recycler_ready = FALSE
addtimer(CALLBACK(src, .proc/rped_ready), 5 SECONDS)
to_chat(user, "<span class='notice'>You deconstruct all the parts of rating [lowest_rating] in [replacer] with [src].</span>")
return 1
else
..()
/obj/machinery/r_n_d/destructive_analyzer/proc/rped_ready()
rped_recycler_ready = TRUE
playsound(get_turf(src), 'sound/machines/chime.ogg', 50, 1)
@@ -5,3 +5,11 @@
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
build_path = /obj/item/rig_module/rescue_pharm
/datum/design/item/mechfab/rigsuit/mounted_sizegun
name = "hardsuit mounted size gun"
desc = "A suit mounted size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
id = "rig_gun_sizegun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/rig_module/mounted/sizegun
+12
View File
@@ -0,0 +1,12 @@
/obj/machinery/transhuman/resleever/abductor
icon = 'icons/obj/abductor_vr.dmi'
icon_state = "implantchair"
/obj/machinery/computer/transhuman/resleeving/abductor
icon = 'icons/obj/abductor.dmi'
icon_state = "console"
/obj/machinery/clonepod/transhuman/full/abductor
icon = 'icons/obj/abductor_vr.dmi'
icon_state = "pod_0"
name = "clonepod"
+1
View File
@@ -172,6 +172,7 @@ h1.alert, h2.alert {color: #000000;}
.say_quote {font-family: Georgia, Verdana, sans-serif;}
.terminus {font-family: "Times New Roman", Times, serif, sans-serif}
.interface {color: #330033;}
.spacer {color: #9c660b;} /* VOREStation Add */
.black {color: #000000;}
.darkgray {color: #808080;}
@@ -10,6 +10,16 @@
/mob/living/carbon/human
// Horray Furries!
var/datum/sprite_accessory/hair_accessory/hair_accessory_style = null
var/r_acc = 30
var/g_acc = 30
var/b_acc = 30
var/r_acc2 = 30
var/g_acc2 = 30
var/b_acc2 = 30
var/r_acc3 = 30
var/g_acc3 = 30
var/b_acc3 = 30
var/datum/sprite_accessory/ears/ear_style = null
var/r_ears = 30
var/g_ears = 30
@@ -183,16 +183,18 @@
icon_sprite_tag = "wolf" //This could be modified later.
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf dual-color (Taur)"
name = "Wolf 3-color (Taur)"
icon_state = "wolf_s"
extra_overlay = "wolf_markings"
extra_overlay2 = "wolf_markings_2"
//icon_sprite_tag = "wolf2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
name = "Fat Wolf dual-color (Taur)"
name = "Fat Wolf 3-color (Taur)"
icon_state = "fatwolf_s"
extra_overlay = "fatwolf_markings"
extra_overlay2 = "wolf_markings_2"
//icon_sprite_tag = "fatwolf2c"
/datum/sprite_accessory/tail/taur/wolf/synthwolf
@@ -205,6 +207,7 @@
name = "Skunk (Taur)"
icon_state = "skunk_s"
extra_overlay = "skunk_markings"
extra_overlay2 = "skunk_markings_2"
icon_sprite_tag = "skunk"
/datum/sprite_accessory/tail/taur/naga
@@ -401,16 +404,18 @@
ani_state = "fatfeline_w"
/datum/sprite_accessory/tail/taur/feline/feline_2c
name = "Feline dual-color (Taur)"
name = "Feline 3-color (Taur)"
icon_state = "feline_s"
extra_overlay = "feline_markings"
extra_overlay2 = "feline_markings_2"
//icon_sprite_tag = "feline2c"
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
name = "Fat Feline dual-color (Taur)"
name = "Fat Feline 3-color (Taur)"
icon_state = "fatfeline_s"
extra_overlay = "fatfeline_markings"
extra_overlay2 = "feline_markings_2"
//icon_sprite_tag = "fatfeline2c"
/datum/sprite_accessory/tail/taur/feline/synthfeline
@@ -495,6 +500,7 @@
name = "Otie (Taur)"
icon_state = "otie_s"
extra_overlay = "otie_markings"
extra_overlay2 = "otie_markings_2"
suit_sprites = 'icons/mob/taursuits_otie_vr.dmi'
icon_sprite_tag = "otie"
@@ -633,6 +633,24 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/forward_curled_demon_horns_bony
name = "Succubus horns, colourable"
desc = ""
icon_state = "succu-horns_b"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/forward_curled_demon_horns_bony_with_colorable_ears
name = "Succubus horns with pointy ears, colourable"
desc = ""
icon_state = "elfs"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "succu-horns_b"
/*
////////////////////////////
/ =--------------------= /
@@ -2004,3 +2022,30 @@
icon_state = "xenotailalt_fullcolour"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/*
////////////////////////////
/ =--------------------= /
/ == Misc Definitions == /
/ =--------------------= /
////////////////////////////
*/
// Yes, I have to add all of this just to make some glowy hair.
// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that?
/datum/sprite_accessory/hair_accessory
name = "You should not see this..."
icon = 'icons/mob/vore/hair_accessories_vr.dmi'
do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
var/ignores_lighting = 0 // Whether or not this hair accessory will ignore lighting and glow in the dark.
var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/desc = "You should not see this..."
/datum/sprite_accessory/hair_accessory/verie_hair_glow
name = "verie's hair glow"
desc = ""
icon_state = "verie_hair_glow"
ignores_lighting = 1
//ckeys_allowed = list("vitoras") // This probably won't come into play EVER but better safe than sorry
@@ -20,6 +20,15 @@ var/global/list/wing_icon_cache = list()
return ears_s
return null
/mob/living/carbon/human/proc/get_hair_accessory_overlay()
if(hair_accessory_style && !(head && (head.flags_inv & BLOCKHEADHAIR)))
var/icon/hair_acc_s = icon(hair_accessory_style.icon, hair_accessory_style.icon_state)
if(hair_accessory_style.do_colouration)
hair_acc_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), hair_accessory_style.color_blend_mode)
return hair_acc_s
return null
/mob/living/carbon/human/proc/get_tail_image()
//If you are FBP with tail style and didn't set a custom one
var/datum/robolimb/model = isSynthetic()
@@ -103,6 +112,7 @@ var/global/list/wing_icon_cache = list()
return image(wing_s)
// TODO - Move this to where it should go ~Leshana
/mob/proc/stop_flying()
if(QDESTROYING(src))
@@ -5,6 +5,10 @@
// Ye default implementation.
/obj/item/proc/digest_act(atom/movable/item_storage = null)
if(istype(item_storage, /obj/item/device/dogborg/sleeper))
if(istype(src, /obj/item/device/pda))
var/obj/item/device/pda/P = src
if(P.id)
P.id = null
for(var/obj/item/O in contents)
if(istype(O, /obj/item/weapon/storage/internal)) //Dump contents from dummy pockets.
for(var/obj/item/SO in O)
@@ -217,6 +217,16 @@
/obj/item/weapon/melee/fluffstuff/wolfgirlsword,
/obj/item/weapon/shield/fluff/wolfgirlshield)
// Ryumi: Nikki Yumeno
/obj/item/weapon/storage/box/fluff
name = "Nikki's Outfit Box"
desc = "Warning: Contains dangerous amounts of dork."
has_items = list(
/obj/item/weapon/rig/nikki,
/obj/item/clothing/head/fluff/nikki,
/obj/item/clothing/under/skirt/outfit/fluff/nikki,
/obj/item/clothing/shoes/fluff/nikki)
/*
Swimsuits, for general use, to avoid arriving to work with your swimsuit.
*/
@@ -935,6 +935,22 @@
worn_state = "khi_uniform_sci"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0)
/obj/item/clothing/under/rank/khi/crg //Cargo version
name = "KHI cargo suit"
desc = "Kitsuhana Heavy Industries uniform. Looks like it's in supply and cargo division colors. Even post-scarcity societies need things moved and mined sometimes."
icon_state = "khi_uniform_crg_i"
item_state = "khi_uniform_crg"
worn_state = "khi_uniform_crg"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/under/rank/khi/civ //Science version
name = "KHI civilian suit"
desc = "Kitsuhana Heavy Industries uniform. Snazzy silver trim marks this is as the general civilian branch. Smells like paperwork and bureaucracy."
icon_state = "khi_uniform_civ_i"
item_state = "khi_uniform_civ"
worn_state = "khi_uniform_civ"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/under/rank/khi/fluff/aronai //Aro fluff version
name = "KHI meditech suit"
desc = "Kitsuhana Heavy Industries uniform. This one has the colors of a resleeving or mnemonics engineer. It has 'Aronai' written inside the top."
@@ -2005,4 +2021,269 @@ Departamental Swimsuits, for general use
//BobOfBoblandia: Charles Gettler
/obj/item/clothing/head/that/fluff/gettler
name = "Charles' Top-Hat"
desc = "A special hat, removed from its owner."
desc = "A special hat, removed from its owner."
//Ryumi: Nikki Yumeno
/obj/item/clothing/under/skirt/outfit/fluff/nikki
name = "dorky outfit"
desc = "A little witch costume that looks like it's been worn as ordinary clothes. Who in their right mind would...??"
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_override = 'icons/vore/custom_onmob_vr.dmi'
icon_state = "nikki_outfit"
item_state = "nikki_outfit"
item_icons = list()
sensor_mode = 3 // I'm a dumbass and forget these all the time please understand :(
/obj/item/clothing/under/skirt/outfit/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0)
if(..())
if (M.ckey == "ryumi")
return 1
else if (M.get_active_hand() == src)
to_chat(M, "<span class='warning'>What the heck? \The [src] doesn't fit!</span>")
return 0
/obj/item/clothing/shoes/fluff/nikki
name = "non-magical boots"
desc = "Boots optimally built for a dork. They don't sparkle or anything, but you can imagine them doing that when you click the heels together."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_override = 'icons/vore/custom_onmob_vr.dmi'
icon_state = "nikki_boots"
item_state = "nikki_boots"
/obj/item/clothing/shoes/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0)
if(..())
if (M.ckey == "ryumi")
return 1
else if (M.get_active_hand() == src)
to_chat(M, "<span class='warning'>What the heck? \The [src] doesn't fit!</span>")
return 0
/obj/item/clothing/suit/fluff/nikki //see /obj/item/weapon/rig/nikki
name = "cape"
desc = "Snazzy!"
flags = null
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) // It's not armor, it's a dorky frickin cape
body_parts_covered = null // Cape ain't gonna cover a THING
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS // It will keep you toasty tho, it's more than big enough to help with that! Just wrap the thing around you when on the surface, idk
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_override = 'icons/vore/custom_onmob_vr.dmi'
icon_state = "nikki"
/obj/item/clothing/head/fluff/nikki
// I have never tryharded so much just to accomplish something so stupid as "Vore By Hat" in my entire life, and I apologize to each and every one of you.
name = "oversized witch hat"
desc = "A dork-shaped hat. Its long, pointed tip reaches far more than most hats had ought to, its wide brim complementing \
this with its tendency to droop at the ends under its own weight."
description_fluff = "Despite what Nikki Yumeno may believe, her hat is not in fact a magical artifact of teleportation magicks. \
It is however the result of clever utilization of bluespace technology combined with style. Like a classic magician's trick, \
the power of this hat lies in the hidden compartment hidden on the inside, into which a personal translocation device can be \
snapped inside. Once installed, bluespace electronics inside the hat sync with the translocator and utilize its teleportation \
technology to create a localized bluespace portal within the hole of the hat. This tiny portal will warp anything or anyone \
who makes physical contact with it to whatever beacon the translocator within is locked onto."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "nikki-hat"
item_state = "nikki-hat"
item_icons = list(
slot_l_hand_str = 'icons/vore/custom_clothes_left_hand_vr.dmi',
slot_r_hand_str = 'icons/vore/custom_clothes_right_hand_vr.dmi',
slot_head_str = 'icons/vore/custom_onmob_32x48_vr.dmi'
)
flags_inv = HIDEEARS
w_class = ITEMSIZE_LARGE // THIS HAT IS FUCKIN HUGE YO
var/owner = "ryumi"
var/obj/item/device/perfect_tele/translocator = null // The translocator installed inside, if there is one. Gotta go out and get it first!
/obj/item/clothing/head/fluff/nikki/verb/verb_translocator_unequip()
set category = "Object"
set name = "Nikki's Hat - Unequip Translocator"
set src in usr
translocator_unequip(translocator, usr)
/obj/item/clothing/head/fluff/nikki/proc/translocator_equip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user)
if (do_after(user, 2 SECONDS, T))
user.unEquip(T)
translocator_unequip(translocator, user)
T.forceMove(src)
translocator = T
user.show_message("[bicon(src)]*click!*")
playsound(src, 'sound/machines/click.ogg', 30, 1)
/obj/item/clothing/head/fluff/nikki/proc/translocator_unequip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user)
if (translocator)
if (user)
user.put_in_hands(T)
user.show_message("[bicon(src)]*click!*")
else
translocator.forceMove(get_turf(src))
translocator = null
playsound(src, 'sound/machines/click.ogg', 30, 1)
/obj/item/clothing/head/fluff/nikki/proc/teleport_fail(mob/user, mob/target)
if (target != user)
user.visible_message("<span class='notice'>[user] harmlessly bops [target] with \the [src].</span>", \
"<span class='notice'>\The [src] harmlessly bops [target]. The hat seems... unwilling?</span>")
else
user.visible_message("<span class='notice'>\The [src] flops over [user]'s' head for a moment, but they seem alright.</span>", \
"<span class='notice'>\The [src] flops over your head for a moment, but you correct it without issue. There we go!</span>")
/obj/item/clothing/head/fluff/nikki/proc/hat_warp_checks(var/mob/living/target, mob/user, proximity_flag)
if (!proximity_flag)
return 0
if (!translocator)
to_chat(user, "<span class='warning'>\The [src] doesn't have a translocator inside it yet, you goof!</span>")
return 0
if (target.ckey == owner && target != user) // ur not getting me that easy sonny jim......
to_chat(user, "<span class='warning'>You think to turn \the [src] on its creator?! <b>FOOOOOOOOL.</b></span>")
to_chat(user, "<span class='notice'>From seemingly nowhere you hear echoing, derisive laughter, accompanied by a stock laugh track and... Are those bike horns?</span>")
return 0
if (!istype(target))
to_chat(user, "<span class='warning'>\The [src] isn't a valid target!</span>")
return 0
// Because other mobs (i.e. monkeys) apparently have dropnom prey set to 0, we check SPECIFICALLY for humans' dropnom setting.
if (target.type == /mob/living/carbon/human && !target.can_be_drop_prey)
teleport_fail(user, target)
return 0
if (!translocator.teleport_checks(target, user))
return 0
else return 1
/obj/item/clothing/head/fluff/nikki/attackby(obj/item/weapon/I as obj, mob/user as mob)
if (istype(I, /obj/item/device/perfect_tele) && user.get_inactive_hand() == src)
if (translocator)
visible_message("<span class='notice'>[user] starts to pull \a [translocator] out of \the [src] to swap it out with \the [I]...</span>", \
"<span class='notice'>You start pulling \the [translocator] pops out of its compartment with a soft 'click' as you replace it with \the [I]....</span>")
else
visible_message("<span class='notice'>[user] begins slipping \the [I] into \the [src]...</span>", \
"<span class='notice'>You begin to snap \the [I] into a small, hidden compartment inside \the [src]...</span>")
// This works for both adding and replacing a translocator
translocator_equip(I, user)
return
else if (translocator)
translocator.attackby(I, user)
return
..()
/obj/item/clothing/head/fluff/nikki/get_description_interaction()
. = ..()
if (translocator)
. += "It has \a [translocator] inside of it. Alt-click while holding it on your inactive hand to remove it."
. += "Otherwise, this hat functions exactly as the translocator it has inside while still being a sweet head accessory."
else
. += "A translocator can be placed inside of it! While holding the hat in your inactive hand, use a translocator on it to slip it inside."
. += "After doing this, it will function as both a head accessory and teleportation device."
/obj/item/clothing/head/fluff/nikki/attack_hand(mob/user)
if (translocator && (user.get_inactive_hand() == src))
translocator.unload_ammo(user, ignore_inactive_hand_check = 1)
return
..()
/obj/item/clothing/head/fluff/nikki/AltClick(mob/user)
if (translocator && (user.get_inactive_hand() == src))
translocator_unequip(translocator, user)
/obj/item/clothing/head/fluff/nikki/attack_self(mob/user)
..()
if (translocator)
translocator.attack_self(user, user)
return
else
to_chat(user, "<span_class='warning'>\The [src] doesn't have a translocator inside it right now.</span>")
return
/obj/item/clothing/head/fluff/nikki/examine(mob/user) // If it has a translocator installed, make it very obvious to viewers that something WEIRD is going on with this hat.
. = ..()
if (translocator)
. += "Weird... <span class='danger'>You can't see the bottom of the hole inside the hat...</span>"
/obj/item/clothing/head/fluff/nikki/equipped(mob/living/carbon/human/user, slot)
. = ..()
if (slot == slot_head && translocator && user.ckey != owner) // This way we don't unnecessarily spam the chat with hat/translocator errors
// hey, are we actually able to teleport this poor person?
if (hat_warp_checks(user, user, proximity_flag = 1))
// YOU FOOL! YOU HAVE ACTIVATED MY STAND, 「VORE BY HAT」!
src.visible_message("<span class='danger'>\The [src] falls over [user]'s head... and somehow falls over the rest of their body, causing them to vanish inside. Where did they go?!</span>", \
"<span class='danger'>The hat falls over your head as you put it on, enveloping you in a bright green light! <b>Uh oh.</b></span>")
var/uh_oh = pick(translocator.beacons)
user.remove_from_mob(src, get_turf(user))
translocator.destination = translocator.beacons[uh_oh]
translocator.afterattack(user, user, proximity = 1, ignore_fail_chance = 1)
add_attack_logs(user, user, "Tried to put on \the [src] and was involuntarily teleported by it (via \the [translocator] within)!")
return
/obj/item/clothing/head/fluff/nikki/afterattack(var/mob/living/target, mob/user, proximity_flag, click_parameters)
// If the hat is willing to cooperate with the holder...
if (hat_warp_checks(target, user, proximity_flag))
// Silly fluffed up styles of teleporting people based on user intent.
switch (user.a_intent)
if (I_HELP)
user.visible_message("<span class='notice'>[user] guides \the [target] to the bottomless hole within \the [src]. They begin to climb inside...</span>")
if (do_after(user, 5 SECONDS, target))
translocator.afterattack(target, user, proximity_flag)
if (I_DISARM)
user.visible_message("<span class='danger'>[user] plops \the [src] onto \the [target]'s head!</span>")
translocator.afterattack(target, user, proximity_flag)
if (I_GRAB)
user.visible_message("<span class='danger'>[user] begins stuffing [target] into \the [src]!</span>")
if (do_after(user, 5 SECONDS, target))
translocator.afterattack(target, user, proximity_flag)
if (I_HURT)
user.visible_message("<span class='danger'>[user] swipes \the [src] over \the [target]!</span>")
translocator.afterattack(target, user, proximity_flag)
add_attack_logs(user, target, "Teleported [target] with via \the [src]'s [translocator]!")
else ..()
//Vitoras: Verie
/obj/item/clothing/suit/storage/hooded/fluff/verie
name = "distressingly cyan hoodie"
desc = "A cute, brightly colored hoodie perfect for occasional concealment of a verie silly nerd. A little tag inside \
the collar bears only the letters \"VW.\""
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "verie_hoodie"
icon_override = 'icons/vore/custom_onmob_vr.dmi'
item_state = "verie_hoodie"
hoodtype = /obj/item/clothing/head/hood/winter/fluff/verie
var/owner = "vitoras"
/obj/item/clothing/suit/storage/hooded/fluff/verie/ToggleHood()
// If you ain't the robutt, you probably don't have the hair style that the hooded icon states are made for. sorry!
var/mob/living/carbon/human/H = src.loc
if (H.ckey != owner)
to_chat(H, "Strange... the hood doesn't go over your head no matter how you try to put it up.")
return
..()
/obj/item/clothing/head/hood/winter/fluff/verie
name = "not-so-cyan hood"
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "verie_hood"
icon_override = 'icons/vore/custom_onmob_vr.dmi'
item_state = "verie_hood"
/obj/item/clothing/under/fluff/verie
name = "salaciously stylised suit"
desc = "It's kind of difficult to identify the type of material that makes up this form-fitting suit. It is stretchy and flexible, but \
is firm in its toughness, and clings tightly to the skin. Come to think of it, it glistens quite a bit in the light and- \
oh god it's latex.\
\n... A <b>Verie</b> appropriate material choice indeed." //the wordplay never ends
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "veriesuit"
icon_override = 'icons/vore/custom_onmob_vr.dmi'
item_state = "veriesuit"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET|ARMS|HANDS
@@ -1254,6 +1254,52 @@
else
return 1
//Ryumi - Nikki Yumeno
/obj/item/weapon/rig/nikki
name = "weird necklace"
desc = "A necklace with a brilliantly blue crystal encased in protective glass."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_override = 'icons/vore/custom_onmob_vr.dmi'
suit_type = "probably not magical"
icon_state = "nikki"
w_class = ITEMSIZE_SMALL // It is after all only a necklace
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) // this isn't armor, it's a dorky frickin cape
siemens_coefficient = 0.9
slowdown = 0
offline_slowdown = 0
offline_vision_restriction = 0
siemens_coefficient = 0.9
chest_type = /obj/item/clothing/suit/fluff/nikki
req_access = list()
req_one_access = list()
helm_type = null
glove_type = null
boot_type = null
allowed = list(
/obj/item/device/flashlight,
/obj/item/weapon/tank,
/obj/item/device/suit_cooling_unit,
/obj/item/weapon/storage,
)
/obj/item/weapon/rig/nikki/attackby(obj/item/W, mob/living/user)
//This thing accepts ONLY mounted sizeguns. That's IT. Nothing else!
if(open && istype(W,/obj/item/rig_module) && !istype(W,/obj/item/rig_module/mounted/sizegun))
to_chat(user, "<span class='danger'>\The [src] only accepts mounted size gun modules.</span>")
return
..()
/obj/item/weapon/rig/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0) // Feel free to (try to) put Nikki's hat on! The necklace though is a flat-out no-go.
if(..())
if (M.ckey == "ryumi")
return 1
else if (M.get_active_hand() == src)
to_chat(M, "<span class='warning'>For some reason, the necklace seems to never quite get past your head when you try to put it on... Weird, it looked like it would fit.</span>")
return 0
//Nickcrazy - Damon Bones Xrim
/obj/item/clothing/suit/storage/toggle/bomber/bombersec
name = "Security Bomber Jacket"
@@ -1308,4 +1354,53 @@
/obj/item/weapon/reagent_containers/food/drinks/glass2/fluff/claraflask/update_icon()
..()
name = initial(name)
desc = initial(desc)
desc = initial(desc)
//Vitoras: Verie
/obj/item/weapon/fluff/verie
name = "glowy hairbrush"
desc = "A pulse of light periodically zips across the top of this blue brush. This... is not an ordinary hair care tool. \
A small inscription can be seen in one side of the brush: \"THIS DEVICE IS ONLY COMPATIBLE WITH MODEL <b>RI</b> \
POSITRONICS IN A MODEL <b>E</b> CHASSIS.\""
icon = 'icons/vore/custom_items_vr.dmi'
icon_state = "verie_brush"
w_class = ITEMSIZE_TINY
var/owner = "vitoras"
/obj/item/weapon/fluff/verie/attack_self(mob/living/carbon/human/user)
if (istype(user))
// It's only made for Verie's chassis silly!
if (user.ckey != owner)
to_chat(user, "<span class='warning'>The brush's teeth are far too rough to even comb your hair. Apparently, \
this device was not made for people like you.</span>")
return
if (!user.hair_accessory_style)
var/datum/sprite_accessory/hair_accessory/verie_hair_glow/V = new(user)
user.hair_accessory_style = V
user.update_hair()
user.visible_message("[user] combs her hair. \The [src] leaves behind glowing cyan highlights as it passes through \
her black strands.", \
"<span class='notice'>You brush your hair. \The [src]'s teeth begin to vibrate and glow as they react to your nanites. \
The teeth stimulate the nanites in your hair strands until your hair give off a brilliant, faintly pulsing \
cyan glow!</span>")
else
user.visible_message("[user] combs her hair. \The [src] brushes away her glowing cyan highlights. Neat!", \
"<span class='notice'>You brush your hair. \The [src]'s teeth wipe away the glowing streaks in your hair \
like a sponge scrubbing away a stain.</span>")
user.hair_accessory_style = null
for(var/datum/sprite_accessory/hair_accessory/verie_hair_glow/V in user)
to_chat(user, "<span class='warning'>found a V to delete!</span>")
qdel(V)
user.update_hair()
else
to_chat(user, "<span class='warning'>\The [src] isn't compatible with your body as it is now.</span>")
+5
View File
@@ -82,3 +82,8 @@
/obj/item/projectile/beam/sizelaser/grow
set_size = 2.0 //200% of current size
/obj/item/weapon/gun/energy/sizegun/mounted
name = "mounted size gun"
self_recharge = 1
use_external_power = 1
+6 -1
View File
@@ -1,5 +1,4 @@
some~user - Species
admiraldragon - Vox
aetherelemental - Daemon
alphaprime1 - Protean
@@ -28,6 +27,7 @@ khanivore - Protean
killjaden - Protean
ktccd - Diona
magpiemayhem - Vox
marco_barko - Protean
mewchild - Diona
mewchild - Vox
mrsebbi - Xenochimera
@@ -35,8 +35,11 @@ natje - Xenochimera
nerdass - Protean
ontejbjoav - Diona
oreganovulgaris - Xenochimera
owwy - Black-Eyed Shadekin
oxenfree - Protean
paradoxspace - Xenochimera
pearlprophet - Protean
pemdesos - Protean
phoenixx0 - Vox
radiantaurora - Protean
rapidvalj - Vox
@@ -61,6 +64,7 @@ tastypred - Black-Eyed Shadekin
tastypred - Xenochimera
tastypred - Protean
timidvi - Diona
trikonei - Protean
varonis - Xenochimera
verkister - Xenochimera
vitoras - Protean
@@ -71,3 +75,4 @@ xioen - Xenochimera
xonkon - Protean
zalvine - Shadekin Empathy
zammyman215 - Vox
+45
View File
@@ -0,0 +1,45 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: KasparoVy
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- imageadd: Adds orange Teshari goggles, selectable in the loadout.
- imageadd: Adds blindfold & new white (recolorable) blindfold to loadout.
- imageadd: Adds species-fitted Teshari ring sprites.
- imageadd: Adds species-fitted Teshari hudpatches & white blindfold.
- imageadd: Adds full selection of Teshari belted cloaks.
- imageadd: Adds full selection of non-job Teshari hooded cloaks.
- rscadd: Adds a bunch of Teshari worksuits (sprites already existed).
- imageadd: Adds some species-fitted Teshari jacket accessories (tan, charcoal, navy, burgundy, checkered).
- tweak: Updates all Teshari undercoats and cloaks with new sprites from downstreams.
- fix: Fixes Teshari captain glove sprites.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 814 KiB

After

Width:  |  Height:  |  Size: 812 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

After

Width:  |  Height:  |  Size: 697 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 KiB

After

Width:  |  Height:  |  Size: 650 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Some files were not shown because too many files have changed in this diff Show More