mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
[READY FOR REVIEW] ports AI shells from Hispania and /tg/ (#32072)
* initial commit * dme include * add shell actions * debug round 1 * debug round 2 * cleanup * better comment * cleanup? * fixes * fixes 2 * cleanup 2 * cleanup 3 * adds comments from wich repo they were ported * updatehealth change * notify to define * tguification * spannening * BORIS fixes * BORIS fix final * better comments * icons * radio fix, tg lable, status order * PDA, syndie key fix * soullink port completion * possiblle uid fix * channel redundancy removed * upadtehealth fix * notification de-duplication * cleanup * null checks * more null checks, updatehealth fix, better destroy() * more spanenming * cell fix * null checks, better updatehealth, radio fix? * mech fixes * removed redundancy, fix else if chain * Apply suggestions from code review part 1 Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com> Signed-off-by: Kameň <167246105+StoneyFox29@users.noreply.github.com> * Code Review part 2 Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com> * I forgor Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com> * Post review runtime fixes, removed more annotations, bettered some comments * verb un-funkening, possible CI fix * null check order, comment * SPAN, minor fix * CI part 2 * CI part 3 * CI part 4, made on iphone * Apply suggestions from myself Co-authored-by: Kameň <167246105+StoneyFox29@users.noreply.github.com> Signed-off-by: Kameň <167246105+StoneyFox29@users.noreply.github.com> * soulinks, removing a verb, module reset changes, * better documentation, name changes * updatehealth improvement * spawn_shell fix * fixes shell_spawn fix * attack chain something, merge conflict * grammar, BORIS module improvement * shttle fix, early return * formatting * BORIS comment * Apply suggestions from code review Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com> Signed-off-by: Kameň <167246105+StoneyFox29@users.noreply.github.com> * name change * bug report fix * slightly better bug fix * prevent the dropping of the BORIS module on reset upgrade * typo fix * wire order fix * makes emagging a shell drop the BORIS again * moving boris to misc category * makes the BORIS show up on mechfab --------- Signed-off-by: Kameň <167246105+StoneyFox29@users.noreply.github.com> Co-authored-by: TobiasHC2009 <167246105+TobiasHC2009@users.noreply.github.com> Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
This commit is contained in:
co-authored by
CRUNCH
TobiasHC2009
parent
83ada1355f
commit
edee60476d
@@ -515,4 +515,12 @@
|
||||
qdel(keyslot1)
|
||||
keyslot1 = new /obj/item/encryptionkey/syndicate
|
||||
syndiekey = keyslot1
|
||||
syndie = TRUE
|
||||
recalculateChannels()
|
||||
|
||||
/obj/item/radio/borg/proc/make_syndie()
|
||||
qdel(keyslot)
|
||||
keyslot = new /obj/item/encryptionkey/syndicate
|
||||
syndiekey = keyslot
|
||||
syndie = TRUE
|
||||
recalculateChannels()
|
||||
|
||||
@@ -61,6 +61,8 @@ GLOBAL_LIST_EMPTY(deadsay_radio_systems)
|
||||
var/obj/item/encryptionkey/syndicate/syndiekey = null
|
||||
/// How many times this is disabled by EMPs
|
||||
var/disable_timer = 0
|
||||
/// Is the radio a syndie one?
|
||||
var/syndie = FALSE
|
||||
/// Areas in which this radio cannot send messages
|
||||
var/static/list/blacklisted_areas = list(/area/adminconstruction, /area/tdome, /area/ruin/space/bubblegum_arena)
|
||||
|
||||
|
||||
@@ -343,6 +343,40 @@
|
||||
to_chat(user, SPAN_WARNING("The MMI must go in after everything else!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(istype(used, /obj/item/borg/upgrade/ai))
|
||||
var/obj/item/borg/upgrade/ai/M = used
|
||||
if(check_completion())
|
||||
if(!isturf(loc))
|
||||
to_chat(user, SPAN_WARNING("You cannot install [M], the frame has to be standing on the ground to be perfectly precise!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
if(!user.drop_item())
|
||||
to_chat(user, SPAN_WARNING("[M] is stuck to your hand!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
qdel(M)
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot/shell(get_turf(src))
|
||||
|
||||
if(!aisync)
|
||||
lawsync = FALSE
|
||||
O.connected_ai = null
|
||||
else
|
||||
if(forced_ai)
|
||||
O.connected_ai = forced_ai
|
||||
O.notify_ai(AI_SHELL)
|
||||
if(!lawsync)
|
||||
O.lawupdate = FALSE
|
||||
O.make_laws()
|
||||
|
||||
var/datum/robot_component/cell_component = O.components["power cell"]
|
||||
cell_component.install(chest.cell)
|
||||
chest.cell = null
|
||||
O.locked = panel_locked
|
||||
O.job = "Cyborg"
|
||||
forceMove(O)
|
||||
O.robot_suit = src
|
||||
if(!locomotion)
|
||||
O.lockcharge = TRUE
|
||||
O.update_stamina_hud()
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
if(is_pen(used))
|
||||
to_chat(user, SPAN_WARNING("You need to use a multitool to name [src]!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
if(!R.allow_rename)
|
||||
to_chat(R, SPAN_WARNING("Internal diagnostic error: incompatible upgrade module detected."))
|
||||
return
|
||||
R.notify_ai(3, R.name, heldname)
|
||||
R.notify_ai(RENAME, R.name, heldname)
|
||||
R.name = heldname
|
||||
R.custom_name = heldname
|
||||
R.real_name = heldname
|
||||
@@ -160,7 +160,7 @@
|
||||
R.set_stat(CONSCIOUS)
|
||||
GLOB.dead_mob_list -= R //please never forget this ever kthx
|
||||
GLOB.alive_mob_list += R
|
||||
R.notify_ai(1)
|
||||
R.notify_ai(NEW_BORG)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -552,3 +552,17 @@
|
||||
/obj/item/reagent_containers/spray/cleaner/safety/abductor,
|
||||
/obj/item/lightreplacer/bluespace/abductor
|
||||
)
|
||||
|
||||
// MARK: B.O.R.I.S.
|
||||
/obj/item/borg/upgrade/ai
|
||||
name = "B.O.R.I.S. module"
|
||||
desc = "Bluespace Optimized Remote Intelligence Synchronization. An uplink device which takes the place of an MMI in cyborg endoskeletons, creating a robotic shell controlled by an AI."
|
||||
icon_state = "bluespacearray"
|
||||
origin_tech = "engineering=3;magnets=4;programming=5"
|
||||
var/alien = FALSE // This is an incredibely scuffed way to do this, but it works.
|
||||
var/syndiemmi = FALSE
|
||||
var/brainmob = null
|
||||
|
||||
/obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/R)
|
||||
to_chat(usr, SPAN_NOTICE("The B.O.R.I.S. module can only be installed into an endoskeleton.")) // Since the BORIS module is an upgrade that acts as an MMI.
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user