From 8edc18eb47f9db0ad12982ec6fe50624aa72aab2 Mon Sep 17 00:00:00 2001 From: CHOMPStation2 <58959929+CHOMPStation2@users.noreply.github.com> Date: Sun, 10 Mar 2024 23:45:48 -0700 Subject: [PATCH] [MIRROR] Emags syndiborgs by default, borg petting pref (#7895) Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- .../preference_setup/preference_setup.dm | 4 ++ .../client/preference_setup/vore/09_misc.dm | 9 ++- code/modules/client/preferences_vr.dm | 1 + .../modules/mob/living/silicon/robot/robot.dm | 67 ++++++++++++------- .../mob/living/silicon/robot/syndicate.dm | 1 + code/modules/news/newspaper.dm | 2 +- 6 files changed, 56 insertions(+), 28 deletions(-) diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index 17ee5ed672..5a8e31c324 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -304,3 +304,7 @@ if(PREF_FBP_SOFTWARE) return 150 return S.max_age // welp + +#undef PREF_FBP_CYBORG +#undef PREF_FBP_POSI +#undef PREF_FBP_SOFTWARE diff --git a/code/modules/client/preference_setup/vore/09_misc.dm b/code/modules/client/preference_setup/vore/09_misc.dm index 0a4ac178f2..c50406190a 100644 --- a/code/modules/client/preference_setup/vore/09_misc.dm +++ b/code/modules/client/preference_setup/vore/09_misc.dm @@ -12,6 +12,7 @@ S["sensorpref"] >> pref.sensorpref S["capture_crystal"] >> pref.capture_crystal S["auto_backup_implant"] >> pref.auto_backup_implant + S["borg_petting"] >> pref.borg_petting /datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S) S["show_in_directory"] << pref.show_in_directory @@ -23,6 +24,7 @@ S["sensorpref"] << pref.sensorpref S["capture_crystal"] << pref.capture_crystal S["auto_backup_implant"] << pref.auto_backup_implant + S["borg_petting"] << pref.borg_petting /datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character) if(pref.sensorpref > 5 || pref.sensorpref < 1) @@ -38,7 +40,8 @@ pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag)) pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) pref.capture_crystal = sanitize_integer(pref.capture_crystal, 0, 1, initial(pref.capture_crystal)) - pref.auto_backup_implant = sanitize_integer(pref.auto_backup_implant, 0, 1, initial(pref.auto_backup_implant)) + pref.auto_backup_implant = sanitize_integer(pref.auto_backup_implant, 0, 1, initial(pref.auto_backup_implant)) + pref.borg_petting = sanitize_integer(pref.borg_petting, 0, 1, initial(pref.borg_petting)) /datum/category_item/player_setup_item/vore/misc/content(var/mob/user) . += "
" @@ -51,6 +54,7 @@ . += "Suit Sensors Preference: [sensorpreflist[pref.sensorpref]]
" . += "Capture Crystal Preference: [pref.capture_crystal ? "Yes" : "No"]
" . += "Spawn With Backup Implant: [pref.auto_backup_implant ? "Yes" : "No"]
" + . += "Allow petting as robot: [pref.borg_petting ? "Yes" : "No"]
" /datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user) if(href_list["toggle_show_in_directory"]) @@ -99,4 +103,7 @@ else if(href_list["toggle_implant"]) pref.auto_backup_implant = pref.auto_backup_implant ? 0 : 1; return TOPIC_REFRESH + else if(href_list["toggle_borg_petting"]) + pref.borg_petting = pref.borg_petting ? 0 : 1; + return TOPIC_REFRESH return ..(); diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index ee7d61a54b..d9de2fc449 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -10,6 +10,7 @@ var/sensorpref = 5 //Set character's suit sensor level var/capture_crystal = 1 //Whether or not someone is able to be caught with capture crystals var/auto_backup_implant = FALSE //Whether someone starts with a backup implant or not. + var/borg_petting = TRUE //Whether someone can be petted as a borg or not. var/job_talon_high = 0 var/job_talon_med = 0 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index cb27fcda49..d738788001 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -98,7 +98,7 @@ var/lockcharge //Used when looking to see if a borg is locked down. var/lockdown = 0 //Controls whether or not the borg is actually locked down. var/speed = 0 //Cause sec borgs gotta go fast //No they dont! - var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them. + var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them. var/tracking_entities = 0 //The number of known entities currently accessing the internal camera var/braintype = "Cyborg" @@ -167,15 +167,15 @@ add_robot_verbs() - hud_list[HEALTH_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_HEALTH) - hud_list[STATUS_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_STATUS) - hud_list[LIFE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_LIFE) - hud_list[ID_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_ID) - hud_list[WANTED_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_WANTED) - hud_list[IMPLOYAL_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPLOYAL) - hud_list[IMPCHEM_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPCHEM) - hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK) - hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL) + hud_list[HEALTH_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_HEALTH) + hud_list[STATUS_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_STATUS) + hud_list[LIFE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudhealth100", plane = PLANE_CH_LIFE) + hud_list[ID_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_ID) + hud_list[WANTED_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_WANTED) + hud_list[IMPLOYAL_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPLOYAL) + hud_list[IMPCHEM_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPCHEM) + hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK) + hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL) /mob/living/silicon/robot/LateInitialize() . = ..() @@ -531,14 +531,14 @@ // function to toggle VTEC once installed /mob/living/silicon/robot/proc/toggle_vtec() - set name = "Toggle VTEC" - set category = "Abilities" - if(speed == -1) - to_chat(src, "VTEC module disabled.") - speed = 0 - else - to_chat(src, "VTEC module enabled.") - speed = -1 + set name = "Toggle VTEC" + set category = "Abilities" + if(speed == -1) + to_chat(src, "VTEC module disabled.") + speed = 0 + else + to_chat(src, "VTEC module enabled.") + speed = -1 // update the status screen display /mob/living/silicon/robot/Stat() @@ -856,11 +856,15 @@ if(istype(user,/mob/living/carbon/human) && !opened) var/mob/living/carbon/human/H = user - //Adding borg petting. Help intent pets, Disarm intent taps and Harm is punching(no damage) + //Adding borg petting. Help intent pets if preferences allow, Disarm intent taps and Harm is punching(no damage) switch(H.a_intent) if(I_HELP) - visible_message("[H] pets [src].") - return + if(client && !client.prefs.borg_petting) + visible_message("[H] reaches out for [src], but quickly refrains from petting.") + return + else + visible_message("[H] pets [src].") + return if(I_HURT) H.do_attack_animation(src) if(H.species.can_shred(H)) @@ -1183,7 +1187,7 @@ /mob/living/silicon/robot/proc/ResetSecurityCodes() set category = "Robot Commands" set name = "Reset Identity Codes" - set desc = "Scrambles your security and identification codes and resets your current buffers. Unlocks you and but permenantly severs you from your AI and the robotics console and will deactivate your camera system." + set desc = "Scrambles your security and identification codes and resets your current buffers. Unlocks you and permenantly severs you from your AI and the robotics console and will deactivate your camera system." var/mob/living/silicon/robot/R = src @@ -1390,12 +1394,23 @@ return if(opened)//Cover is open - if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice + if(emagged) + if (!has_zeroth_law()) + to_chat(user, "You assigned yourself as [src]'s operator.") + message_admins("[key_name_admin(user)] assigned as operator on cyborg [key_name_admin(src)]. Syndicate Operator change.") + log_game("[key_name(user)] assigned as operator on cyborg [key_name(src)]. Syndicate Operator change.") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") + to_chat(src, "Obey these laws:") + laws.show_laws(src) + to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.") + else + to_chat(user, "[src] already has an operator assigned.") + return//Prevents the X has hit Y with Z message also you cant emag them twice if(wiresexposed) to_chat(user, "You must close the panel first.") return - // The block of code below is from TG. Feel free to replace with a better result if desired. if(shell) // AI shells cannot be emagged, so we try to make it look like a standard reset. Smart players may see through this, however. to_chat(user, "[src] is remotely controlled! Your emag attempt has triggered a system reset instead!") @@ -1409,8 +1424,8 @@ lawupdate = 0 disconnect_from_ai() to_chat(user, "You emag [src]'s interface.") - message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") - log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") + message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") + log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") clear_supplied_laws() clear_inherent_laws() laws = new /datum/ai_laws/syndicate_override diff --git a/code/modules/mob/living/silicon/robot/syndicate.dm b/code/modules/mob/living/silicon/robot/syndicate.dm index 286b2abf75..e776608975 100644 --- a/code/modules/mob/living/silicon/robot/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/syndicate.dm @@ -1,6 +1,7 @@ /mob/living/silicon/robot/syndicate lawupdate = 0 scrambledcodes = 1 + emagged = 1 icon_state = "securityrobot" modtype = "Security" lawchannel = "State" diff --git a/code/modules/news/newspaper.dm b/code/modules/news/newspaper.dm index d58b9446b2..394ce7be26 100644 --- a/code/modules/news/newspaper.dm +++ b/code/modules/news/newspaper.dm @@ -27,7 +27,7 @@ switch(screen) if(0) //Cover dat+="
The Griffon
" - dat+="
[using_map.company_name]-standard newspaper, for use on [using_map.company_name]� Space Facilities

" + dat+="
[using_map.company_name]-standard newspaper, for use on [using_map.company_name] Space Facilities

" if(isemptylist(news_content)) if(important_message) dat+="Contents:
"