diff --git a/baystation12.dme b/baystation12.dme index 6b0199caf76..7d6bfb56b26 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1257,7 +1257,6 @@ #include "code\WorkInProgress\Cael_Aislinn\Rust\gyrotron_controller.dm" #include "code\WorkInProgress\Cael_Aislinn\Rust\radiation.dm" #include "code\WorkInProgress\Cael_Aislinn\Rust\virtual_particle_catcher.dm" -#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajaran_placeholder.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\SkyMarshal\Ultralight.dm" #include "code\WorkInProgress\Tastyfish\livestock.dm" diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index aefa4bf0b49..6be4b474d9e 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -8,8 +8,6 @@ /mob/living/silicon/ai/say_understands(var/other) if (istype(other, /mob/living/carbon/human)) return 1 - if (istype(other, /mob/living/carbon/human/tajaran)) - return 1 if (istype(other, /mob/living/silicon/robot)) return 1 if (istype(other, /mob/living/silicon/decoy)) diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm index 0bcf13e5933..acabb07d59d 100644 --- a/code/modules/mob/living/silicon/decoy/decoy.dm +++ b/code/modules/mob/living/silicon/decoy/decoy.dm @@ -14,8 +14,6 @@ /mob/living/silicon/decoy/say_understands(var/other) if (istype(other, /mob/living/carbon/human)) return 1 - if (istype(other, /mob/living/carbon/human/tajaran)) - return 1 if (istype(other, /mob/living/silicon/robot)) return 1 if (istype(other, /mob/living/silicon/ai)) diff --git a/code/modules/mob/living/silicon/pai/say.dm b/code/modules/mob/living/silicon/pai/say.dm index 61cf214952a..46ee324792d 100644 --- a/code/modules/mob/living/silicon/pai/say.dm +++ b/code/modules/mob/living/silicon/pai/say.dm @@ -11,8 +11,6 @@ return 1 if (istype(other, /mob/living/carbon/brain)) return 1 - if (istype(other, /mob/living/carbon/human/tajaran)) - return 1 return ..() /mob/living/silicon/pai/say_quote(var/text) diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 447f38b46b8..f67464ee837 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -107,6 +107,7 @@ datum/preferences var/default_slot = 1//Holder so it doesn't default to slot 1, rather the last one used var/slot_name = "" + var/used_skillpoints = 0 var/skill_specialization = null var/list/skills = list() // skills can range from 0 to 3 @@ -118,9 +119,9 @@ datum/preferences var/list/job_alt_titles = new() // the default name of a job like "Medical Doctor" var/flavor_text = "" - var/med_record = "" var/sec_record = "" + var/disabilities = 0 // OOC Metadata: var/metadata = "" @@ -283,7 +284,7 @@ datum/preferences dat += "Skill Choices
" dat += "\t[GetSkillClass(used_skillpoints)] ([used_skillpoints])
" - dat += "\tSet Skills

" + dat += "\tSet Skills

" //column 2 dat += "" //height='300px' @@ -346,6 +347,66 @@ datum/preferences user << browse(dat, "window=preferences;size=570x650") + proc/SetDisabilities(mob/user) + var/HTML = "" + HTML += "
" + HTML += "Choose disabilities
" + + HTML += "Need Glasses? [disabilities & (1<<0) ? "Yes" : "No"]
" + HTML += "Seizures? [disabilities & (1<<1) ? "Yes" : "No"]
" + HTML += "Coughing? [disabilities & (1<<2) ? "Yes" : "No"]
" + HTML += "Tourettes/Twitching? [disabilities & (1<<3) ? "Yes" : "No"]
" + HTML += "Nervousness? [disabilities & (1<<4) ? "Yes" : "No"]
" + HTML += "Deafness? [disabilities & (1<<5) ? "Yes" : "No"]
" + + HTML += "
" + HTML += "\[Done\]" + HTML += "
" + + user << browse(null, "window=preferences") + user << browse(HTML, "window=disabil;size=350x300") + return + + proc/SetRecords(mob/user) + var/HTML = "" + HTML += "
" + HTML += "Set Character Records
" + + HTML += "Medical Records
" + + if(lentext(med_record) <= 40) + HTML += "[med_record]" + else + HTML += "[copytext(med_record, 1, 37)]..." + + HTML += "

