From 0c1c96a8b53d82a9a74cd705066b9c5c71329d97 Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 7 Dec 2014 17:27:48 -0500 Subject: [PATCH 1/7] Minor Fixes to pAI Death and Adds Corgi Form - Corgi form available to pAIs. - Canine speech flavor text available to pAIs. - Minor fixes to pAI death behavior, only creates robot debris if the pAi is in drone form when it dies. - pAI suicide now works while resting. --- code/game/verbs/suicide.dm | 2 +- code/modules/mob/living/silicon/pai/death.dm | 12 +++++++----- code/modules/mob/living/silicon/pai/pai.dm | 6 ++++-- icons/mob/pai.dmi | Bin 9739 -> 12677 bytes 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 0b351b7619a..dfdd73ef076 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -170,7 +170,7 @@ set name = "pAI Suicide" var/answer = input("REALLY kill yourself? This action can't be undone.", "Suicide", "No") in list ("Yes", "No") if(answer == "Yes") - if(canmove && !resting) + if(canmove || resting) close_up() var/obj/item/device/paicard/card = loc card.removePersonality() diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index b945315ac2b..ac8efb20217 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -1,13 +1,14 @@ /mob/living/silicon/pai/death(gibbed) if(stat == DEAD) return - var/turf/T = get_turf_or_move(loc) - for (var/mob/M in viewers(T)) - M.show_message("\red A shower of sparks spray from [src]'s inner workings.", 3, "\red You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2) - var/obj/effect/decal/cleanable/deadpai = new /obj/effect/decal/cleanable/robot_debris(loc) if(canmove || resting) + var/turf/T = get_turf_or_move(loc) + for (var/mob/M in viewers(T)) + M.show_message("\red A low buzz emanates from [src] as it loses power and falls to the ground, motionless.", 3, "\red You sense the faint smell of burned plastic, and hear a low buzzing noise.", 2) + var/obj/effect/decal/cleanable/deadpai = new /obj/effect/decal/cleanable/robot_debris(loc) + deadpai.name = "pAI debris" + deadpai.desc = "The unfortunate remains of some poor personal AI device. Somebody should clean this up." deadpai.icon = 'icons/mob/pai.dmi' deadpai.icon_state = "[chassis]_dead" - del(src) stat = DEAD canmove = 0 if(blind) blind.layer = 0 @@ -23,3 +24,4 @@ if(mind) del(mind) living_mob_list -= src ghostize() + del(src) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index ab04798293b..1513a69e224 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -23,7 +23,8 @@ "Drone" = "repairbot", "Cat" = "cat", "Mouse" = "mouse", - "Monkey" = "monkey" + "Monkey" = "monkey", + "Corgi" = "corgi" ) var/global/list/possible_say_verbs = list( @@ -31,7 +32,8 @@ "Natural" = list("says","yells","asks"), "Beep" = list("beeps","beeps loudly","boops"), "Chirp" = list("chirps","chirrups","cheeps"), - "Feline" = list("purrs","yowls","meows") + "Feline" = list("purrs","yowls","meows"), + "Canine" = list("barks","growls","whines") ) diff --git a/icons/mob/pai.dmi b/icons/mob/pai.dmi index f286389bffc1f05454d7370cb0c2f7a04b5ff831..4edcf7d8665b10cf33a73db0c89542f83e3fc296 100644 GIT binary patch literal 12677 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 MLgRUry!qSz1z-MG*#H0l literal 9739 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 Date: Mon, 8 Dec 2014 18:22:18 -0500 Subject: [PATCH 2/7] More Minor pAI bugfixes - Closing a pAI turns off resting. - Wiping a mobile pAI now works correctly. (Probably want to fix being able to do this in the first place) --- code/game/objects/items/devices/paicard.dm | 4 ++++ code/modules/mob/living/silicon/pai/pai.dm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index fece7e13f8a..9721a3dcb23 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -250,6 +250,10 @@ M << "

Byte by byte you lose your sense of self.

" M << "

Your mental faculties leave you.

" M << "
oblivion...
" + var/mob/living/silicon/pai/P = M + if(istype(P)) + if(P.resting || P.canmove) + P.close_up() M.death(0) removePersonality() if(href_list["wires"]) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 1513a69e224..fcb3fd0ac1e 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -424,7 +424,7 @@ /mob/living/silicon/pai/proc/close_up() last_special = world.time + 200 - + resting = 0 if(src.loc == card) return From 55a2779cf83f16b4005cb7deeffce3f3e831cc22 Mon Sep 17 00:00:00 2001 From: DZD Date: Tue, 9 Dec 2014 19:00:46 -0500 Subject: [PATCH 3/7] More Minor pAI Tweaks - EMPs will only instantly kill full health pAIs on a 20% chance, possible brute/burn from EMPs isn't instantly deadly anymore. - pAIs can no longer bump things around. - Cleans up unneeded if statement in pAI pull proc, still cannot pull anything. - pAI card (not mobile form) now properly reacts to explosions. - Adds 1/10 second delay between a pAI being hit/bonked and closing up (Effectively meaningless gameplay-wise). --- code/game/objects/items/devices/paicard.dm | 5 +++ code/modules/mob/living/silicon/pai/pai.dm | 37 ++++++++++++---------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 9721a3dcb23..72910f14cca 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -306,3 +306,8 @@ M.emp_act(severity) ..() +/obj/item/device/paicard/ex_act(severity) + if(pai) + pai.ex_act(severity) + else + del(src) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index fcb3fd0ac1e..8e0373536db 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -174,16 +174,16 @@ switch(severity) if(1.0) - if (src.stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) + if (src.stat != 2) //Let's not have two of these instantly kill you. + adjustBruteLoss(45) + adjustFireLoss(45) if(2.0) if (src.stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) + adjustBruteLoss(30) + adjustFireLoss(30) if(3.0) if (src.stat != 2) - adjustBruteLoss(30) + adjustBruteLoss(20) src.updatehealth() @@ -200,8 +200,6 @@ src.updatehealth() return -//mob/living/silicon/pai/bullet_act(var/obj/item/projectile/Proj) - /mob/living/silicon/pai/attack_alien(mob/living/carbon/alien/humanoid/M as mob) if (!ticker) M << "You cannot attack people before the game has started." @@ -236,8 +234,6 @@ O.show_message(text("\red [] took a swipe at []!", M, src), 1) return -///mob/living/silicon/pai/attack_hand(mob/living/carbon/M as mob) - /mob/living/silicon/pai/proc/switchCamera(var/obj/machinery/camera/C) usr:cameraFollow = null if (!C) @@ -412,13 +408,16 @@ src.updatehealth() else visible_message("[user.name] bonks [src] harmlessly with [W].") - if(stat != 2) close_up() + spawn(1) + if(stat != 2) + close_up() return /mob/living/silicon/pai/attack_hand(mob/user as mob) if(stat == 2) return visible_message("[user.name] boops [src] on the head.") - close_up() + spawn(1) + close_up() //I'm not sure how much of this is necessary, but I would rather avoid issues. /mob/living/silicon/pai/proc/close_up() @@ -443,10 +442,15 @@ canmove = 0 icon_state = "[chassis]" -/mob/living/silicon/pai/start_pulling(var/atom/movable/AM) +/mob/living/silicon/pai/Bump(atom/movable/AM as mob|obj, yes) + return - if(istype(AM,/obj/item)) - src << "You are far too small to pull anything!" +/mob/living/silicon/pai/Bumped(AM as mob|obj) + return + +/mob/living/silicon/pai/start_pulling(var/atom/movable/AM) + src << "You are far too small to pull anything!" + return /mob/living/silicon/pai/examine() @@ -479,6 +483,7 @@ ..(Proj) updatehealth() if (stat != 2) - close_up() + spawn(1) + close_up() return 2 From 7d600c4379e9c6939cd0604f9082a865dfdc01e1 Mon Sep 17 00:00:00 2001 From: DZD Date: Wed, 10 Dec 2014 17:35:50 -0500 Subject: [PATCH 4/7] Minor Fixes - Fixes message spam a pAI gets if being dragged. - pAI master interface should become inaccessible if pAI goes into drone form. - Minor changes to pAI death, handles the card a bit better. --- code/game/objects/items/devices/paicard.dm | 2 +- code/modules/mob/living/silicon/pai/death.dm | 13 +++++++------ code/modules/mob/living/silicon/pai/pai.dm | 5 ++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 72910f14cca..6a33429f4a3 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -225,7 +225,7 @@ /obj/item/device/paicard/Topic(href, href_list) - if(!usr || usr.stat) + if(!usr || usr.stat || src.loc != usr.loc || pai.canmove || pai.resting) return if(href_list["setdna"]) diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index ac8efb20217..d48134641ea 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -3,12 +3,13 @@ if(canmove || resting) var/turf/T = get_turf_or_move(loc) for (var/mob/M in viewers(T)) - M.show_message("\red A low buzz emanates from [src] as it loses power and falls to the ground, motionless.", 3, "\red You sense the faint smell of burned plastic, and hear a low buzzing noise.", 2) - var/obj/effect/decal/cleanable/deadpai = new /obj/effect/decal/cleanable/robot_debris(loc) - deadpai.name = "pAI debris" - deadpai.desc = "The unfortunate remains of some poor personal AI device. Somebody should clean this up." - deadpai.icon = 'icons/mob/pai.dmi' - deadpai.icon_state = "[chassis]_dead" + M.show_message("\red [src] emits a dull beep before it loses power and collapses.", 3, "\red You hear a dull beep followed by the sound of glass crunching.", 2) + name = "pAI debris" + desc = "The unfortunate remains of some poor personal AI device." + icon_state = "[chassis]_dead" + else + card.overlays.Cut() + card.overlays += "pai-off" stat = DEAD canmove = 0 if(blind) blind.layer = 0 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 385a38fcf5a..c3216236c50 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -450,7 +450,10 @@ return /mob/living/silicon/pai/start_pulling(var/atom/movable/AM) - src << "You are far too small to pull anything!" + if(stat || sleeping || paralysis || weakened) + return + if(istype(AM,/obj/item)) + src << "You are far too small to pull anything!" return /mob/living/silicon/pai/examine() From 8f92593e4a1a633e3818b5e4360be3c62209a43c Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 14 Dec 2014 15:31:30 -0500 Subject: [PATCH 5/7] Fixed pAI Death and Interface While in Drone Form - pAI interface now closes when a user tries to interact with it while the pAI is in drone form or out of range. - PROPERLY fixed drone pAI death, leaves a corpse on the ground. --- code/game/objects/items/devices/paicard.dm | 10 +++++++++- code/modules/mob/living/silicon/pai/death.dm | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 6a33429f4a3..cb7dea3371d 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -225,9 +225,17 @@ /obj/item/device/paicard/Topic(href, href_list) - if(!usr || usr.stat || src.loc != usr.loc || pai.canmove || pai.resting) + var/mob/U = usr + + if(!usr || usr.stat) return + if(pai) + if(!in_range(src, U) || pai.canmove || pai.resting) + U << browse(null, "window=paicard") + usr.unset_machine() + return + if(href_list["setdna"]) if(pai.master_dna) return diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index d48134641ea..fea081ddfff 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -25,4 +25,5 @@ if(mind) del(mind) living_mob_list -= src ghostize() - del(src) + if(icon_state != "[chassis]_dead") + del(src) From d6e13b506d7f79570f78139a7329919843a1923c Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 14 Dec 2014 15:49:13 -0500 Subject: [PATCH 6/7] Possible Fix for pAI language - pAIs can speak Sol Common by default (Needs testing) --- code/modules/mob/living/silicon/pai/pai.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index c3216236c50..4211569bdf8 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -81,7 +81,7 @@ if(!card.radio) card.radio = new /obj/item/device/radio(src.card) radio = card.radio - + add_language("Sol Common") //Verbs for pAI mobile form, chassis and Say flavor text verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs From 95fe57f08b528aed7de07bb79cde79247faaaa73 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 9 Jan 2015 18:08:43 -0500 Subject: [PATCH 7/7] Undo Possible Language Fix Language Fix does not work, removing for now, to be fixed in a separate PR. --- code/modules/mob/living/silicon/pai/pai.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 4211569bdf8..7ed993b4520 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -81,7 +81,6 @@ if(!card.radio) card.radio = new /obj/item/device/radio(src.card) radio = card.radio - add_language("Sol Common") //Verbs for pAI mobile form, chassis and Say flavor text verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs