mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-23 20:16:19 +01:00
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user