Converts jobs and admin equipment to use outfits (#5827)

Converts the jobs and admin equipment to use outfit datums.
This commit is contained in:
Werner
2019-02-19 23:58:05 +02:00
committed by Erki
parent 1bc27306a0
commit b823b4eb05
38 changed files with 1802 additions and 1447 deletions
+7
View File
@@ -85,3 +85,10 @@
* Parameters: var/obj/structure/closet/crate/sold, var/area/shuttle
*/
/hook/sell_crate
/**
* Captain spawned.
* Called whenever a captain is spawned.
* Parameters: var/mob/living/carbon/human
*/
/hook/captain_spawned
+29 -74
View File
@@ -14,6 +14,8 @@
// Vars.
var/list/occupations = list()
var/list/name_occupations = list() //Dict of all jobs, keys are titles
var/list/type_occupations = list() //Dict of all jobs, keys are titles
var/list/unassigned = list()
var/list/job_debug = list()
@@ -43,7 +45,11 @@
var/datum/job/job = new J()
if(!job || job.faction != faction)
continue
if(!job.faction in faction)
continue
occupations += job
name_occupations[job.title] = job
type_occupations[J] = job
if (config && config.use_age_restriction_for_jobs)
job.fetch_age_restriction()
@@ -53,13 +59,16 @@
if (!rank)
return null
for (var/thing in occupations)
var/datum/job/J = thing
if (!J)
continue
return name_occupations[rank]
if (J.title == rank)
return J
/datum/controller/subsystem/jobs/proc/GetJobType(jobtype)
if(!jobtype)
return null
return type_occupations[jobtype]
/datum/controller/subsystem/jobs/proc/GetRandomJob()
return pick(occupations)
/datum/controller/subsystem/jobs/proc/ShouldCreateRecords(var/rank)
if(!rank) return 0
@@ -315,22 +324,20 @@
var/datum/job/job = GetJob(rank)
var/list/spawn_in_storage = list()
H.job = rank
if(job)
var/list/custom_equip_slots = list() //If more than one item takes the same slot, all after the first one spawn in storage.
var/list/custom_equip_leftovers = list()
//Equip job items.
if(!megavend) //Equip custom gear loadout.
Debug("ER/([H]): Equipping custom loadout.")
job.equip_backpack(H)
job.pre_equip(H)
job.setup_account(H)
EquipCustom(H, job, H.client.prefs, custom_equip_leftovers, spawn_in_storage, custom_equip_slots)
// This goes after custom loadout it doesn't prevent custom loadout stuff from being equipped.
job.equip_survival(H)
job.equip(H)
job.apply_fingerprints(H)
// Randomize nutrition and hydration. Defines are in __defines/mobs.dm
@@ -343,9 +350,7 @@
if (!megavend)
spawn_in_storage += EquipCustomDeferred(H, H.client.prefs, custom_equip_leftovers, custom_equip_slots)
else
H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
H.job = rank
to_chat(H,"Your job is [rank] and the game just can't handle it! Please report this bug to an administrator.")
if(!joined_late || job.latejoin_at_spawnpoints)
var/obj/S = get_roundstart_spawnpoint(rank)
@@ -384,9 +389,6 @@
if("AI")
Debug("ER/([H]): Job is AI, returning early.")
return H
if("Captain")
var/sound/announce_sound = (SSticker.current_state <= GAME_STATE_SETTING_UP)? null : sound('sound/misc/boatswain.ogg', volume=20)
captain_announcement.Announce("All hands, Captain [H.real_name] on deck!", new_sound=announce_sound)
//Deferred item spawning.
if(!megavend && LAZYLEN(spawn_in_storage))
@@ -408,11 +410,6 @@
if(job.supervisors)
H << "<b>As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>"
if(job.idtype)
spawnId(H, rank, alt_title)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_l_ear)
H << "<b>To speak on your department's radio channel use :h. For the use of other channels, examine your headset.</b>"
if(job.req_admin_notify)
H << "<b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b>"
@@ -512,11 +509,13 @@
var/datum/job/job = GetJob(rank)
H.job = rank
if(spawning_at != "Arrivals Shuttle" || job.latejoin_at_spawnpoints)
return EquipRank(H, rank, 1)
var/list/spawn_in_storage = list()
H <<"<span class='notice'>You have ten minutes to reach the station before you will be forced there.</span>"
to_chat(H,"<span class='notice'>You have ten minutes to reach the station before you will be forced there.</span>")
if(job)
//Equip custom gear loadout.
@@ -525,19 +524,16 @@
EquipCustom(H, job, H.client.prefs, custom_equip_leftovers, spawn_in_storage, custom_equip_slots)
Debug("EP/([H]): EC Complated, running pre_equip and late_equip.")
//Equip job items.
job.pre_equip(H) // Spawn in the backpack
job.late_equip(H)
job.equip_backpack(H)
job.equip_survival(H)
job.setup_account(H)
spawn_in_storage += EquipCustomDeferred(H, H.client.prefs, custom_equip_leftovers, custom_equip_slots)
job.apply_fingerprints(H)
else
H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
H.job = rank
to_chat(H,"Your job is [rank] and the game just can't handle it! Please report this bug to an administrator.")
if(LAZYLEN(spawn_in_storage))
EquipItemsStorage(H, H.client.prefs, spawn_in_storage)
@@ -574,47 +570,6 @@
return H
/datum/controller/subsystem/jobs/proc/spawnId(mob/living/carbon/human/H, rank, title)
if (!H)
return FALSE
Debug("SI/([H]): Entry; rank=[rank],title=[title].")
var/obj/item/weapon/card/id/C = null
var/datum/job/job = GetJob(rank)
if(job)
if(job.title == "Cyborg")
Debug("SI/([H]): Abort; job is cyborg.")
return
else
C = new job.idtype(H)
C.access = job.get_access(title)
else
C = new /obj/item/weapon/card/id(H)
if(C)
C.rank = rank
C.assignment = title ? title : rank
addtimer(CALLBACK(H, /mob/.proc/set_id_info, C), 1 SECOND) // Delay a moment to allow an icon update to happen.
//put the player's account number onto the ID
if(H.mind && H.mind.initial_account)
C.associated_account_number = H.mind.initial_account.account_number
H.equip_to_slot_or_del(C, slot_wear_id)
H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt)
if(locate(/obj/item/device/pda,H))
var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H)
pda.owner = H.real_name
pda.ownjob = C.assignment
pda.ownrank = C.rank
pda.name = "PDA-[H.real_name] ([pda.ownjob])"
Debug("SI/([H]): Completed.")
return TRUE
/datum/controller/subsystem/jobs/proc/LoadJobs(jobsfile)
if (!config.load_jobs_from_txt)
return FALSE
@@ -792,14 +747,14 @@
// This is a miserable way to fix the loadout overwrite bug, but the alternative requires
// adding an arg to a bunch of different procs. Will look into it after this merge. ~ Z
var/metadata = prefs.gear[G.display_name]
var/obj/item/CI = G.spawn_item(H,metadata)
var/obj/item/CI = G.spawn_item(null,metadata)
if (G.slot == slot_wear_mask || G.slot == slot_wear_suit || G.slot == slot_head)
if (leftovers)
leftovers += thing
Debug("EC/([H]): [thing] failed mask/suit/head check; leftovers=[!!leftovers]")
else if (H.equip_to_slot_or_del(CI, G.slot))
CI.autodrobe_no_remove = TRUE
H << "<span class='notice'>Equipping you with \a [thing]!</span>"
to_chat(H, "<span class='notice'>Equipping you with [thing]!</span>")
custom_equip_slots += G.slot
Debug("EC/([H]): Equipped [CI] successfully.")
else if (leftovers)
@@ -827,7 +782,7 @@
var/metadata = prefs.gear[G.display_name]
var/obj/item/CI = G.spawn_item(H, metadata)
if (H.equip_to_slot_or_del(CI, G.slot))
to_chat(H, "<span class='notice'>Equipping you with \a [thing]!</span>")
to_chat(H, "<span class='notice'>Equipping you with [thing]!</span>")
used_slots += G.slot
CI.autodrobe_no_remove = TRUE
Debug("ECD/([H]): Equipped [thing] successfully.")
+2 -2
View File
@@ -322,9 +322,9 @@
return R
/proc/GetAssignment(var/mob/living/carbon/human/H)
if(H.mind.role_alt_title)
if(H.mind && H.mind.role_alt_title)
return H.mind.role_alt_title
else if(H.mind.assigned_role)
else if(H.mind && H.mind.assigned_role)
return H.mind.assigned_role
else if(H.job)
return H.job
+206
View File
@@ -0,0 +1,206 @@
/datum/outfit
var/name = "Naked"
var/collect_not_del = FALSE
//The following vars can either be a path or a list of paths
//If a list of paths is supplied a random item from that list is selected
var/uniform = null
var/suit = null
var/back = null
var/belt = null
var/gloves = null
var/shoes = null
var/head = null
var/mask = null
var/l_ear = null
var/r_ear = null
var/glasses = null
var/l_pocket = null
var/r_pocket = null
var/suit_store = null
//The following vars must be paths
var/l_hand = null
var/r_hand = null
var/id = null
var/pda = null
var/internals_slot = null //ID of slot containing a gas tank
var/list/backpack_contents = list() //In the list(path=count,otherpath=count) format
var/list/implants = null //A list of implants that should be implanted
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//to be overriden for customization depending on client prefs,species etc
return
// Used to equip an item to the mob. Mainly to prevent copypasta for collect_not_del.
/datum/outfit/proc/equip_item(mob/living/carbon/human/H, path, slot)
var/obj/item/I
if(isnum(path)) //Check if parameter is not numeric. Must be a path, list of paths or name of a gear datum
CRASH("Outfit [name] - Parameter path: [path] is numeric.")
if(islist(path)) //If its a list, select a random item
var/itempath = pick(path)
I = new itempath(H)
else if(gear_datums[path]) //If its something else, we´ll check if its a gearpath and try to spawn it
var/datum/gear/G = gear_datums[path]
I = G.spawn_random()
else
I = new path(H) //As fallback treat it as a path
if(collect_not_del)
H.equip_or_collect(I, slot)
else
H.equip_to_slot_or_del(I, slot)
/datum/outfit/proc/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//to be overriden for changing items post equip (such as toggeling internals, ...)
/datum/outfit/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//Start with uniform,suit,backpack for additional slots
if(back)
equip_item(H, back, slot_back)
if(uniform)
equip_item(H, uniform, slot_w_uniform)
if(suit)
equip_item(H, suit, slot_wear_suit)
if(belt)
equip_item(H, belt, slot_belt)
if(gloves)
equip_item(H, gloves, slot_gloves)
if(shoes)
equip_item(H, shoes, slot_shoes)
if(head)
equip_item(H, head, slot_head)
if(mask)
equip_item(H, mask, slot_wear_mask)
if(l_ear)
equip_item(H, l_ear, slot_l_ear)
if(r_ear)
equip_item(H, r_ear, slot_r_ear)
if(glasses)
equip_item(H, glasses, slot_glasses)
if(suit_store)
equip_item(H, suit_store, slot_s_store)
if(l_hand)
H.put_in_l_hand(new l_hand(H))
if(r_hand)
H.put_in_r_hand(new r_hand(H))
if(pda && !visualsOnly) //Dont equip and imprint the PDA in visuals only (preview) to avoid duplicates
var/obj/item/I = new pda(H)
imprint_pda(H,I)
H.equip_or_collect(I, slot_wear_id)
if(id)
var/obj/item/device/pda/P = H.wear_id
var/obj/item/I = new id(H)
imprint_idcard(H,I)
if(istype(P))
I.forceMove(P)
P.id = I
else
H.equip_or_collect(I, slot_wear_id)
if(!visualsOnly) // Items in pockets or backpack don't show up on mob's icon.
if(l_pocket)
equip_item(H, l_pocket, slot_l_store)
if(r_pocket)
equip_item(H, r_pocket, slot_r_store)
for(var/path in backpack_contents)
var/number = backpack_contents[path]
for(var/i in 1 to number)
H.equip_or_collect(new path(H), slot_in_backpack)
post_equip(H, visualsOnly)
if(!visualsOnly)
apply_fingerprints(H)
if(implants)
for(var/implant_type in implants)
var/obj/item/weapon/implant/I = new implant_type(H)
if(I.implanted(H))
I.forceMove(H)
I.imp_in = H
I.implanted = 1
var/obj/item/organ/external/affected = H.get_organ("head")
affected.implants += I
I.part = affected
H.update_body()
return 1
/datum/outfit/proc/apply_fingerprints(mob/living/carbon/human/H)
if(!istype(H))
return
if(H.back)
H.back.add_fingerprint(H, 1) //The 1 sets a flag to ignore gloves
for(var/obj/item/I in H.back.contents)
I.add_fingerprint(H, 1)
if(H.wear_id)
H.wear_id.add_fingerprint(H, 1)
if(H.w_uniform)
H.w_uniform.add_fingerprint(H, 1)
if(H.wear_suit)
H.wear_suit.add_fingerprint(H, 1)
if(H.wear_mask)
H.wear_mask.add_fingerprint(H, 1)
if(H.head)
H.head.add_fingerprint(H, 1)
if(H.shoes)
H.shoes.add_fingerprint(H, 1)
if(H.gloves)
H.gloves.add_fingerprint(H, 1)
if(H.l_ear)
H.l_ear.add_fingerprint(H, 1)
if(H.r_ear)
H.r_ear.add_fingerprint(H, 1)
if(H.glasses)
H.glasses.add_fingerprint(H, 1)
if(H.belt)
H.belt.add_fingerprint(H, 1)
for(var/obj/item/I in H.belt.contents)
I.add_fingerprint(H, 1)
if(H.s_store)
H.s_store.add_fingerprint(H, 1)
if(H.l_store)
H.l_store.add_fingerprint(H, 1)
if(H.r_store)
H.r_store.add_fingerprint(H, 1)
return 1
/datum/outfit/proc/imprint_idcard(mob/living/carbon/human/H, obj/item/weapon/card/id/C)
if(istype(C))
C.access = get_id_access(H)
C.rank = get_id_rank(H)
C.assignment = get_id_assignment(H)
addtimer(CALLBACK(H, /mob/.proc/set_id_info, C), 1 SECOND) // Delay a moment to allow an icon update to happen.
if(H.mind && H.mind.initial_account)
C.associated_account_number = H.mind.initial_account.account_number
/datum/outfit/proc/imprint_pda(mob/living/carbon/human/H, obj/item/device/pda/PDA)
var/obj/item/weapon/card/id/C = PDA.id
PDA.owner = H.real_name
if(istype(PDA) && istype(C))
PDA.ownjob = C.assignment
PDA.ownrank = C.rank
else //As a fallback if the id isnt inside of the PDA
PDA.ownjob = get_id_assignment(H)
PDA.ownrank = get_id_rank(H)
PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
/datum/outfit/proc/get_id_access(mob/living/carbon/human/H)
return list()
/datum/outfit/proc/get_id_assignment(mob/living/carbon/human/H)
return GetAssignment(H)
/datum/outfit/proc/get_id_rank(mob/living/carbon/human/H)
return GetAssignment(H)
+416
View File
@@ -0,0 +1,416 @@
/datum/outfit/admin/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(!visualsOnly)
if(H.mind)
H.mind.assigned_role = name
H.job = name
/datum/outfit/admin/syndicate
name = "Syndicate Agent"
uniform = /obj/item/clothing/under/syndicate
back = /obj/item/weapon/storage/backpack
belt = /obj/item/weapon/storage/belt/utility/full
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
l_ear = /obj/item/device/radio/headset/syndicate
id = /obj/item/weapon/card/id/syndicate
r_pocket = /obj/item/device/radio/uplink
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/device/flashlight = 1,
/obj/item/weapon/card/emag = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/device/multitool = 1
)
var/id_icon = "syndie"
var/id_access = "Syndicate Operative"
var/uplink_uses = 20
/datum/outfit/admin/syndicate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
var/obj/item/device/radio/uplink/U = H.r_store
if(istype(U))
U.hidden_uplink.uplink_owner = "[H.key]"
U.hidden_uplink.uses = uplink_uses
/datum/outfit/admin/syndicate/get_id_access()
return get_syndicate_access(id_access)
/datum/outfit/admin/syndicate/operative
name = "Syndicate Operative"
suit = /obj/item/clothing/suit/space/void/merc
belt = /obj/item/weapon/storage/belt/military
head = /obj/item/clothing/head/helmet/space/void/merc
mask = /obj/item/clothing/mask/gas/syndicate
l_ear = /obj/item/device/radio/headset/syndicate
glasses = /obj/item/clothing/glasses/night
shoes = /obj/item/clothing/shoes/magboots
l_pocket = /obj/item/weapon/pinpointer/nukeop
l_hand = /obj/item/weapon/tank/jetpack/void
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1,
/obj/item/weapon/gun/projectile/automatic/x9 = 1,
/obj/item/ammo_magazine/c45x = 1,
/obj/item/weapon/crowbar/red = 1,
/obj/item/weapon/plastique = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/device/flashlight = 1,
/obj/item/clothing/shoes/combat = 1
)
/datum/outfit/admin/syndicate/officer
name = "Syndicate Officer"
head = /obj/item/clothing/head/beret
mask = /obj/item/clothing/mask/smokable/cigarette/cigar/havana
belt = /obj/item/weapon/gun/projectile/deagle/camo
l_ear = /obj/item/device/radio/headset/syndicate
l_pocket = /obj/item/weapon/pinpointer/advpinpointer
r_pocket = null // stop them getting a radio uplink, they get an implant instead
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1,
/obj/item/device/flashlight = 1,
/obj/item/weapon/reagent_containers/pill/cyanide = 1,
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 1,
/obj/item/ammo_magazine/a50 = 2,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/weapon/flame/lighter/zippo = 1
)
implants = list(
/obj/item/weapon/implant/explosive
)
id_icon = "commander"
id_access = "Syndicate Operative Leader"
/datum/outfit/admin/syndicate/spy
name = "Syndicate Spy"
uniform = /obj/item/clothing/under/suit_jacket/really_black
shoes = /obj/item/clothing/shoes/black/noslip
uplink_uses = 40
id_access = "Syndicate Agent"
implants = list(
/obj/item/weapon/implant/explosive
)
/datum/outfit/admin/nt
name = "NanoTrasen Representative"
uniform = /obj/item/clothing/under/rank/centcom
back = /obj/item/weapon/storage/backpack/satchel
gloves = /obj/item/clothing/gloves/white
shoes = /obj/item/clothing/shoes/laceup
l_ear = /obj/item/device/radio/headset/heads/hop
glasses = /obj/item/clothing/glasses/sunglasses
id = /obj/item/weapon/card/id
backpack_contents = list(
/obj/item/weapon/storage/box/engineer = 1
)
var/id_icon = "centcom"
var/id_access = "NanoTrasen Representative"
/datum/outfit/admin/nt/get_id_access()
return get_all_accesses() | get_centcom_access(id_access)
/datum/outfit/admin/nt/officer
name = "NanoTrasen Navy Officer"
uniform = /obj/item/clothing/under/rank/centcom_officer
l_ear = /obj/item/device/radio/headset/heads/captain
head = /obj/item/clothing/head/beret/centcom/officer
/datum/outfit/admin/nt/captain
name = "NanoTrasen Navy Captain"
uniform = /obj/item/clothing/under/rank/centcom_captain
l_ear = /obj/item/device/radio/headset/heads/captain
head = /obj/item/clothing/head/beret/centcom/captain
/datum/outfit/admin/nt/protection_detail
name = "ERT Protection Detail"
uniform = /obj/item/clothing/under/ccpolice
suit = /obj/item/clothing/suit/storage/vest/heavy/ert/peacekeeper
shoes = /obj/item/clothing/shoes/swat
gloves = /obj/item/clothing/gloves/swat
l_ear = /obj/item/device/radio/headset/ert
glasses = /obj/item/clothing/glasses/sunglasses/sechud
head = /obj/item/clothing/head/beret/centcom/officer
backpack_contents = list(
/obj/item/weapon/gun/energy/gun = 1,
/obj/item/clothing/head/helmet/swat/peacekeeper = 1,
/obj/item/clothing/accessory/holster/hip = 1,
/obj/item/weapon/gun/energy/pistol = 1
)
implants = list(
/obj/item/weapon/implant/loyalty
)
/datum/outfit/admin/nt/ert_commander
name = "ERT Commander"
uniform = /obj/item/clothing/under/rank/centcom_commander
suit = /obj/item/clothing/suit/storage/vest/heavy/ert/commander
shoes = /obj/item/clothing/shoes/swat
gloves = /obj/item/clothing/gloves/swat
l_ear = /obj/item/device/radio/headset/ert
glasses = /obj/item/clothing/glasses/sunglasses/sechud
head = /obj/item/clothing/head/beret/centcom/commander
backpack_contents = list(
/obj/item/weapon/storage/fancy/cigar = 1,
/obj/item/weapon/flame/lighter/zippo = 1,
/obj/item/clothing/accessory/medal/gold/heroism = 1
)
implants = list(
/obj/item/weapon/implant/loyalty
)
/datum/outfit/admin/nt/odinsec
name = "NTCC Odin Security Specialist"
uniform = /obj/item/clothing/under/ccpolice
suit = /obj/item/clothing/suit/storage/vest/heavy/ert/peacekeeper
shoes = /obj/item/clothing/shoes/swat
gloves = /obj/item/clothing/gloves/swat
l_ear = /obj/item/device/radio/headset/ert
glasses = /obj/item/clothing/glasses/sunglasses/sechud/tactical
mask = /obj/item/clothing/mask/gas/tactical
head = /obj/item/clothing/head/helmet/swat/peacekeeper
r_pocket = /obj/item/weapon/handcuffs/ziptie
l_pocket = /obj/item/weapon/grenade/chem_grenade/gas
l_hand = /obj/item/weapon/shield/riot/tact
backpack_contents = list(
/obj/item/weapon/gun/projectile/automatic/x9 = 1,
/obj/item/ammo_magazine/c45x = 2,
/obj/item/clothing/accessory/holster/hip = 1,
/obj/item/weapon/gun/energy/gun = 1
)
implants = list(
/obj/item/weapon/implant/loyalty
)
/datum/outfit/admin/nt/specops
name = "Special Operations Officer"
uniform = /obj/item/clothing/under/syndicate/combat
suit = /obj/item/clothing/suit/armor/swat/officer
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
l_ear = /obj/item/device/radio/headset/ert
glasses = /obj/item/clothing/glasses/eyepatch/hud/thermal
mask = /obj/item/clothing/mask/smokable/cigarette/cigar/havana
head = /obj/item/clothing/head/helmet/space/deathsquad/beret
belt = /obj/item/weapon/gun/energy/pulse/pistol
r_pocket = /obj/item/weapon/flame/lighter/zippo
implants = list(
/obj/item/weapon/implant/loyalty
)
id_access = "Death Commando"
/datum/outfit/admin/pirate
name = "Pirate"
uniform = /obj/item/clothing/under/pirate
shoes = /obj/item/clothing/shoes/brown
head = /obj/item/clothing/head/bandana
glasses = /obj/item/clothing/glasses/eyepatch
r_hand = /obj/item/weapon/melee/energy/sword/pirate
/datum/outfit/admin/spacepirate
name = "Space Pirate"
uniform = /obj/item/clothing/under/pirate
suit = /obj/item/clothing/suit/space/pirate
shoes = /obj/item/clothing/shoes/brown
head = /obj/item/clothing/head/helmet/space/pirate
glasses = /obj/item/clothing/glasses/eyepatch
r_hand = /obj/item/weapon/melee/energy/sword/pirate
/datum/outfit/admin/sovietsoldier
name = "Soviet Soldier"
uniform = /obj/item/clothing/under/soviet
shoes = /obj/item/clothing/shoes/black
head = /obj/item/clothing/head/ushanka
/datum/outfit/admin/sovietsoldier
name = "Soviet Admiral"
uniform = /obj/item/clothing/under/soviet
suit = /obj/item/clothing/suit/hgpirate
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
head = /obj/item/clothing/head/hgpiratecap
belt = /obj/item/weapon/gun/projectile/revolver/mateba
l_ear = /obj/item/device/radio/headset/heads/captain
glasses = /obj/item/clothing/glasses/eyepatch/hud/thermal
id = /obj/item/weapon/card/id
/datum/outfit/admin/sovietsoldier/get_id_assignment()
return "Admiral"
/datum/outfit/admin/sovietsoldier/get_id_rank()
return "Admiral"
/datum/outfit/admin/maskedkiller
name = "Masked Killer"
uniform = /obj/item/clothing/under/overalls
suit = /obj/item/clothing/suit/apron
shoes = /obj/item/clothing/shoes/white
gloves = /obj/item/clothing/gloves/latex
mask = /obj/item/clothing/mask/surgical
head = /obj/item/clothing/head/welding
l_ear = /obj/item/device/radio/headset
glasses = /obj/item/clothing/glasses/thermal/plain/monocle
l_pocket = /obj/item/weapon/material/knife
r_pocket = /obj/item/weapon/scalpel
r_hand = /obj/item/weapon/material/twohanded/fireaxe
id = null
/datum/outfit/admin/maskedkiller/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
for(var/obj/item/carried_item in H.contents)
if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
carried_item.add_blood(H)//Oh yes, there will be blood...
/datum/outfit/admin/assassin
name = "Assassin"
uniform = /obj/item/clothing/under/suit_jacket
suit = /obj/item/clothing/suit/wcoat
shoes = /obj/item/clothing/shoes/black
gloves = /obj/item/clothing/gloves/black
l_ear = /obj/item/device/radio/headset
glasses = /obj/item/clothing/glasses/sunglasses
l_pocket = /obj/item/weapon/melee/energy/sword
r_pocket = /obj/item/weapon/cloaking_device
id = /obj/item/weapon/card/id/syndicate
pda = /obj/item/device/pda/heads
/datum/outfit/admin/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(H)
for(var/obj/item/briefcase_item in sec_briefcase)
qdel(briefcase_item)
for(var/i=3, i>0, i--)
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
sec_briefcase.contents += new /obj/item/ammo_magazine/a357
sec_briefcase.contents += new /obj/item/weapon/plastique
H.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
/datum/outfit/admin/assassin/get_id_access()
return get_all_station_access()
/datum/outfit/admin/random_employee
name = "Random Employee"
/datum/outfit/admin/random_employee/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(!visualsOnly)
//Select a random job, set the assigned_role / job var and equip it
var/datum/job/job = SSjobs.GetRandomJob()
var/alt_title = null
if(job.alt_titles && prob(50))
alt_title = pick(job.alt_titles)
if(H.mind)
H.mind.assigned_role = alt_title ? alt_title : job.title
H.job = alt_title ? alt_title : job.title
job.equip(H, FALSE, FALSE, alt_title)
/datum/outfit/admin/random
name = "Random Civilian"
uniform = "suit selection"
shoes = "shoe selection"
l_ear = /obj/item/device/radio/headset
back = list(
/obj/item/weapon/storage/backpack,
/obj/item/weapon/storage/backpack/satchel_norm,
/obj/item/weapon/storage/backpack/satchel,
/obj/item/weapon/storage/backpack/duffel,
/obj/item/weapon/storage/backpack/duffel
)
/datum/outfit/admin/random/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(!visualsOnly)
if(prob(10)) //Equip something smokable
var/path = pick(list(
/obj/item/clothing/mask/smokable/pipe,
/obj/item/clothing/mask/smokable/pipe/cobpipe,
/obj/item/weapon/storage/fancy/cigar,
/obj/item/weapon/storage/fancy/cigarettes
))
H.equip_or_collect(new path(), slot_wear_mask)
if(prob(20)) //Equip some headgear
var/datum/gear/G = gear_datums[pick(list("cap selection","beret, red","hat selection","hijab selection","turban selection"))]
H.equip_or_collect(G.spawn_random(), slot_head)
if(prob(20)) //Equip some sunglasses
var/path = pick(list(
/obj/item/clothing/glasses/eyepatch,
/obj/item/clothing/glasses/regular,
/obj/item/clothing/glasses/gglasses,
/obj/item/clothing/glasses/regular/hipster,
/datum/gear/eyes/glasses/monocle,
/datum/gear/eyes/shades/aviator,
/datum/gear/eyes/glasses/fakesun
))
H.equip_or_collect(new path(), slot_glasses)
if(prob(20)) //Equip some gloves
var/datum/gear/G = gear_datums["gloves selection"]
H.equip_or_collect(G.spawn_random(), slot_gloves)
/datum/outfit/admin/random/visitor
name = "Random Visitor"
id = /obj/item/weapon/card/id
pda = /obj/item/device/pda
/datum/outfit/admin/random/visitor/get_id_assignment()
return "Visitor"
/datum/outfit/admin/random/visitor/get_id_rank()
return "Visitor"
+1 -1
View File
@@ -9,7 +9,7 @@
player.drop_from_inventory(thing)
if(thing.loc != player)
qdel(thing)
player.species.equip_survival_gear(player)
player.species.before_equip(player)
return 1
/datum/antagonist/proc/unequip(var/mob/living/carbon/human/player)
+17
View File
@@ -53,6 +53,8 @@
return list(access_cent_general, access_cent_living, access_cent_medical)
if("Death Commando")
return list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
if("NanoTrasen Representative")
return list(access_cent_general, access_cent_living, access_cent_storage, access_cent_thunder, access_cent_medical, access_cent_specops, access_cent_teleporter)
if("Research Officer")
return list(access_cent_general, access_cent_specops, access_cent_medical, access_cent_teleporter, access_cent_storage)
if("BlackOps Commander")
@@ -63,6 +65,21 @@
return list(access_cent_general, access_cent_captain, access_cent_living, access_cent_storage)
if("Emergency Response Team")
return list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
log_debug("Invalid job [job] passed to get_centcom_access")
return list()
/proc/get_syndicate_access(job)
switch(job)
if("Syndicate Operative")
return list(access_syndicate)
if("Syndicate Operative Leader")
return list(access_syndicate, access_syndicate_leader)
if("Syndicate Agent")
return list(access_syndicate, access_maint_tunnels)
if("Syndicate Commando")
return list(access_syndicate, access_syndicate_leader)
log_debug("Invalid job [job] passed to get_syndicate_access")
return list()
/var/list/datum/access/priv_all_access_datums
/proc/get_all_access_datums()
+5
View File
@@ -490,6 +490,11 @@ var/const/access_journalist = 70//journalist's office access
id = access_syndicate
access_type = ACCESS_TYPE_SYNDICATE
/var/const/access_syndicate_leader = 151 //Syndie Commander Access
/datum/access/syndicate_leader
id = access_syndicate_leader
access_type = ACCESS_TYPE_SYNDICATE
/*******
* Misc *
*******/
+8 -11
View File
@@ -13,20 +13,17 @@
minimal_access = list() //See /datum/job/assistant/get_access()
//alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Security Cadet", "Visitor")
alt_titles = list("Visitor")
/datum/job/assistant/equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
var/obj/item/clothing/under/color/grey/G = new /obj/item/clothing/under/color/grey(H)
if(H.equip_to_slot_or_del(G, slot_w_uniform))
G.autodrobe_no_remove = TRUE
var/obj/item/clothing/shoes/black/B = new /obj/item/clothing/shoes/black(H)
if(H.equip_to_slot_or_del(B, slot_shoes))
B.autodrobe_no_remove = TRUE
return TRUE
outfit = /datum/outfit/job/assistant
/datum/job/assistant/get_access()
if(config.assistant_maint)
return list(access_maint_tunnels)
else
return list()
/datum/outfit/job/assistant
name = "Assistant"
jobtype = /datum/job/assistant
uniform = /obj/item/clothing/under/color/grey
shoes = /obj/item/clothing/shoes/black
+51 -44
View File
@@ -11,7 +11,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
spawn_positions = 1
supervisors = "company officials and Corporate Regulations"
selection_color = "#ccccff"
idtype = /obj/item/weapon/card/id/gold
req_admin_notify = 1
access = list() //See get_access()
minimal_access = list() //See get_access()
@@ -20,43 +19,49 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
ideal_character_age = 70 // Old geezer captains ftw
bag_type = /obj/item/weapon/storage/backpack/captain
satchel_type = /obj/item/weapon/storage/backpack/satchel_cap
alt_satchel_type = /obj/item/weapon/storage/backpack/satchel
duffel_type = /obj/item/weapon/storage/backpack/duffel/cap
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/com
outfit = /datum/outfit/job/captain
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/captain(H), slot_w_uniform)
if(H.age>49)
// Since we can have something other than the default uniform at this
// point, check if we can actually attach the medal
var/obj/item/clothing/uniform = H.w_uniform
var/obj/item/clothing/accessory/medal/gold/captain/medal = new()
if(uniform && uniform.can_attach_accessory(medal))
uniform.attach_accessory(null, medal)
else
qdel(medal)
H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
/datum/outfit/job/captain
name = "Captain"
jobtype = /datum/job/captain
uniform = /obj/item/clothing/under/rank/captain
shoes = /obj/item/clothing/shoes/brown
head = /obj/item/clothing/head/caphat
l_ear = /obj/item/device/radio/headset/heads/captain
glasses = /obj/item/clothing/glasses/sunglasses
id = /obj/item/weapon/card/id/gold
pda = /obj/item/device/pda/captain
backpack_contents = list(
/obj/item/weapon/storage/box/ids = 1
)
H.implant_loyalty(H)
implants = list(
/obj/item/weapon/implant/loyalty
)
return TRUE
backpack = /obj/item/weapon/storage/backpack/captain
satchel = /obj/item/weapon/storage/backpack/satchel_cap
dufflebag = /obj/item/weapon/storage/backpack/duffel/cap
messengerbag = /obj/item/weapon/storage/backpack/messenger/com
get_access()
/datum/outfit/job/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(H && H.w_uniform)
var/obj/item/clothing/under/U = H.w_uniform
var/obj/item/clothing/accessory/medal/gold/captain/medal = new()
U.attach_accessory(null, medal)
return TRUE
/datum/job/captain/get_access()
return get_all_station_access()
/datum/job/captain/announce(mob/living/carbon/human/H)
. = ..()
captain_announcement.Announce("All hands, Captain [H.real_name] on deck!")
callHook("captain_spawned", list(H))
/datum/job/hop
title = "Head of Personnel"
flag = HOP
@@ -68,12 +73,13 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ddddff"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
minimal_player_age = 10
economic_modifier = 10
ideal_character_age = 50
outfit = /datum/outfit/job/hop
access = list(access_sec_doors, access_medical, access_engine, access_change_ids, access_eva, access_heads,
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction,
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics,
@@ -85,16 +91,17 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
access_chapel_office, access_library, access_research, access_mining, access_mining_station, access_janitor,
access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_journalist)
/datum/outfit/job/hop
name = "Head of Personnel"
jobtype = /datum/job/hop
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
return TRUE
uniform = /obj/item/clothing/under/rank/head_of_personnel
shoes = /obj/item/clothing/shoes/brown
l_ear = /obj/item/device/radio/headset/heads/hop
id = /obj/item/weapon/card/id/silver
pda = /obj/item/device/pda/heads/hop
backpack_contents = list(
/obj/item/weapon/storage/box/ids = 1
)
messengerbag = /obj/item/weapon/storage/backpack/messenger/com
+149 -131
View File
@@ -12,15 +12,17 @@
access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_bar)
alt_titles = list("Barista")
outfit = /datum/outfit/job/bartender
/datum/outfit/job/bartender
name = "Bartender"
jobtype = /datum/job/bartender
uniform = /obj/item/clothing/under/rank/bartender
pda = /obj/item/device/pda/bar
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/bar(H), slot_belt)
return TRUE
/datum/job/chef
title = "Chef"
@@ -35,23 +37,22 @@
access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_kitchen)
alt_titles = list("Cook")
outfit = /datum/outfit/job/chef
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt)
/datum/outfit/job/chef
name = "Chef"
jobtype = /datum/job/chef
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/produce(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/produce(H.back), slot_in_backpack)
uniform = /obj/item/clothing/under/rank/chef
suit = /obj/item/clothing/suit/chef
head = /obj/item/clothing/head/chefhat
pda = /obj/item/device/pda/chef
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
return TRUE
backpack_contents = list(
/obj/item/weapon/storage/box/produce = 1
)
/datum/job/hydro
title = "Gardener"
@@ -66,28 +67,32 @@
access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_hydroponics)
alt_titles = list("Hydroponicist")
outfit = /datum/outfit/job/hydro
bag_type = /obj/item/weapon/storage/backpack/hydroponics
satchel_type = /obj/item/weapon/storage/backpack/satchel_hyd
duffel_type = /obj/item/weapon/storage/backpack/duffel/hyd
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/hyd
/datum/outfit/job/hydro
name = "Gardener"
jobtype = /datum/job/hydro
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store)
H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt)
return TRUE
uniform = /obj/item/clothing/under/rank/hydroponics
suit = /obj/item/clothing/suit/apron
pda = /obj/item/device/pda/botanist
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
suit_store = /obj/item/device/analyzer/plant_analyzer
backpack = /obj/item/weapon/storage/backpack/hydroponics
satchel = /obj/item/weapon/storage/backpack/satchel_hyd
dufflebag = /obj/item/weapon/storage/backpack/duffel/hyd
messengerbag = /obj/item/weapon/storage/backpack/messenger/hyd
/datum/outfit/job/hydro/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_or_collect(new /obj/item/clothing/gloves/botanic_leather/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_or_collect(new /obj/item/clothing/gloves/botanic_leather/unathi(H), slot_gloves)
else
H.equip_or_collect(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves)
//Cargo
/datum/job/qm
@@ -107,16 +112,19 @@
ideal_character_age = 40
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/quartermaster(H), slot_belt)
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
return 1
outfit = /datum/outfit/job/qm
/datum/outfit/job/qm
name = "Quartermaster"
jobtype = /datum/job/qm
uniform = /obj/item/clothing/under/rank/cargo
pda = /obj/item/device/pda/quartermaster
shoes = /obj/item/clothing/shoes/brown
l_ear = /obj/item/device/radio/headset/headset_cargo
l_hand = /obj/item/weapon/clipboard
glasses = /obj/item/clothing/glasses/sunglasses
/datum/job/cargo_tech
title = "Cargo Technician"
@@ -130,15 +138,17 @@
selection_color = "#dddddd"
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting)
outfit = /datum/outfit/job/cargo_tech
/datum/outfit/job/cargo_tech
name = "Cargo Technician"
jobtype = /datum/job/cargo_tech
uniform = /obj/item/clothing/under/rank/cargotech
pda = /obj/item/device/pda/cargo
shoes = /obj/item/clothing/shoes/brown
l_ear = /obj/item/device/radio/headset/headset_cargo
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt)
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
return 1
/datum/job/mining
title = "Shaft Miner"
@@ -153,33 +163,27 @@
economic_modifier = 5
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_mining, access_mining_station, access_mailsorting)
outfit = /datum/outfit/job/mining
bag_type = /obj/item/weapon/storage/backpack/industrial
satchel_type = /obj/item/weapon/storage/backpack/satchel_eng
duffel_type = /obj/item/weapon/storage/backpack/duffel/eng
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/engi
/datum/outfit/job/mining
name = "Shaft Miner"
jobtype = /datum/job/mining
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store)
else
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack)
return TRUE
uniform = /obj/item/clothing/under/rank/miner
pda = /obj/item/device/pda/shaftminer
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_cargo
backpack_contents = list(
/obj/item/weapon/crowbar = 1,
/obj/item/weapon/storage/bag/ore = 1
)
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/duffel/eng
messengerbag = /obj/item/weapon/storage/backpack/messenger/engi
equip_survival(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.species.equip_survival_gear(H,1)
return TRUE
//Not engineers, just the mop boys
/datum/job/janitor
@@ -194,20 +198,16 @@
selection_color = "#dddddd"
access = list(access_janitor, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_medical)
minimal_access = list(access_janitor, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_medical)
outfit = /datum/outfit/job/janitor
bag_type = /obj/item/weapon/storage/backpack
satchel_type = /obj/item/weapon/storage/backpack/satchel_norm
duffel_type = /obj/item/weapon/storage/backpack/satchel
messenger_bag_type = /obj/item/weapon/storage/backpack/duffel
/datum/outfit/job/janitor
name = "Janitor"
jobtype = /datum/job/janitor
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt)
return TRUE
uniform = /obj/item/clothing/under/rank/janitor
pda = /obj/item/device/pda/janitor
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
/datum/job/journalist
title = "Corporate Reporter"
@@ -222,20 +222,35 @@
access = list(access_journalist, access_maint_tunnels)
minimal_access = list(access_journalist, access_maint_tunnels)
alt_titles = list("Freelance Journalist")
alt_outfits = list("Freelance Journalist" = /datum/outfit/job/journalistf)
title_accesses = list("Corporate Reporter" = list(access_medical, access_sec_doors, access_research, access_engine))
outfit = /datum/outfit/job/journalist
/datum/outfit/job/journalist
name = "Corporate Reporter"
jobtype = /datum/job/journalist
uniform = /obj/item/clothing/under/suit_jacket/red
pda = /obj/item/device/pda/librarian
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
backpack_contents = list(
/obj/item/clothing/accessory/badge/press = 1
)
/datum/outfit/job/journalistf
name = "Freelance Journalist"
jobtype = /datum/job/journalist
uniform = /obj/item/clothing/under/suit_jacket/red
pda = /obj/item/device/pda/librarian
shoes = /obj/item/clothing/shoes/black
backpack_contents = list(
/obj/item/clothing/accessory/badge/press/independent = 1
)
/datum/job/journalist/equip(var/mob/living/carbon/human/H, var/alt_title)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(has_alt_title(H, alt_title,"Corporate Reporter"))
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/accessory/badge/press(H), slot_in_backpack)
else if(has_alt_title(H, alt_title,"Freelance Journalist"))
H.equip_to_slot_or_del(new /obj/item/clothing/accessory/badge/press/independent(H), slot_in_backpack)
return TRUE
/datum/job/librarian
title = "Librarian"
@@ -249,19 +264,20 @@
selection_color = "#dddddd"
access = list(access_library, access_maint_tunnels)
minimal_access = list(access_library)
outfit = /datum/outfit/job/librarian
/datum/outfit/job/librarian
name = "Librarian"
jobtype = /datum/job/librarian
uniform = /obj/item/clothing/under/suit_jacket/red
pda = /obj/item/device/pda/librarian
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
r_pocket = /obj/item/weapon/barcodescanner
l_hand = /obj/item/weapon/storage/bag/books
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_r_store)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/books(H), slot_l_hand)
return TRUE
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
/datum/job/lawyer
title = "Internal Affairs Agent"
flag = LAWYER
@@ -275,18 +291,20 @@
economic_modifier = 7
access = list(access_lawyer, access_sec_doors, access_maint_tunnels, access_heads)
minimal_access = list(access_lawyer, access_sec_doors, access_heads)
outfit = /datum/outfit/job/iaa
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/ia(H), slot_l_ear)
/datum/outfit/job/iaa
name = "Internal Affairs Agent"
jobtype = /datum/job/lawyer
H.implant_loyalty(H)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses)
H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
uniform = /obj/item/clothing/under/rank/internalaffairs
suit = /obj/item/clothing/suit/storage/toggle/internalaffairs
pda = /obj/item/device/pda/lawyer
shoes = /obj/item/clothing/shoes/brown
glasses = /obj/item/clothing/glasses/sunglasses/big
l_ear = /obj/item/device/radio/headset/ia
l_hand = /obj/item/weapon/storage/briefcase
return TRUE
implants = list(
/obj/item/weapon/implant/loyalty
)
+138 -133
View File
@@ -12,151 +12,156 @@
access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels)
minimal_access = list(access_morgue, access_chapel_office, access_crematorium)
alt_titles = list("Presbyter","Rabbi","Imam","Priest","Shaman","Counselor")
outfit = /datum/outfit/job/chaplain
/datum/outfit/job/chaplain
name = "Chaplain"
jobtype = /datum/job/chaplain
equip(var/mob/living/carbon/human/H, var/alt_title, var/ask_questions = TRUE)
if(!H)
return FALSE
uniform = /obj/item/clothing/under/rank/chaplain
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_service
pda = /obj/item/device/pda/chaplain
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT
H.equip_to_slot_or_del(B, slot_r_hand)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(!ask_questions)
return 1
/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
spawn(0)
var/religion_name = "Christianity"
var/new_religion = sanitize(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name), MAX_NAME_LEN)
if(visualsOnly)
return
if (!new_religion)
new_religion = religion_name
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT
H.equip_or_collect(B, slot_r_hand)
switch(lowertext(new_religion))
if("christianity")
B.name = pick("The Holy Bible","The Dead Sea Scrolls")
if("satanism")
B.name = "The Unholy Bible"
if("cthulu")
B.name = "The Necronomicon"
if("islam")
B.name = "Quran"
if("scientology")
B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
if("chaos")
B.name = "The Book of Lorgar"
if("imperium")
B.name = "Uplifting Primer"
if("toolboxia")
B.name = "Toolbox Manifesto"
if("homosexuality")
B.name = "Guys Gone Wild"
if("moroz holy tribunal","moroz","holy tribunal")
B.name = "Tribunal Codex"
//if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks")
// B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
// H.setBrainLoss(100) // starts off retarded as fuck
if("science")
B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
else
B.name = "The Holy Book of [new_religion]"
feedback_set_details("religion_name","[new_religion]")
CALLBACK(src, .proc/select_religion_name, H, B)
spawn(1)
var/deity_name = "Space Jesus"
var/new_deity = sanitize(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name), MAX_NAME_LEN)
return TRUE
if ((length(new_deity) == 0) || (new_deity == "Space Jesus") )
new_deity = deity_name
B.deity_name = new_deity
/datum/outfit/job/chaplain/proc/select_religion_name(mob/living/carbon/human/H, obj/item/weapon/storage/bible/B)
var/religion_name = "Christianity"
var/new_religion = sanitize(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name), MAX_NAME_LEN)
var/accepted = 0
var/outoftime = 0
spawn(200) // 20 seconds to choose
outoftime = 1
var/new_book_style = "Bible"
if (!new_religion)
new_religion = religion_name
while(!accepted)
if(!B) break // prevents possible runtime errors
new_book_style = input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon")
switch(new_book_style)
if("Koran")
B.icon_state = "koran"
B.item_state = "koran"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(4)
if("Scrapbook")
B.icon_state = "scrapbook"
B.item_state = "scrapbook"
if("Creeper")
B.icon_state = "creeper"
B.item_state = "syringe_kit"
if("White Bible")
B.icon_state = "white"
B.item_state = "syringe_kit"
if("Holy Light")
B.icon_state = "holylight"
B.item_state = "syringe_kit"
if("Athiest")
B.icon_state = "athiest"
B.item_state = "syringe_kit"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(10)
if("Tome")
B.icon_state = "tome"
B.item_state = "syringe_kit"
if("The King in Yellow")
B.icon_state = "kingyellow"
B.item_state = "kingyellow"
if("Ithaqua")
B.icon_state = "ithaqua"
B.item_state = "ithaqua"
if("Scientology")
B.icon_state = "scientology"
B.item_state = "scientology"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(8)
if("the bible melts")
B.icon_state = "melted"
B.item_state = "melted"
if("Necronomicon")
B.icon_state = "necronomicon"
B.item_state = "necronomicon"
else
// if christian bible, revert to default
B.icon_state = "bible"
B.item_state = "bible"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(2)
switch(lowertext(new_religion))
if("christianity")
B.name = pick("The Holy Bible","The Dead Sea Scrolls")
if("satanism")
B.name = "The Unholy Bible"
if("cthulu")
B.name = "The Necronomicon"
if("islam")
B.name = "Quran"
if("scientology")
B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
if("chaos")
B.name = "The Book of Lorgar"
if("imperium")
B.name = "Uplifting Primer"
if("toolboxia")
B.name = "Toolbox Manifesto"
if("homosexuality")
B.name = "Guys Gone Wild"
if("moroz holy tribunal","moroz","holy tribunal")
B.name = "Tribunal Codex"
//if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks")
// B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
// H.setBrainLoss(100) // starts off retarded as fuck
if("science")
B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
else
B.name = "The Holy Book of [new_religion]"
feedback_set_details("religion_name","[new_religion]")
CALLBACK(src, .proc/select_deity_name, H, B)
H.update_inv_l_hand() // so that it updates the bible's item_state in his hand
/datum/outfit/job/chaplain/proc/select_deity_name(mob/living/carbon/human/H, obj/item/weapon/storage/bible/B)
var/deity_name = "Space Jesus"
var/new_deity = sanitize(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name), MAX_NAME_LEN)
switch(input(H,"Look at your bible - is this what you want?") in list("Yes","No"))
if("Yes")
accepted = 1
if("No")
if(outoftime)
H << "Welp, out of time, buddy. You're stuck. Next time choose faster."
accepted = 1
if ((length(new_deity) == 0) || (new_deity == "Space Jesus") )
new_deity = deity_name
B.deity_name = new_deity
SSticker.Bible_icon_state = B.icon_state
SSticker.Bible_item_state = B.item_state
SSticker.Bible_name = B.name
SSticker.Bible_deity_name = B.deity_name
feedback_set_details("religion_deity","[new_deity]")
feedback_set_details("religion_book","[new_book_style]")
return TRUE
var/accepted = 0
var/outoftime = 0
spawn(200) // 20 seconds to choose
outoftime = 1
var/new_book_style = "Bible"
while(!accepted)
if(!B) break // prevents possible runtime errors
new_book_style = input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon")
switch(new_book_style)
if("Koran")
B.icon_state = "koran"
B.item_state = "koran"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(4)
if("Scrapbook")
B.icon_state = "scrapbook"
B.item_state = "scrapbook"
if("Creeper")
B.icon_state = "creeper"
B.item_state = "syringe_kit"
if("White Bible")
B.icon_state = "white"
B.item_state = "syringe_kit"
if("Holy Light")
B.icon_state = "holylight"
B.item_state = "syringe_kit"
if("Athiest")
B.icon_state = "athiest"
B.item_state = "syringe_kit"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(10)
if("Tome")
B.icon_state = "tome"
B.item_state = "syringe_kit"
if("The King in Yellow")
B.icon_state = "kingyellow"
B.item_state = "kingyellow"
if("Ithaqua")
B.icon_state = "ithaqua"
B.item_state = "ithaqua"
if("Scientology")
B.icon_state = "scientology"
B.item_state = "scientology"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(8)
if("the bible melts")
B.icon_state = "melted"
B.item_state = "melted"
if("Necronomicon")
B.icon_state = "necronomicon"
B.item_state = "necronomicon"
else
// if christian bible, revert to default
B.icon_state = "bible"
B.item_state = "bible"
for(var/area/chapel/main/A in the_station_areas)
for(var/turf/T in A.contents)
if(T.icon_state == "carpetsymbol")
T.set_dir(2)
/datum/job/chaplain/equip_preview(var/mob/living/carbon/human/H, var/alt_title)
return equip(H, alt_title, FALSE)
H.update_inv_l_hand() // so that it updates the bible's item_state in his hand
switch(input(H,"Look at your bible - is this what you want?") in list("Yes","No"))
if("Yes")
accepted = 1
if("No")
if(outoftime)
to_chat(H, "Welp, out of time, buddy. You're stuck. Next time choose faster.")
accepted = 1
SSticker.Bible_icon_state = B.icon_state
SSticker.Bible_item_state = B.item_state
SSticker.Bible_name = B.name
SSticker.Bible_deity_name = B.deity_name
feedback_set_details("religion_deity","[new_deity]")
feedback_set_details("religion_book","[new_book_style]")
+51 -71
View File
@@ -9,7 +9,6 @@
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffeeaa"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
economic_modifier = 10
@@ -25,36 +24,33 @@
access_heads, access_construction, access_sec_doors, access_research, access_medical,
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload)
minimal_player_age = 7
outfit = /datum/outfit/job/chief_engineer
bag_type = /obj/item/weapon/storage/backpack/industrial
satchel_type = /obj/item/weapon/storage/backpack/satchel_eng
alt_satchel_type = /obj/item/weapon/storage/backpack/satchel
duffel_type = /obj/item/weapon/storage/backpack/duffel/eng
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/engi
/datum/outfit/job/chief_engineer
name = "Chief Engineer"
jobtype = /datum/job/chief_engineer
uniform = /obj/item/clothing/under/rank/chief_engineer
head = /obj/item/clothing/head/hardhat/white
belt = /obj/item/weapon/storage/belt/utility/full
pda = /obj/item/device/pda/heads/ce
id = /obj/item/weapon/card/id/silver
shoes = /obj/item/clothing/shoes/workboots
l_ear = /obj/item/device/radio/headset/heads/ce
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
return 1
equip_survival(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.species.equip_survival_gear(H,1)
return TRUE
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/duffel/eng
messengerbag = /obj/item/weapon/storage/backpack/messenger/engi
/datum/outfit/job/chief_engineer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
/datum/job/engineer
title = "Station Engineer"
@@ -70,36 +66,24 @@
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction)
alt_titles = list("Maintenance Technician","Engine Technician","Electrician")
outfit = /datum/outfit/job/engineer
bag_type = /obj/item/weapon/storage/backpack/industrial
satchel_type = /obj/item/weapon/storage/backpack/satchel_eng
alt_satchel_type = /obj/item/weapon/storage/backpack/satchel
duffel_type = /obj/item/weapon/storage/backpack/duffel/eng
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/engi
/datum/outfit/job/engineer
name = "Engineer"
jobtype = /datum/job/engineer
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/duffel/eng(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/device/t_scanner(H), slot_r_store)
H.equip_to_slot_or_del(new /obj/item/device/pda/engineering(H), slot_l_store)
return TRUE
equip_survival(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.species.equip_survival_gear(H,1)
return TRUE
uniform = /obj/item/clothing/under/rank/engineer
head = /obj/item/clothing/head/hardhat
belt = /obj/item/weapon/storage/belt/utility/full
pda = /obj/item/device/pda/engineering
shoes = /obj/item/clothing/shoes/workboots
l_ear = /obj/item/device/radio/headset/headset_eng
r_pocket = /obj/item/device/t_scanner
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/duffel/eng
messengerbag = /obj/item/weapon/storage/backpack/messenger/engi
/datum/job/atmos
title = "Atmospheric Technician"
@@ -114,23 +98,19 @@
economic_modifier = 5
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks)
minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks)
outfit = /datum/outfit/job/atmos
bag_type = /obj/item/weapon/storage/backpack/industrial
satchel_type = /obj/item/weapon/storage/backpack/satchel_eng
duffel_type = /obj/item/weapon/storage/backpack/duffel/eng
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/engi
/datum/outfit/job/atmos
name = "Atmospheric Technician"
jobtype = /datum/job/atmos
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/atmos(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt)
return TRUE
uniform = /obj/item/clothing/under/rank/atmospheric_technician
belt = /obj/item/weapon/storage/belt/utility/atmostech
pda = /obj/item/device/pda/atmos
shoes = /obj/item/clothing/shoes/workboots
l_ear = /obj/item/device/radio/headset/headset_eng
equip_survival(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.species.equip_survival_gear(H,1)
return TRUE
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/duffel/eng
messengerbag = /obj/item/weapon/storage/backpack/messenger/engi
+107
View File
@@ -0,0 +1,107 @@
/datum/job/intern_sec
title = "Security Cadet"
flag = INTERN_SEC
department_flag = ENGSEC
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Head of Security"
selection_color = "#ffeeee"
access = list(access_security, access_sec_doors, access_maint_tunnels)
minimal_access = list(access_security, access_sec_doors, access_maint_tunnels)
outfit = /datum/outfit/job/intern_sec
/datum/outfit/job/intern_sec
name = "Security Cadet"
jobtype = /datum/job/intern_sec
uniform = /obj/item/clothing/under/rank/security2
head = /obj/item/clothing/head/beret/sec
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/device/radio/headset/headset_sec
r_pocket = /obj/item/device/t_scanner
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/duffel/sec
messengerbag = /obj/item/weapon/storage/backpack/messenger/sec
/datum/job/intern_med
title = "Medical Resident"
flag = INTERN_MED
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Chief Medical Officer"
selection_color = "#ffeef0"
access = list(access_medical, access_surgery, access_medical_equip)
minimal_access = list(access_medical, access_surgery, access_medical_equip)
alt_titles = list("Medical Intern")
outfit = /datum/outfit/job/intern_med
/datum/outfit/job/intern_med
name = "Medical Resident"
jobtype = /datum/job/intern_med
uniform = /obj/item/clothing/under/rank/medical
shoes = /obj/item/clothing/shoes/white
l_ear = /obj/item/device/radio/headset/headset_med
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
dufflebag = /obj/item/weapon/storage/backpack/duffel/med
messengerbag = /obj/item/weapon/storage/backpack/messenger/med
/datum/job/intern_sci
title = "Lab Assistant"
flag = INTERN_SCI
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Research Director"
selection_color = "#ffeeff"
access = list(access_research, access_tox)
minimal_access = list(access_research, access_tox)
outfit = /datum/outfit/job/intern_sci
/datum/outfit/job/intern_sci
name = "Lab Assistant"
jobtype = /datum/job/intern_sci
uniform = /obj/item/clothing/under/rank/scientist
shoes = /obj/item/clothing/shoes/white
l_ear = /obj/item/device/radio/headset/headset_sci
backpack = /obj/item/weapon/storage/backpack/toxins
satchel = /obj/item/weapon/storage/backpack/satchel_tox
dufflebag = /obj/item/weapon/storage/backpack/duffel/tox
messengerbag = /obj/item/weapon/storage/backpack/messenger/tox
/datum/job/intern_eng
title = "Engineering Apprentice"
flag = INTERN_ENG
department_flag = ENGSEC
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Chief Engineer"
selection_color = "#fff5cc"
access = list(access_maint_tunnels, access_construction, access_engine_equip, access_engine)
minimal_access = list(access_maint_tunnels, access_construction, access_engine_equip, access_engine)
outfit = /datum/outfit/job/intern_eng
/datum/outfit/job/intern_eng
name = "Engineering Apprentice"
jobtype = /datum/job/intern_eng
uniform = /obj/item/clothing/under/rank/engineer
shoes = /obj/item/clothing/shoes/orange
head = /obj/item/clothing/head/beret/engineering
l_ear = /obj/item/device/radio/headset/headset_eng
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
dufflebag = /obj/item/weapon/storage/backpack/duffel/eng
messengerbag = /obj/item/weapon/storage/backpack/messenger/engi
+103 -46
View File
@@ -13,7 +13,6 @@
var/current_positions = 0 // How many players have this job
var/supervisors = null // Supervisors, who this person answers to directly
var/selection_color = "#ffffff" // Selection screen color
var/idtype = /obj/item/weapon/card/id // The type of the ID the player will have
var/list/alt_titles // List of alternate titles, if any
var/list/title_accesses // A map of title -> list of accesses to add if the person has this title.
var/req_admin_notify // If this is set to 1, a text is printed to the player when jobs are assigned, telling him that he should let admins know that he has to disconnect.
@@ -29,41 +28,41 @@
var/economic_modifier = 2 // With how much does this job modify the initial account amount?
var/create_record = 1 // Do we announce/make records for people who spawn on this job?
var/bag_type = /obj/item/weapon/storage/backpack
var/satchel_type = /obj/item/weapon/storage/backpack/satchel_norm
var/alt_satchel_type = /obj/item/weapon/storage/backpack/satchel
var/duffel_type = /obj/item/weapon/storage/backpack/duffel
var/messenger_bag_type = /obj/item/weapon/storage/backpack/messenger
var/datum/outfit/outfit = null
var/list/alt_outfits = null // A list of special outfits for the alt titles list("alttitle" = /datum/outfit)
/datum/job/proc/equip(var/mob/living/carbon/human/H)
return 1
//Only override this proc
/datum/job/proc/after_spawn(mob/living/carbon/human/H)
/datum/job/proc/equip_backpack(var/mob/living/carbon/human/H)
var/type_to_spawn
var/use_job_specific = H.backbag_style == 1
switch (H.backbag)
//if (1) // No bag selected.
// Hard-coding bagtype for now since there's only two options.
if (2)
type_to_spawn = use_job_specific ? bag_type : /obj/item/weapon/storage/backpack
if (3)
type_to_spawn = use_job_specific ? satchel_type : /obj/item/weapon/storage/backpack/satchel_norm
if (4)
type_to_spawn = use_job_specific ? alt_satchel_type : /obj/item/weapon/storage/backpack/satchel
if (5)
type_to_spawn = use_job_specific ? duffel_type : /obj/item/weapon/storage/backpack/duffel
if (6)
type_to_spawn = use_job_specific ? messenger_bag_type : /obj/item/weapon/storage/backpack/messenger
/datum/job/proc/announce(mob/living/carbon/human/H)
if (type_to_spawn)
var/obj/item/bag = new type_to_spawn
if (H.equip_to_slot_or_del(bag, slot_back))
bag.autodrobe_no_remove = TRUE
/datum/job/proc/get_outfit(mob/living/carbon/human/H, alt_title=null)
//Check if we have a speical outfit for that alt title
if (alt_outfits && alt_title)
return alt_outfits[alt_title]
else if(alt_outfits && H.mind && H.mind.role_alt_title in alt_outfits)
return alt_outfits[H.mind.role_alt_title]
else if (!H.mind && H.job in alt_outfits)
return alt_outfits[H.job]
else if(outfit)
return outfit
/datum/job/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, alt_title = null)
if(!H)
return 0
/datum/job/proc/equip_survival(var/mob/living/carbon/human/H)
if(!H) return 0
H.species.equip_survival_gear(H,0)
return 1
H.species.before_equip(H, visualsOnly, src)
H.preEquipOutfit(get_outfit(H, alt_title), visualsOnly)
/datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, alt_title = null)
if(!H)
return 0
H.equipOutfit(get_outfit(H, alt_title), visualsOnly)
H.species.after_equip(H, visualsOnly, src)
if(!visualsOnly && announce)
announce(H)
/datum/job/proc/setup_account(var/mob/living/carbon/human/H)
if(!account_allowed || (H.mind && H.mind.initial_account))
@@ -104,7 +103,8 @@
// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/del()
/datum/job/proc/equip_preview(mob/living/carbon/human/H, var/alt_title)
. = equip(H, alt_title)
pre_equip(H, TRUE)
. = equip(H, TRUE, FALSE, alt_title=alt_title)
/datum/job/proc/get_access(selected_title)
if(!config || config.jobs_have_minimal_access)
@@ -115,19 +115,6 @@
if (LAZYLEN(title_accesses) && title_accesses[selected_title])
. += title_accesses[selected_title]
/datum/job/proc/apply_fingerprints(var/mob/living/carbon/human/target)
if(!istype(target))
return 0
for(var/obj/item/item in target.contents)
apply_fingerprints_to_item(target, item)
return 1
/datum/job/proc/apply_fingerprints_to_item(var/mob/living/carbon/human/holder, var/obj/item/item)
item.add_fingerprint(holder,1)
if(item.contents.len)
for(var/obj/item/sub_item in item.contents)
apply_fingerprints_to_item(holder, sub_item)
/datum/job/proc/is_position_available()
return (current_positions < total_positions) || (total_positions == -1)
@@ -144,6 +131,8 @@
if(!H)
return 0
H.species.before_equip(H, FALSE, src)
var/loyalty = 1
if(H.client)
switch(H.client.prefs.nanotrasen_relation)
@@ -183,3 +172,71 @@
/datum/job/proc/has_alt_title(var/mob/H, var/supplied_title, var/desired_title)
return (supplied_title == desired_title) || (H.mind && H.mind.role_alt_title == desired_title)
/datum/outfit/job
name = "Standard Gear"
var/base_name = null
collect_not_del = FALSE
var/allow_loadout = TRUE
var/allow_backbag_choice = TRUE
var/jobtype = null
uniform = /obj/item/clothing/under/color/grey
id = /obj/item/weapon/card/id
l_ear = /obj/item/device/radio/headset
back = /obj/item/weapon/storage/backpack
shoes = /obj/item/clothing/shoes/black
pda = /obj/item/device/pda
var/backpack = /obj/item/weapon/storage/backpack
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
var/satchel_alt = /obj/item/weapon/storage/backpack/satchel
var/dufflebag = /obj/item/weapon/storage/backpack/duffel
var/messengerbag = /obj/item/weapon/storage/backpack/messenger
var/box = /obj/item/weapon/storage/box/survival
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(allow_backbag_choice)
var/use_job_specific = H.backbag_style == 1
switch(H.backbag)
if (2)
back = use_job_specific ? backpack : /obj/item/weapon/storage/backpack
if (3)
back = use_job_specific ? satchel : /obj/item/weapon/storage/backpack/satchel_norm
if (4)
back = use_job_specific ? satchel_alt : /obj/item/weapon/storage/backpack/satchel
if (5)
back = use_job_specific ? dufflebag : /obj/item/weapon/storage/backpack/duffel
if (6)
back = use_job_specific ? messengerbag : /obj/item/weapon/storage/backpack/messenger
else
back = backpack //Department backpack
equip_item(H, back, slot_back)
if(istype(H.back,/obj/item/weapon/storage/backpack))
var/obj/item/weapon/storage/backpack/B = H.back
B.autodrobe_no_remove = TRUE
/datum/outfit/job/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(box)
var/spawnbox = box
backpack_contents.Insert(1, spawnbox) // Box always takes a first slot in backpack
backpack_contents[spawnbox] = 1
. = ..()
/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
/datum/outfit/job/get_id_access(mob/living/carbon/human/H)
var/datum/job/J = SSjobs.GetJobType(jobtype)
if(!J)
J = SSjobs.GetJob(H.job)
return J.get_access(get_id_assignment(H))
/datum/outfit/job/get_id_rank(mob/living/carbon/human/H)
var/datum/job/J = SSjobs.GetJobType(jobtype)
if(!J)
J = SSjobs.GetJob(H.job)
return J.title
+131 -126
View File
@@ -9,7 +9,6 @@
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffddf0"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
economic_modifier = 10
access = list(access_medical, access_medical_equip, access_morgue, access_genetics, access_heads,
@@ -23,23 +22,25 @@
minimal_player_age = 10
ideal_character_age = 50
outfit = /datum/outfit/job/cmo
bag_type = /obj/item/weapon/storage/backpack/medic
satchel_type = /obj/item/weapon/storage/backpack/satchel_med
duffel_type = /obj/item/weapon/storage/backpack/duffel/med
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/med
/datum/outfit/job/cmo
name = "Chief Medical Officer"
jobtype = /datum/job/cmo
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/cmo(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
return TRUE
uniform = /obj/item/clothing/under/rank/chief_medical_officer
suit = /obj/item/clothing/suit/storage/toggle/labcoat/cmo
suit_store = /obj/item/device/flashlight/pen
shoes = /obj/item/clothing/shoes/brown
l_ear = /obj/item/device/radio/headset/heads/cmo
pda = /obj/item/device/pda/heads/cmo
id = /obj/item/weapon/card/id/silver
l_hand = /obj/item/weapon/storage/firstaid/adv
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
dufflebag = /obj/item/weapon/storage/backpack/duffel/med
messengerbag = /obj/item/weapon/storage/backpack/messenger/med
/datum/job/doctor
title = "Medical Doctor"
@@ -55,67 +56,69 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_eva)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology, access_eva)
alt_titles = list("Surgeon","Emergency Physician","Nurse","Virologist")
outfit = /datum/outfit/job/doctor
alt_outfits = list(
"Virologist"=/datum/outfit/job/doctor/virologist,
"Emergency Physician"=/datum/outfit/job/doctor/emergency_physician,
"Surgeon"=/datum/outfit/job/doctor/surgeon,
"Nurse"=/datum/outfit/job/doctor/nurse
)
bag_type = /obj/item/weapon/storage/backpack/medic
satchel_type = /obj/item/weapon/storage/backpack/satchel_med
duffel_type = /obj/item/weapon/storage/backpack/duffel/med
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/med
/datum/outfit/job/doctor
name = "Medical Doctor"
base_name = "Medical Doctor"
jobtype = /datum/job/doctor
uniform = /obj/item/clothing/under/rank/medical
suit = /obj/item/clothing/suit/storage/toggle/labcoat
shoes = /obj/item/clothing/shoes/white
l_ear = /obj/item/device/radio/headset/headset_med
pda = /obj/item/device/pda/medical
suit_store = /obj/item/device/flashlight/pen
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
dufflebag = /obj/item/weapon/storage/backpack/duffel/med
messengerbag = /obj/item/weapon/storage/backpack/messenger/med
/datum/outfit/job/doctor/virologist
name = "Virologist"
jobtype = /datum/job/doctor
uniform = /obj/item/clothing/under/rank/virologist
suit = /obj/item/clothing/suit/storage/toggle/labcoat/virologist
mask = /obj/item/clothing/mask/surgical
pda = /obj/item/device/pda/viro
backpack = /obj/item/weapon/storage/backpack/virology
satchel = /obj/item/weapon/storage/backpack/satchel_vir
messengerbag = /obj/item/weapon/storage/backpack/messenger/viro
/datum/outfit/job/doctor/emergency_physician
name = "Emergency Physician"
jobtype = /datum/job/doctor
suit = /obj/item/clothing/suit/storage/toggle/fr_jacket
mask = /obj/item/clothing/mask/surgical
l_hand = /obj/item/weapon/storage/firstaid/adv
/datum/outfit/job/doctor/surgeon
name = "Surgeon"
jobtype = /datum/job/doctor
uniform = /obj/item/clothing/under/rank/medical/blue
suit = /obj/item/clothing/suit/storage/toggle/labcoat
head = /obj/item/clothing/head/surgery/blue
/datum/outfit/job/doctor/nurse
name = "Nurse"
jobtype = /datum/job/doctor
uniform = /obj/item/clothing/under/rank/medical/purple
suit = null
head = /obj/item/clothing/head/nursehat
/datum/job/doctor/equip_backpack(var/mob/living/carbon/human/H, var/alt_title)
if(has_alt_title(H, alt_title,"Virologist"))
bag_type = /obj/item/weapon/storage/backpack/virology
satchel_type = /obj/item/weapon/storage/backpack/satchel_vir
duffel_type = /obj/item/weapon/storage/backpack/duffel/med
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/viro
..()
bag_type = initial(bag_type)
satchel_type = initial(satchel_type)
duffel_type = initial(duffel_type)
messenger_bag_type = initial(messenger_bag_type)
else
..()
/datum/job/doctor/equip(var/mob/living/carbon/human/H, var/alt_title)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
if(has_alt_title(H, alt_title,"Emergency Physician"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
else if(has_alt_title(H, alt_title,"Surgeon"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
else if(has_alt_title(H, alt_title,"Virologist"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/device/pda/viro(H), slot_belt)
else if(has_alt_title(H, alt_title,"Nurse"))
if(H.gender == FEMALE)
H.equip_to_slot_or_del(new /obj/item/clothing/head/nursehat(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
else if(has_alt_title(H, alt_title,"Medical Doctor"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
else
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
return TRUE
//Chemist is a medical job damnit //YEAH FUCK YOU SCIENCE -Pete //Guys, behave -Erro
/datum/job/chemist
title = "Chemist"
flag = CHEMIST
@@ -130,21 +133,22 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_medical_equip, access_chemistry)
alt_titles = list("Pharmacist")
outfit = /datum/outfit/job/chemist
bag_type = /obj/item/weapon/storage/backpack/chemistry
satchel_type = /obj/item/weapon/storage/backpack/satchel_chem
duffel_type = /obj/item/weapon/storage/backpack/duffel/chem
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/chem
/datum/outfit/job/chemist
name = "Chemist"
jobtype = /datum/job/chemist
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit)
return TRUE
uniform = /obj/item/clothing/under/rank/chemist
suit = /obj/item/clothing/suit/storage/toggle/labcoat/chemist
shoes = /obj/item/clothing/shoes/white
l_ear = /obj/item/device/radio/headset/headset_med
pda = /obj/item/device/pda/chemist
backpack = /obj/item/weapon/storage/backpack/chemistry
satchel = /obj/item/weapon/storage/backpack/satchel_chem
dufflebag = /obj/item/weapon/storage/backpack/duffel/chem
messengerbag = /obj/item/weapon/storage/backpack/messenger/chem
/datum/job/psychiatrist
title = "Psychiatrist"
@@ -160,20 +164,25 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_psychiatrist)
minimal_access = list(access_medical, access_medical_equip, access_psychiatrist)
alt_titles = list("Psychologist")
outfit = /datum/outfit/job/psychiatrist
alt_outfits = list("Psychologist" = /datum/outfit/job/psychiatrist/psycho)
equip(var/mob/living/carbon/human/H, var/alt_title)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
if(has_alt_title(H, alt_title,"Psychiatrist"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych(H), slot_w_uniform)
else if(has_alt_title(H, alt_title,"Psychologist"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych/turtleneck(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
/datum/outfit/job/psychiatrist
name = "Psychiatrist"
base_name = "Psychiatrist"
jobtype = /datum/job/psychiatrist
return TRUE
uniform = /obj/item/clothing/under/rank/psych
suit = /obj/item/clothing/suit/storage/toggle/labcoat
shoes = /obj/item/clothing/shoes/laceup
l_ear = /obj/item/device/radio/headset/headset_med
pda = /obj/item/device/pda/chemist
/datum/outfit/job/psychiatrist/psycho
name = "Psychologist"
jobtype = /datum/job/psychiatrist
uniform = /obj/item/clothing/under/rank/psych/turtleneck
/datum/job/paramedic
@@ -190,33 +199,29 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist, access_paramedic)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_eva, access_maint_tunnels, access_external_airlocks, access_paramedic)
alt_titles = list("Emergency Medical Technician")
outfit = /datum/outfit/job/paramedic
alt_outfits = list("Emergency Medical Technician"=/datum/outfit/job/paramedic/emt)
bag_type = /obj/item/weapon/storage/backpack/medic
satchel_type = /obj/item/weapon/storage/backpack/satchel_med
duffel_type = /obj/item/weapon/storage/backpack/duffel/med
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/med
/datum/outfit/job/paramedic
name = "Paramedic"
base_name = "Paramedic"
jobtype = /datum/job/paramedic
equip(var/mob/living/carbon/human/H, var/alt_title)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
if(has_alt_title(H, alt_title,"Emergency Medical Technician"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
else if(has_alt_title(H, alt_title,"Paramedic"))
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/black(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
else
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/medical/emt(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_l_store)
return TRUE
uniform = /obj/item/clothing/under/rank/medical/black
suit = /obj/item/clothing/suit/storage/toggle/fr_jacket
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/device/radio/headset/headset_med
l_hand = /obj/item/weapon/storage/firstaid/adv
belt = /obj/item/weapon/storage/belt/medical/emt
pda = /obj/item/device/pda/medical
equip_survival(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.species.equip_survival_gear(H,1)
return TRUE
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
dufflebag = /obj/item/weapon/storage/backpack/duffel/med
messengerbag = /obj/item/weapon/storage/backpack/messenger/med
/datum/outfit/job/paramedic/emt
name = "Emergency Medical Technician"
jobtype = /datum/job/paramedic
uniform = /obj/item/clothing/under/rank/medical/paramedic
+16 -10
View File
@@ -8,7 +8,6 @@
spawn_positions = 0
supervisors = "yourself and the market"
selection_color = "#515151"
idtype = /obj/item/weapon/card/id/merchant
minimal_player_age = 10
economic_modifier = 5
ideal_character_age = 30
@@ -20,17 +19,24 @@
latejoin_at_spawnpoints = TRUE
/datum/job/merchant/equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/merchant(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/device/price_scanner(H), slot_r_store)
outfit = /datum/outfit/job/merchant
H << "You are a merchant heading to the [station_name()] to make profit, your main objective is to sell and trade with the crew."
/datum/outfit/job/merchant
name = "Merchant"
jobtype = /datum/job/merchant
return TRUE
uniform =/obj/item/clothing/under/color/grey
shoes = /obj/item/clothing/shoes/brown
id = /obj/item/weapon/card/id/merchant
pda = /obj/item/device/pda/merchant
r_pocket = /obj/item/device/price_scanner
backpack_contents = list(
/obj/item/weapon/storage/box/evidence = 1
)
/datum/job/merchant/announce(mob/living/carbon/human/H)
to_chat(H,"You are a merchant heading to the [station_name()] to make profit, your main objective is to sell and trade with the crew.")
/datum/job/merchant/New()
..()
+50 -52
View File
@@ -9,7 +9,6 @@
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffddff"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
economic_modifier = 15
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_eva, access_external_airlocks,
@@ -22,23 +21,24 @@
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network, access_maint_tunnels)
minimal_player_age = 14
ideal_character_age = 50
outfit = /datum/outfit/job/rd
bag_type = /obj/item/weapon/storage/backpack/toxins
satchel_type = /obj/item/weapon/storage/backpack/satchel_tox
duffel_type = /obj/item/weapon/storage/backpack/duffel/tox
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/tox
/datum/outfit/job/rd
name = "Research Director"
jobtype = /datum/job/rd
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
return TRUE
uniform = /obj/item/clothing/under/rank/research_director
suit = /obj/item/clothing/suit/storage/toggle/labcoat/science
shoes = /obj/item/clothing/shoes/brown
l_ear = /obj/item/device/radio/headset/heads/rd
pda = /obj/item/device/pda/heads/rd
id = /obj/item/weapon/card/id/silver
l_hand = /obj/item/weapon/clipboard
backpack = /obj/item/weapon/storage/backpack/toxins
satchel = /obj/item/weapon/storage/backpack/satchel_tox
dufflebag = /obj/item/weapon/storage/backpack/duffel/tox
messengerbag = /obj/item/weapon/storage/backpack/messenger/tox
/datum/job/scientist
@@ -57,21 +57,22 @@
alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher")
minimal_player_age = 14
outfit = /datum/outfit/job/scientist
bag_type = /obj/item/weapon/storage/backpack/toxins
satchel_type = /obj/item/weapon/storage/backpack/satchel_tox
duffel_type = /obj/item/weapon/storage/backpack/duffel/tox
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/tox
/datum/outfit/job/scientist
name = "Scientist"
jobtype = /datum/job/scientist
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
return TRUE
uniform = /obj/item/clothing/under/rank/scientist
suit = /obj/item/clothing/suit/storage/toggle/labcoat/science
shoes = /obj/item/clothing/shoes/white
l_ear = /obj/item/device/radio/headset/headset_sci
pda = /obj/item/device/pda/science
backpack = /obj/item/weapon/storage/backpack/toxins
satchel = /obj/item/weapon/storage/backpack/satchel_tox
dufflebag = /obj/item/weapon/storage/backpack/duffel/tox
messengerbag = /obj/item/weapon/storage/backpack/messenger/tox
/datum/job/xenobiologist
title = "Xenobiologist"
@@ -90,21 +91,11 @@
minimal_player_age = 14
bag_type = /obj/item/weapon/storage/backpack/toxins
satchel_type = /obj/item/weapon/storage/backpack/satchel_tox
duffel_type = /obj/item/weapon/storage/backpack/duffel/tox
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/tox
outfit = /datum/outfit/job/scientist/xenobiologist
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
return TRUE
/datum/outfit/job/scientist/xenobiologist
name = "Xenobiologist"
jobtype = /datum/job/xenobiologist
/datum/job/roboticist
title = "Roboticist"
@@ -123,13 +114,20 @@
minimal_player_age = 7
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
return TRUE
outfit = /datum/outfit/job/roboticist
/datum/outfit/job/roboticist
name = "Roboticist"
jobtype = /datum/job/roboticist
uniform = /obj/item/clothing/under/rank/roboticist
suit = /obj/item/clothing/suit/storage/toggle/labcoat
shoes = /obj/item/clothing/shoes/black
l_ear = /obj/item/device/radio/headset/headset_sci
pda = /obj/item/device/pda/roboticist
belt = /obj/item/weapon/storage/belt/utility/full
backpack = /obj/item/weapon/storage/backpack/toxins
satchel = /obj/item/weapon/storage/backpack/satchel_tox
dufflebag = /obj/item/weapon/storage/backpack/duffel/tox
messengerbag = /obj/item/weapon/storage/backpack/messenger/tox
+135 -108
View File
@@ -9,7 +9,6 @@
spawn_positions = 1
supervisors = "the captain"
selection_color = "#ffdddd"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
economic_modifier = 10
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
@@ -23,32 +22,40 @@
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks,
access_detective, access_weapons)
minimal_player_age = 14
outfit = /datum/outfit/job/hos
bag_type = /obj/item/weapon/storage/backpack/security
satchel_type = /obj/item/weapon/storage/backpack/satchel_sec
duffel_type = /obj/item/weapon/storage/backpack/duffel/sec
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/sec
/datum/outfit/job/hos
name = "Head of Security"
jobtype = /datum/job/hos
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hos(H), slot_belt)
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/head(H), slot_glasses)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_store)
else
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
H.implant_loyalty(H)
return TRUE
uniform = /obj/item/clothing/under/rank/head_of_security
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/device/radio/headset/heads/hos
pda = /obj/item/device/pda/heads/hos
id = /obj/item/weapon/card/id/silver
glasses = /obj/item/clothing/glasses/sunglasses/sechud/head
backpack_contents = list(
/obj/item/weapon/storage/box/ids = 1
)
implants = list(
/obj/item/weapon/implant/loyalty
)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/duffel/sec
messengerbag = /obj/item/weapon/storage/backpack/messenger/sec
/datum/outfit/job/hos/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
/datum/job/warden
@@ -65,35 +72,36 @@
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks, access_weapons)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks, access_weapons)
minimal_player_age = 7
outfit = /datum/outfit/job/warden
bag_type = /obj/item/weapon/storage/backpack/security
satchel_type = /obj/item/weapon/storage/backpack/satchel_sec
duffel_type = /obj/item/weapon/storage/backpack/duffel/sec
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/sec
/datum/outfit/job/warden
name = "Warden"
jobtype = /datum/job/warden
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/warden(H), slot_belt)
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses)
// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk
H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
uniform = /obj/item/clothing/under/rank/warden
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/device/radio/headset/headset_sec
pda = /obj/item/device/pda/warden
glasses = /obj/item/clothing/glasses/sunglasses/sechud/head
l_pocket = /obj/item/device/flash
return TRUE
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/duffel/sec
messengerbag = /obj/item/weapon/storage/backpack/messenger/sec
backpack_contents = list(
/obj/item/weapon/storage/box/ids = 1
)
/datum/outfit/job/warden/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
/datum/job/detective
@@ -110,27 +118,30 @@
access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_detective, access_weapons)
minimal_access = list(access_security, access_sec_doors, access_morgue, access_maint_tunnels, access_detective, access_weapons)
minimal_player_age = 7
outfit = /datum/outfit/job/detective
/datum/outfit/job/detective
name = "Detective"
jobtype = /datum/job/detective
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt)
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
uniform = /obj/item/clothing/under/det
shoes = /obj/item/clothing/shoes/laceup
l_ear = /obj/item/device/radio/headset/headset_sec
pda = /obj/item/device/pda/detective
backpack_contents = list(
/obj/item/weapon/storage/box/evidence = 1
)
/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
return TRUE
/datum/job/forensics
title = "Forensic Technician"
@@ -146,31 +157,38 @@
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_weapons)
alt_titles = list("Crime Scene Investigator")
minimal_player_age = 3
outfit = /datum/outfit/job/forensics
alt_outfits = list("Crime Scene Investigator"=/datum/outfit/job/forensics/csi)
equip(var/mob/living/carbon/human/H, var/alt_title)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/det/slob(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt)
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
if(has_alt_title(H, alt_title,"Crime Scene Investigator"))
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/vest/csi(H), slot_wear_suit)
else
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
/datum/outfit/job/forensics
name = "Forensic Technician"
jobtype = /datum/job/forensics
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
uniform = /obj/item/clothing/under/det/slob
suit = /obj/item/clothing/suit/storage/vest/csi
shoes = /obj/item/clothing/shoes/laceup
l_ear = /obj/item/device/radio/headset/headset_sec
pda = /obj/item/device/pda/detective
return TRUE
backpack_contents = list(
/obj/item/weapon/storage/box/evidence = 1
)
/datum/outfit/job/forensics/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
/datum/outfit/job/forensics/csi
name = "Crime Scene Investigator"
jobtype = /datum/job/forensics
suit = /obj/item/clothing/suit/storage/toggle/labcoat
/datum/job/officer
title = "Security Officer"
@@ -187,23 +205,32 @@
access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks, access_weapons)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_external_airlocks, access_weapons)
minimal_player_age = 7
outfit = /datum/outfit/job/officer
bag_type = /obj/item/weapon/storage/backpack/security
satchel_type = /obj/item/weapon/storage/backpack/satchel_sec
duffel_type = /obj/item/weapon/storage/backpack/duffel/sec
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/sec
/datum/outfit/job/officer
name = "Security Officer"
jobtype = /datum/job/officer
equip(var/mob/living/carbon/human/H)
if(!H)
return FALSE
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store)
H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
return TRUE
uniform = /obj/item/clothing/under/rank/security
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/device/radio/headset/headset_sec
pda = /obj/item/device/pda/security
l_pocket = /obj/item/device/flash
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
dufflebag = /obj/item/weapon/storage/backpack/duffel/sec
messengerbag = /obj/item/weapon/storage/backpack/messenger/sec
backpack_contents = list(
/obj/item/weapon/handcuffs = 1
)
/datum/outfit/job/officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(istajara(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/tajara(H), slot_gloves)
else if(isunathi(H))
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black/unathi(H), slot_gloves)
else
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
-17
View File
@@ -15,14 +15,6 @@
if(!H) return 0
return 1
equip_survival(var/mob/living/carbon/human/H)
if(!H) return 0
return 1
equip_backpack(var/mob/living/carbon/human/H)
if(!H) return 0
return 1
/datum/job/ai/is_position_available()
return (empty_playable_ai_cores.len != 0)
@@ -49,15 +41,6 @@
if(!H) return 0
return 1
equip_survival(var/mob/living/carbon/human/H)
if(!H) return 0
return 1
equip_backpack(var/mob/living/carbon/human/H)
if(!H) return 0
return 1
return 1
/datum/job/cyborg/equip_preview(mob/living/carbon/human/H)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/cardborg(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/cardborg(H), slot_head)
+11 -5
View File
@@ -32,24 +32,30 @@
megavend(H)
/obj/machinery/megavendor/proc/megavend(var/mob/living/carbon/human/H)
if(H.megavend)
return
var/obj/item/weapon/storage/box/gearbox = new(null, TRUE)
gearbox.name = "personal possessions box"
gearbox.desc = "All of the personal effects of [H.real_name], packaged neatly by the AutoDrobe."
for(var/obj/item/W in H.contents)
for(var/obj/item/W in H.contents) //Strip 'em
if(istype(W,/obj/item/organ))
continue
if(W.autodrobe_no_remove)
continue
H.drop_from_inventory(W,gearbox)
H.put_in_any_hand_if_possible(gearbox)
H << "<span class='notice'>You feel a pleasant breeze as the autolocker whisks away all of your clothes, packing them neatly in a box.</span>"
to_chat(H,"<span class='notice'>You feel a pleasant breeze as the autolocker whisks away all of your clothes, packing them neatly in a box.</span>")
SSjobs.EquipRank(H, H.job, 1, 1)
SSjobs.EquipRank(H, H.job, 1, 1) //Equip 'em
H.megavend = 1
//Give them the box
if(istype(H.back,/obj/item/weapon/storage/backpack))
var/obj/item/weapon/storage/backpack/B = H.back
if(!B.insert_into_storage(gearbox))
H.put_in_any_hand_if_possible(gearbox)
else
H.put_in_any_hand_if_possible(gearbox)
return
+13 -9
View File
@@ -319,7 +319,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/Initialize(mapload)
. = ..()
PDAs += src
if(!(src in PDAs))
PDAs += src
if (!mapload)
try_sort_pda_list()
if(default_cartridge)
@@ -1227,12 +1228,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
user << "<span class='notice'>\The [src] rejects the ID.</span>"
return
if(!owner)
owner = idcard.registered_name
ownjob = idcard.assignment
ownrank = idcard.rank
name = "PDA-[owner] ([ownjob])"
user << "<span class='notice'>Card scanned.</span>"
try_sort_pda_list()
update_userinfo(idcard,user)
else
//Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand.
if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) )
@@ -1256,6 +1252,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
user << "<span class='notice'>You slide \the [C] into \the [src].</span>"
return
/obj/item/device/pda/proc/update_userinfo(var/obj/item/weapon/card/id/idcard, var/mob/living/user)
owner = idcard.registered_name
ownjob = idcard.assignment
ownrank = idcard.rank
name = "PDA-[owner] ([ownjob])"
if(user)
to_chat(user, "<span class='notice'>Card scanned.</span>")
try_sort_pda_list()
/obj/item/device/pda/attack(mob/living/C as mob, mob/living/user as mob)
if (istype(C, /mob/living/carbon))
switch(scanmode)
@@ -1398,8 +1403,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/Destroy()
PDAs -= src
if (src.id && prob(90)) //IDs are kept in 90% of the cases
src.id.forceMove(get_turf(src.loc))
QDEL_NULL(id)
QDEL_NULL(pen)
if (LAZYLEN(linked_consoles))
for(var/A in linked_consoles)
+1 -1
View File
@@ -144,7 +144,7 @@
var/choice = input("Do you wish to become a Vox? This is not reversible.") as null|anything in list("No","Yes")
if(choice == "Yes")
user.set_species("Vox")
user.species.equip_survival_gear(user)
user.species.before_equip(user)
var/newname = sanitizeSafe(input(user,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN)
if(!newname || newname == "")
+49 -471
View File
@@ -378,489 +378,67 @@
set category = "Fun"
set name = "Select equipment"
if(!check_rights(R_FUN))
return
var/mob/living/carbon/human/M = input("Select mob.", "Select equipment.") as null|anything in human_mob_list
if(!M) return
//log_admin("[key_name(src)] has alienized [M.key].")
var/list/dresspacks = list(
var/list/choices = list(
"strip",
"job",
"standard space gear",
"tournament standard red",
"tournament standard green",
"tournament gangster",
"tournament chef",
"tournament janitor",
"pirate",
"space pirate",
"soviet admiral",
"tunnel clown",
"masked killer",
"assassin",
"death commando",
"syndicate commando",
"special ops officer",
"blue wizard",
"red wizard",
"marisa wizard",
"emergency response team",
"nanotrasen representative",
"nanotrasen officer",
"nanotrasen captain",
"protection detail",
"leading trooper",
"ert commander",
"odin security"
)
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks
"as job...",
"emergency response team"
)
var/admin_outfits = subtypesof(/datum/outfit/admin)
for(var/type in admin_outfits)
var/datum/outfit/O = type
var/name = initial(O.name)
if(name != "Naked")
choices[initial(O.name)] = type
var/dostrip = 0
switch(alert("Strip [M] before dressing?", "Strip?", "Yes", "No", "Cancel"))
if("Yes")
dostrip = 1
if("Cancel")
return
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in choices
if (isnull(dresscode))
return
feedback_add_details("admin_verb","SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
for (var/obj/item/I in M)
if (istype(I, /obj/item/weapon/implant))
continue
M.drop_from_inventory(I)
if(I.loc != M)
qdel(I)
switch(dresscode)
if ("strip")
//do nothing
if ("job")
var/selected_job = input("Select job", "Robust quick dress shop") as null|anything in joblist
if (isnull(selected_job))
return
var/datum/job/job = SSjobs.GetJob(selected_job)
if(!job)
return
job.equip(M)
job.apply_fingerprints(M)
SSjobs.spawnId(M, selected_job)
if ("standard space gear")
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head)
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
M.equip_to_slot_or_del(J, slot_back)
J.toggle()
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
J.Topic(null, list("stat" = 1))
if ("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0
if (dresscode=="tournament standard red")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
else
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/rifle/pulse/destroyer(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store)
if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0
M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/det_trench(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/head/det(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/cloaking_device(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store)
if ("tournament chef") //Steven Seagal FTW
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/material/kitchen/rollingpin(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_s_store)
if ("tournament janitor")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
var/obj/item/weapon/storage/backpack/backpack = new(M)
for(var/obj/item/I in backpack)
if(dostrip)
for (var/obj/item/I in M)
if (istype(I, /obj/item/weapon/implant))
continue
M.drop_from_inventory(I)
if(I.loc != M)
qdel(I)
M.equip_to_slot_or_del(backpack, slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand)
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
bucket.reagents.add_reagent("water", 70)
M.equip_to_slot_or_del(bucket, slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack)
if ("pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
if ("space pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
if ("soviet soldier")
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
if("tunnel clown")//Tunnel clowns rule!
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_station_access()
W.assignment = "Tunnel Clown!"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
var/obj/item/weapon/material/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
if("masked killer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
var/obj/item/weapon/material/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
for(var/obj/item/carried_item in M.contents)
if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
carried_item.add_blood(M)//Oh yes, there will be blood...
if("assassin")
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/cloaking_device(M), slot_r_store)
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M)
for(var/obj/item/briefcase_item in sec_briefcase)
qdel(briefcase_item)
for(var/i=3, i>0, i--)
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
sec_briefcase.contents += new /obj/item/ammo_magazine/a357
sec_briefcase.contents += new /obj/item/weapon/plastique
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Reaper"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_belt)
var/obj/item/weapon/card/id/syndicate/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_station_access()
W.assignment = "Reaper"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("death commando")//Was looking to add this for a while.
deathsquad.equip(M)
if("syndicate commando")
commandos.equip(M)
if("nanotrasen representative")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(M), slot_l_ear)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "NanoTrasen Navy Representative"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_r_store)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_belt)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.item_state = "id_inv"
W.access = get_all_station_access()
W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer")
W.assignment = "NanoTrasen Navy Representative"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("nanotrasen officer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "NanoTrasen Navy Officer"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_r_store)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pistol(M), slot_belt)
var/obj/item/weapon/card/id/centcom/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "NanoTrasen Navy Officer"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("nanotrasen captain")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_captain(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "NanoTrasen Navy Captain"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_r_store)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pistol(M), slot_belt)
var/obj/item/weapon/card/id/centcom/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "NanoTrasen Navy Captain"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
switch(dresscode)
if("strip")
//do nothing
if("as job...")
var/datum/job/jobdatum
var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs()
jobdatum = SSjobs.GetJob(jobname)
if(jobdatum)
dresscode = "[jobdatum.title]"
M.job = jobdatum.title
jobdatum.equip(M)
if("emergency response team")
ert.equip(M)
if("protection detail")
M.equip_to_slot_or_del(new /obj/item/clothing/under/ccpolice(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/vest/heavy/ert/peacekeeper(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat/peacekeeper(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/accessory/holster/hip(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pistol(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "ERT Protection Detail"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("leading trooper")
M.equip_to_slot_or_del(new /obj/item/clothing/under/ert(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/vest/heavy/ert/lead(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/accessory/holster/hip(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Leading Trooper"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("ert commander")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/vest/heavy/ert/commander(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/fancy/cigar(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/clothing/accessory/medal/gold/heroism(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/commander(M), slot_head)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "ERT Commander"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("odin security")
M.equip_to_slot_or_del(new /obj/item/clothing/under/ccpolice(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/vest/heavy/ert/peacekeeper(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/tactical(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/tactical(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat/peacekeeper(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/x9(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/c45x(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/c45x(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/accessory/holster/hip(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M.back), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/handcuffs/ziptie(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/gas(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/tact(M), slot_l_hand)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "[current_map.dock_name] Security Specialist"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("special ops officer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch/hud/thermal(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Special Operations Officer"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("blue wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("red wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("marisa wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("soviet admiral")
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch/hud/thermal(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.access = get_all_station_access()
W.access += get_all_centcom_access()
W.assignment = "Admiral"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
else
var/datum/outfit/O = choices[dresscode]
if(O)
M.preEquipOutfit(O,FALSE)
M.equipOutfit(O,FALSE)
M.regenerate_icons()
@@ -7,6 +7,9 @@
/datum/gear_tweak/proc/get_default()
return
/datum/gear_tweak/proc/get_random()
return get_default()
/datum/gear_tweak/proc/tweak_gear_data(var/metadata, var/datum/gear_data)
return
@@ -32,6 +35,9 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
/datum/gear_tweak/color/get_default()
return valid_colors ? valid_colors[1] : COLOR_GRAY
/datum/gear_tweak/color/get_random()
return valid_colors ? pick(valid_colors) : COLOR_GRAY
/datum/gear_tweak/color/get_metadata(var/user, var/metadata)
if(valid_colors)
return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors
@@ -59,6 +65,9 @@ Path adjustment
/datum/gear_tweak/path/get_default()
return valid_paths[1]
/datum/gear_tweak/path/get_random()
return pick(valid_paths)
/datum/gear_tweak/path/get_metadata(var/user, var/metadata)
return input(user, "Choose a type.", "Character Preference", metadata) as null|anything in valid_paths
@@ -116,8 +125,6 @@ Content adjustment
/*
Reagents adjustment
*/
/datum/gear_tweak/reagents
var/list/valid_reagents
@@ -238,8 +238,23 @@ var/list/gear_datums = list()
/datum/gear/proc/spawn_item(var/location, var/metadata)
var/datum/gear_data/gd = new(path, location)
for(var/datum/gear_tweak/gt in gear_tweaks)
gt.tweak_gear_data(metadata["[gt]"], gd)
if(metadata["[gt]"])
gt.tweak_gear_data(metadata["[gt]"], gd)
else
gt.tweak_gear_data(gt.get_default(), gd)
var/item = new gd.path(gd.location)
for(var/datum/gear_tweak/gt in gear_tweaks)
gt.tweak_item(item, metadata["[gt]"])
if(metadata["[gt]"])
gt.tweak_item(item, metadata["[gt]"])
else
gt.tweak_item(item, gt.get_default())
return item
/datum/gear/proc/spawn_random(var/location)
var/datum/gear_data/gd = new(path, location)
for(var/datum/gear_tweak/gt in gear_tweaks)
gt.tweak_gear_data(gt.get_random(), gd)
var/item = new gd.path(gd.location)
for(var/datum/gear_tweak/gt in gear_tweaks)
gt.tweak_item(item, gt.get_random())
return item
+3
View File
@@ -8,6 +8,9 @@
heat_protection = FEET
max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/shoes/black/noslip
item_flags = NOSLIP
/obj/item/clothing/shoes/brown
name = "brown shoes"
desc = "A pair of brown shoes."
+4 -4
View File
@@ -206,9 +206,9 @@
continue
// Check for required access.
var/obj/item/weapon/card/id/current_id = M.wear_id
var/obj/item/I = M.wear_id
if(citem.req_access && citem.req_access > 0)
if(!(istype(current_id) && (citem.req_access in current_id.access)))
if(!(istype(I) && (citem.req_access in I.GetAccess())))
continue
// Check for required job title.
@@ -224,8 +224,8 @@
// ID cards and PDAs are applied directly to the existing object rather than spawned fresh.
var/obj/item/existing_item
if(citem.item_path == /obj/item/weapon/card/id && istype(current_id)) //Set earlier.
existing_item = M.wear_id
if(citem.item_path == /obj/item/weapon/card/id)
existing_item = locate(/obj/item/weapon/card/id) in M.get_contents() //TODO: Improve this ?
else if(citem.item_path == /obj/item/device/pda)
existing_item = locate(/obj/item/device/pda) in M.contents
-98
View File
@@ -1,98 +0,0 @@
/datum/job/intern_sec
title = "Security Cadet"
flag = INTERN_SEC
department_flag = ENGSEC
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Head of Security"
selection_color = "#ffeeee"
access = list(access_security, access_sec_doors, access_maint_tunnels)
minimal_access = list(access_security, access_sec_doors, access_maint_tunnels)
bag_type = /obj/item/weapon/storage/backpack/security
satchel_type = /obj/item/weapon/storage/backpack/satchel_sec
duffel_type = /obj/item/weapon/storage/backpack/duffel/sec
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/sec
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security2(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/sec(H), slot_head)
return 1
/datum/job/intern_med
title = "Medical Resident"
flag = INTERN_MED
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Chief Medical Officer"
selection_color = "#ffeef0"
access = list(access_medical, access_surgery, access_medical_equip)
minimal_access = list(access_medical, access_surgery, access_medical_equip)
alt_titles = list("Medical Intern")
bag_type = /obj/item/weapon/storage/backpack/medic
satchel_type = /obj/item/weapon/storage/backpack/satchel_med
duffel_type = /obj/item/weapon/storage/backpack/duffel/med
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/med
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
return 1
/datum/job/intern_sci
title = "Lab Assistant"
flag = INTERN_SCI
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Research Director"
selection_color = "#ffeeff"
access = list(access_research, access_tox)
minimal_access = list(access_research, access_tox)
bag_type = /obj/item/weapon/storage/backpack/toxins
satchel_type = /obj/item/weapon/storage/backpack/satchel_tox
duffel_type = /obj/item/weapon/storage/backpack/duffel/tox
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/tox
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
return 1
/datum/job/intern_eng
title = "Engineering Apprentice"
flag = INTERN_ENG
department_flag = ENGSEC
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the Chief Engineer"
selection_color = "#fff5cc"
access = list(access_maint_tunnels, access_construction, access_engine_equip, access_engine)
minimal_access = list(access_maint_tunnels, access_construction, access_engine_equip, access_engine)
bag_type = /obj/item/weapon/storage/backpack/industrial
satchel_type = /obj/item/weapon/storage/backpack/satchel_eng
duffel_type = /obj/item/weapon/storage/backpack/duffel/eng
messenger_bag_type = /obj/item/weapon/storage/backpack/messenger/engi
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/engineering(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
return 1
@@ -425,9 +425,6 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
if(mind)
mind.active = 0 //we wish to transfer the key manually
if(mind.assigned_role == "Clown") //give them a clownname if they are a clown
new_character.real_name = pick(clown_names) //I hate this being here of all places but unfortunately dna is based on real_name!
new_character.rename_self("clown")
mind.original = new_character
mind.transfer_to(new_character) //won't transfer key since the mind is not active
+51 -2
View File
@@ -29,7 +29,7 @@
qdel(W)
else
if(!disable_warning)
src << "<span class='warning'>You are unable to equip that.</span>" //Only print if del_on_fail is false
to_chat(src, "<span class='warning'>You are unable to equip [W].</span>") //Only print if del_on_fail is false
return 0
equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail.
@@ -43,7 +43,29 @@
//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such.
/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot)
. = equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, ignore_blocked = TRUE)
. = equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE)
// Convinience proc. Collects crap that fails to equip either onto the mob's back, or drops it.
// Used in job equipping so shit doesn't pile up at the start loc.
/mob/living/carbon/human/proc/equip_or_collect(var/obj/item/W, var/slot)
if(!istype(W))
log_debug("MobEquip: Error when equipping [W] for [src] in [slot]")
return
if(W.mob_can_equip(src, slot, TRUE, TRUE))
//Mob can equip. Equip it.
equip_to_slot_or_del(W, slot)
else
//Mob can't equip it. Put it their backpack or toss it on the floor
if(istype(back, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = back
//Now, B represents a container we can insert W into.
S.handle_item_insertion(W,1)
return S
var/turf/T = get_turf(src)
if(istype(T))
W.forceMove(T)
return T
//The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot.
var/list/slot_equipment_priority = list( \
@@ -345,3 +367,30 @@ var/list/slot_equipment_priority = list( \
qdel(entry)
/mob/living/carbon/human/proc/equipOutfit(outfit, visualsOnly = FALSE)
var/datum/outfit/O = null
if(ispath(outfit))
O = new outfit
else
O = outfit
if(!istype(O))
return FALSE
if(!O)
return FALSE
return O.equip(src, visualsOnly)
/mob/living/carbon/human/proc/preEquipOutfit(outfit, visualsOnly = FALSE)
var/datum/outfit/O = null
if(ispath(outfit))
O = new outfit
else
O = outfit
if(!istype(O))
return FALSE
if(!O)
return FALSE
return O.pre_equip(src, visualsOnly)
+1 -1
View File
@@ -320,7 +320,7 @@
/mob/living/bot/farmbot/proc/check_tank()
if(!tank)
return FALSE
return ((!target && refills_water && tank.reagents.total_volume < tank.reagents.maximum_volume) || ((tank.reagents.total_volume ) / reagents.maximum_volume) <= 0.3)
return ((!target && refills_water && tank.reagents.total_volume < tank.reagents.maximum_volume) || ((tank.reagents.total_volume ) / tank.reagents.maximum_volume) <= 0.3)
/obj/item/weapon/farmbot_arm_assembly
name = "water tank/robot arm assembly"
@@ -70,7 +70,7 @@
default_h_style = "Short Vox Quills"
/datum/species/vox/equip_survival_gear(var/mob/living/carbon/human/H)
/datum/species/vox/before_equip(mob/living/carbon/human/H, visualsOnly, datum/job/J)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(H), slot_back)
@@ -267,13 +267,11 @@
return "unknown"
return species_language.get_random_name(gender)
/datum/species/proc/equip_survival_gear(var/mob/living/carbon/human/H,var/extendedtank = 1)
if(H.backbag == 1)
if (extendedtank) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand)
else H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
if (extendedtank) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack)
else H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
/datum/species/proc/before_equip(mob/living/carbon/human/H, visualsOnly = FALSE, datum/job/J)
return
/datum/species/proc/after_equip(mob/living/carbon/human/H, visualsOnly = FALSE, datum/job/J)
return
/datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs.
@@ -65,7 +65,8 @@
/datum/species/machine/shell/handle_death(var/mob/living/carbon/human/H)
return
/datum/species/machine/shell/equip_survival_gear(var/mob/living/carbon/human/H)
/datum/species/machine/shell/before_equip(var/mob/living/carbon/human/H)
. = ..()
check_tag(H, H.client)
/datum/species/machine/industrial
@@ -119,8 +119,8 @@
move_trail = /obj/effect/decal/cleanable/blood/tracks/claw
/datum/species/unathi/equip_survival_gear(var/mob/living/carbon/human/H)
..()
/datum/species/unathi/before_equip(var/mob/living/carbon/human/H)
. = ..()
var/obj/item/clothing/shoes/sandal/S = new /obj/item/clothing/shoes/sandal(H)
if(H.equip_to_slot_or_del(S,slot_shoes))
S.autodrobe_no_remove = 1
@@ -191,8 +191,8 @@
default_h_style = "Tajaran Ears"
/datum/species/tajaran/equip_survival_gear(var/mob/living/carbon/human/H)
..()
/datum/species/tajaran/before_equip(var/mob/living/carbon/human/H)
. = ..()
var/obj/item/clothing/shoes/sandal/S = new /obj/item/clothing/shoes/sandal(H)
if(H.equip_to_slot_or_del(S,slot_shoes))
S.autodrobe_no_remove = 1
@@ -379,7 +379,8 @@
return 1
return 0
/datum/species/diona/equip_survival_gear(var/mob/living/carbon/human/H)
/datum/species/diona/before_equip(var/mob/living/carbon/human/H)
. = ..()
var/obj/item/device/flashlight/flare/F = new /obj/item/device/flashlight/flare(H)
if(H.backbag == 1)
H.equip_to_slot_or_del(F, slot_r_hand)
@@ -641,7 +642,8 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
if ("yellow IPC screen")
return LIGHT_COLOR_YELLOW
/datum/species/machine/equip_survival_gear(var/mob/living/carbon/human/H)
/datum/species/machine/before_equip(var/mob/living/carbon/human/H)
. = ..()
check_tag(H, H.client)
H.gender = NEUTER
@@ -746,7 +748,8 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
move_trail = /obj/effect/decal/cleanable/blood/tracks/claw
/datum/species/bug/equip_survival_gear(var/mob/living/carbon/human/H)
/datum/species/bug/before_equip(var/mob/living/carbon/human/H)
. = ..()
H.gender = NEUTER
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/vaurca(H), slot_r_hand)
@@ -78,9 +78,6 @@
/mob/living/carbon/human/proc/hivenet
)
/datum/species/bug/type_c/equip_survival_gear(var/mob/living/carbon/human/H)
return
/datum/species/bug/type_c/handle_post_spawn(var/mob/living/carbon/human/H)
..()
H.gender = FEMALE
@@ -154,9 +151,6 @@
"filtration bit" = /obj/item/organ/vaurca/filtrationbit
)
/datum/species/bug/type_big/equip_survival_gear(var/mob/living/carbon/human/H)
return
/datum/species/bug/type_big/handle_post_spawn(var/mob/living/carbon/human/H)
H.mutations.Add(HULK)
return ..()