mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-26 05:27:39 +01:00
Merge branch 'master' into nova-ert
This commit is contained in:
@@ -1,4 +1,2 @@
|
||||
// More for our custom races
|
||||
#define IS_SERGAL 10
|
||||
#define IS_AKULA 11
|
||||
#define IS_NEVREAN 12
|
||||
#define IS_CHIMERA 12
|
||||
@@ -15,6 +15,7 @@
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
density = FALSE
|
||||
circuit = /obj/item/weapon/circuitboard/timeclock
|
||||
clicksound = null
|
||||
|
||||
var/obj/item/weapon/card/id/card // Inserted Id card
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
/obj/item/weapon/storage/briefcase/clutch
|
||||
name = "clutch purse"
|
||||
desc = "A fashionable handheld bag typically used by women."
|
||||
icon = 'icons/obj/clothing/backpack.dmi' //VOREStation Edit - Wrong sprite location
|
||||
icon_state = "clutch"
|
||||
item_state_slots = list(slot_r_hand_str = "smpurse", slot_l_hand_str = "smpurse")
|
||||
force = 0
|
||||
|
||||
@@ -135,17 +135,17 @@
|
||||
/datum/gear/accessory/brown_vest
|
||||
display_name = "webbing, brown"
|
||||
path = /obj/item/clothing/accessory/storage/brown_vest
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor", "Search and Rescue")
|
||||
|
||||
/datum/gear/accessory/black_vest
|
||||
display_name = "webbing, black"
|
||||
path = /obj/item/clothing/accessory/storage/black_vest
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor", "Search and Rescue")
|
||||
|
||||
/datum/gear/accessory/white_vest
|
||||
display_name = "webbing, white"
|
||||
path = /obj/item/clothing/accessory/storage/white_vest
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor", "Search and Rescue")
|
||||
|
||||
/datum/gear/accessory/brown_drop_pouches
|
||||
display_name = "drop pouches, brown"
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
/datum/gear/eyes/security
|
||||
display_name = "Security HUD (Security)"
|
||||
path = /obj/item/clothing/glasses/hud/security
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden", "Detective")
|
||||
|
||||
/datum/gear/eyes/security/prescriptionsec
|
||||
display_name = "Security HUD, prescription (Security)"
|
||||
@@ -72,12 +72,12 @@
|
||||
path = /obj/item/clothing/glasses/hud/health/aviator/prescription
|
||||
|
||||
/datum/gear/eyes/meson
|
||||
display_name = "Optical Meson Scanners (Engineering, Science)"
|
||||
display_name = "Optical Meson Scanners (Engineering, Science, Mining)"
|
||||
path = /obj/item/clothing/glasses/meson
|
||||
allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director")
|
||||
allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner")
|
||||
|
||||
/datum/gear/eyes/meson/prescription
|
||||
display_name = "Optical Meson Scanners, prescription (Engineering, Science)"
|
||||
display_name = "Optical Meson Scanners, prescription (Engineering, Science, Mining)"
|
||||
path = /obj/item/clothing/glasses/meson/prescription
|
||||
|
||||
/datum/gear/eyes/material
|
||||
@@ -90,11 +90,11 @@
|
||||
path = /obj/item/clothing/glasses/material/prescription
|
||||
|
||||
/datum/gear/eyes/meson/aviator
|
||||
display_name = "Optical Meson Aviators, (Engineering, Science)"
|
||||
display_name = "Optical Meson Aviators, (Engineering, Science, Mining)"
|
||||
path = /obj/item/clothing/glasses/meson/aviator
|
||||
|
||||
/datum/gear/eyes/meson/aviator/prescription
|
||||
display_name = "Optical Meson Aviators, prescription (Engineering, Science)"
|
||||
display_name = "Optical Meson Aviators, prescription (Engineering, Science, Mining)"
|
||||
path = /obj/item/clothing/glasses/meson/aviator/prescription
|
||||
|
||||
/datum/gear/eyes/glasses/fakesun
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
/datum/gear/head/beret/csec
|
||||
display_name = "beret, corporate (officer)"
|
||||
path = /obj/item/clothing/head/beret/sec/corporate/officer
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden", "Detective")
|
||||
|
||||
/datum/gear/head/beret/csec_warden
|
||||
display_name = "beret, corporate (warden)"
|
||||
@@ -57,7 +57,7 @@
|
||||
/datum/gear/head/beret/sec
|
||||
display_name = "beret, red (security)"
|
||||
path = /obj/item/clothing/head/beret/sec
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden")
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden", "Detective")
|
||||
|
||||
/datum/gear/head/cap
|
||||
display_name = "cap, black"
|
||||
@@ -324,22 +324,18 @@
|
||||
/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"
|
||||
|
||||
@@ -191,7 +191,6 @@
|
||||
/datum/gear/shoes/boots/winter/science
|
||||
display_name = "science winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/science
|
||||
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
|
||||
|
||||
/datum/gear/shoes/boots/winter/command
|
||||
display_name = "colony director's winter boots"
|
||||
@@ -201,32 +200,26 @@
|
||||
/datum/gear/shoes/boots/winter/engineering
|
||||
display_name = "engineering winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/engineering
|
||||
allowed_roles = list("Chief Engineer","Atmospheric Technician", "Station Engineer")
|
||||
|
||||
/datum/gear/shoes/boots/winter/atmos
|
||||
display_name = "atmospherics winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/atmos
|
||||
allowed_roles = list("Chief Engineer", "Atmospheric Technician")
|
||||
|
||||
/datum/gear/shoes/boots/winter/medical
|
||||
display_name = "medical winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/medical
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
|
||||
|
||||
/datum/gear/shoes/boots/winter/mining
|
||||
display_name = "mining winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/mining
|
||||
allowed_roles = list("Shaft Miner")
|
||||
|
||||
/datum/gear/shoes/boots/winter/supply
|
||||
display_name = "supply winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/supply
|
||||
allowed_roles = list("Quartermaster","Cargo Technician")
|
||||
|
||||
/datum/gear/shoes/boots/winter/hydro
|
||||
display_name = "hydroponics winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/hydro
|
||||
allowed_roles = list("Botanist", "Xenobiologist")
|
||||
|
||||
/datum/gear/shoes/circuitry
|
||||
display_name = "boots, circuitry (empty)"
|
||||
|
||||
@@ -331,37 +331,30 @@ datum/gear/suit/duster
|
||||
/datum/gear/suit/wintercoat/medical
|
||||
display_name = "winter coat, medical"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
|
||||
|
||||
/datum/gear/suit/wintercoat/science
|
||||
display_name = "winter coat, science"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/science
|
||||
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
|
||||
|
||||
/datum/gear/suit/wintercoat/engineering
|
||||
display_name = "winter coat, engineering"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/engineering
|
||||
allowed_roles = list("Chief Engineer","Atmospheric Technician", "Station Engineer")
|
||||
|
||||
/datum/gear/suit/wintercoat/atmos
|
||||
display_name = "winter coat, atmospherics"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos
|
||||
allowed_roles = list("Chief Engineer", "Atmospheric Technician")
|
||||
|
||||
/datum/gear/suit/wintercoat/hydro
|
||||
display_name = "winter coat, hydroponics"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/hydro
|
||||
allowed_roles = list("Botanist", "Xenobiologist")
|
||||
|
||||
/datum/gear/suit/wintercoat/cargo
|
||||
display_name = "winter coat, cargo"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/cargo
|
||||
allowed_roles = list("Quartermaster","Cargo Technician")
|
||||
|
||||
/datum/gear/suit/wintercoat/miner
|
||||
display_name = "winter coat, mining"
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/miner
|
||||
allowed_roles = list("Shaft Miner")
|
||||
|
||||
/datum/gear/suit/varsity
|
||||
display_name = "varsity jacket selection"
|
||||
|
||||
@@ -422,14 +422,12 @@
|
||||
path = /obj/item/clothing/under/focal
|
||||
|
||||
/datum/gear/uniform/mbill
|
||||
display_name = "outfit, major bill's (Cargo)"
|
||||
display_name = "outfit, major bill's"
|
||||
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/brandsuit/grayson
|
||||
|
||||
@@ -87,13 +87,14 @@
|
||||
var/S = pref.custom_base ? pref.custom_base : "Human"
|
||||
var/datum/species/custom/new_CS = CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character)
|
||||
|
||||
//Statistics for this would be nice
|
||||
var/english_traits = english_list(new_CS.traits, and_text = ";", comma_text = ";")
|
||||
log_game("TRAITS [pref.client_ckey]/([character]) with: [english_traits]") //Terrible 'fake' key_name()... but they aren't in the same entity yet
|
||||
|
||||
//Any additional non-trait settings can be applied here
|
||||
new_CS.blood_color = pref.blood_color
|
||||
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
//Statistics for this would be nice
|
||||
var/english_traits = english_list(new_CS.traits, and_text = ";", comma_text = ";")
|
||||
log_game("TRAITS [pref.client_ckey]/([character]) with: [english_traits]") //Terrible 'fake' key_name()... but they aren't in the same entity yet
|
||||
|
||||
/datum/category_item/player_setup_item/vore/traits/content(var/mob/user)
|
||||
. += "<b>Custom Species</b> "
|
||||
. += "<a href='?src=\ref[src];custom_species=1'>[pref.custom_species ? pref.custom_species : "-Input Name-"]</a><br>"
|
||||
|
||||
@@ -235,6 +235,10 @@
|
||||
var/obj/item/weapon/rig/R = back
|
||||
SetupStat(R)
|
||||
|
||||
else if(. && istype(belt,/obj/item/weapon/rig))
|
||||
var/obj/item/weapon/rig/R = belt
|
||||
SetupStat(R)
|
||||
|
||||
/mob/proc/SetupStat(var/obj/item/weapon/rig/R)
|
||||
if(R && !R.canremove && R.installed_modules.len && statpanel("Hardsuit Modules"))
|
||||
var/cell_status = R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "ERROR"
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rig/get_worn_icon_file(var/body_type,var/slot_name,var/default_icon,var/inhands)
|
||||
if(!inhands && slot_name == slot_back_str)
|
||||
if(!inhands && (slot_name == slot_back_str || slot_name == slot_belt_str))
|
||||
if(icon_override)
|
||||
return icon_override
|
||||
else if(mob_icon)
|
||||
@@ -195,7 +195,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rig/proc/suit_is_deployed()
|
||||
if(!istype(wearer) || src.loc != wearer || wearer.back != src)
|
||||
if(!istype(wearer) || src.loc != wearer || (wearer.back != src && wearer.belt != src))
|
||||
return 0
|
||||
if(helm_type && !(helmet && wearer.head == helmet))
|
||||
return 0
|
||||
@@ -289,7 +289,7 @@
|
||||
failed_to_seal = 1
|
||||
break
|
||||
|
||||
if(!failed_to_seal && M.back == src && piece == compare_piece)
|
||||
if(!failed_to_seal && (M.back == src || M.belt == src) && piece == compare_piece)
|
||||
|
||||
if(seal_delay && !instant && !do_after(M,seal_delay,needhand=0))
|
||||
failed_to_seal = 1
|
||||
@@ -320,7 +320,7 @@
|
||||
else
|
||||
failed_to_seal = 1
|
||||
|
||||
if((M && !(istype(M) && M.back == src) && !istype(M,/mob/living/silicon)) || (!seal_target && !suit_is_deployed()))
|
||||
if((M && !(istype(M) && (M.back == src || M.belt == src)) && !istype(M,/mob/living/silicon)) || (!seal_target && !suit_is_deployed()))
|
||||
failed_to_seal = 1
|
||||
|
||||
sealing = null
|
||||
@@ -413,13 +413,13 @@
|
||||
|
||||
return environment.temperature
|
||||
|
||||
/obj/item/weapon/rig/proc/attached_to_back(mob/M)
|
||||
/obj/item/weapon/rig/proc/attached_to_user(mob/M)
|
||||
if (!ishuman(M))
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if (!H.wear_suit || H.back != src)
|
||||
if (!H.wear_suit || (H.back != src && H.belt != src))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
@@ -431,7 +431,7 @@
|
||||
if (!ismob(loc))
|
||||
return
|
||||
|
||||
if (!attached_to_back(loc)) //make sure the rig's not just in their hands
|
||||
if (!attached_to_user(loc)) //make sure the rig's not just in their hands
|
||||
return
|
||||
|
||||
if (!suit_is_deployed()) //inbuilt systems only work on the suit they're designed to work on
|
||||
@@ -469,7 +469,7 @@
|
||||
// Run through cooling
|
||||
coolingProcess()
|
||||
|
||||
if(!istype(wearer) || loc != wearer || wearer.back != src || canremove || !cell || cell.charge <= 0)
|
||||
if(!istype(wearer) || loc != wearer || (wearer.back != src && wearer.belt != src) || canremove || !cell || cell.charge <= 0)
|
||||
if(!cell || cell.charge <= 0)
|
||||
if(electrified > 0)
|
||||
electrified = 0
|
||||
@@ -522,7 +522,7 @@
|
||||
|
||||
if(!user_is_ai)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H) && H.back != src)
|
||||
if(istype(H) && (H.back != src && H.belt != src))
|
||||
fail_msg = "<span class='warning'>You must be wearing \the [src] to do this.</span>"
|
||||
else if(user.incorporeal_move)
|
||||
fail_msg = "<span class='warning'>You must be solid to do this.</span>"
|
||||
@@ -658,7 +658,7 @@
|
||||
return 1
|
||||
if(malfunction_check(user))
|
||||
return 0
|
||||
if(user.back != src)
|
||||
if(user.back != src && user.belt != src)
|
||||
return 0
|
||||
else if(!src.allowed(user))
|
||||
user << "<span class='danger'>Unauthorized user. Access denied.</span>"
|
||||
@@ -717,16 +717,24 @@
|
||||
/obj/item/weapon/rig/equipped(mob/living/carbon/human/M)
|
||||
..()
|
||||
|
||||
if(seal_delay > 0 && istype(M) && M.back == src)
|
||||
if(istype(M.back, /obj/item/weapon/rig) && istype(M.belt, /obj/item/weapon/rig))
|
||||
to_chat(M, "<span class='notice'>You try to put on the [src], but it won't fit.</span>")
|
||||
if(M && (M.back == src || M.belt == src))
|
||||
if(!M.unEquip(src))
|
||||
return
|
||||
src.forceMove(get_turf(src))
|
||||
return
|
||||
|
||||
if(seal_delay > 0 && istype(M) && (M.back == src || M.belt == src))
|
||||
M.visible_message("<font color='blue'>[M] starts putting on \the [src]...</font>", "<font color='blue'>You start putting on \the [src]...</font>")
|
||||
if(!do_after(M,seal_delay))
|
||||
if(M && M.back == src)
|
||||
if(M && (M.back == src || M.belt == src))
|
||||
if(!M.unEquip(src))
|
||||
return
|
||||
src.forceMove(get_turf(src))
|
||||
return
|
||||
|
||||
if(istype(M) && M.back == src)
|
||||
if(istype(M) && (M.back == src || M.belt == src))
|
||||
M.visible_message("<font color='blue'><b>[M] struggles into \the [src].</b></font>", "<font color='blue'><b>You struggle into \the [src].</b></font>")
|
||||
wearer = M
|
||||
wearer.wearing_rig = src
|
||||
@@ -737,7 +745,7 @@
|
||||
if(sealing || !cell || !cell.charge)
|
||||
return
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
return
|
||||
|
||||
if(usr == wearer && (usr.stat||usr.paralysis||usr.stunned)) // If the usr isn't wearing the suit it's probably an AI.
|
||||
@@ -806,7 +814,7 @@
|
||||
|
||||
if(!H || !istype(H)) return
|
||||
|
||||
if(H.back != src)
|
||||
if(H.back != src && H.belt != src)
|
||||
return
|
||||
|
||||
if(sealed)
|
||||
@@ -950,7 +958,7 @@
|
||||
if(offline || !cell || !cell.charge || locked_down)
|
||||
if(user) user << "<span class='warning'>Your host rig is unpowered and unresponsive.</span>"
|
||||
return 0
|
||||
if(!wearer || wearer.back != src)
|
||||
if(!wearer || (wearer.back != src && wearer.belt != src))
|
||||
if(user) user << "<span class='warning'>Your host rig is not being worn.</span>"
|
||||
return 0
|
||||
if(!wearer.stat && !control_overridden && !ai_override_enabled)
|
||||
@@ -1051,7 +1059,12 @@
|
||||
return src
|
||||
|
||||
/mob/living/carbon/human/get_rig()
|
||||
return back
|
||||
if(istype(back, /obj/item/weapon/rig))
|
||||
return back
|
||||
else if(istype(belt, /obj/item/weapon/rig))
|
||||
return belt
|
||||
else
|
||||
return null
|
||||
|
||||
//Boot animation screen objects
|
||||
/obj/screen/rig_booting
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
else if(istype(W,/obj/item/rig_module))
|
||||
if(istype(src.loc,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.back == src)
|
||||
if(H.back == src || H.belt == src)
|
||||
to_chat(user, "<span class='danger'>You can't install a hardsuit module while the suit is being worn.</span>")
|
||||
return 1
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
|
||||
if(istype(src.loc,/mob/living/carbon/human) && to_remove != "cell")
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.back == src)
|
||||
if(H.back == src || H.belt == src)
|
||||
to_chat(user, "You can't remove an installed device while the hardsuit is being worn.")
|
||||
return
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(!istype(H) || !H.back)
|
||||
if(!istype(H) || (!H.back && !H.belt))
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/rig/suit = H.back
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(wearer && wearer.back == src)
|
||||
if(wearer && (wearer.back == src || wearer.belt == src))
|
||||
ui_interact(usr)
|
||||
|
||||
/obj/item/weapon/rig/verb/toggle_vision()
|
||||
@@ -16,7 +16,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
usr << "<span class='warning'>The suit is not active.</span>"
|
||||
return
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
|
||||
if(malfunction_check(usr))
|
||||
return
|
||||
|
||||
|
||||
if(!check_power_cost(usr, 0, 0, 0, 0))
|
||||
return
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
usr << "<span class='warning'>The suit is not active.</span>"
|
||||
return
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
usr << "<span class='warning'>The suit is not active.</span>"
|
||||
return
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
usr << "<span class='warning'>The suit is not active.</span>"
|
||||
return
|
||||
|
||||
if(!istype(wearer) || !wearer.back == src)
|
||||
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
|
||||
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -96,7 +96,8 @@
|
||||
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)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter
|
||||
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)
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/captain
|
||||
name = "colony director's winter coat"
|
||||
@@ -104,6 +105,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "coatcaptain", slot_l_hand_str = "coatcaptain")
|
||||
armor = list(melee = 20, bullet = 15, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/captain
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /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/clothing/head/helmet)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/security
|
||||
name = "security winter coat"
|
||||
@@ -111,6 +116,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "coatsecurity", slot_l_hand_str = "coatsecurity")
|
||||
armor = list(melee = 25, bullet = 20, laser = 20, energy = 15, bomb = 20, bio = 0, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/security
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /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/clothing/head/helmet)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/medical
|
||||
name = "medical winter coat"
|
||||
@@ -118,6 +127,11 @@
|
||||
item_state_slots = list(slot_r_hand_str = "coatmedical", slot_l_hand_str = "coatmedical")
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/medical
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /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/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/clothing/suit/storage/hooded/wintercoat/science
|
||||
name = "science winter coat"
|
||||
@@ -125,6 +139,11 @@
|
||||
item_state_slots = list(slot_r_hand_str = "coatscience", slot_l_hand_str = "coatscience")
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/science
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /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/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/clothing/suit/storage/hooded/wintercoat/engineering
|
||||
name = "engineering winter coat"
|
||||
@@ -132,6 +151,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "coatengineer", slot_l_hand_str = "coatengineer")
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/engineering
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer, /obj/item/device/flashlight,
|
||||
/obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner, /obj/item/weapon/tool/crowbar, /obj/item/weapon/tool/screwdriver,
|
||||
/obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/weapon/tank/emergency/oxygen, /obj/item/clothing/mask/gas, /obj/item/taperoll/engineering)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos
|
||||
name = "atmospherics winter coat"
|
||||
@@ -144,6 +167,9 @@
|
||||
icon_state = "coathydro"
|
||||
item_state_slots = list(slot_r_hand_str = "coathydro", slot_l_hand_str = "coathydro")
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/hydro
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/weapon/reagent_containers/spray/plantbgone,
|
||||
/obj/item/device/analyzer/plant_analyzer, /obj/item/seeds, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/material/minihoe)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/cargo
|
||||
name = "cargo winter coat"
|
||||
@@ -157,6 +183,8 @@
|
||||
item_state_slots = list(slot_r_hand_str = "coatminer", slot_l_hand_str = "coatminer")
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/hood/winter/miner
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/weapon/tank, /obj/item/device/radio, /obj/item/weapon/pickaxe, /obj/item/weapon/storage/bag/ore)
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/explorer
|
||||
name = "explorer suit"
|
||||
|
||||
@@ -82,6 +82,8 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
if(slot_tie)
|
||||
return 1
|
||||
|
||||
/obj/item/var/suitlink = 1 //makes belt items require a jumpsuit- set individual items to suitlink = 0 to allow wearing on belt slot without suit
|
||||
|
||||
/mob/living/carbon/human/u_equip(obj/W as obj)
|
||||
if(!W) return 0
|
||||
|
||||
@@ -98,7 +100,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
drop_from_inventory(l_store)
|
||||
if (wear_id)
|
||||
drop_from_inventory(wear_id)
|
||||
if (belt)
|
||||
if (belt && belt.suitlink == 1)
|
||||
worn_clothing -= belt
|
||||
drop_from_inventory(belt)
|
||||
worn_clothing -= w_uniform
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
base_color = "#333333"
|
||||
blood_color = "#14AD8B"
|
||||
|
||||
reagent_tag = IS_CHIMERA
|
||||
|
||||
/datum/species/xenochimera/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
//If they're KO'd/dead, they're probably not thinking a lot about much of anything.
|
||||
|
||||
@@ -37,8 +37,6 @@
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#777777"
|
||||
|
||||
reagent_tag = IS_SERGAL
|
||||
|
||||
heat_discomfort_strings = list(
|
||||
"Your fur prickles in the heat.",
|
||||
"You feel uncomfortably warm.",
|
||||
@@ -99,8 +97,6 @@
|
||||
base_color = "#777777"
|
||||
blood_color = "#1D2CBF"
|
||||
|
||||
reagent_tag = IS_AKULA
|
||||
|
||||
/datum/species/akula/can_breathe_water()
|
||||
return TRUE // Surprise, SHERKS.
|
||||
|
||||
@@ -140,8 +136,6 @@
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#333333"
|
||||
|
||||
reagent_tag = IS_SERGAL
|
||||
|
||||
heat_discomfort_strings = list(
|
||||
"Your fur prickles in the heat.",
|
||||
"You feel uncomfortably warm.",
|
||||
@@ -320,8 +314,8 @@
|
||||
color_mult = 1
|
||||
min_age = 18
|
||||
gluttonous = 0 //Moving this here so I don't have to fix this conflict every time polaris glances at station.dm
|
||||
inherent_verbs = list(/mob/living/proc/shred_limb, /mob/living/carbon/human/proc/lick_wounds)
|
||||
heat_discomfort_level = 294 //Prevents heat discomfort spam at 20c
|
||||
inherent_verbs = list(/mob/living/proc/shred_limb)
|
||||
heat_discomfort_level = 295 //Prevents heat discomfort spam at 20c
|
||||
|
||||
/datum/species/skrell
|
||||
spawn_flags = SPECIES_CAN_JOIN
|
||||
|
||||
@@ -209,6 +209,31 @@
|
||||
icon_state = "hair_messy"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
|
||||
|
||||
taj_ears_curls
|
||||
name = "Tajaran Curly"
|
||||
icon_state = "hair_curly"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
|
||||
|
||||
taj_ears_wife
|
||||
name = "Tajaran Housewife"
|
||||
icon_state = "hair_wife"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
|
||||
|
||||
taj_ears_victory
|
||||
name = "Tajaran Victory Curls"
|
||||
icon_state = "hair_victory"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
|
||||
|
||||
taj_ears_bob
|
||||
name = "Tajaran Bob"
|
||||
icon_state = "hair_tbob"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
|
||||
|
||||
taj_ears_fingercurl
|
||||
name = "Tajaran Finger Curls"
|
||||
icon_state = "hair_fingerwave"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN)
|
||||
|
||||
teshari_fluffymohawk
|
||||
name = "Teshari Fluffy Mohawk"
|
||||
icon = 'icons/mob/human_face_vr.dmi'
|
||||
|
||||
@@ -564,5 +564,3 @@ var/datum/planet/sif/planet_sif = null
|
||||
return
|
||||
if(T.outdoors)
|
||||
radiation_repository.radiate(T, rand(fallout_rad_low, fallout_rad_high))
|
||||
>>>>>>> 5fb77b3... Merge pull request #5791 from Neerti/looping_sounds
|
||||
>>>>>>> Adds Various Sounds, Looping Sound System
|
||||
|
||||
@@ -34,19 +34,16 @@
|
||||
data -= taste
|
||||
|
||||
/datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
/* VOREStation Removal
|
||||
if(!injectable && alien != IS_SLIME)
|
||||
if(!injectable && alien != IS_SLIME && alien != IS_CHIMERA) //VOREStation Edit
|
||||
M.adjustToxLoss(0.1 * removed)
|
||||
return
|
||||
affect_ingest(M, alien, removed)
|
||||
*/ //VOREStation Removal End
|
||||
if(injectable) //vorestation addition/replacement
|
||||
affect_ingest(M, alien, removed)
|
||||
affect_ingest(M, alien, removed)
|
||||
|
||||
/datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
switch(alien)
|
||||
if(IS_DIONA) return
|
||||
if(IS_UNATHI) removed *= 0.5
|
||||
if(IS_CHIMERA) removed *= 0.25 //VOREStation Edit
|
||||
if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume.
|
||||
M.heal_organ_damage(0.5 * removed, 0)
|
||||
if(M.species.gets_food_nutrition) //VOREStation edit. If this is set to 0, they don't get nutrition from food.
|
||||
@@ -77,6 +74,10 @@
|
||||
return
|
||||
if(IS_UNATHI)
|
||||
..(M, alien, removed*2.25) //Unathi get most of their nutrition from meat.
|
||||
//VOREStation Edit Start
|
||||
if(IS_CHIMERA)
|
||||
..(M, alien, removed*4) //Xenochimera are obligate carnivores.
|
||||
//VOREStation Edit End
|
||||
..()
|
||||
|
||||
/datum/reagent/nutriment/protein/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
|
||||
@@ -164,6 +164,7 @@
|
||||
build_path = /obj/item/weapon/gun/energy/taser/xeno
|
||||
sort_string = "TBAAC"
|
||||
|
||||
/* //VOREStation Edit
|
||||
// Phase Weapons
|
||||
/datum/design/item/weapon/phase_pistol
|
||||
id = "phasepistol"
|
||||
@@ -192,3 +193,4 @@
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "silver" = 1000, "diamond" = 750)
|
||||
build_path = /obj/item/weapon/gun/energy/phasegun/cannon
|
||||
sort_string = "TPAAD"
|
||||
*/
|
||||
@@ -201,21 +201,28 @@
|
||||
var/obj/item/weapon/weldingtool/welder = tool
|
||||
if(!welder.isOn() || !welder.remove_fuel(1,user))
|
||||
return 0
|
||||
return (target_zone == BP_TORSO) && istype(target.back, /obj/item/weapon/rig) && !(target.back.canremove)
|
||||
return (target_zone == BP_TORSO) && ((istype(target.back, /obj/item/weapon/rig) && !(target.back.canremove)) || (istype(target.belt, /obj/item/weapon/rig) && !(target.belt.canremove)))
|
||||
|
||||
/datum/surgery_step/hardsuit/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting through the support systems of [target]'s [target.back] with \the [tool]." , \
|
||||
"You start cutting through the support systems of [target]'s [target.back] with \the [tool].")
|
||||
var/obj/item/weapon/rig/rig = target.back
|
||||
if(!istype(rig))
|
||||
rig = target.belt
|
||||
if(!istype(rig))
|
||||
return
|
||||
user.visible_message("[user] starts cutting through the support systems of \the [rig] on [target] with \the [tool]." , \
|
||||
"You start cutting through the support systems of \the [rig] on [target] with \the [tool].")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/hardsuit/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/weapon/rig/rig = target.back
|
||||
if(!istype(rig))
|
||||
return
|
||||
rig = target.belt
|
||||
if(!istype(rig))
|
||||
return
|
||||
rig.reset()
|
||||
user.visible_message("<span class='notice'>[user] has cut through the support systems of [target]'s [rig] with \the [tool].</span>", \
|
||||
"<span class='notice'>You have cut through the support systems of [target]'s [rig] with \the [tool].</span>")
|
||||
user.visible_message("<span class='notice'>[user] has cut through the support systems of \the [rig] on [target] with \the [tool].</span>", \
|
||||
"<span class='notice'>You have cut through the support systems of \the [rig] on [target] with \the [tool].</span>")
|
||||
|
||||
/datum/surgery_step/hardsuit/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='danger'>[user]'s [tool] can't quite seem to get through the metal...</span>", \
|
||||
"<span class='danger'>Your [tool] can't quite seem to get through the metal. It's weakening, though - try again.</span>")
|
||||
"<span class='danger'>\The [tool] can't quite seem to get through the metal. It's weakening, though - try again.</span>")
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: mistyLuminescence
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Lays the foundation for RIGs to be worn on the belt slot. Doesn't apply to any RIGs currently, unless VV'd, but stay tuned!"
|
||||
@@ -0,0 +1,36 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: mistyLuminescence
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "More jobs can now take certain items in the loadout."
|
||||
@@ -0,0 +1,36 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: N3X15
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "Departmental winter coats can now hold the same items as their standard departmental suit items - labcoats, hazard vests, body armor, aprons, etc."
|
||||
@@ -21,4 +21,9 @@
|
||||
item_icons = list(slot_wear_suit_str = 'maps/southern_cross/icons/mob/sc_suit.dmi')
|
||||
icon = 'maps/southern_cross/icons/obj/sc_suit.dmi'
|
||||
armor = list(melee = 15, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 5)
|
||||
valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA)
|
||||
valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA)
|
||||
allowed = list (/obj/item/weapon/gun,/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes,
|
||||
/obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /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/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,
|
||||
/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle)
|
||||
@@ -95,7 +95,7 @@
|
||||
prob_fall = 25 //Chance goes down by this much each time it spawns one (not defining and prob_spawn 100 means they spawn as soon as one dies)
|
||||
guard = 40 //They'll stay within this range (not defining this disables them staying nearby and they will wander the map (and through step teleports))
|
||||
mobs_to_pick_from = list(
|
||||
/mob/living/simple_mob/vore/giant_snake
|
||||
/mob/living/simple_mob/animal/space/snake
|
||||
)
|
||||
|
||||
/obj/tether_away_spawner/beach_outside_friendly
|
||||
@@ -164,6 +164,7 @@
|
||||
//Not going to do sunlight simulations here like virgo3b
|
||||
//So we just make the whole beach fullbright all the time
|
||||
dynamic_lighting = 0
|
||||
requires_power = 0
|
||||
|
||||
/area/tether_away/beach/powershed
|
||||
name = "\improper Away Mission - Virgo 4 Coast PS"
|
||||
|
||||
@@ -3130,7 +3130,6 @@
|
||||
/turf/simulated/floor/tiled/steel_grid,
|
||||
/area/engineering/engine_monitoring)
|
||||
"afT" = (
|
||||
/obj/structure/table/woodentable,
|
||||
/obj/effect/floor_decal/borderfloor{
|
||||
dir = 4
|
||||
},
|
||||
@@ -3138,7 +3137,7 @@
|
||||
icon_state = "bordercolor";
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/device/camera,
|
||||
/obj/machinery/chemical_analyzer,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/station/explorer_meeting)
|
||||
"afU" = (
|
||||
@@ -21923,6 +21922,7 @@
|
||||
/obj/effect/floor_decal/borderfloor,
|
||||
/obj/effect/floor_decal/corner/purple/border,
|
||||
/obj/item/weapon/paper_bin,
|
||||
/obj/item/device/camera,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/station/explorer_meeting)
|
||||
"jDS" = (
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
//
|
||||
// The backup tether shuttle uses experimental engines and can degrade and/or crash!
|
||||
//
|
||||
/* //Disabling the crash mechanics per request
|
||||
/datum/shuttle/ferry/tether_backup
|
||||
crash_message = "Tether shuttle distress signal received. Shuttle location is approximately 200 meters from tether base."
|
||||
category = /datum/shuttle/ferry/tether_backup // So shuttle_controller.dm doesn't try and instantiate this type as an acutal mapped in shuttle.
|
||||
@@ -166,7 +167,7 @@
|
||||
wear = 20
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
*/
|
||||
////////////////////////////////////////
|
||||
//////// Excursion Shuttle /////////////
|
||||
////////////////////////////////////////
|
||||
|
||||
@@ -114,7 +114,10 @@ var/datum/planet/virgo3b/planet_virgo3b = null
|
||||
WEATHER_RAIN = new /datum/weather/virgo3b/rain(),
|
||||
WEATHER_STORM = new /datum/weather/virgo3b/storm(),
|
||||
WEATHER_HAIL = new /datum/weather/virgo3b/hail(),
|
||||
WEATHER_BLOOD_MOON = new /datum/weather/virgo3b/blood_moon()
|
||||
WEATHER_BLOOD_MOON = new /datum/weather/virgo3b/blood_moon(),
|
||||
WEATHER_EMBERFALL = new /datum/weather/virgo3b/emberfall(),
|
||||
WEATHER_ASH_STORM = new /datum/weather/virgo3b/ash_storm(),
|
||||
WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout()
|
||||
)
|
||||
roundstart_weather_chances = list(
|
||||
WEATHER_CLEAR = 30,
|
||||
@@ -201,6 +204,8 @@ var/datum/planet/virgo3b/planet_virgo3b = null
|
||||
"It's starting to snow.",
|
||||
"The air feels much colder as snowflakes fall from above."
|
||||
)
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/outside_snow
|
||||
indoor_sounds_type = /datum/looping_sound/weather/inside_snow
|
||||
|
||||
/datum/weather/virgo3b/snow/process_effects()
|
||||
..()
|
||||
@@ -230,6 +235,8 @@ var/datum/planet/virgo3b/planet_virgo3b = null
|
||||
"Strong winds howl around you as a blizzard appears.",
|
||||
"It starts snowing heavily, and it feels extremly cold now."
|
||||
)
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
|
||||
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
|
||||
|
||||
/datum/weather/virgo3b/blizzard/process_effects()
|
||||
..()
|
||||
@@ -436,3 +443,106 @@ var/datum/planet/virgo3b/planet_virgo3b = null
|
||||
transition_messages = list(
|
||||
"The sky turns blood red!"
|
||||
)
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/wind
|
||||
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
|
||||
|
||||
// Ash and embers fall forever, such as from a volcano or something.
|
||||
/datum/weather/virgo3b/emberfall
|
||||
name = "emberfall"
|
||||
icon_state = "ashfall_light"
|
||||
light_modifier = 0.7
|
||||
light_color = "#880000"
|
||||
temp_high = 293.15 // 20c
|
||||
temp_low = 283.15 // 10c
|
||||
flight_failure_modifier = 20
|
||||
transition_chances = list(
|
||||
WEATHER_EMBERFALL = 100
|
||||
)
|
||||
observed_message = "Soot, ash, and embers float down from above."
|
||||
transition_messages = list(
|
||||
"Gentle embers waft down around you like grotesque snow."
|
||||
)
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/wind
|
||||
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
|
||||
|
||||
// Like the above but a lot more harmful.
|
||||
/datum/weather/virgo3b/ash_storm
|
||||
name = "ash storm"
|
||||
icon_state = "ashfall_heavy"
|
||||
light_modifier = 0.1
|
||||
light_color = "#FF0000"
|
||||
temp_high = 323.15 // 50c
|
||||
temp_low = 313.15 // 40c
|
||||
flight_failure_modifier = 50
|
||||
transition_chances = list(
|
||||
WEATHER_ASH_STORM = 100
|
||||
)
|
||||
observed_message = "All that can be seen is black smoldering ash."
|
||||
transition_messages = list(
|
||||
"Smoldering clouds of scorching ash billow down around you!"
|
||||
)
|
||||
// Lets recycle.
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
|
||||
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
|
||||
|
||||
/datum/weather/virgo3b/ash_storm/process_effects()
|
||||
..()
|
||||
for(var/thing in living_mob_list)
|
||||
var/mob/living/L = thing
|
||||
if(L.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(L)
|
||||
if(!T.outdoors)
|
||||
continue // They're indoors, so no need to burn them with ash.
|
||||
|
||||
L.inflict_heat_damage(rand(1, 3))
|
||||
|
||||
|
||||
// Totally radical.
|
||||
/datum/weather/virgo3b/fallout
|
||||
name = "fallout"
|
||||
icon_state = "fallout"
|
||||
light_modifier = 0.7
|
||||
light_color = "#CCFFCC"
|
||||
flight_failure_modifier = 30
|
||||
transition_chances = list(
|
||||
WEATHER_FALLOUT = 100
|
||||
)
|
||||
observed_message = "Radioactive soot and ash rains down from the heavens."
|
||||
transition_messages = list(
|
||||
"Radioactive soot and ash start to float down around you, contaminating whatever they touch."
|
||||
)
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/wind
|
||||
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
|
||||
|
||||
// How much radiation a mob gets while on an outside tile.
|
||||
var/direct_rad_low = RAD_LEVEL_LOW
|
||||
var/direct_rad_high = RAD_LEVEL_MODERATE
|
||||
|
||||
// How much radiation is bursted onto a random tile near a mob.
|
||||
var/fallout_rad_low = RAD_LEVEL_HIGH
|
||||
var/fallout_rad_high = RAD_LEVEL_VERY_HIGH
|
||||
|
||||
/datum/weather/virgo3b/fallout/process_effects()
|
||||
..()
|
||||
for(var/thing in living_mob_list)
|
||||
var/mob/living/L = thing
|
||||
if(L.z in holder.our_planet.expected_z_levels)
|
||||
irradiate_nearby_turf(L)
|
||||
var/turf/T = get_turf(L)
|
||||
if(!T.outdoors)
|
||||
continue // They're indoors, so no need to irradiate them with fallout.
|
||||
|
||||
L.rad_act(rand(direct_rad_low, direct_rad_high))
|
||||
|
||||
// This makes random tiles near people radioactive for awhile.
|
||||
// Tiles far away from people are left alone, for performance.
|
||||
/datum/weather/virgo3b/fallout/proc/irradiate_nearby_turf(mob/living/L)
|
||||
if(!istype(L))
|
||||
return
|
||||
var/list/turfs = RANGE_TURFS(world.view, L)
|
||||
var/turf/T = pick(turfs) // We get one try per tick.
|
||||
if(!istype(T))
|
||||
return
|
||||
if(T.outdoors)
|
||||
radiation_repository.radiate(T, rand(fallout_rad_low, fallout_rad_high))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user