Merge pull request #4838 from deathride58/loadoutsystem
[READY FOR TESTMERGE] Ports Hippie's loadout system
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user