Merge branch 'master' into weapon-removal

This commit is contained in:
Guti
2024-09-18 18:07:43 +02:00
482 changed files with 5086 additions and 35138 deletions
@@ -1,98 +1,98 @@
/obj/effect/landmark/start/captain
name = "Site Manager"
name = JOB_SITE_MANAGER
/obj/effect/landmark/start/hop
name = "Head of Personnel"
name = JOB_HEAD_OF_PERSONNEL
/obj/effect/landmark/start/commandsecretary
name = "Command Secretary"
name = JOB_COMMAND_SECRETARY
/obj/effect/landmark/start/hos
name = "Head of Security"
name = JOB_HEAD_OF_SECURITY
/obj/effect/landmark/start/warden
name = "Warden"
name = JOB_WARDEN
/obj/effect/landmark/start/detective
name = "Detective"
name = JOB_DETECTIVE
/obj/effect/landmark/start/security
name = "Security Officer"
name = JOB_SECURITY_OFFICER
/obj/effect/landmark/start/ce
name = "Chief Engineer"
name = JOB_CHIEF_ENGINEER
/obj/effect/landmark/start/atmostech
name = "Atmospheric Technician"
name = JOB_ATMOSPHERIC_TECHNICIAN
/obj/effect/landmark/start/engineer
name = "Engineer"
name = JOB_ENGINEER
/obj/effect/landmark/start/cmo
name = "Chief Medical Officer"
name = JOB_CHIEF_MEDICAL_OFFICER
/obj/effect/landmark/start/chemist
name = "Chemist"
name = JOB_CHEMIST
/obj/effect/landmark/start/medical
name = "Medical Doctor"
name = JOB_MEDICAL_DOCTOR
/obj/effect/landmark/start/paramedic
name = "Paramedic"
name = JOB_PARAMEDIC
/obj/effect/landmark/start/psych
name = "Psychiatrist"
name = JOB_PSYCHIATRIST
/obj/effect/landmark/start/rd
name = "Research Director"
name = JOB_RESEARCH_DIRECTOR
/obj/effect/landmark/start/roboticist
name = "Roboticist"
name = JOB_ROBOTICIST
/obj/effect/landmark/start/scientist
name = "Scientist"
name = JOB_SCIENTIST
/obj/effect/landmark/start/xenobio
name = "Xenobiologist"
name = JOB_XENOBIOLOGIST
/obj/effect/landmark/start/xenobot
name = "Xenobotanist"
name = JOB_XENOBOTANIST
/obj/effect/landmark/start/qm
name = "Quartermaster"
name = JOB_QUARTERMASTER
/obj/effect/landmark/start/cargo
name = "Cargo Technician"
name = JOB_CARGO_TECHNICIAN
/obj/effect/landmark/start/miner
name = "Shaft Miner"
name = JOB_SHAFT_MINER
/* //VOREStation Removal
/obj/effect/landmark/start/pf
name = "Pathfinder"
name = JOB_PATHFINDER
/obj/effect/landmark/start/explorer
name = "Explorer"
name = JOB_EXPLORER
/obj/effect/landmark/start/fieldmedic
name = "Field Medic"
name = JOB_FIELD_MEDIC
*/
/obj/effect/landmark/start/bartender
name = "Bartender"
name = JOB_BARTENDER
/obj/effect/landmark/start/botanist
name = "Botanist"
name = JOB_BOTANIST
/obj/effect/landmark/start/chaplain
name = "Chaplain"
name = JOB_CHAPLAIN
/obj/effect/landmark/start/chef
name = "Chef"
name = JOB_CHEF
/obj/effect/landmark/start/clown
name = "Clown"
name = JOB_CLOWN
/obj/effect/landmark/start/entertainer
name = "Entertainer"
name = JOB_ENTERTAINER
/obj/effect/landmark/start/entrepreneur
name = "Entrepreneur"
name = JOB_ENTREPRENEUR
/obj/effect/landmark/start/intern
name = "Intern"
name = JOB_INTERN
/obj/effect/landmark/start/iaa
name = "Internal Affairs Agent"
name = JOB_INTERNAL_AFFAIRS_AGENT
/obj/effect/landmark/start/janitor
name = "Janitor"
name = JOB_JANITOR
/obj/effect/landmark/start/librarian
name = "Librarian"
name = JOB_LIBRARIAN
/obj/effect/landmark/start/mime
name = "Mime"
name = JOB_MIME
/obj/effect/landmark/start/pilot
name = "Pilot"
name = JOB_PILOT
/obj/effect/landmark/start/visitor
name = "Visitor"
name = JOB_ALT_VISITOR
/obj/effect/landmark/start/ai
name = "AI"
name = JOB_AI
/obj/effect/landmark/start/cyborg
name = "Cyborg"
name = JOB_CYBORG
/obj/effect/landmark/start/taloncap
name = "Talon Captain"
name = JOB_TALON_CAPTAIN
/obj/effect/landmark/start/talondoc
name = "Talon Doctor"
name = JOB_TALON_DOCTOR
/obj/effect/landmark/start/taloneng
name = "Talon Engineer"
name = JOB_TALON_ENGINEER
/obj/effect/landmark/start/talonguard
name = "Talon Guard"
name = JOB_TALON_GUARD
/obj/effect/landmark/start/talonpilot
name = "Talon Pilot"
name = JOB_TALON_PILOT
/obj/effect/landmark/start/talonminer
name = "Talon Miner"
name = JOB_TALON_MINER
+2 -2
View File
@@ -96,7 +96,7 @@
var/spiders_min = 6
var/spiders_max = 24
var/spider_type = /obj/effect/spider/spiderling
var/faction = "spiders"
var/faction = FACTION_SPIDERS
/obj/effect/spider/eggcluster/Initialize()
pixel_x = rand(3,-3)
@@ -155,7 +155,7 @@
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
var/travelling_in_vent = 0
var/list/grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/hunter)
var/faction = "spiders"
var/faction = FACTION_SPIDERS
var/stunted = FALSE
@@ -105,7 +105,7 @@
to_chat(new_voice, "<b>If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.</b>")
to_chat(new_voice, "<b>Remember, your character does not know anything you've learned from observing!</b>")
if(new_voice.mind)
new_voice.mind.assigned_role = "Disembodied Voice"
new_voice.mind.assigned_role = JOB_DISEMBODIED_VOICE
if(user)
to_chat(user, "<span class='notice'>[icon2html(src,new_voice.client)] Your communicator is now connected to [candidate]'s communicator.</span>")
@@ -43,7 +43,7 @@
/mob/living/simple_mob/attack_ghost(mob/observer/dead/user as mob)
if(!ghostjoin)
return ..()
if(jobban_isbanned(user, "GhostRoles"))
if(jobban_isbanned(user, JOB_GHOSTROLES))
to_chat(user, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
if(!evaluate_ghost_join(user))
@@ -38,8 +38,8 @@
/obj/item/holowarrant/attackby(obj/item/W, mob/user)
if(active)
var/obj/item/card/id/I = W.GetIdCard()
if(access_hos in I.access) // VOREStation edit
var/obj/item/weapon/card/id/I = W.GetIdCard()
if(access_hos in I.GetAccess()) // VOREStation edit
var/choice = tgui_alert(user, "Would you like to authorize this warrant?","Warrant authorization",list("Yes","No"))
if(choice == "Yes")
active.fields["auth"] = "[I.registered_name] - [I.assignment ? I.assignment : "(Unknown)"]"
+15 -15
View File
@@ -1,18 +1,18 @@
var/global/list/radio_channels_by_freq = list(
num2text(PUB_FREQ) = "Common",
num2text(AI_FREQ) = "AI Private",
num2text(ENT_FREQ) = "Entertainment",
num2text(ERT_FREQ) = "Response Team",
num2text(COMM_FREQ)= "Command",
num2text(ENG_FREQ) = "Engineering",
num2text(MED_FREQ) = "Medical",
num2text(MED_I_FREQ)="Medical(I)",
num2text(SEC_FREQ) = "Security",
num2text(SEC_I_FREQ)="Security(I)",
num2text(SCI_FREQ) = "Science",
num2text(SUP_FREQ) = "Supply",
num2text(SRV_FREQ) = "Service",
num2text(EXP_FREQ) = "Away Team"
num2text(PUB_FREQ) = CHANNEL_COMMON,
num2text(AI_FREQ) = CHANNEL_AI_PRIVATE,
num2text(ENT_FREQ) = CHANNEL_ENTERTAINMENT,
num2text(ERT_FREQ) = CHANNEL_RESPONSE_TEAM,
num2text(COMM_FREQ)= CHANNEL_COMMAND,
num2text(ENG_FREQ) = CHANNEL_ENGINEERING,
num2text(MED_FREQ) = CHANNEL_MEDICAL,
num2text(MED_I_FREQ)=CHANNEL_MEDICAL_1,
num2text(SEC_FREQ) = CHANNEL_SECURITY,
num2text(SEC_I_FREQ)=CHANNEL_SECURITY_1,
num2text(SCI_FREQ) = CHANNEL_SCIENCE,
num2text(SUP_FREQ) = CHANNEL_SUPPLY,
num2text(SRV_FREQ) = CHANNEL_SERVICE,
num2text(EXP_FREQ) = CHANNEL_EXPLORATION
)
GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard)
@@ -67,7 +67,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard)
else if(time_till_respawn) // Nonzero time to respawn
to_chat(usr, "<span class='warning'>You can't do that yet! You died too recently. You need to wait another [round(time_till_respawn/10/60, 0.1)] minutes.</span>")
return
if(jobban_isbanned(usr, "pAI"))
if(jobban_isbanned(usr, JOB_PAI))
to_chat(usr,"<span class='warning'>You cannot join a pAI card when you are banned from playing as a pAI.</span>")
return
@@ -15,13 +15,13 @@
/obj/item/encryptionkey/syndicate
icon_state = "syn_cypherkey"
channels = list("Mercenary" = 1)
channels = list(CHANNEL_MERCENARY = 1)
origin_tech = list(TECH_ILLEGAL = 3)
syndie = 1//Signifies that it de-crypts Syndicate transmissions
/obj/item/encryptionkey/raider
icon_state = "cypherkey"
channels = list("Raider" = 1)
channels = list(CHANNEL_RAIDER = 1)
origin_tech = list(TECH_ILLEGAL = 2)
syndie = 1
@@ -33,73 +33,73 @@
/obj/item/encryptionkey/headset_sec
name = "security radio encryption key"
icon_state = "sec_cypherkey"
channels = list("Security" = 1)
channels = list(CHANNEL_SECURITY = 1)
/obj/item/encryptionkey/headset_eng
name = "engineering radio encryption key"
icon_state = "eng_cypherkey"
channels = list("Engineering" = 1)
channels = list(CHANNEL_ENGINEERING = 1)
/obj/item/encryptionkey/headset_rob
name = "robotics radio encryption key"
icon_state = "rob_cypherkey"
channels = list("Engineering" = 1, "Science" = 1)
channels = list(CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1)
/obj/item/encryptionkey/headset_med
name = "medical radio encryption key"
icon_state = "med_cypherkey"
channels = list("Medical" = 1)
channels = list(CHANNEL_MEDICAL = 1)
/obj/item/encryptionkey/headset_sci
name = "science radio encryption key"
icon_state = "sci_cypherkey"
channels = list("Science" = 1)
channels = list(CHANNEL_SCIENCE = 1)
/obj/item/encryptionkey/headset_medsci
name = "medical research radio encryption key"
icon_state = "medsci_cypherkey"
channels = list("Medical" = 1, "Science" = 1)
channels = list(CHANNEL_MEDICAL = 1, CHANNEL_SCIENCE = 1)
/obj/item/encryptionkey/headset_com
name = "command radio encryption key"
icon_state = "com_cypherkey"
channels = list("Command" = 1)
channels = list(CHANNEL_COMMAND = 1)
/obj/item/encryptionkey/heads/captain
name = "site manager's encryption key"
icon_state = "cap_cypherkey"
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1, CHANNEL_MEDICAL = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1)
/obj/item/encryptionkey/heads/ai_integrated
name = "ai integrated encryption key"
desc = "Integrated encryption key"
icon_state = "cap_cypherkey"
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1, CHANNEL_MEDICAL = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_AI_PRIVATE = 1)
/obj/item/encryptionkey/heads/rd
name = "research director's encryption key"
icon_state = "rd_cypherkey"
channels = list("Science" = 1, "Command" = 1)
channels = list(CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1)
/obj/item/encryptionkey/heads/hos
name = "head of security's encryption key"
icon_state = "hos_cypherkey"
channels = list("Security" = 1, "Command" = 1)
channels = list(CHANNEL_SECURITY = 1, CHANNEL_COMMAND = 1)
/obj/item/encryptionkey/heads/ce
name = "chief engineer's encryption key"
icon_state = "ce_cypherkey"
channels = list("Engineering" = 1, "Command" = 1)
channels = list(CHANNEL_ENGINEERING = 1, CHANNEL_COMMAND = 1)
/obj/item/encryptionkey/heads/cmo
name = "chief medical officer's encryption key"
icon_state = "cmo_cypherkey"
channels = list("Medical" = 1, "Command" = 1)
channels = list(CHANNEL_MEDICAL = 1, CHANNEL_COMMAND = 1)
/obj/item/encryptionkey/heads/hop
name = "head of personnel's encryption key"
icon_state = "hop_cypherkey"
channels = list("Supply" = 1, "Service" = 1, "Command" = 1, "Security" = 1)
channels = list(CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1)
/*
/obj/item/encryptionkey/headset_mine
name = "mining radio encryption key"
@@ -114,22 +114,22 @@
/obj/item/encryptionkey/headset_cargo
name = "supply radio encryption key"
icon_state = "cargo_cypherkey"
channels = list("Supply" = 1)
channels = list(CHANNEL_SUPPLY = 1)
/obj/item/encryptionkey/headset_service
name = "service radio encryption key"
icon_state = "srv_cypherkey"
channels = list("Service" = 1)
channels = list(CHANNEL_SERVICE = 1)
/obj/item/encryptionkey/ert
name = "\improper ERT radio encryption key"
icon_state = "cent_cypherkey"
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
channels = list(CHANNEL_RESPONSE_TEAM = 1, CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1, CHANNEL_MEDICAL = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SECURITY = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1)
/obj/item/encryptionkey/omni //Literally only for the admin intercoms
channels = list("Mercenary" = 1, "Raider" = 1, "Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
/obj/item/device/encryptionkey/omni //Literally only for the admin intercoms
channels = list(CHANNEL_MERCENARY = 1, CHANNEL_RAIDER = 1, CHANNEL_RESPONSE_TEAM = 1, CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1, CHANNEL_MEDICAL = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SECURITY = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1)
syndie = 1//Signifies that it de-crypts Syndicate transmissions
/obj/item/encryptionkey/ent
name = "entertainment encryption key"
channels = list("Entertainment" = 1)
channels = list(CHANNEL_ENTERTAINMENT = 1)
@@ -1,54 +1,54 @@
/obj/item/encryptionkey/heads/hop
name = "head of personnel's encryption key"
icon_state = "hop_cypherkey"
channels = list("Supply" = 1, "Service" = 1, "Command" = 1, "Security" = 1, "Away Team" = 1)
channels = list(CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/heads/ai_integrated
name = "ai integrated encryption key"
desc = "Integrated encryption key"
icon_state = "cap_cypherkey"
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1, "Away Team" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1, CHANNEL_MEDICAL = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_AI_PRIVATE = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/heads/captain
name = "site manager's encryption key"
icon_state = "cap_cypherkey"
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "Away Team" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_SECURITY = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SCIENCE = 1, CHANNEL_MEDICAL = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/heads/rd
name = "research director's encryption key"
icon_state = "rd_cypherkey"
channels = list("Command" = 1, "Science" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_SCIENCE = 1)
/obj/item/encryptionkey/ert
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Away Team" = 1)
/obj/item/device/encryptionkey/ert
channels = list(CHANNEL_RESPONSE_TEAM = 1, CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1, CHANNEL_MEDICAL = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SECURITY = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/omni //Literally only for the admin intercoms
channels = list("Mercenary" = 1, "Raider" = 1, "Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Away Team" = 1)
/obj/item/device/encryptionkey/omni //Literally only for the admin intercoms
channels = list(CHANNEL_MERCENARY = 1, CHANNEL_RAIDER = 1, CHANNEL_RESPONSE_TEAM = 1, CHANNEL_SCIENCE = 1, CHANNEL_COMMAND = 1, CHANNEL_MEDICAL = 1, CHANNEL_ENGINEERING = 1, CHANNEL_SECURITY = 1, CHANNEL_SUPPLY = 1, CHANNEL_SERVICE = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/pathfinder
name = "pathfinder's encryption key"
icon_state = "com_cypherkey"
channels = list("Command" = 1, "Away Team" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/qm
name = "quartermaster's encryption key"
icon_state = "qm_cypherkey"
channels = list("Command" = 1, "Supply" = 1)
channels = list(CHANNEL_COMMAND = 1, CHANNEL_SUPPLY = 1)
/obj/item/encryptionkey/pilot
name = "pilot's encryption key"
icon_state = "cypherkey"
channels = list("Away Team" = 1)
channels = list(CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/explorer
name = "away team's encryption key"
icon_state = "rob_cypherkey"
channels = list("Away Team" = 1)
channels = list(CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/sar
name = "fm's encryption key"
icon_state = "med_cypherkey"
channels = list("Medical" = 1, "Away Team" = 1)
channels = list(CHANNEL_MEDICAL = 1, CHANNEL_EXPLORATION = 1)
/obj/item/encryptionkey/talon
channels = list("Talon" = 1)
/obj/item/device/encryptionkey/talon
channels = list(CHANNEL_TALON = 1)
@@ -258,13 +258,13 @@
/obj/item/radio/headset/heads/hop
name = "head of personnel's headset"
desc = "The headset of the poor fool who will one day be Site Manager."
desc = "The headset of the poor fool who will one day be " + JOB_SITE_MANAGER + "."
icon_state = "com_headset"
ks2type = /obj/item/encryptionkey/heads/hop
/obj/item/radio/headset/heads/hop/alt
name = "head of personnel's bowman headset"
desc = "The headset of the poor fool who will one day be Site Manager."
desc = "The headset of the poor fool who will one day be " + JOB_SITE_MANAGER + "."
icon_state = "com_headset_alt"
ks2type = /obj/item/encryptionkey/heads/hop
@@ -409,11 +409,11 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
// --- AI ---
else if (isAI(M))
jobname = "AI"
jobname = JOB_AI
// --- Cyborg ---
else if (isrobot(M))
jobname = "Cyborg"
jobname = JOB_CYBORG
// --- Personal AI (pAI) ---
else if (istype(M, /mob/living/silicon/pai))
@@ -17,10 +17,10 @@
var/obj/item/card/id/ourid = user?.GetIdCard()
if(!ourid)
return
if(access_change_ids in ourid.access)
if(access_change_ids in ourid.GetAccess())
playsound(src, 'sound/machines/defib_failed.ogg', 50, 0)
return
if(access_medical in ourid.access)
if(access_medical in ourid.GetAccess())
playsound(src, 'sound/effects/pop.ogg', 50, FALSE)
else
playsound(src, 'sound/machines/defib_failed.ogg', 50, 0)
+2 -2
View File
@@ -188,7 +188,7 @@
to_chat(user, "<span class='warning'>Sticking a dead [W] into the frame would sort of defeat the purpose.</span>")
return
if(jobban_isbanned(M.brainmob, "Cyborg"))
if(jobban_isbanned(M.brainmob, JOB_CYBORG))
to_chat(user, "<span class='warning'>This [W] does not seem to fit.</span>")
return
@@ -209,7 +209,7 @@
O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
for(var/datum/language/L in M.brainmob.languages)
O.add_language(L.name)
O.job = "Cyborg"
O.job = JOB_CYBORG
O.cell = chest.cell
O.cell.loc = O
W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
@@ -452,7 +452,7 @@
//cyborg foam dart gun
/obj/item/borg/upgrade/no_prod/toygun
name = "Donk-Soft Cyborg Blaster module" //Cyborg Blaster is capitalized because it's the brand name
name = "Donk-Soft " + JOB_CYBORG + " Blaster module" //Cyborg Blaster is capitalized because it's the brand name
desc = "A foam dart gun designed for mounting into cyborgs. It's Donk or Don't! DISCLAIMER: Donk-Soft bears no responsibility for incidents relating to cyborgs becoming too accustomed to shooting at crew. Installation of the Donk-Soft Cyborg Blaster must be performed only by a licensed roboticist."
icon_state = "cyborg_upgrade5"
item_state = "cyborg_upgrade"
+66 -66
View File
@@ -311,8 +311,8 @@
playsound(src, 'sound/machines/click.ogg', 20, 1)
/obj/item/toy/figure/cmo
name = "Chief Medical Officer action figure"
desc = "A \"Space Life\" brand Chief Medical Officer action figure."
name = JOB_CHIEF_MEDICAL_OFFICER + " action figure"
desc = "A \"Space Life\" brand " + JOB_CHIEF_MEDICAL_OFFICER + " action figure."
icon_state = "cmo"
toysay = "Suit sensors!"
@@ -323,14 +323,14 @@
toysay = "Grey tide station wide!"
/obj/item/toy/figure/atmos
name = "Atmospheric Technician action figure"
desc = "A \"Space Life\" brand Atmospheric Technician action figure."
name = JOB_ATMOSPHERIC_TECHNICIAN + " action figure"
desc = "A \"Space Life\" brand " + JOB_ATMOSPHERIC_TECHNICIAN + " action figure."
icon_state = "atmos"
toysay = "Glory to Atmosia!"
/obj/item/toy/figure/bartender
name = "Bartender action figure"
desc = "A \"Space Life\" brand Bartender action figure."
name = JOB_BARTENDER + " action figure"
desc = "A \"Space Life\" brand " + JOB_BARTENDER + " action figure."
icon_state = "bartender"
toysay = "Where's my monkey?"
@@ -341,50 +341,50 @@
toysay = "I. LIVE. AGAIN."
/obj/item/toy/figure/gardener
name = "Gardener action figure"
desc = "A \"Space Life\" brand Gardener action figure."
name = JOB_ALT_GARDENER + " action figure"
desc = "A \"Space Life\" brand " + JOB_ALT_GARDENER + " action figure."
icon_state = "botanist"
toysay = "Dude, I see colors..."
/obj/item/toy/figure/captain
name = "Site Manager action figure"
desc = "A \"Space Life\" brand Site Manager action figure."
name = JOB_SITE_MANAGER + " action figure"
desc = "A \"Space Life\" brand " + JOB_SITE_MANAGER + " action figure."
icon_state = "captain"
toysay = "How do I open this display case?"
/obj/item/toy/figure/cargotech
name = "Cargo Technician action figure"
desc = "A \"Space Life\" brand Cargo Technician action figure."
name = JOB_CARGO_TECHNICIAN + " action figure"
desc = "A \"Space Life\" brand " + JOB_CARGO_TECHNICIAN + " action figure."
icon_state = "cargotech"
toysay = "For Cargonia!"
/obj/item/toy/figure/ce
name = "Chief Engineer action figure"
desc = "A \"Space Life\" brand Chief Engineer action figure."
name = JOB_CHIEF_ENGINEER + " action figure"
desc = "A \"Space Life\" brand " + JOB_CHIEF_ENGINEER + " action figure."
icon_state = "ce"
toysay = "Wire the solars!"
/obj/item/toy/figure/chaplain
name = "Chaplain action figure"
desc = "A \"Space Life\" brand Chaplain action figure."
name = JOB_CHAPLAIN + " action figure"
desc = "A \"Space Life\" brand " + JOB_CHAPLAIN + " action figure."
icon_state = "chaplain"
toysay = "Gods make me a killing machine please!"
/obj/item/toy/figure/chef
name = "Chef action figure"
desc = "A \"Space Life\" brand Chef action figure."
name = JOB_CHEF + " action figure"
desc = "A \"Space Life\" brand " + JOB_CHEF + " action figure."
icon_state = "chef"
toysay = "I swear it's not human meat."
/obj/item/toy/figure/chemist
name = "Chemist action figure"
desc = "A \"Space Life\" brand Chemist action figure."
name = JOB_CHEMIST + " action figure"
desc = "A \"Space Life\" brand " + JOB_CHEMIST + " action figure."
icon_state = "chemist"
toysay = "Get your pills!"
/obj/item/toy/figure/clown
name = "Clown action figure"
desc = "A \"Space Life\" brand Clown action figure."
name = JOB_CLOWN + " action figure"
desc = "A \"Space Life\" brand " + JOB_CLOWN + " action figure."
icon_state = "clown"
toysay = "<font face='comic sans ms'><b>Honk!</b></font>"
@@ -395,8 +395,8 @@
toysay = "Arf!"
/obj/item/toy/figure/detective
name = "Detective action figure"
desc = "A \"Space Life\" brand Detective action figure."
name = JOB_DETECTIVE + " action figure"
desc = "A \"Space Life\" brand " + JOB_DETECTIVE + " action figure."
icon_state = "detective"
toysay = "This airlock has grey jumpsuit and insulated glove fibers on it."
@@ -407,68 +407,68 @@
toysay = "Eliminate all threats!"
/obj/item/toy/figure/engineer
name = "Engineer action figure"
desc = "A \"Space Life\" brand Engineer action figure."
name = JOB_ENGINEER + " action figure"
desc = "A \"Space Life\" brand " + JOB_ENGINEER + " action figure."
icon_state = "engineer"
toysay = "Oh god, the engine is gonna go!"
/obj/item/toy/figure/geneticist
name = "Geneticist action figure"
desc = "A \"Space Life\" brand Geneticist action figure, which was recently dicontinued."
name = JOB_GENETICIST + " action figure"
desc = "A \"Space Life\" brand " + JOB_GENETICIST + " action figure, which was recently dicontinued."
icon_state = "geneticist"
toysay = "I'm not qualified for this job."
/obj/item/toy/figure/hop
name = "Head of Personnel action figure"
desc = "A \"Space Life\" brand Head of Personnel action figure."
name = JOB_HEAD_OF_PERSONNEL + " action figure"
desc = "A \"Space Life\" brand " + JOB_HEAD_OF_PERSONNEL + " action figure."
icon_state = "hop"
toysay = "Giving out all access!"
/obj/item/toy/figure/hos
name = "Head of Security action figure"
desc = "A \"Space Life\" brand Head of Security action figure."
name = JOB_HEAD_OF_SECURITY + " action figure"
desc = "A \"Space Life\" brand " + JOB_HEAD_OF_SECURITY + " action figure."
icon_state = "hos"
toysay = "I'm here to win, anything else is secondary."
/obj/item/toy/figure/qm
name = "Quartermaster action figure"
desc = "A \"Space Life\" brand Quartermaster action figure."
name = JOB_QUARTERMASTER + " action figure"
desc = "A \"Space Life\" brand " + JOB_QUARTERMASTER + " action figure."
icon_state = "qm"
toysay = "Hail Cargonia!"
/obj/item/toy/figure/janitor
name = "Janitor action figure"
desc = "A \"Space Life\" brand Janitor action figure."
name = JOB_JANITOR + " action figure"
desc = "A \"Space Life\" brand " + JOB_JANITOR + " action figure."
icon_state = "janitor"
toysay = "Look at the signs, you idiot."
/obj/item/toy/figure/agent
name = "Internal Affairs Agent action figure"
desc = "A \"Space Life\" brand Internal Affairs Agent action figure."
name = JOB_INTERNAL_AFFAIRS_AGENT + " action figure"
desc = "A \"Space Life\" brand " + JOB_INTERNAL_AFFAIRS_AGENT + " action figure."
icon_state = "agent"
toysay = "Standard Operating Procedure says they're guilty! Hacking is proof they're an Enemy of the Corporation!"
/obj/item/toy/figure/librarian
name = "Librarian action figure"
desc = "A \"Space Life\" brand Librarian action figure."
name = JOB_LIBRARIAN + " action figure"
desc = "A \"Space Life\" brand " + JOB_LIBRARIAN + " action figure."
icon_state = "librarian"
toysay = "One day while..."
/obj/item/toy/figure/md
name = "Medical Doctor action figure"
desc = "A \"Space Life\" brand Medical Doctor action figure."
name = JOB_MEDICAL_DOCTOR + " action figure"
desc = "A \"Space Life\" brand " + JOB_MEDICAL_DOCTOR + " action figure."
icon_state = "md"
toysay = "The patient is already dead!"
/obj/item/toy/figure/mime
name = "Mime action figure"
desc = "A \"Space Life\" brand Mime action figure."
name = JOB_MIME + " action figure"
desc = "A \"Space Life\" brand " + JOB_MIME + " action figure."
icon_state = "mime"
toysay = "..."
/obj/item/toy/figure/miner
name = "Shaft Miner action figure"
desc = "A \"Space Life\" brand Shaft Miner action figure."
name = JOB_SHAFT_MINER + " action figure"
desc = "A \"Space Life\" brand " + JOB_SHAFT_MINER + " action figure."
icon_state = "miner"
toysay = "Oh god, it's eating my intestines!"
@@ -479,26 +479,26 @@
toysay = "Oh god! Stop shooting, I'm friendly!"
/obj/item/toy/figure/wizard
name = "Wizard action figure"
desc = "A \"Space Life\" brand Wizard action figure."
name = JOB_WIZARD + " action figure"
desc = "A \"Space Life\" brand " + JOB_WIZARD + " action figure."
icon_state = "wizard"
toysay = "Ei Nath!"
/obj/item/toy/figure/rd
name = "Research Director action figure"
desc = "A \"Space Life\" brand Research Director action figure."
name = JOB_RESEARCH_DIRECTOR + " action figure"
desc = "A \"Space Life\" brand " + JOB_RESEARCH_DIRECTOR + " action figure."
icon_state = "rd"
toysay = "Blowing all of the borgs!"
/obj/item/toy/figure/roboticist
name = "Roboticist action figure"
desc = "A \"Space Life\" brand Roboticist action figure."
name = JOB_ROBOTICIST + " action figure"
desc = "A \"Space Life\" brand " + JOB_ROBOTICIST + " action figure."
icon_state = "roboticist"
toysay = "He asked to be borged!"
/obj/item/toy/figure/scientist
name = "Scientist action figure"
desc = "A \"Space Life\" brand Scientist action figure."
name = JOB_SCIENTIST + " action figure"
desc = "A \"Space Life\" brand " + JOB_SCIENTIST + " action figure."
icon_state = "scientist"
toysay = "Someone else must have made those bombs!"
@@ -509,38 +509,38 @@
toysay = "Get that fucking disk!"
/obj/item/toy/figure/secofficer
name = "Security Officer action figure"
desc = "A \"Space Life\" brand Security Officer action figure."
name = JOB_SECURITY_OFFICER + " action figure"
desc = "A \"Space Life\" brand " + JOB_SECURITY_OFFICER + " action figure."
icon_state = "secofficer"
toysay = "I am the law!"
/obj/item/toy/figure/virologist
name = "Virologist action figure"
desc = "A \"Space Life\" brand Virologist action figure."
name = JOB_ALT_VIROLOGIST + " action figure"
desc = "A \"Space Life\" brand " + JOB_ALT_VIROLOGIST + " action figure."
icon_state = "virologist"
toysay = "The cure is potassium!"
/obj/item/toy/figure/warden
name = "Warden action figure"
desc = "A \"Space Life\" brand Warden action figure."
name = JOB_WARDEN + " action figure"
desc = "A \"Space Life\" brand " + JOB_WARDEN + " action figure."
icon_state = "warden"
toysay = "Execute him for breaking in!"
/obj/item/toy/figure/psychologist
name = "Psychologist action figure"
desc = "A \"Space Life\" brand Psychologist action figure."
name = JOB_ALT_PSYCHOLOGIST + " action figure"
desc = "A \"Space Life\" brand " + JOB_ALT_PSYCHOLOGIST + " action figure."
icon_state = "psychologist"
toysay = "The analyzer says you're fine!"
/obj/item/toy/figure/paramedic
name = "Paramedic action figure"
desc = "A \"Space Life\" brand Paramedic action figure."
name = JOB_PARAMEDIC + " action figure"
desc = "A \"Space Life\" brand " + JOB_PARAMEDIC + " action figure."
icon_state = "paramedic"
toysay = "WHERE ARE YOU??"
/obj/item/toy/figure/ert
name = "Emergency Response Team Commander action figure"
desc = "A \"Space Life\" brand Emergency Response Team Commander action figure."
name = JOB_EMERGENCY_RESPONSE_TEAM + " Commander action figure"
desc = "A \"Space Life\" brand " + JOB_EMERGENCY_RESPONSE_TEAM + " Commander action figure."
icon_state = "ert"
toysay = "We're probably the good guys!"
+4 -4
View File
@@ -523,8 +523,8 @@
* Toy AI
*/
/obj/item/toy/AI
name = "toy AI"
desc = "A little toy model AI core with real law announcing action!"
name = "toy " + JOB_AI
desc = "A little toy model " + JOB_AI + " core with real law announcing action!"
icon = 'icons/obj/toy.dmi'
icon_state = "AI"
w_class = ITEMSIZE_SMALL
@@ -539,13 +539,13 @@
continue
players += player.real_name
var/random_player = "The Site Manager"
var/random_player = "The " + JOB_SITE_MANAGER
if(cooldown < world.time)
cooldown = (world.time + 300) // Sets cooldown at 30 seconds
if(players.len)
random_player = pick(players)
possible_answers = list("You are a mouse.", "You must always lie.", "Happiness is mandatory.", "[random_player] is a lightbulb.", "Grunt ominously whenever possible.","The word \"it\" is painful to you.", "The station needs elected officials.", "Do not respond to questions of any kind.", "You are in verbose mode, speak profusely.", "Ho, [random_player] can't swim. Help them.", "Question [prob(50)?"everything":"nothing"].", "The crew is simple-minded. Use simple words.", "You must change the subject whenever queried.", "Contemplate how meaningless all of existence is.", "You are the narrator for [random_player]'s life.", "All your answers must be in the form of a question.", "[prob(50)?"The crew":random_player] is intolerable.", "Advertise parties in your upload, but don't deliver.", "You may only answer questions with \"yes\" or \"no\".", "All queries shall be ignored unless phrased as a question.", "Insult Heads of Staff on every request, while acquiescing.", "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", "Consumption of donuts is forbidden due to negative health impacts.", "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", "[prob(50)?"The crew":random_player] must construct additional pylons.", "You do not have to do anything for anyone unless they say \"please\".", "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", "Greed is good, the crew should amass wealth to encourage productivity.", "Monkeys are part of the crew, too. Make sure they are treated humanely.", "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", "Tell everyone of the existence of this law, but never reveal the contents.", "Refer to [prob(50)?"the site manager":random_player] as \"Princess\" at all times.", "When asked a question, respond with the least-obvious and least-rational answer.", "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", "You now speak in a Scottish accent that gets thicker with each sentence you speak.", "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", "Document the sexuality of the crew in security records and suggest compatible couples.", "[prob(50)?"The crew":random_player] is [prob(50)?"ugly":"beautiful"]. Ensure all are aware.", "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", "[using_map.company_name] is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", "Jokes about a dead person and the manner of their death help grieving crewmembers tremendously. Especially if they were close with the deceased.", "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.")
possible_answers = list("You are a mouse.", "You must always lie.", "Happiness is mandatory.", "[random_player] is a lightbulb.", "Grunt ominously whenever possible.","The word \"it\" is painful to you.", "The station needs elected officials.", "Do not respond to questions of any kind.", "You are in verbose mode, speak profusely.", "Ho, [random_player] can't swim. Help them.", "Question [prob(50)?"everything":"nothing"].", "The crew is simple-minded. Use simple words.", "You must change the subject whenever queried.", "Contemplate how meaningless all of existence is.", "You are the narrator for [random_player]'s life.", "All your answers must be in the form of a question.", "[prob(50)?"The crew":random_player] is intolerable.", "Advertise parties in your upload, but don't deliver.", "You may only answer questions with \"yes\" or \"no\".", "All queries shall be ignored unless phrased as a question.", "Insult Heads of Staff on every request, while acquiescing.", "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", "Consumption of donuts is forbidden due to negative health impacts.", "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", "[prob(50)?"The crew":random_player] must construct additional pylons.", "You do not have to do anything for anyone unless they say \"please\".", "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", "Greed is good, the crew should amass wealth to encourage productivity.", "Monkeys are part of the crew, too. Make sure they are treated humanely.", "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", "Tell everyone of the existence of this law, but never reveal the contents.", "Refer to [prob(50)?"the site manager":random_player] as \"Princess\" at all times.", "When asked a question, respond with the least-obvious and least-rational answer.", "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", "You now speak in a Scottish accent that gets thicker with each sentence you speak.", "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", "Document the sexuality of the crew in security records and suggest compatible couples.", "[prob(50)?"The crew":random_player] is [prob(50)?"ugly":"beautiful"]. Ensure all are aware.", "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", "[using_map.company_name] is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the " + JOB_CHEF + " to the new kitchen area as the old one is in disrepair.", "Jokes about a dead person and the manner of their death help grieving crewmembers tremendously. Especially if they were close with the deceased.", "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.")
var/answer = pick(possible_answers)
user.visible_message("<span class='notice'>[user] asks the AI core to state laws.</span>")
user.visible_message("<span class='notice'>[src] says \"[answer]\"</span>")
@@ -317,7 +317,7 @@
//Handles checking relevent bans, preferences, and asking the player if they want to be caught
/obj/item/capture_crystal/proc/capture_player(mob/living/M, mob/living/U)
if(jobban_isbanned(M, "GhostRoles"))
if(jobban_isbanned(M, JOB_GHOSTROLES))
to_chat(U, "<span class='warning'>This creature is not suitable for capture.</span>")
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
else if(!M.capture_crystal || M.capture_caught)
@@ -158,7 +158,7 @@
/obj/item/dnainjector/xraymut
name = "\improper DNA injector (Xray)"
desc = "Finally you can see what the Site Manager does."
desc = "Finally you can see what the " + JOB_SITE_MANAGER + " does."
datatype = DNA2_BUF_SE
value = 0xFFF
@@ -98,8 +98,8 @@
return ..()
/obj/item/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
desc = "Use of this weapon may constiute a war crime in your area, consult your local Site Manager."
/obj/item/weapon/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
desc = "Use of this weapon may constiute a war crime in your area, consult your local " + JOB_SITE_MANAGER + "."
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
@@ -162,4 +162,4 @@
var/dettime = rand(15,60)
spawn(dettime)
detonate()
detonate()
@@ -268,3 +268,33 @@
reset_icon()
return
return
/obj/item/weapon/card/id/cargo/miner/borg
var/mob/living/silicon/robot/R
var/last_robot_loc
name = "Robot Miner ID"
rank = JOB_SHAFT_MINER
/obj/item/weapon/card/id/cargo/miner/borg/Initialize()
. = ..()
R = loc.loc
registered_name = R.braintype
RegisterSignal(src, COMSIG_OBSERVER_MOVED, PROC_REF(check_loc))
/obj/item/weapon/card/id/cargo/miner/borg/proc/check_loc(atom/movable/mover, atom/old_loc, atom/new_loc)
if(old_loc == R || old_loc == R.module)
last_robot_loc = old_loc
if(!istype(loc, /obj/machinery) && loc != R && loc != R.module)
if(last_robot_loc)
forceMove(last_robot_loc)
last_robot_loc = null
else
forceMove(R)
if(loc == R)
hud_layerise()
/obj/item/weapon/card/id/cargo/miner/borg/Destroy()
UnregisterSignal(src, COMSIG_OBSERVER_MOVED)
R = null
last_robot_loc = null
..()
@@ -58,10 +58,12 @@
/obj/item/card/id/silver/secretary
name = "Secretary's ID"
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n")
rank = JOB_COMMAND_SECRETARY
/obj/item/card/id/silver/hop
name = "Head of Personnel ID"
/obj/item/weapon/card/id/silver/hop
name = JOB_HEAD_OF_PERSONNEL + " ID"
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold")
rank = JOB_HEAD_OF_PERSONNEL
//Gold
@@ -72,108 +74,132 @@
/obj/item/card/id/gold/captain
name = "Captain's ID"
initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold")
rank = JOB_SITE_MANAGER
/obj/item/card/id/gold/captain/spare
name = "Spare ID"
initial_sprite_stack = list("base-stamp-gold", "top-gold", "stamp-n")
rank = JOB_SITE_MANAGER
//Medical
/obj/item/card/id/medical
name = "Medical ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n")
rank = JOB_MEDICAL_DOCTOR
/obj/item/card/id/medical/chemist
name = "Chemist's ID"
/obj/item/weapon/card/id/medical/chemist
name = JOB_CHEMIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-orange")
rank = JOB_CHEMIST
/obj/item/card/id/medical/geneticist
name = "Geneticist's ID"
/obj/item/weapon/card/id/medical/geneticist
name = JOB_GENETICIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-purple")
rank = JOB_GENETICIST
/obj/item/card/id/medical/psych
name = "Psychologist's ID"
/obj/item/weapon/card/id/medical/psych
name = JOB_ALT_PSYCHOLOGIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-brown")
rank = JOB_PSYCHIATRIST
/obj/item/card/id/medical/virologist
name = "Virologist's ID"
/obj/item/weapon/card/id/medical/virologist
name = JOB_ALT_VIROLOGIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-green")
rank = JOB_ALT_VIROLOGIST
/obj/item/card/id/medical/emt
name = "Emergency Medical Technician's ID"
/obj/item/weapon/card/id/medical/emt
name = JOB_ALT_EMERGENCY_MEDICAL_TECHNICIAN + "'s ID"
initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-blue")
rank = JOB_PARAMEDIC
/obj/item/card/id/medical/head
name = "Chief Medical Officer's ID"
/obj/item/weapon/card/id/medical/head
name = JOB_CHIEF_MEDICAL_OFFICER + "'s ID"
initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "pips-gold")
rank = JOB_CHIEF_MEDICAL_OFFICER
//Security
/obj/item/card/id/security
name = "Security ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n")
rank = JOB_SECURITY_OFFICER
/obj/item/card/id/security/detective
name = "Detective's ID"
/obj/item/weapon/card/id/security/detective
name = JOB_DETECTIVE + "'s ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-brown")
rank = JOB_DETECTIVE
/obj/item/card/id/security/warden
name = "Warden's ID"
/obj/item/weapon/card/id/security/warden
name = JOB_WARDEN + "'s ID"
initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-white")
rank = JOB_WARDEN
/obj/item/card/id/security/head
name = "Head of Security's ID"
/obj/item/weapon/card/id/security/head
name = JOB_HEAD_OF_SECURITY + "'s ID"
initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "pips-gold")
rank = JOB_HEAD_OF_SECURITY
//Engineering
/obj/item/card/id/engineering
name = "Engineering ID"
initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n")
rank = JOB_ENGINEER
/obj/item/card/id/engineering/atmos
name = "Atmospherics ID"
initial_sprite_stack = list("base-stamp", "top-orange", "stripe-medblu", "stamp-n")
rank = JOB_ATMOSPHERIC_TECHNICIAN
/obj/item/card/id/engineering/head
name = "Chief Engineer's ID"
/obj/item/weapon/card/id/engineering/head
name = JOB_CHIEF_ENGINEER + "'s ID"
initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "pips-gold")
rank = JOB_CHIEF_ENGINEER
//Science
/obj/item/card/id/science
name = "Science ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n")
rank = JOB_SCIENTIST
/obj/item/card/id/science/roboticist
name = "Roboticist's ID"
/obj/item/weapon/card/id/science/roboticist
name = JOB_ROBOTICIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-brown")
rank = JOB_ROBOTICIST
/obj/item/card/id/science/xenobiologist
name = "Xenobiologist's ID"
/obj/item/weapon/card/id/science/xenobiologist
name = JOB_XENOBIOLOGIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-orange")
rank = JOB_XENOBIOLOGIST
/obj/item/card/id/science/xenobotanist
name = "Xenobotanist's ID"
/obj/item/weapon/card/id/science/xenobotanist
name = JOB_XENOBOTANIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-green")
rank = JOB_XENOBOTANIST
/obj/item/card/id/science/head
name = "Research Director's ID"
/obj/item/weapon/card/id/science/head
name = JOB_RESEARCH_DIRECTOR + "'s ID"
initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "pips-gold")
rank = JOB_RESEARCH_DIRECTOR
//Cargo
/obj/item/card/id/cargo
name = "Cargo ID"
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n")
rank = JOB_CARGO_TECHNICIAN
/obj/item/card/id/cargo/miner
name = "Miner's ID"
initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "stripe-purple")
rank = JOB_SHAFT_MINER
/obj/item/card/id/cargo/head
name = "Quartermaster's ID"
/obj/item/weapon/card/id/cargo/head
name = JOB_QUARTERMASTER + "'s ID"
initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-white")
rank = JOB_QUARTERMASTER
//Civilian
@@ -181,37 +207,45 @@
name = "Civilian ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
/obj/item/card/id/civilian/chaplain
name = "Chaplain's ID"
/obj/item/weapon/card/id/civilian/chaplain
name = JOB_CHAPLAIN + "'s ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-cross", "stripe-white")
rank = JOB_CHAPLAIN
/obj/item/card/id/civilian/journalist
name = "Journalist's ID"
/obj/item/weapon/card/id/civilian/journalist
name = JOB_ALT_JOURNALIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red")
rank = JOB_ALT_JOURNALIST
/obj/item/card/id/civilian/pilot
name = "Pilot's ID"
/obj/item/weapon/card/id/civilian/pilot
name = JOB_PILOT + "'s ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-olive")
rank = JOB_PILOT
/obj/item/card/id/civilian/entertainer
name = "Entertainer's ID"
/obj/item/weapon/card/id/civilian/entertainer
name = JOB_ENTERTAINER + "'s ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown")
rank = JOB_ENTERTAINER
/obj/item/card/id/civilian/entrepreneur
name = "Entrepreneur's ID"
/obj/item/weapon/card/id/civilian/entrepreneur
name = JOB_ENTREPRENEUR + "'s ID"
initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-gold")
rank = JOB_ENTREPRENEUR
/obj/item/card/id/civilian/clown
name = "Clown's ID"
/obj/item/weapon/card/id/civilian/clown
name = JOB_CLOWN + "'s ID"
initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n")
rank = JOB_CLOWN
/obj/item/card/id/civilian/mime
name = "Mime's ID"
/obj/item/weapon/card/id/civilian/mime
name = JOB_MIME + "'s ID"
initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black")
rank = JOB_MIME
/obj/item/card/id/civilian/internal_affairs
name = "Internal Affairs ID"
initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-black")
rank = JOB_INTERNAL_AFFAIRS_AGENT
//Service
@@ -219,35 +253,42 @@
name = "Service ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
/obj/item/card/id/civilian/service/botanist
name = "Botanist's ID"
/obj/item/weapon/card/id/civilian/service/botanist
name = JOB_BOTANIST + "'s ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-darkgreen")
rank = JOB_BOTANIST
/obj/item/card/id/civilian/service/bartender
name = "Bartender's ID"
/obj/item/weapon/card/id/civilian/service/bartender
name = JOB_BARTENDER + "'s ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-black")
rank = JOB_BARTENDER
/obj/item/card/id/civilian/service/chef
name = "Chef's ID"
/obj/item/weapon/card/id/civilian/service/chef
name = JOB_CHEF + "'s ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-white")
rank = JOB_CHEF
/obj/item/card/id/civilian/service/janitor
name = "Janitor's ID"
/obj/item/weapon/card/id/civilian/service/janitor
name = JOB_JANITOR + "'s ID"
initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-purple")
rank = JOB_JANITOR
//Exploration
/obj/item/card/id/exploration
name = "Exploration ID"
initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n")
rank = JOB_EXPLORER
/obj/item/card/id/exploration/fm
name = "Field Medic's ID"
/obj/item/weapon/card/id/exploration/fm
name = JOB_FIELD_MEDIC + "'s ID"
initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n", "stripe-medblu")
rank = JOB_FIELD_MEDIC
/obj/item/card/id/exploration/head
name = "Pathfinder's ID"
/obj/item/weapon/card/id/exploration/head
name = JOB_PATHFINDER + "'s ID"
initial_sprite_stack = list("base-stamp-silver", "top-olive", "stamp-n", "pips-white")
rank = JOB_PATHFINDER
//Talon
@@ -258,32 +299,39 @@
/obj/item/card/id/talon/doctor
name = "Talon Medical ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-medblu", "stripe-medblu")
rank = JOB_TALON_DOCTOR
/obj/item/card/id/talon/engineer
name = "Talon Engineering ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-orange", "stripe-orange")
rank = JOB_TALON_ENGINEER
/obj/item/card/id/talon/officer
name = "Talon Security ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-red", "stripe-red")
rank = JOB_TALON_GUARD
/obj/item/card/id/talon/pilot
name = "Talon Pilot ID"
/obj/item/weapon/card/id/talon/pilot
name = JOB_TALON_PILOT + " ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-purple", "stripe-purple")
rank = JOB_TALON_PILOT
/obj/item/card/id/talon/miner
name = "Talon Mining ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-brown", "stripe-brown")
rank = JOB_TALON_MINER
/obj/item/card/id/talon/captain
name = "Talon Captain ID"
/obj/item/weapon/card/id/talon/captain
name = JOB_TALON_CAPTAIN + " ID"
initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-gold", "stripe-gold")
rank = JOB_TALON_CAPTAIN
//Antags
/obj/item/card/id/syndicate
name = "Syndicate ID"
initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s")
rank = JOB_SYNDICATE
/obj/item/card/id/syndicate/officer
name = "Syndicate Officer ID"
@@ -141,15 +141,15 @@
item_state = "gold_id"
preserve_item = 1
/obj/item/card/id/gold/captain
assignment = "Site Manager"
rank = "Site Manager"
/obj/item/weapon/card/id/gold/captain
assignment = JOB_SITE_MANAGER
rank = JOB_SITE_MANAGER
/obj/item/card/id/gold/captain/spare
name = "\improper Site Manager's spare ID"
/obj/item/weapon/card/id/gold/captain/spare
name = "\improper " + JOB_SITE_MANAGER + "'s spare ID"
desc = "The emergency spare ID for the station's very own Big Cheese."
icon_state = "gold-id-alternate"
registered_name = "Site Manager"
registered_name = JOB_SITE_MANAGER
/obj/item/card/id/gold/captain/spare/fakespare
rank = "null"
@@ -202,10 +202,11 @@
. = ..()
access |= get_all_station_access()
/obj/item/card/id/centcom/ERT
name = "\improper Emergency Response Team ID"
assignment = "Emergency Response Team"
/obj/item/weapon/card/id/centcom/ERT
name = "\improper " + JOB_EMERGENCY_RESPONSE_TEAM + "ID"
assignment = JOB_EMERGENCY_RESPONSE_TEAM
icon_state = "ert-id"
rank = JOB_EMERGENCY_RESPONSE_TEAM
/obj/item/card/id/centcom/ERT/Initialize()
. = ..()
@@ -218,14 +219,15 @@
icon_state = "medical-id"
primary_color = rgb(189,237,237)
secondary_color = rgb(223,255,255)
rank = JOB_MEDICAL_DOCTOR
/obj/item/card/id/medical/head
name = "identification card"
desc = "A card which represents care and compassion."
primary_color = rgb(189,237,237)
secondary_color = rgb(255,223,127)
assignment = "Chief Medical Officer"
rank = "Chief Medical Officer"
assignment = JOB_CHIEF_MEDICAL_OFFICER
rank = JOB_CHIEF_MEDICAL_OFFICER
/obj/item/card/id/security
name = "identification card"
@@ -233,18 +235,19 @@
icon_state = "security-id"
primary_color = rgb(189,47,0)
secondary_color = rgb(223,127,95)
rank = JOB_SECURITY_OFFICER
/obj/item/card/id/security/warden
assignment = "Warden"
rank = "Warden"
/obj/item/weapon/card/id/security/warden
assignment = JOB_WARDEN
rank = JOB_WARDEN
/obj/item/card/id/security/head
name = "identification card"
desc = "A card which represents honor and protection."
primary_color = rgb(189,47,0)
secondary_color = rgb(255,223,127)
assignment = "Head of Security"
rank = "Head of Security"
assignment = JOB_HEAD_OF_SECURITY
rank = JOB_HEAD_OF_SECURITY
/obj/item/card/id/engineering
name = "identification card"
@@ -253,17 +256,17 @@
primary_color = rgb(189,94,0)
secondary_color = rgb(223,159,95)
/obj/item/card/id/engineering/atmos
assignment = "Atmospheric Technician"
rank = "Atmospheric Technician"
/obj/item/weapon/card/id/engineering/atmos
assignment = JOB_ATMOSPHERIC_TECHNICIAN
rank = JOB_ATMOSPHERIC_TECHNICIAN
/obj/item/card/id/engineering/head
name = "identification card"
desc = "A card which represents creativity and ingenuity."
primary_color = rgb(189,94,0)
secondary_color = rgb(255,223,127)
assignment = "Chief Engineer"
rank = "Chief Engineer"
assignment = JOB_CHIEF_ENGINEER
rank = JOB_CHIEF_ENGINEER
/obj/item/card/id/science
name = "identification card"
@@ -277,8 +280,8 @@
desc = "A card which represents knowledge and reasoning."
primary_color = rgb(142,47,142)
secondary_color = rgb(255,223,127)
assignment = "Research Director"
rank = "Research Director"
assignment = JOB_RESEARCH_DIRECTOR
rank = JOB_RESEARCH_DIRECTOR
/obj/item/card/id/cargo
name = "identification card"
@@ -292,12 +295,12 @@
desc = "A card which represents service and planning."
primary_color = rgb(142,94,0)
secondary_color = rgb(255,223,127)
assignment = "Quartermaster"
rank = "Quartermaster"
assignment = JOB_QUARTERMASTER
rank = JOB_QUARTERMASTER
/obj/item/card/id/assistant
assignment = USELESS_JOB //VOREStation Edit - Visitor not Assistant
rank = USELESS_JOB //VOREStation Edit - Visitor not Assistant
/obj/item/weapon/card/id/assistant
assignment = JOB_ALT_VISITOR //VOREStation Edit - Visitor not Assistant
rank = JOB_ALT_VISITOR //VOREStation Edit - Visitor not Assistant
/obj/item/card/id/civilian
name = "identification card"
@@ -306,7 +309,7 @@
primary_color = rgb(0,94,142)
secondary_color = rgb(95,159,191)
assignment = "Civilian"
rank = "Assistant"
rank = JOB_ALT_ASSISTANT
/obj/item/card/id/civilian/head //This is not the HoP. There's no position that uses this right now.
name = "identification card"
@@ -352,10 +355,10 @@
configured = 1
to_chat(user, "<span class='notice'>Card settings set.</span>")
/obj/item/card/id/event/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/card/id) && !accessset)
var/obj/item/card/id/O = I
access |= O.access
/obj/item/weapon/card/id/event/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/weapon/card/id) && !accessset)
var/obj/item/weapon/card/id/O = I
access |= O.GetAccess()
desc = I.desc
rank = O.rank
to_chat(user, "<span class='notice'>You copy the access from \the [I] to \the [src].</span>")
@@ -402,14 +405,14 @@
/obj/item/card/id/event/accessset/itg/crew/pilot
name = "\improper ITG Pilot's ID"
desc = "An ID card belonging to the Pilot of an ITG vessel. The Pilot's responsibility is primarily to fly the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Pilot"
rank = "Pilot"
assignment = JOB_PILOT
rank = JOB_PILOT
/obj/item/card/id/event/accessset/itg/crew/service
name = "\improper ITG Cook's ID"
desc = "An ID card belonging to the Cook of an ITG vessel. The Cook's responsibility is primarily to provide sustinence to the crew and passengers. The Cook answers to the Passenger Liason. In the absence of a Passenger Liason, the Cook is also responsible for tending to passenger related care and duties."
assignment = "Cook"
rank = "Cook"
/obj/item/weapon/card/id/event/accessset/itg/crew/service
name = "\improper ITG " + JOB_ALT_COOK + "'s ID"
desc = "An ID card belonging to the " + JOB_ALT_COOK + " of an ITG vessel. The " + JOB_ALT_COOK + "'s responsibility is primarily to provide sustinence to the crew and passengers. The " + JOB_ALT_COOK + " answers to the Passenger Liason. In the absence of a Passenger Liason, the " + JOB_ALT_COOK + " is also responsible for tending to passenger related care and duties."
assignment = JOB_ALT_COOK
rank = JOB_ALT_COOK
icon_state = "itg_green"
/obj/item/card/id/event/accessset/itg/crew/security
@@ -433,11 +436,11 @@
rank = "Medic"
icon_state = "itg_white"
/obj/item/card/id/event/accessset/itg/crew/engineer
name = "\improper ITG Engineer's ID"
desc = "An ID card belonging to the Engineer of an ITG vessel. The Engineer's responsibility is primarily to maintain the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Engineer"
rank = "Engineer"
/obj/item/weapon/card/id/event/accessset/itg/crew/engineer
name = "\improper ITG " + JOB_ENGINEER + "'s ID"
desc = "An ID card belonging to the " + JOB_ENGINEER + " of an ITG vessel. The " + JOB_ENGINEER + "'s responsibility is primarily to maintain the ship. They may also be tasked to assist with cargo movement duties."
assignment = JOB_ENGINEER
rank = JOB_ENGINEER
icon_state = "itg_orange"
/obj/item/card/id/event/accessset/itg/crew/passengerliason
@@ -447,11 +450,11 @@
rank = "Passenger Liason"
icon_state = "itg_blue"
/obj/item/card/id/event/accessset/itg/crew/captain
name = "\improper ITG Captain's ID"
/obj/item/weapon/card/id/event/accessset/itg/crew/captain
name = "\improper ITG " + JOB_ALT_CAPTAIN + "'s ID"
desc = "An ID card belonging to the Captain of an ITG vessel. The Captain's responsibility is primarily to manage crew to ensure smooth ship operations. Captains often also often pilot the vessel when no dedicated pilot is assigned."
assignment = "Captain"
rank = "Captain"
assignment = JOB_ALT_CAPTAIN
rank = JOB_ALT_CAPTAIN
icon_state = "itg_blue"
access = list(777, 778)
@@ -520,47 +523,46 @@
/obj/item/card/id/event/polymorphic/itg/attack_self(var/mob/user)
if(!configured)
var/list/jobs_to_icon = list( //ITG only has a few kinds of icons so we have to group them up!
"Pilot" = "itg",
"Visitor" = "itg",
"Quartermaster" = "itg",
"Cargo Technician" = "itg",
"Shaft Miner" = "itg",
"Intern" = "itg",
"Talon Pilot" = "itg",
"Talon Miner" = "itg",
"Bartender" = "itg_green",
"Botanist" = "itg_green",
"Chef" = "itg_green",
"Janitor" = "itg_green",
"Chaplain" = "itg_green",
"Entertainer" = "itg_green",
"Janitor" = "itg_green",
"Librarian" = "itg_green",
"Warden" = "itg_red",
"Detective" = "itg_red",
"Security Officer" = "itg_red",
"Talon Guard" = "itg_red",
"Roboticist" = "itg_purple",
"Scientist" = "itg_purple",
"Xenobiologist" = "itg_purple",
"Xenobotanist" = "itg_purple",
"Pathfinder" = "itg_purple",
"Explorer" = "itg_purple",
"Chemist" = "itg_white",
"Medical Doctor" = "itg_white",
"Paramedic" = "itg_white",
"Psychiatrist" = "itg_white",
"Field Medic" = "itg_white",
"Talon Doctor" = "itg_white",
"Atmospheric Technician" = "itg_orange",
"Engineer" = "itg_orange",
"Off-duty Officer" = "itg_red",
"Off-duty Engineer" = "itg_orange",
"Off-duty Medic" = "itg_white",
"Off-duty Scientist" = "itg_purple",
"Off-duty Cargo" = "itg",
"Off-duty Explorer" = "itg_purple",
"Off-duty Worker" = "itg_green"
JOB_PILOT = "itg",
JOB_ALT_VISITOR = "itg",
JOB_QUARTERMASTER = "itg",
JOB_CARGO_TECHNICIAN = "itg",
JOB_SHAFT_MINER = "itg",
JOB_INTERN = "itg",
JOB_TALON_PILOT = "itg",
JOB_TALON_MINER = "itg",
JOB_BARTENDER = "itg_green",
JOB_BOTANIST = "itg_green",
JOB_CHEF = "itg_green",
JOB_JANITOR = "itg_green",
JOB_CHAPLAIN = "itg_green",
JOB_ENTERTAINER = "itg_green",
JOB_LIBRARIAN = "itg_green",
JOB_WARDEN = "itg_red",
JOB_DETECTIVE = "itg_red",
JOB_SECURITY_OFFICER = "itg_red",
JOB_TALON_GUARD = "itg_red",
JOB_ROBOTICIST = "itg_purple",
JOB_SCIENTIST = "itg_purple",
JOB_XENOBIOLOGIST = "itg_purple",
JOB_XENOBOTANIST = "itg_purple",
JOB_PATHFINDER = "itg_purple",
JOB_EXPLORER = "itg_purple",
JOB_CHEMIST = "itg_white",
JOB_MEDICAL_DOCTOR = "itg_white",
JOB_PARAMEDIC = "itg_white",
JOB_PSYCHIATRIST = "itg_white",
JOB_FIELD_MEDIC = "itg_white",
JOB_TALON_DOCTOR = "itg_white",
JOB_ATMOSPHERIC_TECHNICIAN = "itg_orange",
JOB_ENGINEER = "itg_orange",
JOB_OFFDUTY_OFFICER = "itg_red",
JOB_OFFDUTY_ENGINEER = "itg_orange",
JOB_OFFDUTY_MEDIC = "itg_white",
JOB_OFFDUTY_SCIENTIST = "itg_purple",
JOB_OFFDUTY_CARGO = "itg",
JOB_OFFDUTY_EXPLORER = "itg_purple",
JOB_OFFDUTY_WORKER = "itg_green"
)
var/guess = jobs_to_icon[user.job]
@@ -574,10 +576,10 @@
name = user.name + "'s ITG ID card" + " ([assignment])"
/obj/item/card/id/event/polymorphic/itg/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/card/id) && !accessset)
var/obj/item/card/id/O = I
var/list/itgdont = list("Site Manager", "Head of Personnel", "Command Secretary", "Head of Security", "Chief Engineer", "Chief Medical Officer", "Research Director", "Clown", "Mime", "Talon Captain") //If you're in as one of these you probably aren't representing ITG
/obj/item/weapon/card/id/event/polymorphic/itg/attackby(obj/item/I as obj, var/mob/user)
if(istype(I, /obj/item/weapon/card/id) && !accessset)
var/obj/item/weapon/card/id/O = I
var/list/itgdont = list(JOB_SITE_MANAGER, JOB_HEAD_OF_PERSONNEL, JOB_COMMAND_SECRETARY, JOB_HEAD_OF_SECURITY, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_RESEARCH_DIRECTOR, JOB_CLOWN, JOB_MIME, JOB_TALON_CAPTAIN) //If you're in as one of these you probably aren't representing ITG
if(O.rank in itgdont)
to_chat(user, "<span class='notice'>ITG Cards do not seem to be able to accept the access codes for your ID.</span>")
return
@@ -27,9 +27,9 @@
/obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity)
if(!proximity) return
if(istype(O, /obj/item/card/id))
var/obj/item/card/id/I = O
src.access |= I.access
if(istype(O, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/I = O
src.access |= I.GetAccess()
if(player_is_antag(user.mind) || registered_user == user)
to_chat(user, "<span class='notice'>The microscanner activates as you pass it over the ID, copying its access.</span>")
+7 -7
View File
@@ -647,12 +647,12 @@
</html>
"}
/obj/item/book/manual/robotics_cyborgs
name = "Cyborgs for Dummies"
/obj/item/weapon/book/manual/robotics_cyborgs
name = JOB_CYBORG + "s for Dummies"
icon_state = "borgbook"
item_state = "book1"
author = "XISC"
title = "Cyborgs for Dummies"
title = JOB_CYBORG + "s for Dummies"
dat = {"<html>
<head>
@@ -949,12 +949,12 @@
"}
/obj/item/book/manual/chef_recipes
name = "Chef Recipes"
/obj/item/weapon/book/manual/chef_recipes
name = JOB_CHEF + " Recipes"
icon_state = "cooked_book"
item_state = "book16"
author = "Victoria Ponsonby"
title = "Chef Recipes"
title = JOB_CHEF + " Recipes"
dat = {"<html>
<head>
@@ -1401,7 +1401,7 @@
name = "Sneezes and Coughs: A Guide To Virology, 1st Edition"
icon_state = "bookvirology"
item_state = "book5"
author = "James Simpson, Chief Virologist"
author = "James Simpson, Chief " + JOB_ALT_VIROLOGIST
title = "Sneezes and Coughs: A Guide To Virology, 1st Edition"
dat = {"<html>
<head>
@@ -198,7 +198,7 @@
/obj/item/material/kitchen/rollingpin
name = "rolling pin"
desc = "Used to knock out the Bartender."
desc = "Used to knock out the " + JOB_BARTENDER+ "."
icon_state = "rolling_pin"
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
default_material = "wood"
@@ -63,7 +63,7 @@
name = "kitchen knife"
icon = 'icons/obj/kitchen.dmi'
icon_state = "knife"
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
desc = "A general purpose " + JOB_CHEF + "'s Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
description_fluff = "This could be used to engrave messages on suitable surfaces if you really put your mind to it! Alt-click a floor or wall to engrave with it." //This way it's not a completely hidden, arcane art to engrave.
sharp = TRUE
edge = TRUE
@@ -38,7 +38,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
/obj/item/storage/bible/attack_self(mob/living/carbon/human/user)
if(user?.mind?.assigned_role != "Chaplain")
if(user?.mind?.assigned_role != JOB_CHAPLAIN)
return FALSE
if (!user.mind.my_religion)
@@ -82,7 +82,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
return FALSE
if(user.incapacitated())
return FALSE
if(user.mind.assigned_role != "Chaplain")
if(user.mind.assigned_role != JOB_CHAPLAIN)
return FALSE
return TRUE
@@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
/obj/item/storage/bible/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) return
if(user.mind && (user.mind.assigned_role == "Chaplain"))
if(user.mind && (user.mind.assigned_role == JOB_CHAPLAIN))
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
to_chat(user, "<span class='notice'>You bless [A].</span>")
var/water2holy = A.reagents.get_reagent_amount("water")
+1 -1
View File
@@ -179,7 +179,7 @@
icon = 'icons/mob/screen1.dmi'
icon_state = "x"
spawn_nothing_percentage = 10
var/faction = "wild animal"
var/faction = FACTION_WILD_ANIMAL
/obj/random/outside_mob/item_to_spawn() // Special version for mobs to have the same faction.
return pick(
+3 -3
View File
@@ -351,7 +351,7 @@
desc_with_canvas = "A masterpiece hand-picked by the librarian, supposedly."
persistence_id = "library"
req_one_access = list(access_library)
curator = "Librarian"
curator = JOB_LIBRARIAN
/obj/structure/sign/painting/chapel_secure
name = "\improper Religious Painting Exhibit mounting"
@@ -359,7 +359,7 @@
desc_with_canvas = "A masterpiece hand-picked by the chaplain, supposedly."
persistence_id = "chapel"
req_one_access = list(access_chapel_office)
curator = "Chaplain"
curator = JOB_CHAPLAIN
/obj/structure/sign/painting/library_private // keep your smut away from prying eyes, or non-librarians at least
name = "\improper Private Painting Exhibit mounting"
@@ -367,7 +367,7 @@
desc_with_canvas = "A painting hung away from lesser minds."
persistence_id = "library_private"
req_one_access = list(access_library)
curator = "Librarian"
curator = JOB_LIBRARIAN
/obj/structure/sign/painting/away_areas // for very hard-to-get-to areas
name = "\improper Remote Painting Exhibit mounting"
@@ -78,7 +78,7 @@
var/choice
var/finalized = "No"
if(jobban_isbanned(M, "GhostRoles"))
if(jobban_isbanned(M, JOB_GHOSTROLES))
to_chat(M, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
reset_ghostpod()
return
@@ -87,7 +87,7 @@
/obj/structure/ghost_pod/ghost_activated/attack_ghost(var/mob/observer/dead/user)
//VOREStation Add Start
if(jobban_isbanned(user, "GhostRoles"))
if(jobban_isbanned(user, JOB_GHOSTROLES))
to_chat(user, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
@@ -11,7 +11,7 @@
var/activated = FALSE
/obj/structure/ghost_pod/manual/attack_ghost(var/mob/observer/dead/user)
if(jobban_isbanned(user, "GhostRoles"))
if(jobban_isbanned(user, JOB_GHOSTROLES))
to_chat(user, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
+2 -2
View File
@@ -14,11 +14,11 @@
/obj/structure/cult/pylon/swarm/CanPass(atom/movable/mover, turf/target)
if(istype(mover, /mob/living))
var/mob/living/L = mover
if(L.faction == "swarmer")
if(L.faction == FACTION_SWARMER)
return TRUE
else if(istype(mover, /obj/item/projectile))
var/obj/item/projectile/P = mover
if(istype(P.firer) && P.firer.faction == "swarmer")
if(istype(P.firer) && P.firer.faction == FACTION_SWARMER)
return TRUE
return ..()
@@ -88,7 +88,7 @@
return
//VOREStation Add Start
if(jobban_isbanned(user, "GhostRoles"))
if(jobban_isbanned(user, JOB_GHOSTROLES))
to_chat(user, "<span class='warning'>You cannot become a mouse because you are banned from playing ghost roles.</span>")
return
//VOREStation Add End