Merge branch 'yogstation13-master' into tribal-crafting-port

This commit is contained in:
nmajask
2022-05-12 19:38:50 -04:00
28 changed files with 144622 additions and 87290 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@
#define ROBOTICIST (1<<8)
#define AI_JF (1<<9)
#define CYBORG (1<<10)
#define BRIGPHYS (1<<11)
#define MEDSCI (1<<1)
@@ -23,7 +24,6 @@
#define DOCTOR (1<<4)
#define GENETICIST (1<<5)
#define VIROLOGIST (1<<6)
#define BRIGPHYS (1<<7)
#define CIVILIAN (1<<2)
@@ -62,27 +62,27 @@
#define JOB_DISPLAY_ORDER_WARDEN 4
#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 5
#define JOB_DISPLAY_ORDER_DETECTIVE 6
#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 7
#define JOB_DISPLAY_ORDER_STATION_ENGINEER 8
#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 9
#define JOB_DISPLAY_ORDER_SIGNAL_TECHNICIAN 10
#define JOB_DISPLAY_ORDER_AI 11
#define JOB_DISPLAY_ORDER_CYBORG 12
#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 13
#define JOB_DISPLAY_ORDER_SCIENTIST 14
#define JOB_DISPLAY_ORDER_ROBOTICIST 15
#define JOB_DISPLAY_ORDER_QUARTERMASTER 16
#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 17
#define JOB_DISPLAY_ORDER_SHAFT_MINER 18
#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 19
#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 20
#define JOB_DISPLAY_ORDER_CHEMIST 21
#define JOB_DISPLAY_ORDER_GENETICIST 22
#define JOB_DISPLAY_ORDER_VIROLOGIST 23
#define JOB_DISPLAY_ORDER_MINING_MEDIC 24
#define JOB_DISPLAY_ORDER_PARAMEDIC 25
#define JOB_DISPLAY_ORDER_PSYCHIATRIST 26
#define JOB_DISPLAY_ORDER_BRIG_PHYSICIAN 27
#define JOB_DISPLAY_ORDER_BRIG_PHYSICIAN 7
#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 8
#define JOB_DISPLAY_ORDER_STATION_ENGINEER 9
#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 10
#define JOB_DISPLAY_ORDER_SIGNAL_TECHNICIAN 11
#define JOB_DISPLAY_ORDER_AI 12
#define JOB_DISPLAY_ORDER_CYBORG 13
#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 14
#define JOB_DISPLAY_ORDER_SCIENTIST 15
#define JOB_DISPLAY_ORDER_ROBOTICIST 16
#define JOB_DISPLAY_ORDER_QUARTERMASTER 17
#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 18
#define JOB_DISPLAY_ORDER_SHAFT_MINER 19
#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 20
#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 21
#define JOB_DISPLAY_ORDER_CHEMIST 22
#define JOB_DISPLAY_ORDER_GENETICIST 23
#define JOB_DISPLAY_ORDER_VIROLOGIST 24
#define JOB_DISPLAY_ORDER_MINING_MEDIC 25
#define JOB_DISPLAY_ORDER_PARAMEDIC 26
#define JOB_DISPLAY_ORDER_PSYCHIATRIST 27
#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 28
#define JOB_DISPLAY_ORDER_BARTENDER 29
#define JOB_DISPLAY_ORDER_COOK 30

View File

@@ -118,12 +118,6 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th
user.update_body()
user.domutcheck()
// get rid of any scars from previous changeling-ing
for(var/i in user.all_scars)
var/datum/scar/iter_scar = i
if(iter_scar.fake)
qdel(iter_scar)
//vars hackery. not pretty, but better than the alternative.
for(var/slot in GLOB.slots)
if(istype(user.vars[slot], GLOB.slot2type[slot]) && !(chosen_prof.exists_list[slot])) //remove unnecessary flesh items
@@ -150,10 +144,6 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th
C.item_state = chosen_prof.item_state_list[slot]
if(equip)
user.equip_to_slot_or_del(C, GLOB.slot2slot[slot])
for(var/stored_scar_line in chosen_prof.stored_scars)
var/datum/scar/attempted_fake_scar = user.load_scar(stored_scar_line)
if(attempted_fake_scar)
attempted_fake_scar.fake = TRUE
user.regenerate_icons()
@@ -172,4 +162,4 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th
round_credits += "<br>"
round_credits += ..()
return round_credits
return round_credits

View File

@@ -0,0 +1,77 @@
// Overthrow gamemode, based on the sleeping agent antagonist.
/datum/game_mode/overthrow
name = "overthrow"
config_tag = "overthrow"
report_type = "overthrow"
antag_flag = ROLE_OVERTHROW
restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Brig Physician") //Yogs: Added Brig Physician
required_players = 20 // the core idea is of a swift, bloodless coup, so it shouldn't be as chaotic as revs.
required_enemies = 2 // minimum two teams, otherwise it's just nerfed revs.
recommended_enemies = 4
announce_span = "danger"
announce_text = "There are sleeping Syndicate agents on the station who are trying to stage a coup!\n\
<span class='danger'>Agents</span>: Accomplish your objectives, convert heads and targets, take control of the AI.\n\
<span class='notice'>Crew</span>: Do not let the agents succeed!"
var/list/initial_agents = list() // Why doesn't this exist at /game_mode level? Literally every gamemode has some sort of version for this, what the fuck
/datum/game_mode/overthrow/pre_setup()
if(CONFIG_GET(flag/protect_roles_from_antagonist))
restricted_jobs += protected_jobs
if(CONFIG_GET(flag/protect_assistant_from_antagonist))
restricted_jobs += "Assistant"
var/sleeping_agents = required_enemies + round(num_players()*0.05) // At 100 players, it'd be 2 + 5 = 7 teams existing.
for (var/i in 1 to sleeping_agents)
if (!antag_candidates.len)
break
var/datum/mind/sleeping_agent = antag_pick(antag_candidates)
antag_candidates -= sleeping_agent
initial_agents += sleeping_agent
sleeping_agent.restricted_roles = restricted_jobs
sleeping_agent.special_role = ROLE_OVERTHROW
if(initial_agents.len < required_enemies)
setup_error = "Not enough initial sleeping agents candidates"
return FALSE
return TRUE
/datum/game_mode/overthrow/post_setup()
for(var/i in initial_agents) // each agent will have its own team.
var/datum/mind/agent = i
var/datum/antagonist/overthrow/O = agent.add_antag_datum(/datum/antagonist/overthrow) // create_team called on_gain will create the team
O.equip_initial_overthrow_agent()
return ..()
/datum/game_mode/overthrow/generate_report()
return "Some sleeping agents have managed to get aboard. Their objective is to stage a coup and take over the station stealthly."
// Calculates points for each team and displays the winners.
/datum/game_mode/overthrow/special_report() // so many for loops, I am deeply sorry
var/list/teams = list()
for(var/datum/antagonist/overthrow/I in GLOB.antagonists)
var/datum/team/overthrow/Oteam = I.team
if(istype(Oteam)) // same
teams |= Oteam
var/max_points = 0 // the maximum amount of points reached
for(var/j in teams)
var/datum/team/T = j
var/points = 0 // Sum of points of all the objectives done
for(var/k in T.objectives)
var/datum/objective/overthrow/obj = k
if(istype(obj))
points += obj.get_points()
if(max_points < points)
max_points = points
teams[T] = points
// Now we will have a list of team=points and a max_points var. Let's fetch all the teams with points=maxpoints and display them as winner. This code allows multiple teams to win if they both achieved
// the same amount of points and they got the most points out of all the teams.
var/list/winners = list()
for(var/l in teams)
var/datum/team/Tagain = l
if(teams[Tagain] == max_points)
winners += Tagain.name
return "<span class='greentext big'>The [english_list(winners)] team[winners.len > 1 ? "s tied" : " won"] with [max_points] points!</span>"

