Preference, changeling and record fixes

This commit is contained in:
Markolie
2017-03-16 23:39:26 +01:00
parent a99b4ece15
commit e2a30cc7fe
6 changed files with 63 additions and 76 deletions
+5 -5
View File
@@ -108,11 +108,11 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
if(identity_theft.target && identity_theft.target.current)
identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this.
var/mob/living/carbon/human/H = identity_theft.target.current
if(check_species_absorb(H.species)) // For species that can't be absorbed - should default to an escape objective
return
else
if(can_absorb_species(H.species)) // For species that can't be absorbed - should default to an escape objective
identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [identity_theft.target_real_name], the [identity_theft.target.assigned_role] while wearing their identification card."
changeling.objectives += identity_theft
changeling.objectives += identity_theft
else
qdel(identity_theft)
if(!(locate(/datum/objective/escape) in changeling.objectives))
if(prob(70))
@@ -316,5 +316,5 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
return 1
/proc/check_species_absorb(datum/species/S)
/proc/can_absorb_species(datum/species/S)
return !(S.flags & NO_DNA)
+2 -2
View File
@@ -339,10 +339,10 @@ var/global/list/all_cults = list()
if("harvest")
if(harvested > harvest_target)
explanation = "Offer [harvest_target] humans for [ticker.mode.cultdat.entity_name]'s first meal of the day. ([harvested] eaten) <font color='green'><B>Success!</B></font>"
explanation = "Offer [harvest_target] humans for [ticker.mode.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) <font color='green'><B>Success!</B></font>"
feedback_add_details("cult_objective","cult_harvest|SUCCESS")
else
explanation = "Offer [harvest_target] humans for [ticker.mode.cultdat.entity_name]'s first meal of the day. ([harvested] eaten) <font color='red'><B>Fail!</B></font>"
explanation = "Offer [harvest_target] humans for [ticker.mode.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) <font color='red'><B>Fail!</B></font>"
feedback_add_details("cult_objective","cult_harvest|FAIL")
if("hijack")
+3
View File
@@ -427,6 +427,9 @@ var/list/teleport_runes = list()
if(is_sacrifice_target(T.mind))
sacrifice_fulfilled = 1
new /obj/effect/overlay/temp/cult/sac(loc)
if(ticker && ticker.mode && ticker.mode.name == "cult")
var/datum/game_mode/cult/cult_mode = ticker.mode
cult_mode.harvested++
for(var/M in invokers)
if(sacrifice_fulfilled)
to_chat(M, "<span class='cultlarge'>\"Yes! This is the one I desire! You have done well.\"</span>")
+17 -18
View File
@@ -234,7 +234,6 @@
screen = MED_DATA_MAIN
if(authenticated)
var/incapable = (usr.stat || usr.restrained() || (!in_range(src, usr) && !issilicon(usr)))
if(href_list["logout"])
authenticated = null
screen = null
@@ -281,7 +280,7 @@
setTemp("<h3>Are you sure you wish to delete all records?</h3>", buttons)
if(href_list["field"])
if(incapable)
if(..())
return 1
var/a1 = active1
var/a2 = active2
@@ -289,7 +288,7 @@
if("fingerprint")
if(istype(active1, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Med. records", active1.fields["fingerprint"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
active1.fields["fingerprint"] = t1
if("sex")
@@ -301,61 +300,61 @@
if("age")
if(istype(active1, /datum/data/record))
var/t1 = input("Please input age:", "Med. records", active1.fields["age"], null) as num
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
active1.fields["age"] = t1
if("mi_dis")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Med. records", active2.fields["mi_dis"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["mi_dis"] = t1
if("mi_dis_d")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Med. records", active2.fields["mi_dis_d"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["mi_dis_d"] = t1
if("ma_dis")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Med. records", active2.fields["ma_dis"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["ma_dis"] = t1
if("ma_dis_d")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Med. records", active2.fields["ma_dis_d"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["ma_dis_d"] = t1
if("alg")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please state allergies:", "Med. records", active2.fields["alg"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["alg"] = t1
if("alg_d")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please summarize allergies:", "Med. records", active2.fields["alg_d"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["alg_d"] = t1
if("cdi")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please state diseases:", "Med. records", active2.fields["cdi"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["cdi"] = t1
if("cdi_d")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please summarize diseases:", "Med. records", active2.fields["cdi_d"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["cdi_d"] = t1
if("notes")
if(istype(active2, /datum/data/record))
var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Med. records", html_decode(active2.fields["notes"]), null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["notes"] = t1
if("p_stat")
@@ -390,21 +389,21 @@
if("b_dna")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input DNA hash:", "Med. records", active2.fields["b_dna"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["b_dna"] = t1
if("vir_name")
var/datum/data/record/v = locate(href_list["edit_vir"])
if(v)
var/t1 = copytext(trim(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
v.fields["name"] = t1
if("vir_desc")
var/datum/data/record/v = locate(href_list["edit_vir"])
if(v)
var/t1 = copytext(trim(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
v.fields["description"] = t1
@@ -454,7 +453,7 @@
return 1
var/a2 = active2
var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["comments"] += "Made by [authenticated] ([rank]) on [current_date_string] [worldtime2text()]<BR>[t1]"
@@ -465,7 +464,7 @@
if(href_list["search"])
var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text
if(!t1 || incapable)
if(!t1 || ..())
return 1
active1 = null
active2 = null
+21 -34
View File
@@ -120,7 +120,7 @@
else
security["empty"] = 1
return data
/obj/machinery/computer/secure_data/Topic(href, href_list)
if(..())
return 1
@@ -139,10 +139,12 @@
if("del_all2")
for(var/datum/data/record/R in data_core.security)
qdel(R)
update_all_mob_security_hud()
setTemp("<h3>All records deleted.</h3>")
if("del_r2")
if(active2)
qdel(active2)
update_all_mob_security_hud()
if("del_rg2")
if(active1)
for(var/datum/data/record/R in data_core.medical)
@@ -153,6 +155,7 @@
if(active2)
qdel(active2)
active2 = null
update_all_mob_security_hud()
screen = SEC_DATA_R_LIST
if("criminal")
if(active2)
@@ -168,8 +171,7 @@
if("released")
active2.fields["criminal"] = "Released"
for(var/mob/living/carbon/human/H in mob_list)
H.sec_hud_set_security_status()
update_all_mob_security_hud()
if("rank")
if(active1)
active1.fields["rank"] = temp_href[2]
@@ -208,7 +210,6 @@
screen = SEC_DATA_R_LIST
if(authenticated)
var/incapable = (usr.stat || usr.restrained() || (!in_range(src, usr) && !issilicon(usr)))
if(href_list["logout"])
authenticated = null
screen = null
@@ -247,24 +248,6 @@
active2 = M
screen = SEC_DATA_RECORD
/*else if("s_fingerprint")
var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text
if(!t1 || usr.stat || !authenticated || usr.restrained() || (!in_range(src, usr) && (!issilicon(usr)))
return
active1 = null
active2 = null
t1 = lowertext(t1)
for(var/datum/data/record/R in data_core.general)
if(lowertext(R.fields["fingerprint"]) == t1)
active1 = R
if(!active1)
setTemp("Could not locate record [t1].")
else
for(var/datum/data/record/E in data_core.security)
if((E.fields["name"] == active1.fields["name"] && E.fields["id"] == active1.fields["id"]))
active2 = E
screen = SEC_DATA_RECORD */
else if(href_list["del_all"])
var/list/buttons = list()
buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "href" = "del_all2=1", "status" = null)
@@ -363,7 +346,7 @@
if(istype(active2, /datum/data/record))
var/a2 = active2
var/t1 = copytext(trim(sanitize(input("Add Comment:", "Secure. records", null, null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["comments"] += "Made by [authenticated] ([rank]) on [current_date_string] [worldtime2text()]<BR>[t1]"
@@ -373,7 +356,7 @@
active2.fields["comments"] -= active2.fields["comments"][index]
if(href_list["field"])
if(incapable)
if(..())
return 1
var/a1 = active1
var/a2 = active2
@@ -381,7 +364,7 @@
if("name")
if(istype(active1, /datum/data/record))
var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text)
if(!t1 || !length(trim(t1)) || incapable || active1 != a1)
if(!t1 || !length(trim(t1)) || ..() || active1 != a1)
return 1
active1.fields["name"] = t1
if(istype(active2, /datum/data/record))
@@ -389,7 +372,7 @@
if("id")
if(istype(active1, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
active1.fields["id"] = t1
if(istype(active2, /datum/data/record))
@@ -397,7 +380,7 @@
if("fingerprint")
if(istype(active1, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
active1.fields["fingerprint"] = t1
if("sex")
@@ -409,37 +392,37 @@
if("age")
if(istype(active1, /datum/data/record))
var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
active1.fields["age"] = t1
if("mi_crim")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input minor crimes list:", "Secure. records", active2.fields["mi_crim"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["mi_crim"] = t1
if("mi_crim_d")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please summarize minor crimes:", "Secure. records", active2.fields["mi_crim_d"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["mi_crim_d"] = t1
if("ma_crim")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please input major crimes list:", "Secure. records", active2.fields["ma_crim"], null) as text)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["ma_crim"] = t1
if("ma_crim_d")
if(istype(active2, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please summarize major crimes:", "Secure. records", active2.fields["ma_crim_d"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["ma_crim_d"] = t1
if("notes")
if(istype(active2, /datum/data/record))
var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active2 != a2)
if(!t1 || ..() || active2 != a2)
return 1
active2.fields["notes"] = t1
if("criminal")
@@ -464,13 +447,17 @@
if("species")
if(istype(active1, /datum/data/record))
var/t1 = copytext(trim(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message)), 1, MAX_MESSAGE_LEN)
if(!t1 || incapable || active1 != a1)
if(!t1 || ..() || active1 != a1)
return 1
active1.fields["species"] = t1
return 1
/obj/machinery/computer/secure_data/proc/setTemp(text, list/buttons = list())
temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0)
/obj/machinery/computer/secure_data/proc/update_all_mob_security_hud()
for(var/mob/living/carbon/human/H in mob_list)
H.sec_hud_set_security_status()
/obj/machinery/computer/secure_data/proc/create_record_photo(datum/data/record/R)
// basically copy-pasted from the camera code but different enough that it has to be redone
+15 -17
View File
@@ -268,9 +268,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "</td><td width='405px' height='25px' valign='left'>"
dat += "<center>"
dat += "Slot <b>[slot_name]</b> - "
dat += "<a href=\"byond://?src=[user.UID()];preference=open_load_dialog\">Load slot</a> - "
dat += "<a href=\"byond://?src=[user.UID()];preference=save\">Save slot</a> - "
dat += "<a href=\"byond://?src=[user.UID()];preference=reload\">Reload slot</a>"
dat += "<a href=\"byond://?_src_=prefs;preference=open_load_dialog\">Load slot</a> - "
dat += "<a href=\"byond://?_src_=prefs;preference=save\">Save slot</a> - "
dat += "<a href=\"byond://?_src_=prefs;preference=reload\">Reload slot</a>"
dat += "</center>"
dat += "</td></tr></table>"
dat += "<table width='100%'><tr><td width='405px' height='200px' valign='top'>"
@@ -294,7 +294,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<b>Skin Tone:</b> <a href='?_src_=prefs;preference=s_tone;task=input'>[species == "Vox" ? "[s_tone]" : "[-s_tone + 35]/220"]</a><br>"
dat += "<b>Disabilities:</b> <a href='?_src_=prefs;preference=disabilities'>\[Set\]</a><br>"
dat += "<b>Nanotrasen Relation:</b> <a href ='?_src_=prefs;preference=nt_relation;task=input'>[nanotrasen_relation]</a><br>"
dat += "<a href='byond://?src=[user.UID()];preference=flavor_text;task=input'>Set Flavor Text</a><br>"
dat += "<a href='byond://?_src_=_prefs;preference=flavor_text;task=input'>Set Flavor Text</a><br>"
if(lentext(flavor_text) <= 40)
if(!lentext(flavor_text)) dat += "\[...\]<br>"
else dat += "[flavor_text]<br>"
@@ -358,7 +358,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if(jobban_isbanned(user, "Records"))
dat += "<b>You are banned from using character records.</b><br>"
else
dat += "<a href=\"byond://?src=[user.UID()];preference=records;record=1\">Character Records</a><br>"
dat += "<a href=\"byond://?_src_=prefs;preference=records;record=1\">Character Records</a><br>"
dat += "<h2>Limbs</h2>"
if(species in list("Unathi")) //Species with alt heads.
@@ -658,7 +658,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
else
HTML += " <font color=red>\[No]</font></a>"
if(job.alt_titles)
HTML += "<br><b><a class='white' href=\"byond://?src=[user.UID()];preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "<br><b><a class='white' href=\"byond://?_src_=prefs;preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "</td></tr>"
continue
/*
@@ -674,7 +674,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
HTML += "<font color=[prefLevelColor]>[prefLevelLabel]</font></a>"
if(job.alt_titles)
HTML += "<br><b><a class='white' href=\"byond://?src=[user.UID()];preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "<br><b><a class='white' href=\"?_src_=prefs;preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "</td></tr>"
@@ -841,36 +841,34 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/SetRecords(mob/user)
var/HTML = "<body>"
HTML += "<tt><center>"
HTML += "<b>Set Character Records</b><br>"
HTML += "<a href=\"byond://?src=[user.UID()];preference=records;task=med_record\">Medical Records</a><br>"
HTML += "<a href=\"byond://?_src_=prefs;preference=records;task=med_record\">Medical Records</a><br>"
if(lentext(med_record) <= 40)
HTML += "[med_record]"
else
HTML += "[copytext(med_record, 1, 37)]..."
HTML += "<br><br><a href=\"byond://?src=[user.UID()];preference=records;task=gen_record\">Employment Records</a><br>"
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=gen_record\">Employment Records</a><br>"
if(lentext(gen_record) <= 40)
HTML += "[gen_record]"
else
HTML += "[copytext(gen_record, 1, 37)]..."
HTML += "<br><br><a href=\"byond://?src=[user.UID()];preference=records;task=sec_record\">Security Records</a><br>"
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=sec_record\">Security Records</a><br>"
if(lentext(sec_record) <= 40)
HTML += "[sec_record]<br>"
else
HTML += "[copytext(sec_record, 1, 37)]...<br>"
HTML += "<br>"
HTML += "<a href=\"byond://?src=[user.UID()];preference=records;records=-1\">\[Done\]</a>"
HTML += "<a href=\"byond://?_src_=prefs;preference=records;records=-1\">\[Done\]</a>"
HTML += "</center></tt>"
user << browse(null, "window=preferences")
user << browse(HTML, "window=records;size=350x300")
return
var/datum/browser/popup = new(user, "records", "<div align='center'>Character Records</div>", 300, 390)
popup.set_content(HTML)
popup.open(0)
/datum/preferences/proc/GetPlayerAltTitle(datum/job/job)
return player_alt_titles.Find(job.title) > 0 \
@@ -2236,7 +2234,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<a href='?_src_=prefs;preference=changeslot;num=[i];'>[name]</a><br>"
dat += "<hr>"
dat += "<a href='byond://?src=[user.UID()];preference=close_load_dialog'>Close</a><br>"
dat += "<a href='byond://?_src_=prefs;preference=close_load_dialog'>Close</a><br>"
dat += "</center></tt>"
// user << browse(dat, "window=saves;size=300x390")
var/datum/browser/popup = new(user, "saves", "<div align='center'>Character Saves</div>", 300, 390)