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
AI
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
get_points(var/job)

View File

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

View File

@@ -18,8 +18,8 @@
return
// Transfer over the AI.
transfer << "You have been uploaded to 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."
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] placed within stationary terminal."
transfer.loc = src
transfer.cancel_camera()

View File

@@ -41,7 +41,7 @@
*/
/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."
attackby_types = list(/obj/item/device/aicard)
@@ -81,8 +81,8 @@
return
// Transfer over the AI.
transfer << "You have been uploaded to 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."
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] placed within mobile terminal."
transfer.loc = src
transfer.cancel_camera()

View File

@@ -1,9 +1,10 @@
/obj/item/device/aicard
name = "inteliCard"
name = "intelliCore"
desc = "Used to preserve and transport an AI."
icon = 'icons/obj/pda.dmi'
icon_state = "aicard" // aicard-full
item_state = "aicard"
w_class = ITEMSIZE_SMALL
w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT
show_messages = 0
@@ -57,12 +58,12 @@
var/user = usr
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))
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
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)
carded_ai.adjustOxyLoss(2)
carded_ai.updatehealth()
@@ -93,22 +94,22 @@
/obj/item/device/aicard/proc/grab_ai(var/mob/living/silicon/ai/ai, var/mob/living/user)
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
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
user.visible_message("\The [user] starts downloading \the [ai] into \the [src]...", "You start downloading \the [ai] into \the [src]...")
ai << "<span class='danger'>\The [user] is downloading you into \the [src]!</span>"
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 transferring you into \the [src]!</span>"
if(do_after(user, 100))
if(istype(ai.loc, /turf/))
new /obj/structure/AIcore/deactivated(get_turf(ai))
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]"
ai.loc = src
@@ -119,9 +120,9 @@
carded_ai = ai
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)
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
update_icon()

View File

@@ -36,8 +36,8 @@
activates_on_touch = 1
engage_string = "Eject AI"
activate_string = "Enable Dataspike"
deactivate_string = "Disable Dataspike"
activate_string = "Enable Core Transfer"
deactivate_string = "Disable Core Transfer"
interface_name = "integrated intelligence system"
interface_desc = "A socket that supports a range of artificial intelligence systems."
@@ -168,7 +168,7 @@
if(user)
user << "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>"
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)
integrated_ai.ghostize()
qdel(integrated_ai)

View File

@@ -347,7 +347,7 @@
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)
qdel(C)

View File

@@ -659,9 +659,9 @@ other types of metals and chemistry for reagents).
sort_string = "VABAI"
/datum/design/item/intellicard
name = "'intelliCard', AI preservation and transportation system"
desc = "Allows for the construction of an intelliCard."
id = "intellicard"
name = "'intelliCore', AI preservation and transportation system"
desc = "Allows for the construction of an intelliCore."
id = "intellicore"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
materials = list("glass" = 1000, "gold" = 200)
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
-->
@@ -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>
</tr>
{{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}}
<tr>
<td><span class='itemLabelWidest'>Wipe AI</span></td>
<td>{{:helper.link("Wipe", 'radiation', {'wipe' : 1}, null, 'redButton')}}</td>
<td><span class='itemLabelWidest'>AI Power</span></td>
<td>{{:helper.link("Shutdown", 'radiation', {'wipe' : 1}, null, 'redButton')}}</td>
</tr>
{{/if}}
</table>