Polaris December Sync

This commit is contained in:
killer653
2016-12-10 09:51:11 -05:00
263 changed files with 5254 additions and 1644 deletions
+3 -3
View File
@@ -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
+18 -3
View File
@@ -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)
+40
View File
@@ -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."
+2 -2
View File
@@ -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"
+20 -1
View File
@@ -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"
+40 -2
View File
@@ -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
*/
+6 -1
View File
@@ -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"
+241
View File
@@ -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"
+16
View File
@@ -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"
+18 -26
View File
@@ -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")
+1
View File
@@ -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
+130 -20
View File
@@ -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
+2
View File
@@ -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"
+44 -11
View File
@@ -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
+8 -8
View File
@@ -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
+37 -3
View File
@@ -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"
+1
View File
@@ -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)
+52 -24
View File
@@ -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
+168
View File
@@ -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
+7
View File
@@ -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."
+3 -3
View File
@@ -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
+2 -1
View File
@@ -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
+74 -3
View File
@@ -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"
+9
View File
@@ -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."
+265
View File
@@ -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)
+4 -3
View File
@@ -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()
+4 -4
View File
@@ -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
View File
@@ -1,5 +1,6 @@
//Misc
#define DEAD_PLANT_COLOUR "#C2A180"
#define FROZEN_PLANT_COLOUR "#CCFFFF"
// Definitions for genes (trait groupings)
#define GENE_BIOCHEMISTRY "biochemistry"
+21 -3
View File
@@ -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)
+10 -2
View File
@@ -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)
+2
View File
@@ -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)
+8
View File
@@ -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
+4 -1
View File
@@ -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")
+1
View File
@@ -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", \
+3 -1
View File
@@ -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.
+5 -4
View File
@@ -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")
+16 -11
View File
@@ -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
+4 -2
View File
@@ -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)
+3 -2
View File
@@ -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()
+2 -2
View File
@@ -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
+1
View File
@@ -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)
@@ -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"
+1 -1
View File
@@ -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
+24 -25
View File
@@ -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"
+3 -5
View File
@@ -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
View File
@@ -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
+2 -1
View File
@@ -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"
+4 -1
View File
@@ -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"
+4 -1
View File
@@ -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