From c21f1c4d204f0afc15b850fe96030c74126f37ec Mon Sep 17 00:00:00 2001 From: "n3ophyt3@gmail.com" Date: Tue, 21 Sep 2010 18:37:25 +0000 Subject: [PATCH] Dead AIs can be intelicarded again. This does NOT return them to a functional state if they have been destroyed, it is simply a framework for the eventual ability to make new AIs and/or repair damaged ones. Added an icon state for intelicards with a dead AI. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@133 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/objects/devices/aicard.dm | 54 ++++++++++++++------ code/modules/mob/living/silicon/ai/death.dm | 4 +- icons/obj/pda.dmi | Bin 3213 -> 10168 bytes 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/code/game/objects/devices/aicard.dm b/code/game/objects/devices/aicard.dm index 7fa1c37e8e1..5a91f323b70 100644 --- a/code/game/objects/devices/aicard.dm +++ b/code/game/objects/devices/aicard.dm @@ -10,37 +10,39 @@ attack(mob/living/silicon/ai/M as mob, mob/user as mob) if(!istype(M, /mob/living/silicon/ai)) return ..() - // ** Bugfix for r74 ** - if(istype(M, /mob/living/silicon/decoy)) // Don't branch this out into a separate attack(), it overwrites the first definition. - M.death() // We typecast in the function's arguments, but it doesn't actually typecheck - user << "ERROR ERROR ERROR" // (beyond, I suspect, the big four ATOMs), typechecking for subtypes of one of the ATOMs needs - return 0 // to occur in the function itself. -- TLE if(src.contents.len > 0) + for(var/mob/living/silicon/ai/A in src) + // Already have an AI - if(M.client) - user << "Transfer failed: Existing daemon found on this terminal. Remove existing daemon to install a new one." - return - else if(M.stat == 2) - user << "Transfer failed: Unable to establish connection." - return - else - for(var/mob/living/silicon/ai/A in src) + if(M.client) + user << "Transfer failed: Existing daemon found on this terminal. Remove existing daemon to install a new one." + return + else if(M.stat != A.stat) + user << "Transfer failed: Unable to establish connection." + return + else M.name = A.name M.real_name = A.real_name if(A.mind) A.mind.transfer_to(M) M.control_disabled = 0 M.laws_object = A.laws_object + M.oxyloss = A.oxyloss + M.fireloss = A.fireloss + M.bruteloss = A.bruteloss + M.toxloss = A.toxloss + M.updatehealth() M << "You have been uploaded to a stationary terminal. Remote device connection restored." user << "Transfer succesful: [M.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." del(A) + if (!M.stat) + M.icon_state = "ai" src.icon_state = "aicard" - M.icon_state = "ai" src.name = "inteliCard" return else - if (M.real_name != "Inactive AI" && M.stat != 2) + if (M.real_name != "Inactive AI") var/mob/living/silicon/ai/O = new /mob/living/silicon/ai( src ) O.invisibility = 0 O.canmove = 0 @@ -50,16 +52,31 @@ O.aiRestorePowerRoutine = 0 O.control_disabled = 1 // Can't control things remotely if you're stuck in a card! O.laws_object = M.laws_object + O.stat = M.stat + O.oxyloss = M.oxyloss + O.fireloss = M.fireloss + O.bruteloss = M.bruteloss + O.toxloss = M.toxloss + O.updatehealth() if(M.mind) M.mind.transfer_to(O) src.name = "inteliCard - [M.name]" M.name = "Inactive AI" M.real_name = "Inactive AI" M.icon_state = "ai-crash" - src.icon_state = "aicard-full" + if (O.stat == 2) + src.icon_state = "aicard-404" + else + src.icon_state = "aicard-full" O << "You have been downloaded to a mobile storage device. Remote device connection severed." user << "Transfer succeeded: [O.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory." + attack(mob/living/silicon/decoy/M as mob, mob/user as mob) + if (!istype (M, /mob/living/silicon/decoy)) + return ..() + else + M.death() + user << "ERROR ERROR ERROR" Topic(href, href_list) @@ -101,7 +118,10 @@ dat += "Laws:
[laws]
" - dat += {"Wipe AI"} + if (A.stat == 2) + dat += "AI nonfunctional" + else + dat += {"Wipe AI"} user << browse(dat, "window=aicard") onclose(user, "aicard") return diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 305e6fcd2a0..73a6b1f06b1 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -19,9 +19,7 @@ spawn( 0 ) O.mode = 2 if (istype(src.loc, /obj/item/device/aicard)) - src.loc.icon_state = "aicard" - src.loc.name = "inteliCard" - src.loc = O + src.loc.icon_state = "aicard-404" if(ticker.mode.name == "AI malfunction") world << "Human Victory" diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 3af9578ddb932099e1a37ca89be31c2c1c274183..aacced9005c1642dbd8283b0add0e396b756f6c5 100644 GIT binary patch literal 10168 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 SP^jRG3YeQ%8&{J(;{OXEdgp}z