Merge pull request #4838 from deathride58/loadoutsystem
[READY FOR TESTMERGE] Ports Hippie's loadout system
This commit is contained in:
@@ -394,6 +394,8 @@ SUBSYSTEM_DEF(job)
|
||||
H.mind.assigned_role = rank
|
||||
|
||||
if(job)
|
||||
if(!job.dresscodecompliant)// CIT CHANGE - dress code compliance
|
||||
equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items
|
||||
var/new_mob = job.equip(H)
|
||||
if(ismob(new_mob))
|
||||
H = new_mob
|
||||
@@ -411,8 +413,12 @@ SUBSYSTEM_DEF(job)
|
||||
to_chat(M, "<FONT color='blue'><B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></font>")
|
||||
|
||||
if(job && H)
|
||||
if(job.dresscodecompliant)// CIT CHANGE - dress code compliance
|
||||
equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items
|
||||
job.after_spawn(H, M)
|
||||
handle_roundstart_items(H, M.ckey, H.mind.assigned_role, H.mind.special_role) //CIT CHANGE - makes donators spawn with their items
|
||||
equip_loadout(N, H, TRUE)//CIT CHANGE - makes players spawn with in-backpack loadout items properly. A little hacky but it works
|
||||
|
||||
//handle_roundstart_items(H, M.ckey, H.mind.assigned_role, H.mind.special_role) //CIT CHANGE - makes donators spawn with their items. This can safely be commented out when all of the donator items are migrated to the loadout system
|
||||
|
||||
return H
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ GLOBAL_PROTECT(security_mode)
|
||||
if("no-init" in params)
|
||||
return
|
||||
|
||||
cit_initialize()
|
||||
|
||||
Master.Initialize(10, FALSE)
|
||||
|
||||
/world/proc/SetupExternalRSC()
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
|
||||
/* CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! *\
|
||||
| THIS FILE CONTAINS A SHITTON OF |
|
||||
| CHANGES SPECIFIC TO CITADEL. IF |
|
||||
| YOU'RE FIXING A MERGE CONFLICT |
|
||||
| HERE, PLEASE ASK FOR REVIEW FROM |
|
||||
| ANOTHER MAINTAINER TO ENSURE YOU |
|
||||
| DON'T INTRODUCE REGRESSIONS. |
|
||||
\* */
|
||||
|
||||
GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
@@ -220,6 +227,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Character Settings</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=2' [current_tab == 2 ? "class='linkOn'" : ""]>Character Appearance</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=3' [current_tab == 3 ? "class='linkOn'" : ""]>Loadout</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>Game Preferences</a>"
|
||||
|
||||
if(!path)
|
||||
@@ -536,6 +544,56 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
*/
|
||||
|
||||
dat += "</td></tr></table>"
|
||||
if(3)
|
||||
if(!gear_tab)
|
||||
gear_tab = GLOB.loadout_items[1]
|
||||
dat += "<table align='center' width='100%'>"
|
||||
dat += "<tr><td colspan=4><center><b><font color='[gear_points == 0 ? "#E62100" : "#CCDDFF"]'>[gear_points]</font> loadout points remaining.</b> \[<a href='?_src_=prefs;preference=gear;clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
|
||||
dat += "<tr><td colspan=4><center>You can only choose one item per category, unless it's an item that spawns in your backpack or hands.</center></td></tr>"
|
||||
dat += "<tr><td colspan=4><center><b>"
|
||||
var/firstcat = TRUE
|
||||
for(var/i in GLOB.loadout_items)
|
||||
if(firstcat)
|
||||
firstcat = FALSE
|
||||
else
|
||||
dat += " |"
|
||||
if(i == gear_tab)
|
||||
dat += " <span class='linkOn'>[i]</span> "
|
||||
else
|
||||
dat += " <a href='?_src_=prefs;preference=gear;select_category=[i]'>[i]</a> "
|
||||
dat += "</b></center></td></tr>"
|
||||
dat += "<tr><td colspan=4><hr></td></tr>"
|
||||
dat += "<tr><td colspan=4><b><center>[gear_tab]</center></b></td></tr>"
|
||||
dat += "<tr><td colspan=4><hr></td></tr>"
|
||||
dat += "<tr style='vertical-align:top;'><td width=15%><b>Name</b></td>"
|
||||
dat += "<td width=5% style='vertical-align:top'><b>Cost</b></td>"
|
||||
dat += "<td><font size=2><b>Restrictions</b></font></td>"
|
||||
dat += "<td><font size=2><b>Description</b></font></td></tr>"
|
||||
for(var/j in GLOB.loadout_items[gear_tab])
|
||||
var/datum/gear/gear = GLOB.loadout_items[gear_tab][j]
|
||||
var/donoritem
|
||||
if(gear.ckeywhitelist && gear.ckeywhitelist.len)
|
||||
donoritem = TRUE
|
||||
if(!(user.ckey in gear.ckeywhitelist))
|
||||
continue
|
||||
var/class_link = ""
|
||||
if(gear.type in chosen_gear)
|
||||
class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=0'"
|
||||
else if(gear_points <= 0)
|
||||
class_link = "style='white-space:normal;' class='linkOff'"
|
||||
else if(donoritem)
|
||||
class_link = "style='white-space:normal;background:#ebc42e;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'"
|
||||
else
|
||||
class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'"
|
||||
dat += "<tr style='vertical-align:top;'><td width=15%><a [class_link]>[j]</a></td>"
|
||||
dat += "<td width = 5% style='vertical-align:top'>[gear.cost]</td><td>"
|
||||
if(islist(gear.restricted_roles))
|
||||
if(gear.restricted_roles.len)
|
||||
dat += "<font size=2>"
|
||||
dat += gear.restricted_roles.Join(";")
|
||||
dat += "</font>"
|
||||
dat += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
|
||||
dat += "</table>"
|
||||
dat += "<hr><center>"
|
||||
|
||||
if(!IsGuestKey(user.key))
|
||||
@@ -1618,6 +1676,34 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if (href_list["tab"])
|
||||
current_tab = text2num(href_list["tab"])
|
||||
|
||||
if(href_list["preference"] == "gear")
|
||||
if(href_list["clear_loadout"])
|
||||
LAZYCLEARLIST(chosen_gear)
|
||||
gear_points = initial(gear_points)
|
||||
save_preferences()
|
||||
if(href_list["select_category"])
|
||||
for(var/i in GLOB.loadout_items)
|
||||
if(i == href_list["select_category"])
|
||||
gear_tab = i
|
||||
if(href_list["toggle_gear_path"])
|
||||
var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])]
|
||||
if(!G)
|
||||
return
|
||||
var/toggle = text2num(href_list["toggle_gear"])
|
||||
if(!toggle && (G.type in chosen_gear))//toggling off and the item effectively is in chosen gear)
|
||||
LAZYREMOVE(chosen_gear, G.type)
|
||||
gear_points += initial(G.cost)
|
||||
else if(toggle && (!(is_type_in_ref_list(G, chosen_gear))))
|
||||
if(!is_loadout_slot_available(G.category))
|
||||
to_chat(user, "<span class='danger'>You cannot take this loadout, as you've already chosen too many of the same category!</span>")
|
||||
return
|
||||
if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist))
|
||||
to_chat(user, "<span class='danger'>This is an item intended for donator use only. You are not authorized to use this item.</span>")
|
||||
return
|
||||
if(gear_points >= initial(G.cost))
|
||||
LAZYADD(chosen_gear, G.type)
|
||||
gear_points -= initial(G.cost)
|
||||
|
||||
ShowChoices(user)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -469,14 +469,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
job_engsec_med = sanitize_integer(job_engsec_med, 0, 65535, initial(job_engsec_med))
|
||||
job_engsec_low = sanitize_integer(job_engsec_low, 0, 65535, initial(job_engsec_low))
|
||||
|
||||
//Citadel
|
||||
features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"]))
|
||||
if(!features["mcolor2"] || features["mcolor"] == "#000")
|
||||
features["mcolor2"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
|
||||
if(!features["mcolor3"] || features["mcolor"] == "#000")
|
||||
features["mcolor3"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
|
||||
features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0)
|
||||
features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0)
|
||||
cit_character_pref_load(S)
|
||||
|
||||
return 1
|
||||
|
||||
/datum/preferences/proc/save_character()
|
||||
@@ -539,47 +533,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["job_engsec_med"] , job_engsec_med)
|
||||
WRITE_FILE(S["job_engsec_low"] , job_engsec_low)
|
||||
|
||||
//Citadel
|
||||
WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"])
|
||||
WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"])
|
||||
WRITE_FILE(S["feature_mcolor2"], features["mcolor2"])
|
||||
WRITE_FILE(S["feature_mcolor3"], features["mcolor3"])
|
||||
WRITE_FILE(S["feature_mam_body_markings"], features["mam_body_markings"])
|
||||
WRITE_FILE(S["feature_mam_tail"], features["mam_tail"])
|
||||
WRITE_FILE(S["feature_mam_ears"], features["mam_ears"])
|
||||
WRITE_FILE(S["feature_mam_tail_animated"], features["mam_tail_animated"])
|
||||
WRITE_FILE(S["feature_taur"], features["taur"])
|
||||
//Xeno features
|
||||
WRITE_FILE(S["feature_xeno_tail"], features["xenotail"])
|
||||
WRITE_FILE(S["feature_xeno_dors"], features["xenodorsal"])
|
||||
WRITE_FILE(S["feature_xeno_head"], features["xenohead"])
|
||||
//cock features
|
||||
WRITE_FILE(S["feature_has_cock"], features["has_cock"])
|
||||
WRITE_FILE(S["feature_cock_shape"], features["cock_shape"])
|
||||
WRITE_FILE(S["feature_cock_color"], features["cock_color"])
|
||||
WRITE_FILE(S["feature_cock_length"], features["cock_length"])
|
||||
WRITE_FILE(S["feature_cock_girth"], features["cock_girth"])
|
||||
WRITE_FILE(S["feature_has_sheath"], features["sheath_color"])
|
||||
//balls features
|
||||
WRITE_FILE(S["feature_has_balls"], features["has_balls"])
|
||||
WRITE_FILE(S["feature_balls_color"], features["balls_color"])
|
||||
WRITE_FILE(S["feature_balls_size"], features["balls_size"])
|
||||
WRITE_FILE(S["feature_balls_sack_size"], features["balls_sack_size"])
|
||||
WRITE_FILE(S["feature_balls_fluid"], features["balls_fluid"])
|
||||
//breasts features
|
||||
WRITE_FILE(S["feature_has_breasts"], features["has_breasts"])
|
||||
WRITE_FILE(S["feature_breasts_size"], features["breasts_size"])
|
||||
WRITE_FILE(S["feature_breasts_shape"], features["breasts_shape"])
|
||||
WRITE_FILE(S["feature_breasts_color"], features["breasts_color"])
|
||||
WRITE_FILE(S["feature_breasts_fluid"], features["breasts_fluid"])
|
||||
//vagina features
|
||||
WRITE_FILE(S["feature_has_vag"], features["has_vag"])
|
||||
WRITE_FILE(S["feature_vag_shape"], features["vag_shape"])
|
||||
WRITE_FILE(S["feature_vag_color"], features["vag_color"])
|
||||
//womb features
|
||||
WRITE_FILE(S["feature_has_womb"], features["has_womb"])
|
||||
//flavor text
|
||||
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
|
||||
cit_character_pref_save(S)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/proc/is_type_in_ref_list(path, list/L)
|
||||
if(!ispath(path))//not a path
|
||||
return
|
||||
for(var/i in L)
|
||||
var/datum/D = i
|
||||
if(!istype(D))//not an usable reference
|
||||
continue
|
||||
if(istype(D, path))
|
||||
return TRUE
|
||||
@@ -0,0 +1,28 @@
|
||||
/proc/slot_to_string(slot)
|
||||
switch(slot)
|
||||
if(slot_back)
|
||||
return "Backpack"
|
||||
if(slot_wear_mask)
|
||||
return "Mask"
|
||||
if(slot_hands)
|
||||
return "Hands"
|
||||
if(slot_belt)
|
||||
return "Belt"
|
||||
if(slot_ears)
|
||||
return "Ears"
|
||||
if(slot_glasses)
|
||||
return "Glasses"
|
||||
if(slot_gloves)
|
||||
return "Gloves"
|
||||
if(slot_neck)
|
||||
return "Neck"
|
||||
if(slot_head)
|
||||
return "Head"
|
||||
if(slot_shoes)
|
||||
return "Shoes"
|
||||
if(slot_wear_suit)
|
||||
return "Suit"
|
||||
if(slot_w_uniform)
|
||||
return "Uniform"
|
||||
if(slot_in_backpack)
|
||||
return "In backpack"
|
||||
@@ -0,0 +1,27 @@
|
||||
/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff)
|
||||
var/mob/the_mob = N
|
||||
if(!the_mob)
|
||||
the_mob = M // cause this doesn't get assigned if player is a latejoiner
|
||||
if(the_mob.client && the_mob.client.prefs && (the_mob.client.prefs.chosen_gear && the_mob.client.prefs.chosen_gear.len))
|
||||
if(!ishuman(M))//no silicons allowed
|
||||
return
|
||||
for(var/i in the_mob.client.prefs.chosen_gear)
|
||||
var/datum/gear/G = i
|
||||
G = GLOB.loadout_items[slot_to_string(initial(G.category))][initial(G.name)]
|
||||
if(!G)
|
||||
continue
|
||||
var/permitted = TRUE
|
||||
if(G.restricted_roles && G.restricted_roles.len && !(M.mind.assigned_role in G.restricted_roles))
|
||||
permitted = FALSE
|
||||
if(G.ckeywhitelist && G.ckeywhitelist.len && !(the_mob.client.ckey in G.ckeywhitelist))
|
||||
permitted = FALSE
|
||||
if(!equipbackpackstuff && G.category == slot_in_backpack)//snowflake check since plopping stuff in the backpack doesnt work for pre-job equip loadout stuffs
|
||||
permitted = FALSE
|
||||
if(equipbackpackstuff && G.category != slot_in_backpack)//ditto
|
||||
permitted = FALSE
|
||||
if(!permitted)
|
||||
continue
|
||||
var/obj/item/I = new G.path
|
||||
if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first
|
||||
if(!M.equip_to_slot_if_possible(I, slot_in_backpack, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack
|
||||
I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob.
|
||||
@@ -0,0 +1,4 @@
|
||||
//init file stolen from hippie
|
||||
|
||||
/proc/cit_initialize()
|
||||
initialize_global_loadout_items()
|
||||
@@ -0,0 +1,169 @@
|
||||
//This is the file that handles donator loadout items.
|
||||
|
||||
/datum/gear/pingcoderfailsafe
|
||||
name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/bikehorn/golden
|
||||
ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard
|
||||
|
||||
/datum/gear/donortestingbikehorn
|
||||
name = "Donor item testing bikehorn"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/bikehorn
|
||||
ckeywhitelist = list("jayehh","deathride58")
|
||||
|
||||
/datum/gear/kevhorn
|
||||
name = "Airhorn"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/bikehorn/airhorn
|
||||
ckeywhitelist = list("kevinz000")
|
||||
|
||||
/datum/gear/cebusoap
|
||||
name = "Cebutris' soap"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/custom/ceb_soap
|
||||
ckeywhitelist = list("cebutris")
|
||||
|
||||
/datum/gear/kiaracloak
|
||||
name = "Kiara's cloak"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/cloak/inferno
|
||||
ckeywhitelist = list("inferno707")
|
||||
|
||||
/datum/gear/kiaracollar
|
||||
name = "Kiara's collar"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/petcollar/inferno
|
||||
ckeywhitelist = list("inferno707")
|
||||
|
||||
/datum/gear/kiaramedal
|
||||
name = "Insignia of Steele"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/clothing/accessory/medal/steele
|
||||
ckeywhitelist = list("inferno707")
|
||||
|
||||
/datum/gear/sexymimemask
|
||||
name = "The hollow heart"
|
||||
category = slot_wear_mask
|
||||
path = /obj/item/clothing/mask/sexymime
|
||||
ckeywhitelist = list("inferno707")
|
||||
|
||||
/datum/gear/engravedzippo
|
||||
name = "Engraved zippo"
|
||||
category = slot_hands
|
||||
path = /obj/item/lighter/gold
|
||||
ckeywhitelist = list("dirtyoldharry")
|
||||
|
||||
/datum/gear/geisha
|
||||
name = "Geisha suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/geisha
|
||||
ckeywhitelist = list("atiefling")
|
||||
|
||||
/datum/gear/specialscarf
|
||||
name = "Special scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/zomb
|
||||
ckeywhitelist = list("zombierobin")
|
||||
|
||||
/datum/gear/redmadcoat
|
||||
name = "The Mad's labcoat"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/toggle/labcoat/mad/red
|
||||
ckeywhitelist = list("zombierobin")
|
||||
|
||||
/datum/gear/santahat
|
||||
name = "Santa hat"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/santa/fluff
|
||||
ckeywhitelist = list("illotafv")
|
||||
|
||||
/datum/gear/reindeerhat
|
||||
name = "Reindeer hat"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/hardhat/reindeer/fluff
|
||||
ckeywhitelist = list("illotafv")
|
||||
|
||||
/datum/gear/treeplushie
|
||||
name = "Christmas tree plushie"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/toy/plush/tree
|
||||
ckeywhitelist = list("illotafv")
|
||||
|
||||
/datum/gear/santaoutfit
|
||||
name = "Santa costume"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/space/santa/fluff
|
||||
ckeywhitelist = list("illotafv")
|
||||
|
||||
/datum/gear/treecloak
|
||||
name = "Christmas tree cloak"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/cloak/festive
|
||||
ckeywhitelist = list("illotafv")
|
||||
|
||||
/datum/gear/carrotplush
|
||||
name = "Carrot plushie"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/toy/plush/carrot
|
||||
ckeywhitelist = list("improvedname")
|
||||
|
||||
/datum/gear/carrotcloak
|
||||
name = "Carrot cloak"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/cloak/carrot
|
||||
ckeywhitelist = list("improvedname")
|
||||
|
||||
/datum/gear/albortorosamask
|
||||
name = "Alborto Rosa mask"
|
||||
category = slot_wear_mask
|
||||
path = /obj/item/clothing/mask/luchador/zigfie
|
||||
ckeywhitelist = list("zigfie")
|
||||
|
||||
/datum/gear/mankini
|
||||
name = "Mankini"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/mankini
|
||||
ckeywhitelist = list("zigfie")
|
||||
|
||||
/datum/gear/pinkshoes
|
||||
name = "Pink shoes"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/sneakers/pink
|
||||
ckeywhitelist = list("zigfie")
|
||||
|
||||
/datum/gear/reecesgreatcoat
|
||||
name = "Reece's Great Coat"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/trenchcoat/green
|
||||
ckeywhitelist = list("geemiesif")
|
||||
|
||||
/datum/gear/russianflask
|
||||
name = "Russian flask"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/reagent_containers/food/drinks/flask/russian
|
||||
ckeywhitelist = list("slomka")
|
||||
|
||||
/datum/gear/stalkermask
|
||||
name = "S.T.A.L.K.E.R. mask"
|
||||
category = slot_wear_mask
|
||||
path = /obj/item/clothing/mask/gas/stalker
|
||||
ckeywhitelist = list("slomka")
|
||||
|
||||
/datum/gear/stripedcollar
|
||||
name = "Striped collar"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/petcollar/stripe
|
||||
ckeywhitelist = list("jademanique")
|
||||
|
||||
/datum/gear/performersoutfit
|
||||
name = "Bluish performer's outfit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/singery/custom
|
||||
ckeywhitelist = list("killer402402")
|
||||
|
||||
/datum/gear/vermillion
|
||||
name = "Vermillion clothing"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/suit/vermillion
|
||||
ckeywhitelist = list("fractious")
|
||||
@@ -0,0 +1,24 @@
|
||||
/datum/gear/plushcarp
|
||||
name = "Space carp plushie"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/toy/plush/carpplushie
|
||||
|
||||
/datum/gear/plushliz
|
||||
name = "Lizard plushie"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/toy/plush/lizardplushie
|
||||
|
||||
/datum/gear/plushsnek
|
||||
name = "Snake plushie"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/toy/plush/snakeplushie
|
||||
|
||||
/datum/gear/plushslime
|
||||
name = "Slime plushie"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/toy/plush/slimeplushie
|
||||
|
||||
/datum/gear/dildo
|
||||
name = "Customizable dildo"
|
||||
category = slot_in_backpack
|
||||
path = /obj/item/dildo/custom
|
||||
@@ -0,0 +1,39 @@
|
||||
/datum/gear/cold
|
||||
name = "Cold goggles"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/cold
|
||||
|
||||
/datum/gear/eyepatch
|
||||
name = "Eyepatch"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/eyepatch
|
||||
|
||||
/datum/gear/heat
|
||||
name = "Heat goggles"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/heat
|
||||
|
||||
/datum/gear/hipster
|
||||
name = "Hipster glasses"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/regular/hipster
|
||||
|
||||
/datum/gear/jamjar
|
||||
name = "Jamjar glasses"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/regular/jamjar
|
||||
|
||||
/datum/gear/monocle
|
||||
name = "Monocle"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/monocle
|
||||
|
||||
/datum/gear/orange
|
||||
name = "Orange glasses"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/orange
|
||||
|
||||
/datum/gear/prescription
|
||||
name = "Prescription glasses"
|
||||
category = slot_glasses
|
||||
path = /obj/item/clothing/glasses/regular
|
||||
@@ -0,0 +1,49 @@
|
||||
/datum/gear/cane
|
||||
name = "Cane"
|
||||
category = slot_hands
|
||||
path = /obj/item/cane
|
||||
|
||||
/datum/gear/cigarettes
|
||||
name = "Cigarette pack"
|
||||
category = slot_hands
|
||||
path = /obj/item/storage/fancy/cigarettes
|
||||
|
||||
/datum/gear/dice
|
||||
name = "Dice bag"
|
||||
category = slot_hands
|
||||
path = /obj/item/storage/pill_bottle/dice
|
||||
|
||||
/datum/gear/eightball
|
||||
name = "Magic eightball"
|
||||
category = slot_hands
|
||||
path = /obj/item/toy/eightball
|
||||
|
||||
/datum/gear/matches
|
||||
name = "Matchbox"
|
||||
category = slot_hands
|
||||
path = /obj/item/storage/box/matches
|
||||
|
||||
/datum/gear/cheaplighter
|
||||
name = "Cheap lighter"
|
||||
category = slot_hands
|
||||
path = /obj/item/lighter/greyscale
|
||||
|
||||
/datum/gear/cards
|
||||
name = "Playing cards"
|
||||
category = slot_hands
|
||||
path = /obj/item/toy/cards/deck
|
||||
|
||||
/datum/gear/skub
|
||||
name = "Skub"
|
||||
category = slot_hands
|
||||
path = /obj/item/skub
|
||||
|
||||
/datum/gear/carpplushie
|
||||
name = "Space carp plushie"
|
||||
category = slot_hands
|
||||
path = /obj/item/toy/plush/carpplushie
|
||||
|
||||
/datum/gear/wallet
|
||||
name = "Wallet"
|
||||
category = slot_hands
|
||||
path = /obj/item/storage/wallet
|
||||
@@ -0,0 +1,39 @@
|
||||
/datum/gear/baseball
|
||||
name = "Ballcap"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/soft/mime
|
||||
|
||||
/datum/gear/beanie
|
||||
name = "Beanie"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/beanie
|
||||
|
||||
/datum/gear/beret
|
||||
name = "Black beret"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/beret/black
|
||||
|
||||
/datum/gear/flatcap
|
||||
name = "Flat cap"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/flatcap
|
||||
|
||||
/datum/gear/pirate
|
||||
name = "Pirate hat"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/pirate
|
||||
|
||||
/datum/gear/rice_hat
|
||||
name = "Rice hat"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/rice_hat
|
||||
|
||||
/datum/gear/ushanka
|
||||
name = "Ushanka"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/ushanka
|
||||
|
||||
/datum/gear/slime
|
||||
name = "Slime hat"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/collectable/slime
|
||||
@@ -0,0 +1,31 @@
|
||||
// Loadout system. All items are children of /datum/gear. To make a new item, you usually just define a new item like /datum/gear/example
|
||||
// then set required vars like name(string), category(slot define, take them from code/__DEFINES/inventory.dm (the lowertext ones) (be sure that there is an entry in
|
||||
// slot_to_string(slot) proc in hippiestation/code/_HELPERS/mobs.dm to show the category name in preferences menu) and path (the actual item path).
|
||||
// description defaults to the path initial desc, cost defaults to 1 point but if you think your item requires more points, the framework allows that
|
||||
// and lastly, restricted_roles list allows you to let someone spawn with certain items only if the job they spawned with is on the list.
|
||||
|
||||
GLOBAL_LIST_EMPTY(loadout_items)
|
||||
|
||||
/proc/initialize_global_loadout_items()
|
||||
LAZYINITLIST(GLOB.loadout_items)
|
||||
for(var/item in subtypesof(/datum/gear))
|
||||
var/datum/gear/I = new item
|
||||
if(!GLOB.loadout_items[slot_to_string(I.category)])
|
||||
LAZYINITLIST(GLOB.loadout_items[slot_to_string(I.category)])
|
||||
LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I)
|
||||
|
||||
|
||||
/datum/gear
|
||||
var/name
|
||||
var/category
|
||||
var/description
|
||||
var/path //item-to-spawn path
|
||||
var/cost = 1 //normally, each loadout costs a single point.
|
||||
var/list/restricted_roles
|
||||
var/list/ckeywhitelist
|
||||
|
||||
/datum/gear/New()
|
||||
..()
|
||||
if(!description && path)
|
||||
var/obj/O = path
|
||||
description = initial(O.desc)
|
||||
@@ -0,0 +1,4 @@
|
||||
/datum/gear/balaclava
|
||||
name = "Balaclava"
|
||||
category = slot_wear_mask
|
||||
path = /obj/item/clothing/mask/balaclava
|
||||
@@ -0,0 +1,90 @@
|
||||
/datum/gear/bluetie
|
||||
name = "Blue tie"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/tie/blue
|
||||
|
||||
/datum/gear/redtie
|
||||
name = "Red tie"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/tie/red
|
||||
|
||||
/datum/gear/blacktie
|
||||
name = "Black tie"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/tie/black
|
||||
|
||||
/datum/gear/collar
|
||||
name = "Collar"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/petcollar
|
||||
|
||||
/datum/gear/stethoscope
|
||||
name = "Stethoscope"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/stethoscope
|
||||
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
|
||||
|
||||
/datum/gear/scarf
|
||||
name = "White scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf
|
||||
|
||||
/datum/gear/blackscarf
|
||||
name = "Black scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/black
|
||||
|
||||
/datum/gear/redscarf
|
||||
name = "Red scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/red
|
||||
|
||||
/datum/gear/greenscarf
|
||||
name = "Green scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/green
|
||||
|
||||
/datum/gear/darkbluescarf
|
||||
name = "Dark blue scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/darkblue
|
||||
|
||||
/datum/gear/purplescarf
|
||||
name = "Purple scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/purple
|
||||
|
||||
/datum/gear/yellowscarf
|
||||
name = "Yellow scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/yellow
|
||||
|
||||
/datum/gear/orangescarf
|
||||
name = "Orange scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/orange
|
||||
|
||||
/datum/gear/cyanscarf
|
||||
name = "Cyan scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/scarf/cyan
|
||||
|
||||
/datum/gear/stripedredscarf
|
||||
name = "Striped red scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/stripedredscarf
|
||||
|
||||
/datum/gear/stripedbluescarf
|
||||
name = "Striped blue scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/stripedbluescarf
|
||||
|
||||
/datum/gear/stripedgreenscarf
|
||||
name = "Striped green scarf"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/neck/stripedgreenscarf
|
||||
|
||||
/datum/gear/headphones
|
||||
name = "Headphones"
|
||||
category = slot_neck
|
||||
path = /obj/item/clothing/ears/headphones
|
||||
@@ -0,0 +1,39 @@
|
||||
/datum/gear/laceup
|
||||
name = "Laceup shoes"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/laceup
|
||||
|
||||
/datum/gear/workboots
|
||||
name = "Work boots"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/workboots
|
||||
|
||||
/datum/gear/jackboots
|
||||
name = "Jackboots"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/jackboots
|
||||
|
||||
/datum/gear/winterboots
|
||||
name = "Winter boots"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/winterboots
|
||||
|
||||
/datum/gear/sandals
|
||||
name = "Sandals"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/sandal
|
||||
|
||||
/datum/gear/blackshoes
|
||||
name = "Black shoes"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/sneakers/black
|
||||
|
||||
/datum/gear/brownshoes
|
||||
name = "Brown shoes"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/sneakers/brown
|
||||
|
||||
/datum/gear/whiteshoes
|
||||
name = "White shoes"
|
||||
category = slot_shoes
|
||||
path = /obj/item/clothing/shoes/sneakers/white
|
||||
@@ -0,0 +1,59 @@
|
||||
/datum/gear/poncho
|
||||
name = "Poncho"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/poncho
|
||||
|
||||
/datum/gear/ponchogreen
|
||||
name = "Green poncho"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/poncho/green
|
||||
|
||||
/datum/gear/ponchored
|
||||
name = "Red poncho"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/poncho/red
|
||||
|
||||
/datum/gear/jacketbomber
|
||||
name = "Bomber jacket"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket
|
||||
|
||||
/datum/gear/jacketleather
|
||||
name = "Leather jacket"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/leather
|
||||
|
||||
/datum/gear/overcoatleather
|
||||
name = "Leather overcoat"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/leather/overcoat
|
||||
|
||||
/datum/gear/jacketpuffer
|
||||
name = "Puffer jacket"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/puffer
|
||||
|
||||
/datum/gear/vestpuffer
|
||||
name = "Puffer vest"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/puffer/vest
|
||||
|
||||
/datum/gear/jacketlettermanbrown
|
||||
name = "Brown letterman jacket"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/letterman
|
||||
|
||||
/datum/gear/jacketlettermanred
|
||||
name = "Red letterman jacket"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/letterman_red
|
||||
|
||||
/datum/gear/jacketlettermanNT
|
||||
name = "Nanotrasen letterman jacket"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/jacket/letterman_nanotrasen
|
||||
|
||||
/datum/gear/coat
|
||||
name = "Winter coat"
|
||||
category = slot_wear_suit
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat
|
||||
@@ -0,0 +1,79 @@
|
||||
/datum/gear/suitblack
|
||||
name = "Black suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket
|
||||
|
||||
/datum/gear/suitgreen
|
||||
name = "Green suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/green
|
||||
|
||||
/datum/gear/suitred
|
||||
name = "Red suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/red
|
||||
|
||||
/datum/gear/suitcharcoal
|
||||
name = "Charcoal suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/charcoal
|
||||
|
||||
/datum/gear/suitnavy
|
||||
name = "Navy suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/navy
|
||||
|
||||
/datum/gear/suitburgundy
|
||||
name = "Burgundy suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/burgundy
|
||||
|
||||
/datum/gear/suittan
|
||||
name = "Tan suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/tan
|
||||
|
||||
/datum/gear/suitwhite
|
||||
name = "White suit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/suit_jacket/white
|
||||
|
||||
/datum/gear/assistantformal
|
||||
name = "Assistant's formal uniform"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/assistantformal
|
||||
|
||||
/datum/gear/maidcostume
|
||||
name = "Maid costume"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/maid
|
||||
|
||||
/datum/gear/mailmanuniform
|
||||
name = "Mailman's jumpsuit"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/rank/mailman
|
||||
|
||||
/datum/gear/skirtblack
|
||||
name = "Black skirt"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/skirt/black
|
||||
|
||||
/datum/gear/skirtblue
|
||||
name = "Blue skirt"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/skirt/blue
|
||||
|
||||
/datum/gear/skirtred
|
||||
name = "Red skirt"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/skirt/red
|
||||
|
||||
/datum/gear/skirtpurple
|
||||
name = "Purple skirt"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/skirt/purple
|
||||
|
||||
/datum/gear/kilt
|
||||
name = "Kilt"
|
||||
category = slot_w_uniform
|
||||
path = /obj/item/clothing/under/kilt
|
||||
@@ -0,0 +1,31 @@
|
||||
#define DEFAULT_SLOT_AMT 2
|
||||
#define HANDS_SLOT_AMT 2
|
||||
#define BACKPACK_SLOT_AMT 4
|
||||
|
||||
/datum/preferences
|
||||
var/gear_points = 10
|
||||
var/list/gear_categories
|
||||
var/list/chosen_gear
|
||||
var/gear_tab
|
||||
|
||||
/datum/preferences/New(client/C)
|
||||
..()
|
||||
LAZYINITLIST(chosen_gear)
|
||||
|
||||
/datum/preferences/proc/is_loadout_slot_available(slot)
|
||||
var/list/L
|
||||
LAZYINITLIST(L)
|
||||
for(var/i in chosen_gear)
|
||||
var/datum/gear/G = i
|
||||
var/occupied_slots = L[slot_to_string(initial(G.category))] ? L[slot_to_string(initial(G.category))] + 1 : 1
|
||||
LAZYSET(L, slot_to_string(initial(G.category)), occupied_slots)
|
||||
switch(slot)
|
||||
if(slot_in_backpack)
|
||||
if(L[slot_to_string(slot_in_backpack)] < BACKPACK_SLOT_AMT)
|
||||
return TRUE
|
||||
if(slot_hands)
|
||||
if(L[slot_to_string(slot_hands)] < HANDS_SLOT_AMT)
|
||||
return TRUE
|
||||
else
|
||||
if(L[slot_to_string(slot)] < DEFAULT_SLOT_AMT)
|
||||
return TRUE
|
||||
@@ -0,0 +1,72 @@
|
||||
/datum/preferences/proc/cit_character_pref_load(savefile/S)
|
||||
//Citadel
|
||||
features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"]))
|
||||
if(!features["mcolor2"] || features["mcolor"] == "#000")
|
||||
features["mcolor2"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
|
||||
if(!features["mcolor3"] || features["mcolor"] == "#000")
|
||||
features["mcolor3"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
|
||||
features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0)
|
||||
features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0)
|
||||
|
||||
//gear loadout
|
||||
var/text_to_load
|
||||
S["loadout"] >> text_to_load
|
||||
var/list/saved_loadout_paths = splittext(text_to_load, "|")
|
||||
LAZYCLEARLIST(chosen_gear)
|
||||
gear_points = initial(gear_points)
|
||||
for(var/i in saved_loadout_paths)
|
||||
var/datum/gear/path = text2path(i)
|
||||
if(path)
|
||||
LAZYADD(chosen_gear, path)
|
||||
gear_points -= initial(path.cost)
|
||||
|
||||
/datum/preferences/proc/cit_character_pref_save(savefile/S)
|
||||
//Citadel
|
||||
WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"])
|
||||
WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"])
|
||||
WRITE_FILE(S["feature_mcolor2"], features["mcolor2"])
|
||||
WRITE_FILE(S["feature_mcolor3"], features["mcolor3"])
|
||||
WRITE_FILE(S["feature_mam_body_markings"], features["mam_body_markings"])
|
||||
WRITE_FILE(S["feature_mam_tail"], features["mam_tail"])
|
||||
WRITE_FILE(S["feature_mam_ears"], features["mam_ears"])
|
||||
WRITE_FILE(S["feature_mam_tail_animated"], features["mam_tail_animated"])
|
||||
WRITE_FILE(S["feature_taur"], features["taur"])
|
||||
//Xeno features
|
||||
WRITE_FILE(S["feature_xeno_tail"], features["xenotail"])
|
||||
WRITE_FILE(S["feature_xeno_dors"], features["xenodorsal"])
|
||||
WRITE_FILE(S["feature_xeno_head"], features["xenohead"])
|
||||
//cock features
|
||||
WRITE_FILE(S["feature_has_cock"], features["has_cock"])
|
||||
WRITE_FILE(S["feature_cock_shape"], features["cock_shape"])
|
||||
WRITE_FILE(S["feature_cock_color"], features["cock_color"])
|
||||
WRITE_FILE(S["feature_cock_length"], features["cock_length"])
|
||||
WRITE_FILE(S["feature_cock_girth"], features["cock_girth"])
|
||||
WRITE_FILE(S["feature_has_sheath"], features["sheath_color"])
|
||||
//balls features
|
||||
WRITE_FILE(S["feature_has_balls"], features["has_balls"])
|
||||
WRITE_FILE(S["feature_balls_color"], features["balls_color"])
|
||||
WRITE_FILE(S["feature_balls_size"], features["balls_size"])
|
||||
WRITE_FILE(S["feature_balls_sack_size"], features["balls_sack_size"])
|
||||
WRITE_FILE(S["feature_balls_fluid"], features["balls_fluid"])
|
||||
//breasts features
|
||||
WRITE_FILE(S["feature_has_breasts"], features["has_breasts"])
|
||||
WRITE_FILE(S["feature_breasts_size"], features["breasts_size"])
|
||||
WRITE_FILE(S["feature_breasts_shape"], features["breasts_shape"])
|
||||
WRITE_FILE(S["feature_breasts_color"], features["breasts_color"])
|
||||
WRITE_FILE(S["feature_breasts_fluid"], features["breasts_fluid"])
|
||||
//vagina features
|
||||
WRITE_FILE(S["feature_has_vag"], features["has_vag"])
|
||||
WRITE_FILE(S["feature_vag_shape"], features["vag_shape"])
|
||||
WRITE_FILE(S["feature_vag_color"], features["vag_color"])
|
||||
//womb features
|
||||
WRITE_FILE(S["feature_has_womb"], features["has_womb"])
|
||||
//flavor text
|
||||
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
|
||||
|
||||
//gear loadout
|
||||
if(islist(chosen_gear))
|
||||
if(chosen_gear.len)
|
||||
var/text_to_save = chosen_gear.Join("|")
|
||||
S["loadout"] << text_to_save
|
||||
else
|
||||
S["loadout"] << "" //empty string to reset the value
|
||||
@@ -0,0 +1,8 @@
|
||||
//This file controls whether or not a job complies with dresscodes.
|
||||
//If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack.
|
||||
|
||||
/datum/job
|
||||
var/dresscodecompliant = TRUE
|
||||
|
||||
/datum/job/assistant
|
||||
dresscodecompliant = FALSE
|
||||
@@ -2485,8 +2485,13 @@
|
||||
#include "modular_citadel\cit_turfs.dm"
|
||||
#include "modular_citadel\citadel_ghostrole_spawners.dm"
|
||||
#include "modular_citadel\cydonian_armor.dm"
|
||||
#include "modular_citadel\dresscode_values.dm"
|
||||
#include "modular_citadel\polychromic_clothes.dm"
|
||||
#include "modular_citadel\simplemob_vore_values.dm"
|
||||
#include "modular_citadel\code\init.dm"
|
||||
#include "modular_citadel\code\__HELPERS\lists.dm"
|
||||
#include "modular_citadel\code\__HELPERS\mobs.dm"
|
||||
#include "modular_citadel\code\controllers\subsystem\job.dm"
|
||||
#include "modular_citadel\code\datums\uplink_items_cit.dm"
|
||||
#include "modular_citadel\code\datums\mutations\hulk.dm"
|
||||
#include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm"
|
||||
@@ -2495,6 +2500,19 @@
|
||||
#include "modular_citadel\code\game\objects\items\devices\PDA\PDA.dm"
|
||||
#include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm"
|
||||
#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm"
|
||||
#include "modular_citadel\code\modules\client\preferences.dm"
|
||||
#include "modular_citadel\code\modules\client\preferences_savefile.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\_donator.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\backpack.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\glasses.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\hands.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\head.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\loadout.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\mask.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\neck.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\shoes.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\suit.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\uniform.dm"
|
||||
#include "modular_citadel\code\modules\crafting\recipes.dm"
|
||||
#include "modular_citadel\code\modules\mining\mine_items.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\banana_spider.dm"
|
||||
|
||||
Reference in New Issue
Block a user