View File

@@ -38,6 +38,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
jobs["Warden"] = 11
jobs["Security Officer"] = 12
jobs["Detective"] = 13
jobs["Brig Physician"] = 14
jobs["Chief Medical Officer"] = 20
jobs["Chemist"] = 21
jobs["Geneticist"] = 22

View File

@@ -9,7 +9,6 @@
new /obj/item/pet_carrier(src)
new /obj/item/cartridge/captain(src)
new /obj/item/storage/box/silver_ids(src)
new /obj/item/clothing/neck/cloak/cap(src)
new /obj/item/radio/headset/heads/captain/alt(src)
new /obj/item/radio/headset/heads/captain(src)
new /obj/item/restraints/handcuffs/cable/zipties(src)
@@ -31,7 +30,6 @@
new /obj/item/radio/headset/heads/hop(src)
new /obj/item/storage/box/ids(src)
new /obj/item/storage/box/ids(src)
new /obj/item/clothing/neck/cloak/hop(src)
new /obj/item/megaphone/command(src)
new /obj/item/clothing/suit/armor/vest/alt(src)
new /obj/item/assembly/flash/handheld(src)
@@ -44,7 +42,7 @@
new /obj/item/storage/photo_album/HoP(src)
new /obj/item/clipboard/yog/paperwork/hop(src)
new /obj/item/gun/energy/e_gun/mini(src) //hop doesn't get a proper gun
new /obj/item/storage/backpack/duffelbag/clothing/hop(src)
new /obj/item/storage/backpack/duffelbag/hop/clothing(src)
/obj/structure/closet/secure_closet/hos
name = "\proper head of security's locker"
@@ -57,7 +55,6 @@
new /obj/item/radio/headset/heads/hos/alt(src)
new /obj/item/radio/headset/heads/hos(src)
new /obj/item/storage/lockbox/medal/sec(src)
new /obj/item/clothing/neck/cloak/hos(src)
new /obj/item/megaphone/sec(src)
new /obj/item/holosign_creator/security(src)
new /obj/item/storage/lockbox/loyalty(src)
@@ -72,7 +69,7 @@
new /obj/item/storage/photo_album/HoS(src)
new /obj/item/clipboard/yog/paperwork/hos(src)
new /obj/item/radio/security(src)
new /obj/item/storage/backpack/duffelbag/clothing/sec/head(src)
new /obj/item/storage/backpack/duffelbag/sec/head/clothing(src)
/obj/structure/closet/secure_closet/warden
name = "\proper warden's locker"
@@ -96,7 +93,7 @@
new /obj/item/gun/ballistic/shotgun/automatic/combat/compact(src)
new /obj/item/clipboard/yog/paperwork/warden(src)
new /obj/item/radio/security(src)
new /obj/item/storage/backpack/duffelbag/clothing/sec/warden(src)
new /obj/item/storage/backpack/duffelbag/sec/warden/clothing(src)
/obj/structure/closet/secure_closet/security
name = "security officer's locker"
@@ -175,7 +172,7 @@
new /obj/item/storage/belt/holster/full(src)
new /obj/item/pinpointer/crew(src)
new /obj/item/twohanded/binoculars(src)
new /obj/item/storage/backpack/duffelbag/clothing/sec/detective(src)
new /obj/item/storage/backpack/duffelbag/sec/detective/clothing(src)
/obj/structure/closet/secure_closet/injection
name = "lethal injections"
@@ -306,7 +303,7 @@
/obj/structure/closet/secure_closet/physician/PopulateContents()
..()
new /obj/item/storage/backpack/duffelbag/clothing/sec/physician(src)
new /obj/item/storage/backpack/duffelbag/sec/physician/clothing(src)
new /obj/item/cartridge/medical(src)
new /obj/item/radio/headset/headset_medsec(src)
new /obj/item/storage/belt/medical(src)
@@ -315,4 +312,3 @@
new /obj/item/storage/box/bodybags(src)
new /obj/item/tank/internals/anesthetic(src)
new /obj/item/clothing/mask/breath/medical(src)
new /obj/item/defibrillator/loaded(src)

View File

