Replaces intelliCards with intelliCores.

Sprites replaced with a black box that could conceivably contain a brain, while obscuring the details. Complete with screen and convenient handle.
Usage text modified to make sense for MMIs/posibrains, instead of just drone brains (e.g. downloaded → transferred).
Description added to the new intelliCores. Made into normal-sized item, similar to MMIs/posibrains.

This is an alternative to either changing lore to allow for brain uploading, or changing code to allow for choosing multiple AI brain types.
This commit is contained in:
PrismaticGynoid
2017-07-12 23:26:58 -07:00
parent e8b96b12f5
commit ad6e395ae2
13 changed files with 36 additions and 31 deletions

View File

@@ -1045,7 +1045,7 @@ datum
return 20 return 20
AI AI
steal_target = /obj/structure/AIcore steal_target = /obj/structure/AIcore
explanation_text = "Steal a finished AI, either by intellicard or stealing the whole construct." explanation_text = "Steal a finished AI, either by intelliCore or stealing the whole construct."
weight = 50 weight = 50
get_points(var/job) get_points(var/job)

View File

@@ -202,8 +202,8 @@
transfer.loc = get_turf(src) transfer.loc = get_turf(src)
transfer.create_eyeobj() transfer.create_eyeobj()
transfer.cancel_camera() transfer.cancel_camera()
user << "<span class='notice'>Transfer successful:</span> [transfer.name] ([rand(1000,9999)].exe) downloaded to host terminal. Local copy wiped." user << "<span class='notice'>Transfer successful:</span> [transfer.name] placed within stationary core."
transfer << "You have been uploaded to a stationary terminal. Remote device connection restored." transfer << "You have been transferred into a stationary core. Remote device connection restored."
if(card) if(card)
card.clear() card.clear()

View File

@@ -18,8 +18,8 @@
return return
// Transfer over the AI. // Transfer over the AI.
transfer << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here." transfer << "You have been transferred into a stationary terminal. Sadly, there is no remote access from here."
user << "<span class='notice'>Transfer successful:</span> [transfer.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." user << "<span class='notice'>Transfer successful:</span> [transfer.name] placed within stationary terminal."
transfer.loc = src transfer.loc = src
transfer.cancel_camera() transfer.cancel_camera()

View File

@@ -41,7 +41,7 @@
*/ */
/obj/item/part/computer/ai_holder /obj/item/part/computer/ai_holder
name = "intelliCard computer module" name = "intelliCore computer module"
desc = "Contains a specialized nacelle for dealing with highly sensitive equipment without interference." desc = "Contains a specialized nacelle for dealing with highly sensitive equipment without interference."
attackby_types = list(/obj/item/device/aicard) attackby_types = list(/obj/item/device/aicard)
@@ -81,8 +81,8 @@
return return
// Transfer over the AI. // Transfer over the AI.
transfer << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here." transfer << "You have been transferred into a mobile terminal. Sadly, there is no remote access from here."
user << "<span class='notice'>Transfer successful:</span> [transfer.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." user << "<span class='notice'>Transfer successful:</span> [transfer.name] placed within mobile terminal."
transfer.loc = src transfer.loc = src
transfer.cancel_camera() transfer.cancel_camera()

View File

@@ -1,9 +1,10 @@
/obj/item/device/aicard /obj/item/device/aicard
name = "inteliCard" name = "intelliCore"
desc = "Used to preserve and transport an AI."
icon = 'icons/obj/pda.dmi' icon = 'icons/obj/pda.dmi'
icon_state = "aicard" // aicard-full icon_state = "aicard" // aicard-full
item_state = "aicard" item_state = "aicard"
w_class = ITEMSIZE_SMALL w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
show_messages = 0 show_messages = 0
@@ -57,12 +58,12 @@
var/user = usr var/user = usr
if (href_list["wipe"]) if (href_list["wipe"])
var/confirm = alert("Are you sure you want to wipe this card's memory? This cannot be undone once started.", "Confirm Wipe", "Yes", "No") var/confirm = alert("Are you sure you want to disable this core's power? This cannot be undone once started.", "Confirm Shutdown", "Yes", "No")
if(confirm == "Yes" && (CanUseTopic(user, state) == STATUS_INTERACTIVE)) if(confirm == "Yes" && (CanUseTopic(user, state) == STATUS_INTERACTIVE))
admin_attack_log(user, carded_ai, "Wiped using \the [src.name]", "Was wiped with \the [src.name]", "used \the [src.name] to wipe") admin_attack_log(user, carded_ai, "Purged using \the [src.name]", "Was purged with \the [src.name]", "used \the [src.name] to purge")
flush = 1 flush = 1
carded_ai.suiciding = 1 carded_ai.suiciding = 1
carded_ai << "Your core files are being wiped!" carded_ai << "Your power has been disabled!"
while (carded_ai && carded_ai.stat != 2) while (carded_ai && carded_ai.stat != 2)
carded_ai.adjustOxyLoss(2) carded_ai.adjustOxyLoss(2)
carded_ai.updatehealth() carded_ai.updatehealth()
@@ -93,22 +94,22 @@
/obj/item/device/aicard/proc/grab_ai(var/mob/living/silicon/ai/ai, var/mob/living/user) /obj/item/device/aicard/proc/grab_ai(var/mob/living/silicon/ai/ai, var/mob/living/user)
if(!ai.client) if(!ai.client)
user << "<span class='danger'>ERROR:</span> AI [ai.name] is offline. Unable to download." user << "<span class='danger'>ERROR:</span> AI [ai.name] is offline. Unable to transfer."
return 0 return 0
if(carded_ai) if(carded_ai)
user << "<span class='danger'>Transfer failed:</span> Existing AI found on remote terminal. Remove existing AI to install a new one." user << "<span class='danger'>Transfer failed:</span> Existing AI found on remote device. Remove existing AI to install a new one."
return 0 return 0
user.visible_message("\The [user] starts downloading \the [ai] into \the [src]...", "You start downloading \the [ai] into \the [src]...") user.visible_message("\The [user] starts transferring \the [ai] into \the [src]...", "You start transferring \the [ai] into \the [src]...")
ai << "<span class='danger'>\The [user] is downloading you into \the [src]!</span>" ai << "<span class='danger'>\The [user] is transferring you into \the [src]!</span>"
if(do_after(user, 100)) if(do_after(user, 100))
if(istype(ai.loc, /turf/)) if(istype(ai.loc, /turf/))
new /obj/structure/AIcore/deactivated(get_turf(ai)) new /obj/structure/AIcore/deactivated(get_turf(ai))
ai.carded = 1 ai.carded = 1
admin_attack_log(user, ai, "Carded with [src.name]", "Was carded with [src.name]", "used the [src.name] to card") admin_attack_log(user, ai, "Extracted with [src.name]", "Was extracted with [src.name]", "used the [src.name] to extract")
src.name = "[initial(name)] - [ai.name]" src.name = "[initial(name)] - [ai.name]"
ai.loc = src ai.loc = src
@@ -119,9 +120,9 @@
carded_ai = ai carded_ai = ai
if(ai.client) if(ai.client)
ai << "You have been downloaded to a mobile storage device. Remote access lost." ai << "You have been transferred into a mobile core. Remote access lost."
if(user.client) if(user.client)
user << "<span class='notice'><b>Transfer successful:</b></span> [ai.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory." user << "<span class='notice'><b>Transfer successful:</b></span> [ai.name] extracted from current device and placed within mobile core."
ai.canmove = 1 ai.canmove = 1
update_icon() update_icon()

