From 78e9b82eb6e5453501e43bfb23fba36ac4da0524 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 15 Dec 2019 23:03:44 -0700 Subject: [PATCH] trying too hard --- code/modules/mob/living/carbon/emote.dm | 1 + .../mob/living/silicon/custom_holoform.dm | 20 +++-- code/modules/mob/living/silicon/pai/pai.dm | 89 +++++++++++++------ .../mob/living/silicon/pai/pai_shell.dm | 16 ++++ .../mob/living/silicon/pai/update_icon.dm | 6 +- .../code/modules/mob/cit_emotes.dm | 24 +++-- tgstation.dme | 2 +- 7 files changed, 106 insertions(+), 52 deletions(-) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 345279df29..559c2ebcdd 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -22,6 +22,7 @@ muzzle_ignore = TRUE restraint_check = TRUE emote_type = EMOTE_AUDIBLE + mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/carbon/clap/run_emote(mob/living/user, params) . = ..() diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index e4e7b5317e..8ce6e9a29a 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -3,8 +3,11 @@ set desc = "Clear your current custom holoform" set category = "OOC" - prefs?.custom_holoform_icon = null - prefs?.cached_holoform_icons = null + 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() @@ -12,11 +15,14 @@ set desc = "Set your custom holoform using your current preferences slot and a specified set of gear." set category = "OOC" - if(prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) + 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!") - var/icon/new_holoform = user_interface_custom_holoform(src) + var/icon/new_holoform = user_interface_custom_holoform(client) if(new_holoform) - prefs.custom_holoform_icon = new_holoform - prefs.cached_holoform_icons = null - prefs.last_custom_holoform = world.time + 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.") diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index ff41b7b383..a2fcc8e97e 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -59,6 +59,8 @@ var/obj/item/card/id/access_card = null var/chassis = "repairbot" var/dynamic_chassis + var/dynamic_chassis_sit = FALSE //whether we're sitting instead of resting spritewise + var/dynamic_chassis_bellyup = FALSE //whether we're lying down bellyup var/list/possible_chassis //initialized in initialize. var/list/dynamic_chassis_icons //ditto. var/list/chassis_pixel_offsets_x //stupid dogborgs @@ -305,16 +307,15 @@ /mob/living/silicon/pai/proc/initialize_dynamic_chassis_icons() . = list() var/icon/curr //for inserts - var/icon/temp //for extracts //This is a horrible system and I wish I was not as lazy and did something smarter, like just generating a new icon in memory which is probably more efficient. //Basic /tg/ cyborgs .["Cyborg - Engineering (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "engineer"), HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (loaderborg)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "loaderborg", HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (handyeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "handyeng", HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (sleekeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "sleekeng", HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Engineering (marinaeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "marinaeng", HOLOFORM_FILTER_PAI, FALSE) + .["Cyborg - Engineering (loaderborg)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "loaderborg"), HOLOFORM_FILTER_PAI, FALSE) + .["Cyborg - Engineering (handyeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "handyeng"), HOLOFORM_FILTER_PAI, FALSE) + .["Cyborg - Engineering (sleekeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "sleekeng"), HOLOFORM_FILTER_PAI, FALSE) + .["Cyborg - Engineering (marinaeng)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "marinaeng"), HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Medical (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "medical"), HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Medical (marinamed)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "marinamed"), HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Medical (eyebotmed)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/robots.dmi', "eyebotmed"), HOLOFORM_FILTER_PAI, FALSE) @@ -324,67 +325,97 @@ .["Cyborg - Clown (default)"] = process_holoform_icon_filter(icon('icons/mob/robots.dmi', "clown"), HOLOFORM_FILTER_PAI, FALSE) //Citadel dogborgs + //Engi curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeeng-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Engineering (dog - valeeng)"] = curr curr = icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "pupdozer-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Engineering (dog - pupdozer)"] = curr + //Med curr = icon('modular_citadel/icons/mob/widerobot.dmi', "medihound") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihound-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Medical (dog - medihound)"] = curr curr = icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "medihounddark-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Medical (dog - medihounddark)"] = curr curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valemed") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valemed-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Medical (dog - valemed)"] = curr + //Sec curr = icon('modular_citadel/icons/mob/widerobot.dmi', "k9") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "k9-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Security (dog - k9)"] = curr curr = icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "k9dark-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Security (dog - k9dark)"] = curr curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valesec") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesec-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Security (dog - valesec)"] = curr + //Service curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeserv-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Service (dog - valeserv)"] = curr curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valeservdark-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) .["Cyborg - Service (dog - valeservdark)"] = curr + //Sci curr = icon('modular_citadel/icons/mob/widerobot.dmi', "valesci") - temp = icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-rest") - curr.Insert(temp, "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-rest"), "rest") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-sit"), "sit") + curr.Insert(icon('modular_citadel/icons/mob/widerobot.dmi', "valesci-bellyup"), "bellyup") process_holoform_icon_filter(curr, HOLOFORM_FILTER_PAI, FALSE) - .["Cyborg - Security (dog - valesci)"] = curr - + .["Cyborg - Science (dog - valesci)"] = curr + //Misc .["Cyborg - Misc (dog - blade)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/widerobot.dmi', "blade"), HOLOFORM_FILTER_PAI, FALSE) /mob/living/silicon/pai/proc/default_chassis_pixel_offsets_x() . = list() + //Engi .["Cyborg - Engineering (dog - valeeng)"] = -16 + .["Cyborg - Engineering (dog - pupdozer)"] = -16 + //Med .["Cyborg - Medical (dog - medihound)"] = -16 + .["Cyborg - Medical (dog - medihounddark)"] = -16 + .["Cyborg - Medical (dog - valemed)"] = -16 + //Sec .["Cyborg - Security (dog - k9)"] = -16 .["Cyborg - Security (dog - valesec)"] = -16 + .["Cyborg - Security (dog - k9dark)"] = -16 + //Service + .["Cyborg - Service (dog - valeserv)"] = -16 + .["Cyborg - Service (dog - valeservdark)"] = -16 + //Sci + .["Cyborg - Security (dog - valesci)"] = -16 + //Misc + .["Cyborg - Misc (dog - blade)"] = -16 diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 1cc9f959cb..e79295fca4 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -128,3 +128,19 @@ to_chat(user, "[src]'s current form isn't able to be carried!") return FALSE return ..() + +/mob/living/silicon/pai/verb/toggle_chassis_sit() + set name = "Toggle Chassis Sit" + set category = "IC" + set desc = "Whether or not to try to use a sitting icon versus a resting icon. Takes priority over belly-up resting." + dynamic_chassis_sit = !dynamic_chassis_sit + to_chat(usr, "You are now [dynamic_chassis_sit? "sitting" : "lying down"].") + update_icon() + +/mob/living/silicon/pai/verb/toggle_chassis_bellyup() + set name = "Toggle Chassis Belly Up" + set category = "IC" + set desc = "Whether or not to try to use a belly up icon while resting. Overridden by sitting." + dynamic_chassis_bellyup = !dynamic_chassis_bellyup + to_chat(usr, "You are now lying on your [dynamic_chassis_bellyup? "back" : "front"].") + update_icon() diff --git a/code/modules/mob/living/silicon/pai/update_icon.dm b/code/modules/mob/living/silicon/pai/update_icon.dm index 54eb275a76..67c75b8fa9 100644 --- a/code/modules/mob/living/silicon/pai/update_icon.dm +++ b/code/modules/mob/living/silicon/pai/update_icon.dm @@ -6,8 +6,10 @@ if(chassis == "dynamic") //handle dynamic generated icons icon = dynamic_chassis_icons[dynamic_chassis] var/list/states = icon_states(icon) - var/has_resting_state = ("rest" in states) - icon_state = (resting && has_resting_state)? "rest" : "" + if(resting) //The next line is some bullshit but I can make it worse if you want and make it a single line instead of four.. :) + icon_state = (dynamic_chassis_sit && ("sit" in states) && "sit") || (dynamic_chassis_bellyup && ("bellyup" in states) && "bellyup") || (("rest") in states && "rest") || "" + else + icon_state = "" rotate_on_lying = FALSE else if(chassis == "custom") icon = custom_holoform_icon diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 7e7a77538a..ef9f022e80 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -77,8 +77,7 @@ restraint_check = TRUE emote_type = EMOTE_AUDIBLE sound = 'sound/effects/snap01.ogg' - mob_type_allowed_typecache = list(/mob/living/carbon/) - + mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) /datum/emote/living/snap key = "snap" @@ -87,7 +86,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/snap/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -101,7 +100,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/snap2/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -115,7 +114,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/snap3/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -129,7 +128,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/awoo/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -143,7 +142,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/nya/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -157,7 +156,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/weh/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -171,7 +170,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/peep/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -190,10 +189,9 @@ key_third_person = "lets out a tiny squeak" message = "lets out a tiny squeak!" emote_type = EMOTE_AUDIBLE - mob_type_allowed_typecache = list(/mob/living/carbon) /datum/emote/living/mothsqueak/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -207,7 +205,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/merp/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 @@ -221,7 +219,7 @@ emote_type = EMOTE_AUDIBLE /datum/emote/living/bark/run_emote(mob/living/user, params) - if(ishuman(user)) + if(iscarbon(user) || ispAI(user)) if(user.nextsoundemote >= world.time) return user.nextsoundemote = world.time + 7 diff --git a/tgstation.dme b/tgstation.dme index a7b22d7d7a..884c16b36c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1530,7 +1530,6 @@ #include "code\modules\client\preferences_toggles.dm" #include "code\modules\client\preferences_vr.dm" #include "code\modules\client\verbs\aooc.dm" -#include "code\modules\client\verbs\custom_holoform.dm" #include "code\modules\client\verbs\etips.dm" #include "code\modules\client\verbs\looc.dm" #include "code\modules\client\verbs\ooc.dm" @@ -2153,6 +2152,7 @@ #include "code\modules\mob\living\carbon\monkey\monkey_defense.dm" #include "code\modules\mob\living\carbon\monkey\punpun.dm" #include "code\modules\mob\living\carbon\monkey\update_icons.dm" +#include "code\modules\mob\living\silicon\custom_holoform.dm" #include "code\modules\mob\living\silicon\damage_procs.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\examine.dm"