mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-07-18 19:53:35 +01:00
Polaris December Sync
This commit is contained in:
@@ -256,7 +256,7 @@ Ccomp's first proc.
|
||||
/client/proc/allow_character_respawn()
|
||||
set category = "Special Verbs"
|
||||
set name = "Allow player to respawn"
|
||||
set desc = "Let's the player bypass the 15 minute wait to respawn or allow them to re-enter their corpse."
|
||||
set desc = "Let's the player bypass the wait to respawn or allow them to re-enter their corpse."
|
||||
if(!holder)
|
||||
src << "Only administrators and moderators may use this command."
|
||||
var/list/ghosts= get_ghosts(1,1)
|
||||
@@ -278,8 +278,8 @@ Ccomp's first proc.
|
||||
G.can_reenter_corpse = 1
|
||||
|
||||
G:show_message(text("\blue <B>You may now respawn. You should roleplay as if you learned nothing about the round during your time with the dead.</B>"), 1)
|
||||
log_admin("[key_name(usr)] allowed [key_name(G)] to bypass the 15 minute respawn limit")
|
||||
message_admins("Admin [key_name_admin(usr)] allowed [key_name_admin(G)] to bypass the 15 minute respawn limit", 1)
|
||||
log_admin("[key_name(usr)] allowed [key_name(G)] to bypass the respawn time limit")
|
||||
message_admins("Admin [key_name_admin(usr)] allowed [key_name_admin(G)] to bypass the respawn time limit", 1)
|
||||
|
||||
|
||||
/client/proc/toggle_antagHUD_use()
|
||||
|
||||
@@ -21,7 +21,7 @@ var/list/gear_datums = list()
|
||||
if(!use_name)
|
||||
error("Loadout - Missing display name: [G]")
|
||||
continue
|
||||
if(!initial(G.cost))
|
||||
if(isnull(initial(G.cost)))
|
||||
error("Loadout - Missing cost: [G]")
|
||||
continue
|
||||
if(!initial(G.path))
|
||||
|
||||
@@ -38,6 +38,10 @@
|
||||
display_name = "Security HUD, prescription (Security)"
|
||||
path = /obj/item/clothing/glasses/hud/security/prescription
|
||||
|
||||
/datum/gear/eyes/security/sunglasshud
|
||||
display_name = "Security HUD, sunglasses (Security)"
|
||||
path = /obj/item/clothing/glasses/sunglasses/sechud
|
||||
|
||||
/datum/gear/eyes/secaviators
|
||||
display_name = "Security HUD Aviators"
|
||||
path = /obj/item/clothing/glasses/sunglasses/sechud/aviator
|
||||
|
||||
@@ -57,3 +57,13 @@
|
||||
/datum/gear/gloves/evening/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/gloves/duty
|
||||
display_name = "gloves, work"
|
||||
path = /obj/item/clothing/gloves/duty
|
||||
cost = 3
|
||||
|
||||
/datum/gear/gloves/forensic
|
||||
display_name = "gloves, forensic"
|
||||
path = /obj/item/clothing/gloves/forensic
|
||||
allowed_roles = list("Detective")
|
||||
@@ -117,11 +117,35 @@
|
||||
display_name = "cap, white"
|
||||
path = /obj/item/clothing/head/soft/mime
|
||||
|
||||
/datum/gear/head/cap/mbill
|
||||
display_name = "cap, bill"
|
||||
path = /obj/item/clothing/head/soft/mbill
|
||||
|
||||
/datum/gear/head/cap/sol
|
||||
display_name = "cap, sol"
|
||||
path = /obj/item/clothing/head/soft/sol
|
||||
|
||||
/datum/gear/head/cap/expdition
|
||||
display_name = "cap, expedition"
|
||||
path = /obj/item/clothing/head/soft/sol/expedition
|
||||
|
||||
/datum/gear/head/cap/fleet
|
||||
display_name = "cap, fleet"
|
||||
path = /obj/item/clothing/head/soft/sol/fleet
|
||||
|
||||
/datum/gear/head/cowboy
|
||||
display_name = "cowboy, rodeo"
|
||||
path = /obj/item/clothing/head/cowboy_hat
|
||||
cost = 3
|
||||
|
||||
/datum/gear/head/cowboy/black
|
||||
display_name = "cowboy, black"
|
||||
path = /obj/item/clothing/head/cowboy_hat/black
|
||||
|
||||
/datum/gear/head/cowboy/wide
|
||||
display_name = "cowboy, wide"
|
||||
path = /obj/item/clothing/head/cowboy_hat/wide
|
||||
|
||||
/datum/gear/head/fedora
|
||||
display_name = "fedora, brown"
|
||||
path = /obj/item/clothing/head/fedora/brown
|
||||
@@ -154,6 +178,14 @@
|
||||
display_name = "hair flower pin, orange"
|
||||
path = /obj/item/clothing/head/hairflower/orange
|
||||
|
||||
/datum/gear/head/hairflower/white
|
||||
display_name = "hair flower pin"
|
||||
path = /obj/item/clothing/head/hairflower/white
|
||||
|
||||
/datum/gear/head/hairflower/white/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/head/hardhat
|
||||
display_name = "hardhat, yellow"
|
||||
path = /obj/item/clothing/head/hardhat
|
||||
@@ -198,7 +230,7 @@
|
||||
/datum/gear/head/santahat
|
||||
display_name = "santa hat, red (holiday)"
|
||||
path = /obj/item/clothing/head/santa
|
||||
cost = 11
|
||||
cost = 2
|
||||
|
||||
/datum/gear/head/santahat/green
|
||||
display_name = "santa hat, green (holiday)"
|
||||
@@ -233,6 +265,14 @@
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/head/taqiyah
|
||||
display_name = "taqiyah"
|
||||
path = /obj/item/clothing/head/taqiyah
|
||||
|
||||
/datum/gear/head/taqiyah/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/head/beanie
|
||||
display_name = "beanie"
|
||||
path = /obj/item/clothing/head/beanie
|
||||
@@ -275,4 +315,42 @@
|
||||
|
||||
/datum/gear/head/bow/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/head/welding/
|
||||
display_name = "welding, normal (engineering/robotics)"
|
||||
path = /obj/item/clothing/head/welding
|
||||
cost = 2
|
||||
allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
|
||||
|
||||
/datum/gear/head/welding/demon
|
||||
display_name = "welding, demon (engineering/robotics)"
|
||||
path = /obj/item/clothing/head/welding/demon
|
||||
allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
|
||||
|
||||
/datum/gear/head/welding/knight
|
||||
display_name = "welding, knight (engineering/robotics)"
|
||||
path = /obj/item/clothing/head/welding/knight
|
||||
allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
|
||||
|
||||
/datum/gear/head/welding/fancy
|
||||
display_name = "welding, fancy (engineering/robotics)"
|
||||
path = /obj/item/clothing/head/welding/fancy
|
||||
allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
|
||||
|
||||
/datum/gear/head/welding/engie
|
||||
display_name = "welding, engie (engineering/robotics)"
|
||||
path = /obj/item/clothing/head/welding/engie
|
||||
allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
|
||||
|
||||
/datum/gear/head/beret/sol
|
||||
display_name = "beret sol, selection"
|
||||
path = /obj/item/clothing/head/beret/sol
|
||||
|
||||
/datum/gear/head/beret/sol/New()
|
||||
..()
|
||||
var/list/sols = list()
|
||||
for(var/sol_style in typesof(/obj/item/clothing/head/beret/sol))
|
||||
var/obj/item/clothing/head/beret/sol/sol = sol_style
|
||||
sols[initial(sol.name)] = sol
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(sols))
|
||||
@@ -131,4 +131,26 @@
|
||||
|
||||
/datum/gear/shoes/flats/color/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/shoes/cowboy
|
||||
display_name = "cowboy boots"
|
||||
path = /obj/item/clothing/shoes/cowboy
|
||||
|
||||
/datum/gear/shoes/jungle
|
||||
display_name = "jungle boots"
|
||||
path = /obj/item/clothing/shoes/jungleboots
|
||||
cost = 2
|
||||
|
||||
/datum/gear/shoes/duty
|
||||
display_name = "duty boots"
|
||||
path = /obj/item/clothing/shoes/dutyboots
|
||||
cost = 2
|
||||
|
||||
/datum/gear/shoes/dress
|
||||
display_name = "shoes, dress"
|
||||
path = /obj/item/clothing/shoes/dress
|
||||
|
||||
/datum/gear/shoes/dress/white
|
||||
display_name = "shoes, dress white"
|
||||
path = /obj/item/clothing/shoes/dress/white
|
||||
@@ -87,9 +87,17 @@
|
||||
path = /obj/item/clothing/suit/storage/trench/grey
|
||||
|
||||
/datum/gear/suit/hazard_vest
|
||||
display_name = "hazard vest"
|
||||
display_name = "hazard vest selection"
|
||||
path = /obj/item/clothing/suit/storage/hazardvest
|
||||
|
||||
/datum/gear/suit/hazard_vest/New()
|
||||
..()
|
||||
var/list/hazards = list()
|
||||
for(var/hazard_style in typesof(/obj/item/clothing/suit/storage/hazardvest))
|
||||
var/obj/item/clothing/suit/storage/hazardvest/hazardvest = hazard_style
|
||||
hazards[initial(hazardvest.name)] = hazardvest
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hazards))
|
||||
|
||||
/datum/gear/suit/hoodie
|
||||
display_name = "hoodie selection"
|
||||
path = /obj/item/clothing/suit/storage/toggle/hoodie
|
||||
@@ -327,3 +335,16 @@
|
||||
/datum/gear/suit/denim_vest/corporate
|
||||
display_name = "denim vest, corporate"
|
||||
path = /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen/sleeveless
|
||||
|
||||
/datum/gear/suit/service
|
||||
display_name = "service jacket selection"
|
||||
path = /obj/item/clothing/suit/storage/service
|
||||
|
||||
/datum/gear/suit/service/New()
|
||||
..()
|
||||
var/list/services = list()
|
||||
for(var/service_style in typesof(/obj/item/clothing/suit/storage/service))
|
||||
var/obj/item/clothing/suit/storage/service/service = service_style
|
||||
services[initial(service.name)] = service
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(services))
|
||||
|
||||
|
||||
@@ -380,4 +380,68 @@
|
||||
|
||||
/datum/gear/uniform/dresses/janimaid
|
||||
display_name = "maid uniform"
|
||||
path = /obj/item/clothing/under/dress/janimaid
|
||||
path = /obj/item/clothing/under/dress/janimaid
|
||||
|
||||
/datum/gear/uniform/pt
|
||||
display_name = "pt uniform"
|
||||
path = /obj/item/clothing/under/pt
|
||||
|
||||
/datum/gear/uniform/pt/expeditionary
|
||||
display_name = "pt uniform, expeditionary"
|
||||
path = /obj/item/clothing/under/pt/expeditionary
|
||||
|
||||
/datum/gear/uniform/pt/fleet
|
||||
display_name = "pt uniform, fleet"
|
||||
path = /obj/item/clothing/under/pt/fleet
|
||||
|
||||
/datum/gear/uniform/utility
|
||||
display_name = "utility, black"
|
||||
path = /obj/item/clothing/under/utility
|
||||
cost = 2
|
||||
|
||||
/datum/gear/uniform/utility/fleet
|
||||
display_name = "utility, navy"
|
||||
path = /obj/item/clothing/under/utility/fleet
|
||||
|
||||
/datum/gear/uniform/utility/marine
|
||||
display_name = "utility, grey"
|
||||
path = /obj/item/clothing/under/utility/marine
|
||||
|
||||
/datum/gear/uniform/sweater
|
||||
display_name = "sweater, grey"
|
||||
path = /obj/item/clothing/under/rank/psych/turtleneck/sweater
|
||||
|
||||
/datum/gear/uniform/jumpsuit/aether
|
||||
display_name = "jumpsuit, aether"
|
||||
path = /obj/item/clothing/under/aether
|
||||
|
||||
/datum/gear/uniform/jumpsuit/focal
|
||||
display_name = "jumpsuit, focal"
|
||||
path = /obj/item/clothing/under/focal
|
||||
|
||||
/datum/gear/uniform/mbill
|
||||
display_name = "outfit, major bill's (Cargo)"
|
||||
path = /obj/item/clothing/under/mbill
|
||||
allowed_roles = list("Quartermaster","Cargo Technician")
|
||||
|
||||
/datum/gear/uniform/pcrc
|
||||
display_name = "uniform, PCRC (Security)"
|
||||
path = /obj/item/clothing/under/pcrc
|
||||
cost = 2
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
|
||||
/datum/gear/uniform/jumpsuit/grayson
|
||||
display_name = "outfit, grayson"
|
||||
path = /obj/item/clothing/under/grayson
|
||||
|
||||
/datum/gear/uniform/jumpsuit/wardt
|
||||
display_name = "jumpsuit, ward-takahashi"
|
||||
path = /obj/item/clothing/under/wardt
|
||||
|
||||
/datum/gear/uniform/frontier
|
||||
display_name = "outfit, frontier"
|
||||
path = /obj/item/clothing/under/frontier
|
||||
|
||||
/datum/gear/uniform/jumpsuit/hephaestus
|
||||
display_name = "jumpsuit, hephaestus"
|
||||
path = /obj/item/clothing/under/hephaestus
|
||||
@@ -11,6 +11,7 @@
|
||||
/datum/gear/utility/communicator
|
||||
display_name = "personal communicator"
|
||||
path = /obj/item/device/communicator
|
||||
cost = 0
|
||||
|
||||
/datum/gear/utility/folder_blue
|
||||
display_name = "folder, blue"
|
||||
@@ -39,4 +40,20 @@
|
||||
/datum/gear/utility/securecase
|
||||
display_name = "secure briefcase"
|
||||
path =/obj/item/weapon/storage/secure/briefcase
|
||||
cost = 2
|
||||
cost = 2
|
||||
|
||||
/datum/gear/utility/flashlight
|
||||
display_name = "flashlight"
|
||||
path = /obj/item/device/flashlight
|
||||
|
||||
/datum/gear/utility/maglight
|
||||
display_name = "flashlight, maglight"
|
||||
path = /obj/item/device/flashlight/maglight
|
||||
cost = 2
|
||||
|
||||
/datum/gear/utility/implant //This does nothing if you don't actually know EAL.
|
||||
display_name = "implant, language, EAL"
|
||||
path = /obj/item/weapon/implant/language/eal
|
||||
cost = 2
|
||||
slot = "implant"
|
||||
var/implant_type = "EAL"
|
||||
|
||||
@@ -127,3 +127,4 @@
|
||||
path = /obj/item/clothing/under/shorts/loincloth
|
||||
sort_category = "Xenowear"
|
||||
//whitelisted = list("Tajaran", "Unathi") //VORESTATION EDIT
|
||||
|
||||
|
||||
@@ -377,9 +377,11 @@
|
||||
body_parts_covered = FEET
|
||||
slot_flags = SLOT_FEET
|
||||
|
||||
var/can_hold_knife
|
||||
var/can_hold_knife = 0
|
||||
var/obj/item/holding
|
||||
|
||||
var/shoes_under_pants = 0
|
||||
|
||||
permeability_coefficient = 0.50
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
force = 2
|
||||
@@ -415,10 +417,10 @@
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/attackby(var/obj/item/I, var/mob/user)
|
||||
if(can_hold_knife && istype(I, /obj/item/weapon/material/shard) || \
|
||||
if((can_hold_knife == 1) && (istype(I, /obj/item/weapon/material/shard) || \
|
||||
istype(I, /obj/item/weapon/material/butterfly) || \
|
||||
istype(I, /obj/item/weapon/material/kitchen/utensil) || \
|
||||
istype(I, /obj/item/weapon/material/hatchet/tacknife))
|
||||
istype(I, /obj/item/weapon/material/hatchet/tacknife)))
|
||||
if(holding)
|
||||
user << "<span class='warning'>\The [src] is already holding \a [holding].</span>"
|
||||
return
|
||||
@@ -431,10 +433,23 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/shoes/verb/toggle_layer()
|
||||
set name = "Switch Shoe Layer"
|
||||
set category = "Object"
|
||||
|
||||
if(shoes_under_pants == -1)
|
||||
usr << "<span class='notice'>\The [src] cannot be worn above your suit!</span>"
|
||||
return
|
||||
shoes_under_pants = !shoes_under_pants
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/shoes/update_icon()
|
||||
overlays.Cut()
|
||||
if(holding)
|
||||
overlays += image(icon, "[icon_state]_knife")
|
||||
if(ismob(usr))
|
||||
var/mob/M = usr
|
||||
M.update_inv_shoes()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running)
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "arm guards"
|
||||
desc = "These arm guards will protect your hands and arms."
|
||||
body_parts_covered = HANDS|ARMS
|
||||
slowdown = 0.5
|
||||
overgloves = 1
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
|
||||
@@ -11,6 +11,19 @@
|
||||
item_state = "r_hands"
|
||||
siemens_coefficient = 1.0
|
||||
|
||||
/obj/item/clothing/gloves/forensic
|
||||
desc = "Specially made gloves for forensic technicians. The luminescent threads woven into the material stand out under scrutiny."
|
||||
name = "forensic gloves"
|
||||
icon_state = "forensic"
|
||||
item_state = "black"
|
||||
siemens_coefficient = 0.50
|
||||
permeability_coefficient = 0.05
|
||||
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
name = "\improper SWAT Gloves"
|
||||
@@ -51,3 +64,21 @@
|
||||
item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown")
|
||||
permeability_coefficient = 0.05
|
||||
siemens_coefficient = 0.50 //thick work gloves
|
||||
|
||||
/obj/item/clothing/gloves/duty
|
||||
desc = "These brown duty gloves are made from a durable synthetic."
|
||||
name = "work gloves"
|
||||
icon_state = "work"
|
||||
item_state = "wgloves"
|
||||
siemens_coefficient = 0.50
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/gloves/tactical
|
||||
desc = "These brown tactical gloves are made from a durable synthetic, and have hardened knuckles."
|
||||
name = "tactical gloves"
|
||||
icon_state = "work"
|
||||
item_state = "wgloves"
|
||||
force = 5
|
||||
siemens_coefficient = 0.50
|
||||
permeability_coefficient = 0.05
|
||||
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
|
||||
|
||||
@@ -13,6 +13,46 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
ear_protection = 1
|
||||
|
||||
/obj/item/clothing/head/helmet/solgov
|
||||
name = "\improper Solar Confederate Government helmet"
|
||||
desc = "A helmet painted in Peacekeeper blue. Stands out like a sore thumb."
|
||||
icon_state = "helmet_sol"
|
||||
armor = list(melee = 50, bullet = 50, laser = 50,energy = 25, bomb = 30, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/solgov/command
|
||||
name = "command helmet"
|
||||
desc = "A helmet with 'Solar Confederate Government' printed on the back in gold lettering."
|
||||
icon_state = "helmet_command"
|
||||
|
||||
/obj/item/clothing/head/helmet/solgov/security
|
||||
name = "security helmet"
|
||||
desc = "A helmet with 'MASTER AT ARMS' printed on the back in silver lettering."
|
||||
icon_state = "helmet_security"
|
||||
|
||||
/obj/item/clothing/head/helmet/nt
|
||||
name = "\improper NanoTrasen helmet"
|
||||
desc = "A helmet with 'CORPORATE SECURITY' printed on the back in red lettering."
|
||||
icon_state = "helmet_nt"
|
||||
|
||||
/obj/item/clothing/head/helmet/pcrc
|
||||
name = "\improper PCRC helmet"
|
||||
desc = "A helmet with 'PRIVATE SECURITY' printed on the back in cyan lettering."
|
||||
icon_state = "helmet_pcrc"
|
||||
|
||||
/obj/item/clothing/head/helmet/tac
|
||||
name = "tactical helmet"
|
||||
desc = "A tan helmet made from advanced ceramic. Comfortable and robust."
|
||||
icon_state = "helmet_tac"
|
||||
armor = list(melee = 50, bullet = 60, laser = 60, energy = 45, bomb = 30, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.6
|
||||
|
||||
/obj/item/clothing/head/helmet/merc
|
||||
name = "combat helmet"
|
||||
desc = "A heavily reinforced helmet painted with red markings. Feels like it could take a lot of punishment."
|
||||
icon_state = "helmet_merc"
|
||||
armor = list(melee = 70, bullet = 70, laser = 70, energy = 35, bomb = 30, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.5
|
||||
|
||||
/obj/item/clothing/head/helmet/riot
|
||||
name = "riot helmet"
|
||||
desc = "It's a helmet specifically designed to protect against close range attacks."
|
||||
|
||||
@@ -132,12 +132,12 @@
|
||||
/obj/item/clothing/head/beret/engineering
|
||||
name = "engineering beret"
|
||||
desc = "A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety."
|
||||
icon_state = "beret_engineering"
|
||||
icon_state = "beret_orange"
|
||||
|
||||
/obj/item/clothing/head/beret/purple
|
||||
name = "purple beret"
|
||||
desc = "A stylish, if purple, beret."
|
||||
icon_state = "beret_purple"
|
||||
icon_state = "beret_purpleyellow"
|
||||
|
||||
/obj/item/clothing/head/beret/centcom/officer
|
||||
name = "officers beret"
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
/obj/item/clothing/head/hairflower/orange
|
||||
icon_state = "hairflower_orange"
|
||||
|
||||
/obj/item/clothing/head/hairflower/white
|
||||
icon_state = "hairflower_white"
|
||||
|
||||
/obj/item/clothing/head/hairflower/bow
|
||||
icon_state = "bow"
|
||||
name = "hair bow"
|
||||
@@ -236,6 +239,16 @@
|
||||
icon_state = "cowboyhat"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/cowboy_hat/black
|
||||
name = "black cowboy hat"
|
||||
desc = "You can almost hear the old western music."
|
||||
icon_state = "cowboy_black"
|
||||
|
||||
/obj/item/clothing/head/cowboy_hat/wide
|
||||
name = "wide-brimmed cowboy hat"
|
||||
desc = "Because justice isn't going to dispense itself."
|
||||
icon_state = "cowboy_wide"
|
||||
|
||||
/obj/item/clothing/head/witchwig
|
||||
name = "witch costume wig"
|
||||
desc = "Eeeee~heheheheheheh!"
|
||||
@@ -303,7 +316,13 @@
|
||||
icon_state = "turban"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white")
|
||||
body_parts_covered = 0
|
||||
flags_inv = BLOCKHAIR
|
||||
flags_inv = BLOCKHEADHAIR
|
||||
|
||||
/obj/item/clothing/head/taqiyah
|
||||
name = "taqiyah"
|
||||
desc = "A short, rounded skullcap usually worn for religious purposes."
|
||||
icon_state = "taqiyah"
|
||||
item_state_slots = list(slot_r_hand_str = "taq", slot_l_hand_str = "taq")
|
||||
|
||||
/obj/item/clothing/head/beanie
|
||||
name = "beanie"
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
var/base_state
|
||||
|
||||
/obj/item/clothing/head/welding/attack_self()
|
||||
if(!base_state)
|
||||
base_state = icon_state
|
||||
toggle()
|
||||
|
||||
|
||||
@@ -37,6 +35,9 @@
|
||||
set name = "Adjust welding mask"
|
||||
set src in usr
|
||||
|
||||
if(!base_state)
|
||||
base_state = icon_state
|
||||
|
||||
if(usr.canmove && !usr.stat && !usr.restrained())
|
||||
if(src.up)
|
||||
src.up = !src.up
|
||||
@@ -56,6 +57,43 @@
|
||||
M.update_inv_wear_mask()
|
||||
usr.update_action_buttons()
|
||||
|
||||
/obj/item/clothing/head/welding/demon
|
||||
name = "demonic welding helmet"
|
||||
desc = "A painted welding helmet, this one has a demonic face on it."
|
||||
icon_state = "demonwelding"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "demonwelding",
|
||||
slot_r_hand_str = "demonwelding",
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/welding/knight
|
||||
name = "knightly welding helmet"
|
||||
desc = "A painted welding helmet, this one looks like a knights helmet."
|
||||
icon_state = "knightwelding"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "knightwelding",
|
||||
slot_r_hand_str = "knightwelding",
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/welding/fancy
|
||||
name = "fancy welding helmet"
|
||||
desc = "A painted welding helmet, the black and gold make this one look very fancy."
|
||||
icon_state = "fancywelding"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "fancywelding",
|
||||
slot_r_hand_str = "fancywelding",
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/welding/engie
|
||||
name = "engineering welding helmet"
|
||||
desc = "A painted welding helmet, this one has been painted the engineering colours."
|
||||
icon_state = "engiewelding"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "engiewelding",
|
||||
slot_r_hand_str = "engiewelding",
|
||||
)
|
||||
.
|
||||
|
||||
/*
|
||||
* Cakehat
|
||||
*/
|
||||
|
||||
@@ -92,4 +92,9 @@
|
||||
name = "black cap"
|
||||
desc = "It's a peaked cap in a tasteful black color."
|
||||
icon_state = "blacksoft"
|
||||
item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft")
|
||||
item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft")
|
||||
|
||||
/obj/item/clothing/head/soft/mbill
|
||||
name = "shipping cap"
|
||||
desc = "It's a ballcap bearing the colors of Major Bill's Shipping."
|
||||
icon_state = "mbillsoft"
|
||||
|
||||
@@ -0,0 +1,241 @@
|
||||
//SolGov uniform hats
|
||||
|
||||
//Utility
|
||||
/obj/item/clothing/head/soft/sol
|
||||
name = "\improper SolGov cap"
|
||||
desc = "It's a blue ballcap in Solar Confederate Government colors."
|
||||
icon_state = "solsoft"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "lightbluesoft",
|
||||
slot_r_hand_str = "lightbluesoft",
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/soft/sol/expedition
|
||||
name = "\improper Expeditionary Corps cap"
|
||||
desc = "It's a black ballcap bearing a Expeditonary Corps crest."
|
||||
icon_state = "expeditionsoft"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "blacksoft",
|
||||
slot_r_hand_str = "blacksoft",
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/soft/sol/fleet
|
||||
name = "fleet cap"
|
||||
desc = "It's a navy blue ballcap with a SCG Fleet crest."
|
||||
icon_state = "fleetsoft"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "darkbluesoft",
|
||||
slot_r_hand_str = "darkbluesoft",
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/utility
|
||||
name = "utility cover"
|
||||
desc = "An eight-point utility cover."
|
||||
icon_state = "greyutility"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "helmet",
|
||||
slot_r_hand_str = "helmet",
|
||||
)
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/utility/fleet
|
||||
name = "fleet utility cover"
|
||||
desc = "A navy blue utility cover bearing the crest of a SCG Fleet."
|
||||
icon_state = "navyutility"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
/obj/item/clothing/head/utility/marine
|
||||
name = "marine utility cover"
|
||||
desc = "A grey utility cover bearing the crest of the SCG Marine Corps."
|
||||
icon_state = "greyutility"
|
||||
armor = list(melee = 10, bullet = 0, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/utility/marine/tan
|
||||
name = "tan utility cover"
|
||||
desc = "A tan utility cover bearing the crest of the SCG Marine Corps."
|
||||
icon_state = "tanutility"
|
||||
|
||||
/obj/item/clothing/head/utility/marine/green
|
||||
name = "green utility cover"
|
||||
desc = "A green utility cover bearing the crest of the SCG Marine Corps."
|
||||
icon_state = "greenutility"
|
||||
|
||||
//Service
|
||||
|
||||
/obj/item/clothing/head/service
|
||||
name = "service cover"
|
||||
desc = "A service uniform cover."
|
||||
icon_state = "greenwheelcap"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "helmet",
|
||||
slot_r_hand_str = "helmet",
|
||||
)
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/service/marine
|
||||
name = "marine wheel cover"
|
||||
desc = "A green service uniform cover with an SCG Marine Corps crest."
|
||||
icon_state = "greenwheelcap"
|
||||
|
||||
/obj/item/clothing/head/service/marine/command
|
||||
name = "marine officer's wheel cover"
|
||||
desc = "A green service uniform cover with an SCG Marine Corps crest and gold stripe."
|
||||
icon_state = "greenwheelcap_com"
|
||||
|
||||
/obj/item/clothing/head/service/marine/garrison
|
||||
name = "marine garrison cap"
|
||||
desc = "A green garrison cap belonging to the SCG Marine Corps."
|
||||
icon_state = "greengarrisoncap"
|
||||
|
||||
/obj/item/clothing/head/service/marine/garrison/command
|
||||
name = "marine officer's garrison cap"
|
||||
desc = "A green garrison cap belonging to the SCG Marine Corps. This one has a gold pin."
|
||||
icon_state = "greengarrisoncap_com"
|
||||
|
||||
/obj/item/clothing/head/service/marine/campaign
|
||||
name = "campaign cover"
|
||||
desc = "A green campaign cover with an SCG Marine Corps crest. Only found on the heads of Drill Instructors."
|
||||
icon_state = "greendrill"
|
||||
|
||||
//Dress
|
||||
|
||||
/obj/item/clothing/head/dress
|
||||
name = "dress cover"
|
||||
desc = "A dress uniform cover."
|
||||
icon_state = "greenwheelcap"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "helmet",
|
||||
slot_r_hand_str = "helmet",
|
||||
)
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/dress/expedition
|
||||
name = "expedition dress cap"
|
||||
desc = "A peaked grey dress uniform cap belonging to the SCG Expeditionary Corps."
|
||||
icon_state = "greydresscap"
|
||||
|
||||
/obj/item/clothing/head/dress/expedition/command
|
||||
name = "expedition command dress cap"
|
||||
desc = "A peaked grey dress uniform cap belonging to the SCG Expeditionary Corps. This one is trimmed in gold."
|
||||
icon_state = "greydresscap_com"
|
||||
|
||||
/obj/item/clothing/head/dress/fleet
|
||||
name = "fleet dress wheel cover"
|
||||
desc = "A white dress uniform cover. This one has an SCG Fleet crest."
|
||||
icon_state = "whitepeakcap"
|
||||
|
||||
/obj/item/clothing/head/dress/fleet/command
|
||||
name = "fleet command dress wheel cover"
|
||||
desc = "A white dress uniform cover. This one has a gold stripe and an SCG Fleet crest."
|
||||
icon_state = "whitepeakcap_com"
|
||||
|
||||
/obj/item/clothing/head/dress/marine
|
||||
name = "marine dress wheel cover"
|
||||
desc = "A white dress uniform cover with an SCG Marine Corps crest."
|
||||
icon_state = "whitewheelcap"
|
||||
|
||||
/obj/item/clothing/head/dress/marine/command
|
||||
name = "marine officer's dress wheel cover"
|
||||
desc = "A white dress uniform cover with an SCG Marine Corps crest and gold stripe."
|
||||
icon_state = "whitewheelcap_com"
|
||||
|
||||
//Berets
|
||||
|
||||
/obj/item/clothing/head/beret/sol
|
||||
name = "peacekeeper beret"
|
||||
desc = "A beret in Solar Confederate Government colors. For peacekeepers that are more inclined towards style than safety."
|
||||
icon_state = "beret_lightblue"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/homeguard
|
||||
name = "home guard beret"
|
||||
desc = "A red beret denoting service in the Sol Home Guard. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_red"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/gateway
|
||||
name = "gateway administration beret"
|
||||
desc = "An orange beret denoting service in the Gateway Administration. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_orange"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/customs
|
||||
name = "customs and trade beret"
|
||||
desc = "A purple beret denoting service in the Customs and Trade Bureau. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_purpleyellow"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/orbital
|
||||
name = "orbital assault beret"
|
||||
desc = "A blue beret denoting orbital assault training. For helljumpers that are more inclined towards style than safety."
|
||||
icon_state = "beret_blue"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/research
|
||||
name = "government research beret"
|
||||
desc = "A green beret denoting service in the Bureau of Research. For explorers that are more inclined towards style than safety."
|
||||
icon_state = "beret_green"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/health
|
||||
name = "health service beret"
|
||||
desc = "A white beret denoting service in the Interstellar Health Service. For medics that are more inclined towards style than safety."
|
||||
icon_state = "beret_white"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition
|
||||
name = "expeditionary beret"
|
||||
desc = "A black beret belonging to the SCG Expeditionary Corps. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/security
|
||||
name = "expeditionary security beret"
|
||||
desc = "An SCG Expeditionary Corps beret with a security crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_security"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/medical
|
||||
name = "expeditionary medical beret"
|
||||
desc = "An SCG Expeditionary Corps beret with a medical crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_medical"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/engineering
|
||||
name = "expeditionary engineering beret"
|
||||
desc = "An SCG Expeditionary Corps beret with an engineering crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_engineering"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/supply
|
||||
name = "expeditionary supply beret"
|
||||
desc = "An SCG Expeditionary Corps beret with a supply crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_supply"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/command
|
||||
name = "expeditionary command beret"
|
||||
desc = "An SCG Expeditionary Corps beret with a command crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_command"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet
|
||||
name = "fleet beret"
|
||||
desc = "A navy blue beret belonging to the SCG Fleet. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet/security
|
||||
name = "fleet security beret"
|
||||
desc = "An SCG Fleet beret with a security crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy_security"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet/medical
|
||||
name = "fleet medical beret"
|
||||
desc = "An SCG Fleet beret with a medical crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy_medical"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet/engineering
|
||||
name = "fleet engineering beret"
|
||||
desc = "An SCG Fleet with an engineering crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy_engineering"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet/supply
|
||||
name = "fleet supply beret"
|
||||
desc = "An SCG Fleet beret with a supply crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy_supply"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet/command
|
||||
name = "fleet command beret"
|
||||
desc = "An SCG Fleet beret with a command crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy_command"
|
||||
@@ -27,6 +27,15 @@
|
||||
|
||||
return filtered
|
||||
|
||||
/obj/item/clothing/mask/gas/half
|
||||
name = "face mask"
|
||||
desc = "A compact, durable gas mask that can be connected to an air supply."
|
||||
icon_state = "halfgas"
|
||||
siemens_coefficient = 0.7
|
||||
body_parts_covered = FACE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0)
|
||||
|
||||
//Plague Dr suit can be found in clothing/suits/bio.dm
|
||||
/obj/item/clothing/mask/gas/plaguedoctor
|
||||
name = "plague doctor mask"
|
||||
@@ -79,6 +88,13 @@
|
||||
icon_state = "sexymime"
|
||||
item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime")
|
||||
|
||||
/obj/item/clothing/mask/gas/guy
|
||||
name = "guy fawkes mask"
|
||||
desc = "A mask stylised to depict Guy Fawkes."
|
||||
icon_state = "guyfawkes"
|
||||
flags_inv = HIDEEARS|HIDEFACE
|
||||
item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime")
|
||||
|
||||
/obj/item/clothing/mask/gas/death_commando
|
||||
name = "Death Commando Mask"
|
||||
icon_state = "death_commando_mask"
|
||||
|
||||
@@ -173,62 +173,54 @@
|
||||
|
||||
/obj/item/clothing/mask/bandana
|
||||
name = "black bandana"
|
||||
desc = "A fine black bandana with nanotech lining."
|
||||
desc = "A fine black bandana with nanotech lining. Can be worn on the head or face."
|
||||
w_class = ITEMSIZE_TINY
|
||||
flags_inv = HIDEFACE
|
||||
slot_flags = SLOT_MASK
|
||||
slot_flags = SLOT_MASK|SLOT_HEAD
|
||||
body_parts_covered = FACE
|
||||
icon_state = "bandblack"
|
||||
item_state_slots = list(slot_r_hand_str = "bandblack", slot_l_hand_str = "bandblack")
|
||||
var/tied = 0
|
||||
|
||||
/obj/item/clothing/mask/bandana/proc/adjust_bandana(mob/user)
|
||||
if(usr.canmove && !usr.stat)
|
||||
src.tied = !src.tied
|
||||
if (src.tied)
|
||||
flags_inv = flags_inv & ~HIDEFACE
|
||||
slot_flags = SLOT_HEAD
|
||||
icon_state = "[icon_state]_up"
|
||||
usr << "You tie the bandana so that it can be worn on the head."
|
||||
else
|
||||
/obj/item/clothing/mask/bandana/equipped(var/mob/user, var/slot)
|
||||
switch(slot)
|
||||
if(slot_wear_mask) //Mask is the default for all the settings
|
||||
flags_inv = initial(flags_inv)
|
||||
slot_flags = initial(slot_flags)
|
||||
body_parts_covered = initial(body_parts_covered)
|
||||
icon_state = initial(icon_state)
|
||||
usr << "You tie the bandana so that it can be worn on the face."
|
||||
|
||||
/obj/item/clothing/mask/bandana/verb/toggle()
|
||||
set category = "Object"
|
||||
set name = "Tie bandana"
|
||||
set src in usr
|
||||
if(slot_head)
|
||||
flags_inv = 0
|
||||
body_parts_covered = HEAD
|
||||
icon_state = "[initial(icon_state)]_up"
|
||||
|
||||
adjust_bandana(usr)
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/bandana/red
|
||||
name = "red bandana"
|
||||
desc = "A fine red bandana with nanotech lining."
|
||||
desc = "A fine red bandana with nanotech lining. Can be worn on the head or face."
|
||||
icon_state = "bandred"
|
||||
item_state_slots = list(slot_r_hand_str = "bandred", slot_l_hand_str = "bandred")
|
||||
|
||||
/obj/item/clothing/mask/bandana/blue
|
||||
name = "blue bandana"
|
||||
desc = "A fine blue bandana with nanotech lining."
|
||||
desc = "A fine blue bandana with nanotech lining. Can be worn on the head or face."
|
||||
icon_state = "bandblue"
|
||||
item_state_slots = list(slot_r_hand_str = "bandblue", slot_l_hand_str = "bandblue")
|
||||
|
||||
/obj/item/clothing/mask/bandana/green
|
||||
name = "green bandana"
|
||||
desc = "A fine green bandana with nanotech lining."
|
||||
desc = "A fine green bandana with nanotech lining. Can be worn on the head or face."
|
||||
icon_state = "bandgreen"
|
||||
item_state_slots = list(slot_r_hand_str = "bandgreen", slot_l_hand_str = "bandgreen")
|
||||
|
||||
/obj/item/clothing/mask/bandana/gold
|
||||
name = "gold bandana"
|
||||
desc = "A fine gold bandana with nanotech lining."
|
||||
desc = "A fine gold bandana with nanotech lining. Can be worn on the head or face."
|
||||
icon_state = "bandgold"
|
||||
item_state_slots = list(slot_r_hand_str = "bandgold", slot_l_hand_str = "bandgold")
|
||||
|
||||
/obj/item/clothing/mask/bandana/skull
|
||||
name = "skull bandana"
|
||||
desc = "A fine black bandana with nanotech lining and a skull emblem."
|
||||
desc = "A fine black bandana with nanotech lining and a skull emblem. Can be worn on the head or face."
|
||||
icon_state = "bandskull"
|
||||
item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull")
|
||||
item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull")
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
species_restricted = null
|
||||
force = 3
|
||||
overshoes = 1
|
||||
shoes_under_pants = -1 //These things are huge
|
||||
var/magpulse = 0
|
||||
var/icon_base = "magboots"
|
||||
action_button_name = "Toggle Magboots"
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
siemens_coefficient = 0.8
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/shoes/cowboy
|
||||
name = "cowboy boots"
|
||||
desc = "Lacking a durasteel horse to ride."
|
||||
icon_state = "cowboy"
|
||||
|
||||
/obj/item/clothing/shoes/mime
|
||||
name = "mime shoes"
|
||||
icon_state = "white"
|
||||
@@ -106,6 +111,39 @@
|
||||
heat_protection = FEET
|
||||
max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
/obj/item/clothing/shoes/jungleboots
|
||||
name = "jungle boots"
|
||||
desc = "A pair of durable brown boots. Waterproofed for use planetside."
|
||||
icon_state = "jungle"
|
||||
force = 3
|
||||
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 10, rad = 0)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
/obj/item/clothing/shoes/dutyboots
|
||||
name = "duty boots"
|
||||
desc = "A pair of steel-toed synthleather boots with a mirror shine."
|
||||
icon_state = "duty"
|
||||
armor = list(melee = 40, bullet = 0, laser = 0, energy = 15, bomb = 20, bio = 0, rad = 20)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
/obj/item/clothing/shoes/tactical
|
||||
name = "tactical boots"
|
||||
desc = "Tan boots with extra padding and armor."
|
||||
icon_state = "jungle"
|
||||
force = 3
|
||||
armor = list(melee = 40, bullet = 30, laser = 40,energy = 25, bomb = 50, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
/obj/item/clothing/shoes/dress
|
||||
name = "dress shoes"
|
||||
desc = "Sharp looking low quarters, perfect for a formal uniform."
|
||||
icon_state = "laceups"
|
||||
|
||||
/obj/item/clothing/shoes/dress/white
|
||||
name = "white dress shoes"
|
||||
desc = "Brilliantly white low quarters, not a spot on them."
|
||||
icon_state = "whitedress"
|
||||
|
||||
/obj/item/clothing/shoes/sandal
|
||||
desc = "A pair of rather plain, wooden sandals."
|
||||
name = "sandals"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
body_parts_covered = 0
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/suit/space/pirate
|
||||
/obj/item/clothing/suit/space/pirate //Whhhhyyyyyyy???
|
||||
name = "pirate coat"
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate"
|
||||
@@ -85,6 +85,7 @@
|
||||
slowdown = 0
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
siemens_coefficient = 0.9
|
||||
flags_inv = HIDETAIL|HIDEHOLSTER
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
//Orange emergency space suit
|
||||
|
||||
@@ -594,3 +594,47 @@
|
||||
device = iastamp
|
||||
holder.wearer << "<span class='notice'>Switched to internal affairs stamp.</span>"
|
||||
return 1
|
||||
|
||||
/obj/item/rig_module/sprinter
|
||||
name = "sprint module"
|
||||
desc = "A robust hardsuit-integrated sprint module."
|
||||
icon_state = "sprinter"
|
||||
|
||||
var/sprint_speed = 1
|
||||
|
||||
toggleable = 1
|
||||
disruptable = 1
|
||||
disruptive = 0
|
||||
|
||||
use_power_cost = 50
|
||||
active_power_cost = 5
|
||||
passive_power_cost = 0
|
||||
module_cooldown = 30
|
||||
|
||||
activate_string = "Enable Sprint"
|
||||
deactivate_string = "Disable Sprint"
|
||||
|
||||
interface_name = "sprint system"
|
||||
interface_desc = "Increases power to the suit's actuators, allowing faster movement."
|
||||
|
||||
/obj/item/rig_module/sprinter/activate()
|
||||
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
|
||||
H << "<font color='blue'><b>You activate the suit's sprint mode.</b></font>"
|
||||
|
||||
holder.slowdown = initial(holder.slowdown) - sprint_speed
|
||||
|
||||
/obj/item/rig_module/sprinter/deactivate()
|
||||
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
|
||||
H << "<span class='danger'>Your hardsuit returns to normal speed.</span>"
|
||||
|
||||
holder.slowdown = initial(holder.slowdown)
|
||||
@@ -94,12 +94,17 @@
|
||||
offline_vision_restriction = 1
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/eva
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
name = "insulated gauntlets"
|
||||
siemens_coefficient = 0
|
||||
|
||||
/obj/item/weapon/rig/eva/equipped
|
||||
|
||||
req_access = list(access_engine)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit)
|
||||
slowdown = 3
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
@@ -7,16 +7,6 @@
|
||||
item_state_slots = list(slot_r_hand_str = "eng_helm", slot_l_hand_str = "eng_helm")
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 80)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/hazmat
|
||||
name = "HAZMAT voidsuit helmet"
|
||||
icon_state = "rig0-engineering_rad"
|
||||
item_state_slots = list(slot_r_hand_str = "eng_helm_rad", slot_l_hand_str = "eng_helm_rad")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/construction
|
||||
name = "construction voidsuit helmet"
|
||||
icon_state = "rig0-engineering_con"
|
||||
item_state_slots = list(slot_r_hand_str = "eng_helm_con", slot_l_hand_str = "eng_helm_con")
|
||||
|
||||
/obj/item/clothing/suit/space/void/engineering
|
||||
name = "engineering voidsuit"
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
|
||||
@@ -26,16 +16,66 @@
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 80)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||
|
||||
//Engineering HAZMAT Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/hazmat
|
||||
name = "HAZMAT voidsuit helmet"
|
||||
desc = "A engineering helmet designed for work in a low-pressure environment. Extra radiation shielding appears to have been installed at the price of comfort."
|
||||
icon_state = "rig0-engineering_rad"
|
||||
item_state_slots = list(slot_r_hand_str = "eng_helm_rad", slot_l_hand_str = "eng_helm_rad")
|
||||
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
/obj/item/clothing/suit/space/void/engineering/hazmat
|
||||
name = "HAZMAT voidsuit"
|
||||
desc = "A engineering voidsuit that protects against hazardous, low pressure environments. Has enhanced radiation shielding compared to regular engineering voidsuits."
|
||||
icon_state = "rig-engineering_rad"
|
||||
item_state_slots = list(slot_r_hand_str = "eng_voidsuit_rad", slot_l_hand_str = "eng_voidsuit_rad")
|
||||
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
//Engineering Construction Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/construction
|
||||
name = "construction voidsuit helmet"
|
||||
icon_state = "rig0-engineering_con"
|
||||
item_state_slots = list(slot_r_hand_str = "eng_helm_con", slot_l_hand_str = "eng_helm_con")
|
||||
|
||||
/obj/item/clothing/suit/space/void/engineering/construction
|
||||
name = "contstruction voidsuit"
|
||||
icon_state = "rig-engineering_con"
|
||||
item_state_slots = list(slot_r_hand_str = "eng_voidsuit_con", slot_l_hand_str = "eng_voidsuit_con")
|
||||
|
||||
//Engineering Surplus Voidsuits
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/alt
|
||||
name = "reinforced engineering voidsuit helmet"
|
||||
desc = "A heavy, radiation-shielded voidsuit helmet with a surprisingly comfortable interior."
|
||||
icon_state = "rig0-engineeringalt"
|
||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 45, bio = 100, rad = 100)
|
||||
light_overlay = "helmet_light_dual"
|
||||
|
||||
/obj/item/clothing/suit/space/void/engineering/alt
|
||||
name = "reinforced engineering voidsuit"
|
||||
desc = "A bulky industrial voidsuit. It's a few generations old, but a reliable design and radiation shielding make up for the lack of climate control."
|
||||
icon_state = "rig-engineeringalt"
|
||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 45, bio = 100, rad = 100)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/engineering/salvage
|
||||
name = "salvage voidsuit helmet"
|
||||
desc = "A heavily modified salvage voidsuit helmet. It has been fitted with radiation-resistant plating."
|
||||
icon_state = "rig0-salvage"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "eng_helm",
|
||||
slot_r_hand_str = "eng_helm",
|
||||
)
|
||||
armor = list(melee = 50, bullet = 10, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 80)
|
||||
|
||||
/obj/item/clothing/suit/space/void/engineering/salvage
|
||||
name = "salvage voidsuit"
|
||||
desc = "A hand-me-down salvage voidsuit. It has obviously had a lot of repair work done to its radiation shielding."
|
||||
icon_state = "rig-engineeringsav"
|
||||
armor = list(melee = 50, bullet = 10, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 80)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd)
|
||||
|
||||
//Mining
|
||||
/obj/item/clothing/head/helmet/space/void/mining
|
||||
name = "mining voidsuit helmet"
|
||||
@@ -52,6 +92,20 @@
|
||||
item_state_slots = list(slot_r_hand_str = "mining_voidsuit", slot_l_hand_str = "mining_voidsuit")
|
||||
armor = list(melee = 50, bullet = 5, laser = 20, energy = 5, bomb = 55, bio = 100, rad = 20)
|
||||
|
||||
//Mining Surplus Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/mining/alt
|
||||
name = "frontier mining voidsuit helmet"
|
||||
desc = "An armored cheap voidsuit helmet. Someone must have through they were pretty cool when they painted a mohawk on it."
|
||||
icon_state = "rig0-miningalt"
|
||||
armor = list(melee = 50, bullet = 15, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/space/void/mining/alt
|
||||
icon_state = "rig-miningalt"
|
||||
name = "frontier mining voidsuit"
|
||||
desc = "A cheap prospecting voidsuit. What it lacks in comfort it makes up for in armor plating and street cred."
|
||||
armor = list(melee = 50, bullet = 15, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 0)
|
||||
|
||||
//Medical
|
||||
/obj/item/clothing/head/helmet/space/void/medical
|
||||
name = "medical voidsuit helmet"
|
||||
@@ -60,16 +114,6 @@
|
||||
item_state_slots = list(slot_r_hand_str = "medical_helm", slot_l_hand_str = "medical_helm")
|
||||
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/medical/emt
|
||||
name = "emergency medical response voidsuit helmet"
|
||||
icon_state = "rig0-medical_emt"
|
||||
item_state_slots = list(slot_r_hand_str = "medical_helm_emt", slot_l_hand_str = "medical_helm_emt")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/medical/bio
|
||||
name = "biohazard voidsuit helmet"
|
||||
icon_state = "rig0-medical_bio"
|
||||
item_state_slots = list(slot_r_hand_str = "medical_helm_bio", slot_l_hand_str = "medical_helm_bio")
|
||||
|
||||
/obj/item/clothing/suit/space/void/medical
|
||||
name = "medical voidsuit"
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
|
||||
@@ -78,15 +122,48 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
|
||||
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
|
||||
|
||||
//Medical EMT Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/medical/emt
|
||||
name = "emergency medical response voidsuit helmet"
|
||||
icon_state = "rig0-medical_emt"
|
||||
item_state_slots = list(slot_r_hand_str = "medical_helm_emt", slot_l_hand_str = "medical_helm_emt")
|
||||
|
||||
/obj/item/clothing/suit/space/void/medical/emt
|
||||
name = "emergency medical response voidsuit"
|
||||
icon_state = "rig-medical_emt"
|
||||
item_state_slots = list(slot_r_hand_str = "medical_voidsuit_emt", slot_l_hand_str = "medical_voidsuit_emt")
|
||||
|
||||
//Medical Biohazard Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/medical/bio
|
||||
name = "biohazard voidsuit helmet"
|
||||
desc = "A special helmet that protects against hazardous environments. Has minor radiation shielding."
|
||||
icon_state = "rig0-medical_bio"
|
||||
item_state_slots = list(slot_r_hand_str = "medical_helm_bio", slot_l_hand_str = "medical_helm_bio")
|
||||
armor = list(melee = 45, bullet = 5, laser = 20, energy = 5, bomb = 15, bio = 100, rad = 75)
|
||||
|
||||
/obj/item/clothing/suit/space/void/medical/bio
|
||||
name = "biohazard voidsuit"
|
||||
desc = "A special suit that protects against hazardous, environments. It feels heavier than the standard suit with extra protection around the joints."
|
||||
icon_state = "rig-medical_bio"
|
||||
item_state_slots = list(slot_r_hand_str = "medical_voidsuit_bio", slot_l_hand_str = "medical_voidsuit_bio")
|
||||
armor = list(melee = 45, bullet = 5, laser = 20, energy = 5, bomb = 15, bio = 100, rad = 75)
|
||||
|
||||
//Medical Surplus Voidsuit
|
||||
/obj/item/clothing/head/helmet/space/void/medical/alt
|
||||
name = "streamlined medical voidsuit helmet"
|
||||
desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a fetching green."
|
||||
icon_state = "rig0-medicalalt"
|
||||
armor = list(melee = 30, bullet = 5, laser = 10,energy = 5, bomb = 5, bio = 100, rad = 60)
|
||||
light_overlay = "helmet_light_dual_green"
|
||||
|
||||
/obj/item/clothing/suit/space/void/medical/alt
|
||||
icon_state = "rig-medicalalt"
|
||||
name = "streamlined medical voidsuit"
|
||||
desc = "A more recent model of Vey-Med voidsuit, featuring the latest in radiation shielding technology, without sacrificing comfort or style."
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
|
||||
armor = list(melee = 30, bullet = 5, laser = 10,energy = 5, bomb = 5, bio = 100, rad = 60)
|
||||
|
||||
//Security
|
||||
/obj/item/clothing/head/helmet/space/void/security
|
||||
@@ -107,6 +184,8 @@
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
//Security Crowd Control Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/security/riot
|
||||
name = "crowd control voidsuit helmet"
|
||||
icon_state = "rig0-sec_riot"
|
||||
@@ -117,6 +196,20 @@
|
||||
icon_state = "rig-sec_riot"
|
||||
item_state_slots = list(slot_r_hand_str = "sec_voidsuit_riot", slot_l_hand_str = "sec_voidsuit_riot")
|
||||
|
||||
//Security Surplus Voidsuit
|
||||
/obj/item/clothing/head/helmet/space/void/security/alt
|
||||
name = "riot security voidsuit helmet"
|
||||
desc = "A somewhat tacky voidsuit helmet, a fact mitigated by heavy armor plating."
|
||||
icon_state = "rig0-secalt"
|
||||
armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
|
||||
|
||||
/obj/item/clothing/suit/space/void/security/alt
|
||||
icon_state = "rig-secalt"
|
||||
name = "riot security voidsuit"
|
||||
desc = "A heavily armored voidsuit, designed to intimidate people who find black intimidating. Surprisingly slimming."
|
||||
armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
|
||||
|
||||
//Atmospherics
|
||||
/obj/item/clothing/head/helmet/space/void/atmos
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
|
||||
@@ -133,4 +226,21 @@
|
||||
icon_state = "rig-atmos"
|
||||
item_state_slots = list(slot_r_hand_str = "atmos_voidsuit", slot_l_hand_str = "atmos_voidsuit")
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50)
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
//Atmospherics Surplus Voidsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/atmos/alt
|
||||
desc = "A special voidsuit helmet designed for work in hazardous, low pressure environments.This one has been plated with an expensive heat and radiation resistant ceramic."
|
||||
name = "heavy duty atmospherics voidsuit helmet"
|
||||
icon_state = "rig0-atmosalt"
|
||||
armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50)
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
light_overlay = "hardhat_light"
|
||||
|
||||
/obj/item/clothing/suit/space/void/atmos/alt
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Fits better than the standard atmospheric voidsuit while still rated to withstand extreme heat and even minor radiation."
|
||||
icon_state = "rig-atmosalt"
|
||||
name = "heavy duty atmos voidsuit"
|
||||
armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50)
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
@@ -4,6 +4,7 @@
|
||||
desc = "A traditional Unathi garment."
|
||||
icon_state = "robe-unathi"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/unathi/mantle
|
||||
name = "hide mantle"
|
||||
@@ -17,6 +18,7 @@
|
||||
desc = "A traditional Zhan-Khazan garment."
|
||||
icon_state = "zhan_furs"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/head/tajaran/scarf
|
||||
name = "headscarf"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/clothing/suit/armor
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight)
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight,/obj/item/clothing/head/helmet)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
item_flags = THICKMATERIAL
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
icon_state = "bulletproof"
|
||||
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
|
||||
blood_overlay_type = "armor"
|
||||
slowdown = 0.5
|
||||
armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
@@ -71,6 +72,7 @@
|
||||
desc = "A vest that excels in protecting the wearer against energy projectiles."
|
||||
icon_state = "armor_reflec"
|
||||
blood_overlay_type = "armor"
|
||||
slowdown = 0.5
|
||||
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.1
|
||||
|
||||
@@ -100,6 +102,7 @@
|
||||
desc = "A vest that protects the wearer from several common types of weaponry."
|
||||
icon_state = "combat"
|
||||
blood_overlay_type = "armor"
|
||||
slowdown = 0.5
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.6
|
||||
|
||||
@@ -109,6 +112,7 @@
|
||||
icon_state = "swatarmor"
|
||||
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
slowdown = 1
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.7
|
||||
@@ -122,11 +126,11 @@
|
||||
permeability_coefficient = 0.01
|
||||
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/head/helmet)
|
||||
slowdown = 1
|
||||
w_class = ITEMSIZE_HUGE
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 100)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.6
|
||||
@@ -242,7 +246,7 @@
|
||||
icon_state = "kvest"
|
||||
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight,/obj/item/clothing/head/helmet)
|
||||
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
item_flags = THICKMATERIAL
|
||||
@@ -274,6 +278,7 @@
|
||||
desc = "An armoured jacket with silver rank pips and livery."
|
||||
icon_state = "warden_jacket"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/wardencoat/alt
|
||||
name = "Warden's jacket"
|
||||
@@ -294,14 +299,14 @@
|
||||
desc = "A greatcoat enhanced with a special alloy for some protection and style."
|
||||
icon_state = "hos"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//Jensen cosplay gear
|
||||
/obj/item/clothing/suit/storage/vest/hoscoat/jensen
|
||||
name = "armored trenchcoat"
|
||||
desc = "A trenchcoat augmented with a special alloy for some protection and style."
|
||||
icon_state = "hostrench"
|
||||
flags_inv = 0
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/pcrc
|
||||
name = "PCRC armor vest"
|
||||
@@ -311,6 +316,34 @@
|
||||
icon_badge = "pcrcvest_badge"
|
||||
icon_nobadge = "pcrcvest_nobadge"
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/solgov
|
||||
name = "\improper Solar Confederate Government armored vest"
|
||||
desc = "A synthetic armor vest. This one is marked with the crest of the Solar Confederate Government."
|
||||
icon_state = "solvest"
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/solgov/heavy
|
||||
name = "\improper Solar Confederate Government heavy armored vest"
|
||||
desc = "A synthetic armor vest with PEACEKEEPER printed in distinctive blue lettering on the chest. This one has added webbing and ballistic plates."
|
||||
icon_state = "solwebvest"
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/solgov/security
|
||||
name = "master at arms heavy armored vest"
|
||||
desc = "A synthetic armor vest with MASTER AT ARMS printed in silver lettering on the chest. This one has added webbing and ballistic plates."
|
||||
icon_state = "secwebvest"
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/solgov/command
|
||||
name = "command heavy armored vest"
|
||||
desc = "A synthetic armor vest with Solar Confederate Government printed in detailed gold lettering on the chest. This one has added webbing and ballistic plates."
|
||||
icon_state = "comwebvest"
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/tactical //crack at a more balanced mid-range armor, minor improvements over standard vests, with the idea "modern" combat armor would focus on energy weapon protection.
|
||||
name = "tactical armored vest"
|
||||
desc = "A heavy armored vest in a fetching tan. It is surprisingly flexible and light, even with the extra webbing and advanced ceramic plates."
|
||||
icon_state = "tacwebvest"
|
||||
item_state = "tacwebvest"
|
||||
armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/detective
|
||||
name = "detective armor vest"
|
||||
desc = "A simple kevlar plate carrier in a vintage brown, it has a badge clipped to the chest that reads, 'Private investigator'."
|
||||
@@ -324,7 +357,7 @@
|
||||
icon_state = "pvest"
|
||||
desc = "A simple kevlar plate carrier. This one has the word 'Press' embroidered on patches on the back and front."
|
||||
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/device/taperecorder,/obj/item/weapon/pen,/obj/item/device/camera_film,/obj/item/device/camera)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/device/taperecorder,/obj/item/weapon/pen,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/clothing/head/helmet)
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/heavy
|
||||
name = "heavy armor vest"
|
||||
@@ -332,7 +365,7 @@
|
||||
icon_state = "webvest"
|
||||
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
|
||||
armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
|
||||
slowdown = 1
|
||||
slowdown = 0.5
|
||||
|
||||
/obj/item/clothing/suit/storage/vest/heavy/officer
|
||||
name = "officer heavy armor vest"
|
||||
@@ -384,8 +417,8 @@
|
||||
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
|
||||
w_class = ITEMSIZE_LARGE//bulky item
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/head/helmet)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0
|
||||
@@ -400,7 +433,7 @@
|
||||
gas_transfer_coefficient = 0.90
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 5 // If you're a tank you're gonna move like a tank.
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
siemens_coefficient = 0
|
||||
|
||||
/obj/item/clothing/suit/armor/tdome
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
slowdown = 1.0
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
//Standard biosuit, orange stripe
|
||||
@@ -33,7 +33,7 @@
|
||||
icon_state = "bio_general"
|
||||
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//Virology biosuit, green stripe
|
||||
/obj/item/clothing/head/bio_hood/virology
|
||||
@@ -42,7 +42,7 @@
|
||||
/obj/item/clothing/suit/bio_suit/virology
|
||||
icon_state = "bio_virology"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//Security biosuit, grey with red stripe across the chest
|
||||
/obj/item/clothing/head/bio_hood/security
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/item/clothing/suit/bio_suit/security
|
||||
icon_state = "bio_security"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//Janitor's biosuit, grey with purple arms
|
||||
/obj/item/clothing/head/bio_hood/janitor
|
||||
@@ -60,7 +60,7 @@
|
||||
/obj/item/clothing/suit/bio_suit/janitor
|
||||
icon_state = "bio_janitor"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//Scientist's biosuit, white with a pink-ish hue
|
||||
/obj/item/clothing/head/bio_hood/scientist
|
||||
@@ -69,13 +69,13 @@
|
||||
/obj/item/clothing/suit/bio_suit/scientist
|
||||
icon_state = "bio_scientist"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//CMO's biosuit, blue stripe
|
||||
/obj/item/clothing/suit/bio_suit/cmo
|
||||
icon_state = "bio_cmo"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/head/bio_hood/cmo
|
||||
icon_state = "bio_cmo"
|
||||
@@ -86,4 +86,4 @@
|
||||
desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses."
|
||||
icon_state = "plaguedoctor"
|
||||
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
desc = "Worn by a Colony Director to show their class."
|
||||
icon_state = "captunic"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/captunic/capjacket
|
||||
name = "colony director's uniform jacket"
|
||||
desc = "A less formal jacket for everyday Colony Director use."
|
||||
icon_state = "capjacket"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/suit/chaplain_hoodie
|
||||
@@ -35,6 +35,7 @@
|
||||
icon_state = "chaplain_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
allowed = list (/obj/item/weapon/storage/bible)
|
||||
|
||||
//Chaplain
|
||||
@@ -43,7 +44,7 @@
|
||||
desc = "Maximum piety in this star system."
|
||||
icon_state = "nun"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//Chef
|
||||
/obj/item/clothing/suit/chef
|
||||
@@ -53,6 +54,7 @@
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.50
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
allowed = list (/obj/item/weapon/material/knife)
|
||||
|
||||
//Chef
|
||||
@@ -62,6 +64,7 @@
|
||||
icon_state = "apronchef"
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = 0
|
||||
flags_inv = 0
|
||||
|
||||
//Security
|
||||
/obj/item/clothing/suit/security/navyofficer
|
||||
@@ -70,6 +73,7 @@
|
||||
icon_state = "officerbluejacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/security/navywarden
|
||||
name = "warden's jacket"
|
||||
@@ -77,6 +81,7 @@
|
||||
icon_state = "wardenbluejacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/security/navyhos
|
||||
name = "head of security's jacket"
|
||||
@@ -84,6 +89,7 @@
|
||||
icon_state = "hosbluejacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
//Detective
|
||||
/obj/item/clothing/suit/storage/det_trench
|
||||
@@ -92,6 +98,7 @@
|
||||
icon_state = "detective"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine,
|
||||
/obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/handcuffs, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/flame/lighter,
|
||||
/obj/item/device/taperecorder, /obj/item/device/uv_light)
|
||||
@@ -101,12 +108,14 @@
|
||||
name = "grey trenchcoat"
|
||||
icon_state = "detective2"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
//Forensics
|
||||
/obj/item/clothing/suit/storage/forensics
|
||||
name = "jacket"
|
||||
desc = "A forensics technician jacket."
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine,
|
||||
/obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/handcuffs, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/flame/lighter,
|
||||
/obj/item/device/taperecorder, /obj/item/device/uv_light)
|
||||
@@ -145,6 +154,21 @@
|
||||
/obj/item/clothing/mask/gas, /obj/item/taperoll/engineering)
|
||||
body_parts_covered = UPPER_TORSO
|
||||
|
||||
/obj/item/clothing/suit/storage/hazardvest/blue
|
||||
name = "blue hazard vest"
|
||||
desc = "A high-visibility vest used in work zones. This one is blue!"
|
||||
icon_state = "hazard_b"
|
||||
|
||||
/obj/item/clothing/suit/storage/hazardvest/green
|
||||
name = "green hazard vest"
|
||||
desc = "A high-visibility vest used by emergency responders. This one is green!"
|
||||
icon_state = "hazard_g"
|
||||
|
||||
/obj/item/clothing/suit/storage/hazardvest/white
|
||||
name = "white hazard vest"
|
||||
desc = "A high-visibility vest used in work zones. This one has a red cross!"
|
||||
icon_state = "hazard_w"
|
||||
|
||||
//Lawyer
|
||||
/obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
|
||||
name = "blue suit jacket"
|
||||
@@ -198,6 +222,16 @@
|
||||
icon_open = "ems_jacket_open"
|
||||
icon_closed = "ems_jacket_closed"
|
||||
|
||||
/obj/item/clothing/suit/surgicalapron
|
||||
name = "surgical apron"
|
||||
desc = "A sterile blue apron for performing surgery."
|
||||
icon_state = "surgical"
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat, \
|
||||
/obj/item/weapon/cautery,/obj/item/weapon/bonegel,/obj/item/weapon/FixOVein)
|
||||
|
||||
//Mime
|
||||
/obj/item/clothing/suit/suspenders
|
||||
name = "suspenders"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
icon_closed = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
|
||||
|
||||
|
||||
@@ -54,26 +54,28 @@
|
||||
icon_state = "death"
|
||||
flags = CONDUCT
|
||||
fire_resist = T0C+5200
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/greatcoat
|
||||
name = "great coat"
|
||||
desc = "A heavy great coat"
|
||||
icon_state = "gentlecoat"
|
||||
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/johnny_coat
|
||||
name = "johnny~~ coat"
|
||||
desc = "Johnny~~"
|
||||
icon_state = "gentlecoat"
|
||||
item_state_slots = list(slot_r_hand_str = "johnny_coat", slot_l_hand_str = "johnny_coat")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/justice
|
||||
name = "justice suit"
|
||||
desc = "This pretty much looks ridiculous."
|
||||
icon_state = "gentle_coat"
|
||||
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET
|
||||
|
||||
/obj/item/clothing/suit/judgerobe
|
||||
@@ -82,7 +84,7 @@
|
||||
icon_state = "judge"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/*/obj/item/clothing/suit/wcoat
|
||||
name = "waistcoat"
|
||||
@@ -130,7 +132,7 @@
|
||||
desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET
|
||||
|
||||
/obj/item/clothing/suit/hastur
|
||||
@@ -139,21 +141,21 @@
|
||||
icon_state = "hastur"
|
||||
item_state_slots = list(slot_r_hand_str = "rad", slot_l_hand_str = "rad")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/imperium_monk
|
||||
name = "Imperium monk"
|
||||
desc = "Have YOU killed a xenos today?"
|
||||
icon_state = "imperium_monk"
|
||||
body_parts_covered = HEAD|UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/chickensuit
|
||||
name = "Chicken Suit"
|
||||
desc = "A suit made long ago by the ancient empire KFC."
|
||||
icon_state = "chickensuit"
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
siemens_coefficient = 2.0
|
||||
|
||||
/obj/item/clothing/suit/monkeysuit
|
||||
@@ -162,7 +164,7 @@
|
||||
icon_state = "monkeysuit"
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
siemens_coefficient = 2.0
|
||||
|
||||
/obj/item/clothing/suit/holidaypriest
|
||||
@@ -171,21 +173,21 @@
|
||||
icon_state = "holidaypriest"
|
||||
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/cardborg
|
||||
name = "cardborg suit"
|
||||
desc = "An ordinary cardboard box with holes cut in the sides."
|
||||
icon_state = "cardborg"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/skeleton
|
||||
name = "skeleton costume"
|
||||
desc = "A body-tight costume with the human skeleton lined out on it."
|
||||
icon_state = "skelecost"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|FEET|HANDS|EYES|HEAD|FACE
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDEGLOVES
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDEGLOVES|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "judge", slot_l_hand_str = "judge")
|
||||
|
||||
/obj/item/clothing/suit/engicost
|
||||
@@ -193,7 +195,7 @@
|
||||
desc = "It's supposed to look like an engineering voidsuit... It doesn't look like it could protect from much radiation."
|
||||
icon_state = "engicost"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "eng_voidsuit", slot_l_hand_str = "eng_voidsuit")
|
||||
|
||||
/obj/item/clothing/suit/maxman
|
||||
@@ -201,7 +203,7 @@
|
||||
desc = "A costume made to look like Dr. Maxman, the famous male-enhancement salesman. Complete with red do-rag and sleeveless labcoat."
|
||||
icon_state = "maxman"
|
||||
body_parts_covered = LOWER_TORSO|FEET|LEGS|HEAD
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
|
||||
/obj/item/clothing/suit/iasexy
|
||||
@@ -209,7 +211,7 @@
|
||||
desc = "Now where's your pen?~..."
|
||||
icon_state = "iacost"
|
||||
body_parts_covered = UPPER_TORSO|FEET|LOWER_TORSO|EYES
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
|
||||
/obj/item/clothing/suit/sexyminer
|
||||
@@ -217,7 +219,7 @@
|
||||
desc = "For when you need to get your rocks off."
|
||||
icon_state = "sexyminer"
|
||||
body_parts_covered = FEET|LOWER_TORSO|HEAD
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "miner", slot_l_hand_str = "miner")
|
||||
|
||||
/obj/item/clothing/suit/sumo
|
||||
@@ -225,7 +227,7 @@
|
||||
desc = "An inflated sumo wrestler costume. It's quite hot."
|
||||
icon_state = "sumo"
|
||||
body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDESHOES
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "classicponcho", slot_l_hand_str = "classicponcho")
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
|
||||
@@ -234,7 +236,7 @@
|
||||
desc = "You would feel insanely cool wearing this."
|
||||
icon_state = "hackercost"
|
||||
body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS|ARMS|EYES
|
||||
flags_inv = HIDESHOES
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "leather_coat", slot_l_hand_str = "leather_coat")
|
||||
|
||||
/obj/item/clothing/suit/lumber
|
||||
@@ -242,7 +244,7 @@
|
||||
desc = "Smells of dusky pine. Includes chest hair and beard."
|
||||
icon_state = "sexylumber"
|
||||
body_parts_covered = FEET|LOWER_TORSO|FEET
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat")
|
||||
|
||||
/*
|
||||
@@ -253,7 +255,7 @@
|
||||
desc = "A suit that completely restrains the wearer."
|
||||
icon_state = "straight_jacket"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/ianshirt
|
||||
name = "worn shirt"
|
||||
@@ -261,6 +263,7 @@
|
||||
icon_state = "ianshirt"
|
||||
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat") //placeholder -S2-
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
|
||||
/*
|
||||
* coats
|
||||
@@ -271,12 +274,14 @@
|
||||
icon_state = "leathercoat_alt"
|
||||
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)
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/leathercoat/sec
|
||||
name = "leather coat"
|
||||
desc = "A long, thick black leather coat."
|
||||
icon_state = "leathercoat_sec"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/browncoat
|
||||
name = "brown leather coat"
|
||||
@@ -284,6 +289,7 @@
|
||||
icon_state = "browncoat"
|
||||
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)
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/neocoat
|
||||
name = "black coat"
|
||||
@@ -291,18 +297,21 @@
|
||||
icon_state = "neocoat"
|
||||
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)
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/customs
|
||||
name = "customs jacket"
|
||||
desc = "A standard SolGov Customs formal jacket."
|
||||
icon_state = "customs_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/greyjacket
|
||||
name = "grey jacket"
|
||||
desc = "A fancy twead grey jacket."
|
||||
icon_state = "gentlecoat"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/trench
|
||||
name = "brown trenchcoat"
|
||||
@@ -310,11 +319,13 @@
|
||||
icon_state = "detective"
|
||||
blood_overlay_type = "coat"
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/taperecorder,/obj/item/device/uv_light)
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/trench/grey
|
||||
name = "grey trenchcoat"
|
||||
icon_state = "detective2"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/*
|
||||
* stripper
|
||||
@@ -339,7 +350,7 @@
|
||||
icon_state = "xenos"
|
||||
item_state_slots = list(slot_r_hand_str = "black_suit", slot_l_hand_str = "black_suit")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
siemens_coefficient = 2.0
|
||||
|
||||
/obj/item/clothing/suit/jacket/puffer
|
||||
@@ -359,18 +370,21 @@
|
||||
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
|
||||
icon_state = "militaryjacket_nobadge"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/miljacket/alt
|
||||
name = "military jacket"
|
||||
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
|
||||
icon_state = "militaryjacket_badge"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/miljacket/green
|
||||
name = "military jacket"
|
||||
desc = "A dark green canvas jacket. Feels sturdy, yet comfortable."
|
||||
icon_state = "militaryjacket_green"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/bomber
|
||||
name = "bomber jacket"
|
||||
@@ -381,6 +395,7 @@
|
||||
icon_closed = "bomber"
|
||||
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)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|ARMS
|
||||
min_cold_protection_temperature = T0C - 20
|
||||
siemens_coefficient = 0.7
|
||||
@@ -391,6 +406,7 @@
|
||||
icon_state = "bomberjacket_new"
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|ARMS
|
||||
min_cold_protection_temperature = T0C - 20
|
||||
siemens_coefficient = 0.7
|
||||
@@ -402,6 +418,7 @@
|
||||
icon_open = "leather_jacket_open"
|
||||
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)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/leather_jacket/sleeveless
|
||||
name = "leather vest"
|
||||
@@ -445,6 +462,7 @@
|
||||
icon_closed = "brown_jacket"
|
||||
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)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless
|
||||
name = "brown vest"
|
||||
@@ -480,6 +498,7 @@
|
||||
icon_closed = "denim_jacket"
|
||||
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)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/denim_jacket/sleeveless
|
||||
name = "denim vest"
|
||||
@@ -515,6 +534,7 @@
|
||||
icon_closed = "grey_hoodie"
|
||||
min_cold_protection_temperature = T0C - 20
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/black
|
||||
name = "black hoodie"
|
||||
@@ -602,7 +622,7 @@
|
||||
icon_state = "white_dress"
|
||||
item_state_slots = list(slot_r_hand_str = "white_dress", slot_l_hand_str = "white_dress")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/carp_costume
|
||||
name = "carp costume"
|
||||
@@ -610,6 +630,7 @@
|
||||
icon_state = "carp_casual"
|
||||
item_state_slots = list(slot_r_hand_str = "carp_casual", slot_l_hand_str = "carp_casual") //Does not exist -S2-
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE //Space carp like space, so you should too
|
||||
hooded = 1
|
||||
@@ -631,6 +652,7 @@
|
||||
icon_state = "ian"
|
||||
item_state_slots = list(slot_r_hand_str = "ian", slot_l_hand_str = "ian") //Does not exist -S2-
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
//cold_protection = CHEST|GROIN|ARMS
|
||||
//min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
hooded = 1
|
||||
@@ -652,6 +674,7 @@
|
||||
icon_state = "coatwinter"
|
||||
item_state_slots = list(slot_r_hand_str = "coatwinter", slot_l_hand_str = "coatwinter")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
@@ -726,6 +749,7 @@
|
||||
icon_state = "varsity"
|
||||
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)
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/varsity/red
|
||||
name = "red varsity jacket"
|
||||
@@ -795,6 +819,7 @@
|
||||
icon_state = "flannel"
|
||||
item_state_slots = list(slot_r_hand_str = "black_labcoat", slot_l_hand_str = "black_labcoat")
|
||||
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)
|
||||
flags_inv = HIDEHOLSTER
|
||||
var/rolled = 0
|
||||
var/tucked = 0
|
||||
var/buttoned = 0
|
||||
@@ -840,10 +865,12 @@
|
||||
|
||||
if(buttoned == 0)
|
||||
buttoned = 1
|
||||
usr << "<span class='notice'>You unbutton your [src].</span>"
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
usr << "<span class='notice'>You button your [src].</span>"
|
||||
else
|
||||
buttoned = 0
|
||||
usr<<"<span class='notice'>You button your [src].</span>"
|
||||
flags_inv = HIDEHOLSTER
|
||||
usr<<"<span class='notice'>You unbutton your [src].</span>"
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/suit/storage/flannel/update_icon()
|
||||
@@ -881,4 +908,5 @@
|
||||
icon_open = "suitjacket_green_open"
|
||||
icon_closed = "suitjacket_green"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -0,0 +1,168 @@
|
||||
//SolGov Uniform Suits
|
||||
|
||||
//Service
|
||||
|
||||
/obj/item/clothing/suit/storage/service
|
||||
name = "service jacket"
|
||||
desc = "A uniform service jacket, plain and undecorated."
|
||||
icon_state = "blackservice"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/flashlight,/obj/item/weapon/pen,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/taperecorder,/obj/item/device/analyzer,/obj/item/device/radio,/obj/item/taperoll)
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary
|
||||
name = "expeditionary jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons."
|
||||
icon_state = "blackservice_crew"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/medical
|
||||
name = "expeditionary medical jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and blue trim."
|
||||
icon_state = "blackservice_med"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/medical/command
|
||||
name = "expeditionary medical command jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and blue trim."
|
||||
icon_state = "blackservice_medcom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/engineering
|
||||
name = "expeditionary engineering jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and orange trim."
|
||||
icon_state = "blackservice_eng"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/engineering/command
|
||||
name = "expeditionary engineering command jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and orange trim."
|
||||
icon_state = "blackservice_engcom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/supply
|
||||
name = "expeditionary supply jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and brown trim."
|
||||
icon_state = "blackservice_sup"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/security
|
||||
name = "expeditionary security jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and red trim."
|
||||
icon_state = "blackservice_sec"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/security/command
|
||||
name = "expeditionary security command jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and red trim."
|
||||
icon_state = "blackservice_seccom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/command
|
||||
name = "expeditionary command jacket"
|
||||
desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and gold trim."
|
||||
icon_state = "blackservice_com"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine
|
||||
name = "marine coat"
|
||||
desc = "An SCG Marine Corps service coat. Green and undecorated."
|
||||
icon_state = "greenservice"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/medical
|
||||
name = "marine medical jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has blue markings."
|
||||
icon_state = "greenservice_med"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/medical/command
|
||||
name = "marine medical command jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has blue and gold markings."
|
||||
icon_state = "greenservice_medcom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/engineering
|
||||
name = "marine engineering jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has orange markings."
|
||||
icon_state = "greenservice_eng"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/engineering/command
|
||||
name = "marine engineering command jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has orange and gold markings."
|
||||
icon_state = "greenservice_engcom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/supply
|
||||
name = "marine supply jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has brown markings."
|
||||
icon_state = "greenservice_sup"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/security
|
||||
name = "marine security jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has red markings."
|
||||
icon_state = "greenservice_sec"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/security/command
|
||||
name = "marine security command jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has red and gold markings."
|
||||
icon_state = "greenservice_seccom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine/command
|
||||
name = "marine command jacket"
|
||||
desc = "An SCG Marine Corps service coat. This one has gold markings."
|
||||
icon_state = "greenservice_com"
|
||||
|
||||
//Dress
|
||||
|
||||
/obj/item/clothing/suit/dress
|
||||
name = "dress jacket"
|
||||
desc = "A uniform dress jacket, fancy."
|
||||
icon_state = "greydress"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/flashlight,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/device/radio,/obj/item/weapon/pen)
|
||||
|
||||
/obj/item/clothing/suit/dress/expedition
|
||||
name = "expeditionary dress jacket"
|
||||
desc = "A silver and grey dress jacket belonging to the SCG Expeditionary Corps. Fashionable, for the 25th century at least."
|
||||
icon_state = "greydress"
|
||||
|
||||
/obj/item/clothing/suit/dress/expedition/command
|
||||
name = "expeditionary command dress jacket"
|
||||
desc = "A gold and grey dress jacket belonging to the SCG Expeditionary Corps. The height of fashion."
|
||||
icon_state = "greydress_com"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/dress
|
||||
name = "clasped dress jacket"
|
||||
desc = "A uniform dress jacket with gold toggles."
|
||||
icon_state = "whitedress"
|
||||
item_state = "labcoat"
|
||||
icon_open = "whitedress_open"
|
||||
icon_closed = "whitedress"
|
||||
blood_overlay_type = "coat"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/dress/fleet
|
||||
name = "fleet dress jacket"
|
||||
desc = "A crisp white SCG Fleet dress jacket with blue and gold accents. Don't get near pasta sauce or vox."
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/dress/fleet/command
|
||||
name = "expeditionary command dress jacket"
|
||||
desc = "A crisp white SCG Fleet dress jacket dripping with gold accents. So bright it's blinding."
|
||||
icon_state = "whitedress_com"
|
||||
item_state = "labcoat"
|
||||
icon_open = "whitedress_com_open"
|
||||
icon_closed = "whitedress_com"
|
||||
blood_overlay_type = "coat"
|
||||
|
||||
/obj/item/clothing/suit/dress/marine
|
||||
name = "marine dress jacket"
|
||||
desc = "A tailored black SCG Marine Corps dress jacket with red trim. So sexy it hurts."
|
||||
icon_state = "blackdress"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
|
||||
/obj/item/clothing/suit/dress/marine/command
|
||||
name = "marine command dress jacket"
|
||||
desc = "A tailored black SCG Marine Corps dress jacket with gold trim. Smells like ceremony."
|
||||
icon_state = "blackdress_com"
|
||||
//Misc
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/marshal_jacket
|
||||
name = "colonial marshal jacket"
|
||||
desc = "A black synthleather jacket. The word 'MARSHAL' is stenciled onto the back in gold lettering."
|
||||
icon_state = "marshal_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
icon_open = "marshal_jacket_open"
|
||||
icon_closed = "marshal_jacket"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
//Jackets with buttons, used for labcoats, IA jackets, First Responder jackets, and brown jackets.
|
||||
/obj/item/clothing/suit/storage/toggle
|
||||
flags_inv = HIDEHOLSTER
|
||||
var/icon_open
|
||||
var/icon_closed
|
||||
verb/toggle()
|
||||
@@ -41,16 +42,20 @@
|
||||
|
||||
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
icon_state = icon_closed
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
usr << "You button up the coat."
|
||||
else if(icon_state == icon_closed)
|
||||
icon_state = icon_open
|
||||
flags_inv = HIDEHOLSTER
|
||||
usr << "You unbutton the coat."
|
||||
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
|
||||
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
|
||||
return
|
||||
update_clothing_icon() //so our overlays update
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/toggle
|
||||
flags_inv = HIDEHOLSTER
|
||||
var/icon_open
|
||||
var/icon_closed
|
||||
verb/toggle()
|
||||
@@ -62,9 +67,11 @@
|
||||
|
||||
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
icon_state = icon_closed
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
usr << "You button up the coat."
|
||||
else if(icon_state == icon_closed)
|
||||
icon_state = icon_open
|
||||
flags_inv = HIDEHOLSTER
|
||||
usr << "You unbutton the coat."
|
||||
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
|
||||
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher)
|
||||
slowdown = 1.0
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
item_flags = STOPPRESSUREDAMAGE
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
@@ -57,7 +57,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
slowdown = 2
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO
|
||||
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0
|
||||
@@ -92,4 +92,4 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/head/radiation,/obj/item/clothing/mask/gas)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAIL
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20)
|
||||
allowed = list(/obj/item/weapon/teleportation_scroll)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
siemens_coefficient = 0.8
|
||||
wizard_garb = 1
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
icon_state = "gentlecoat"
|
||||
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/fake
|
||||
name = "wizard robe"
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
var/image/inv_overlay = null //overlay used when attached to clothing.
|
||||
var/image/mob_overlay = null
|
||||
var/overlay_state = null
|
||||
var/concealed_holster = 0
|
||||
var/mob/living/carbon/human/wearer = null //To check if the wearer changes, so species spritesheets change properly.
|
||||
|
||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too!
|
||||
|
||||
@@ -20,23 +22,27 @@
|
||||
|
||||
/obj/item/clothing/accessory/proc/get_inv_overlay()
|
||||
if(!inv_overlay)
|
||||
if(!mob_overlay)
|
||||
get_mob_overlay()
|
||||
|
||||
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
|
||||
if(icon_override)
|
||||
if("[tmp_icon_state]_tie" in icon_states(icon_override))
|
||||
tmp_icon_state = "[tmp_icon_state]_tie"
|
||||
inv_overlay = image(icon = mob_overlay.icon, icon_state = tmp_icon_state, dir = SOUTH)
|
||||
inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH)
|
||||
return inv_overlay
|
||||
|
||||
/obj/item/clothing/accessory/proc/get_mob_overlay()
|
||||
if(!mob_overlay)
|
||||
if(!mob_overlay || has_suit.loc != wearer)
|
||||
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
|
||||
if(ishuman(has_suit.loc))
|
||||
wearer = has_suit.loc
|
||||
else
|
||||
wearer = null
|
||||
|
||||
if(icon_override)
|
||||
if("[tmp_icon_state]_mob" in icon_states(icon_override))
|
||||
tmp_icon_state = "[tmp_icon_state]_mob"
|
||||
mob_overlay = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]")
|
||||
else if(wearer && sprite_sheets[wearer.species.get_bodytype(wearer)]) //Teshari can finally into webbing, too!
|
||||
mob_overlay = image("icon" = sprite_sheets[wearer.species.get_bodytype(wearer)], "icon_state" = "[tmp_icon_state]")
|
||||
else
|
||||
mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]")
|
||||
return mob_overlay
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "A handgun holster."
|
||||
icon_state = "holster"
|
||||
slot = "utility"
|
||||
concealed_holster = 1
|
||||
var/obj/item/holstered = null
|
||||
|
||||
/obj/item/clothing/accessory/holster/proc/holster(var/obj/item/I, var/mob/living/user)
|
||||
@@ -120,14 +121,17 @@
|
||||
desc = "A handgun holster. Made of expensive leather."
|
||||
icon_state = "holster"
|
||||
overlay_state = "holster_low"
|
||||
concealed_holster = 0
|
||||
|
||||
/obj/item/clothing/accessory/holster/hip
|
||||
name = "hip holster"
|
||||
desc = "A handgun holster slung low on the hip, draw pardner!"
|
||||
icon_state = "holster_hip"
|
||||
concealed_holster = 0
|
||||
|
||||
/obj/item/clothing/accessory/holster/leg
|
||||
name = "leg holster"
|
||||
desc = "A tacticool handgun holster. Worn on the upper leg."
|
||||
icon_state = "holster_hip"
|
||||
overlay_state = "holster_leg"
|
||||
overlay_state = "holster_leg"
|
||||
concealed_holster = 0
|
||||
@@ -91,7 +91,7 @@
|
||||
item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black")
|
||||
|
||||
/obj/item/clothing/under/gov
|
||||
desc = "A neat proper uniform of someone on offical business. The plain, professional attire of an Internal Affairs Agent. The collar is <i>immaculately</i> starched."
|
||||
desc = "A neat proper uniform of someone on offical business. The collar is <i>immaculately</i> starched."
|
||||
name = "Green formal uniform"
|
||||
icon_state = "greensuit"
|
||||
item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom")
|
||||
@@ -607,13 +607,13 @@
|
||||
/obj/item/clothing/under/stripper/stripper_pink
|
||||
name = "pink swimsuit"
|
||||
desc = "A rather skimpy pink swimsuit."
|
||||
icon_state = "stripper_p_under"
|
||||
icon_state = "stripper_p"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/stripper/stripper_green
|
||||
name = "green swimsuit"
|
||||
desc = "A rather skimpy green swimsuit."
|
||||
icon_state = "stripper_g_under"
|
||||
icon_state = "stripper_g"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/stripper/mankini
|
||||
@@ -621,3 +621,74 @@
|
||||
desc = "No honest man would wear this abomination"
|
||||
icon_state = "mankini"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/*
|
||||
*Misc Uniforms
|
||||
*/
|
||||
|
||||
/obj/item/clothing/under/aether
|
||||
name = "\improper Aether jumpsuit"
|
||||
desc = "A jumpsuit belonging to Aether Atmospherics and Recycling, a Trans-Stellar that supplies recycling and atmospheric systems to colonies."
|
||||
icon_state = "aether"
|
||||
worn_state = "aether"
|
||||
|
||||
/obj/item/clothing/under/pcrc
|
||||
name = "\improper PCRC uniform"
|
||||
desc = "A uniform belonging to Proxima Centauri Risk Control, a private security firm."
|
||||
icon_state = "pcrc"
|
||||
item_state = "jensensuit"
|
||||
worn_state = "pcrc"
|
||||
|
||||
/obj/item/clothing/under/grayson
|
||||
name = "\improper Grayson overalls"
|
||||
desc = "A set of overalls belonging to Grayson Manufactories, a mining Trans-Stellar."
|
||||
icon_state = "mechanic"
|
||||
worn_state = "mechanic"
|
||||
|
||||
/obj/item/clothing/under/wardt
|
||||
name = "\improper Ward-Takahashi jumpsuit"
|
||||
desc = "A jumpsuit belonging to Ward-Takahashi, a Trans-Stellar in the consumer goods market."
|
||||
icon_state = "robotics2"
|
||||
worn_state = "robotics2"
|
||||
|
||||
/obj/item/clothing/under/mbill
|
||||
name = "\improper Major Bill's uniform"
|
||||
desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation."
|
||||
icon_state = "mbill"
|
||||
worn_state = "mbill"
|
||||
|
||||
/obj/item/clothing/under/confederacy
|
||||
name = "\improper Confederacy uniform"
|
||||
desc = "A military uniform belonging to the Confederacy of Man, an independent human government."
|
||||
icon_state = "confed"
|
||||
worn_state = "confed"
|
||||
|
||||
/obj/item/clothing/under/saare
|
||||
name = "\improper SAARE uniform"
|
||||
desc = "A dress uniform belonging to Stealth Assault Enterprises, a minor private military corporation."
|
||||
icon_state = "saare"
|
||||
worn_state = "saare"
|
||||
|
||||
/obj/item/clothing/under/frontier
|
||||
name = "frontier clothes"
|
||||
desc = "A rugged flannel shirt and denim overalls. A popular style among frontier colonists."
|
||||
icon_state = "frontier"
|
||||
worn_state = "frontier"
|
||||
|
||||
/obj/item/clothing/under/focal
|
||||
name = "\improper Focal Point jumpsuit"
|
||||
desc = "A jumpsuit belonging to Focal Point Energistics, an engineering megacorporation."
|
||||
icon_state = "focal"
|
||||
worn_state = "focal"
|
||||
|
||||
/obj/item/clothing/under/hephaestus
|
||||
name = "\improper Hephaestus jumpsuit"
|
||||
desc = "A jumpsuit belonging to Hephaestus Industries, a Trans-Stellar best known for its arms production."
|
||||
icon_state = "heph"
|
||||
worn_state = "heph"
|
||||
|
||||
/obj/item/clothing/under/rank/psych/turtleneck/sweater
|
||||
desc = "A warm looking sweater and a pair of dark blue slacks."
|
||||
name = "sweater"
|
||||
icon_state = "turtleneck"
|
||||
worn_state = "turtleneck"
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
name = "white shorts"
|
||||
icon_state = "whiteshorts"
|
||||
|
||||
/obj/item/clothing/under/shorts/white/female
|
||||
name = "white short shorts"
|
||||
icon_state = "whiteshorts_f"
|
||||
|
||||
/obj/item/clothing/under/shorts/jeans
|
||||
name = "jeans shorts"
|
||||
desc = "Some jeans! Just in short form!"
|
||||
@@ -116,6 +120,11 @@
|
||||
desc = "A skirt that is a shiny red."
|
||||
icon_state = "skirt_short_red"
|
||||
|
||||
/obj/item/clothing/under/skirt/denim
|
||||
name = "short denim skirt"
|
||||
desc = "A skirt that is made of denim."
|
||||
icon_state = "skirt_short_denim"
|
||||
|
||||
/obj/item/clothing/under/skirt/swept
|
||||
name = "swept skirt"
|
||||
desc = "A skirt that is swept to one side."
|
||||
|
||||
@@ -0,0 +1,265 @@
|
||||
//SolGov Uniforms
|
||||
|
||||
//PT
|
||||
/obj/item/clothing/under/pt
|
||||
name = "pt uniform"
|
||||
desc = "Shorts! Shirt! Miami! Sexy!"
|
||||
icon_state = "miami"
|
||||
worn_state = "miami"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/pt/expeditionary
|
||||
name = "expeditionary pt uniform"
|
||||
desc = "A baggy shirt bearing the seal of the SCG Expeditionary Corps and some dorky looking blue shorts."
|
||||
icon_state = "expeditionpt"
|
||||
worn_state = "expeditionpt"
|
||||
|
||||
/obj/item/clothing/under/pt/fleet
|
||||
name = "fleet pt uniform"
|
||||
desc = "A pair of black shorts and two tank tops, seems impractical. Looks good though."
|
||||
icon_state = "fleetpt"
|
||||
worn_state = "fleetpt"
|
||||
|
||||
/obj/item/clothing/under/pt/marine
|
||||
name = "marine pt uniform"
|
||||
desc = "Does NOT leave much to the imagination."
|
||||
icon_state = "marinept"
|
||||
worn_state = "marinept"
|
||||
|
||||
|
||||
//Utility
|
||||
|
||||
/obj/item/clothing/under/utility
|
||||
name = "utility uniform"
|
||||
desc = "A comfortable turtleneck and black utility trousers."
|
||||
icon_state = "blackutility"
|
||||
worn_state = "blackutility"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary
|
||||
name = "expeditionary uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim."
|
||||
icon_state = "blackutility_crew"
|
||||
worn_state = "blackutility_crew"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/medical
|
||||
name = "expeditionary medical uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and blue blazes."
|
||||
icon_state = "blackutility_med"
|
||||
worn_state = "blackutility_med"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/medical/command
|
||||
name = "expeditionary medical command uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and blue blazes."
|
||||
icon_state = "blackutility_medcom"
|
||||
worn_state = "blackutility_medcom"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/engineering
|
||||
name = "expeditionary engineering uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and organge blazes."
|
||||
icon_state = "blackutility_eng"
|
||||
worn_state = "blackutility_eng"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/engineering/command
|
||||
name = "expeditionary engineering command uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and organge blazes."
|
||||
icon_state = "blackutility_engcom"
|
||||
worn_state = "blackutility_engcom"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/supply
|
||||
name = "expeditionary supply uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and brown blazes."
|
||||
icon_state = "blackutility_sup"
|
||||
worn_state = "blackutility_sup"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/security
|
||||
name = "expeditionary security uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and red blazes."
|
||||
icon_state = "blackutility_sec"
|
||||
worn_state = "blackutility_sec"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/security/command
|
||||
name = "expeditionary security command uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and red blazes."
|
||||
icon_state = "blackutility_seccom"
|
||||
worn_state = "blackutility_seccom"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/command
|
||||
name = "expeditionary command uniform"
|
||||
desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and gold blazes."
|
||||
icon_state = "blackutility_com"
|
||||
worn_state = "blackutility_com"
|
||||
|
||||
|
||||
/obj/item/clothing/under/utility/fleet
|
||||
name = "fleet coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material."
|
||||
icon_state = "navyutility"
|
||||
worn_state = "navyutility"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
/obj/item/clothing/under/utility/fleet/medical
|
||||
name = "fleet medical coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has blue cuffs."
|
||||
icon_state = "navyutility_med"
|
||||
worn_state = "navyutility_med"
|
||||
|
||||
/obj/item/clothing/under/utility/fleet/engineering
|
||||
name = "fleet engineering coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has orange cuffs."
|
||||
icon_state = "navyutility_eng"
|
||||
worn_state = "navyutility_eng"
|
||||
|
||||
/obj/item/clothing/under/utility/fleet/supply
|
||||
name = "fleet supply coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has brown cuffs."
|
||||
icon_state = "navyutility_sup"
|
||||
worn_state = "navyutility_sup"
|
||||
|
||||
/obj/item/clothing/under/utility/fleet/security
|
||||
name = "fleet security coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has red cuffs."
|
||||
icon_state = "navyutility_sec"
|
||||
worn_state = "navyutility_sec"
|
||||
|
||||
/obj/item/clothing/under/utility/fleet/command
|
||||
name = "fleet command coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has gold cuffs."
|
||||
icon_state = "navyutility_com"
|
||||
worn_state = "navyutility_com"
|
||||
|
||||
|
||||
/obj/item/clothing/under/utility/marine
|
||||
name = "marine fatigues"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material."
|
||||
icon_state = "greyutility"
|
||||
worn_state = "greyutility"
|
||||
armor = list(melee = 10, bullet = 0, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/under/utility/marine/green
|
||||
name = "green fatigues"
|
||||
desc = "A green version of the SCG marine utility uniform, made from durable material."
|
||||
icon_state = "greenutility"
|
||||
worn_state = "greenutility"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/tan
|
||||
name = "tan fatigues"
|
||||
desc = "A tan version of the SCG marine utility uniform, made from durable material."
|
||||
icon_state = "tanutility"
|
||||
worn_state = "tanutility"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/medical
|
||||
name = "marine medical fatigues"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has blue markings."
|
||||
icon_state = "greyutility_med"
|
||||
worn_state = "greyutility_med"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/engineering
|
||||
name = "marine engineering fatigues"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has orange markings."
|
||||
icon_state = "greyutility_eng"
|
||||
worn_state = "greyutility_eng"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/supply
|
||||
name = "marine supply fatigues"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has brown markings."
|
||||
icon_state = "greyutility_sup"
|
||||
worn_state = "greyutility_sup"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/security
|
||||
name = "marine security fatigues"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has red markings."
|
||||
icon_state = "greyutility_sec"
|
||||
worn_state = "greyutility_sec"
|
||||
|
||||
/obj/item/clothing/under/utility/marine/command
|
||||
name = "marine command coveralls"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has gold markings."
|
||||
icon_state = "greyutility_com"
|
||||
worn_state = "greyutility_com"
|
||||
|
||||
//Service
|
||||
|
||||
/obj/item/clothing/under/service
|
||||
name = "service uniform"
|
||||
desc = "A service uniform of some kind."
|
||||
icon_state = "whiteservice"
|
||||
worn_state = "whiteservice"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/service/fleet
|
||||
name = "fleet service uniform"
|
||||
desc = "The service uniform of the SCG Fleet, made from immaculate white fabric."
|
||||
icon_state = "whiteservice"
|
||||
worn_state = "whiteservice"
|
||||
|
||||
/obj/item/clothing/under/service/marine
|
||||
name = "marine service uniform"
|
||||
desc = "The service uniform of the SCG Marine Corps. Slimming."
|
||||
icon_state = "greenservice"
|
||||
worn_state = "greenservice"
|
||||
|
||||
/obj/item/clothing/under/service/marine/command
|
||||
name = "marine command service uniform"
|
||||
desc = "The service uniform of the SCG Marine Corps. Slimming and stylish."
|
||||
icon_state = "greenservice_com"
|
||||
worn_state = "greenservice_com"
|
||||
|
||||
//Dress
|
||||
/obj/item/clothing/under/dress
|
||||
name = "dress uniform"
|
||||
desc = "A dress uniform of some kind."
|
||||
icon_state = "greydress"
|
||||
worn_state = "greydress"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/dress/expeditionary
|
||||
name = "expeditionary dress uniform"
|
||||
desc = "The dress uniform of the SCG Expeditionary Corps in silver trim."
|
||||
icon_state = "greydress"
|
||||
worn_state = "greydress"
|
||||
|
||||
/obj/item/clothing/under/dress/expeditionary/command
|
||||
name = "expeditionary command dress uniform"
|
||||
desc = "The dress uniform of the SCG Expeditionary Corps in gold trim."
|
||||
icon_state = "greydress_com"
|
||||
worn_state = "greydress_com"
|
||||
|
||||
/obj/item/clothing/under/dress/marine
|
||||
name = "marine dress uniform"
|
||||
desc = "The dress uniform of the SCG Marine Corps, class given form."
|
||||
icon_state = "blackdress"
|
||||
worn_state = "blackdress"
|
||||
|
||||
/obj/item/clothing/under/dress/marine/command
|
||||
name = "marine command dress uniform"
|
||||
desc = "The dress uniform of the SCG Marine Corps, even classier in gold."
|
||||
icon_state = "blackdress_com"
|
||||
worn_state = "blackdress_com"
|
||||
|
||||
|
||||
//Misc
|
||||
|
||||
/obj/item/clothing/under/hazard
|
||||
name = "hazard jumpsuit"
|
||||
desc = "A high visibility jumpsuit made from heat and radiation resistant materials."
|
||||
icon_state = "hazard"
|
||||
worn_state = "hazard"
|
||||
siemens_coefficient = 0.8
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 20, bio = 0, rad = 20)
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
/obj/item/clothing/under/sterile
|
||||
name = "sterile jumpsuit"
|
||||
desc = "A sterile white jumpsuit with medical markings. Protects against all manner of biohazards."
|
||||
icon_state = "sterile"
|
||||
worn_state = "sterile"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0)
|
||||
@@ -14,9 +14,10 @@
|
||||
severity_range = 15
|
||||
|
||||
for(var/obj/machinery/power/apc/apc in range(severity_range,A))
|
||||
if(is_valid_apc(apc))
|
||||
apc.emagged = 1
|
||||
apc.update_icon()
|
||||
if(is_valid_apc(apc)) //This event "****s up" the "id authenticator" on APCs, emagging and unlocking them.
|
||||
apc.emagged = 1 //It used to just blue screen the APC and make it so it had to be hacked to unlock,
|
||||
apc.locked = 0 //but most people ignored it. Now it has an actual effect on the round and opens
|
||||
apc.update_icon() //a small possibility for traitors. To fix, remove power cell and apply multitool.
|
||||
|
||||
/datum/event/apc_damage/proc/acquire_random_apc()
|
||||
var/list/possibleEpicentres = list()
|
||||
|
||||
@@ -196,13 +196,13 @@ var/list/event_last_fired = list()
|
||||
if(istype(M, /mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R = M
|
||||
if(R.module)
|
||||
if(istype(R.module, /obj/item/weapon/robot_module/engineering))
|
||||
if(istype(R.module, /obj/item/weapon/robot_module/robot/engineering))
|
||||
active_with_role["Engineer"]++
|
||||
else if(istype(R.module, /obj/item/weapon/robot_module/security))
|
||||
else if(istype(R.module, /obj/item/weapon/robot_module/robot/security))
|
||||
active_with_role["Security"]++
|
||||
else if(istype(R.module, /obj/item/weapon/robot_module/medical))
|
||||
else if(istype(R.module, /obj/item/weapon/robot_module/robot/medical))
|
||||
active_with_role["Medical"]++
|
||||
else if(istype(R.module, /obj/item/weapon/robot_module/research))
|
||||
else if(istype(R.module, /obj/item/weapon/robot_module/robot/research))
|
||||
active_with_role["Scientist"]++
|
||||
|
||||
if(M.mind.assigned_role in engineering_positions)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
//Misc
|
||||
#define DEAD_PLANT_COLOUR "#C2A180"
|
||||
#define FROZEN_PLANT_COLOUR "#CCFFFF"
|
||||
|
||||
// Definitions for genes (trait groupings)
|
||||
#define GENE_BIOCHEMISTRY "biochemistry"
|
||||
|
||||
@@ -38,10 +38,12 @@
|
||||
var/force_update // Set this to bypass the cycle time check.
|
||||
var/obj/temp_chem_holder // Something to hold reagents during process_reagents()
|
||||
var/labelled
|
||||
var/frozen = 0 //Is the plant frozen? -1 is used to define trays that can't be frozen. 0 is unfrozen and 1 is frozen.
|
||||
|
||||
// Seed details/line data.
|
||||
var/datum/seed/seed = null // The currently planted seed
|
||||
|
||||
|
||||
// Reagent information for process(), consider moving this to a controller along
|
||||
// with cycle information under 'mechanical concerns' at some point.
|
||||
var/global/list/toxic_reagents = list(
|
||||
@@ -421,7 +423,7 @@
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
if (O.is_open_container())
|
||||
if(O.is_open_container())
|
||||
return 0
|
||||
|
||||
if(istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/weapon/scalpel))
|
||||
@@ -494,6 +496,7 @@
|
||||
qdel(O)
|
||||
|
||||
check_health()
|
||||
update_icon()
|
||||
|
||||
else
|
||||
user << "<span class='danger'>\The [src] already has seeds in it!</span>"
|
||||
@@ -539,12 +542,25 @@
|
||||
anchored = !anchored
|
||||
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
|
||||
|
||||
else if(istype(O,/obj/item/device/multitool))
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='warning'>Anchor it first!</span>")
|
||||
return
|
||||
if(frozen == -1)
|
||||
to_chat(user, "<span class='warning'>You see no way to use \the [O] on [src].</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You [frozen ? "disable" : "enable"] the cryogenic freezing.</span>")
|
||||
frozen = !frozen
|
||||
update_icon()
|
||||
return
|
||||
|
||||
else if(O.force && seed)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.visible_message("<span class='danger'>\The [seed.display_name] has been attacked by [user] with \the [O]!</span>")
|
||||
if(!dead)
|
||||
health -= O.force
|
||||
check_health()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/attack_tk(mob/user as mob)
|
||||
@@ -557,7 +573,8 @@
|
||||
|
||||
if(istype(usr,/mob/living/silicon))
|
||||
return
|
||||
|
||||
if(frozen == 1)
|
||||
to_chat(user, "<span class='warning'>Disable the cryogenic freezing first!</span>")
|
||||
if(harvest)
|
||||
harvest(user)
|
||||
else if(dead)
|
||||
@@ -587,7 +604,8 @@
|
||||
usr << "<span class='danger'>The plant is dead.</span>"
|
||||
else if(health <= (seed.get_trait(TRAIT_ENDURANCE)/ 2))
|
||||
usr << "The plant looks <span class='danger'>unhealthy</span>."
|
||||
|
||||
if(frozen == 1)
|
||||
to_chat(usr, "<span class='notice'>It is cryogenically frozen.</span>")
|
||||
if(mechanical)
|
||||
var/turf/T = loc
|
||||
var/datum/gas_mixture/environment
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/obj/machinery/portable_atmospherics/hydroponics/process()
|
||||
if(frozen == 1)
|
||||
return
|
||||
|
||||
// Handle nearby smoke if any.
|
||||
for(var/obj/effect/effect/smoke/chem/smoke in view(1, src))
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
use_power = 0
|
||||
mechanical = 0
|
||||
tray_light = 0
|
||||
frozen = -1
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O,/obj/item/weapon/tank))
|
||||
|
||||
@@ -70,6 +70,9 @@
|
||||
else if(istype(target,/obj/machinery/portable_atmospherics/hydroponics))
|
||||
|
||||
var/obj/machinery/portable_atmospherics/hydroponics/H = target
|
||||
if(H.frozen == 1)
|
||||
to_chat(user, "<span class='warning'>Disable the cryogenic freezing first!</span>")
|
||||
return
|
||||
grown_seed = H.seed
|
||||
grown_reagents = H.reagents
|
||||
|
||||
|
||||
@@ -42,6 +42,9 @@
|
||||
overlay_stage = maturation ? max(1,round(age/maturation)) : 1
|
||||
var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]"
|
||||
var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"]
|
||||
if(frozen == 1)
|
||||
plant_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]")
|
||||
plant_overlay.color = FROZEN_PLANT_COLOUR
|
||||
if(!plant_overlay)
|
||||
plant_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]")
|
||||
plant_overlay.color = seed.get_trait(TRAIT_PLANT_COLOUR)
|
||||
@@ -57,6 +60,7 @@
|
||||
plant_controller.plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"] = harvest_overlay
|
||||
overlays |= harvest_overlay
|
||||
|
||||
|
||||
//Draw the cover.
|
||||
if(closed_system)
|
||||
overlays += "hydrocover"
|
||||
@@ -71,6 +75,8 @@
|
||||
overlays += "over_alert3"
|
||||
if(harvest)
|
||||
overlays += "over_harvest3"
|
||||
if(frozen)
|
||||
overlays += "over_frozen3"
|
||||
|
||||
// Update bioluminescence.
|
||||
if(seed)
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
/material/wood/generate_recipes()
|
||||
..()
|
||||
recipes += new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1)
|
||||
recipes += new/datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1)
|
||||
recipes += new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20)
|
||||
recipes += new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1)
|
||||
recipes += new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0)
|
||||
|
||||
@@ -215,9 +215,17 @@
|
||||
return
|
||||
|
||||
if(say_understands(speaker, language))
|
||||
message = "<B>[src]</B> [verb], \"[message]\""
|
||||
message = "<B>[speaker]</B> [verb], \"[message]\""
|
||||
else
|
||||
message = "<B>[src]</B> [verb]."
|
||||
var/adverb
|
||||
var/length = length(message) * pick(0.8, 0.9, 1.0, 1.1, 1.2) //Adds a little bit of fuzziness
|
||||
switch(length)
|
||||
if(0 to 12) adverb = " briefly"
|
||||
if(12 to 30) adverb = " a short message"
|
||||
if(30 to 48) adverb = " a message"
|
||||
if(48 to 90) adverb = " a lengthy message"
|
||||
else adverb = " a very lengthy message"
|
||||
message = "<B>[speaker]</B> [verb][adverb]."
|
||||
|
||||
if(src.status_flags & PASSEMOTES)
|
||||
for(var/obj/item/weapon/holder/H in src.contents)
|
||||
|
||||
@@ -48,6 +48,8 @@ var/list/slot_equipment_priority = list( \
|
||||
//set disable_warning to disable the 'you are unable to equip that' warning.
|
||||
//unset redraw_mob to prevent the mob from being redrawn at the end.
|
||||
/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1)
|
||||
if(!W)
|
||||
return 0
|
||||
if(!W.mob_can_equip(src, slot))
|
||||
if(del_on_fail)
|
||||
qdel(W)
|
||||
|
||||
@@ -113,3 +113,11 @@
|
||||
"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to",
|
||||
"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin",
|
||||
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
|
||||
|
||||
/datum/language/sign
|
||||
name = "Sign Language"
|
||||
desc = "A sign language commonly used for those who are deaf or mute."
|
||||
signlang_verb = list("gestures")
|
||||
colour = "say_quote"
|
||||
key = "s"
|
||||
flags = SIGNLANG|NO_STUTTER|NONVERBAL
|
||||
@@ -18,6 +18,7 @@
|
||||
var/native // If set, non-native speakers will have trouble speaking.
|
||||
var/list/syllables // Used when scrambling text for a non-speaker.
|
||||
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
|
||||
var/machine_understands = 1 // Whether machines can parse and understand this language
|
||||
|
||||
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
|
||||
if(!syllables || !syllables.len)
|
||||
@@ -202,8 +203,10 @@
|
||||
if(!(L.flags & NONGLOBAL))
|
||||
if(L == default_language)
|
||||
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b> - default - <a href='byond://?src=\ref[src];default_lang=reset'>reset</a><br/>[L.desc]<br/><br/>"
|
||||
else
|
||||
else if (can_speak(L))
|
||||
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b> - <a href='byond://?src=\ref[src];default_lang=\ref[L]'>set default</a><br/>[L.desc]<br/><br/>"
|
||||
else
|
||||
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b> - cannot speak!<br/>[L.desc]<br/><br/>"
|
||||
|
||||
src << browse(dat, "window=checklanguage")
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
key = "f"
|
||||
flags = RESTRICTED
|
||||
space_chance = 100
|
||||
machine_understands = 0
|
||||
syllables = list("ire","ego","nahlizet","certum","veri","jatkaa","mgar","balaq", "karazet", "geeri", \
|
||||
"orkan", "allaq", "sas'so", "c'arta", "forbici", "tarem", "n'ath", "reth", "sh'yro", "eth", "d'raggathnor", \
|
||||
"mah'weyh", "pleggh", "at", "e'ntrath", "tok-lyr", "rqa'nap", "g'lt-ulotf", "ta'gh", "fara'qha", "fel", "d'amar det", \
|
||||
|
||||
@@ -116,7 +116,9 @@
|
||||
space_chance = 10
|
||||
|
||||
/datum/language/machine/can_speak_special(var/mob/speaker)
|
||||
return speaker.isSynthetic()
|
||||
var/obj/item/weapon/implant/language/eal/beep = locate() in speaker
|
||||
return ((beep && beep.implanted) || speaker.isSynthetic())
|
||||
//thank you sweet zuhayr
|
||||
|
||||
/datum/language/machine/get_random_name()
|
||||
if(prob(70))
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
var/time_of_birth
|
||||
var/language
|
||||
var/death_msg = "lets out a waning guttural screech, green blood bubbling from its maw."
|
||||
var/can_namepick_as_adult = 0
|
||||
var/adult_name
|
||||
var/instance_num
|
||||
|
||||
/mob/living/carbon/alien/New()
|
||||
|
||||
@@ -24,7 +27,8 @@
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
|
||||
name = "[initial(name)] ([rand(1, 1000)])"
|
||||
instance_num = rand(1, 1000)
|
||||
name = "[initial(name)] ([instance_num])"
|
||||
real_name = name
|
||||
regenerate_icons()
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
name = "diona nymph"
|
||||
voice_name = "diona nymph"
|
||||
adult_form = /mob/living/carbon/human
|
||||
can_namepick_as_adult = 1
|
||||
adult_name = "diona gestalt"
|
||||
speak_emote = list("chirrups")
|
||||
icon_state = "nymph"
|
||||
item_state = "nymph"
|
||||
|
||||
@@ -28,9 +28,15 @@
|
||||
adult.set_species(new_species)
|
||||
show_evolution_blurb()
|
||||
|
||||
adult.name = input(src,"Choose a name for yourself (please stick to any appropriate naming conventions).") as text|null
|
||||
if(mind)
|
||||
mind.transfer_to(adult)
|
||||
if (can_namepick_as_adult)
|
||||
var/newname = sanitize(input(adult, "You have become an adult. Choose a name for yourself.", "Adult Name") as null|text, MAX_NAME_LEN)
|
||||
|
||||
if(!newname)
|
||||
adult.fully_replace_character_name(name, "[src.adult_name] ([instance_num])")
|
||||
else
|
||||
adult.fully_replace_character_name(name, newname)
|
||||
else
|
||||
adult.key = src.key
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/obj/item/device/mmi/digital/New()
|
||||
src.brainmob = new(src)
|
||||
src.brainmob.add_language("Robot Talk")
|
||||
src.brainmob.add_language("Encoded Audio Language")
|
||||
src.brainmob.loc = src
|
||||
src.brainmob.container = src
|
||||
src.brainmob.stat = 0
|
||||
|
||||
@@ -57,5 +57,8 @@
|
||||
canmove = 0
|
||||
return canmove
|
||||
|
||||
/mob/living/carbon/brain/binarycheck()
|
||||
/mob/living/carbon/brain/isSynthetic()
|
||||
return istype(loc, /obj/item/device/mmi/digital)
|
||||
|
||||
/mob/living/carbon/brain/binarycheck()
|
||||
return isSynthetic()
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
..()
|
||||
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]"
|
||||
src.brainmob.real_name = src.brainmob.name
|
||||
src.name = "robotic intelligence circuit ([src.brainmob.name])"
|
||||
|
||||
/obj/item/device/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
|
||||
..()
|
||||
@@ -17,3 +18,6 @@
|
||||
brainmob.mind.assigned_role = "Robotic Intelligence"
|
||||
brainmob << "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>"
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/robot/attack_self(mob/user as mob)
|
||||
return //This object is technically a brain, and should not be dumping brains out of itself like its parent object does.
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
return
|
||||
|
||||
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
|
||||
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
shock_damage *= siemens_coeff
|
||||
if (shock_damage<1)
|
||||
@@ -108,8 +108,9 @@
|
||||
"\red <B>You feel a powerful shock course through your body!</B>", \
|
||||
"\red You hear a heavy electrical crack." \
|
||||
)
|
||||
Stun(10)//This should work for now, more is really silly and makes you lay there forever
|
||||
Weaken(10)
|
||||
if(stun)
|
||||
Stun(10)//This should work for now, more is really silly and makes you lay there forever
|
||||
Weaken(10)
|
||||
else
|
||||
src.visible_message(
|
||||
"\red [src] was mildly shocked by \the [source].", \
|
||||
@@ -445,7 +446,7 @@
|
||||
chem_effects[effect] = magnitude
|
||||
|
||||
/mob/living/carbon/get_default_language()
|
||||
if(default_language)
|
||||
if(default_language && can_speak(default_language))
|
||||
return default_language
|
||||
|
||||
if(!species)
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
var/skipjumpsuit = 0
|
||||
var/skipshoes = 0
|
||||
var/skipmask = 0
|
||||
var/skiptie = 0
|
||||
var/skipholster = 0
|
||||
|
||||
var/skipears = 0
|
||||
var/skipeyes = 0
|
||||
@@ -25,6 +27,14 @@
|
||||
skiplegs |= 1
|
||||
skipchest |= 1
|
||||
skipgroin |= 1
|
||||
skipjumpsuit |= 1
|
||||
skiptie |= 1
|
||||
skipholster |= 1
|
||||
else if(wear_suit.flags_inv & HIDETIE)
|
||||
skiptie |= 1
|
||||
skipholster |= 1
|
||||
else if(wear_suit.flags_inv & HIDEHOLSTER)
|
||||
skipholster |= 1
|
||||
if(wear_suit.flags_inv & HIDESHOES)
|
||||
skipshoes |= 1
|
||||
skipfeet |= 1
|
||||
@@ -107,10 +117,17 @@
|
||||
if(w_uniform && !skipjumpsuit)
|
||||
//Ties
|
||||
var/tie_msg
|
||||
if(istype(w_uniform,/obj/item/clothing/under))
|
||||
if(istype(w_uniform,/obj/item/clothing/under) && !skiptie)
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
if(U.accessories.len)
|
||||
tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
if(skipholster)
|
||||
var/list/accessories_visible = new/list() //please let this fix the stupid fucking runtimes
|
||||
for(var/obj/item/clothing/accessory/A in U.accessories)
|
||||
if(A.concealed_holster == 0)
|
||||
accessories_visible.Add(A)
|
||||
if(accessories_visible.len)
|
||||
tie_msg += ". Attached to it is [lowertext(english_list(accessories_visible))]"
|
||||
else tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
|
||||
if(w_uniform.blood_DNA)
|
||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name][tie_msg]!</span>\n"
|
||||
|
||||
@@ -155,6 +155,15 @@
|
||||
update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message)
|
||||
if(update) UpdateDamageIcon()
|
||||
|
||||
/mob/living/carbon/human/proc/implant_loadout(var/datum/gear/G = new/datum/gear/utility/implant)
|
||||
var/obj/item/weapon/implant/I = new G.path(src)
|
||||
I.imp_in = src
|
||||
I.implanted = 1
|
||||
var/obj/item/organ/external/affected = src.organs_by_name[BP_HEAD]
|
||||
affected.implants += I
|
||||
I.part = affected
|
||||
I.implanted(src)
|
||||
|
||||
/mob/living/carbon/human/proc/implant_loyalty(override = FALSE) // Won't override by default.
|
||||
if(!config.use_loyalty_implants && !override) return // Nuh-uh.
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
if (istype(H) && attempt_to_scoop(H))
|
||||
return 0;
|
||||
// VOREStation Edit - End
|
||||
if(istype(H) && health < config.health_threshold_crit && health > config.health_threshold_dead)
|
||||
if(istype(H) && health < config.health_threshold_crit)
|
||||
if(!H.check_has_mouth())
|
||||
H << "<span class='danger'>You don't have a mouth, you cannot perform CPR!</span>"
|
||||
return
|
||||
@@ -86,12 +86,14 @@
|
||||
if(!do_after(H, 30))
|
||||
return
|
||||
|
||||
adjustOxyLoss(-(min(getOxyLoss(), 5)))
|
||||
updatehealth()
|
||||
H.visible_message("<span class='danger'>\The [H] performs CPR on \the [src]!</span>")
|
||||
src << "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>"
|
||||
H << "<span class='warning'>Repeat at least every 7 seconds.</span>"
|
||||
|
||||
if(istype(H) && health > config.health_threshold_dead)
|
||||
adjustOxyLoss(-(min(getOxyLoss(), 5)))
|
||||
updatehealth()
|
||||
src << "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>"
|
||||
|
||||
else if(!(M == src && apply_pressure(M, M.zone_sel.selecting)))
|
||||
help_shake_act(M)
|
||||
return 1
|
||||
|
||||
@@ -24,6 +24,9 @@ emp_act
|
||||
else // Otherwise we blocked normally and stopped all the damage.
|
||||
return 0
|
||||
|
||||
if(!P.nodamage)
|
||||
organ.add_autopsy_data("[P.name]", P.damage)
|
||||
|
||||
//Shrapnel
|
||||
if(P.can_embed())
|
||||
var/armor = getarmor_organ(organ, "bullet")
|
||||
|
||||
@@ -216,11 +216,12 @@
|
||||
|
||||
// DNA2 - Gene processing.
|
||||
// The HULK stuff that was here is now in the hulk gene.
|
||||
for(var/datum/dna/gene/gene in dna_genes)
|
||||
if(!gene.block)
|
||||
continue
|
||||
if(gene.is_active(src))
|
||||
gene.OnMobLife(src)
|
||||
if(!isSynthetic())
|
||||
for(var/datum/dna/gene/gene in dna_genes)
|
||||
if(!gene.block)
|
||||
continue
|
||||
if(gene.is_active(src))
|
||||
gene.OnMobLife(src)
|
||||
|
||||
radiation = Clamp(radiation,0,100)
|
||||
|
||||
@@ -343,14 +344,14 @@
|
||||
else
|
||||
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
|
||||
|
||||
if(should_have_organ(O_LUNGS))
|
||||
if(breath && should_have_organ(O_LUNGS))
|
||||
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
|
||||
if(!L.is_bruised() && prob(8))
|
||||
if(breath.total_moles)
|
||||
if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
|
||||
rupture_lung()
|
||||
else
|
||||
rupture_lung()
|
||||
rupture_lung()
|
||||
|
||||
if(should_have_organ("brain"))
|
||||
if(prob(5))
|
||||
adjustBrainLoss(0.02 * oxyloss) //2% of your current oxyloss is applied as brain damage, 50 oxyloss is 1 brain damage
|
||||
|
||||
oxygen_alert = max(oxygen_alert, 1)
|
||||
|
||||
@@ -368,6 +369,10 @@
|
||||
safe_pressure_min *= 1.5
|
||||
else if(L.is_bruised())
|
||||
safe_pressure_min *= 1.25
|
||||
else if(breath)
|
||||
if(breath.total_moles < BREATH_MOLES / 10 || breath.total_moles > BREATH_MOLES * 5)
|
||||
if (prob(8))
|
||||
rupture_lung()
|
||||
|
||||
var/safe_exhaled_max = 10
|
||||
var/safe_toxins_max = 0.2
|
||||
|
||||
@@ -159,6 +159,8 @@
|
||||
min_age = 19
|
||||
max_age = 80
|
||||
|
||||
darksight = 4
|
||||
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
|
||||
|
||||
@@ -167,6 +169,15 @@
|
||||
base_color = "#006666"
|
||||
|
||||
//reagent_tag = IS_SKRELL //VOREStation Removal
|
||||
cold_level_1 = 280 //Default 260 - Lower is better
|
||||
cold_level_2 = 220 //Default 200
|
||||
cold_level_3 = 130 //Default 120
|
||||
|
||||
heat_level_1 = 420 //Default 360 - Higher is better
|
||||
heat_level_2 = 480 //Default 400
|
||||
heat_level_3 = 1100 //Default 1000
|
||||
|
||||
reagent_tag = IS_SKRELL
|
||||
|
||||
has_limbs = list(
|
||||
BP_TORSO = list("path" = /obj/item/organ/external/chest),
|
||||
|
||||
@@ -110,29 +110,30 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
#define DAMAGE_LAYER 2
|
||||
#define SURGERY_LEVEL 3 //bs12 specific.
|
||||
#define UNDERWEAR_LAYER 4
|
||||
#define UNIFORM_LAYER 5
|
||||
#define ID_LAYER 6
|
||||
#define SHOES_LAYER 7
|
||||
#define GLOVES_LAYER 8
|
||||
#define BELT_LAYER 9
|
||||
#define SUIT_LAYER 10
|
||||
#define TAIL_LAYER 11 //bs12 specific. this hack is probably gonna come back to haunt me
|
||||
#define GLASSES_LAYER 12
|
||||
#define BELT_LAYER_ALT 13
|
||||
#define SUIT_STORE_LAYER 14
|
||||
#define BACK_LAYER 15
|
||||
#define HAIR_LAYER 16 //TODO: make part of head layer?
|
||||
#define EARS_LAYER 17
|
||||
#define FACEMASK_LAYER 18
|
||||
#define HEAD_LAYER 19
|
||||
#define COLLAR_LAYER 20
|
||||
#define HANDCUFF_LAYER 21
|
||||
#define LEGCUFF_LAYER 22
|
||||
#define L_HAND_LAYER 23
|
||||
#define R_HAND_LAYER 24
|
||||
#define FIRE_LAYER 25 //If you're on fire
|
||||
#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system
|
||||
#define TOTAL_LAYERS 26
|
||||
#define SHOES_LAYER_ALT 5
|
||||
#define UNIFORM_LAYER 6
|
||||
#define ID_LAYER 7
|
||||
#define SHOES_LAYER 8
|
||||
#define GLOVES_LAYER 9
|
||||
#define BELT_LAYER 10
|
||||
#define SUIT_LAYER 11
|
||||
#define TAIL_LAYER 12 //bs12 specific.
|
||||
#define GLASSES_LAYER 13
|
||||
#define BELT_LAYER_ALT 14
|
||||
#define SUIT_STORE_LAYER 15
|
||||
#define BACK_LAYER 16
|
||||
#define HAIR_LAYER 17 //TODO: make part of head layer?
|
||||
#define EARS_LAYER 18
|
||||
#define FACEMASK_LAYER 19
|
||||
#define HEAD_LAYER 20
|
||||
#define COLLAR_LAYER 21
|
||||
#define HANDCUFF_LAYER 22
|
||||
#define LEGCUFF_LAYER 23
|
||||
#define L_HAND_LAYER 24
|
||||
#define R_HAND_LAYER 25
|
||||
#define FIRE_LAYER 26 //If you're on fire
|
||||
#define TARGETED_LAYER 27 //BS12: Layer for the target overlay from weapon targeting system
|
||||
#define TOTAL_LAYERS 27
|
||||
//////////////////////////////////
|
||||
|
||||
/mob/living/carbon/human
|
||||
@@ -475,7 +476,7 @@ var/global/list/damage_icon_parts = list()
|
||||
//vvvvvv UPDATE_INV PROCS vvvvvv
|
||||
|
||||
/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1)
|
||||
if(w_uniform && istype(w_uniform, /obj/item/clothing/under) )
|
||||
if( (w_uniform && istype(w_uniform, /obj/item/clothing/under)) && !(wear_suit && istype(wear_suit, /obj/item/clothing/suit/space) && wear_suit.flags_inv & HIDEJUMPSUIT && !istype(wear_suit, /obj/item/clothing/suit/space/rig) ))
|
||||
w_uniform.screen_loc = ui_iclothing
|
||||
|
||||
//determine the icon to use
|
||||
@@ -519,7 +520,7 @@ var/global/list/damage_icon_parts = list()
|
||||
overlays_standing[UNIFORM_LAYER] = null
|
||||
|
||||
//hiding/revealing shoes if necessary
|
||||
update_inv_shoes(0)
|
||||
update_inv_shoes(1)
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
@@ -647,12 +648,22 @@ var/global/list/damage_icon_parts = list()
|
||||
else
|
||||
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
|
||||
|
||||
var/shoe_layer = SHOES_LAYER
|
||||
if(istype(shoes, /obj/item/clothing/shoes))
|
||||
var/obj/item/clothing/shoes/ushoes = shoes
|
||||
if(ushoes.shoes_under_pants == 1)
|
||||
overlays_standing[SHOES_LAYER] = null
|
||||
shoe_layer = SHOES_LAYER_ALT
|
||||
else
|
||||
overlays_standing[SHOES_LAYER_ALT] = null
|
||||
shoe_layer = SHOES_LAYER
|
||||
|
||||
if(shoes.blood_DNA)
|
||||
var/image/bloodsies = image("icon" = species.get_blood_mask(src), "icon_state" = "shoeblood")
|
||||
bloodsies.color = shoes.blood_color
|
||||
standing.overlays += bloodsies
|
||||
standing.color = shoes.color
|
||||
overlays_standing[SHOES_LAYER] = standing
|
||||
overlays_standing[shoe_layer] = standing
|
||||
else
|
||||
if(feet_blood_DNA)
|
||||
var/image/bloodsies = image("icon" = species.get_blood_mask(src), "icon_state" = "shoeblood")
|
||||
@@ -660,6 +671,7 @@ var/global/list/damage_icon_parts = list()
|
||||
overlays_standing[SHOES_LAYER] = bloodsies
|
||||
else
|
||||
overlays_standing[SHOES_LAYER] = null
|
||||
overlays_standing[SHOES_LAYER_ALT] = null
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_s_store(var/update_icons=1)
|
||||
@@ -808,16 +820,15 @@ var/global/list/damage_icon_parts = list()
|
||||
standing.overlays |= A.get_mob_overlay()
|
||||
|
||||
overlays_standing[SUIT_LAYER] = standing
|
||||
update_tail_showing(0)
|
||||
|
||||
else
|
||||
overlays_standing[SUIT_LAYER] = null
|
||||
update_tail_showing(0)
|
||||
|
||||
//Hide/show other layers if necessary
|
||||
update_collar(0)
|
||||
|
||||
//hide/show shoes if necessary
|
||||
update_inv_w_uniform(0)
|
||||
update_inv_shoes(0)
|
||||
update_tail_showing(0)
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
set name = "Set Default Language"
|
||||
set category = "IC"
|
||||
|
||||
if(language && !can_speak(language))
|
||||
src << "<span class='notice'>You are unable to speak that language.</span>"
|
||||
return
|
||||
|
||||
if(language)
|
||||
src << "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>"
|
||||
else
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
|
||||
//Blood
|
||||
handle_blood()
|
||||
@@ -30,6 +29,9 @@
|
||||
|
||||
. = 1
|
||||
|
||||
//Chemicals in the body, this is moved over here so that blood can be added after death
|
||||
handle_chemicals_in_body()
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
if(environment)
|
||||
handle_environment(environment)
|
||||
|
||||
@@ -177,7 +177,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
return 1
|
||||
|
||||
//Self explanatory.
|
||||
if(is_muzzled())
|
||||
if(is_muzzled() && !(speaking && (speaking.flags & SIGNLANG)))
|
||||
src << "<span class='danger'>You're muzzled and cannot speak!</span>"
|
||||
return
|
||||
|
||||
@@ -204,7 +204,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
w_not_heard = "[speaking.speech_verb] something [w_adverb]"
|
||||
|
||||
//For speech disorders (hulk, slurring, stuttering)
|
||||
if(!(speaking && (speaking.flags & NO_STUTTER)))
|
||||
if(!(speaking && (speaking.flags & NO_STUTTER || speaking.flags & SIGNLANG)))
|
||||
var/list/message_data = list(message, verb, whispering)
|
||||
if(handle_speech_problems(message_data))
|
||||
message = message_data[1]
|
||||
@@ -264,6 +264,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
src.custom_emote(1, "[pick(speaking.signlang_verb)].")
|
||||
|
||||
if (speaking.flags & SIGNLANG)
|
||||
log_say("[name]/[key] : SIGN: [message]")
|
||||
return say_signlang(message, pick(speaking.signlang_verb), speaking)
|
||||
|
||||
//These will contain the main receivers of the message
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
m_type = 1
|
||||
|
||||
if("law")
|
||||
if (istype(module,/obj/item/weapon/robot_module/security))
|
||||
if (istype(module,/obj/item/weapon/robot_module/robot/security))
|
||||
message = "shows its legal authorization barcode."
|
||||
|
||||
playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0)
|
||||
@@ -229,7 +229,7 @@
|
||||
src << "You are not THE LAW, pal."
|
||||
|
||||
if("halt")
|
||||
if (istype(module,/obj/item/weapon/robot_module/security))
|
||||
if (istype(module,/obj/item/weapon/robot_module/robot/security))
|
||||
message = "<B>[src]</B>'s speakers skreech, \"Halt! Security!\"."
|
||||
|
||||
playsound(src.loc, 'sound/voice/halt.ogg', 50, 0)
|
||||
|
||||
@@ -827,7 +827,7 @@
|
||||
. = ..()
|
||||
|
||||
if(module)
|
||||
if(module.type == /obj/item/weapon/robot_module/janitor)
|
||||
if(module.type == /obj/item/weapon/robot_module/robot/janitor)
|
||||
var/turf/tile = loc
|
||||
if(isturf(tile))
|
||||
tile.clean_blood()
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
var/global/list/robot_modules = list(
|
||||
"Standard" = /obj/item/weapon/robot_module/standard,
|
||||
"Service" = /obj/item/weapon/robot_module/clerical/butler,
|
||||
"Clerical" = /obj/item/weapon/robot_module/clerical/general,
|
||||
"Research" = /obj/item/weapon/robot_module/research,
|
||||
"Miner" = /obj/item/weapon/robot_module/miner,
|
||||
"Crisis" = /obj/item/weapon/robot_module/medical/crisis,
|
||||
"Surgeon" = /obj/item/weapon/robot_module/medical/surgeon,
|
||||
"Security" = /obj/item/weapon/robot_module/security/general,
|
||||
"Combat" = /obj/item/weapon/robot_module/security/combat,
|
||||
"Engineering" = /obj/item/weapon/robot_module/engineering/general,
|
||||
"Construction" = /obj/item/weapon/robot_module/engineering/construction,
|
||||
"Janitor" = /obj/item/weapon/robot_module/janitor
|
||||
"Standard" = /obj/item/weapon/robot_module/robot/standard,
|
||||
"Service" = /obj/item/weapon/robot_module/robot/clerical/butler,
|
||||
"Clerical" = /obj/item/weapon/robot_module/robot/clerical/general,
|
||||
"Research" = /obj/item/weapon/robot_module/robot/research,
|
||||
"Miner" = /obj/item/weapon/robot_module/robot/miner,
|
||||
"Crisis" = /obj/item/weapon/robot_module/robot/medical/crisis,
|
||||
"Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon,
|
||||
"Security" = /obj/item/weapon/robot_module/robot/security/general,
|
||||
"Combat" = /obj/item/weapon/robot_module/robot/security/combat,
|
||||
"Engineering" = /obj/item/weapon/robot_module/robot/engineering/general,
|
||||
"Construction" = /obj/item/weapon/robot_module/robot/engineering/construction,
|
||||
"Janitor" = /obj/item/weapon/robot_module/robot/janitor
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module
|
||||
@@ -149,7 +149,14 @@ var/global/list/robot_modules = list(
|
||||
if(!can_be_pushed)
|
||||
R.status_flags |= CANPUSH
|
||||
|
||||
/obj/item/weapon/robot_module/standard
|
||||
// Cyborgs (non-drones), default loadout. This will be given to every module.
|
||||
/obj/item/weapon/robot_module/robot/New()
|
||||
..()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/standard
|
||||
name = "standard robot module"
|
||||
sprites = list( "Basic" = "robot_old",
|
||||
"Android" = "droid",
|
||||
@@ -157,24 +164,21 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-standard"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/standard/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/standard/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.emag = new /obj/item/weapon/melee/energy/sword(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical
|
||||
/obj/item/weapon/robot_module/robot/medical
|
||||
name = "medical robot module"
|
||||
channels = list("Medical" = 1)
|
||||
networks = list(NETWORK_MEDICAL)
|
||||
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||
can_be_pushed = 0
|
||||
|
||||
/obj/item/weapon/robot_module/medical/surgeon
|
||||
/obj/item/weapon/robot_module/robot/medical/surgeon
|
||||
name = "surgeon robot module"
|
||||
sprites = list(
|
||||
"Basic" = "Medbot",
|
||||
@@ -184,8 +188,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-surgery"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/medical/surgeon/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
|
||||
..()
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)
|
||||
src.modules += new /obj/item/weapon/scalpel(src)
|
||||
@@ -198,7 +202,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/circular_saw(src)
|
||||
src.modules += new /obj/item/weapon/surgicaldrill(src)
|
||||
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("pacid", 250)
|
||||
src.emag.name = "Polyacid spray"
|
||||
@@ -217,15 +220,13 @@ var/global/list/robot_modules = list(
|
||||
src.modules += N
|
||||
src.modules += B
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/medical/robot/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
if(src.emag)
|
||||
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
|
||||
PS.reagents.add_reagent("pacid", 2 * amount)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/crisis
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis
|
||||
name = "crisis robot module"
|
||||
sprites = list(
|
||||
"Basic" = "Medbot",
|
||||
@@ -236,8 +237,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone - Chemistry" = "drone-chemistry"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/medical/crisis/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/hud/med(src)
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/device/reagent_scanner/adv(src)
|
||||
@@ -248,7 +249,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
|
||||
src.modules += new /obj/item/weapon/gripper/chemistry(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("pacid", 250)
|
||||
src.emag.name = "Polyacid spray"
|
||||
@@ -272,9 +272,7 @@ var/global/list/robot_modules = list(
|
||||
src.modules += B
|
||||
src.modules += S
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
|
||||
if(S.mode == 2)
|
||||
@@ -290,7 +288,7 @@ var/global/list/robot_modules = list(
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/engineering
|
||||
/obj/item/weapon/robot_module/robot/engineering
|
||||
name = "engineering robot module"
|
||||
channels = list("Engineering" = 1)
|
||||
networks = list(NETWORK_ENGINEERING)
|
||||
@@ -303,18 +301,16 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-engineer"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/engineering/construction
|
||||
/obj/item/weapon/robot_module/robot/engineering/construction
|
||||
name = "construction robot module"
|
||||
no_slip = 1
|
||||
|
||||
/obj/item/weapon/robot_module/engineering/construction/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/engineering/construction/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/meson(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
|
||||
src.modules += new /obj/item/device/pipe_painter(src)
|
||||
@@ -348,16 +344,12 @@ var/global/list/robot_modules = list(
|
||||
RG.synths = list(metal, glass)
|
||||
src.modules += RG
|
||||
|
||||
/obj/item/weapon/robot_module/robot/engineering/general/New()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/engineering/general/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/borg/sight/meson(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/wirecutters(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/device/t_scanner(src)
|
||||
@@ -405,9 +397,7 @@ var/global/list/robot_modules = list(
|
||||
RG.synths = list(metal, glass)
|
||||
src.modules += RG
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/security
|
||||
/obj/item/weapon/robot_module/robot/security
|
||||
name = "security robot module"
|
||||
channels = list("Security" = 1)
|
||||
networks = list(NETWORK_SECURITY)
|
||||
@@ -415,7 +405,7 @@ var/global/list/robot_modules = list(
|
||||
can_be_pushed = 0
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
|
||||
|
||||
/obj/item/weapon/robot_module/security/general
|
||||
/obj/item/weapon/robot_module/robot/security/general
|
||||
sprites = list(
|
||||
"Basic" = "secborg",
|
||||
"Red Knight" = "Security",
|
||||
@@ -425,8 +415,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-sec"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/security/general/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/security/general/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/hud/sec(src)
|
||||
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
|
||||
src.modules += new /obj/item/weapon/melee/baton/robot(src)
|
||||
@@ -434,9 +424,8 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/taperoll/police(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/flash/F = locate() in src.modules
|
||||
if(F.broken)
|
||||
F.broken = 0
|
||||
@@ -454,7 +443,7 @@ var/global/list/robot_modules = list(
|
||||
if(B && B.bcell)
|
||||
B.bcell.give(amount)
|
||||
|
||||
/obj/item/weapon/robot_module/janitor
|
||||
/obj/item/weapon/robot_module/robot/janitor
|
||||
name = "janitorial robot module"
|
||||
channels = list("Service" = 1)
|
||||
sprites = list(
|
||||
@@ -464,8 +453,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-janitor"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/janitor/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/janitor/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
|
||||
src.modules += new /obj/item/weapon/storage/bag/trash(src)
|
||||
src.modules += new /obj/item/weapon/mop(src)
|
||||
@@ -473,16 +462,15 @@ var/global/list/robot_modules = list(
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("lube", 250)
|
||||
src.emag.name = "Lube spray"
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/robot/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
LR.Charge(R, amount)
|
||||
if(src.emag)
|
||||
var/obj/item/weapon/reagent_containers/spray/S = src.emag
|
||||
S.reagents.add_reagent("lube", 2 * amount)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical
|
||||
/obj/item/weapon/robot_module/robot/clerical
|
||||
name = "service robot module"
|
||||
channels = list("Service" = 1)
|
||||
languages = list(
|
||||
@@ -496,7 +484,7 @@ var/global/list/robot_modules = list(
|
||||
LANGUAGE_SCHECHI = 1
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/butler
|
||||
/obj/item/weapon/robot_module/robot/clerical/butler
|
||||
sprites = list( "Waitress" = "Service",
|
||||
"Kent" = "toiletbot",
|
||||
"Bro" = "Brobot",
|
||||
@@ -506,8 +494,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone - Hydro" = "drone-hydro"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/butler/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/clerical/butler/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/gripper/service(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
|
||||
src.modules += new /obj/item/weapon/material/minihoe(src)
|
||||
@@ -537,9 +525,8 @@ var/global/list/robot_modules = list(
|
||||
R.my_atom = src.emag
|
||||
R.add_reagent("beer2", 50)
|
||||
src.emag.name = "Mickey Finn's Special Brew"
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/general
|
||||
/obj/item/weapon/robot_module/robot/clerical/general
|
||||
name = "clerical robot module"
|
||||
sprites = list(
|
||||
"Waitress" = "Service",
|
||||
@@ -550,8 +537,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-service"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/general/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/clerical/general/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/pen/robopen(src)
|
||||
src.modules += new /obj/item/weapon/form_printer(src)
|
||||
src.modules += new /obj/item/weapon/gripper/paperwork(src)
|
||||
@@ -568,7 +555,7 @@ var/global/list/robot_modules = list(
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/B = src.emag
|
||||
B.reagents.add_reagent("beer2", 2 * amount)
|
||||
|
||||
/obj/item/weapon/robot_module/miner
|
||||
/obj/item/weapon/robot_module/robot/miner
|
||||
name = "miner robot module"
|
||||
channels = list("Supply" = 1)
|
||||
networks = list(NETWORK_MINE)
|
||||
@@ -580,8 +567,8 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/jetpack)
|
||||
|
||||
/obj/item/weapon/robot_module/miner/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/miner/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/material(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
@@ -590,11 +577,9 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
|
||||
src.modules += new /obj/item/weapon/gripper/miner(src)
|
||||
src.modules += new /obj/item/weapon/mining_scanner(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/research
|
||||
/obj/item/weapon/robot_module/robot/research
|
||||
name = "research module"
|
||||
channels = list("Science" = 1)
|
||||
sprites = list(
|
||||
@@ -602,8 +587,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-science"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/research/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/research/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/portable_destructive_analyzer(src)
|
||||
src.modules += new /obj/item/weapon/gripper/research(src)
|
||||
src.modules += new /obj/item/weapon/gripper/no_use/organ/robotics(src)
|
||||
@@ -614,12 +599,10 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/wirecutters(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/weapon/scalpel(src)
|
||||
src.modules += new /obj/item/weapon/circular_saw(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
|
||||
src.emag = new /obj/item/weapon/hand_tele(src)
|
||||
@@ -639,9 +622,7 @@ var/global/list/robot_modules = list(
|
||||
C.synths = list(wire)
|
||||
src.modules += C
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate
|
||||
/obj/item/weapon/robot_module/robot/syndicate
|
||||
name = "illegal robot module"
|
||||
hide_on_manifest = 1
|
||||
languages = list(
|
||||
@@ -659,9 +640,9 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
var/id
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/New(var/mob/living/silicon/robot/R)
|
||||
/obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R)
|
||||
..()
|
||||
loc = R
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/weapon/melee/energy/sword(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src)
|
||||
src.modules += new /obj/item/weapon/card/emag(src)
|
||||
@@ -671,19 +652,19 @@ var/global/list/robot_modules = list(
|
||||
|
||||
id = R.idcard
|
||||
src.modules += id
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/Destroy()
|
||||
/obj/item/weapon/robot_module/robot/syndicate/Destroy()
|
||||
src.modules -= id
|
||||
id = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/robot_module/security/combat
|
||||
/obj/item/weapon/robot_module/robot/security/combat
|
||||
name = "combat robot module"
|
||||
hide_on_manifest = 1
|
||||
sprites = list("Combat Android" = "droid-combat")
|
||||
|
||||
/obj/item/weapon/robot_module/security/combat/New()
|
||||
/obj/item/weapon/robot_module/robot/security/combat/New()
|
||||
..()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
//src.modules += new /obj/item/borg/sight/thermal(src) // VOREStation Edit
|
||||
src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
@@ -691,7 +672,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/borg/combat/shield(src)
|
||||
src.modules += new /obj/item/borg/combat/mobility(src)
|
||||
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/drone
|
||||
name = "drone module"
|
||||
@@ -700,6 +680,7 @@ var/global/list/robot_modules = list(
|
||||
networks = list(NETWORK_ENGINEERING)
|
||||
|
||||
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/weldingtool(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
@@ -774,8 +755,6 @@ var/global/list/robot_modules = list(
|
||||
P.synths = list(plastic)
|
||||
src.modules += P
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/drone/construction
|
||||
name = "construction drone module"
|
||||
hide_on_manifest = 1
|
||||
@@ -783,8 +762,8 @@ var/global/list/robot_modules = list(
|
||||
languages = list()
|
||||
|
||||
/obj/item/weapon/robot_module/drone/construction/New()
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
|
||||
/obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
new /obj/item/weapon/robot_module/syndicate(src)
|
||||
new /obj/item/weapon/robot_module/robot/syndicate(src)
|
||||
|
||||
radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio)
|
||||
radio.recalculateChannels()
|
||||
|
||||
@@ -75,13 +75,13 @@
|
||||
/mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount)
|
||||
return //immune
|
||||
|
||||
/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0)
|
||||
/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0)
|
||||
if(shock_damage > 0)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, loc)
|
||||
s.start()
|
||||
|
||||
shock_damage *= 0.75 //take reduced damage
|
||||
shock_damage *= siemens_coeff //take reduced damage
|
||||
take_overall_damage(0, shock_damage)
|
||||
visible_message("<span class='warning'>[src] was shocked by \the [source]!</span>", \
|
||||
"<span class='danger'>Energy pulse detected, system damaged!</span>", \
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
return
|
||||
custom_emote(1, pick( list("slashes at [target_mob]", "bites [target_mob]") ) )
|
||||
|
||||
var/damage = rand(20,30)
|
||||
var/damage = rand(melee_damage_lower, melee_damage_upper)
|
||||
|
||||
if(ishuman(target_mob))
|
||||
var/mob/living/carbon/human/H = target_mob
|
||||
|
||||
@@ -654,6 +654,7 @@
|
||||
if(.)
|
||||
if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME)
|
||||
stat("Station Time", stationtime2text())
|
||||
stat("Station Date", stationdate2text())
|
||||
stat("Round Duration", roundduration2text())
|
||||
|
||||
if(client.holder)
|
||||
|
||||
+122
-122
@@ -1,122 +1,122 @@
|
||||
/obj/item/organ/internal/brain
|
||||
name = "brain"
|
||||
health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
|
||||
desc = "A piece of juicy meat found in a person's head."
|
||||
organ_tag = "brain"
|
||||
parent_organ = BP_HEAD
|
||||
vital = 1
|
||||
icon_state = "brain2"
|
||||
force = 1.0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throwforce = 1.0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
origin_tech = list(TECH_BIO = 3)
|
||||
attack_verb = list("attacked", "slapped", "whacked")
|
||||
var/mob/living/carbon/brain/brainmob = null
|
||||
|
||||
/obj/item/organ/internal/brain/robotize()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder/posibrain)
|
||||
|
||||
/obj/item/organ/internal/brain/mechassist()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder)
|
||||
|
||||
/obj/item/organ/internal/brain/digitize()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder/robot)
|
||||
|
||||
/obj/item/organ/internal/brain/proc/replace_self_with(replace_path)
|
||||
var/mob/living/carbon/human/tmp_owner = owner
|
||||
qdel(src)
|
||||
if(tmp_owner)
|
||||
tmp_owner.internal_organs_by_name[organ_tag] = new replace_path(tmp_owner, 1)
|
||||
tmp_owner = null
|
||||
|
||||
/obj/item/organ/internal/pariah_brain
|
||||
name = "brain remnants"
|
||||
desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
|
||||
organ_tag = "brain"
|
||||
parent_organ = BP_HEAD
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
vital = 1
|
||||
|
||||
/obj/item/organ/internal/brain/xeno
|
||||
name = "thinkpan"
|
||||
desc = "It looks kind of like an enormous wad of purple bubblegum."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
|
||||
/obj/item/organ/internal/brain/New()
|
||||
..()
|
||||
health = config.default_brain_health
|
||||
spawn(5)
|
||||
if(brainmob && brainmob.client)
|
||||
brainmob.client.screen.len = null //clear the hud
|
||||
|
||||
/obj/item/organ/internal/brain/Destroy()
|
||||
if(brainmob)
|
||||
qdel(brainmob)
|
||||
brainmob = null
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H)
|
||||
|
||||
if(!brainmob)
|
||||
brainmob = new(src)
|
||||
brainmob.name = H.real_name
|
||||
brainmob.real_name = H.real_name
|
||||
brainmob.dna = H.dna.Clone()
|
||||
brainmob.timeofhostdeath = H.timeofdeath
|
||||
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(brainmob)
|
||||
|
||||
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just \a [initial(src.name)].</span>"
|
||||
callHook("debrain", list(brainmob))
|
||||
|
||||
/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
|
||||
..(user)
|
||||
if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
|
||||
user << "You can feel the small spark of life still left in this one."
|
||||
else
|
||||
user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
|
||||
|
||||
/obj/item/organ/internal/brain/removed(var/mob/living/user)
|
||||
|
||||
if(name == initial(name))
|
||||
name = "\the [owner.real_name]'s [initial(name)]"
|
||||
|
||||
var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
|
||||
|
||||
if(borer)
|
||||
borer.detatch() //Should remove borer if the brain is removed - RR
|
||||
|
||||
var/obj/item/organ/internal/brain/B = src
|
||||
if(istype(B) && istype(owner))
|
||||
B.transfer_identity(owner)
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/replaced(var/mob/living/target)
|
||||
|
||||
if(target.key)
|
||||
target.ghostize()
|
||||
|
||||
if(brainmob)
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.transfer_to(target)
|
||||
else
|
||||
target.key = brainmob.key
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/slime
|
||||
name = "slime core"
|
||||
desc = "A complex, organic knot of jelly and crystalline particles."
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "green slime extract"
|
||||
|
||||
/obj/item/organ/internal/brain/golem
|
||||
name = "chem"
|
||||
desc = "A tightly furled roll of paper, covered with indecipherable runes."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "scroll"
|
||||
/obj/item/organ/internal/brain
|
||||
name = "brain"
|
||||
health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
|
||||
desc = "A piece of juicy meat found in a person's head."
|
||||
organ_tag = "brain"
|
||||
parent_organ = BP_HEAD
|
||||
vital = 1
|
||||
icon_state = "brain2"
|
||||
force = 1.0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throwforce = 1.0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
origin_tech = list(TECH_BIO = 3)
|
||||
attack_verb = list("attacked", "slapped", "whacked")
|
||||
var/mob/living/carbon/brain/brainmob = null
|
||||
|
||||
/obj/item/organ/internal/brain/robotize()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder/posibrain)
|
||||
|
||||
/obj/item/organ/internal/brain/mechassist()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder)
|
||||
|
||||
/obj/item/organ/internal/brain/digitize()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder/robot)
|
||||
|
||||
/obj/item/organ/internal/brain/proc/replace_self_with(replace_path)
|
||||
var/mob/living/carbon/human/tmp_owner = owner
|
||||
qdel(src)
|
||||
if(tmp_owner)
|
||||
tmp_owner.internal_organs_by_name[organ_tag] = new replace_path(tmp_owner, 1)
|
||||
tmp_owner = null
|
||||
|
||||
/obj/item/organ/internal/pariah_brain
|
||||
name = "brain remnants"
|
||||
desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
|
||||
organ_tag = "brain"
|
||||
parent_organ = BP_HEAD
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
vital = 1
|
||||
|
||||
/obj/item/organ/internal/brain/xeno
|
||||
name = "thinkpan"
|
||||
desc = "It looks kind of like an enormous wad of purple bubblegum."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
|
||||
/obj/item/organ/internal/brain/New()
|
||||
..()
|
||||
health = config.default_brain_health
|
||||
spawn(5)
|
||||
if(brainmob && brainmob.client)
|
||||
brainmob.client.screen.len = null //clear the hud
|
||||
|
||||
/obj/item/organ/internal/brain/Destroy()
|
||||
if(brainmob)
|
||||
qdel(brainmob)
|
||||
brainmob = null
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H)
|
||||
|
||||
if(!brainmob)
|
||||
brainmob = new(src)
|
||||
brainmob.name = H.real_name
|
||||
brainmob.real_name = H.real_name
|
||||
brainmob.dna = H.dna.Clone()
|
||||
brainmob.timeofhostdeath = H.timeofdeath
|
||||
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(brainmob)
|
||||
|
||||
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just \a [initial(src.name)].</span>"
|
||||
callHook("debrain", list(brainmob))
|
||||
|
||||
/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
|
||||
..(user)
|
||||
if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
|
||||
user << "You can feel the small spark of life still left in this one."
|
||||
else
|
||||
user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
|
||||
|
||||
/obj/item/organ/internal/brain/removed(var/mob/living/user)
|
||||
|
||||
if(name == initial(name))
|
||||
name = "\the [owner.real_name]'s [initial(name)]"
|
||||
|
||||
var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
|
||||
|
||||
if(borer)
|
||||
borer.detatch() //Should remove borer if the brain is removed - RR
|
||||
|
||||
var/obj/item/organ/internal/brain/B = src
|
||||
if(istype(B) && istype(owner))
|
||||
B.transfer_identity(owner)
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/replaced(var/mob/living/target)
|
||||
|
||||
if(target.key)
|
||||
target.ghostize()
|
||||
|
||||
if(brainmob)
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.transfer_to(target)
|
||||
else
|
||||
target.key = brainmob.key
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/slime
|
||||
name = "slime core"
|
||||
desc = "A complex, organic knot of jelly and crystalline particles."
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "green slime extract"
|
||||
|
||||
/obj/item/organ/internal/brain/golem
|
||||
name = "chem"
|
||||
desc = "A tightly furled roll of paper, covered with indecipherable runes."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "scroll"
|
||||
@@ -23,7 +23,7 @@
|
||||
if(owner.life_tick % PROCESS_ACCURACY == 0)
|
||||
|
||||
//High toxins levels are dangerous
|
||||
if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("anti_toxin"))
|
||||
if(owner.getToxLoss() >= 50 && !owner.reagents.has_reagent("anti_toxin"))
|
||||
//Healthy liver suffers on its own
|
||||
if (src.damage < min_broken_damage)
|
||||
src.damage += 0.2 * PROCESS_ACCURACY
|
||||
|
||||
@@ -33,4 +33,4 @@
|
||||
if(istype(E)) E.internal_organs -= src
|
||||
..()
|
||||
|
||||
// Brain is defined in brain_item.dm.
|
||||
// Brain is defined in brain.dm
|
||||
@@ -175,32 +175,31 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
icon_state = "datadisk2"
|
||||
var/company = ""
|
||||
|
||||
//I'm normally opposed to relative pathing, but pls.
|
||||
bishop
|
||||
company = "Bishop"
|
||||
|
||||
hesphiastos
|
||||
company = "Hesphiastos"
|
||||
|
||||
morpheus
|
||||
company = "Morpheus"
|
||||
|
||||
veymed
|
||||
company = "Vey-Med"
|
||||
|
||||
wardtakahashi
|
||||
company = "Ward-Takahashi"
|
||||
|
||||
xion
|
||||
company = "Xion"
|
||||
|
||||
zenghu
|
||||
company = "Zeng-Hu"
|
||||
|
||||
nanotrasen
|
||||
company = "NanoTrasen"
|
||||
|
||||
/obj/item/weapon/disk/limb/New(var/newloc)
|
||||
..()
|
||||
if(company)
|
||||
name = "[company] [initial(name)]"
|
||||
|
||||
/obj/item/weapon/disk/limb/bishop
|
||||
company = "Bishop"
|
||||
|
||||
/obj/item/weapon/disk/limb/hesphiastos
|
||||
company = "Hesphiastos"
|
||||
|
||||
/obj/item/weapon/disk/limb/morpheus
|
||||
company = "Morpheus"
|
||||
|
||||
/obj/item/weapon/disk/limb/veymed
|
||||
company = "Vey-Med"
|
||||
|
||||
/obj/item/weapon/disk/limb/wardtakahashi
|
||||
company = "Ward-Takahashi"
|
||||
|
||||
/obj/item/weapon/disk/limb/xion
|
||||
company = "Xion"
|
||||
|
||||
/obj/item/weapon/disk/limb/zenghu
|
||||
company = "Zeng-Hu"
|
||||
|
||||
/obj/item/weapon/disk/limb/nanotrasen
|
||||
company = "NanoTrasen"
|
||||
|
||||
@@ -249,13 +249,11 @@ var/global/photo_count = 0
|
||||
on = 1
|
||||
|
||||
/obj/item/device/camera/proc/can_capture_turf(turf/T, mob/user)
|
||||
var/mob/dummy = new(T) //Go go visibility check dummy
|
||||
var/viewer = user
|
||||
if(user.client) //To make shooting through security cameras possible
|
||||
viewer = user.client.eye
|
||||
var/can_see = (dummy in viewers(world.view, viewer))
|
||||
var/can_see = (T in view(viewer))
|
||||
|
||||
qdel(dummy)
|
||||
return can_see
|
||||
|
||||
/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag)
|
||||
@@ -264,8 +262,8 @@ var/global/photo_count = 0
|
||||
var/z_c = target.z
|
||||
var/list/turfs = list()
|
||||
var/mobs = ""
|
||||
for(var/i = 1; i <= size; i++)
|
||||
for(var/j = 1; j <= size; j++)
|
||||
for(var/i = 1 to size)
|
||||
for(var/j = 1 to size)
|
||||
var/turf/T = locate(x_c, y_c, z_c)
|
||||
if(can_capture_turf(T, user))
|
||||
turfs.Add(T)
|
||||
|
||||
+215
-158
@@ -1,3 +1,4 @@
|
||||
#define CRITICAL_APC_EMP_PROTECTION 10 // EMP effect duration is divided by this number if the APC has "critical" flag
|
||||
//update_state
|
||||
#define UPDATE_CELL_IN 1
|
||||
#define UPDATE_OPENED1 2
|
||||
@@ -33,7 +34,10 @@
|
||||
// controls power to devices in that area
|
||||
// may be opened to change power cell
|
||||
// three different channels (lighting/equipment/environ) - may each be set to on, off, or auto
|
||||
|
||||
#define POWERCHAN_OFF 0
|
||||
#define POWERCHAN_OFF_AUTO 1
|
||||
#define POWERCHAN_ON 2
|
||||
#define POWERCHAN_ON_AUTO 3
|
||||
|
||||
//NOTE: STUFF STOLEN FROM AIRLOCK.DM thx
|
||||
|
||||
@@ -69,9 +73,9 @@
|
||||
var/opened = 0 //0=closed, 1=opened, 2=cover removed
|
||||
var/shorted = 0
|
||||
var/grid_check = FALSE
|
||||
var/lighting = 3
|
||||
var/equipment = 3
|
||||
var/environ = 3
|
||||
var/lighting = POWERCHAN_ON_AUTO
|
||||
var/equipment = POWERCHAN_ON_AUTO
|
||||
var/environ = POWERCHAN_ON_AUTO
|
||||
var/operating = 1
|
||||
var/charging = 0
|
||||
var/chargemode = 1
|
||||
@@ -100,6 +104,8 @@
|
||||
var/update_overlay = -1
|
||||
var/is_critical = 0
|
||||
var/global/status_overlays = 0
|
||||
var/failure_timer = 0
|
||||
var/force_update = 0
|
||||
var/updating_icon = 0
|
||||
var/global/list/status_overlays_lock
|
||||
var/global/list/status_overlays_charging
|
||||
@@ -125,20 +131,25 @@
|
||||
if(drain_check)
|
||||
return 1
|
||||
|
||||
if(!cell)
|
||||
return 0
|
||||
//This makes sure fully draining an APC cell won't break the cell charging.
|
||||
charging = 0
|
||||
|
||||
if(surge && !emagged)
|
||||
flick("apc-spark", src)
|
||||
emagged = 1
|
||||
locked = 0
|
||||
update_icon()
|
||||
return 0
|
||||
var/drained_energy = 0
|
||||
|
||||
//Draws power from the grid first, if available.
|
||||
//This is like draining from a cable, so nins and
|
||||
//twizs can do that without having to pry floortiles.
|
||||
if(terminal && terminal.powernet)
|
||||
terminal.powernet.trigger_warning()
|
||||
drained_energy += terminal.powernet.draw_power(amount)
|
||||
|
||||
return cell.drain_power(drain_check, surge, amount)
|
||||
//The grid rarely gives the full amount requested, or perhaps the grid
|
||||
//isn't connected (wire cut), in either case we draw what we didn't get
|
||||
//from the cell instead.
|
||||
if((drained_energy < amount) && cell)
|
||||
drained_energy += cell.drain_power(0, 0, (amount - drained_energy))
|
||||
|
||||
return drained_energy
|
||||
|
||||
/obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0)
|
||||
..()
|
||||
@@ -185,6 +196,9 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/apc/proc/energy_fail(var/duration)
|
||||
failure_timer = max(failure_timer, round(duration))
|
||||
|
||||
/obj/machinery/power/apc/proc/make_terminal()
|
||||
// create a terminal object at the same position as original turf loc
|
||||
// wires will attach to this
|
||||
@@ -218,27 +232,28 @@
|
||||
|
||||
/obj/machinery/power/apc/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "A control terminal for the area electrical systems."
|
||||
if(stat & BROKEN)
|
||||
user << "Looks broken."
|
||||
to_chat(user,"This APC is broken.")
|
||||
return
|
||||
if(opened)
|
||||
if(has_electronics && terminal)
|
||||
user << "The cover is [opened==2?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"]."
|
||||
to_chat(user,"The cover is [opened==2?"removed":"open"] and [ cell ? "a power cell is installed" : "the power cell is missing"].")
|
||||
else if (!has_electronics && terminal)
|
||||
user << "There are some wires but no any electronics."
|
||||
to_chat(user,"The frame is wired, but the electronics are missing.")
|
||||
else if (has_electronics && !terminal)
|
||||
user << "Electronics installed but not wired."
|
||||
to_chat(user,"The electronics are installed, but not wired.")
|
||||
else /* if (!has_electronics && !terminal) */
|
||||
user << "There is no electronics nor connected wires."
|
||||
to_chat(user,"It's just an empty metal frame.")
|
||||
|
||||
else
|
||||
if (stat & MAINT)
|
||||
user << "The cover is closed. Something wrong with it: it doesn't work."
|
||||
else if (hacker)
|
||||
user << "The cover is locked."
|
||||
if (wiresexposed)
|
||||
to_chat(user,"The cover is closed and the wires are exposed.")
|
||||
else if ((locked && emagged) || hacker) //Some things can cause locked && emagged. Malf AI causes hacker.
|
||||
to_chat(user,"The cover is closed, but the panel is unresponsive.")
|
||||
else if(!locked && emagged) //Normal emag does this.
|
||||
to_chat(user,"The cover is closed, but the panel is flashing an error.")
|
||||
else
|
||||
user << "The cover is closed."
|
||||
to_chat(user,"The cover is closed.")
|
||||
|
||||
|
||||
// update the APC icon to show the three base states
|
||||
@@ -300,10 +315,10 @@
|
||||
icon_state = "[basestate]-nocover"
|
||||
else if(update_state & UPDATE_BROKE)
|
||||
icon_state = "apc-b"
|
||||
else if(update_state & UPDATE_BLUESCREEN)
|
||||
icon_state = "apcemag"
|
||||
else if(update_state & UPDATE_WIREEXP)
|
||||
icon_state = "apcewires"
|
||||
else if(update_state & UPDATE_BLUESCREEN)
|
||||
icon_state = "apcemag"
|
||||
|
||||
if(!(update_state & UPDATE_ALLGOOD))
|
||||
if(overlays.len)
|
||||
@@ -355,10 +370,10 @@
|
||||
update_state |= UPDATE_OPENED1
|
||||
if(opened==2)
|
||||
update_state |= UPDATE_OPENED2
|
||||
else if(emagged || hacker)
|
||||
update_state |= UPDATE_BLUESCREEN
|
||||
else if(wiresexposed)
|
||||
update_state |= UPDATE_WIREEXP
|
||||
else if(emagged || hacker || failure_timer)
|
||||
update_state |= UPDATE_BLUESCREEN
|
||||
if(update_state <= 1)
|
||||
update_state |= UPDATE_ALLGOOD
|
||||
|
||||
@@ -427,16 +442,16 @@
|
||||
if (istype(W, /obj/item/weapon/crowbar) && opened)
|
||||
if (has_electronics==1)
|
||||
if (terminal)
|
||||
user << "<span class='warning'>Disconnect wires first.</span>"
|
||||
to_chat(user,"<span class='warning'>Disconnect the wires first.</span>")
|
||||
return
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "You are trying to remove the power control board..." //lpeters - fixed grammar issues
|
||||
to_chat(user,"You begin to remove the power control board...") //lpeters - fixed grammar issues //Ner - grrrrrr
|
||||
if(do_after(user, 50))
|
||||
if (has_electronics==1)
|
||||
has_electronics = 0
|
||||
if ((stat & BROKEN))
|
||||
user.visible_message(\
|
||||
"<span class='warning'>[user.name] has broken the power control board inside [src.name]!</span>",\
|
||||
"<span class='warning'>[user.name] has broken the charred power control board inside [src.name]!</span>",\
|
||||
"<span class='notice'>You broke the charred power control board and remove the remains.</span>",
|
||||
"You hear a crack!")
|
||||
//ticker.mode:apcs-- //XSI said no and I agreed. -rastaf0
|
||||
@@ -448,83 +463,83 @@
|
||||
else if (opened!=2) //cover isn't removed
|
||||
opened = 0
|
||||
update_icon()
|
||||
else if (istype(W, /obj/item/weapon/crowbar) && !((stat & BROKEN) || hacker) )
|
||||
else if (istype(W, /obj/item/weapon/crowbar) && !(stat & BROKEN) )
|
||||
if(coverlocked && !(stat & MAINT))
|
||||
user << "<span class='warning'>The cover is locked and cannot be opened.</span>"
|
||||
to_chat(user,"<span class='warning'>The cover is locked and cannot be opened.</span>")
|
||||
return
|
||||
else
|
||||
opened = 1
|
||||
update_icon()
|
||||
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
|
||||
if(cell)
|
||||
user << "There is a power cell already installed."
|
||||
to_chat(user,"The [src.name] already has a power cell installed.")
|
||||
return
|
||||
if (stat & MAINT)
|
||||
user << "<span class='warning'>There is no connector for your power cell.</span>"
|
||||
to_chat(user,"<span class='warning'>You need to install the wiring and electronics first.</span>")
|
||||
return
|
||||
if(W.w_class != ITEMSIZE_NORMAL)
|
||||
user << "\The [W] is too [W.w_class < 3? "small" : "large"] to fit here."
|
||||
to_chat(user,"\The [W] is too [W.w_class < 3? "small" : "large"] to work here.")
|
||||
return
|
||||
|
||||
user.drop_item()
|
||||
W.forceMove(src)
|
||||
cell = W
|
||||
user.visible_message(\
|
||||
"<span class='warning'>[user.name] has inserted the power cell to [src.name]!</span>",\
|
||||
"<span class='warning'>[user.name] has inserted a power cell into [src.name]!</span>",\
|
||||
"<span class='notice'>You insert the power cell.</span>")
|
||||
chargecount = 0
|
||||
update_icon()
|
||||
else if (istype(W, /obj/item/weapon/screwdriver)) // haxing
|
||||
if(opened)
|
||||
if (cell)
|
||||
user << "<span class='warning'>Close the APC first.</span>" //Less hints more mystery!
|
||||
to_chat(user,"<span class='warning'>Remove the power cell first.</span>")
|
||||
return
|
||||
else
|
||||
if (has_electronics==1 && terminal)
|
||||
has_electronics = 2
|
||||
stat &= ~MAINT
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "You screw the circuit electronics into place."
|
||||
to_chat(user,"You screw the circuit electronics into place.")
|
||||
else if (has_electronics==2)
|
||||
has_electronics = 1
|
||||
stat |= MAINT
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "You unfasten the electronics."
|
||||
to_chat(user,"You unfasten the electronics.")
|
||||
else /* has_electronics==0 */
|
||||
user << "<span class='warning'>There is nothing to secure.</span>"
|
||||
to_chat(user,"<span class='warning'>There is nothing to secure.</span>")
|
||||
return
|
||||
update_icon()
|
||||
else
|
||||
wiresexposed = !wiresexposed
|
||||
user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
|
||||
to_chat(user,"The wires have been [wiresexposed ? "exposed" : "unexposed"].")
|
||||
update_icon()
|
||||
|
||||
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
|
||||
if(emagged)
|
||||
user << "The interface is broken."
|
||||
to_chat(user,"The panel is unresponsive.")
|
||||
else if(opened)
|
||||
user << "You must close the cover to swipe an ID card."
|
||||
to_chat(user,"You must close the cover to swipe an ID card.")
|
||||
else if(wiresexposed)
|
||||
user << "You must close the panel"
|
||||
to_chat(user,"You must close the wire panel.")
|
||||
else if(stat & (BROKEN|MAINT))
|
||||
user << "Nothing happens."
|
||||
to_chat(user,"Nothing happens.")
|
||||
else if(hacker)
|
||||
user << "<span class='warning'>Access denied.</span>"
|
||||
to_chat(user,"<span class='warning'>Access denied.</span>")
|
||||
else
|
||||
if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN))
|
||||
locked = !locked
|
||||
user << "You [ locked ? "lock" : "unlock"] the APC interface."
|
||||
to_chat(user,"You [ locked ? "lock" : "unlock"] the APC interface.")
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='warning'>Access denied.</span>"
|
||||
to_chat(user,"<span class='warning'>Access denied.</span>")
|
||||
else if (istype(W, /obj/item/stack/cable_coil) && !terminal && opened && has_electronics!=2)
|
||||
var/turf/T = loc
|
||||
if(istype(T) && !T.is_plating())
|
||||
user << "<span class='warning'>You must remove the floor plating in front of the APC first.</span>"
|
||||
to_chat(user,"<span class='warning'>You must remove the floor plating in front of the APC first.</span>")
|
||||
return
|
||||
var/obj/item/stack/cable_coil/C = W
|
||||
if(C.get_amount() < 10)
|
||||
user << "<span class='warning'>You need ten lengths of cable for APC.</span>"
|
||||
to_chat(user,"<span class='warning'>You need ten lengths of cable for that.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user.name] adds cables to the APC frame.</span>", \
|
||||
"You start adding cables to the APC frame...")
|
||||
@@ -547,9 +562,9 @@
|
||||
else if (istype(W, /obj/item/weapon/wirecutters) && terminal && opened && has_electronics!=2)
|
||||
var/turf/T = loc
|
||||
if(istype(T) && !T.is_plating())
|
||||
user << "<span class='warning'>You must remove the floor plating in front of the APC first.</span>"
|
||||
to_chat(user,"<span class='warning'>You must remove the floor plating in front of the APC first.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user.name] dismantles the power terminal from [src].</span>", \
|
||||
user.visible_message("<span class='warning'>[user.name] starts dismantling the [src]'s power terminal.</span>", \
|
||||
"You begin to cut the cables...")
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 50))
|
||||
@@ -561,7 +576,7 @@
|
||||
if(usr.stunned)
|
||||
return
|
||||
new /obj/item/stack/cable_coil(loc,10)
|
||||
user << "<span class='notice'>You cut the cables and dismantle the power terminal.</span>"
|
||||
to_chat(user,"<span class='notice'>You cut the cables and dismantle the power terminal.</span>")
|
||||
qdel(terminal)
|
||||
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN)))
|
||||
user.visible_message("<span class='warning'>[user.name] inserts the power control board into [src].</span>", \
|
||||
@@ -570,75 +585,78 @@
|
||||
if(do_after(user, 10))
|
||||
if(has_electronics==0)
|
||||
has_electronics = 1
|
||||
user << "<span class='notice'>You place the power control board inside the frame.</span>"
|
||||
reboot()
|
||||
to_chat(user,"<span class='notice'>You place the power control board inside the frame.</span>")
|
||||
qdel(W)
|
||||
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN)))
|
||||
user << "<span class='warning'>You cannot put the board inside, the frame is damaged.</span>"
|
||||
to_chat(user,"<span class='warning'>The [src] is too broken for that. Repair it first.</span>")
|
||||
return
|
||||
else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal)
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (WT.get_fuel() < 3)
|
||||
user << "<span class='warning'>You need more welding fuel to complete this task.</span>"
|
||||
to_chat(user,"<span class='warning'>You need more welding fuel to complete this task.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user.name] welds [src].</span>", \
|
||||
user.visible_message("<span class='warning'>[user.name] begins cutting apart [src] with the [WT.name].</span>", \
|
||||
"You start welding the APC frame...", \
|
||||
"You hear welding.")
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 25, 1)
|
||||
if(do_after(user, 50))
|
||||
if(!src || !WT.remove_fuel(3, user)) return
|
||||
if (emagged || (stat & BROKEN) || opened==2)
|
||||
new /obj/item/stack/material/steel(loc)
|
||||
user.visible_message(\
|
||||
"<span class='warning'>[src] has been cut apart by [user.name] with the weldingtool.</span>",\
|
||||
"<span class='warning'>[src] has been cut apart by [user.name] with the [WT.name].</span>",\
|
||||
"<span class='notice'>You disassembled the broken APC frame.</span>",\
|
||||
"You hear welding.")
|
||||
else
|
||||
new /obj/item/frame/apc(loc)
|
||||
user.visible_message(\
|
||||
"<span class='warning'>[src] has been cut from the wall by [user.name] with the weldingtool.</span>",\
|
||||
"<span class='warning'>[src] has been cut from the wall by [user.name] with the [WT.name].</span>",\
|
||||
"<span class='notice'>You cut the APC frame from the wall.</span>",\
|
||||
"You hear welding.")
|
||||
qdel(src)
|
||||
return
|
||||
else if (istype(W, /obj/item/frame/apc) && opened && emagged)
|
||||
emagged = 0
|
||||
if (opened==2)
|
||||
opened = 1
|
||||
user.visible_message(\
|
||||
"<span class='warning'>[user.name] has replaced the damaged APC frontal panel with a new one.</span>",\
|
||||
"<span class='notice'>You replace the damaged APC frontal panel with a new one.</span>")
|
||||
qdel(W)
|
||||
update_icon()
|
||||
else if (istype(W, /obj/item/frame/apc) && opened && ((stat & BROKEN) || hacker))
|
||||
if (has_electronics)
|
||||
user << "<span class='warning'>You cannot repair this APC until you remove the electronics still inside.</span>"
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user.name] replaces the damaged APC frame with a new one.</span>",\
|
||||
"You begin to replace the damaged APC frame...")
|
||||
if(do_after(user, 50))
|
||||
user.visible_message(\
|
||||
"<span class='notice'>[user.name] has replaced the damaged APC frame with new one.</span>",\
|
||||
"You replace the damaged APC frame with new one.")
|
||||
qdel(W)
|
||||
stat &= ~BROKEN
|
||||
// Malf AI, removes the APC from AI's hacked APCs list.
|
||||
if(hacker && hacker.hacked_apcs && (src in hacker.hacked_apcs))
|
||||
hacker.hacked_apcs -= src
|
||||
hacker = null
|
||||
if (opened==2)
|
||||
opened = 1
|
||||
update_icon()
|
||||
else if (opened && ((stat & BROKEN) || hacker || emagged))
|
||||
if (istype(W, /obj/item/frame/apc) && (stat & BROKEN))
|
||||
if(cell)
|
||||
to_chat(user, "<span class='warning'>You need to remove the power cell first.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user.name] begins replacing the damaged APC cover with a new one.</span>",\
|
||||
"You begin to replace the damaged APC cover...")
|
||||
if(do_after(user, 50))
|
||||
user.visible_message("<span class='notice'>[user.name] has replaced the damaged APC cover with a new one.</span>",\
|
||||
"You replace the damaged APC cover with a new one.")
|
||||
qdel(W)
|
||||
stat &= ~BROKEN
|
||||
reboot()
|
||||
if (opened==2)
|
||||
opened = 1
|
||||
update_icon()
|
||||
else if (istype(W, /obj/item/device/multitool) && (hacker || emagged))
|
||||
if(cell)
|
||||
to_chat(user, "<span class='warning'>You need to remove the power cell first.</span>")
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user.name] connects their [W.name] to the APC and begins resetting it.</span>",\
|
||||
"You begin resetting the APC...")
|
||||
if(do_after(user, 50))
|
||||
user.visible_message("<span class='notice'>[user.name] resets the APC with a beep from their [W.name].</span>",\
|
||||
"You finish resetting the APC.")
|
||||
playsound(src.loc, 'sound/machines/chime.ogg', 25, 1)
|
||||
reboot()
|
||||
else
|
||||
if (((stat & BROKEN) || hacker) \
|
||||
if ((stat & BROKEN) \
|
||||
&& !opened \
|
||||
&& W.force >= 5 \
|
||||
&& W.w_class >= ITEMSIZE_NORMAL \
|
||||
&& prob(20) )
|
||||
opened = 2
|
||||
user.visible_message("<span class='danger'>The APC cover was knocked down with the [W.name] by [user.name]!</span>", \
|
||||
"<span class='danger'>You knock down the APC cover with your [W.name]!</span>", \
|
||||
"You hear bang")
|
||||
update_icon()
|
||||
&& W.w_class >= ITEMSIZE_NORMAL )
|
||||
user.visible_message("<span class='danger'>The [src.name] has been hit with the [W.name] by [user.name]!</span>", \
|
||||
"<span class='danger'>You hit the [src.name] with your [W.name]!</span>", \
|
||||
"You hear a bang!")
|
||||
if(prob(20))
|
||||
opened = 2
|
||||
user.visible_message("<span class='danger'>The APC cover was knocked down with the [W.name] by [user.name]!</span>", \
|
||||
"<span class='danger'>You knock down the APC cover with your [W.name]!</span>", \
|
||||
"You hear a bang!")
|
||||
update_icon()
|
||||
else
|
||||
if (istype(user, /mob/living/silicon))
|
||||
return src.attack_hand(user)
|
||||
@@ -646,30 +664,29 @@
|
||||
(istype(W, /obj/item/device/multitool) || \
|
||||
istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler)))
|
||||
return src.attack_hand(user)
|
||||
user.visible_message("<span class='danger'>The [src.name] has been hit with the [W.name] by [user.name]!</span>", \
|
||||
"<span class='danger'>You hit the [src.name] with your [W.name]!</span>", \
|
||||
"You hear bang")
|
||||
//Placeholder until someone can do take_damage() for APCs or something.
|
||||
to_chat(user,"<span class='notice'>The [src.name] looks too sturdy to bash open.</span>")
|
||||
|
||||
// attack with hand - remove cell (if cover open) or interact with the APC
|
||||
|
||||
/obj/machinery/power/apc/emag_act(var/remaining_charges, var/mob/user)
|
||||
if (!(emagged || hacker)) // trying to unlock with an emag card
|
||||
if(opened)
|
||||
user << "You must close the cover to swipe an ID card."
|
||||
to_chat(user,"You must close the cover to do that.")
|
||||
else if(wiresexposed)
|
||||
user << "You must close the panel first"
|
||||
to_chat(user,"You must close the wire panel first.")
|
||||
else if(stat & (BROKEN|MAINT))
|
||||
user << "Nothing happens."
|
||||
to_chat(user,"The [src] isn't working.")
|
||||
else
|
||||
flick("apc-spark", src)
|
||||
if (do_after(user,6))
|
||||
if(prob(50))
|
||||
emagged = 1
|
||||
locked = 0
|
||||
user << "<span class='notice'>You emag the APC interface.</span>"
|
||||
to_chat(user,"<span class='notice'>You emag the APC interface.</span>")
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='warning'>You fail to [ locked ? "unlock" : "lock"] the APC interface.</span>"
|
||||
to_chat(user,"<span class='warning'>The APC interface refused to unlock.</span>")
|
||||
return 1
|
||||
|
||||
/obj/machinery/power/apc/attack_hand(mob/user)
|
||||
@@ -684,7 +701,7 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.species.can_shred(H))
|
||||
user.visible_message("\red [user.name] slashes at the [src.name]!", "\blue You slash at the [src.name]!")
|
||||
user.visible_message("<span call='warning'>[user.name] slashes at the [src.name]!</span>", "<span class='notice'>You slash at the [src.name]!</span>")
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
|
||||
|
||||
var/allcut = wires.IsAllCut()
|
||||
@@ -692,12 +709,12 @@
|
||||
if(beenhit >= pick(3, 4) && wiresexposed != 1)
|
||||
wiresexposed = 1
|
||||
src.update_icon()
|
||||
src.visible_message("\red The [src.name]'s cover flies open, exposing the wires!")
|
||||
src.visible_message("<span call='warning'>The [src.name]'s cover flies open, exposing the wires!</span>")
|
||||
|
||||
else if(wiresexposed == 1 && allcut == 0)
|
||||
wires.CutAll()
|
||||
src.update_icon()
|
||||
src.visible_message("\red The [src.name]'s wires are shredded!")
|
||||
src.visible_message("<span call='warning'>The [src.name]'s wires are shredded!</span>")
|
||||
else
|
||||
beenhit += 1
|
||||
return
|
||||
@@ -711,7 +728,6 @@
|
||||
src.cell = null
|
||||
user.visible_message("<span class='warning'>[user.name] removes the power cell from [src.name]!</span>",\
|
||||
"<span class='notice'>You remove the power cell.</span>")
|
||||
//user << "You remove the power cell."
|
||||
charging = 0
|
||||
src.update_icon()
|
||||
return
|
||||
@@ -726,6 +742,7 @@
|
||||
|
||||
if(wiresexposed && !istype(user, /mob/living/silicon/ai))
|
||||
wires.Interact(user)
|
||||
return //The panel is visibly dark when the wires are exposed, so we shouldn't be able to interact with it.
|
||||
|
||||
return ui_interact(user)
|
||||
|
||||
@@ -735,7 +752,8 @@
|
||||
return
|
||||
|
||||
var/list/data = list(
|
||||
"locked" = (locked && !emagged) ? 1 : 0,
|
||||
"locked" = locked,
|
||||
"emagged" = emagged,
|
||||
"isOperating" = operating,
|
||||
"externalPower" = main_status,
|
||||
"powerCellStatus" = cell ? cell.percent() : null,
|
||||
@@ -743,6 +761,8 @@
|
||||
"chargingStatus" = charging,
|
||||
"totalLoad" = round(lastused_total),
|
||||
"totalCharging" = round(lastused_charging),
|
||||
"failTime" = failure_timer * 2,
|
||||
"gridCheck" = grid_check,
|
||||
"coverLocked" = coverlocked,
|
||||
"siliconUser" = issilicon(user) || isobserver(user), //I add observer here so admins can have more control, even if it makes 'siliconUser' seem inaccurate.
|
||||
|
||||
@@ -797,10 +817,10 @@
|
||||
return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])"
|
||||
|
||||
/obj/machinery/power/apc/proc/update()
|
||||
if(operating && !shorted && !grid_check)
|
||||
area.power_light = (lighting > 1)
|
||||
area.power_equip = (equipment > 1)
|
||||
area.power_environ = (environ > 1)
|
||||
if(operating && !shorted && !grid_check && !failure_timer)
|
||||
area.power_light = (lighting >= POWERCHAN_ON)
|
||||
area.power_equip = (equipment >= POWERCHAN_ON)
|
||||
area.power_environ = (environ >= POWERCHAN_ON)
|
||||
// if (area.name == "AI Chamber")
|
||||
// spawn(10)
|
||||
// world << " [area.name] [area.power_equip]"
|
||||
@@ -822,17 +842,16 @@
|
||||
if(isobserver(user) && is_admin(user) ) //This is to allow nanoUI interaction by ghost admins.
|
||||
return 1
|
||||
if (user.stat)
|
||||
user << "<span class='warning'>You must be conscious to use [src]!</span>"
|
||||
return 0
|
||||
if(inoperable())
|
||||
return 0
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
if(user.restrained())
|
||||
user << "<span class='warning'>You must have free hands to use [src].</span>"
|
||||
to_chat(user,"<span class='warning'>Your hands must be free to use [src].</span>")
|
||||
return 0
|
||||
if(user.lying)
|
||||
user << "<span class='warning'>You must stand to use [src]!</span>"
|
||||
to_chat(user,"<span class='warning'>You must stand to use [src]!</span>")
|
||||
return 0
|
||||
autoflag = 5
|
||||
if (istype(user, /mob/living/silicon))
|
||||
@@ -847,14 +866,14 @@
|
||||
|
||||
if(aidisabled && !permit)
|
||||
if(!loud)
|
||||
user << "<span class='danger'>\The [src] have AI control disabled!</span>"
|
||||
to_chat(user,"<span class='danger'>\The AI control for [src] has been disabled!</span>")
|
||||
return 0
|
||||
else
|
||||
if (!in_range(src, user) || !istype(src.loc, /turf))
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = user
|
||||
if (istype(H) && prob(H.getBrainLoss()))
|
||||
user << "<span class='danger'>You momentarily forget how to use [src].</span>"
|
||||
to_chat(user,"<span class='danger'>You momentarily forget how to use [src].</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -869,15 +888,20 @@
|
||||
if(isobserver(usr) )
|
||||
var/mob/observer/dead/O = usr //Added to allow admin nanoUI interactions.
|
||||
if(!O.can_admin_interact() ) //NanoUI /should/ make this not needed, but better safe than sorry.
|
||||
usr << "Try as you might, your ghostly fingers can't press the buttons."
|
||||
to_chat(usr,"Try as you might, your ghostly fingers can't press the buttons.")
|
||||
return 1
|
||||
else
|
||||
usr << "You must unlock the panel to use this!"
|
||||
to_chat(usr,"You must unlock the panel to use this!")
|
||||
return 1
|
||||
|
||||
if (href_list["lock"])
|
||||
coverlocked = !coverlocked
|
||||
|
||||
else if (href_list["reboot"])
|
||||
failure_timer = 0
|
||||
update_icon()
|
||||
update()
|
||||
|
||||
else if (href_list["breaker"])
|
||||
toggle_breaker()
|
||||
|
||||
@@ -912,10 +936,10 @@
|
||||
else if (href_list["toggleaccess"])
|
||||
if(istype(usr, /mob/living/silicon))
|
||||
if(emagged || (stat & (BROKEN|MAINT)))
|
||||
usr << "The APC does not respond to the command."
|
||||
else
|
||||
locked = !locked
|
||||
update_icon()
|
||||
to_chat(usr,"The APC does not respond to the command.")
|
||||
return
|
||||
locked = !locked
|
||||
update_icon()
|
||||
|
||||
return 0
|
||||
|
||||
@@ -924,6 +948,8 @@
|
||||
src.update()
|
||||
update_icon()
|
||||
|
||||
//This isn't used for now, so might as well disable it
|
||||
/*
|
||||
/obj/machinery/power/apc/proc/ion_act()
|
||||
if(prob(3))
|
||||
src.locked = 1
|
||||
@@ -940,7 +966,7 @@
|
||||
s.start()
|
||||
visible_message("<span class='danger'>The [src.name] suddenly lets out a blast of smoke and some sparks!</span>", \
|
||||
"<span class='danger'>You hear sizzling electronics.</span>")
|
||||
|
||||
*/
|
||||
|
||||
/obj/machinery/power/apc/surplus()
|
||||
if(terminal)
|
||||
@@ -976,6 +1002,12 @@
|
||||
return
|
||||
if(!area.requires_power)
|
||||
return
|
||||
if(failure_timer)
|
||||
update()
|
||||
queue_icon_update()
|
||||
failure_timer--
|
||||
force_update = 1
|
||||
return
|
||||
|
||||
lastused_light = area.usage(LIGHT)
|
||||
lastused_equip = area.usage(EQUIP)
|
||||
@@ -1075,7 +1107,8 @@
|
||||
autoflag = 0
|
||||
|
||||
// update icon & area power if anything changed
|
||||
if(last_lt != lighting || last_eq != equipment || last_en != environ)
|
||||
if(last_lt != lighting || last_eq != equipment || last_en != environ || force_update)
|
||||
force_update = 0
|
||||
queue_icon_update()
|
||||
update()
|
||||
else if (last_ch != charging)
|
||||
@@ -1119,43 +1152,41 @@
|
||||
|
||||
// val 0=off, 1=off(auto) 2=on 3=on(auto)
|
||||
// on 0=off, 1=on, 2=autooff
|
||||
// defines a state machine, returns the new state
|
||||
obj/machinery/power/apc/proc/autoset(var/cur_state, var/on)
|
||||
switch(cur_state)
|
||||
if(POWERCHAN_OFF); //autoset will never turn on a channel set to off
|
||||
if(POWERCHAN_OFF_AUTO)
|
||||
if(on == 1)
|
||||
return POWERCHAN_ON_AUTO
|
||||
if(POWERCHAN_ON)
|
||||
if(on == 0)
|
||||
return POWERCHAN_OFF
|
||||
if(POWERCHAN_ON_AUTO)
|
||||
if(on == 0 || on == 2)
|
||||
return POWERCHAN_OFF_AUTO
|
||||
|
||||
obj/machinery/power/apc/proc/autoset(var/val, var/on)
|
||||
if(on==0)
|
||||
if(val==2) // if on, return off
|
||||
return 0
|
||||
else if(val==3) // if auto-on, return auto-off
|
||||
return 1
|
||||
|
||||
else if(on==1)
|
||||
if(val==1) // if auto-off, return auto-on
|
||||
return 3
|
||||
|
||||
else if(on==2)
|
||||
if(val==3) // if auto-on, return auto-off
|
||||
return 1
|
||||
|
||||
return val
|
||||
return cur_state //leave unchanged
|
||||
|
||||
|
||||
// damage and destruction acts
|
||||
/obj/machinery/power/apc/emp_act(severity)
|
||||
// Fail for 8-12 minutes (divided by severity)
|
||||
// Division by 2 is required, because machinery ticks are every two seconds. Without it we would fail for 16-24 minutes.
|
||||
if(is_critical)
|
||||
severity += 2
|
||||
if(cell)
|
||||
cell.emp_act(severity)
|
||||
// Critical APCs are considered EMP shielded and will be offline only for about half minute. Prevents AIs being one-shot disabled by EMP strike.
|
||||
// Critical APCs are also more resilient to cell corruption/power drain.
|
||||
energy_fail(rand(240, 360) / severity / CRITICAL_APC_EMP_PROTECTION)
|
||||
if(cell)
|
||||
cell.emp_act(severity+2)
|
||||
else
|
||||
// Regular APCs fail for normal time.
|
||||
energy_fail(rand(240, 360) / severity)
|
||||
//Cells are partially shielded by the APC frame.
|
||||
if(cell)
|
||||
cell.emp_act(severity+1)
|
||||
|
||||
lighting = 0
|
||||
if(!is_critical)
|
||||
equipment = 0
|
||||
environ = 0
|
||||
update()
|
||||
update_icon()
|
||||
|
||||
spawn(600)
|
||||
update_channels()
|
||||
update()
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/machinery/power/apc/ex_act(severity)
|
||||
@@ -1186,9 +1217,8 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
|
||||
|
||||
/obj/machinery/power/apc/proc/set_broken()
|
||||
// Aesthetically much better!
|
||||
src.visible_message("<span class='notice'>[src]'s screen flickers with warnings briefly!</span>")
|
||||
spawn(rand(2,5))
|
||||
src.visible_message("<span class='notice'>[src]'s screen suddenly explodes in rain of sparks and small debris!</span>")
|
||||
src.visible_message("<span class='warning'>[src]'s screen flickers suddenly, then explodes in a rain of sparks and small debris!</span>")
|
||||
stat |= BROKEN
|
||||
operating = 0
|
||||
update_icon()
|
||||
@@ -1226,6 +1256,33 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/machinery/power/apc/proc/reboot()
|
||||
//reset various counters so that process() will start fresh
|
||||
charging = initial(charging)
|
||||
chargecount = initial(chargecount)
|
||||
autoflag = initial(autoflag)
|
||||
longtermpower = initial(longtermpower)
|
||||
failure_timer = initial(failure_timer)
|
||||
|
||||
//start with main breaker off, chargemode in the default state and all channels on auto upon reboot
|
||||
operating = 0
|
||||
chargemode = initial(chargemode)
|
||||
power_alarm.clearAlarm(loc, src)
|
||||
|
||||
lighting = POWERCHAN_ON_AUTO
|
||||
equipment = POWERCHAN_ON_AUTO
|
||||
environ = POWERCHAN_ON_AUTO
|
||||
|
||||
//If malf AI had this APC before, they don't now.
|
||||
if(hacker && hacker.hacked_apcs && (src in hacker.hacked_apcs))
|
||||
hacker.hacked_apcs -= src
|
||||
hacker = null
|
||||
|
||||
emagged = initial(emagged) //Resets emagging, too.
|
||||
|
||||
update_icon()
|
||||
update()
|
||||
|
||||
/obj/machinery/power/apc/overload(var/obj/machinery/power/source)
|
||||
if(is_critical)
|
||||
return
|
||||
|
||||
@@ -322,8 +322,9 @@
|
||||
//power_source is a source of electricity, can be powercell, area, apc, cable, powernet or null
|
||||
//source is an object caused electrocuting (airlock, grille, etc)
|
||||
//No animations will be performed by this proc.
|
||||
/proc/electrocute_mob(mob/living/carbon/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0)
|
||||
/proc/electrocute_mob(mob/living/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0)
|
||||
if(istype(M.loc,/obj/mecha)) return 0 //feckin mechs are dumb
|
||||
if(issilicon(M)) return 0 //No more robot shocks from machinery
|
||||
var/area/source_area
|
||||
if(istype(power_source,/area))
|
||||
source_area = power_source
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
dissipate()
|
||||
check_energy()
|
||||
|
||||
if (current_size >= STAGE_THREE)
|
||||
if (current_size >= STAGE_TWO)
|
||||
move()
|
||||
pulse()
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
pixel_y = -32
|
||||
grav_pull = 6
|
||||
consume_range = 1
|
||||
dissipate_delay = 5
|
||||
dissipate_delay = 10
|
||||
dissipate_track = 0
|
||||
dissipate_strength = 5
|
||||
overlays = 0
|
||||
@@ -169,7 +169,7 @@
|
||||
pixel_y = -64
|
||||
grav_pull = 8
|
||||
consume_range = 2
|
||||
dissipate_delay = 4
|
||||
dissipate_delay = 10
|
||||
dissipate_track = 0
|
||||
dissipate_strength = 20
|
||||
overlays = 0
|
||||
@@ -192,7 +192,7 @@
|
||||
consume_range = 3
|
||||
dissipate_delay = 10
|
||||
dissipate_track = 0
|
||||
dissipate_strength = 10
|
||||
dissipate_strength = 8
|
||||
overlays = 0
|
||||
if(chained)
|
||||
overlays = "chain_s7"
|
||||
|
||||
@@ -308,7 +308,10 @@
|
||||
data["chargeMode"] = input_attempt
|
||||
data["chargeLevel"] = round(input_level/1000, 0.1)
|
||||
data["chargeMax"] = round(input_level_max/1000)
|
||||
data["chargeLoad"] = round(terminal.powernet.avail/1000, 0.1)
|
||||
if (terminal && terminal.powernet)
|
||||
data["chargeLoad"] = round(terminal.powernet.avail/1000, 0.1)
|
||||
else
|
||||
data["chargeLoad"] = 0
|
||||
data["outputOnline"] = output_attempt
|
||||
data["outputLevel"] = round(output_level/1000, 0.1)
|
||||
data["outputMax"] = round(output_level_max/1000)
|
||||
|
||||
@@ -53,6 +53,10 @@
|
||||
name = "magazine (.45 flash)"
|
||||
ammo_type = /obj/item/ammo_casing/c45f
|
||||
|
||||
/obj/item/ammo_magazine/c45m/ap
|
||||
name = "magazine (.45 AP)"
|
||||
ammo_type = /obj/item/ammo_casing/c45ap
|
||||
|
||||
/obj/item/ammo_magazine/c45uzi
|
||||
name = "stick magazine (.45)"
|
||||
icon_state = "uzi45"
|
||||
@@ -75,6 +79,10 @@
|
||||
caliber = ".45"
|
||||
max_ammo = 20
|
||||
|
||||
/obj/item/ammo_magazine/tommymag/ap
|
||||
name = "tommygun magazine (.45 AP)"
|
||||
ammo_type = /obj/item/ammo_casing/c45ap
|
||||
|
||||
/obj/item/ammo_magazine/tommymag/empty
|
||||
initial_ammo = 0
|
||||
|
||||
@@ -88,6 +96,10 @@
|
||||
caliber = ".45"
|
||||
max_ammo = 50
|
||||
|
||||
/obj/item/ammo_magazine/tommydrum/ap
|
||||
name = "tommygun drum magazine (.45 AP)"
|
||||
ammo_type = /obj/item/ammo_casing/c45ap
|
||||
|
||||
/obj/item/ammo_magazine/tommydrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
|
||||
@@ -63,6 +63,12 @@
|
||||
caliber = ".45"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
|
||||
/obj/item/ammo_casing/c45ap
|
||||
desc = "A .45 Armor-Piercing bullet casing."
|
||||
caliber = ".45"
|
||||
icon_state = "r-casing"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
|
||||
|
||||
/obj/item/ammo_casing/c45p
|
||||
desc = "A .45 practice bullet casing."
|
||||
caliber = ".45"
|
||||
|
||||
@@ -284,7 +284,10 @@
|
||||
if(one_handed_penalty >= 2)
|
||||
user << "<span class='warning'>You struggle to keep \the [src] pointed at the correct position with just one hand!</span>"
|
||||
|
||||
admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
|
||||
if(reflex)
|
||||
admin_attack_log(user, target, attacker_message = "fired [src] by reflex.", victim_message = "triggered a reflex shot from [src].", admin_message = "shot [target], who triggered gunfire ([src]) by reflex)")
|
||||
else
|
||||
admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
|
||||
|
||||
//update timing
|
||||
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
|
||||
|
||||
@@ -90,10 +90,11 @@
|
||||
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
|
||||
user << "<span class='notice'>You begin to shorten the barrel of \the [src].</span>"
|
||||
if(loaded.len)
|
||||
for(var/i in 1 to max_shells)
|
||||
afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN
|
||||
playsound(user, fire_sound, 50, 1)
|
||||
var/burstsetting = burst
|
||||
burst = 2
|
||||
user.visible_message("<span class='danger'>The shotgun goes off!</span>", "<span class='danger'>The shotgun goes off in your face!</span>")
|
||||
Fire_userless(user)
|
||||
burst = burstsetting
|
||||
return
|
||||
if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY
|
||||
icon_state = "sawnshotgun"
|
||||
|
||||
@@ -127,12 +127,16 @@
|
||||
damage = 20
|
||||
|
||||
/obj/item/projectile/bullet/pistol/ap
|
||||
damage = 20
|
||||
damage = 15
|
||||
armor_penetration = 30
|
||||
|
||||
/obj/item/projectile/bullet/pistol/medium
|
||||
damage = 25
|
||||
|
||||
/obj/item/projectile/bullet/pistol/medium/ap
|
||||
damage = 20
|
||||
armor_penetration = 15
|
||||
|
||||
/obj/item/projectile/bullet/pistol/strong //revolvers and matebas
|
||||
damage = 60
|
||||
|
||||
|
||||
@@ -26,4 +26,4 @@
|
||||
owner.visible_message("<span class='danger'>\The [owner] pulls the trigger reflexively!</span>")
|
||||
var/obj/item/weapon/gun/G = aiming_with
|
||||
if(istype(G))
|
||||
G.Fire(aiming_at, owner)
|
||||
G.Fire(aiming_at, owner, reflex = 1)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
reagent_state = LIQUID
|
||||
metabolism = REM * 5
|
||||
mrate_static = TRUE
|
||||
affects_dead = 1 //so you can pump blood into someone before defibbing them
|
||||
color = "#C80000"
|
||||
|
||||
glass_name = "tomato juice"
|
||||
@@ -162,7 +163,7 @@
|
||||
|
||||
/datum/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(issmall(M)) removed *= 2
|
||||
M.adjustToxLoss(2 * removed)
|
||||
M.adjustToxLoss(4 * removed)
|
||||
|
||||
/datum/reagent/fuel/touch_mob(var/mob/living/L, var/amount)
|
||||
if(istype(L))
|
||||
|
||||
@@ -288,6 +288,12 @@
|
||||
var/eyes_covered = 0
|
||||
var/mouth_covered = 0
|
||||
var/obj/item/safe_thing = null
|
||||
|
||||
var/effective_strength = 5
|
||||
|
||||
if(alien == IS_SKRELL) //Larger eyes means bigger targets.
|
||||
effective_strength = 8
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.can_feel_pain())
|
||||
@@ -316,19 +322,19 @@
|
||||
return
|
||||
else if(eyes_covered)
|
||||
M << "<span class='warning'>Your [safe_thing] protect you from most of the pepperspray!</span>"
|
||||
M.eye_blurry = max(M.eye_blurry, 15)
|
||||
M.eye_blind = max(M.eye_blind, 5)
|
||||
M.eye_blurry = max(M.eye_blurry, effective_strength * 3)
|
||||
M.eye_blind = max(M.eye_blind, effective_strength)
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
return
|
||||
else if (mouth_covered) // Mouth cover is better than eye cover
|
||||
M << "<span class='warning'>Your [safe_thing] protects your face from the pepperspray!</span>"
|
||||
M.eye_blurry = max(M.eye_blurry, 5)
|
||||
M.eye_blurry = max(M.eye_blurry, effective_strength)
|
||||
return
|
||||
else // Oh dear :D
|
||||
M << "<span class='warning'>You're sprayed directly in the eyes with pepperspray!</span>"
|
||||
M.eye_blurry = max(M.eye_blurry, 25)
|
||||
M.eye_blind = max(M.eye_blind, 10)
|
||||
M.eye_blurry = max(M.eye_blurry, effective_strength * 5)
|
||||
M.eye_blind = max(M.eye_blind, effective_strength * 2)
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
return
|
||||
|
||||
@@ -311,23 +311,6 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.update_mutations()
|
||||
|
||||
/datum/reagent/hyperzine
|
||||
name = "Hyperzine"
|
||||
id = "hyperzine"
|
||||
description = "Hyperzine is a highly effective, long lasting, muscle stimulant."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF3300"
|
||||
metabolism = REM * 0.3
|
||||
mrate_static = TRUE
|
||||
overdose = REAGENTS_OVERDOSE * 0.5
|
||||
|
||||
/datum/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch", "blink_r", "shiver"))
|
||||
M.add_chemical_effect(CE_SPEEDBOOST, 1)
|
||||
|
||||
/datum/reagent/ethylredoxrazine
|
||||
name = "Ethylredoxrazine"
|
||||
id = "ethylredoxrazine"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user