@@ -1,132 +1,112 @@
/datum/skillcape
var/name = ""
var/minutes = 18000
var/job
var/special = FALSE //If its TRUE it wont have a related job, it's for the switch statement in preferences.dm
var/capetype = "" // goes along with special, for the switch statement.
var/path = /obj/item/clothing/neck/skillcape
var/id
var/name = ""
var/minutes = 18000
var/job
var/special = FALSE //If its TRUE it wont have a related job, it's for the switch statement in preferences.dm
var/capetype = "" // goes along with special, for the switch statement.
var/path = /obj/item/clothing/neck/skillcape
/datum/skillcape/trimmed
name = "trimmed cape of skill"
minutes = 30000
path = /obj/item/clothing/neck/skillcape/trimmed
name = "trimmed cape of skill"
minutes = 30000
path = /obj/item/clothing/neck/skillcape/trimmed
/datum/skillcape/maximum
name = "cape of the absolute pinnacle of beings"
special = TRUE
capetype = "max"
path = /obj/item/clothing/neck/skillcape/maximum
id = "max"
name = "cape of the absolute pinnacle of beings"
special = TRUE
capetype = "max"
path = /obj/item/clothing/neck/skillcape/maximum
/datum/skillcape/captain
name = "cape of the captain"
job = "Captain"
path = /obj/item/clothing/neck/skillcape/captain
id = "cap"
name = "cape of the captain"
job = "Captain"
path = /obj/item/clothing/neck/skillcape/captain
/datum/skillcape/trimmed/captain
name = "cape of the grand commander"
job = "Captain"
path = /obj/item/clothing/neck/skillcape/trimmed/captain
id = "cap_trimmed"
name = "cape of the grand commander"
job = "Captain"
path = /obj/item/clothing/neck/skillcape/trimmed/captain
/datum/skillcape/hop
name = "cape of the head of personel"
job = "Head of Personnel"
path = /obj/item/clothing/neck/skillcape/hop
id = "hop"
name = "cape of the head of personel"
job = "Head of Personnel"
path = /obj/item/clothing/neck/skillcape/hop
/datum/skillcape/trimmed/hop
name = "cape of the grand torchbearer"
job = "Head of Personnel"
path = /obj/item/clothing/neck/skillcape/trimmed/hop
id = "hop_trimmed"
name = "cape of the grand torchbearer"
job = "Head of Personnel"
path = /obj/item/clothing/neck/skillcape/trimmed/hop
/datum/skillcape/hos
name = "cape of the head of security"
job = "Head of Security"
path = /obj/item/clothing/neck/skillcape/hos
id = "hos"
name = "cape of the head of security"
job = "Head of Security"
path = /obj/item/clothing/neck/skillcape/hos
/datum/skillcape/trimmed/hos
name = "cape of the grand executor"
job = "Head of Security"
path = /obj/item/clothing/neck/skillcape/trimmed/hos
id = "hos_trimmed"
name = "cape of the grand executor"
job = "Head of Security"
path = /obj/item/clothing/neck/skillcape/trimmed/hos
/datum/skillcape/chiefengineer
name = "cape of the chief engineer"
job = "Chief Engineer"
path = /obj/item/clothing/neck/skillcape/chiefengineer
id = "ce"
name = "cape of the chief engineer"
job = "Chief Engineer"
path = /obj/item/clothing/neck/skillcape/chiefengineer
/datum/skillcape/trimmed/chiefengineer
name = "cape of the grand constructor"
job = "Chief Engineer"
path = /obj/item/clothing/neck/skillcape/trimmed/chiefengineer
id = "ce_trimmed"
name = "cape of the grand constructor"
job = "Chief Engineer"
path = /obj/item/clothing/neck/skillcape/trimmed/chiefengineer
/datum/skillcape/researchdirector
name = "cape of the research director"
job = "Research Director"
path = /obj/item/clothing/neck/skillcape/researchdirector
id = "rd"
name = "cape of the research director"
job = "Research Director"
path = /obj/item/clothing/neck/skillcape/researchdirector
/datum/skillcape/trimmed/researchdirector
name = "cape of the grand scholar"
job = "Research Director"
path = /obj/item/clothing/neck/skillcape/trimmed/researchdirector
id = "rd_trimmed"
name = "cape of the grand scholar"
job = "Research Director"
path = /obj/item/clothing/neck/skillcape/trimmed/researchdirector
/datum/skillcape/cmo
name = "cape of the chief medical officer"
job = "Chief Medical Officer"
path = /obj/item/clothing/neck/skillcape/cmo
id = "cmo"
name = "cape of the chief medical officer"
job = "Chief Medical Officer"
path = /obj/item/clothing/neck/skillcape/cmo
/datum/skillcape/trimmed/cmo
name = "cape of the grand surgeon"
job = "Chief Medical Officer"
path = /obj/item/clothing/neck/skillcape/trimmed/cmo
id = "cmo_trimmed"
name = "cape of the grand surgeon"
job = "Chief Medical Officer"
path = /obj/item/clothing/neck/skillcape/trimmed/cmo
/datum/skillcape/warden
name = "cape of the warden"
job = "Warden"
path = /obj/item/clothing/neck/skillcape/warden
id = "warden"
name = "cape of the warden"
job = "Warden"
path = /obj/item/clothing/neck/skillcape/warden
/datum/skillcape/trimmed/warden
name = "cape of the grand warden"
job = "Warden"
path = /obj/item/clothing/neck/skillcape/trimmed/warden
id = "warden_trimmed"
name = "cape of the grand warden"
job = "Warden"
path = /obj/item/clothing/neck/skillcape/trimmed/warden
/datum/skillcape/security
name = "cape of the security officer"
job = "Security Officer"
path = /obj/item/clothing/neck/skillcape/security
id = "security"
name = "cape of the security officer"
job = "Security Officer"
path = /obj/item/clothing/neck/skillcape/security
/datum/skillcape/trimmed/security
name = "cape of the grand security officer"
job = "Security Officer"
path = /obj/item/clothing/neck/skillcape/trimmed/security
id = "security_trimmed"
name = "cape of the grand security officer"
job = "Security Officer"
path = /obj/item/clothing/neck/skillcape/trimmed/security
/datum/skillcape/detective
name = "cape of the detective"
job = "Detective"
path = /obj/item/clothing/neck/skillcape/detective
id = "detective"
name = "cape of the detective"
job = "Detective"
path = /obj/item/clothing/neck/skillcape/detective
/datum/skillcape/trimmed/detective
name = "cape of the grand detective"
job = "Detective"
path = /obj/item/clothing/neck/skillcape/trimmed/detective
id = "detective_trimmed"
name = "cape of the grand detective"
job = "Detective"
path = /obj/item/clothing/neck/skillcape/trimmed/detective
/datum/skillcape/physician
name = "cape of the brig physician"
@@ -139,327 +119,273 @@
path = /obj/item/clothing/neck/skillcape/trimmed/physician
/datum/skillcape/signaltech
name = "cape of the signal technician"
job = "Signal Technician"
path = /obj/item/clothing/neck/skillcape/signaltech
id = "signaltech"
name = "cape of the signal technician"
job = "Signal Technician"
path = /obj/item/clothing/neck/skillcape/signaltech
/datum/skillcape/trimmed/signaltech
name = "cape of the grand signal technician"
job = "Signal Technician"
path = /obj/item/clothing/neck/skillcape/trimmed/signaltech
id = "signaltech_trimmed"
name = "cape of the grand signal technician"
job = "Signal Technician"
path = /obj/item/clothing/neck/skillcape/trimmed/signaltech
/datum/skillcape/atmos
name = "cape of the atmospheric technician"
job = "Atmospheric Technician"
path = /obj/item/clothing/neck/skillcape/atmos
id = "atmos"
name = "cape of the atmospheric technician"
job = "Atmospheric Technician"
path = /obj/item/clothing/neck/skillcape/atmos
/datum/skillcape/trimmed/atmos
name = "cape of the grand atmospheric technician"
job = "Atmospheric Technician"
path = /obj/item/clothing/neck/skillcape/trimmed/atmos
id = "atmos_trimmed"
name = "cape of the grand atmospheric technician"
job = "Atmospheric Technician"
path = /obj/item/clothing/neck/skillcape/trimmed/atmos
/datum/skillcape/engineer
name = "cape of the station engineer"
job = "Station Engineer"
path = /obj/item/clothing/neck/skillcape/engineer
id = "engineer"
name = "cape of the station engineer"
job = "Station Engineer"
path = /obj/item/clothing/neck/skillcape/engineer
/datum/skillcape/trimmed/engineer
name = "cape of the grand station engineer"
job = "Station Engineer"
path = /obj/item/clothing/neck/skillcape/trimmed/engineer
id = "engineer_trimmed"
name = "cape of the grand station engineer"
job = "Station Engineer"
path = /obj/item/clothing/neck/skillcape/trimmed/engineer
/datum/skillcape/science
name = "cape of the scientist"
job = "Scientist"
path = /obj/item/clothing/neck/skillcape/science
id = "science"
name = "cape of the scientist"
job = "Scientist"
path = /obj/item/clothing/neck/skillcape/science
/datum/skillcape/trimmed/science
name = "cape of the grand scientist"
job = "Scientist"
path = /obj/item/clothing/neck/skillcape/trimmed/science
id = "science_trimmed"
name = "cape of the grand scientist"
job = "Scientist"
path = /obj/item/clothing/neck/skillcape/trimmed/science
/datum/skillcape/robo
name = "cape of the roboticist"
job = "Roboticist"
path = /obj/item/clothing/neck/skillcape/robo
id = "robo"
name = "cape of the roboticist"
job = "Roboticist"
path = /obj/item/clothing/neck/skillcape/robo
/datum/skillcape/trimmed/robo
name = "cape of the grand roboticist"
job = "Roboticist"
path = /obj/item/clothing/neck/skillcape/trimmed/robo
id = "robo_trimmed"
name = "cape of the grand roboticist"
job = "Roboticist"
path = /obj/item/clothing/neck/skillcape/trimmed/robo
/datum/skillcape/psych
name = "cape of the psychiatrist"
job = "Psychiatrist"
path = /obj/item/clothing/neck/skillcape/psych
id = "psych"
name = "cape of the psychiatrist"
job = "Psychiatrist"
path = /obj/item/clothing/neck/skillcape/psych
/datum/skillcape/trimmed/psych
name = "cape of the grand psychiatrist"
job = "Psychiatrist"
path = /obj/item/clothing/neck/skillcape/trimmed/psych
id = "psych_trimmed"
name = "cape of the grand psychiatrist"
job = "Psychiatrist"
path = /obj/item/clothing/neck/skillcape/trimmed/psych
/datum/skillcape/paramedic
name = "cape of the paramedic"
job = "Paramedic"
path = /obj/item/clothing/neck/skillcape/paramedic
id = "psych"
name = "cape of the paramedic"
job = "Paramedic"
path = /obj/item/clothing/neck/skillcape/paramedic
/datum/skillcape/trimmed/paramedic
name = "cape of the grand paramedic"
job = "Paramedic"
path = /obj/item/clothing/neck/skillcape/trimmed/paramedic
id = "psych_trimmed"
name = "cape of the grand paramedic"
job = "Paramedic"
path = /obj/item/clothing/neck/skillcape/trimmed/paramedic
/datum/skillcape/gene
name = "cape of the geneticist"
job = "Geneticist"
path = /obj/item/clothing/neck/skillcape/gene
id = "gene"
name = "cape of the geneticist"
job = "Geneticist"
path = /obj/item/clothing/neck/skillcape/gene
/datum/skillcape/trimmed/gene
name = "cape of the grand geneticist"
job = "Geneticist"
path = /obj/item/clothing/neck/skillcape/trimmed/gene
id = "gene_trimmed"
name = "cape of the grand geneticist"
job = "Geneticist"
path = /obj/item/clothing/neck/skillcape/trimmed/gene
/datum/skillcape/viro
name = "cape of the virologist"
job = "Virologist"
path = /obj/item/clothing/neck/skillcape/viro
id = "viro"
name = "cape of the virologist"
job = "Virologist"
path = /obj/item/clothing/neck/skillcape/viro
/datum/skillcape/trimmed/viro
name = "cape of the grand virologist"
job = "Virologist"
path = /obj/item/clothing/neck/skillcape/trimmed/viro
id = "viro_trimmed"
name = "cape of the grand virologist"
job = "Virologist"
path = /obj/item/clothing/neck/skillcape/trimmed/viro
/datum/skillcape/chem
name = "cape of the chemist"
job = "Chemist"
path = /obj/item/clothing/neck/skillcape/chem
id = "chem"
name = "cape of the chemist"
job = "Chemist"
path = /obj/item/clothing/neck/skillcape/chem
/datum/skillcape/trimmed/chem
name = "cape of the grand chemist"
job = "Chemist"
path = /obj/item/clothing/neck/skillcape/trimmed/chem
id = "chem_trimmed"
name = "cape of the grand chemist"
job = "Chemist"
path = /obj/item/clothing/neck/skillcape/trimmed/chem
/datum/skillcape/doctor
name = "cape of the doctor"
job = "Medical Doctor"
path = /obj/item/clothing/neck/skillcape/doctor
id = "doctor"
name = "cape of the doctor"
job = "Medical Doctor"
path = /obj/item/clothing/neck/skillcape/doctor
/datum/skillcape/trimmed/doctor
name = "cape of the grand doctor"
job = "Medical Doctor"
path = /obj/item/clothing/neck/skillcape/trimmed/doctor
id = "doctor_trimmed"
name = "cape of the grand doctor"
job = "Medical Doctor"
path = /obj/item/clothing/neck/skillcape/trimmed/doctor
/datum/skillcape/minemedic
name = "cape of the mining medic"
job = "Mining Medic"
path = /obj/item/clothing/neck/skillcape/minemedic
id = "minemeic"
name = "cape of the mining medic"
job = "Mining Medic"
path = /obj/item/clothing/neck/skillcape/minemedic
/datum/skillcape/trimmed/minemedic
name = "cape of the grand minic medic"
job = "Mining Medic"
path = /obj/item/clothing/neck/skillcape/trimmed/minemedic
id = "minemeic_trimmed"
name = "cape of the grand mining medic"
job = "Mining Medic"
path = /obj/item/clothing/neck/skillcape/trimmed/minemedic
/datum/skillcape/mining
name = "cape of the miner"
job = "Shaft Miner"
path = /obj/item/clothing/neck/skillcape/mining
id = "mining"
name = "cape of the miner"
job = "Shaft Miner"
path = /obj/item/clothing/neck/skillcape/mining
/datum/skillcape/trimmed/mining
name = "cape of the grand miner"
job = "Shaft Miner"
path = /obj/item/clothing/neck/skillcape/trimmed/mining
id = "mining_trimmed"
name = "cape of the grand miner"
job = "Shaft Miner"
path = /obj/item/clothing/neck/skillcape/trimmed/mining
/datum/skillcape/cargo
name = "cape of the cargo technician"
job = "Cargo Technician"
path = /obj/item/clothing/neck/skillcape/cargo
id = "cargo"
name = "cape of the cargo technician"
job = "Cargo Technician"
path = /obj/item/clothing/neck/skillcape/cargo
/datum/skillcape/trimmed/cargo
name = "cape of the grand cargo technician"
job = "Cargo Technician"
path = /obj/item/clothing/neck/skillcape/trimmed/cargo
id = "cargo_trimmed"
name = "cape of the grand cargo technician"
job = "Cargo Technician"
path = /obj/item/clothing/neck/skillcape/trimmed/cargo
/datum/skillcape/quartermaster
name = "cape of the quartermaster"
job = "Quartermaster"
path = /obj/item/clothing/neck/skillcape/quartermaster
id = "qm"
name = "cape of the quartermaster"
job = "Quartermaster"
path = /obj/item/clothing/neck/skillcape/quartermaster
/datum/skillcape/trimmed/quartermaster
name = "cape of the grand quartermaster"
job = "Quartermaster"
path = /obj/item/clothing/neck/skillcape/trimmed/quartermaster
id = "qm_trimmed"
name = "cape of the grand quartermaster"
job = "Quartermaster"
path = /obj/item/clothing/neck/skillcape/trimmed/quartermaster
/datum/skillcape/tourist
name = "cape of the tourist"
job = "Tourist"
path = /obj/item/clothing/neck/skillcape/tourist
id = "tourist"
name = "cape of the tourist"
job = "Tourist"
path = /obj/item/clothing/neck/skillcape/tourist
/datum/skillcape/trimmed/tourist
name = "cape of the grand tourist"
job = "Tourist"
path = /obj/item/clothing/neck/skillcape/trimmed/tourist
id = "tourist_trimmed"
name = "cape of the grand tourist"
job = "Tourist"
path = /obj/item/clothing/neck/skillcape/trimmed/tourist
/datum/skillcape/assistant
name = "cape of the greytider"
job = "Assistant"
path = /obj/item/clothing/neck/skillcape/assistant
id = "assistant"
name = "cape of the greytider"
job = "Assistant"
path = /obj/item/clothing/neck/skillcape/assistant
/datum/skillcape/trimmed/assistant
name = "cape of the grand greytider"
job = "Assistant"
path = /obj/item/clothing/neck/skillcape/trimmed/assistant
id = "assistant_trimmed"
name = "cape of the grand greytider"
job = "Assistant"
path = /obj/item/clothing/neck/skillcape/trimmed/assistant
/datum/skillcape/clown
name = "cape of the clown"
job = "Clown"
path = /obj/item/clothing/neck/skillcape/clown
id = "clown"
name = "cape of the clown"
job = "Clown"
path = /obj/item/clothing/neck/skillcape/clown
/datum/skillcape/trimmed/clown
name = "cape of the grand clown"
job = "Clown"
path = /obj/item/clothing/neck/skillcape/trimmed/clown
id = "clown_trimmed"
name = "cape of the grand clown"
job = "Clown"
path = /obj/item/clothing/neck/skillcape/trimmed/clown
/datum/skillcape/mime
name = "cape of the mime"
job = "Mime"
path = /obj/item/clothing/neck/skillcape/mime
id = "mime"
name = "cape of the mime"
job = "Mime"
path = /obj/item/clothing/neck/skillcape/mime
/datum/skillcape/trimmed/mime
name = "cape of the grand mime"
job = "Mime"
path = /obj/item/clothing/neck/skillcape/trimmed/mime
id = "mime_trimmed"
name = "cape of the grand mime"
job = "Mime"
path = /obj/item/clothing/neck/skillcape/trimmed/mime
/datum/skillcape/chaplain
name = "cape of the chaplain"
job = "Chaplain"
path = /obj/item/clothing/neck/skillcape/chaplain
id = "chaplain"
name = "cape of the chaplain"
job = "Chaplain"
path = /obj/item/clothing/neck/skillcape/chaplain
/datum/skillcape/trimmed/chaplain
name = "cape of the grand chaplain"
job = "Chaplain"
path = /obj/item/clothing/neck/skillcape/trimmed/chaplain
id = "chaplain_trimmed"
name = "cape of the grand chaplain"
job = "Chaplain"
path = /obj/item/clothing/neck/skillcape/trimmed/chaplain
/datum/skillcape/curator
name = "cape of the curator"
job = "Curator"
path = /obj/item/clothing/neck/skillcape/curator
id = "curator"
name = "cape of the curator"
job = "Curator"
path = /obj/item/clothing/neck/skillcape/curator
/datum/skillcape/trimmed/curator
name = "cape of the grand curator"
job = "Curator"
path = /obj/item/clothing/neck/skillcape/trimmed/curator
id = "curator_trimmed"
name = "cape of the grand curator"
job = "Curator"
path = /obj/item/clothing/neck/skillcape/trimmed/curator
/datum/skillcape/lawyer
name = "cape of the lawyer"
job = "Lawyer"
path = /obj/item/clothing/neck/skillcape/lawyer
id = "lawyer"
name = "cape of the lawyer"
job = "Lawyer"
path = /obj/item/clothing/neck/skillcape/lawyer
/datum/skillcape/trimmed/lawyer
name = "cape of the grand lawyer"
job = "Lawyer"
path = /obj/item/clothing/neck/skillcape/trimmed/lawyer
id = "lawyer_trimmed"
name = "cape of the grand lawyer"
job = "Lawyer"
path = /obj/item/clothing/neck/skillcape/trimmed/lawyer
/datum/skillcape/clerk
name = "cape of the clerk"
job = "Clerk"
path = /obj/item/clothing/neck/skillcape/clerk
id = "clerk"
name = "cape of the clerk"
job = "Clerk"
path = /obj/item/clothing/neck/skillcape/clerk
/datum/skillcape/trimmed/clerk
name = "cape of the grand clerk"
job = "Clerk"
path = /obj/item/clothing/neck/skillcape/trimmed/clerk
id = "clerk_trimmed"
name = "cape of the grand clerk"
job = "Clerk"
path = /obj/item/clothing/neck/skillcape/trimmed/clerk
/datum/skillcape/janitor
name = "cape of the janitor"
job = "Janitor"
path = /obj/item/clothing/neck/skillcape/janitor
id = "janitor"
name = "cape of the janitor"
job = "Janitor"
path = /obj/item/clothing/neck/skillcape/janitor
/datum/skillcape/trimmed/janitor
name = "cape of the grand janitor"
job = "Janitor"
path = /obj/item/clothing/neck/skillcape/trimmed/janitor
id = "janitor_trimmed"
name = "cape of the grand janitor"
job = "Janitor"
path = /obj/item/clothing/neck/skillcape/trimmed/janitor
/datum/skillcape/bartender
name = "cape of the bartender"
job = "Bartender"
path = /obj/item/clothing/neck/skillcape/bartender
id = "bartender"
name = "cape of the bartender"
job = "Bartender"
path = /obj/item/clothing/neck/skillcape/bartender
/datum/skillcape/trimmed/bartender
name = "cape of the grand bartender"
job = "Bartender"
path = /obj/item/clothing/neck/skillcape/trimmed/bartender
id = "bartender_trimmed"
name = "cape of the grand bartender"
job = "Bartender"
path = /obj/item/clothing/neck/skillcape/trimmed/bartender
/datum/skillcape/cook
name = "cape of the cook"
job = "Cook"
path = /obj/item/clothing/neck/skillcape/cook
id = "cook"
name = "cape of the cook"
job = "Cook"
path = /obj/item/clothing/neck/skillcape/cook
/datum/skillcape/trimmed/cook
name = "cape of the grand cook"
job = "Cook"
path = /obj/item/clothing/neck/skillcape/trimmed/cook
id = "cook_trimmed"
name = "cape of the grand cook"
job = "Cook"
path = /obj/item/clothing/neck/skillcape/trimmed/cook
/datum/skillcape/botany
name = "cape of the botanist"
job = "Botanist"
path = /obj/item/clothing/neck/skillcape/botany
id = "botany"
name = "cape of the botanist"
job = "Botanist"
path = /obj/item/clothing/neck/skillcape/botany
/datum/skillcape/trimmed/botany
name = "cape of the grand botanist"
job = "Botanist"
path = /obj/item/clothing/neck/skillcape/trimmed/botany
id = "botany_trimmed"
name = "cape of the grand botanist"
job = "Botanist"
path = /obj/item/clothing/neck/skillcape/trimmed/botany

