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"