Merge pull request #11712 from Markolie/lazy

Custom outfit manager and spawn with outfit on transform/reincarnate
This commit is contained in:
variableundefined
2019-08-24 12:27:48 -04:00
committed by GitHub
17 changed files with 743 additions and 143 deletions
+2 -1
View File
@@ -120,7 +120,8 @@ var/list/admin_verbs_event = list(
/client/proc/cmd_admin_create_centcom_report,
/client/proc/fax_panel,
/client/proc/event_manager_panel,
/client/proc/modify_goals
/client/proc/modify_goals,
/client/proc/outfit_manager
)
var/list/admin_verbs_spawn = list(
+262
View File
@@ -0,0 +1,262 @@
GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
/client/proc/outfit_manager()
set category = "Event"
set name = "Outfit Manager"
if(!check_rights(R_EVENT))
return
holder.outfit_manager(usr)
/datum/admins/proc/outfit_manager(mob/admin)
var/list/dat = list("<ul>")
for(var/datum/outfit/O in GLOB.custom_outfits)
var/vv = FALSE
var/datum/outfit/varedit/VO = O
if(istype(VO))
vv = length(VO.vv_values)
dat += "<li>[O.name][vv ? "(VV)" : ""]</li> <a href='?_src_=holder;save_outfit=1;chosen_outfit=[O.UID()]'>Save</a> <a href='?_src_=holder;delete_outfit=1;chosen_outfit=[O.UID()]'>Delete</a>"
dat += "</ul>"
dat += "<a href='?_src_=holder;create_outfit_menu=1'>Create</a><br>"
dat += "<a href='?_src_=holder;load_outfit=1'>Load from file</a>"
admin << browse(dat.Join(),"window=outfitmanager")
/datum/admins/proc/save_outfit(mob/admin,datum/outfit/O)
O.save_to_file(admin)
outfit_manager(admin)
/datum/admins/proc/delete_outfit(mob/admin,datum/outfit/O)
GLOB.custom_outfits -= O
qdel(O)
to_chat(admin,"<span class='notice'>Outfit deleted.</span>")
outfit_manager(admin)
/datum/admins/proc/load_outfit(mob/admin)
var/outfit_file = input("Pick outfit json file:", "File") as null|file
if(!outfit_file)
return
var/filedata = file2text(outfit_file)
var/json = json_decode(filedata)
if(!json)
to_chat(admin,"<span class='warning'>JSON decode error.</span>")
return
var/otype = text2path(json["outfit_type"])
if(!ispath(otype,/datum/outfit))
to_chat(admin,"<span class='warning'>Malformed/Outdated file.</span>")
return
var/datum/outfit/O = new otype
if(!O.load_from(json))
to_chat(admin,"<span class='warning'>Malformed/Outdated file.</span>")
return
GLOB.custom_outfits += O
outfit_manager(admin)
/datum/admins/proc/create_outfit(mob/admin)
var/list/uniforms = typesof(/obj/item/clothing/under)
var/list/suits = typesof(/obj/item/clothing/suit)
var/list/gloves = typesof(/obj/item/clothing/gloves)
var/list/shoes = typesof(/obj/item/clothing/shoes)
var/list/headwear = typesof(/obj/item/clothing/head)
var/list/glasses = typesof(/obj/item/clothing/glasses)
var/list/masks = typesof(/obj/item/clothing/mask)
var/list/pdas = typesof(/obj/item/pda)
var/list/ids = typesof(/obj/item/card/id)
var/uniform_select = "<select name=\"outfit_uniform\"><option value=\"\">None</option>"
for(var/path in uniforms)
uniform_select += "<option value=\"[path]\">[path]</option>"
uniform_select += "</select>"
var/suit_select = "<select name=\"outfit_suit\"><option value=\"\">None</option>"
for(var/path in suits)
suit_select += "<option value=\"[path]\">[path]</option>"
suit_select += "</select>"
var/gloves_select = "<select name=\"outfit_gloves\"><option value=\"\">None</option>"
for(var/path in gloves)
gloves_select += "<option value=\"[path]\">[path]</option>"
gloves_select += "</select>"
var/shoes_select = "<select name=\"outfit_shoes\"><option value=\"\">None</option>"
for(var/path in shoes)
shoes_select += "<option value=\"[path]\">[path]</option>"
shoes_select += "</select>"
var/head_select = "<select name=\"outfit_head\"><option value=\"\">None</option>"
for(var/path in headwear)
head_select += "<option value=\"[path]\">[path]</option>"
head_select += "</select>"
var/glasses_select = "<select name=\"outfit_glasses\"><option value=\"\">None</option>"
for(var/path in glasses)
glasses_select += "<option value=\"[path]\">[path]</option>"
glasses_select += "</select>"
var/mask_select = "<select name=\"outfit_mask\"><option value=\"\">None</option>"
for(var/path in masks)
mask_select += "<option value=\"[path]\">[path]</option>"
mask_select += "</select>"
var/id_select = "<select name=\"outfit_id\"><option value=\"\">None</option>"
for(var/path in ids)
id_select += "<option value=\"[path]\">[path]</option>"
id_select += "</select>"
var/pda_select = "<select name=\"outfit_pda\"><option value=\"\">None</option>"
for(var/path in pdas)
pda_select += "<option value=\"[path]\">[path]</option>"
pda_select += "</select>"
var/dat = {"
<html><head><title>Create Outfit</title></head><body>
<form name="outfit" action="byond://?src=[UID()];" method="get">
<input type="hidden" name="src" value="[UID()]">
<input type="hidden" name="create_outfit_finalize" value="1">
<table>
<tr>
<th>Name:</th>
<td>
<input type="text" name="outfit_name" value="Custom Outfit">
</td>
</tr>
<tr>
<th>Uniform:</th>
<td>
[uniform_select]
</td>
</tr>
<tr>
<th>Suit:</th>
<td>
[suit_select]
</td>
</tr>
<tr>
<th>Back:</th>
<td>
<input type="text" name="outfit_back" value="">
</td>
</tr>
<tr>
<th>Belt:</th>
<td>
<input type="text" name="outfit_belt" value="">
</td>
</tr>
<tr>
<th>Gloves:</th>
<td>
[gloves_select]
</td>
</tr>
<tr>
<th>Shoes:</th>
<td>
[shoes_select]
</td>
</tr>
<tr>
<th>Head:</th>
<td>
[head_select]
</td>
</tr>
<tr>
<th>Mask:</th>
<td>
[mask_select]
</td>
</tr>
<tr>
<th>Left Ear:</th>
<td>
<input type="text" name="outfit_l_ear" value="">
</td>
</tr>
<tr>
<th>Right Ear:</th>
<td>
<input type="text" name="outfit_r_ear" value="">
</td>
</tr>
<tr>
<th>Glasses:</th>
<td>
[glasses_select]
</td>
</tr>
<tr>
<th>ID:</th>
<td>
[id_select]
</td>
</tr>
<tr>
<th>PDA:</th>
<td>
[pda_select]
</td>
</tr>
<tr>
<th>Left Pocket:</th>
<td>
<input type="text" name="outfit_l_pocket" value="">
</td>
</tr>
<tr>
<th>Right Pocket:</th>
<td>
<input type="text" name="outfit_r_pocket" value="">
</td>
</tr>
<tr>
<th>Suit Store:</th>
<td>
<input type="text" name="outfit_s_store" value="">
</td>
</tr>
<tr>
<th>Right Hand:</th>
<td>
<input type="text" name="outfit_r_hand" value="">
</td>
</tr>
<tr>
<th>Left Hand:</th>
<td>
<input type="text" name="outfit_l_hand" value="">
</td>
</tr>
</table>
<br>
<input type="submit" value="Save">
</form></body></html>
"}
admin << browse(dat, "window=dressup;size=550x600")
/datum/admins/proc/create_outfit_finalize(mob/admin, list/href_list)
var/datum/outfit/O = new
O.name = href_list["outfit_name"]
O.uniform = text2path(href_list["outfit_uniform"])
O.shoes = text2path(href_list["outfit_shoes"])
O.gloves = text2path(href_list["outfit_gloves"])
O.suit = text2path(href_list["outfit_suit"])
O.head = text2path(href_list["outfit_head"])
O.back = text2path(href_list["outfit_back"])
O.mask = text2path(href_list["outfit_mask"])
O.glasses = text2path(href_list["outfit_glasses"])
O.r_hand = text2path(href_list["outfit_r_hand"])
O.l_hand = text2path(href_list["outfit_l_hand"])
O.suit_store = text2path(href_list["outfit_s_store"])
O.l_pocket = text2path(href_list["outfit_l_pocket"])
O.r_pocket = text2path(href_list["outfit_r_pocket"])
O.id = text2path(href_list["outfit_id"])
O.pda = text2path(href_list["outfit_pda"])
O.belt = text2path(href_list["outfit_belt"])
O.l_ear = text2path(href_list["outfit_l_ear"])
O.r_ear = text2path(href_list["outfit_r_ear"])
GLOB.custom_outfits.Add(O)
message_admins("[key_name_admin(usr)] created \"[O.name]\" outfit.")
+43 -8
View File
@@ -341,9 +341,6 @@
if("Cancel") return
if("Yes") delmob = 1
log_admin("[key_name(usr)] has used rudimentary transformation on [key_name(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]")
message_admins("<span class='notice'>[key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]</span>", 1)
switch(href_list["simplemake"])
if("observer") M.change_mob_type( /mob/dead/observer , null, null, delmob, 1 )
if("drone") M.change_mob_type( /mob/living/carbon/alien/humanoid/drone , null, null, delmob, 1 )
@@ -351,7 +348,11 @@
if("queen") M.change_mob_type( /mob/living/carbon/alien/humanoid/queen/large , null, null, delmob, 1 )
if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob, 1 )
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob, 1 )
if("human") M.change_mob_type( /mob/living/carbon/human, null, null, delmob, 1 )
if("human")
var/posttransformoutfit = usr.client.robust_dress_shop()
var/mob/living/carbon/human/newmob = M.change_mob_type(/mob/living/carbon/human, null, null, delmob, 1)
if(posttransformoutfit && istype(newmob))
newmob.equipOutfit(posttransformoutfit)
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob, 1 )
if("monkey") M.change_mob_type( /mob/living/carbon/human/monkey , null, null, delmob, 1 )
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob, 1 )
@@ -368,6 +369,9 @@
if("constructwraith") M.change_mob_type( /mob/living/simple_animal/hostile/construct/wraith , null, null, delmob, 1 )
if("shade") M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob, 1 )
log_admin("[key_name(usr)] has used rudimentary transformation on [key_name(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]")
message_admins("<span class='notice'>[key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]</span>", 1)
/////////////////////////////////////new ban stuff
else if(href_list["unbanf"])
@@ -1510,14 +1514,22 @@
usr.client.cmd_admin_animalize(M)
else if(href_list["incarn_ghost"])
if(!check_rights(R_SPAWN)) return
if(!check_rights(R_SPAWN))
return
var/mob/dead/observer/G = locateUID(href_list["incarn_ghost"])
if(!istype(G))
to_chat(usr, "This will only work on /mob/dead/observer")
log_admin("[key_name(G)] was incarnated by [key_name(src.owner)]")
message_admins("[key_name_admin(G)] was incarnated by [key_name_admin(src.owner)]")
G.incarnate_ghost()
var/posttransformoutfit = usr.client.robust_dress_shop()
var/mob/living/carbon/human/H = G.incarnate_ghost()
if(posttransformoutfit && istype(H))
H.equipOutfit(posttransformoutfit)
log_admin("[key_name(G)] was incarnated by [key_name(owner)]")
message_admins("[key_name_admin(G)] was incarnated by [key_name_admin(owner)]")
else if(href_list["togmutate"])
if(!check_rights(R_SPAWN)) return
@@ -3373,6 +3385,29 @@
message_admins("[key_name_admin(usr)] forcefully unlinked the discord account belonging to [target_ckey]")
log_admin("[key_name_admin(usr)] forcefully unlinked the discord account belonging to [target_ckey]")
else if(href_list["create_outfit_finalize"])
if(!check_rights(R_EVENT))
return
create_outfit_finalize(usr,href_list)
else if(href_list["load_outfit"])
if(!check_rights(R_EVENT))
return
load_outfit(usr)
else if(href_list["create_outfit_menu"])
if(!check_rights(R_EVENT))
return
create_outfit(usr)
else if(href_list["delete_outfit"])
if(!check_rights(R_EVENT))
return
var/datum/outfit/O = locate(href_list["chosen_outfit"]) in GLOB.custom_outfits
delete_outfit(usr,O)
else if(href_list["save_outfit"])
if(!check_rights(R_EVENT))
return
var/datum/outfit/O = locate(href_list["chosen_outfit"]) in GLOB.custom_outfits
save_outfit(usr,O)
/client/proc/create_eventmob_for(var/mob/living/carbon/human/H, var/killthem = 0)
if(!check_rights(R_EVENT))
return
+60 -90
View File
@@ -576,109 +576,79 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_EVENT))
return
if(!ishuman(M))
if(!ishuman(M) && !isobserver(M))
alert("Invalid mob")
return
var/list/choices = list(
"strip",
"as job...",
"emergency response team member",
"emergency response team leader"
var/dresscode = robust_dress_shop()
if(!dresscode)
return
var/delete_pocket
var/mob/living/carbon/human/H
if(isobserver(M))
H = M.change_mob_type(/mob/living/carbon/human, null, null, TRUE)
else
H = M
if(H.l_store || H.r_store || H.s_store) //saves a lot of time for admins and coders alike
if(alert("Should the items in their pockets be dropped? Selecting \"No\" will delete them.", "Robust quick dress shop", "Yes", "No") == "No")
delete_pocket = TRUE
for (var/obj/item/I in H.get_equipped_items(delete_pocket))
qdel(I)
if(dresscode != "Naked")
H.equipOutfit(dresscode)
H.regenerate_icons()
feedback_add_details("admin_verb", "SE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].")
message_admins("<span class='notice'>[key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].</span>", 1)
/client/proc/robust_dress_shop()
var/list/outfits = list(
"Naked",
"As Job...",
"Custom..."
)
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/list/paths = subtypesof(/datum/outfit) - typesof(/datum/outfit/job)
for(var/path in paths)
var/datum/outfit/O = path //not much to initalize here but whatever
if(initial(O.can_be_admin_equipped))
outfits[initial(O.name)] = path
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
var/dresscode = input("Select outfit", "Robust quick dress shop") as null|anything in outfits
if(isnull(dresscode))
return
var/datum/outfit/O
if(!(dresscode in list("strip", "as job...", "emergency response team member", "emergency response team leader")))
O = choices[dresscode]
if(outfits[dresscode])
dresscode = outfits[dresscode]
var/datum/job/jobdatum
if(dresscode == "as job...")
var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs()
jobdatum = SSjobs.GetJob(jobname)
if(dresscode == "As Job...")
var/list/job_paths = subtypesof(/datum/outfit/job)
var/list/job_outfits = list()
for(var/path in job_paths)
var/datum/outfit/O = path
if(initial(O.can_be_admin_equipped))
job_outfits[initial(O.name)] = path
feedback_add_details("admin_verb", "SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(dostrip)
for(var/obj/item/I in M)
if(istype(I, /obj/item/implant))
continue
if(istype(I, /obj/item/organ))
continue
qdel(I)
dresscode = input("Select job equipment", "Robust quick dress shop") as null|anything in job_outfits
dresscode = job_outfits[dresscode]
if(isnull(dresscode))
return
if(dresscode == "Custom...")
var/list/custom_names = list()
for(var/datum/outfit/D in GLOB.custom_outfits)
custom_names[D.name] = D
var/selected_name = input("Select outfit", "Robust quick dress shop") as null|anything in custom_names
dresscode = custom_names[selected_name]
if(isnull(dresscode))
return
switch(dresscode)
if("strip")
//do nothing
// god is dead
if("as job...")
if(jobdatum)
dresscode = "[jobdatum.title]"
jobdatum.equip(M)
if("emergency response team member", "emergency response team leader")
var/datum/response_team/equip_team = null
switch(alert("Level", "Emergency Response Team", "Amber", "Red", "Gamma"))
if("Amber")
equip_team = new /datum/response_team/amber
if("Red")
equip_team = new /datum/response_team/red
if("Gamma")
equip_team = new /datum/response_team/gamma
if(!equip_team)
return
if(dresscode == "emergency response team leader")
equip_team.equip_officer("Commander", M)
else
var/list/ert_outfits = list("Security", "Engineer", "Medic", "Janitor", "Paranormal")
var/echoice = input("Loadout Type", "Emergency Response Team") as null|anything in ert_outfits
if(!echoice)
return
switch(echoice)
if("Commander")
equip_team.equip_officer("Commander", M)
if("Security")
equip_team.equip_officer("Security", M)
if("Engineer")
equip_team.equip_officer("Engineer", M)
if("Medic")
equip_team.equip_officer("Medic", M)
if("Janitor")
equip_team.equip_officer("Janitor", M)
if("Paranormal")
equip_team.equip_officer("Paranormal", M)
else
to_chat(src, "Invalid ERT Loadout selected")
else // outfit datum
if(O)
M.equipOutfit(O, FALSE)
M.regenerate_icons()
log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].")
message_admins("<span class='notice'>[key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].</span>", 1)
return
return dresscode
/client/proc/startSinglo()
set category = "Debug"
+2 -1
View File
@@ -15,7 +15,8 @@
standard_outfit_options = list()
for(var/path in subtypesof(/datum/outfit/job))
var/datum/outfit/O = path
standard_outfit_options[initial(O.name)] = path
if(initial(O.can_be_admin_equipped))
standard_outfit_options[initial(O.name)] = path
sortTim(standard_outfit_options, /proc/cmp_text_asc)
outfit_options = standard_outfit_options
+26 -19
View File
@@ -629,38 +629,45 @@ BLIND // can't see anything
/obj/item/clothing/under/proc/can_attach_accessory(obj/item/clothing/accessory/A)
if(istype(A))
. = 1
. = TRUE
else
return 0
return FALSE
if(accessories.len)
for(var/obj/item/clothing/accessory/AC in accessories)
if((A.slot in list(ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_ARMBAND)) && AC.slot == A.slot)
return 0
return FALSE
if(!A.allow_duplicates && AC.type == A.type)
return 0
return FALSE
/obj/item/clothing/under/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/clothing/accessory))
var/obj/item/clothing/accessory/A = I
if(can_attach_accessory(A))
user.unEquip(I) // Make absolutely sure this accessory is removed from hands
accessories += A
A.on_attached(src, user)
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = loc
H.update_inv_w_uniform()
return
else
to_chat(user, "<span class='notice'>You cannot attach more accessories of this type to [src].</span>")
attach_accessory(I, user, TRUE)
if(accessories.len)
for(var/obj/item/clothing/accessory/A in accessories)
A.attackby(I, user, params)
return
return TRUE
..()
. = ..()
/obj/item/clothing/under/proc/attach_accessory(obj/item/clothing/accessory/A, mob/user, unequip = FALSE)
if(can_attach_accessory(A))
if(unequip && !user.unEquip(A)) // Make absolutely sure this accessory is removed from hands
return FALSE
accessories += A
A.on_attached(src, user)
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
H.update_inv_w_uniform()
return TRUE
else
to_chat(user, "<span class='notice'>You cannot attach more accessories of this type to [src].</span>")
return FALSE
/obj/item/clothing/under/examine(mob/user)
..(user)
+4 -1
View File
@@ -779,14 +779,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/proc/incarnate_ghost()
if(!client)
return
var/mob/living/carbon/human/new_char = new(get_turf(src))
client.prefs.copy_to(new_char)
if(mind)
mind.active = 1
mind.active = TRUE
mind.transfer_to(new_char)
else
new_char.key = key
return new_char
/mob/dead/observer/is_literate()
return TRUE
@@ -1877,6 +1877,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
. = ..()
. += "---"
.["Set Species"] = "?_src_=vars;setspecies=[UID()]"
.["Copy Outfit"] = "?_src_=vars;copyoutfit=[UID()]"
.["Make AI"] = "?_src_=vars;makeai=[UID()]"
.["Make cyborg"] = "?_src_=vars;makerobot=[UID()]"
.["Make monkey"] = "?_src_=vars;makemonkey=[UID()]"
@@ -567,3 +567,10 @@
return 0
return O.equip(src, visualsOnly)
//delete all equipment without dropping anything
/mob/living/carbon/human/proc/delete_equipment()
for(var/slot in get_all_slots())//order matters, dependant slots go first
qdel(slot)
for(var/obj/item/I in l_hand, r_hand)
qdel(I)
+1 -11
View File
@@ -240,32 +240,21 @@ var/ert_request_answered = FALSE
switch(officer_type)
if("Engineer")
M.equipOutfit(engineering_outfit)
M.job = "ERT Engineering"
if("Security")
M.equipOutfit(security_outfit)
M.job = "ERT Security"
if("Medic")
M.equipOutfit(medical_outfit)
M.job = "ERT Medical"
if("Janitor")
M.equipOutfit(janitor_outfit)
M.job = "ERT Janitor"
if("Paranormal")
M.equipOutfit(paranormal_outfit)
M.job = "ERT Paranormal"
M.mind.isholy = TRUE
if("Commander")
// Override name and age for the commander
M.rename_character(null, "[pick("Lieutenant", "Captain", "Major")] [pick(GLOB.last_names)]")
M.age = rand(35,45)
M.equipOutfit(command_outfit)
M.job = "ERT Commander"
/datum/response_team/proc/cannot_send_team()
event_announcement.Announce("[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time.", "ERT Unavailable")
@@ -317,6 +306,7 @@ var/ert_request_answered = FALSE
name = "Response team"
var/rt_assignment = "Emergency Response Team Member"
var/rt_job = "This is a bug"
var/rt_mob_job = "This is a bug" // The job set on the actual mob.
allow_backbag_choice = FALSE
allow_loadout = FALSE
pda = /obj/item/pda/heads/ert
+22
View File
@@ -23,6 +23,10 @@
PDA.ownrank = rt_assignment
PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
/datum/outfit/job/centcom/response_team/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
H.job = rt_mob_job
//////////////////// COMMANDER ///////////////////
@@ -30,6 +34,7 @@
name = "RT Commander"
rt_assignment = "Emergency Response Team Leader"
rt_job = "Emergency Response Team Leader"
rt_mob_job = "ERT Commander"
uniform = /obj/item/clothing/under/rank/centcom_officer
back = /obj/item/storage/backpack/ert/commander
@@ -39,6 +44,12 @@
l_pocket = /obj/item/pinpointer
r_pocket = /obj/item/melee/classic_baton/telescopic
/datum/outfit/job/centcom/response_team/commander/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
H.rename_character(null, "[pick("Lieutenant", "Captain", "Major")] [pick(GLOB.last_names)]")
H.age = rand(35,45)
/datum/outfit/job/centcom/response_team/commander/amber
name = "RT Commander (Amber)"
shoes = /obj/item/clothing/shoes/combat
@@ -107,6 +118,7 @@
/datum/outfit/job/centcom/response_team/security
name = "RT Security"
rt_job = "Emergency Response Team Officer"
rt_mob_job = "ERT Security"
uniform = /obj/item/clothing/under/rank/security
back = /obj/item/storage/backpack/ert/security
belt = /obj/item/storage/belt/security/response_team
@@ -194,6 +206,7 @@
/datum/outfit/job/centcom/response_team/engineer
name = "RT Engineer"
rt_job = "Emergency Response Team Engineer"
rt_mob_job = "ERT Engineering"
back = /obj/item/storage/backpack/ert/engineer
uniform = /obj/item/clothing/under/rank/engineer
@@ -276,6 +289,7 @@
/datum/outfit/job/centcom/response_team/medic
name = "RT Medic"
rt_job = "Emergency Response Team Medic"
rt_mob_job = "ERT Medical"
uniform = /obj/item/clothing/under/rank/medical
back = /obj/item/storage/backpack/ert/medical
pda = /obj/item/pda/heads/ert/medical
@@ -312,6 +326,7 @@
/datum/outfit/job/centcom/response_team/medic/red
name = "RT Medic (Red)"
rt_mob_job = "ERT Medical"
shoes = /obj/item/clothing/shoes/white
gloves = /obj/item/clothing/gloves/color/latex/nitrile
suit = /obj/item/clothing/suit/space/hardsuit/ert/medical
@@ -377,6 +392,7 @@
/datum/outfit/job/centcom/response_team/paranormal
name = "RT Paranormal"
rt_job = "Emergency Response Team Inquisitor"
rt_mob_job = "ERT Paranormal"
uniform = /obj/item/clothing/under/rank/chaplain
back = /obj/item/storage/backpack/ert/security
gloves = /obj/item/clothing/gloves/color/black
@@ -392,6 +408,11 @@
/obj/item/flashlight/seclite = 1
)
/datum/outfit/job/centcom/response_team/paranormal/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(H.mind)
H.mind.isholy = TRUE
/datum/outfit/job/centcom/response_team/paranormal/amber
name = "RT Paranormal (Amber)"
suit = /obj/item/clothing/suit/armor/vest/ert/security/paranormal
@@ -433,6 +454,7 @@
/datum/outfit/job/centcom/response_team/janitorial
name = "RT Janitor"
rt_job = "Emergency Response Team Janitor"
rt_mob_job = "ERT Janitor"
uniform = /obj/item/clothing/under/color/purple
back = /obj/item/storage/backpack/ert/janitor
belt = /obj/item/storage/belt/janitor/full
+2 -2
View File
@@ -1,12 +1,12 @@
//place all the outfits for your levels in here.
/datum/outfit/vr/vr_basic
name = "basic vr"
name = "Basic Virtual Reality"
uniform = /obj/item/clothing/under/psysuit
shoes = /obj/item/clothing/shoes/black
/datum/outfit/vr/roman
name = "roman"
name = "Roman"
uniform = /obj/item/clothing/under/roman
shoes = /obj/item/clothing/shoes/roman
l_hand = /obj/item/shield/riot/roman