View File

@@ -36,8 +36,8 @@
activates_on_touch = 1 activates_on_touch = 1
engage_string = "Eject AI" engage_string = "Eject AI"
activate_string = "Enable Dataspike" activate_string = "Enable Core Transfer"
deactivate_string = "Disable Dataspike" deactivate_string = "Disable Core Transfer"
interface_name = "integrated intelligence system" interface_name = "integrated intelligence system"
interface_desc = "A socket that supports a range of artificial intelligence systems." interface_desc = "A socket that supports a range of artificial intelligence systems."
@@ -168,7 +168,7 @@
if(user) if(user)
user << "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>" user << "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>"
return 0 return 0
user << "<span class='danger'>You purge the remaining scraps of data from your previous AI, freeing it for use.</span>" user << "<span class='danger'>You purge the previous AI from your Integrated Intelligence System, freeing it for use.</span>"
if(integrated_ai) if(integrated_ai)
integrated_ai.ghostize() integrated_ai.ghostize()
qdel(integrated_ai) qdel(integrated_ai)

View File

@@ -347,7 +347,7 @@
character.loc = C.loc character.loc = C.loc
AnnounceCyborg(character, rank, "has been downloaded to the empty core in \the [character.loc.loc]") AnnounceCyborg(character, rank, "has been transferred to the empty core in \the [character.loc.loc]")
ticker.mode.latespawn(character) ticker.mode.latespawn(character)
qdel(C) qdel(C)

View File

@@ -659,9 +659,9 @@ other types of metals and chemistry for reagents).
sort_string = "VABAI" sort_string = "VABAI"
/datum/design/item/intellicard /datum/design/item/intellicard
name = "'intelliCard', AI preservation and transportation system" name = "'intelliCore', AI preservation and transportation system"
desc = "Allows for the construction of an intelliCard." desc = "Allows for the construction of an intelliCore."
id = "intellicard" id = "intellicore"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
materials = list("glass" = 1000, "gold" = 200) materials = list("glass" = 1000, "gold" = 200)
build_path = /obj/item/device/aicard build_path = /obj/item/device/aicard

View File

@@ -0,0 +1,4 @@
author: PrismaticGynoid
delete-after: True
changes:
- tweak: "Replaces intelliCards with intelliCores."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,5 +1,5 @@
<!-- <!--
Title: inteliCard interface Title: inteliCore interface
Used In File(s): \code\game\objects\items\devices\aicard.dm Used In File(s): \code\game\objects\items\devices\aicard.dm
--> -->
@@ -89,11 +89,11 @@ Used In File(s): \code\game\objects\items\devices\aicard.dm
<td>{{:helper.link("Disabled", null, {'wireless' : 1}, data.wireless ? null : 'redButton' )}}</td> <td>{{:helper.link("Disabled", null, {'wireless' : 1}, data.wireless ? null : 'redButton' )}}</td>
</tr> </tr>
{{if data.flushing}} {{if data.flushing}}
<tr><td><span class='notice'>AI wipe in progress...</span></td></tr> <tr><td><span class='notice'>AI shutdown in progress...</span></td></tr>
{{else}} {{else}}
<tr> <tr>
<td><span class='itemLabelWidest'>Wipe AI</span></td> <td><span class='itemLabelWidest'>AI Power</span></td>
<td>{{:helper.link("Wipe", 'radiation', {'wipe' : 1}, null, 'redButton')}}</td> <td>{{:helper.link("Shutdown", 'radiation', {'wipe' : 1}, null, 'redButton')}}</td>
</tr> </tr>
{{/if}} {{/if}}
</table> </table>