View File

@@ -1,5 +1,5 @@
/// returns TRUE if this mob has sufficient access to use this object
//returns TRUE if this mob has sufficient access to use this object
/obj/proc/allowed(mob/M)
//check if it doesn't require any access at all
if(src.check_access(null))
@@ -29,21 +29,12 @@
return TRUE
return FALSE
/// Get the accesses on the item
/obj/item/proc/GetAccess()
return list()
/// Get the ID in the object, used for PDAs
/obj/item/proc/GetID()
return null
/obj/item/proc/RemoveID()
return null
/obj/item/proc/InsertID()
return FALSE
/// Convert a text string to a list of accesses
/obj/proc/text2access(access_text)
. = list()
if(!access_text)
@@ -54,7 +45,7 @@
if(n)
. += n
/// Generates access from strings, Call this before using req_access or req_one_access directly
//Call this before using req_access or req_one_access directly
/obj/proc/gen_access()
//These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system.
if(!req_access)
@@ -66,11 +57,10 @@
for(var/b in text2access(req_one_access_txt))
req_one_access += b
/// Check if an item has access to this object
// Check if an item has access to this object
/obj/proc/check_access(obj/item/I)
return check_access_list(I ? I.GetAccess() : null)
/// Check if an access list has sufficient access
/obj/proc/check_access_list(list/access_list)
gen_access()
@@ -94,11 +84,9 @@
return FALSE
return TRUE
/// Checks ntnet access
/obj/proc/check_access_ntnet(datum/netdata/data)
return check_access_list(data.passkey)
/// Get access for centcom job
/proc/get_centcom_access(job)
switch(job)
if("VIP Guest")
@@ -136,7 +124,6 @@
if("HONK Squad Trooper")
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE)
/// Gets all station access
/proc/get_all_accesses()
return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT,
ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD,
@@ -151,17 +138,9 @@
ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING, ACCESS_TCOM_ADMIN, ACCESS_PARAMEDIC, ACCESS_MANUFACTURING, ACCESS_BRIG_PHYS) //YOGS - yogs jobs
/// Gets all centcom accesses
/proc/get_all_centcom_access()
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN)
/// Gets all accesses between 1 and 500
/proc/get_debug_access()
. = list()
for(var/i = 1; i <= 500; i++)
. += i
/// Gets access for ERT
/proc/get_ert_access(class)
switch(class)
if("commander")
@@ -173,11 +152,9 @@
if("med")
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING)
/// Gets all syndicate access
/proc/get_all_syndicate_access()
return list(ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER)
/// Gets access from region ID
/proc/get_region_accesses(code)
switch(code)
if(0)
@@ -185,9 +162,9 @@
if(1) //station general
return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER, ACCESS_MANUFACTURING)
if(2) //security
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_HOS)
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_HOS, ACCESS_BRIG_PHYS) //Yogs: Yog jobs
if(3) //medbay
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_CMO, ACCESS_PARAMEDIC, ACCESS_BRIG_PHYS) // yogs - Yog jobs
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_CMO, ACCESS_PARAMEDIC) // yogs - Yog jobs
if(4) //research
return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MECH_SCIENCE, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK, ACCESS_AI_UPLOAD)
if(5) //engineering and maintenance
@@ -197,7 +174,6 @@
if(7) //command
return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_VAULT)
/// Gets the name from region ID
/proc/get_region_accesses_name(code)
switch(code)
if(0)
@@ -217,7 +193,6 @@
if(7) //command
return "Command"
/// Gets teh description for an access
/proc/get_access_desc(A)
switch(A)
if(ACCESS_CARGO)
@@ -359,17 +334,8 @@
return "Clerk"
if(ACCESS_BRIG_PHYS)
return "Brig Physician"
if(ACCESS_MECH_FREEMINER)
return "Freeminer Mech"
if(ACCESS_FREEMINER)
return "Freeminer"
if(ACCESS_FREEMINER_ENGINEER)
return "Freeminer Engineer"
if(ACCESS_FREEMINER_CAPTAIN)
return "Freeminer Captain"
// yogs end
/// Get descriptions for centcom accesses
/proc/get_centcom_access_desc(A)
switch(A)
if(ACCESS_CENT_GENERAL)
@@ -391,7 +357,6 @@
if(ACCESS_CENT_BAR)
return "Code Scotch"
/// Gets all jobs
/proc/get_all_jobs()
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
"Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer",
@@ -401,26 +366,20 @@
"Signal Technician", "Mining Medic", "Paramedic", "Psychiatrist", "Clerk", "Tourist", "Space Bartender", "Artist", "Brig Physician")
// yogs end
/// Gets all jobs with hud icons
/proc/get_all_job_icons() //For all existing HUD icons
return get_all_jobs() + list("Prisoner")
/// Gets all centcom jobs
/proc/get_all_centcom_jobs()
return list("VIP Guest","Custodian","Thunderdome Overseer","CentCom Official","Medical Officer","Research Officer","Special Ops Officer","Admiral","CentCom Commander","Emergency Response Team Commander","Security Response Officer","Engineer Response Officer", "Medical Response Officer","CentCom Bartender", "Janitorial Response Officer", "Religious Response Officer", "CentCom Captain", "CentCom Major", "CentCom Commodore", "CentCom Colonel", "CentCom Rear-Admiral", "CentCom Admiral", "CentCom Grand Admiral", "Comedy Response Officer", "HONK Squad Trooper")
/// Gets all task for jobs
/proc/get_all_task_force_jobs()
return list("Amber Soldier","Amber Commander","Amber Medic","Amber Task Force")
/// Gets the name of a job from the ID
/obj/item/proc/GetJobName() //Used in secHUD icon generation
var/obj/item/card/id/I = GetID()
if(!I)
return
var/jobName = I.assignment
if(I.originalassignment)
jobName = I.originalassignment
if(jobName in get_all_job_icons()) //Check if the job has a hud icon
return jobName
if(jobName in get_all_centcom_jobs()) //Return with the NT logo if it is a CentCom job

