From 99f50addc7f9aeac35b858b9c79dac1131d0f38c Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 11 Dec 2020 20:35:37 +0000 Subject: [PATCH 01/10] wip --- code/__HELPERS/custom_holoforms.dm | 16 ++++++++++++++++ .../mob/living/silicon/custom_holoform.dm | 12 ------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 0e97314f1f..164d113826 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -56,7 +56,23 @@ //Prompts this client for custom holoform parameters. /proc/user_interface_custom_holoform(client/C) + message_admins("poge") var/datum/preferences/target_prefs = C.prefs + if(target_prefs.path) + var/list/characters = list() + var/savefile/S = new /savefile(target_prefs.path) + if(S) + var/name + var/max_save_slots = C.prefs.max_save_slots + for(var/i=1, i<=max_save_slots, i++) + S["real_name"] >> name + characters[i] = name + var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters + if(chosen_name) + target_prefs = new(C) + if(!target_prefs.load_character(characters[chosen_name])) + target_prefs = C.prefs + ASSERT(target_prefs) //In the future, maybe add custom path allowances a la admin create outfit but for now.. return generate_custom_holoform_from_prefs_safe(target_prefs, C.mob) diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 8ce6e9a29a..389144e62b 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -1,15 +1,3 @@ -/mob/living/silicon/verb/clear_custom_holoform() - set name = "Clear Custom Holoform" - set desc = "Clear your current custom holoform" - set category = "OOC" - - if(!client.prefs) - to_chat(src, "No preferences datum on your client, contact an admin/coder!") - return - client.prefs.custom_holoform_icon = null - client.prefs.cached_holoform_icons = null - to_chat(src, "Holoform removed.") - /mob/living/silicon/verb/set_custom_holoform() set name = "Set Custom Holoform" set desc = "Set your custom holoform using your current preferences slot and a specified set of gear." From 3a017d1173be42131fb34bce96067c0f72a35889 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sat, 12 Dec 2020 01:49:50 +0000 Subject: [PATCH 02/10] it works --- code/__HELPERS/custom_holoforms.dm | 19 +++++++------------ .../mob/living/silicon/custom_holoform.dm | 1 + 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 164d113826..70887b3d01 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -46,17 +46,11 @@ I = getPAIHologramIcon(I) return I -//Errors go to user. -/proc/generate_custom_holoform_from_prefs_safe(datum/preferences/prefs, mob/user) - if(user) - if(user.client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(user, "You are attempting to set your custom holoform too fast!") - return - return generate_custom_holoform_from_prefs(prefs, null, null, TRUE, TRUE) - //Prompts this client for custom holoform parameters. /proc/user_interface_custom_holoform(client/C) - message_admins("poge") + if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) + to_chat(C.mob, "You are attempting to set your custom holoform too fast!") + return var/datum/preferences/target_prefs = C.prefs if(target_prefs.path) var/list/characters = list() @@ -65,14 +59,15 @@ var/name var/max_save_slots = C.prefs.max_save_slots for(var/i=1, i<=max_save_slots, i++) + S.cd = "/character[i]" S["real_name"] >> name - characters[i] = name + characters += name var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters if(chosen_name) target_prefs = new(C) - if(!target_prefs.load_character(characters[chosen_name])) + if(!target_prefs.load_character(characters[chosen_name], TRUE)) target_prefs = C.prefs ASSERT(target_prefs) //In the future, maybe add custom path allowances a la admin create outfit but for now.. - return generate_custom_holoform_from_prefs_safe(target_prefs, C.mob) + return generate_custom_holoform_from_prefs(target_prefs, null, null, TRUE, TRUE) diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 389144e62b..6dbde1eb81 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -8,6 +8,7 @@ return if(client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) to_chat(src, "You are attempting to change custom holoforms too fast!") + return var/icon/new_holoform = user_interface_custom_holoform(client) if(new_holoform) client.prefs.custom_holoform_icon = new_holoform From 7dfb097bcc4a06e35811105f82a4ff72742df564 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sat, 12 Dec 2020 23:48:21 +0000 Subject: [PATCH 03/10] close enough --- code/__HELPERS/custom_holoforms.dm | 5 ++++- config/game_options.txt | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 70887b3d01..691d316987 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -27,6 +27,7 @@ COMPILE_OVERLAYS(mannequin) CHECK_TICK var/icon/capture = getFlatIcon(mannequin) + capture.Shift(WEST,16,FALSE) CHECK_TICK combined.Insert(capture, dir = d) CHECK_TICK @@ -61,10 +62,12 @@ for(var/i=1, i<=max_save_slots, i++) S.cd = "/character[i]" S["real_name"] >> name - characters += name + if(name) + characters[name] = i var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters if(chosen_name) target_prefs = new(C) + message_admins("reverse index is [characters[chosen_name]]") if(!target_prefs.load_character(characters[chosen_name], TRUE)) target_prefs = C.prefs diff --git a/config/game_options.txt b/config/game_options.txt index bc5fdf940e..a9982e63f0 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -22,6 +22,8 @@ OOC_DURING_ROUND ## Comment this out if you want to disable emojis EMOJIS +PAI_CUSTOM_HOLOFORMS + ## MOB MOVEMENT ### ## We suggest editing these variables ingame to find a good speed for your server. From 76b291c0b5ecc31635ab62ca51ba4956f5e13bb0 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 01:16:25 +0000 Subject: [PATCH 04/10] action --- code/__HELPERS/custom_holoforms.dm | 2 -- code/modules/mob/living/silicon/ai/ai.dm | 2 ++ .../mob/living/silicon/custom_holoform.dm | 10 +++---- code/modules/mob/living/silicon/pai/pai.dm | 2 ++ .../modules/mob/living/silicon/robot/robot.dm | 28 ++++++++++++++++++ icons/mob/actions/actions_silicon.dmi | Bin 7695 -> 8449 bytes 6 files changed, 36 insertions(+), 8 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 691d316987..1cba5b9772 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -27,7 +27,6 @@ COMPILE_OVERLAYS(mannequin) CHECK_TICK var/icon/capture = getFlatIcon(mannequin) - capture.Shift(WEST,16,FALSE) CHECK_TICK combined.Insert(capture, dir = d) CHECK_TICK @@ -67,7 +66,6 @@ var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters if(chosen_name) target_prefs = new(C) - message_admins("reverse index is [characters[chosen_name]]") if(!target_prefs.load_character(characters[chosen_name], TRUE)) target_prefs = C.prefs diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 7ce1c1e7cc..d47ffa18e0 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -86,6 +86,7 @@ var/mob/living/silicon/robot/deployed_shell = null //For shell control var/datum/action/innate/deploy_shell/deploy_action = new var/datum/action/innate/deploy_last_shell/redeploy_action = new + var/datum/action/innate/custom_holoform/custom_holoform = new var/chnotify = 0 @@ -152,6 +153,7 @@ aicamera = new/obj/item/camera/siliconcam/ai_camera(src) deploy_action.Grant(src) + custom_holoform.Grant(src) if(isturf(loc)) add_verb(src, list(/mob/living/silicon/ai/proc/ai_network_change, \ diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 6dbde1eb81..0e0af7e308 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -1,17 +1,15 @@ -/mob/living/silicon/verb/set_custom_holoform() - set name = "Set Custom Holoform" - set desc = "Set your custom holoform using your current preferences slot and a specified set of gear." - set category = "OOC" - +/mob/living/silicon/proc/attempt_set_custom_holoform() if(!client.prefs) to_chat(src, "No preferences datum on your client, contact an admin/coder!") return if(client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) to_chat(src, "You are attempting to change custom holoforms too fast!") return + client.prefs.last_custom_holoform = world.time var/icon/new_holoform = user_interface_custom_holoform(client) if(new_holoform) client.prefs.custom_holoform_icon = new_holoform client.prefs.cached_holoform_icons = null - client.prefs.last_custom_holoform = world.time to_chat(src, "Holoform set.") + return TRUE + return FALSE diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 6d2da187a1..786c121ad6 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -131,6 +131,7 @@ var/datum/action/innate/pai/chassis/AC = new /datum/action/innate/pai/chassis var/datum/action/innate/pai/rest/AR = new /datum/action/innate/pai/rest var/datum/action/innate/pai/light/AL = new /datum/action/innate/pai/light + var/datum/action/innate/custom_holoform/custom_holoform = new /datum/action/innate/custom_holoform var/datum/action/language_menu/ALM = new SW.Grant(src) @@ -139,6 +140,7 @@ AR.Grant(src) AL.Grant(src) ALM.Grant(src) + custom_holoform.Grant(src) emitter_next_use = world.time + 10 SECONDS /mob/living/silicon/pai/ComponentInitialize() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 83df3ffba5..7db417b8fa 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1022,6 +1022,32 @@ R.undeploy() return TRUE +/datum/action/innate/custom_holoform + name = "Select Custom Holoform" + desc = "Select one of your existing avatars to use as a holoform." + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "custom_holoform" + required_mobility_flags = NONE + +/datum/action/innate/custom_holoform/Trigger() + if(!..()) + return FALSE + var/mob/living/silicon/S = owner + + //if setting the holoform succeeds, attempt to set it as the current holoform for the pAI or AI + if(S.attempt_set_custom_holoform()) + if(istype(S, /mob/living/silicon/pai)) + var/mob/living/silicon/pai/P = S + P.chassis = "custom" + else if(istype(S, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/A = S + if(A.client?.prefs?.custom_holoform_icon) + A.holo_icon = A.client.prefs.get_filtered_holoform(HOLOFORM_FILTER_AI) + else + A.holo_icon = getHologramIcon(icon('icons/mob/ai.dmi', "female")) + + return TRUE + /mob/living/silicon/robot/proc/undeploy() @@ -1043,6 +1069,8 @@ mainframe.laws.show_laws(mainframe) //Always remind the AI when switching mainframe = null + + /mob/living/silicon/robot/attack_ai(mob/user) if(shell && (!connected_ai || connected_ai == user)) var/mob/living/silicon/ai/AI = user diff --git a/icons/mob/actions/actions_silicon.dmi b/icons/mob/actions/actions_silicon.dmi index cf3d7a2a95607a98715bb7aeb0de9c7fd47d1530..fa7edf111a3bcd520d29e964b27386b855b71f6d 100644 GIT binary patch literal 8449 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 literal 7695 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 XR$WbwN9^~gKfHi4OijK*)-2?IXm7G+ From da936155cdc3e201d1943f1d163c0043251a02fc Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 01:17:30 +0000 Subject: [PATCH 05/10] undo config change --- config/game_options.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/game_options.txt b/config/game_options.txt index a9982e63f0..bc5fdf940e 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -22,8 +22,6 @@ OOC_DURING_ROUND ## Comment this out if you want to disable emojis EMOJIS -PAI_CUSTOM_HOLOFORMS - ## MOB MOVEMENT ### ## We suggest editing these variables ingame to find a good speed for your server. From 85b6248f488506a1b1e96912211b56df9b9faccf Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 02:32:09 +0000 Subject: [PATCH 06/10] remove the second check --- code/__HELPERS/custom_holoforms.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 1cba5b9772..08413b1614 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -48,9 +48,6 @@ //Prompts this client for custom holoform parameters. /proc/user_interface_custom_holoform(client/C) - if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(C.mob, "You are attempting to set your custom holoform too fast!") - return var/datum/preferences/target_prefs = C.prefs if(target_prefs.path) var/list/characters = list() From 866220aefb156368849ef79ee86029dddef067d1 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 02:33:57 +0000 Subject: [PATCH 07/10] better cooldown --- code/__HELPERS/custom_holoforms.dm | 3 +++ code/modules/mob/living/silicon/custom_holoform.dm | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 08413b1614..34b31cc1c7 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -62,6 +62,9 @@ characters[name] = i var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters if(chosen_name) + if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) + to_chat(C.mob, "You are attempting to set your custom holoform too fast!") + return target_prefs = new(C) if(!target_prefs.load_character(characters[chosen_name], TRUE)) target_prefs = C.prefs diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 0e0af7e308..38cb4b7b2a 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -2,9 +2,6 @@ if(!client.prefs) to_chat(src, "No preferences datum on your client, contact an admin/coder!") return - if(client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(src, "You are attempting to change custom holoforms too fast!") - return client.prefs.last_custom_holoform = world.time var/icon/new_holoform = user_interface_custom_holoform(client) if(new_holoform) From 76fe9c7f4c8a96b0ede2c4946e5177ceec4c65c2 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 02:34:52 +0000 Subject: [PATCH 08/10] swap cooldown and cooldown check lines --- code/modules/mob/living/silicon/custom_holoform.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 38cb4b7b2a..e4f7f6780b 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -2,8 +2,8 @@ if(!client.prefs) to_chat(src, "No preferences datum on your client, contact an admin/coder!") return - client.prefs.last_custom_holoform = world.time var/icon/new_holoform = user_interface_custom_holoform(client) + client.prefs.last_custom_holoform = world.time if(new_holoform) client.prefs.custom_holoform_icon = new_holoform client.prefs.cached_holoform_icons = null From 016d3d39fc3eab12363d9f29b7915e473f7227c1 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 22:18:54 +0000 Subject: [PATCH 09/10] emote over holopad --- code/datums/emotes.dm | 2 +- code/modules/mob/camera/camera.dm | 5 ++++- code/modules/mob/living/silicon/ai/ai.dm | 5 +++++ code/modules/mob/living/silicon/ai/freelook/eye.dm | 4 ++++ code/modules/mob/living/silicon/robot/emote.dm | 4 ++-- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index d4b6199187..5683367c55 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -144,7 +144,7 @@ var/sound //Sound to play when emote is called var/vary = FALSE //used for the honk borg emote var/volume = 50 - mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon) + mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/camera/aiEye) /datum/emote/sound/run_emote(mob/user, params) . = ..() diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index a381cc512a..99eb638ee0 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -12,6 +12,7 @@ sight = SEE_SELF move_on_shuttle = FALSE + /mob/camera/experience_pressure_difference() return @@ -23,5 +24,7 @@ /mob/camera/canUseStorage() return FALSE -/mob/camera/emote(act, m_type=1, message = null, intentional = FALSE) +/mob/camera/emote(act, m_type=1, message = null, intentional = FALSE, forced = FALSE) + if(forced) + return ..() return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d47ffa18e0..fbf2d27c31 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -1034,3 +1034,8 @@ qdel(src) else return + +/mob/living/silicon/ai/emote(act, m_type=1, message = null, intentional = FALSE) + if(current && eyeobj) + return eyeobj.emote(act, m_type, message, intentional, forced = TRUE) + return ..() diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 8ec39095fb..17de811cdd 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -204,3 +204,7 @@ alpha = 100 layer = ABOVE_ALL_MOB_LAYER plane = GAME_PLANE + +/mob/camera/aiEye/emote(act, m_type=1, message = null, intentional = FALSE, forced = FALSE) + if(ai?.current) + ..() diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index c532e44ff5..d499c2abae 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,9 +1,9 @@ /datum/emote/silicon - mob_type_allowed_typecache = list(/mob/living/silicon) + mob_type_allowed_typecache = list(/mob/living/silicon, /mob/camera/aiEye) emote_type = EMOTE_AUDIBLE /datum/emote/sound/silicon - mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human) + mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human, /mob/camera/aiEye) emote_type = EMOTE_AUDIBLE var/unrestricted = TRUE From 4cb93931d4620cb3229fb9969367f802d90e4df7 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Mon, 14 Dec 2020 01:00:29 +0000 Subject: [PATCH 10/10] let them beep --- code/modules/mob/living/emote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index ce8bbc5dab..cfebacb977 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -509,7 +509,7 @@ message = "beeps." message_param = "beeps at %t." sound = 'sound/machines/twobeep.ogg' - mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/living/carbon/human) + mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/living/carbon/human, /mob/camera/aiEye) /datum/emote/living/circle key = "circle"