mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-21 03:55:05 +01:00
Merge branch 'master' into breakable-ssus
This commit is contained in:
@@ -147,13 +147,6 @@
|
||||
detected_mech = TRUE
|
||||
increase_alert("Hostile mecha detected: [E]")
|
||||
|
||||
/area/syndicate_depot/core/proc/saw_pod(obj/spacepod/P)
|
||||
if(detected_pod)
|
||||
return
|
||||
detected_pod = TRUE
|
||||
if(!called_backup)
|
||||
increase_alert("Hostile spacepod detected: [P]")
|
||||
|
||||
/area/syndicate_depot/core/proc/saw_double_agent(mob/living/M)
|
||||
if(detected_double_agent)
|
||||
return
|
||||
|
||||
@@ -1112,14 +1112,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "\improper Chief Engineer's office"
|
||||
icon_state = "engine_control"
|
||||
|
||||
/area/engine/mechanic_workshop
|
||||
name = "\improper Mechanic Workshop"
|
||||
icon_state = "engine"
|
||||
|
||||
/area/engine/mechanic_workshop/hanger
|
||||
name = "\improper Hanger Bay"
|
||||
icon_state = "engine"
|
||||
|
||||
/area/engine/supermatter
|
||||
name = "\improper Supermatter Engine"
|
||||
icon_state = "engine"
|
||||
@@ -1488,10 +1480,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "\improper Head of Security's Office"
|
||||
icon_state = "sec_hos"
|
||||
|
||||
/area/security/podbay
|
||||
name = "\improper Security Podbay"
|
||||
icon_state = "securitypodbay"
|
||||
|
||||
/area/security/detectives_office
|
||||
name = "\improper Detective's Office"
|
||||
icon_state = "detective"
|
||||
@@ -1544,7 +1532,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/security/vacantoffice2
|
||||
name = "\improper Vacant Office"
|
||||
icon_state = "security"
|
||||
|
||||
|
||||
/area/security/permasolitary
|
||||
name = "Solitary Confinement"
|
||||
icon_state = "solitary"
|
||||
|
||||
+25
-40
@@ -657,9 +657,6 @@
|
||||
|
||||
GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
|
||||
/atom/proc/blood_splatter_index()
|
||||
return "\ref[initial(icon)]-[initial(icon_state)]"
|
||||
|
||||
//returns the mob's dna info as a list, to be inserted in an object's blood_DNA list
|
||||
/mob/living/proc/get_blood_dna_list()
|
||||
if(get_blood_id() != "blood")
|
||||
@@ -726,56 +723,52 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
return add_blood(blood_dna, bloodcolor)
|
||||
|
||||
//to add blood onto something, with blood dna info to include.
|
||||
/atom/proc/add_blood(list/blood_dna, color)
|
||||
/atom/proc/add_blood(list/blood_dna, b_color)
|
||||
return FALSE
|
||||
|
||||
/obj/add_blood(list/blood_dna, color)
|
||||
/obj/add_blood(list/blood_dna, b_color)
|
||||
return transfer_blood_dna(blood_dna)
|
||||
|
||||
/obj/item/add_blood(list/blood_dna, color)
|
||||
var/blood_count = !blood_DNA ? 0 : blood_DNA.len
|
||||
/obj/item/add_blood(list/blood_dna, b_color)
|
||||
var/blood_count = !blood_DNA ? 0 : length(blood_DNA)
|
||||
if(!..())
|
||||
return FALSE
|
||||
if(!blood_count)//apply the blood-splatter overlay if it isn't already in there
|
||||
add_blood_overlay(color)
|
||||
blood_color = b_color // update the blood color
|
||||
if(!blood_count) //apply the blood-splatter overlay if it isn't already in there
|
||||
add_blood_overlay()
|
||||
return TRUE //we applied blood to the item
|
||||
|
||||
/obj/item/clothing/gloves/add_blood(list/blood_dna, color)
|
||||
/obj/item/clothing/gloves/add_blood(list/blood_dna, b_color)
|
||||
. = ..()
|
||||
transfer_blood = rand(2, 4)
|
||||
|
||||
/turf/add_blood(list/blood_dna, color)
|
||||
/turf/add_blood(list/blood_dna, b_color)
|
||||
var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src
|
||||
if(!B)
|
||||
B = new /obj/effect/decal/cleanable/blood/splatter(src)
|
||||
B.transfer_blood_dna(blood_dna) //give blood info to the blood decal.
|
||||
B.basecolor = color
|
||||
B.basecolor = b_color
|
||||
return TRUE //we bloodied the floor
|
||||
|
||||
/mob/living/carbon/human/add_blood(list/blood_dna, color)
|
||||
/mob/living/carbon/human/add_blood(list/blood_dna, b_color)
|
||||
if(wear_suit)
|
||||
wear_suit.add_blood(blood_dna, color)
|
||||
wear_suit.blood_color = color
|
||||
wear_suit.add_blood(blood_dna, b_color)
|
||||
update_inv_wear_suit()
|
||||
else if(w_uniform)
|
||||
w_uniform.add_blood(blood_dna, color)
|
||||
w_uniform.blood_color = color
|
||||
w_uniform.add_blood(blood_dna, b_color)
|
||||
update_inv_w_uniform()
|
||||
if(head)
|
||||
head.add_blood(blood_dna, color)
|
||||
head.blood_color = color
|
||||
head.add_blood(blood_dna, b_color)
|
||||
update_inv_head()
|
||||
if(glasses)
|
||||
glasses.add_blood(blood_dna, color)
|
||||
glasses.blood_color = color
|
||||
glasses.add_blood(blood_dna, b_color)
|
||||
update_inv_glasses()
|
||||
if(gloves)
|
||||
var/obj/item/clothing/gloves/G = gloves
|
||||
G.add_blood(blood_dna, color)
|
||||
G.blood_color = color
|
||||
G.add_blood(blood_dna, b_color)
|
||||
verbs += /mob/living/carbon/human/proc/bloody_doodle
|
||||
else
|
||||
hand_blood_color = color
|
||||
hand_blood_color = b_color
|
||||
bloody_hands = rand(2, 4)
|
||||
transfer_blood_dna(blood_dna)
|
||||
verbs += /mob/living/carbon/human/proc/bloody_doodle
|
||||
@@ -783,21 +776,13 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
update_inv_gloves() //handles bloody hands overlays and updating
|
||||
return TRUE
|
||||
|
||||
/obj/item/proc/add_blood_overlay(color)
|
||||
/obj/item/proc/add_blood_overlay()
|
||||
if(initial(icon) && initial(icon_state))
|
||||
//try to find a pre-processed blood-splatter. otherwise, make a new one
|
||||
var/index = blood_splatter_index()
|
||||
var/icon/blood_splatter_icon = GLOB.blood_splatter_icons[index]
|
||||
if(!blood_splatter_icon)
|
||||
blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object
|
||||
blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
|
||||
blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
|
||||
blood_splatter_icon = fcopy_rsc(blood_splatter_icon)
|
||||
GLOB.blood_splatter_icons[index] = blood_splatter_icon
|
||||
|
||||
blood_overlay = image(blood_splatter_icon)
|
||||
blood_overlay.color = color
|
||||
overlays += blood_overlay
|
||||
var/list/params = GLOB.blood_splatter_icons["[blood_color]"]
|
||||
if(!params)
|
||||
params = layering_filter(icon = icon('icons/effects/blood.dmi', "itemblood"), color = blood_color, blend_mode = BLEND_INSET_OVERLAY)
|
||||
GLOB.blood_splatter_icons["[blood_color]"] = params
|
||||
add_filter("blood_splatter", 1, params)
|
||||
|
||||
/atom/proc/clean_blood(radiation_clean = FALSE)
|
||||
germ_level = 0
|
||||
@@ -828,8 +813,8 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
/obj/item/clean_blood(radiation_clean = FALSE)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(blood_overlay)
|
||||
overlays -= blood_overlay
|
||||
if(initial(icon) && initial(icon_state))
|
||||
remove_filter("blood_splatter")
|
||||
|
||||
/obj/item/clothing/gloves/clean_blood(radiation_clean = FALSE)
|
||||
. = ..()
|
||||
|
||||
+14
-2
@@ -44,10 +44,12 @@
|
||||
hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPMINDSHIELD_HUD, IMPCHEM_HUD, WANTED_HUD)
|
||||
|
||||
/datum/atom_hud/data/diagnostic
|
||||
hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD)
|
||||
|
||||
/datum/atom_hud/data/diagnostic/basic
|
||||
hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD)
|
||||
|
||||
/datum/atom_hud/data/diagnostic/advanced
|
||||
hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_PATH_HUD)
|
||||
hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_PATH_HUD)
|
||||
|
||||
/datum/atom_hud/data/bot_path
|
||||
hud_icons = list(DIAG_PATH_HUD)
|
||||
@@ -473,6 +475,16 @@
|
||||
return
|
||||
holder.icon_state = "hudweed[RoundPlantBar(weedlevel/10)]"
|
||||
|
||||
/*~~~~~~~~~~~~
|
||||
Airlocks!
|
||||
~~~~~~~~~~~~~*/
|
||||
/obj/machinery/door/airlock/proc/diag_hud_set_electrified()
|
||||
var/image/holder = hud_list[DIAG_AIRLOCK_HUD]
|
||||
if(isElectrified())
|
||||
holder.icon_state = "electrified"
|
||||
else
|
||||
holder.icon_state = ""
|
||||
|
||||
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
I'll just put this somewhere near the end...
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
||||
|
||||
@@ -11,7 +11,7 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E
|
||||
name = "changeling"
|
||||
config_tag = "changeling"
|
||||
restricted_jobs = list("AI", "Cyborg")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_species = list("Machine")
|
||||
required_players = 15
|
||||
required_enemies = 1
|
||||
|
||||
@@ -48,7 +48,7 @@ GLOBAL_LIST_EMPTY(all_cults)
|
||||
/datum/game_mode/cult
|
||||
name = "cult"
|
||||
config_tag = "cult"
|
||||
restricted_jobs = list("Chaplain", "AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Security Pod Pilot", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
restricted_jobs = list("Chaplain", "AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_jobs = list()
|
||||
required_players = 30
|
||||
required_enemies = 3
|
||||
|
||||
@@ -463,7 +463,7 @@
|
||||
var/jobtext = ""
|
||||
if(ply.assigned_role)
|
||||
jobtext = " the <b>[ply.assigned_role]</b>"
|
||||
var/text = "<b>[ply.key]</b> was <b>[ply.name]</b>[jobtext] and"
|
||||
var/text = "<b>[ply.get_display_key()]</b> was <b>[ply.name]</b>[jobtext] and"
|
||||
if(ply.current)
|
||||
if(ply.current.stat == DEAD)
|
||||
text += " <span class='redtext'>died</span>"
|
||||
@@ -480,7 +480,7 @@
|
||||
return text
|
||||
|
||||
/proc/printeventplayer(datum/mind/ply)
|
||||
var/text = "<b>[ply.key]</b> was <b>[ply.name]</b>"
|
||||
var/text = "<b>[ply.get_display_key()]</b> was <b>[ply.name]</b>"
|
||||
if(ply.special_role != SPECIAL_ROLE_EVENTMISC)
|
||||
text += " the [ply.special_role]"
|
||||
text += " and"
|
||||
|
||||
@@ -372,10 +372,6 @@
|
||||
to_chat(S, "<span class='warning'>This cryopod control computer should be preserved, it contains useful items and information about the inhabitants. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/structure/spacepoddoor/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
to_chat(S, "<span class='warning'>Disrupting this energy field would overload us. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/turf/simulated/wall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
var/isonshuttle = istype(loc, /area/shuttle)
|
||||
for(var/turf/T in range(1, src))
|
||||
@@ -412,10 +408,6 @@
|
||||
to_chat(S, "<span class='warning'>Attempting to dismantle this machine would result in an immediate counterattack. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/spacepod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
to_chat(S, "<span class='warning'>Destroying this vehicle would destroy us. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/clonepod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
if(occupant)
|
||||
to_chat(S, "<span class='warning'>Destroying this machine while it is occupied would result in biological and sentient resources to be harmed. Aborting.</span>")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/game_mode/revolution
|
||||
name = "revolution"
|
||||
config_tag = "revolution"
|
||||
restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician")
|
||||
restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician")
|
||||
required_players = 20
|
||||
required_enemies = 1
|
||||
recommended_enemies = 3
|
||||
|
||||
@@ -74,7 +74,7 @@ Made by Xhuis
|
||||
required_enemies = 2
|
||||
recommended_enemies = 2
|
||||
restricted_jobs = list("AI", "Cyborg")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
|
||||
/datum/game_mode/shadowling/announce()
|
||||
to_chat(world, "<b>The current game mode is - Shadowling!</b>")
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
name = "traitor"
|
||||
config_tag = "traitor"
|
||||
restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
required_players = 0
|
||||
required_enemies = 1
|
||||
recommended_enemies = 4
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "traitor+vampire"
|
||||
config_tag = "traitorvamp"
|
||||
traitors_possible = 3 //hard limit on traitors if scaling is turned off
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Solar Federation General")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Solar Federation General")
|
||||
restricted_jobs = list("Cyborg")
|
||||
secondary_restricted_jobs = list("AI")
|
||||
required_players = 10
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
name = "vampire"
|
||||
config_tag = "vampire"
|
||||
restricted_jobs = list("AI", "Cyborg")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
|
||||
protected_species = list("Machine")
|
||||
required_players = 15
|
||||
required_enemies = 1
|
||||
|
||||
@@ -133,9 +133,9 @@
|
||||
ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_CHAPEL_OFFICE, ACCESS_CE, ACCESS_CHEMISTRY, ACCESS_CLOWN, ACCESS_CMO,
|
||||
ACCESS_COURT, ACCESS_CONSTRUCTION, ACCESS_CREMATORIUM, ACCESS_JANITOR, ACCESS_ENGINE, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_FORENSICS_LOCKERS,
|
||||
ACCESS_GENETICS, ACCESS_GATEWAY, ACCESS_BRIG, ACCESS_HOP, ACCESS_HOS, ACCESS_HYDROPONICS, ACCESS_CHANGE_IDS, ACCESS_KEYCARD_AUTH, ACCESS_KITCHEN,
|
||||
ACCESS_LAWYER, ACCESS_LIBRARY, ACCESS_MAGISTRATE, ACCESS_MAINT_TUNNELS, ACCESS_HEADS_VAULT, ACCESS_MEDICAL, ACCESS_MECHANIC, ACCESS_MIME,
|
||||
ACCESS_LAWYER, ACCESS_LIBRARY, ACCESS_MAGISTRATE, ACCESS_MAINT_TUNNELS, ACCESS_HEADS_VAULT, ACCESS_MEDICAL, ACCESS_MIME,
|
||||
ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_NETWORK, ACCESS_NTREP, ACCESS_PARAMEDIC, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_ENGINE_EQUIP, ACCESS_PSYCHIATRIST, ACCESS_QM, ACCESS_RD, ACCESS_RC_ANNOUNCE, ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_RESEARCH, ACCESS_SECURITY, ACCESS_PILOT,
|
||||
ACCESS_ENGINE_EQUIP, ACCESS_PSYCHIATRIST, ACCESS_QM, ACCESS_RD, ACCESS_RC_ANNOUNCE, ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_RESEARCH, ACCESS_SECURITY,
|
||||
ACCESS_SURGERY, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_THEATRE, ACCESS_TCOMSAT, ACCESS_TOX_STORAGE, ACCESS_VIROLOGY, ACCESS_WEAPONS, ACCESS_XENOBIOLOGY,
|
||||
ACCESS_XENOARCH)
|
||||
|
||||
@@ -158,13 +158,13 @@
|
||||
if(REGION_GENERAL) //station general
|
||||
return list(ACCESS_KITCHEN, ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER, ACCESS_MAGISTRATE, ACCESS_CLOWN, ACCESS_MIME)
|
||||
if(REGION_SECURITY) //security
|
||||
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_PILOT, ACCESS_HOS)
|
||||
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS)
|
||||
if(REGION_MEDBAY) //medbay
|
||||
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_PSYCHIATRIST, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO, ACCESS_PARAMEDIC)
|
||||
if(REGION_RESEARCH) //research
|
||||
return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK)
|
||||
if(REGION_ENGINEERING) //engineering and maintenance
|
||||
return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_MINISAT, ACCESS_CE, ACCESS_MECHANIC)
|
||||
return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_MINISAT, ACCESS_CE)
|
||||
if(REGION_SUPPLY) //supply
|
||||
return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM)
|
||||
if(REGION_COMMAND) //command
|
||||
@@ -334,10 +334,6 @@
|
||||
return "Nanotrasen Rep."
|
||||
if(ACCESS_PARAMEDIC)
|
||||
return "Paramedic"
|
||||
if(ACCESS_MECHANIC)
|
||||
return "Mechanic Workshop"
|
||||
if(ACCESS_PILOT)
|
||||
return "Security Pod Pilot"
|
||||
if(ACCESS_MAGISTRATE)
|
||||
return "Magistrate"
|
||||
if(ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 1200
|
||||
exp_type = EXP_TYPE_ENGINEERING
|
||||
@@ -117,37 +117,3 @@
|
||||
dufflebag = /obj/item/storage/backpack/duffel/atmos
|
||||
box = /obj/item/storage/box/engineer
|
||||
|
||||
/datum/job/mechanic
|
||||
title = "Mechanic"
|
||||
flag = JOB_MECHANIC
|
||||
department_flag = JOBCAT_KARMA
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
is_engineering = 1
|
||||
supervisors = "the chief engineer"
|
||||
department_head = list("Chief Engineer")
|
||||
selection_color = "#fff5cc"
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECHANIC, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_EMERGENCY_STORAGE, ACCESS_MECHANIC, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MINERAL_STOREROOM)
|
||||
outfit = /datum/outfit/job/mechanic
|
||||
|
||||
/datum/outfit/job/mechanic
|
||||
name = "Mechanic"
|
||||
jobtype = /datum/job/mechanic
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/mechanic
|
||||
belt = /obj/item/storage/belt/utility/full
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
head = /obj/item/clothing/head/hardhat
|
||||
l_ear = /obj/item/radio/headset/headset_eng
|
||||
id = /obj/item/card/id/engineering
|
||||
r_pocket = /obj/item/t_scanner
|
||||
pda = /obj/item/pda/engineering
|
||||
backpack_contents = list(
|
||||
/obj/item/pod_paint_bucket = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/storage/backpack/industrial
|
||||
satchel = /obj/item/storage/backpack/satchel_eng
|
||||
dufflebag = /obj/item/storage/backpack/duffel/engineering
|
||||
box = /obj/item/storage/box/engineer
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
selection_color = "#ffdddd"
|
||||
req_admin_notify = 1
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_PILOT, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
|
||||
minimal_access = list(ACCESS_EVA, ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PILOT, ACCESS_WEAPONS)
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 1200
|
||||
exp_type = EXP_TYPE_SECURITY
|
||||
@@ -222,40 +222,3 @@
|
||||
backpack = /obj/item/storage/backpack/medic
|
||||
satchel = /obj/item/storage/backpack/satchel_med
|
||||
dufflebag = /obj/item/storage/backpack/duffel/medical
|
||||
|
||||
|
||||
/datum/job/pilot
|
||||
title = "Security Pod Pilot"
|
||||
flag = JOB_PILOT
|
||||
department_flag = JOBCAT_KARMA
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
is_security = 1
|
||||
supervisors = "the head of security"
|
||||
department_head = list("Head of Security")
|
||||
selection_color = "#ffeeee"
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_PILOT, ACCESS_EXTERNAL_AIRLOCKS)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS, ACCESS_PILOT, ACCESS_EXTERNAL_AIRLOCKS)
|
||||
minimal_player_age = 7
|
||||
outfit = /datum/outfit/job/pilot
|
||||
|
||||
/datum/outfit/job/pilot
|
||||
name = "Security Pod Pilot"
|
||||
jobtype = /datum/job/pilot
|
||||
uniform = /obj/item/clothing/under/rank/security/pod_pilot
|
||||
suit = /obj/item/clothing/suit/jacket/pilot
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
l_ear = /obj/item/radio/headset/headset_sec/alt
|
||||
id = /obj/item/card/id/security
|
||||
l_pocket = /obj/item/flash
|
||||
suit_store = /obj/item/gun/energy/gun/advtaser
|
||||
pda = /obj/item/pda/security
|
||||
backpack_contents = list(
|
||||
/obj/item/restraints/handcuffs = 1
|
||||
)
|
||||
implants = list(/obj/item/implant/mindshield)
|
||||
backpack = /obj/item/storage/backpack/security
|
||||
satchel = /obj/item/storage/backpack/satchel_sec
|
||||
dufflebag = /obj/item/storage/backpack/duffel/security
|
||||
box = /obj/item/storage/box/engineer
|
||||
|
||||
@@ -17,7 +17,6 @@ GLOBAL_LIST_INIT(engineering_positions, list(
|
||||
"Chief Engineer",
|
||||
"Station Engineer",
|
||||
"Life Support Specialist",
|
||||
"Mechanic"
|
||||
))
|
||||
|
||||
|
||||
@@ -78,7 +77,6 @@ GLOBAL_LIST_INIT(security_positions, list(
|
||||
"Detective",
|
||||
"Security Officer",
|
||||
"Brig Physician",
|
||||
"Security Pod Pilot",
|
||||
"Magistrate"
|
||||
))
|
||||
|
||||
@@ -98,10 +96,8 @@ GLOBAL_LIST_INIT(whitelisted_positions, list(
|
||||
"Blueshield",
|
||||
"Nanotrasen Representative",
|
||||
"Barber",
|
||||
"Mechanic",
|
||||
"Brig Physician",
|
||||
"Magistrate",
|
||||
"Security Pod Pilot",
|
||||
"Magistrate"
|
||||
))
|
||||
|
||||
|
||||
|
||||
@@ -257,6 +257,7 @@
|
||||
enemy_name = "Cuban Pete"
|
||||
name = "Outbomb Cuban Pete"
|
||||
|
||||
add_hiddenprint(user)
|
||||
updateUsrDialog()
|
||||
|
||||
// *** THE ORION TRAIL ** //
|
||||
@@ -962,6 +963,7 @@
|
||||
to_chat(user, "<span class='notice'>You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.</span>")
|
||||
name = "The Orion Trail: Realism Edition"
|
||||
desc = "Learn how our ancestors got to Orion, and try not to die in the process!"
|
||||
add_hiddenprint(user)
|
||||
newgame()
|
||||
emagged = 1
|
||||
|
||||
|
||||
@@ -257,8 +257,8 @@
|
||||
board_name = "RD Console"
|
||||
desc = "Swipe a Scientist level ID or higher to reconfigure."
|
||||
build_path = /obj/machinery/computer/rdconsole/core
|
||||
req_access = list(ACCESS_TOX) // This is for adjusting the type of computer we're building - in case something messes up the pre-existing robotics or mechanics consoles
|
||||
var/list/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Mechanics", "Public")
|
||||
req_access = list(ACCESS_TOX) // This is for adjusting the type of computer we're building - in case something messes up the pre-existing robotics console
|
||||
var/list/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Public")
|
||||
|
||||
/obj/item/circuitboard/rdconsole/robotics
|
||||
board_name = "RD Console - Robotics"
|
||||
@@ -268,10 +268,6 @@
|
||||
board_name = "RD Console - E.X.P.E.R.I-MENTOR"
|
||||
build_path = /obj/machinery/computer/rdconsole/experiment
|
||||
|
||||
/obj/item/circuitboard/rdconsole/mechanics
|
||||
board_name = "RD Console - Mechanics"
|
||||
build_path = /obj/machinery/computer/rdconsole/mechanics
|
||||
|
||||
/obj/item/circuitboard/rdconsole/public
|
||||
board_name = "RD Console - Public"
|
||||
build_path = /obj/machinery/computer/rdconsole/public
|
||||
@@ -281,10 +277,6 @@
|
||||
board_name = "Exosuit Control Console"
|
||||
build_path = /obj/machinery/computer/mecha
|
||||
|
||||
/obj/item/circuitboard/pod_locater
|
||||
board_name = "Pod Location Console"
|
||||
build_path = /obj/machinery/computer/podtracker
|
||||
|
||||
/obj/item/circuitboard/rdservercontrol
|
||||
board_name = "RD Server Control"
|
||||
build_path = /obj/machinery/computer/rdservercontrol
|
||||
@@ -426,9 +418,6 @@
|
||||
if("E.X.P.E.R.I-MENTOR")
|
||||
board_name = "RD Console - E.X.P.E.R.I-MENTOR"
|
||||
build_path = /obj/machinery/computer/rdconsole/experiment
|
||||
if("Mechanics")
|
||||
board_name = "RD Console - Mechanics"
|
||||
build_path = /obj/machinery/computer/rdconsole/mechanics
|
||||
if("Public")
|
||||
board_name = "RD Console - Public"
|
||||
build_path = /obj/machinery/computer/rdconsole/public
|
||||
|
||||
@@ -48,9 +48,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
/datum/job/judge,
|
||||
/datum/job/blueshield,
|
||||
/datum/job/nanotrasenrep,
|
||||
/datum/job/pilot,
|
||||
/datum/job/brigdoc,
|
||||
/datum/job/mechanic,
|
||||
/datum/job/barber,
|
||||
/datum/job/chaplain
|
||||
)
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/obj/machinery/computer/podtracker
|
||||
name = "pod tracking console"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_keyboard = "tech_key"
|
||||
icon_screen = "rdcomp"
|
||||
light_color = LIGHT_COLOR_PURPLE
|
||||
req_access = list(ACCESS_ROBOTICS)
|
||||
circuit = /obj/item/circuitboard/pod_locater
|
||||
|
||||
/obj/machinery/computer/podtracker/attack_ai(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/podtracker/attack_hand(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/computer/podtracker/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "PodTracking", name, 400, 500, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/podtracker/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
var/list/pods = list()
|
||||
for(var/obj/item/spacepod_equipment/misc/tracker/TR in GLOB.pod_trackers)
|
||||
if(TR.my_atom)
|
||||
var/obj/spacepod/my_pod = TR.my_atom
|
||||
var/podname = capitalize(sanitize(my_pod.name))
|
||||
var/pilot = "None"
|
||||
var/passengers = list()
|
||||
if(my_pod.pilot)
|
||||
pilot = my_pod.pilot
|
||||
if(my_pod.passengers)
|
||||
for(var/mob/M in my_pod.passengers)
|
||||
passengers += M.name
|
||||
var/passengers_text = english_list(passengers, "None")
|
||||
|
||||
pods.Add(list(list("name" = podname, "podx" = my_pod.x, "pody" = my_pod.y, "podz" = my_pod.z, "pilot" = pilot, "passengers" = passengers_text)))
|
||||
|
||||
data["pods"] = pods
|
||||
return data
|
||||
@@ -710,18 +710,6 @@ to destroy them and players will be able to make replacements.
|
||||
/obj/item/stock_parts/micro_laser = 1,
|
||||
/obj/item/stack/sheet/glass = 1)
|
||||
|
||||
/obj/item/circuitboard/podfab
|
||||
board_name = "Spacepod Fabricator"
|
||||
build_path = /obj/machinery/mecha_part_fabricator/spacepod
|
||||
board_type = "machine"
|
||||
origin_tech = "programming=2;engineering=2"
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin = 2,
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stock_parts/micro_laser = 1,
|
||||
/obj/item/stack/sheet/glass = 1)
|
||||
|
||||
|
||||
/obj/item/circuitboard/clonepod
|
||||
board_name = "Clone Pod"
|
||||
build_path = /obj/machinery/clonepod
|
||||
|
||||
@@ -248,7 +248,6 @@
|
||||
/obj/item/reagent_containers/hypospray/CMO,
|
||||
/obj/item/clothing/accessory/medal/gold/captain,
|
||||
/obj/item/clothing/gloves/color/black/krav_maga/sec,
|
||||
/obj/item/spacepod_key,
|
||||
/obj/item/nullrod,
|
||||
/obj/item/key,
|
||||
/obj/item/door_remote,
|
||||
|
||||
@@ -55,6 +55,7 @@ GLOBAL_LIST_EMPTY(airlock_overlays)
|
||||
damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_N
|
||||
autoclose = TRUE
|
||||
explosion_block = 1
|
||||
hud_possible = list(DIAG_AIRLOCK_HUD)
|
||||
assemblytype = /obj/structure/door_assembly
|
||||
siemens_strength = 1
|
||||
flags_2 = RAD_PROTECT_CONTENTS_2 | RAD_NO_CONTAMINATE_2
|
||||
@@ -149,6 +150,10 @@ About the new airlock wires panel:
|
||||
if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_METAL)
|
||||
damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R
|
||||
update_icon()
|
||||
prepare_huds()
|
||||
for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds)
|
||||
diag_hud.add_to_hud(src)
|
||||
diag_hud_set_electrified()
|
||||
|
||||
/obj/machinery/door/airlock/proc/update_other_id()
|
||||
for(var/obj/machinery/door/airlock/A in GLOB.airlocks)
|
||||
@@ -292,6 +297,7 @@ About the new airlock wires panel:
|
||||
electrified_timer = addtimer(CALLBACK(src, .proc/electrify, 0), duration SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE)
|
||||
if(feedback && message)
|
||||
to_chat(user, message)
|
||||
diag_hud_set_electrified()
|
||||
|
||||
// shock user with probability prb (if all connections & power are working)
|
||||
// returns 1 if shocked, 0 otherwise
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/obj/structure/spacepoddoor
|
||||
name = "podlock"
|
||||
desc = "Why it no open!!!"
|
||||
icon = 'icons/effects/beam.dmi'
|
||||
icon_state = "n_beam"
|
||||
density = 0
|
||||
anchored = 1
|
||||
var/id = 1.0
|
||||
|
||||
/obj/structure/spacepoddoor/Initialize()
|
||||
..()
|
||||
air_update_turf(1)
|
||||
|
||||
/obj/structure/spacepoddoor/CanAtmosPass(turf/T)
|
||||
return 0
|
||||
|
||||
/obj/structure/spacepoddoor/Destroy()
|
||||
var/turf/T = get_turf(src)
|
||||
. = ..()
|
||||
T.air_update_turf(TRUE)
|
||||
|
||||
/obj/structure/spacepoddoor/CanPass(atom/movable/A, turf/T)
|
||||
if(istype(A, /obj/spacepod))
|
||||
return ..()
|
||||
else return 0
|
||||
@@ -502,6 +502,7 @@ Class Procs:
|
||||
"<span class='notice'>You apply some [O] at [src]'s damaged areas.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/proc/exchange_parts(mob/user, obj/item/storage/part_replacer/W)
|
||||
var/shouldplaysound = 0
|
||||
if((flags & NODECONSTRUCT))
|
||||
@@ -519,15 +520,23 @@ Class Procs:
|
||||
break
|
||||
for(var/obj/item/stock_parts/B in W.contents)
|
||||
if(istype(B, P) && istype(A, P))
|
||||
if(B.rating > A.rating)
|
||||
W.remove_from_storage(B, src)
|
||||
W.handle_item_insertion(A, 1)
|
||||
component_parts -= A
|
||||
component_parts += B
|
||||
B.loc = null
|
||||
to_chat(user, "<span class='notice'>[A.name] replaced with [B.name].</span>")
|
||||
shouldplaysound = 1
|
||||
break
|
||||
//If it's cell - check: 1) Max charge is better? 2) Max charge same but current charge better? - If both NO -> next content
|
||||
if(ispath(B.type, /obj/item/stock_parts/cell))
|
||||
var/obj/item/stock_parts/cell/tA = A
|
||||
var/obj/item/stock_parts/cell/tB = B
|
||||
if(!(tB.maxcharge > tA.maxcharge) && !((tB.maxcharge == tA.maxcharge) && (tB.charge > tA.charge)))
|
||||
continue
|
||||
//If it's not cell and not better -> next content
|
||||
else if(B.rating <= A.rating)
|
||||
continue
|
||||
W.remove_from_storage(B, src)
|
||||
W.handle_item_insertion(A, 1)
|
||||
component_parts -= A
|
||||
component_parts += B
|
||||
B.loc = null
|
||||
to_chat(user, "<span class='notice'>[A.name] replaced with [B.name].</span>")
|
||||
shouldplaysound = 1
|
||||
break
|
||||
RefreshParts()
|
||||
else
|
||||
to_chat(user, display_parts(user))
|
||||
|
||||
@@ -516,7 +516,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
|
||||
|
||||
var/list/targets = list() //list of primary targets
|
||||
var/list/secondarytargets = list() //targets that are least important
|
||||
var/static/things_to_scan = typecacheof(list(/obj/mecha, /obj/spacepod, /obj/vehicle, /mob/living))
|
||||
var/static/things_to_scan = typecacheof(list(/obj/mecha, /obj/vehicle, /mob/living))
|
||||
|
||||
for(var/A in typecache_filter_list(view(scan_range, src), things_to_scan))
|
||||
var/atom/AA = A
|
||||
@@ -528,10 +528,6 @@ GLOBAL_LIST_EMPTY(turret_icons)
|
||||
var/obj/mecha/ME = A
|
||||
assess_and_assign(ME.occupant, targets, secondarytargets)
|
||||
|
||||
if(istype(A, /obj/spacepod))
|
||||
var/obj/spacepod/SP = A
|
||||
assess_and_assign(SP.pilot, targets, secondarytargets)
|
||||
|
||||
if(istype(A, /obj/vehicle))
|
||||
var/obj/vehicle/T = A
|
||||
if(T.has_buckled_mobs())
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#define RCS_SHIP_LOG 10 // View Shipping Label Log
|
||||
|
||||
//Radio list
|
||||
#define ENGI_ROLES list("Atmospherics","Mechanic","Engineering","Chief Engineer's Desk","Telecoms Admin")
|
||||
#define ENGI_ROLES list("Atmospherics","Engineering","Chief Engineer's Desk","Telecoms Admin")
|
||||
#define SEC_ROLES list("Warden","Security","Brig Medbay","Head of Security's Desk")
|
||||
#define MISC_ROLES list("Bar","Chapel","Kitchen","Hydroponics","Janitorial")
|
||||
#define MED_ROLES list("Virology","Chief Medical Officer's Desk","Medbay")
|
||||
|
||||
@@ -98,9 +98,6 @@
|
||||
/obj/machinery/suit_storage_unit/security/secure
|
||||
secure = TRUE
|
||||
|
||||
/obj/machinery/suit_storage_unit/security/pod_pilot
|
||||
req_access = list(ACCESS_PILOT)
|
||||
|
||||
/obj/machinery/suit_storage_unit/security/hos
|
||||
name = "Head of Security's suit storage unit"
|
||||
suit_type = /obj/item/clothing/suit/space/hardsuit/security/hos
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
"Engine Technician" = "engradio",
|
||||
"Life Support Specialist" = "engradio",
|
||||
"Maintenance Technician" = "engradio",
|
||||
"Mechanic" = "engradio",
|
||||
"Station Engineer" = "engradio",
|
||||
// Central Command
|
||||
"Emergency Response Team Engineer" = "dsquadradio", // I know this says deathsquad but the class for responseteam is neon green. No.
|
||||
@@ -92,7 +91,6 @@
|
||||
"Internal Affairs Agent" = "secradio",
|
||||
"Magistrate" = "secradio",
|
||||
"Security Officer" = "secradio",
|
||||
"Security Pod Pilot" = "secradio",
|
||||
"Warden" = "secradio",
|
||||
// Supply
|
||||
"Quartermaster" = "supradio",
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
if(!is_teleport_allowed(z) && !admin_usage)
|
||||
to_chat(M, "You can't use this here.")
|
||||
return
|
||||
if(power_station && power_station.engaged && !panel_open && !blockAI(M) && !istype(M, /obj/spacepod))
|
||||
if(power_station && power_station.engaged && !panel_open && !blockAI(M))
|
||||
if(!teleport(M) && isliving(M)) // the isliving(M) is needed to avoid triggering errors if a spark bumps the telehub
|
||||
visible_message("<span class='warning'>[src] emits a loud buzz, as its teleport portal flickers and fails!</span>")
|
||||
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
for(var/datum/data/vending_product/R in (product_records + coin_records + hidden_records))
|
||||
var/obj/item/I = R.product_path
|
||||
var/pp = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-")
|
||||
imagelist[pp] = "[icon2base64(icon(initial(I.icon), initial(I.icon_state)))]"
|
||||
imagelist[pp] = "[icon2base64(icon(initial(I.icon), initial(I.icon_state), SOUTH, 1))]"
|
||||
if(LAZYLEN(slogan_list))
|
||||
// So not all machines speak at the exact same time.
|
||||
// The first time this machine says something will be at slogantime + this random value,
|
||||
@@ -1798,7 +1798,7 @@
|
||||
/obj/item/clothing/head/soft/sec = 4,
|
||||
/obj/item/clothing/head/soft/sec/corp = 4,
|
||||
/obj/item/clothing/suit/armor/secjacket = 4,
|
||||
/obj/item/clothing/suit/jacket/pilot = 2,
|
||||
/obj/item/clothing/suit/jacket/secbomber = 2,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/security = 4,
|
||||
/obj/item/clothing/gloves/color/black = 4,
|
||||
/obj/item/clothing/accessory/armband/sec = 6,
|
||||
|
||||
@@ -109,9 +109,7 @@
|
||||
H.apply_damage(10, BRUTE, "chest", H.run_armor_check(target_part, MELEE))
|
||||
|
||||
//blood splatters
|
||||
blood_color = H.dna.species.blood_color
|
||||
|
||||
new /obj/effect/temp_visual/dir_setting/bloodsplatter(H.drop_location(), splatter_dir, blood_color)
|
||||
new /obj/effect/temp_visual/dir_setting/bloodsplatter(H.drop_location(), splatter_dir, H.dna.species.blood_color)
|
||||
|
||||
//organs go everywhere
|
||||
if(target_part && prob(10 * drill_level))
|
||||
|
||||
@@ -460,39 +460,6 @@
|
||||
component_parts += new /obj/item/stack/sheet/glass(null)
|
||||
RefreshParts()
|
||||
|
||||
/**
|
||||
* # Spacepod Fabricator
|
||||
*
|
||||
* Spacepod variant of [/obj/machinery/mecha_part_fabricator].
|
||||
*/
|
||||
/obj/machinery/mecha_part_fabricator/spacepod
|
||||
name = "spacepod fabricator"
|
||||
allowed_design_types = PODFAB
|
||||
req_access = list(ACCESS_MECHANIC)
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/spacepod/New()
|
||||
..()
|
||||
QDEL_LIST(component_parts)
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/podfab(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/stack/sheet/glass(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/spacepod/Initialize(mapload)
|
||||
. = ..()
|
||||
categories = list(
|
||||
"Pod_Weaponry",
|
||||
"Pod_Armor",
|
||||
"Pod_Cargo",
|
||||
"Pod_Parts",
|
||||
"Pod_Frame",
|
||||
"Misc"
|
||||
)
|
||||
|
||||
/**
|
||||
* # Robotic Fabricator
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/// Ion trails for spacepods and other space-flying things
|
||||
/// Ion trails for jetpacks, ion thrusters and other space-flying things
|
||||
/obj/effect/particle_effect/ion_trails
|
||||
name = "ion trails"
|
||||
icon_state = "ion_trails"
|
||||
|
||||
@@ -307,9 +307,3 @@
|
||||
name = "80pc vaultdoor 20pc wall"
|
||||
result = list(/obj/machinery/door/airlock/hatch/syndicate/vault = 4,
|
||||
/turf/simulated/wall/mineral/plastitanium/nodiagonal = 1)
|
||||
|
||||
|
||||
/obj/effect/spawner/random_spawners/syndicate/layout/spacepod
|
||||
name = "50pc loot spacepod"
|
||||
result = list(/obj/spacepod/syndi = 1,
|
||||
/obj/spacepod/syndi/unlocked = 1)
|
||||
|
||||
@@ -5,8 +5,6 @@ GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/goonstation/effect
|
||||
|
||||
move_resist = null // Set in the Initialise depending on the item size. Unless it's overriden by a specific item
|
||||
var/discrete = 0 // used in item_attack.dm to make an item not show an attack message to viewers
|
||||
var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
|
||||
var/blood_overlay_color = null
|
||||
var/item_state = null
|
||||
var/lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
|
||||
var/righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
||||
|
||||
@@ -187,28 +187,5 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
// Update blood splatter
|
||||
if(blood_overlay)
|
||||
cut_overlay(blood_overlay)
|
||||
qdel(blood_overlay)
|
||||
add_blood_overlay(blood_overlay_color)
|
||||
playsound(loc, extend_sound, 50, TRUE)
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/melee/classic_baton/telescopic/blood_splatter_index()
|
||||
return "\ref[icon]-[icon_state]"
|
||||
|
||||
/obj/item/melee/classic_baton/telescopic/add_blood_overlay(color)
|
||||
var/index = blood_splatter_index()
|
||||
var/icon/blood_splatter_icon = GLOB.blood_splatter_icons[index]
|
||||
if(!blood_splatter_icon)
|
||||
blood_splatter_icon = icon(icon, icon_state)
|
||||
blood_splatter_icon.Blend("#ffffff", ICON_ADD)
|
||||
blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY)
|
||||
blood_splatter_icon = fcopy_rsc(blood_splatter_icon)
|
||||
GLOB.blood_splatter_icons[index] = blood_splatter_icon
|
||||
|
||||
blood_overlay = image(blood_splatter_icon)
|
||||
blood_overlay.color = color
|
||||
blood_overlay_color = color
|
||||
add_overlay(blood_overlay)
|
||||
|
||||
@@ -734,7 +734,7 @@
|
||||
registered_name = "HoS"
|
||||
icon_state = "HoS"
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_PILOT, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
|
||||
|
||||
@@ -762,7 +762,7 @@
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
|
||||
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/obj/item/card/id/clown
|
||||
name = "Pink ID"
|
||||
|
||||
@@ -231,8 +231,7 @@
|
||||
/obj/item/holosign_creator/security,
|
||||
/obj/item/melee/classic_baton/telescopic,
|
||||
/obj/item/restraints/legcuffs/bola,
|
||||
/obj/item/clothing/mask/gas/sechailer,
|
||||
/obj/item/spacepod_key)
|
||||
/obj/item/clothing/mask/gas/sechailer)
|
||||
|
||||
/obj/item/storage/belt/security/sec/populate_contents()
|
||||
new /obj/item/flashlight/seclite(src)
|
||||
|
||||
@@ -183,6 +183,7 @@
|
||||
*/
|
||||
/obj/item/twohanded/fireaxe // DEM AXES MAN, marker -Agouri
|
||||
icon_state = "fireaxe0"
|
||||
item_state = "fireaxe0"
|
||||
name = "fire axe"
|
||||
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
|
||||
force = 5
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/decalselection = input("Please select a decal") as null|anything in list("Atmospherics", "Bartender", "Barber", "Blueshield", "Brig Physician", "Captain",
|
||||
"Cargo", "Chief Engineer", "Chaplain", "Chef", "Chemist", "Civilian", "Clown", "CMO", "Coroner", "Detective", "Engineering", "Genetics", "HOP",
|
||||
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Mechanic", "Medical", "Mime", "Mining", "NT Representative", "Paramedic", "Pod Pilot",
|
||||
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Medical", "Mime", "Mining", "NT Representative", "Paramedic",
|
||||
"Prisoner", "Research Director", "Security", "Syndicate", "Therapist", "Virology", "Warden", "Xenobiology")
|
||||
if(!decalselection)
|
||||
return
|
||||
|
||||
@@ -94,9 +94,9 @@
|
||||
if(density)
|
||||
smooth = SMOOTH_FALSE
|
||||
clear_smooth_overlays()
|
||||
icon_state = "fwall_opening"
|
||||
flick("fwall_opening", src)
|
||||
else
|
||||
icon_state = "fwall_closing"
|
||||
flick("fwall_closing", src)
|
||||
|
||||
/obj/structure/falsewall/update_icon()
|
||||
if(density)
|
||||
@@ -297,6 +297,7 @@
|
||||
/obj/structure/falsewall/sandstone
|
||||
name = "sandstone wall"
|
||||
desc = "A wall with sandstone plating."
|
||||
icon = 'icons/turf/walls/sandstone_wall.dmi'
|
||||
icon_state = "sandstone"
|
||||
mineral = /obj/item/stack/sheet/mineral/sandstone
|
||||
walltype = /turf/simulated/wall/mineral/sandstone
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
if(!has_buckled_mobs())
|
||||
return
|
||||
var/mob/living/buckled_mob = buckled_mobs[1]
|
||||
if(istype(A, /obj/machinery/door))
|
||||
if(istype(A, /obj/machinery/door) || istype(A, /obj/machinery/gateway))
|
||||
A.Bumped(buckled_mob)
|
||||
|
||||
if(propelled)
|
||||
|
||||
@@ -508,6 +508,7 @@
|
||||
/obj/structure/window/reinforced/polarized
|
||||
name = "electrochromic window"
|
||||
desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it."
|
||||
glass_amount = 2
|
||||
var/id
|
||||
|
||||
/obj/machinery/button/windowtint
|
||||
@@ -674,8 +675,9 @@
|
||||
/obj/structure/window/full/reinforced/polarized
|
||||
name = "electrochromic window"
|
||||
desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it."
|
||||
glass_amount = 4
|
||||
var/id
|
||||
|
||||
|
||||
/obj/structure/window/full/reinforced/tinted
|
||||
name = "tinted window"
|
||||
desc = "It looks rather strong and opaque. Might take a few good hits to shatter it."
|
||||
|
||||
Reference in New Issue
Block a user