View File

@@ -12,14 +12,11 @@
minimal_player_age = 7
exp_requirements = 300
exp_type = EXP_TYPE_CREW
exp_type_department = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/warden
alt_titles = list("Brig Watchman", "Brig Superintendent", "Security Staff Sergeant", "Security Dispatcher", "Prison Supervisor")
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access()
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM, ACCESS_BRIG_PHYS)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_BRIG_PHYS) // See /datum/job/warden/get_access()
paycheck = PAYCHECK_HARD
paycheck_department = ACCOUNT_SEC
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
@@ -44,11 +41,9 @@
name = "Warden"
jobtype = /datum/job/warden
pda_type = /obj/item/pda/warden
belt = /obj/item/pda/warden
ears = /obj/item/radio/headset/headset_sec/alt
uniform = /obj/item/clothing/under/rank/warden
uniform_skirt = /obj/item/clothing/under/rank/warden/skirt
shoes = /obj/item/clothing/shoes/jackboots
suit = /obj/item/clothing/suit/armor/vest/warden/alt
gloves = /obj/item/clothing/gloves/color/black

View File

@@ -53,7 +53,10 @@ GLOBAL_LIST_INIT(original_security_positions, list(
"Head of Security",
"Warden",
"Detective",
"Security Officer"))
"Security Officer",
//Yogs Start: Yog jobs
"Brig Physician"))
//Yogs End
GLOBAL_LIST_INIT(original_nonhuman_positions, list(
"AI",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -14,7 +14,7 @@
/obj/item/storage/backpack/holding/attackby(obj/item/W, mob/living/user)
if(istype(W, /obj/item/disabled_boh) && appears_split) // allows you to make a split bag appear whole, so that you can fool security or whatever with it. it's a bit pricey though since you need to bork an entire bag to do so.
to_chat(user, span_notice("You graft the outer shell of the disabled bag onto this one."))
to_chat(user, "<span class='notice'>You graft the outer shell of the disabled bag onto this one.</span>")
qdel(W)
cut = FALSE
appears_split = FALSE
@@ -23,21 +23,21 @@
return TRUE
if(istype(W, /obj/item/scalpel) && istype(loc, /turf) && !appears_split) // you gotta do this on the ground.
if(!cut)
user.visible_message("[user] begins to make an incision on the outer shell of [src].", span_notice("You begin to make an incision on the outer shell of [src]..."))
user.visible_message("[user] begins to make an incision on the outer shell of [src].", "<span class='notice'>You begin to make an incision on the outer shell of [src]...</span>")
if(W.use_tool(src, user, 40))
if(!appears_split && !cut)
user.visible_message("[user] succeeds!", span_notice("You succeed."))
user.visible_message("[user] succeeds!", "<span class='notice'>You succeed.</span>")
cut = TRUE
name = "cut [initial(name)]"
icon_state = "holdingpack-cut"
else
user.visible_message(span_warning("[user] screws up!"), span_warning("You screw up!"))
user.visible_message("<span class='warning'>[user] screws up!</span>", "<span class='warning'>You screw up!</span>")
return TRUE
else
user.visible_message("[user] begins to carefully cut [src]'s bluespace interface in half.", span_notice("You begin to carefully cut [src]'s bluespace interface in half..."))
user.visible_message("[user] begins to carefully cut [src]'s bluespace interface in half.", "<span class='notice'>You begin to carefully cut [src]'s bluespace interface in half...</span>")
if(W.use_tool(src, user, 40))
if(!appears_split && cut)
user.visible_message("[user] succeeds!", span_notice("You succeed."))
user.visible_message("[user] succeeds!", "<span class='notice'>You succeed.</span>")
cut = FALSE
appears_split = TRUE
name = "split [initial(name)]"
@@ -57,21 +57,21 @@
twin.name = "split [initial(twin.name)]"
twin.icon_state = "holdingpack-split-left"
else // HAHAHAHA YOU FUCKED UP BIG TIME MATE
user.visible_message(span_danger("[user] screws up, causing the bluespace interface to collapse catastrophically!"), span_userdanger("You screw up, causing the bluespace interface to collapse catastrophically! Try not moving next time?"))
user.visible_message("<span class='danger'>[user] screws up, causing the bluespace interface to collapse catastrophically!</span>", "<span class='userdanger'>You screw up, causing the bluespace interface to collapse catastrophically! Try not moving next time?</span>")
fuck_up(user)
return TRUE
else if(istype(W, /obj/item/hemostat) && istype(loc, /turf) && !appears_split && cut) // how to bork a bag of holding
user.visible_message("[user] begins to carefully disrupt [src]'s bluespace interface.", span_notice("You begin to carefully disrupt [src]'s bluespace interface..."))
user.visible_message("[user] begins to carefully disrupt [src]'s bluespace interface.", "<span class='notice'>You begin to carefully disrupt [src]'s bluespace interface...</span>")
if(W.use_tool(src, user, 40))
if(!appears_split && cut)
user.visible_message("[user] succeeds!", span_notice("You succeed."))
user.visible_message("[user] succeeds!", "<span class='notice'>You succeed.</span>")
disable_bag(TRUE)
var/obj/item/disabled_boh/replacement = new(loc)
replacement.icon_state = replacetext(icon_state, "holdingpack", "brokenpack")
replacement.name = name
qdel(src)
else // HAHAHAHA YOU FUCKED UP BIG TIME MATE
user.visible_message(span_danger("[user] screws up, causing the bluespace interface to collapse catastrophically!"), span_userdanger("You screw up, causing the bluespace interface to collapse catastrophically! Try not moving next time?"))
user.visible_message("<span class='danger'>[user] screws up, causing the bluespace interface to collapse catastrophically!</span>", "<span class='userdanger'>You screw up, causing the bluespace interface to collapse catastrophically! Try not moving next time?</span>")
fuck_up(user)
return TRUE
return ..()
@@ -121,7 +121,7 @@
continue
for(var/mob/living/M in T)
if(M.movement_type & FLYING)
M.visible_message(span_danger("The bluespace collapse crushes the air towards it, pulling [M] towards the ground..."))
M.visible_message("<span class='danger'>The bluespace collapse crushes the air towards it, pulling [M] towards the ground...</span>")
M.Paralyze(5, TRUE, TRUE) //Overrides stun absorbs.
T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic)
for(var/fabricarea in get_areas(/area/fabric_of_reality))
@@ -195,14 +195,6 @@
item_state = "snail_green"
icon_state = "snail_green"
/obj/item/storage/backpack/fakesnail
name = "green shell backpack"
desc = "An emerald-green snail shell converted into a backpack. Still smells of salt."
icon = 'yogstation/icons/obj/storage.dmi'
alternate_worn_icon = 'yogstation/icons/mob/back.dmi'
item_state = "snail_green"
icon_state = "snail_green"
/obj/item/storage/backpack/banana
name = "banana backpack"
desc = "Is it a backpack made of bananas or a backpack with a banana texture? The world may never know."
@@ -220,11 +212,11 @@
item_state = "clownfacebackpack"
//Clothing Bags
/obj/item/storage/backpack/duffelbag/clothing/sec/physician
/obj/item/storage/backpack/duffelbag/sec/physician/clothing
name = "Brig Physician's clothing duffelbag"
desc = "A large duffel bag filled with clothing."
/obj/item/storage/backpack/duffelbag/clothing/sec/physician/PopulateContents()
/obj/item/storage/backpack/duffelbag/sec/physician/clothing/PopulateContents()
new /obj/item/clothing/under/yogs/rank/physician(src)
new /obj/item/clothing/suit/toggle/labcoat/emt/physician(src)
new /obj/item/clothing/head/soft/emt/phys(src)
@@ -234,4 +226,3 @@
new /obj/item/clothing/suit/toggle/labcoat/physician(src)
new /obj/item/clothing/head/beret/med/phys(src)
new /obj/item/clothing/head/beret/corpsec/phys(src)
new /obj/item/clothing/shoes/xeno_wraps/jackboots(src)

View File

@@ -8,12 +8,16 @@
//Mining Medic
/obj/item/clothing/head/soft/emt/mining
name = "Mining Medic's cap"
desc = "It's a baseball hat with a dark turquoise color and a reflective cross on the top. Has MM embossed into it."
desc = "It's a baseball hat with a dark turquoise color and a reflective cross on the top."
icon = 'yogstation/icons/obj/clothing/hats.dmi'
alternate_worn_icon = 'yogstation/icons/mob/head.dmi'
icon_state = "emtminesoft"
item_color = "emtmine"
//Brig Physician
/obj/item/clothing/head/soft/emt/phys
name = "Brig Physician's cap"
desc = "It's a baseball hat with a dark brown color and a reflective cross on the top. Has BP embossed into it."
desc = "It's a baseball hat with a dark brown color and a reflective cross on the top. On the back are "
icon = 'yogstation/icons/obj/clothing/hats.dmi'
alternate_worn_icon = 'yogstation/icons/mob/head.dmi'
icon_state = "emtsecsoft"

View File

@@ -1,14 +1,14 @@
//Mining Medic
/obj/item/clothing/suit/toggle/labcoat/emt/explorer
name = "mining medics jacket"
desc = "A protective jacket for medical emergencies on off-world planets. Has MM embossed into it."
desc = "A protective jacket for medical emergencies on off-world planets. Has MM embrossed into it."
armor = list(melee = 10, bullet = 10, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50)
allowed = list(/obj/item/analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper,/obj/item/melee/classic_baton/telescopic,/obj/item/soap,/obj/item/sensor_device,/obj/item/tank/internals)
//Brig Physician
/obj/item/clothing/suit/toggle/labcoat/emt/physician
name = "brig physicians jacket"
desc = "A protective jacket for medical emergencies on off-world planets. Has BP embossed into it."
desc = "A protective jacket for medical emergencies on off-world planets. Has BP embrossed into it."
alternate_worn_icon = 'yogstation/icons/mob/suit.dmi'
icon = 'yogstation/icons/obj/clothing/suits.dmi'
icon_state = "labcoat_emtsec"
@@ -16,7 +16,7 @@
/obj/item/clothing/suit/toggle/labcoat/physician
name = "brig physician's labcoat"
desc = "A white labcoat with red medical crosses. Has BP embossed into it."
desc = "A white labcoat with red medical crosses. Has BP embrossed into it."
alternate_worn_icon = 'yogstation/icons/mob/suit.dmi'
icon = 'yogstation/icons/obj/clothing/suits.dmi'
icon_state = "labcoat_sec"

View File

@@ -21,7 +21,9 @@
alt_covers_chest = TRUE
sensor_mode = 3
random_sensor = FALSE
mutantrace_variation = MUTANTRACE_VARIATION
mutantrace_variation = MUTANTRACE_VARIATION //I need to clean this code
digiversion = TRUE
digiadjusted = TRUE
/obj/item/clothing/under/yogs/rank/physician/white
name = "white brig physician's jumpsuit"
@@ -31,6 +33,8 @@
item_color = "secwhite"
alt_covers_chest = FALSE
random_sensor = TRUE
can_adjust = TRUE
digiadjusted = TRUE
/obj/item/clothing/under/yogs/rank/physician/white/skirt
name = "white brig physician's jumpskirt"
@@ -41,4 +45,5 @@
can_adjust = FALSE
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
mutantrace_variation = NO_MUTANTRACE_VARIATION
digiversion = FALSE
digiadjusted = FALSE

View File

@@ -1,30 +1,25 @@
/datum/job/brigphysician
title = "Brig Physician"
flag = BRIGPHYS
flag = BRIGPHYS // check this
department_head = list("Chief Medical Officer")
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the chief medical officer"
selection_color = "#d4ebf2"
supervisors = "the chief medical officer and the head of security"
selection_color = "#ffeeee"
outfit = /datum/outfit/job/brigphysician
alt_titles = list("Security Medic", "Security Medical Support", "Penitentiary Medical Care Unit", "Junior Brig Physician", "Detention Center Health Officer")
minimal_character_age = 24 // "According to age statistics published by the Association of American Medical Colleges, the average age among medical students who matriculated at U.S. medical schools in the 2017-2018 school year was 24"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_BRIG, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_MECH_MEDICAL, ACCESS_BRIG_PHYS)
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_BRIG, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MEDICAL, ACCESS_BRIG_PHYS)
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_MECH_MEDICAL, ACCESS_MECH_SECURITY, ACCESS_BRIG_PHYS)
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MEDICAL, ACCESS_BRIG_PHYS)
paycheck = PAYCHECK_MEDIUM
paycheck_department = ACCOUNT_MED
display_order = JOB_DISPLAY_ORDER_BRIG_PHYSICIAN
changed_maps = list("OmegaStation", "EclipseStation")
/datum/job/brigphysician/proc/OmegaStationChanges()
return TRUE
changed_maps = list("EclipseStation")
/datum/job/brigphysician/proc/EclipseStationChanges()
total_positions = 2
@@ -34,9 +29,8 @@
name = "Brig Physician"
jobtype = /datum/job/brigphysician
pda_type = /obj/item/pda/physician
backpack_contents = list(/obj/item/roller = 1)
belt = /obj/item/pda/physician
ears = /obj/item/radio/headset/headset_medsec
glasses = /obj/item/clothing/glasses/hud/health/sunglasses
shoes = /obj/item/clothing/shoes/jackboots

