diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index a11b21b4ba..4e6fb8ab49 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -16,7 +16,7 @@ if(length(inhand_equipment)) for(var/path in inhand_equipment) var/obj/item/I = new path - mannequin.equip_to_slot_if_possible(I, SLOT_IN_HANDS, TRUE, TRUE, TRUE, TRUE) + mannequin.equip_to_slot_if_possible(I, SLOT_HANDS, TRUE, TRUE, TRUE, TRUE) var/icon/result = getFlatIcon(mannequin) unset_busy_human_dummy(DUMMY_HUMAN_SLOT_HOLOFORM) return result diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 16f397acce..88a357e07f 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -91,20 +91,13 @@ ..() update_resting_icon(resting) -/mob/living/silicon/pai/proc/update_icon() - if((chassis == "custom") && !custom_holoform_icon) - chassis = pick(possible_chassis - "custom") - if(chassis != "custom") - icon_state = "[chassis]_[resting]" - else - icon = custom_holoform_icon - icon_state = "" - update_transform() - /mob/living/silicon/pai/proc/update_resting_icon(rest) if(chassis == "custom") + lying_prev = lying if(resting) lying = pick(90, 270) + else + lying = 0 else lying = 0 update_icon() diff --git a/code/modules/mob/living/silicon/pai/update_icon.dm b/code/modules/mob/living/silicon/pai/update_icon.dm new file mode 100644 index 0000000000..0234850ea7 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/update_icon.dm @@ -0,0 +1,26 @@ +/mob/living/silicon/pai/proc/update_icon() + if((chassis == "custom") && !custom_holoform_icon) + chassis = pick(possible_chassis - "custom") + if(chassis != "custom") + icon_state = "[chassis]_[resting]" + else + icon = custom_holoform_icon + icon_state = "" + update_transform() + +//Might be a copypaste from /mob/living/carbon/update_transform(), is it time to pull the combined code to /living yet? didn't want edge cases. +/mob/living/silicon/pai/update_transform() + var/matrix/ntransform = matrix(transform) + var/final_pixel_y = pixel_y + var/final_dir = dir + if(lying != lying_prev) + ntransform.TurnTo(lying_prev, lying) + if(!lying) //standing + final_pixel_y = get_standard_pixel_y_offset() + else + if(!lying_prev) + pixel_y = get_standard_pixel_y_offset() + final_pixel_y = get_standard_pixel_y_offset(lying) + if(dir & (EAST|WEST)) + final_dir = pick(NORTH, SOUTH) + animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN | EASE_OUT) diff --git a/tgstation.dme b/tgstation.dme index 4838c07d1a..c0fa268558 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2183,6 +2183,7 @@ #include "code\modules\mob\living\silicon\pai\personality.dm" #include "code\modules\mob\living\silicon\pai\say.dm" #include "code\modules\mob\living\silicon\pai\software.dm" +#include "code\modules\mob\living\silicon\pai\update_icon.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" #include "code\modules\mob\living\silicon\robot\examine.dm"