diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 93f112d41a..2ea000de15 100755 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -112,6 +112,7 @@ datum/preferences var/list/player_alt_titles = new() // the default name of a job like "Medical Doctor" var/list/flavor_texts = list() + var/list/flavour_texts_robot = list() var/med_record = "" var/sec_record = "" @@ -395,6 +396,7 @@ datum/preferences dat += "\tSet Skills ([GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])
" dat += "Set Flavor Text
" + dat += "Set Robot Flavour Text
" dat += "pAI Configuration
" dat += "
" @@ -650,6 +652,25 @@ datum/preferences user << browse(HTML, "window=flavor_text;size=430x300") return +/datum/preferences/proc/SetFlavourTextRobot(mob/user) + var/HTML = "" + HTML += "
" + HTML += "Set Robot Flavour Text
" + HTML += "
" + HTML += "Default: " + HTML += TextPreview(flavour_texts_robot["Default"]) + HTML += "
" + for(var/module in robot_module_types) + HTML += "[module]: " + HTML += TextPreview(flavour_texts_robot[module]) + HTML += "
" + HTML += "
" + HTML +="\[Done\]" + HTML += "" + user << browse(null, "window=preferences") + user << browse(HTML, "window=flavour_text_robot;size=430x300") + return + /datum/preferences/proc/GetPlayerAltTitle(datum/job/job) return player_alt_titles.Find(job.title) > 0 \ ? player_alt_titles[job.title] \ @@ -916,6 +937,30 @@ datum/preferences SetFlavorText(user) return + else if(href_list["preference"] == "flavour_text_robot") + switch(href_list["task"]) + if("open") + SetFlavourTextRobot(user) + return + if("done") + user << browse(null, "window=flavour_text_robot") + ShowChoices(user) + return + if("Default") + var/msg = input(usr,"Set the default flavour text for your robot. It will be used for any module without individual setting.","Flavour Text",html_decode(flavour_texts_robot["Default"])) as message + if(msg != null) + msg = copytext(msg, 1, MAX_MESSAGE_LEN) + msg = html_encode(msg) + flavour_texts_robot[href_list["task"]] = msg + else + var/msg = input(usr,"Set the flavour text for your robot with [href_list["task"]] module. If you leave this empty, default flavour text will be used for this module.","Flavour Text",html_decode(flavour_texts_robot[href_list["task"]])) as message + if(msg != null) + msg = copytext(msg, 1, MAX_MESSAGE_LEN) + msg = html_encode(msg) + flavour_texts_robot[href_list["task"]] = msg + SetFlavourTextRobot(user) + return + else if(href_list["preference"] == "pAI") paiController.recruitWindow(user, 0) return 1 @@ -1575,8 +1620,8 @@ datum/preferences for(var/name in organ_data) - var/status = organ_data[name] - var/datum/organ/external/O = character.organs_by_name[name] + var/status = organ_data[name] + var/datum/organ/external/O = character.organs_by_name[name] if(O) if(status == "amputated") O.amputated = 1 @@ -1584,7 +1629,7 @@ datum/preferences O.destspawn = 1 else if(status == "cyborg") O.status |= ORGAN_ROBOT - else + else var/datum/organ/internal/I = character.internal_organs_by_name[name] if(I) if(status == "assisted") @@ -1632,4 +1677,4 @@ datum/preferences user << browse(dat, "window=saves;size=300x390") /datum/preferences/proc/close_load_dialog(mob/user) - user << browse(null, "window=saves") + user << browse(null, "window=saves") \ No newline at end of file diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 7ba7c761d0..e86e616b5a 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -154,6 +154,11 @@ S["flavor_texts_legs"] >> flavor_texts["legs"] S["flavor_texts_feet"] >> flavor_texts["feet"] + //Flavour text for robots. + S["flavour_texts_robot_Default"] >> flavour_texts_robot["Default"] + for(var/module in robot_module_types) + S["flavour_texts_robot_[module]"] >> flavour_texts_robot[module] + //Miscellaneous S["med_record"] >> med_record S["sec_record"] >> sec_record @@ -298,6 +303,11 @@ S["flavor_texts_legs"] << flavor_texts["legs"] S["flavor_texts_feet"] << flavor_texts["feet"] + //Flavour text for robots. + S["flavour_texts_robot_Default"] << flavour_texts_robot["Default"] + for(var/module in robot_module_types) + S["flavour_texts_robot_[module]"] << flavour_texts_robot[module] + //Miscellaneous S["med_record"] << med_record S["sec_record"] << sec_record @@ -328,4 +338,4 @@ #undef SAVEFILE_VERSION_MAX -#undef SAVEFILE_VERSION_MIN +#undef SAVEFILE_VERSION_MIN \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ac9710220d..26a03463c7 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -177,7 +177,8 @@ var/list/robot_verbs_default = list( /mob/living/silicon/robot/proc/pick_module() if(module) return - var/list/modules = list("Standard", "Engineering", "Construction", "Surgeon", "Crisis", "Miner", "Janitor", "Service", "Clerical", "Security") + var/list/modules = list() + modules.Add(robot_module_types) if((crisis && security_level == SEC_LEVEL_RED) || crisis_override) //Leaving this in until it's balanced appropriately. src << "\red Crisis mode active. Combat module available." modules+="Combat" @@ -358,6 +359,14 @@ var/list/robot_verbs_default = list( if(icon_state == "robot") icon_state = "[src.ckey]-Standard" + //Flavour text. + if(client) + var/module_flavour = client.prefs.flavour_texts_robot[modtype] + if(module_flavour) + flavor_text = module_flavour + else + flavor_text = client.prefs.flavour_texts_robot["Default"] + /mob/living/silicon/robot/verb/Namepick() set category = "Robot Commands" if(custom_name) @@ -1267,4 +1276,4 @@ var/list/robot_verbs_default = list( if(2) //New Module connected_ai << "

NOTICE - Cyborg module change detected: [name] has loaded the [module.name] module.
" if(3) //New Name - connected_ai << "

NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].
" + connected_ai << "

NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].
" \ No newline at end of file diff --git a/code/setup.dm b/code/setup.dm index 6b61c9142f..f9d19ed125 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -567,6 +567,8 @@ var/list/liftable_structures = list(\ #define BORGTHERM 2 #define BORGXRAY 4 +var/list/robot_module_types = list("Standard", "Engineering", "Construction", "Surgeon", "Crisis", "Miner", "Janitor", "Service", "Clerical", "Security"/*, "Combat"*/) + //some arbitrary defines to be used by self-pruning global lists. (see master_controller) #define PROCESS_KILL 26 //Used to trigger removal from a processing list @@ -860,4 +862,4 @@ var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") //Chemistry -#define CHEM_SYNTH_ENERGY 500 //How much energy does it take to synthesize 1 unit of chemical, in J +#define CHEM_SYNTH_ENERGY 500 //How much energy does it take to synthesize 1 unit of chemical, in J \ No newline at end of file