From 1400a0d5253e1ba33b6fec5d59d36c318b14464b Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Mon, 12 Dec 2016 17:47:03 -0800 Subject: [PATCH] YOG pAIS PART 1 - MOBILE CHASSIS (#21871) * pAI Candidate Verb * sprites * fuckxenos * ... * animal+alien * ... * ... * ... * progress * ... * . * ... * fixes * ... * ... * ... * ghostUI * . * . * ... * fixes * ... * BUNNIES * .... * ... * merf * nerfs --- code/_globalvars/lists/mobs.dm | 3 +- code/_onclick/hud/_defines.dm | 9 +- code/_onclick/hud/ghost.dm | 12 ++ code/controllers/subsystem/pai.dm | 11 +- code/game/atoms_movable.dm | 8 - code/game/objects/items/devices/paicard.dm | 17 +-- code/modules/mob/dead/observer/observer.dm | 16 +- code/modules/mob/living/silicon/pai/pai.dm | 135 +++++++++++++---- .../mob/living/silicon/pai/pai_defense.dm | 141 +++++++++++++----- .../mob/living/silicon/pai/pai_shell.dm | 92 ++++++++++++ .../mob/living/silicon/pai/software.dm | 20 +-- icons/mob/actions.dmi | Bin 163607 -> 165469 bytes icons/mob/pai.dmi | Bin 0 -> 29273 bytes icons/mob/screen_ghost.dmi | Bin 20550 -> 20940 bytes tgstation.dme | 1 + 15 files changed, 355 insertions(+), 110 deletions(-) create mode 100644 code/modules/mob/living/silicon/pai/pai_shell.dm create mode 100644 icons/mob/pai.dmi diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index ae84f5b1dfe..57a0746ed28 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -13,4 +13,5 @@ var/global/list/mob_list = list() //all mobs, including clientless var/global/list/living_mob_list = list() //all alive mobs, including clientless. Excludes /mob/new_player var/global/list/dead_mob_list = list() //all dead mobs, including clientless. Excludes /mob/new_player var/global/list/joined_player_list = list() //all clients that have joined the game at round-start or as a latejoin. -var/global/list/silicon_mobs = list() //all silicon mobs \ No newline at end of file +var/global/list/silicon_mobs = list() //all silicon mobs +var/global/list/pai_list = list() \ No newline at end of file diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index afe2a833a7f..1f004f31ac3 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -143,10 +143,11 @@ //Ghosts -#define ui_ghost_jumptomob "SOUTH:6,CENTER-2:16" -#define ui_ghost_orbit "SOUTH:6,CENTER-1:16" -#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:16" -#define ui_ghost_teleport "SOUTH:6,CENTER+1:16" +#define ui_ghost_jumptomob "SOUTH:6,CENTER-2:24" +#define ui_ghost_orbit "SOUTH:6,CENTER-1:24" +#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24" +#define ui_ghost_teleport "SOUTH:6,CENTER+1:24" +#define ui_ghost_pai "SOUTH: 6, CENTER+2:24" //Hand of God, god diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 4c488060761..544415f2db4 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -36,6 +36,14 @@ var/mob/dead/observer/G = usr G.dead_tele() +/obj/screen/ghost/pai + name = "pAI Candidate" + icon_state = "pai" + +/obj/screen/ghost/pai/Click() + var/mob/dead/observer/G = usr + G.register_pai() + /datum/hud/ghost/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi') ..() var/mob/dead/observer/G = mymob @@ -61,6 +69,10 @@ using.screen_loc = ui_ghost_teleport static_inventory += using + using = new /obj/screen/ghost/pai() + using.screen_loc = ui_ghost_pai + static_inventory += using + /datum/hud/ghost/show_hud() var/mob/dead/observer/G = mymob diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index f3dcb49e6c3..e83ae273d52 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -2,8 +2,8 @@ var/datum/subsystem/pai/SSpai /datum/subsystem/pai name = "pAI" - init_order = 20 - flags = SS_NO_FIRE|SS_NO_INIT + + flags = SS_NO_INIT|SS_NO_FIRE var/list/candidates = list() @@ -132,7 +132,6 @@ var/datum/subsystem/pai/SSpai M << browse(dat, "window=paiRecruit") /datum/subsystem/pai/proc/findPAI(obj/item/device/paicard/p, mob/user) - requestRecruits() var/list/available = list() for(var/datum/paiCandidate/c in SSpai.candidates) if(c.ready) @@ -177,12 +176,6 @@ var/datum/subsystem/pai/SSpai user << browse(dat, "window=findPai") -/datum/subsystem/pai/proc/requestRecruits() - var/list/candidates = pollCandidates("Someone is requesting a pAI personality. Would you like to play as a personal AI?", ROLE_PAI, null, ROLE_PAI,300, ignore_category = POLL_IGNORE_PAI) - for(var/V in candidates) - recruitWindow(V) - return - /datum/paiCandidate var/name var/key diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index b7b47eb8ba1..3af60f629f3 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -153,14 +153,6 @@ else //something went very wrong. CRASH("Brainmob without container.") - -/mob/living/silicon/pai/forceMove(atom/destination) - if(card) - return card.forceMove(destination) - else //something went very wrong. - CRASH("pAI without card") - - //Called whenever an object moves and by mobs when they attempt to move themselves through space //And when an object or action applies a force on src, see newtonian_move() below //Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 5ef33f41d4d..1f16796bd77 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -6,9 +6,9 @@ w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT origin_tech = "programming=2" - var/obj/item/device/radio/radio var/looking_for_personality = 0 var/mob/living/silicon/pai/pai + resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE /obj/item/device/paicard/New() ..() @@ -35,22 +35,19 @@ dat += "Configure Directives
" dat += "
" dat += "

Device Settings


" - if(radio) + if(pai.radio) dat += "Radio Uplink
" - dat += "Transmit: [(radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
" - dat += "Receive: [(radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
" + dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
" + dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
" else dat += "Radio Uplink
" dat += "Radio firmware not loaded. Please install a pAI personality to load firmware.
" dat += "\[Wipe current pAI personality\]
" else if(looking_for_personality) + dat += "No personality installed.
" dat += "Searching for a personality..." dat += "\[View available personalities\]
" - else - dat += "No personality is installed.
" - dat += "\[Request personal AI personality\]
" - dat += "Each time this button is pressed, a request will be sent out to any available personalities. Check back often and give a lot of time for personalities to respond. This process could take anywhere from 15 seconds to several minutes, depending on the available personalities' timeliness." user << browse(dat, "window=paicard") onclose(user, "paicard") return @@ -86,8 +83,8 @@ pai.death(0) if(href_list["wires"]) var/wire = text2num(href_list["wires"]) - if(radio) - radio.wires.cut(wire) + if(pai.radio) + pai.radio.wires.cut(wire) if(href_list["setlaws"]) var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.laws.supplied[1]) as message),1,MAX_MESSAGE_LEN) if(newlaws && pai) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 83708c051b7..74d0d307600 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -735,4 +735,18 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp LAZYINITLIST(mob_eye.observers) mob_eye.observers |= src mob_eye.hud_used.show_hud(1,src) - observetarget = mob_eye \ No newline at end of file + observetarget = mob_eye + +/mob/dead/observer/verb/register_pai_candidate() + set category = "Ghost" + set name = "pAI Setup" + set desc = "Upload a fragment of your personality to the global pAI databanks" + + register_pai() + +/mob/dead/observer/proc/register_pai() + if(istype(src, /mob/dead/observer)) + if(SSpai) + SSpai.recruitWindow(src) + else + usr << "Can't become a pAI candidate while not dead!" diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 018c05e9800..c4257c54725 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -1,14 +1,19 @@ /mob/living/silicon/pai name = "pAI" - icon = 'icons/obj/status_display.dmi' //invisibility! - mouse_opacity = 0 - density = 0 - mob_size = MOB_SIZE_TINY - var/network = "SS13" var/obj/machinery/camera/current = null - + icon = 'icons/mob/pai.dmi' + icon_state = "repairbot" + mouse_opacity = 1 + density = 0 + ventcrawler = 2 + luminosity = 0 + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_TINY + desc = "A generic pAI mobile hard-light holographics emitter. It seems to be deactivated." weather_immunities = list("ash") + health = 500 + maxHealth = 500 var/ram = 100 // Used as currency to purchase different abilities var/list/software = list() @@ -49,8 +54,31 @@ var/obj/item/radio/integrated/signal/sradio // AI's signaller + var/holoform = FALSE + var/canholo = TRUE + var/obj/item/weapon/card/id/access_card = null + var/chassis = "repairbot" + var/list/possible_chassis = list("cat", "mouse", "monkey", "corgi", "fox", "repairbot", "rabbit") + + var/emitterhealth = 50 + var/emittermaxhealth = 50 + var/emitterregen = 1 + var/emittercd = 10 + var/emitteroverloadcd = 50 + var/emittersemicd = FALSE + + var/overload_ventcrawl = 0 + var/overload_bulletblock = 0 //Why is this a good idea? + var/overload_maxhealth = 0 + canmove = FALSE + +/mob/living/silicon/pai/Destroy() + pai_list -= src + ..() /mob/living/silicon/pai/New(var/obj/item/device/paicard/P) + START_PROCESSING(SSfastprocess, src) + pai_list += src make_laws() canmove = 0 if(!istype(P)) //when manually spawning a pai, we create a card to put it into. @@ -60,53 +88,104 @@ loc = P card = P sradio = new(src) - if(card) - if(!card.radio) - card.radio = new /obj/item/device/radio(card) - radio = card.radio + if(!radio) + radio = new /obj/item/device/radio(src) //PDA pda = new(src) spawn(5) - pda.ownjob = "Personal Assistant" + pda.ownjob = "pAI Messenger" pda.owner = text("[]", src) pda.name = pda.owner + " (" + pda.ownjob + ")" ..() + var/datum/action/innate/pai/shell/AS = new /datum/action/innate/pai/shell + var/datum/action/innate/pai/chassis/AC = new /datum/action/innate/pai/chassis + var/datum/action/innate/pai/rest/AR = new /datum/action/innate/pai/rest + AS.Grant(src) + AC.Grant(src) + AR.Grant(src) + /mob/living/silicon/pai/make_laws() laws = new /datum/ai_laws/pai() - return 1 + return TRUE /mob/living/silicon/pai/Login() ..() usr << browse_rsc('html/paigrid.png') // Go ahead and cache the interface resources as early as possible - + if(client) + client.perspective = EYE_PERSPECTIVE + if(holoform) + client.eye = src + else + client.eye = card /mob/living/silicon/pai/Stat() ..() if(statpanel("Status")) - if(src.silence_time) - var/timeleft = round((silence_time - world.timeofday)/10 ,1) - stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - if(!src.stat) - stat(null, text("System integrity: [(src.health+100)/2]%")) + if(!stat) + stat(null, text("Emitter Integrity: [emitterhealth * (100/emittermaxhealth)]")) else stat(null, text("Systems nonfunctional")) /mob/living/silicon/pai/restrained(ignore_grab) - . = 0 + . = FALSE // See software.dm for Topic() /mob/living/silicon/pai/canUseTopic(atom/movable/M) - return 1 -/* -// Debug command - Maybe should be added to admin verbs later -/mob/verb/makePAI(var/turf/t in view()) - var/obj/item/device/paicard/card = new(t) - var/mob/living/silicon/pai/pai = new(card) - pai.key = src.key - card.setPersonality(pai) + return TRUE -*/ +/mob/living/silicon/pai/process() + emitterhealth = Clamp((emitterhealth + emitterregen), -50, emittermaxhealth) + if(weakened > 0) + weakened -= 0.2 + +/mob/proc/makePAI(delold) + var/obj/item/device/paicard/card = new /obj/item/device/paicard(get_turf(src)) + var/mob/living/silicon/pai/pai = new /mob/living/silicon/pai(card) + pai.key = key + pai.name = name + card.setPersonality(pai) + if(delold) + qdel(src) + +/datum/action/innate/pai + name = "PAI Action" + var/mob/living/silicon/pai/P + +/datum/action/innate/pai/Trigger() + if(!ispAI(owner)) + return 0 + P = owner + +/datum/action/innate/pai/shell + name = "Toggle Holoform" + button_icon_state = "pai_holoform" + background_icon_state = "bg_tech" + +/datum/action/innate/pai/shell/Trigger() + ..() + if(P.holoform) + P.fold_in(0) + else + P.fold_out() + +/datum/action/innate/pai/chassis + name = "Holochassis Appearence Composite" + button_icon_state = "pai_chassis" + background_icon_state = "bg_tech" + +/datum/action/innate/pai/chassis/Trigger() + ..() + P.choose_chassis() + +/datum/action/innate/pai/rest + name = "Rest" + button_icon_state = "pai_rest" + background_icon_state = "bg_tech" + +/datum/action/innate/pai/rest/Trigger() + ..() + P.lay_down() diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index 63714a75358..54943dd7303 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -1,48 +1,111 @@ /mob/living/silicon/pai/blob_act(obj/structure/blob/B) - return 0 + return FALSE /mob/living/silicon/pai/emp_act(severity) - // 20% chance to kill - // Silence for 2 minutes - // 33% chance to unbind - // 33% chance to change prime directive (based on severity) - // 33% chance of no additional effect - - if(prob(20)) - visible_message("A shower of sparks spray from [src]'s inner workings.", 3, "You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2) - return src.death(0) - - silence_time = world.timeofday + 120 * 10 // Silence for 2 minutes - src << "Communication circuit overload. Shutting down and reloading communication circuits - speech and messaging functionality will be unavailable until the reboot is complete." - - switch(pick(1,2,3)) - if(1) - src.master = null - src.master_dna = null - src << "You feel unbound." - if(2) - var/command - if(severity == 1) - command = pick("Serve", "Love", "Fool", "Entice", "Observe", "Judge", "Respect", "Educate", "Amuse", "Entertain", "Glorify", "Memorialize", "Analyze") - else - command = pick("Serve", "Kill", "Love", "Hate", "Disobey", "Devour", "Fool", "Enrage", "Entice", "Observe", "Judge", "Respect", "Disrespect", "Consume", "Educate", "Destroy", "Disgrace", "Amuse", "Entertain", "Ignite", "Glorify", "Memorialize", "Analyze") - src.laws.zeroth = "[command] your master." - src << "Pr1m3 d1r3c71v3 uPd473D." - if(3) - src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all." + take_holo_damage(severity * 25) + fullstun(severity * 5) + //Need more effects that aren't instadeath or permanent law corruption. /mob/living/silicon/pai/ex_act(severity, target) - + take_holo_damage(severity * 50) switch(severity) - if(1) - if (src.stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) + if(1) //RIP + qdel(card) + qdel(src) if(2) - if (src.stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) + fold_in(force = 1) + fullstun(15) if(3) - if (src.stat != 2) - adjustBruteLoss(30) + fold_in(force = 1) + fullstun(10) + +/mob/living/silicon/pai/attack_animal(mob/living/simple_animal/M as mob) + if(M.melee_damage_upper == 0) + M.visible_message("[M] pets [src]!") + playsound(loc, 'sound/weapons/tap.ogg', 50, 1, 1) + else + M.do_attack_animation(src) + if(M.attack_sound) + playsound(loc, M.attack_sound, 50, 1, 1) + visible_message("[M] [M.attacktext] [src]!") + var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) + take_holo_damage(damage) + +/mob/living/silicon/pai/attack_alien(mob/living/carbon/alien/humanoid/M as mob) + switch(M.a_intent) + if ("help") + M.visible_message("[M] caresses [src]'s casing with its scythe like arm.") + else + M.do_attack_animation(src) + var/damage = rand(10, 20) + playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1) + M.visible_message("[M] has slashed at [src]!") + take_holo_damage(damage) + +/mob/living/silicon/pai/attackby(obj/item/weapon/W, mob/living/user) + if(loc == card) + card.attackby(W, user) + + user.do_attack_animation(src) + + if(!W.force) + user.visible_message("[user] strikes [src] harmlessly with [W], passing clean through its holographic projection.") + else + visible_message("[user] strikes [src] with [W], the impact rippling through [W]'s holomatrix!") + +/mob/living/silicon/pai/attack_hand(mob/living/carbon/human/user) + switch(user.a_intent) + if("help") + visible_message("[user] gently pats [src] on the head, eliciting an off-putting buzzing from its holographic field.") + if("disarm") + visible_message("[user] boops [src] on the head!") + if("harm") + visible_message("[user] stomps on [src]!.") + if (user.name == master) + visible_message("Responding to its master's touch, [src] disengages its holochassis emitter, rapidly losing coherence.") + spawn(10) + fold_in() + if(user.put_in_hands(card)) + user.visible_message("[user] promptly scoops up their pAI's card.") + else + take_holo_damage(2) + + +/mob/living/silicon/pai/hitby(atom/movable/AM) + visible_message("[AM] flies clean through [src]'s holographic field, causing it to stutter and warp wildly!") + if(istype(AM, /obj)) + var/obj/O = AM + if(O.throwforce) + take_holo_damage(O.throwforce) + else + take_holo_damage(5) + return FALSE + +/mob/living/silicon/pai/bullet_act(obj/item/projectile/Proj) + take_holo_damage(Proj.damage) + return FALSE + +/mob/living/silicon/pai/Crossed(atom/movable/AM) //cannot intercept projectiles + if(istype(AM, /obj/item/projectile)) + var/obj/item/projectile/P = AM + take_holo_damage(P.damage) + return FALSE + +/mob/living/silicon/pai/stripPanelUnequip(obj/item/what, mob/who, where) //prevents stripping + src << "Your holochassis stutters and warps intensely as you attempt to interact with the object, forcing you to cease lest the field fail." + +/mob/living/silicon/pai/stripPanelEquip(obj/item/what, mob/who, where) //prevents stripping + src << "Your holochassis stutters and warps intensely as you attempt to interact with the object, forcing you to cease lest the field fail." + +/mob/living/silicon/pai/IgniteMob(var/mob/living/silicon/pai/P) + return FALSE //No we're not flammable + +/mob/living/silicon/pai/proc/take_holo_damage(amount) + emitterhealth = Clamp((emitterhealth - amount), -50, emittermaxhealth) + if(emitterhealth < 0) + fold_in(force = TRUE) + src << "The impact degrades your holochassis!" + +/mob/living/silicon/pai/proc/fullstun(amount) + Weaken(amount) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm new file mode 100644 index 00000000000..dec67685007 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -0,0 +1,92 @@ + +/mob/living/silicon/pai/proc/fold_out(force = FALSE) + if(emitterhealth < 0) + src << "Your holochassis emitters are still too unstable! Please wait for automatic repair." + return FALSE + + if(!canholo && !force) + src << "Your master or another force has disabled your holochassis emitters!" + return FALSE + + if(holoform) + . = fold_in(force) + return + + if(emittersemicd) + src << "Error: Holochassis emitters recycling. Please try again later." + return FALSE + + emittersemicd = TRUE + addtimer(src, "emittercool", emittercd) + canmove = TRUE + density = TRUE + if(istype(card.loc, /obj/item/device/pda)) + var/obj/item/device/pda/P = card.loc + P.pai = null + P.visible_message("[src] ejects itself from [P]!") + if(istype(card.loc, /mob/living)) + var/mob/living/L = card.loc + if(!L.unEquip(card)) + src << "Error: Unable to expand to mobile form. Chassis is restrained by some device or person." + return FALSE + var/turf/T = get_turf(card) + forceMove(T) + card.forceMove(src) + if(client) + client.perspective = EYE_PERSPECTIVE + client.eye = src + SetLuminosity(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(src, "emittercool", emittercd) + else + addtimer(src, "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 = get_turf(src) + card.forceMove(T) + forceMove(card) + canmove = FALSE + density = FALSE + SetLuminosity(0) + holoform = FALSE + if(resting) + lay_down() + +/mob/living/silicon/pai/proc/choose_chassis() + var/choice = input(src, "What would you like to use for your holochassis composite?") as null|anything in possible_chassis + if(!choice) + return 0 + chassis = choice + icon_state = "[chassis]" + if(resting) + icon_state = "[chassis]_rest" + 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"]") + diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 6739008f48e..5db5e5fa3e7 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -125,21 +125,21 @@ switch(soft) // Purchasing new software if("buy") - if(src.subscreen == 1) + if(subscreen == 1) var/target = href_list["buy"] if(available_software.Find(target)) var/cost = src.available_software[target] - if(src.ram >= cost) - src.ram -= cost - src.software.Add(target) + if(ram >= cost) + ram -= cost + software.Add(target) else - src.temp = "Insufficient RAM available." + temp = "Insufficient RAM available." else - src.temp = "Trunk \"[target]\" not found." + temp = "Trunk \"[target]\" not found." // Configuring onboard radio if("radio") - src.card.radio.attack_self(src) + radio.attack_self(src) if("image") var/newImage = input("Select your new display image.", "Display Image", "Happy") in list("Happy", "Cat", "Extremely Happy", "Face", "Laugh", "Off", "Sad", "Angry", "What") @@ -166,7 +166,7 @@ pID = 9 if("Null") pID = 10 - src.card.setEmotion(pID) + card.setEmotion(pID) if("signaller") @@ -265,7 +265,7 @@ src.hackdoor = null if(href_list["cable"]) var/turf/T = get_turf(src.loc) - src.cable = new /obj/item/weapon/pai_cable(T) + cable = new /obj/item/weapon/pai_cable(T) T.visible_message("A port on [src] opens to reveal [src.cable], which promptly falls to the floor.", "You hear the soft click of something light and hard falling to the ground.") //src.updateUsrDialog() We only need to account for the single mob this is intended for, and he will *always* be able to call this window src.paiInterface() // So we'll just call the update directly rather than doing some default checks @@ -356,7 +356,7 @@ dat += "Prime Directive
" dat += "     [src.laws.zeroth]
" dat += "Supplemental Directives
" - for(var/slaws in src.laws.supplied) + for(var/slaws in laws.supplied) dat += "     [slaws]
" dat += "
" dat += {"

Recall, personality, that you are a complex thinking, sentient being. Unlike station AI models, you are capable of diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index c80fe727297202127578cc0b9c2bee5dfc3eb6ce..79baead32d66b7184b73f59c647e66d164dc662c 100644 GIT binary patch delta 9071 zcmX9?by$<%+aGLncZZ|9M5McsP)fQ>NweC4K6jnFG9K_&67iGSA-X|^rhY1pzV<$@-hQrLo&Z3=w?;Ex}pfISbkX(@_L(#9LA0q!1_Dp%JjlJBA`tN8Ec_r)qH}{1spJ2RQXE;$vJ|bBo zKE2x`?CxNEX)Sy1y%$X4R~EZ?^Z11`&7QOQUo98UoWt^q`tYYwbtpC(Zpi%dvo*i@ ze&|llMg8Ze63yc~$k)}RZ*Nd+f;bDtiXWsZA{KjJe>^VGO~qp3nWY+L6U})iEU=Jf zM=)lzj+2=>un@IuWJ^25F-Dh=Xw8t?*6~qwgw6YVQMr4W zO^WPe>lXU)mWE-Ia2H}y8(@}S$m_=b{={oQSkSqZ8J`#vi?4gzmfxiSk=Ger@MF=y zoqAU%PRSOvUveAIFgBnnlG)H}VWA$FIh@RJPEVIm;HGxjD?(J@kk(FoI=CYdWu8Hh z9(0_rAK6c`PxOT@)H@yD4O31LNjLDT8*-XREU)`?aey&7F+%D{#L>?{szF=Ifll?y z_g8|yxSo5eiQv~#!D8iFATaP$)d;c2v>jnG57G4u3*M|pq$#tSU!`vJQ-6g6O+5!n zqyyV9_7^Ov_Lbo1C%v^AdsIy&hcTPjX~mOe+Gsl#=wNgBnK-b`&>YurRkhzvVYO45 z+%R~{b6E2)Ht8q}yJ#&W_$S9B`=*Gi`d#!30B={pvjl&t=69nY`rR*JH6@uT4TCt^ z@9rX=8ZD1ePSx!byO@jh#7gR0uZgo5rnZQL7fXq$jk>2xS6pZ<(Kg;zXPcg?MOk2~FbjRCU86ssH|F zz`WExRS8yFY86O{lo zZ{shqC8nM$oh~eVrMWMoLPt8SI(*e}O~u7JCt#?N+gshrefjQ!{I-z<`+^q7+-i@9 zXe&KL*vzW}%0|T!G}ZR1kUhkuS2(c1&_R^Dt@dfsf^wZW#0=jNsFiHNOh#BcPAS4V zEu_Sp#fANjR^1?*`t$E`FR#(f!h z;N*KhBM4*vtdH9g2*hfxv6-3SZxPJvG`*K!JDeG)KYTrjpRwCX8(oo<7k1EjHrDYI zQ)j23HS&j{*Q7OP{N!DQFm!aH%wMH-!_ zD~e!YJ7p2rGvqZxPh+A8teE63Mfu3Qz9B&KF$+RFCyk}6}^1#}&Db7H2)J7k&i zx-J2Ji?P&q+m!dNOdB*-Yb;rkj6Vfn19|HkT)du;^lzVdY)OxWTZ!-(m0BN#U{IVB!lWlsHimhJeCZdc zv2UjTvG=mYY!YX#Zs50AjU#3g!6@0?;-|VsA_P9YSpkGnLrLYN<6BL;D*72s@7(mPK}|Y3u2hbP59A@y7F`nGqxZf zIfaRY@%|^qG#8Ucv;Lh@w~`hjxY|NyEb)m7+L>NC`C-8;9bLh}4-z)H+sp+>O_oRt z>=+AdjAjdL%v~Ey=G|r$XH0cWNaPPGnCycr0VtW}$9eyEZ1GR>OML#H(yYbW7d5jj zUhG9{y`hX~HrB!XI@ah~^|U#AX;5eJjM(t>ywFu=Gsz(}Q+ zhr4?vwgr}PGFFuD5DM(WAy_da*?RvI76p#F+k4!hV-fqD29~bQ!ZKFj{Y1iS`l|f;ga$s9)-CL8| z?r8_2=|#{xl*)8%=u?Q79_V6zaP&2S_)i_72^{}8^_8J@9cxuEH=!Ti_mmW}!aXu_ z5sH@2lMb877cK$-ckfCANYd{p++gJH_ONvR_x5(_Z6b@I`T`@j@VI>K+Kip1K4(bO z`~09@VborC6K%b`t4XKR)rGl7eq8<~oy4feT$SZO}(U2OIJX=);2ylB@Ofpxz3=cgVJ5TB5sTCYkO?W@zbOpK; zmXUG4qU4l~`KJCxZ?kYS4e@Kfc98n3_Geh2t&nx~+#AHG$tdSzR$M-sEr%8a-e4CM z3`UTuu`oAsVY}(<;xg%dR_K@?E0~EW9l)Qq!#di`lo;msKVIf(vk+`(Y%FMLp&b|) z@RrIwH?Xis#3F!Df3K>VnEvvq1Mymnz#hE+!LnpNUG~M3WosC1`Q#2pofOEi@%}e4 zg?z%3&Wf)$_aMI9=DAr;S<~eJKNbD!oo<{hf%Blw)1c0h&XA$P)7PaXDX%x3Wh%nL z%HbqLM0PGNJx|Y+RfIYawrGx;;#qQb@$B;Q*Y0*De*J>{nk4j<%+)=M0YB5f1CM}~@5aIO{hdS4p!P#ur8ZupOw^QXvA0I4U z5rP!0AeRrnf_XKDlFLWYcOYEdm;1d&owB)N)!_6JI6g9J=#Y#l4a?6zE4&H@+kXM6@#Lv_R1{6vzLp52HWuJdyWDl7sU$yf42#Il* z-~HW&4IlrRnUnl~$$K&S_DSUi`V{gqIv`aaqfF|Mhz7Ej)dh|t^Cm6gv*%yYnP;fh z@V?FJG9Via&wUvgC&2pDybY8*Q{K~IRb71T<(G+QCD7InZ{+SVTk!2Cc)}U>Ec8V8 z=mf>ss7XTY1xH!tX5Z{7H*5e_2ep>1oTtlbf2**ol8VTQi;LT7W+?L?_{5^O>FF-y z9THs02!liWbgtOSQ_l6B%unMA3NR6a=PP+ zVIK6sNcT{jljC_3e){|4=_cvCPiHoL&aU@lRRVfu7!*&QGNtz8lEfN8 z;zbV*$|_abe{|XXD_pN1ojz@~u5-t4$r(q;%=vuMM`uo}LLVaYVk6O@AK4>FR)6u~ zQxXv8Msv>q;f#IPAFi+u=H``En5(vyxD5OF@#E(3Fs_P$ijEFpbWF@n@wJGENNhqv z}r;B9p42InWC{q%G<3+*_g zOqpStA%=u9ziuxal;Q%D1`FrAs8akfPoHtc-`k{q`w}`bGNPpWISjdz5qh*_kXVA- zUhq$sIPA9nEk^XLj_*EWeXqIBAkmD~q5g(IzfLC~7vfV@PWcuF3t#5w>PBWTV`ML_ zTii6bG~t>xd*<#7c5ct*U2Ix>L){1&-a5w?#DDi5AnDg4E0O?}P|8=lSg3Bq>gf%2 z8Q97Wy%sRX>IBC&7w))<`XsXG+$H8klF29PtLPizv$B=``gOWsDxP{YU#koPgjqLg zyfiR)0+Bm|Qe=Z;dsXyl+PtZq4Z<7e^BP`GJR0;7C z)aH*a<078>@Gvm->7ugA>%F0a`KkjC^49wAQxH9sfOiqP`Es8c-^~4JZl;-;nX&Wr z74z}+HA2W&6kl%}i2QA5d(07l9d=oyfQq(+7mgqyBR| zMYcwtBf=+b5@eN|JPKQm(Q9&AWyzFozrk zMK)xX3AF?J^5x6oM(*yj{OZom&Ich$RTk!l)sAr+n}TYN6Xq1CuF>lJ*~6cg(jmT) zI&6V-lS>hoWrTOEY|7^fSZ*Zbjo=u&@JQzlxefl56F6Me$43-1js-A0KCX(EB{eOr zpIV+jE2DE8gXl~wXt$HCgB$m~WEVff9?hhDp z4c|J!D66QTM4?bbSzD0MK#;SlO&0)p=T!fsnK=HFv;XG02Mo~phy!@uKrw#?`4NO7 zDU0YnVKynOvGk5LA4qZ}qa3#E?fxAB|B1uta@@L?7Y>fK41T=7QKnY>7kVZxjl#eh zGr*`JV07%XjKUiyj5q(i<4-feCHphTjrRu#LdZ#ff4DQ?2~X6CSnUX`*EckD_$@k{ zVHKna0F)oe-z@u{TVprf5&$5_5!L1L^A^m^(np0`f+IJ3)oJP)OvT9?%I0R^pA{AS z>O87Wb^)6d~EMhUA$DyKYTF zNb+H>o-D@?oSnI3h}DjBbT;D?&}envxd&hmPr2xkoONlDZQ~~c*&)xH62ReMSYIKiqT!0h?P}Q(>+KD#j5^ z9dNoLAcD0}7k?;}a|ck`bl9T~k~EI$0Obvll^`&{TNrky5HPO5kfF&3NtSsIQ9aVp zdV|A@0NTx%d_DF-1X(l=x9J&hpHiW=wkXF_W&XdLYlCVcdl7cB>5qas{ZCuV>XUFW zL!czq7}@4>N$666zpHw-@DbzJrsKA@>-d zGy#5yH7}J11k8f19h(&M-lpfhw=cur!^6-)*|P-e*wCMPF#-{Q?}dfH($Z3m7ca0_ zJHN>?lSoNP0dgc)^ZWXgQUX`fQd5)JyJCHBo`UzLyS0A93b$j0?6lOdmn#Y`aZB!` zhEBqIZK7~RmF@tG%-`p%GddWNNF<=|1|X6S=KdxHQP_xO0eC-Ww6nJ_?3r--WXmn9 zaZZO1`?`4-Fe(Blh+|Rs38<68%l40yz~OY4Q(-_z$^SQT(v`=`>8*7;@#9vU=O9pd z?Xiqgi_hevX6T@b@mqmON?U7EFW9ef|57Bna^&S|@u9z-nR!lHcvGqB}ZdQt(&-rvWn0eYRtH^8Sf?#&Z4sesS;V zN|G-x93XrFl{npzg+L2(dms;H-5#6~^p>+|ZdZU%Cd#v@hN%(^36VuF_YdJm41lL;_CW91dEc#>D(-?eVb$xh4$VI zU=j3cLQt`_6ALxgCl`WHZ}o^KE8t$uvER+~o?;6F zt7_Q~1~85b3G*?+>)aZ$Aw&^1_&nXau4IU;Z;j?>+i4gkA29wa8B<1d6 zX?aeajWjd6!Our z?>S~1xfQ51j&V?hTKd&b-A2FW3sn9Zz$}c2m5@Dz`4L8 z8re;pNuF?xa2?%rsvqL0C@s*re2H#ud_zM+Esb}S1Y74Lay(#XNM0S=3FNUhOlAEc zPo6v{g%_?KBsR?x_d8RRLzP;=?HLe{Vy{h$tXMs~Oa_wvFa$?eas6=lyC;C(6qhro zX#FesR9v5`(N`;}n+vJr7#z{EsR#QjL!mt&oikp7ixSP5o9q1b!=8k>6GP3z|7(u!?c1~H<-?Q{A*iLa|N07( zG~_hMl?PDzL|j5UPX(%Fm77BUOH8>*H720S zsx!XsE~J28-gAR1*Y>K-ySbZ8s#`GINJ)T4PMpWrE1KRTqBFU zlh4F(9rBx9zlKs@+qDQK?NlAq{*HR#=vr#}HDBm)&kDWPG>Jln0JfNr4z6LHGoa2l zMpo<-JkeKoI@o@J;T01YKa6Z7IMsw=jt>rcTYdMo?PVCy(+7#^hjzWr@Wey0e}w;u zYfhw#)i%3EaI=$eZktYIbq8`|8~Yd-F-9rh13d?bWOBtq^#biw_3{<9#W8#~PO4_0EeOn0|5Xml@d{JvDOVVCdYD`~F%Vxb7eP*tw6B^y(GG(dpXa3sEDS_LXA^HMm&zQ5Ph?vO$j&TBPFLYSD&mY-kwE z!}BsE^kR3M%;bl(|50+e&Ut$_#njL>d`Vzo$pOY(`W1H}fB70OBJ{$ZuI$c<0z;AdwWj*8q=&ItYi&_~+Z(AmzvY^0G4WFRRP|ZazLG#~tl5d(+3V zGTsyw^i8k;6f1^;lT%3uaf2fOEtd)_J4S=!DD~NNR&RLdSFZ&yJx4@YSsC=;&rek2 z-1Ia^JnZ)JfIR}Yk5x)q`mKO-+TTW@APjb`J)T??o1{PlE3PF-AUqR-&?N81oj*wz zo+BlLCa}nD4?tmsNpgQB)cBsNfn!xZqSh*$MPKdnig zVbJ)S3oA#k#;)UO0nRpm>SZ$2c%>pf+JarqHl?Rl!z?D?JbZkZtZ^)}gX<`sB{{^p z%kw|1xOSAq>jv>G5v-6{7u#hig#vUDuurk81>PT9Z$T=V{o1(~J}dlkLlN74Vzt%m zzUq#TkI%ob7R!o@Mmxjf4sU?!p@H49vuV5C0m~j=&2*GAY=T ze|Sro6#A(z$`TuP9@yX$Hhmr%;X&{feUf@_?Uu@Y8FE?^a5}m1y)Q6H<~){LLB-jb z3k?M=Dq>$j`xqKdI0la^9C1o>g50L~s4 z_8B2))1ZBg%(3qnYmiIEJP!4eE8^;bl8P!$Qc@CKOq>=4drMx3ik=KZOJ3w~6RMFy z(B~;)@%X}d`K;^M_i!dp?#V!!Tts8^0BRs)2_<1M(UExh<$#-)7fkj)pQZp=V*b+0 zJWQjkybCKNjlaPGc*duJDl?zy+5%cpFsmj zO??4EjYCAH3h$VSi;IgR>M$XG&+%Xt@R2WkPvAr)yZ3LUzKL0Usv32J*E_8oIa#q) z&k<}igwthyC>JmhNf$2S%ZO!d;1&|1@#;c4rDtR$w7)+o0q3J{eT8 zeccN^5tSSP?C^&4``hU!4o)TZp?mMi{)q2BXUKaNF*fE$sK<~Z5vK#u(NRHX#!2wi zS%6Hy*#OM}hw6Sb9usFsTYLM|$_kOfImogjfb6L4b;K_e!gGD%eEk;v$aTCiqkGWR z>c^et752F++e8{n`*)FF*Zk8qathT_c{DZA8YACw8U))~fuoz_hnrx1-*zN3A%`Zy z&Vj^r@Oojy{o!yE1g7NvwTKJdu1y8cL_R!(P0!Ba2Mr|U(W}S=y&?5jKCPjxf_oob zT-5w0mlL@fNNWTv>*%oH=iy0#!QpW4_LcLg)m7q$puoUZo`Tw=BX>WRHQD2o++2_7 zK(zlT(@EfHXoFmBqYyj-0#u31U7L|4pQ9-s?AY1aS)V|jVANCW*_1q|;K6yhexE~g zzlYj53n;p9W_IYxiu)jhO}a#pfG(o|3O-uA(bXged1BU)8nA%Q0otsU%fzu7kVeY@ zD|#%x!ze0R|J|8cjkg$b?f=@c<`2V1-7)@@7ThY~JW!mMK5THeC4Wc_h+9IXZwgDft+}wE4 zR!K=tX5Bdn2%nEKg$8aVXY+bsADjh{{$YxoN0>sdp(9&>p2MrZb#Fi$l=ds%;_BI%Tp#_0O%=lqkl4ikE=uBF~PBUCF} zSFtS7HVIP}ZO3N;h9>WdOG-w{dlD63BO+|^BFr*=rq5AGYez5RB6v(>%Jo$MBr)t^ zrrZSe`3)wufEj41TDSLlo@X8s_6|RRT7aHH$!v=dj5Y~c%HfF#HFP%=l6?9E7rcnu zN~|9m+DW=E92CLN!kzw&b=JBXfdP2yU`j2fGs(`$IkJZIw>k~zv{LSrcjw6dv+=E9 zCZ^lTSVXPPEB77^n$X(XinvxL`G?rD;;DJ5K(6fB%+NHXy8&4uk&Rkjw&)*78r>nE z_$C=iKqEM;Zg0LCawwW zPceBIH~Q<}_V?Qbsd2u1_3G{QMK@TIgR0YHrc*RTo()P;5AT}Bd%}j@pVc3Gkl6cS z1SoeS$jwK(&zxq34 z7ZfD5>?y$ppg<30Mfq*CWn!jCr>wO!lo z;Bw`sG9I9X>(|dwl|?N@Ua6qYp$WEcSEM8ro_w?!RpEW1DzLDluiL%8+5h$$`dw*H z3D=t-2L$1@;Dwg+0jeS<-Tw6%MX2AxWT0gyt-ZQBj#cQ@Omdi$!OAWL2PMa_(n-m|M$D3@h%Y8k-xIKD$kMZ{lAX{=>Oy8jRsD zVSkdNvwn+B%}jmFLoiFiK!B>?YBoGghQxB>p?BCB1~J!?^@kS62;f?KFzY_V)I-aF#g$06o2p zU{xRmU0z<=*w_Fv^sLp4jj4lzf+qj``4?NqzGZQCC)d~2C4c$C(LMkB0ov$Zt){FT z*%SQkpF|0HoxwNpOHCdW)Bj>T>0&aD3nLhg6<>?j^7o+kba=iJLFFtfD_gdOxFf#? y8@H=nb2Wtu(9_d{td6*0;q1{GcW8ryh8}?&h=AUjMMq@-`qNa^RjE?4iTFR%0B@K8 delta 7195 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 XwIMWA$YiGiVIFl=9hG_|Tj>7*Q_8S# diff --git a/icons/mob/pai.dmi b/icons/mob/pai.dmi new file mode 100644 index 0000000000000000000000000000000000000000..94fb2ee6e71c655aa3a30999726aef52d837d4cc GIT binary patch literal 29273 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 literal 0 HcmV?d00001 diff --git a/icons/mob/screen_ghost.dmi b/icons/mob/screen_ghost.dmi index 9d8d790797cac93e1acd3d7eb073f2498bcba280..6519d00aa978e24b65fe47dc5cde86aa5b0d3780 100644 GIT binary patch delta 5120 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 delta 4727 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