From 59f44842243450813d3076b532157ae5862f1e08 Mon Sep 17 00:00:00 2001 From: UristMcAstronaut <52636518+UristMcAstronaut@users.noreply.github.com> Date: Sun, 7 Jul 2019 20:44:13 +0000 Subject: [PATCH 1/3] Add files via upload fixes pai holoform activating when pai is in pai connector --- pai_shell.dm | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 pai_shell.dm diff --git a/pai_shell.dm b/pai_shell.dm new file mode 100644 index 0000000000..164a3e7389 --- /dev/null +++ b/pai_shell.dm @@ -0,0 +1,124 @@ + +/mob/living/silicon/pai/proc/fold_out(force = FALSE) + if(emitterhealth < 0) + to_chat(src, "Your holochassis emitters are still too unstable! Please wait for automatic repair.") + return FALSE + + if(!canholo && !force) + to_chat(src, "Your master or another force has disabled your holochassis emitters!") + return FALSE + + if(holoform) + . = fold_in(force) + return + + if(emittersemicd) + to_chat(src, "Error: Holochassis emitters recycling. Please try again later.") + return FALSE + + emittersemicd = TRUE + addtimer(CALLBACK(src, .proc/emittercool), emittercd) + canmove = TRUE + density = TRUE + if(istype(card.loc, /obj/item/pda)) + var/obj/item/pda/P = card.loc + P.pai = null + P.visible_message("[src] ejects itself from [P]!") + if(isliving(card.loc)) + var/mob/living/L = card.loc + if(!L.temporarilyRemoveItemFromInventory(card)) + to_chat(src, "Error: Unable to expand to mobile form. Chassis is restrained by some device or person.") + return FALSE + if(istype(card.loc, /obj/item/integrated_circuit/input/pAI_connector)) + var/obj/item/integrated_circuit/input/pAI_connector/C = card.loc + C.RemovepAI() + C.visible_message("[src] ejects itself from [C]!") + playsound(src, 'sound/items/Crowbar.ogg', 50, 1) + C.installed_pai = null + C.push_data() + forceMove(get_turf(card)) + card.forceMove(src) + if(client) + client.perspective = EYE_PERSPECTIVE + client.eye = src + set_light(0) + icon_state = "[chassis]" + visible_message("[src] folds out its holochassis emitter and forms a holoshell around itself!") + holoform = TRUE + +/mob/living/silicon/pai/proc/emittercool() + emittersemicd = FALSE + +/mob/living/silicon/pai/proc/fold_in(force = FALSE) + emittersemicd = TRUE + if(!force) + addtimer(CALLBACK(src, .proc/emittercool), emittercd) + else + addtimer(CALLBACK(src, .proc/emittercool), emitteroverloadcd) + icon_state = "[chassis]" + if(!holoform) + . = fold_out(force) + return + visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") + stop_pulling() + if(client) + client.perspective = EYE_PERSPECTIVE + client.eye = card + var/turf/T = drop_location() + card.forceMove(T) + forceMove(card) + canmove = FALSE + density = FALSE + set_light(0) + holoform = FALSE + if(resting) + lay_down() + +/mob/living/silicon/pai/proc/choose_chassis() + if(!isturf(loc) && loc != card) + to_chat(src, "You can not change your holochassis composite while not on the ground or in your card!") + return FALSE + var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in possible_chassis + if(!choice) + return FALSE + chassis = choice + icon_state = "[chassis]" + if(resting) + icon_state = "[chassis]_rest" + to_chat(src, "You switch your holochassis projection composite to [chassis]") + +/mob/living/silicon/pai/lay_down() + ..() + update_resting_icon(resting) + +/mob/living/silicon/pai/proc/update_resting_icon(rest) + if(rest) + icon_state = "[chassis]_rest" + else + icon_state = "[chassis]" + if(loc != card) + visible_message("[src] [rest? "lays down for a moment..." : "perks up from the ground"]") + +/mob/living/silicon/pai/start_pulling(atom/movable/AM) + return FALSE + +/mob/living/silicon/pai/proc/toggle_integrated_light() + if(!light_range) + set_light(brightness_power) + to_chat(src, "You enable your integrated light.") + else + set_light(0) + to_chat(src, "You disable your integrated light.") + +/mob/living/silicon/pai/mob_pickup(mob/living/L) + var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, chassis, item_head_icon, item_lh_icon, item_rh_icon) + if(!L.put_in_hands(holder)) + qdel(holder) + else + L.visible_message("[L] scoops up [src]!") + +/mob/living/silicon/pai/mob_try_pickup(mob/living/user) + if(!possible_chassis[chassis]) + to_chat(user, "[src]'s current form isn't able to be carried!") + return FALSE + return ..() From 38b3ace14b758053f0a8502c5428ad30408c09ef Mon Sep 17 00:00:00 2001 From: UristMcAstronaut <52636518+UristMcAstronaut@users.noreply.github.com> Date: Sun, 7 Jul 2019 21:09:03 +0000 Subject: [PATCH 2/3] Update pai_shell.dm --- code/modules/mob/living/silicon/pai/pai_shell.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 99484f395e..164a3e7389 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -29,6 +29,13 @@ if(!L.temporarilyRemoveItemFromInventory(card)) to_chat(src, "Error: Unable to expand to mobile form. Chassis is restrained by some device or person.") return FALSE + if(istype(card.loc, /obj/item/integrated_circuit/input/pAI_connector)) + var/obj/item/integrated_circuit/input/pAI_connector/C = card.loc + C.RemovepAI() + C.visible_message("[src] ejects itself from [C]!") + playsound(src, 'sound/items/Crowbar.ogg', 50, 1) + C.installed_pai = null + C.push_data() forceMove(get_turf(card)) card.forceMove(src) if(client) From 2a6b701e5353d7df4ec5fa245818e8239cee0ee7 Mon Sep 17 00:00:00 2001 From: UristMcAstronaut <52636518+UristMcAstronaut@users.noreply.github.com> Date: Sun, 7 Jul 2019 22:08:50 +0000 Subject: [PATCH 3/3] Delete pai_shell.dm --- pai_shell.dm | 124 --------------------------------------------------- 1 file changed, 124 deletions(-) delete mode 100644 pai_shell.dm diff --git a/pai_shell.dm b/pai_shell.dm deleted file mode 100644 index 164a3e7389..0000000000 --- a/pai_shell.dm +++ /dev/null @@ -1,124 +0,0 @@ - -/mob/living/silicon/pai/proc/fold_out(force = FALSE) - if(emitterhealth < 0) - to_chat(src, "Your holochassis emitters are still too unstable! Please wait for automatic repair.") - return FALSE - - if(!canholo && !force) - to_chat(src, "Your master or another force has disabled your holochassis emitters!") - return FALSE - - if(holoform) - . = fold_in(force) - return - - if(emittersemicd) - to_chat(src, "Error: Holochassis emitters recycling. Please try again later.") - return FALSE - - emittersemicd = TRUE - addtimer(CALLBACK(src, .proc/emittercool), emittercd) - canmove = TRUE - density = TRUE - if(istype(card.loc, /obj/item/pda)) - var/obj/item/pda/P = card.loc - P.pai = null - P.visible_message("[src] ejects itself from [P]!") - if(isliving(card.loc)) - var/mob/living/L = card.loc - if(!L.temporarilyRemoveItemFromInventory(card)) - to_chat(src, "Error: Unable to expand to mobile form. Chassis is restrained by some device or person.") - return FALSE - if(istype(card.loc, /obj/item/integrated_circuit/input/pAI_connector)) - var/obj/item/integrated_circuit/input/pAI_connector/C = card.loc - C.RemovepAI() - C.visible_message("[src] ejects itself from [C]!") - playsound(src, 'sound/items/Crowbar.ogg', 50, 1) - C.installed_pai = null - C.push_data() - forceMove(get_turf(card)) - card.forceMove(src) - if(client) - client.perspective = EYE_PERSPECTIVE - client.eye = src - set_light(0) - icon_state = "[chassis]" - visible_message("[src] folds out its holochassis emitter and forms a holoshell around itself!") - holoform = TRUE - -/mob/living/silicon/pai/proc/emittercool() - emittersemicd = FALSE - -/mob/living/silicon/pai/proc/fold_in(force = FALSE) - emittersemicd = TRUE - if(!force) - addtimer(CALLBACK(src, .proc/emittercool), emittercd) - else - addtimer(CALLBACK(src, .proc/emittercool), emitteroverloadcd) - icon_state = "[chassis]" - if(!holoform) - . = fold_out(force) - return - visible_message("[src] deactivates its holochassis emitter and folds back into a compact card!") - stop_pulling() - if(client) - client.perspective = EYE_PERSPECTIVE - client.eye = card - var/turf/T = drop_location() - card.forceMove(T) - forceMove(card) - canmove = FALSE - density = FALSE - set_light(0) - holoform = FALSE - if(resting) - lay_down() - -/mob/living/silicon/pai/proc/choose_chassis() - if(!isturf(loc) && loc != card) - to_chat(src, "You can not change your holochassis composite while not on the ground or in your card!") - return FALSE - var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in possible_chassis - if(!choice) - return FALSE - chassis = choice - icon_state = "[chassis]" - if(resting) - icon_state = "[chassis]_rest" - to_chat(src, "You switch your holochassis projection composite to [chassis]") - -/mob/living/silicon/pai/lay_down() - ..() - update_resting_icon(resting) - -/mob/living/silicon/pai/proc/update_resting_icon(rest) - if(rest) - icon_state = "[chassis]_rest" - else - icon_state = "[chassis]" - if(loc != card) - visible_message("[src] [rest? "lays down for a moment..." : "perks up from the ground"]") - -/mob/living/silicon/pai/start_pulling(atom/movable/AM) - return FALSE - -/mob/living/silicon/pai/proc/toggle_integrated_light() - if(!light_range) - set_light(brightness_power) - to_chat(src, "You enable your integrated light.") - else - set_light(0) - to_chat(src, "You disable your integrated light.") - -/mob/living/silicon/pai/mob_pickup(mob/living/L) - var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, chassis, item_head_icon, item_lh_icon, item_rh_icon) - if(!L.put_in_hands(holder)) - qdel(holder) - else - L.visible_message("[L] scoops up [src]!") - -/mob/living/silicon/pai/mob_try_pickup(mob/living/user) - if(!possible_chassis[chassis]) - to_chat(user, "[src]'s current form isn't able to be carried!") - return FALSE - return ..()