Merge pull request #775 from TalkingCactus/pai-examine-fix

pAI Tweaks
This commit is contained in:
Razgriz
2019-08-25 23:06:13 -07:00
committed by GitHub
7 changed files with 132 additions and 45 deletions
+38 -6
View File
@@ -1,7 +1,28 @@
/mob/living/silicon/pai/examine(mob/user)
..(user, infix = ", personal AI")
//Chompstation edit
/mob/living/silicon/pai/examine(mob/user)
var/msg = "<span class='info'>*---------*<br>This is "
if(icon)
msg += "\icon[icon] "
msg += "<EM>[src.name]</EM>, a <EM>[chassis_names[src.chassis]]</EM> personal AI</span>\n"
if(health == 100)
msg += "<span class='notice'>It's in pristine condition.</span>\n"
else
msg += "<span class='warning'>"
if (src.getBruteLoss())
if (src.getBruteLoss() < 50)
msg += "It looks slightly dented.\n"
else
msg += "<B>It looks severely dented!</B>\n"
if (src.getFireLoss())
if (src.getFireLoss() < 50)
msg += "It looks slightly charred.\n"
else
msg += "<B>It looks severely burnt and heat-warped!</B>\n"
msg += "</span>"
var/msg = ""
switch(src.stat)
if(CONSCIOUS)
if(!src.client) msg += "\nIt appears to be in stand-by mode.\n" //afk
@@ -14,13 +35,24 @@
msg += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[src];ooc_notes=1'>\[View\]</a>\n"
// VOREStation Edit: End
msg += "\n*---------*"
if(print_flavor_text()) msg += "\n[print_flavor_text()]\n"
msg += "\n*---------*"
if (pose)
if( findtext(pose,".",lentext(pose)) == 0 && findtext(pose,"!",lentext(pose)) == 0 && findtext(pose,"?",lentext(pose)) == 0 )
pose = addtext(pose,".") //Makes sure all emotes end with a period.
msg += "\nIt is [pose]"
user << msg
user << msg
/obj/item/device/paicard/examine(mob/user)
..(user)
if(pai)//If we have a personality inside
user << "<span class='emote'>Inside \the [src] is...</span>"
pai.examine(user)//Examine that as well
//Chompstation edit end
// : )
@@ -25,6 +25,9 @@
if(health <= 0)
death(null,"gives one shrill beep before falling lifeless.")
//Chompstation edit
if(loc == card && health < 100)//if we're carded
heal_organ_damage(0.5,0.5)//slowly heal
/mob/living/silicon/pai/updatehealth()
if(status_flags & GODMODE)
+22 -1
View File
@@ -380,8 +380,29 @@
return
/mob/living/silicon/pai/attack_hand(mob/user as mob)
//Chompstation edit
if(user.a_intent == I_HELP)
visible_message("<span class='notice'>[user.name] pats [src].</span>")
visible_message("<span class='notice'>[user.name] [rand("pets","pats")] [src].</span>")
else if(user.a_intent == I_GRAB)
if(user == src || anchored)
return 0
for(var/obj/item/weapon/grab/G in src.grabbed_by)
if(G.assailant == user)
user << "<span class='notice'>You already grabbed [src].</span>"
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(user, src)
if(buckled)
user << "<span class='notice'>You cannot grab [src], they're buckled in!</span>"
if(!G) //the grab will delete itself in New if affecting is anchored
return
user.put_in_active_hand(G)
G.synch()
LAssailant = user
user.do_attack_animation(src)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='warning'>[user] has grabbed [src] passively!</span>")
//End Chompstation edit
else
visible_message("<span class='danger'>[user.name] boops [src] on the head.</span>")
close_up()
@@ -71,3 +71,27 @@
chassis = possible_chassis[choice]
verbs |= /mob/living/proc/hide
update_icon()
//Invert list of the chassis list if you need the name of the chassis but only have the chassis's icon state
/mob/living/silicon/pai
var/list/chassis_names = list(
"repairbot" = "Drone",
"cat" = "Cat",
"mouse" = "Mouse",
"monkey" = "Monkey",
"borgi" = "Corgi",
"fox" = "Fox",
"parrot" = "Parrot",
"rabbit" = "Rabbit",
"bear" = "Bear",
"raccoon" = "Raccoon",
"rat" = "rat",
"panther" = "Panther"
)
//Override so you can examine mobs even if you're in your card and in a pocket or something.
/mob/living/silicon/pai/ShiftClickOn(A)
if(loc == card && !isbelly(card.loc))//Cannot examine from inside a belly, like any other mob
src.examinate(A)
else
..(A)
+1 -1
View File
@@ -89,7 +89,7 @@
var/obj/item/weapon/grab/G = I
//Has to be aggressive grab, has to be living click-er and non-silicon grabbed
if((G.state >= GRAB_AGGRESSIVE) && (isliving(user) && !issilicon(G.affecting)))
if((G.state >= GRAB_AGGRESSIVE) && (isliving(user) && (!issilicon(G.affecting) || ispAI(G.affecting))))//Chompstation edit, lets pAI be eaten
var/mob/living/attacker = user // Typecast to living