Security Records
" + + if(lentext(sec_record) <= 40) + HTML += "[sec_record]
" + else + HTML += "[copytext(sec_record, 1, 37)]...
" + + HTML += "
" + HTML += "\[Done\]" + HTML += "
" + + user << browse(null, "window=preferences") + user << browse(HTML, "window=records;size=350x300") + return + + proc/GetAltTitle(datum/job/job) + return job_alt_titles.Find(job.title) > 0 \ + ? job_alt_titles[job.title] \ + : job.title + + proc/SetAltTitle(datum/job/job, new_title) + // remove existing entry + if(job_alt_titles.Find(job.title)) + job_alt_titles -= job.title + // add one if it's not default + if(job.title != new_title) + job_alt_titles[job.title] = new_title + proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), width = 550, height = 500) //limit - The amount of jobs allowed per column. Defaults to 17 to make it look nice. //splitJobs - Allows you split the table by job. You can make different tables for each department by including their heads. Defaults to CE to make it look nice. @@ -549,6 +610,40 @@ datum/preferences else SetChoices(user) return 1 + else if(href_list["preference"] == "skills") + if(href_list["cancel"]) + user << browse(null, "window=show_skills") + ShowChoices(user) + else if(href_list["skillinfo"]) + var/datum/skill/S = locate(href_list["skillinfo"]) + var/HTML = "[S.name]
[S.desc]" + user << browse(HTML, "window=\ref[user]skillinfo") + else if(href_list["setskill"]) + var/datum/skill/S = locate(href_list["setskill"]) + var/value = text2num(href_list["newvalue"]) + skills[S.ID] = value + CalculateSkillPoints() + SetSkills(user) + else if(href_list["preconfigured"]) + var/selected = input(user, "Select a skillset", "Skillset") as null|anything in SKILL_PRE + if(!selected) return + + ZeroSkills(1) + for(var/V in SKILL_PRE[selected]) + if(V == "field") + skill_specialization = SKILL_PRE[selected]["field"] + continue + skills[V] = SKILL_PRE[selected][V] + CalculateSkillPoints() + + SetSkills(user) + else if(href_list["setspecialization"]) + skill_specialization = href_list["setspecialization"] + CalculateSkillPoints() + SetSkills(user) + else + SetSkills(user) + return 1 switch(href_list["task"]) if("random") @@ -800,39 +895,41 @@ datum/preferences flavor_text = msg - if("skills") - if(href_list["cancel"]) - user << browse(null, "window=show_skills") - ShowChoices(user) - else if(href_list["skillinfo"]) - var/datum/skill/S = locate(href_list["skillinfo"]) - var/HTML = "[S.name]
[S.desc]" - user << browse(HTML, "window=\ref[user]skillinfo") - else if(href_list["setskill"]) - var/datum/skill/S = locate(href_list["setskill"]) - var/value = text2num(href_list["newvalue"]) - skills[S.ID] = value - CalculateSkillPoints() - SetSkills(user) - else if(href_list["preconfigured"]) - var/selected = input(user, "Select a skillset", "Skillset") as null|anything in SKILL_PRE - if(!selected) return - - ZeroSkills(1) - for(var/V in SKILL_PRE[selected]) - if(V == "field") - skill_specialization = SKILL_PRE[selected]["field"] - continue - skills[V] = SKILL_PRE[selected][V] - CalculateSkillPoints() - - SetSkills(user) - else if(href_list["setspecialization"]) - skill_specialization = href_list["setspecialization"] - CalculateSkillPoints() - SetSkills(user) + if("disabilities") + if(text2num(href_list["disabilities"]) >= -1) + if(text2num(href_list["disabilities"]) >= 0) + disabilities ^= (1<= 1) + SetRecords(user) + return + else + user << browse(null, "window=records") + + if("med_record") + var/medmsg = input(usr,"Set your medical notes here.","Medical Records",html_decode(med_record)) as message + + if(medmsg != null) + medmsg = copytext(medmsg, 1, MAX_PAPER_MESSAGE_LEN) + medmsg = html_encode(medmsg) + + med_record = medmsg + SetRecords(user) + + if("sec_record") + var/secmsg = input(usr,"Set your security notes here.","Security Records",html_decode(sec_record)) as message + + if(secmsg != null) + secmsg = copytext(secmsg, 1, MAX_PAPER_MESSAGE_LEN) + secmsg = html_encode(secmsg) + + sec_record = secmsg + SetRecords(user) else switch(href_list["preference"]) @@ -982,13 +1079,12 @@ datum/preferences character.f_style = f_style switch(UI_style) - /*if("Midnight") - character.UI = 'icons/mob/screen1_Midnight.dmi'*/ if("Orange") character.UI = 'icons/mob/screen1_Orange.dmi' if("old") character.UI = 'icons/mob/screen1_old.dmi' else + //default character.UI = 'icons/mob/screen1_Midnight.dmi' if(underwear > 12 || underwear < 1) diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm index 7750c67d680..74fdcf8819f 100644 --- a/code/modules/mob/new_player/savefile.dm +++ b/code/modules/mob/new_player/savefile.dm @@ -105,6 +105,11 @@ datum/preferences/proc/savefile_save(mob/user) F["ghost_sight"] << src.ghost_sight F["ooccolor"] << src.ooccolor F["lastchangelog"] << src.lastchangelog + F["disabilities"] << src.disabilities + + F["used_skillpoints"] << src.used_skillpoints + F["skills"] << src.skills + F["skill_specialization"] << src.skill_specialization F["OOC_Notes"] << src.metadata diff --git a/code/setup.dm b/code/setup.dm index 14279fa4be0..1546d24d9f7 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -479,7 +479,10 @@ var/list/liftable_structures = list(\ //The number of deciseconds which someone needs to be inactive to be classified as AFK: #define AFK_THRESHOLD 3000 - +#define MAX_MESSAGE_LEN 1024 +#define MAX_PAPER_MESSAGE_LEN 3072 +#define MAX_BOOK_MESSAGE_LEN 9216 +#define MAX_NAME_LEN 32 #define SEE_INVISIBLE_MINIMUM 5