View File

@@ -11,8 +11,6 @@
outfit = /datum/outfit/job/miningmedic
alt_titles = list("Mining Medical Support", "Lavaland Medical Care Unit", "Junior Mining Medic", "Planetside Health Officer")
minimal_character_age = 24 // "According to age statistics published by the Association of American Medical Colleges, the average age among medical students who matriculated at U.S. medical schools in the 2017-2018 school year was 24"
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CARGO, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_MECH_MINING, ACCESS_MECH_MEDICAL)
@@ -30,23 +28,21 @@
/datum/outfit/job/miningmedic
name = "Mining Medic"
jobtype = /datum/job/miningmedic
pda_type = /obj/item/pda/miningmed
backpack_contents = list(/obj/item/roller = 1,\
/obj/item/kitchen/knife/combat/survival = 1,\
/obj/item/gps/mining = 1)
belt = /obj/item/storage/belt/medical/mining
belt = /obj/item/storage/belt/mining/medical
ears = /obj/item/radio/headset/headset_medcargo
glasses = /obj/item/clothing/glasses/hud/health/meson
shoes = /obj/item/clothing/shoes/workboots/mining
suit = /obj/item/clothing/suit/toggle/labcoat/emt/explorer
uniform = /obj/item/clothing/under/yogs/rank/miner/medic
l_hand = /obj/item/storage/firstaid/regular
l_pocket = /obj/item/pda/miningmed
gloves = /obj/item/clothing/gloves/color/latex
head = /obj/item/clothing/head/soft/emt/mining
backpack = /obj/item/storage/backpack/medic
satchel = /obj/item/storage/backpack/satchel/med
duffelbag = /obj/item/storage/backpack/duffelbag/med
box = /obj/item/storage/box/survival_mining
pda_slot = SLOT_L_STORE

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB