mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-30 08:38:13 +01:00
Removes devices
This commit is contained in:
@@ -90,7 +90,7 @@
|
||||
corpsesuit = /obj/item/clothing/suit/armor/vest
|
||||
corpseshoes = /obj/item/clothing/shoes/boots/swat
|
||||
corpsegloves = /obj/item/clothing/gloves/swat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/swat
|
||||
corpseback = /obj/item/storage/backpack
|
||||
@@ -104,7 +104,7 @@
|
||||
corpsesuit = /obj/item/clothing/suit/armor/pcarrier/blue/sol
|
||||
corpseshoes = /obj/item/clothing/shoes/boots/swat
|
||||
corpsegloves = /obj/item/clothing/gloves/swat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/swat
|
||||
corpseback = /obj/item/storage/backpack
|
||||
@@ -118,7 +118,7 @@
|
||||
corpsesuit = /obj/item/clothing/suit/space/void/merc
|
||||
corpseshoes = /obj/item/clothing/shoes/boots/swat
|
||||
corpsegloves = /obj/item/clothing/gloves/swat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/syndicate
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/void/merc
|
||||
corpseback = /obj/item/tank/jetpack/oxygen
|
||||
@@ -133,7 +133,7 @@
|
||||
name = "Clown"
|
||||
corpseuniform = /obj/item/clothing/under/rank/clown
|
||||
corpseshoes = /obj/item/clothing/shoes/clown_shoes
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/clown_hat
|
||||
corpsepocket1 = /obj/item/bikehorn
|
||||
corpseback = /obj/item/storage/backpack/clown
|
||||
|
||||
@@ -930,8 +930,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
if(usr.client.prefs?.be_special & BE_PAI)
|
||||
var/count = 0
|
||||
for(var/obj/item/device/paicard/p in all_pai_cards)
|
||||
var/obj/item/device/paicard/PP = p
|
||||
for(var/obj/item/paicard/p in all_pai_cards)
|
||||
var/obj/item/paicard/PP = p
|
||||
if(PP.pai == null)
|
||||
count++
|
||||
PP.overlays += "pai-ghostalert"
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] does not need a repair.</span>")
|
||||
return
|
||||
else if(istype(O, /obj/item/device/assembly/prox_sensor) && emagged)
|
||||
else if(istype(O, /obj/item/assembly/prox_sensor) && emagged)
|
||||
if(open)
|
||||
to_chat(user, "<span class='notice'>You repair the bot's systems.</span>")
|
||||
emagged = 0
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
var/turf/Tsec = get_turf(src)
|
||||
|
||||
new /obj/item/reagent_containers/glass/bucket(Tsec)
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
if(prob(50))
|
||||
new /obj/item/robot_parts/l_arm(Tsec)
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
if(prob(50))
|
||||
new /obj/item/reagent_containers/glass/bucket(Tsec)
|
||||
else
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
|
||||
@@ -270,8 +270,8 @@
|
||||
|
||||
new /obj/item/material/minihoe(Tsec)
|
||||
new /obj/item/reagent_containers/glass/bucket(Tsec)
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/device/analyzer/plant_analyzer(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/analyzer/plant_analyzer(Tsec)
|
||||
|
||||
if(tank)
|
||||
tank.loc = Tsec
|
||||
@@ -369,7 +369,7 @@
|
||||
|
||||
/obj/item/farmbot_arm_assembly/attackby(obj/item/W as obj, mob/user as mob)
|
||||
..()
|
||||
if((istype(W, /obj/item/device/analyzer/plant_analyzer)) && (build_step == 0))
|
||||
if((istype(W, /obj/item/analyzer/plant_analyzer)) && (build_step == 0))
|
||||
build_step++
|
||||
to_chat(user, "You add the plant analyzer to [src].")
|
||||
name = "farmbot assembly"
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
|
||||
var/obj/item/storage/toolbox/mechanical/N = new /obj/item/storage/toolbox/mechanical(Tsec)
|
||||
N.contents = list()
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
if(prob(50))
|
||||
new /obj/item/robot_parts/l_arm(Tsec)
|
||||
var/obj/item/stack/tile/floor/T = new /obj/item/stack/tile/floor(Tsec)
|
||||
|
||||
@@ -332,8 +332,8 @@
|
||||
var/turf/Tsec = get_turf(src)
|
||||
|
||||
new /obj/item/storage/firstaid(Tsec)
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/device/healthanalyzer(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/healthanalyzer(Tsec)
|
||||
if (prob(50))
|
||||
new /obj/item/robot_parts/l_arm(Tsec)
|
||||
|
||||
@@ -543,7 +543,7 @@
|
||||
else
|
||||
switch(build_step)
|
||||
if(0)
|
||||
if(istype(W, /obj/item/device/healthanalyzer))
|
||||
if(istype(W, /obj/item/healthanalyzer))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
build_step++
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
visible_message("<span class='danger'>[src] blows apart!</span>")
|
||||
|
||||
var/turf/Tsec = get_turf(src)
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/stack/rods(Tsec)
|
||||
new /obj/item/stack/rods(Tsec)
|
||||
new /obj/item/stack/cable_coil/cut(Tsec)
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
Sa.build_step = 1
|
||||
Sa.overlays += image('icons/obj/aibots.dmi', "hs_hole")
|
||||
Sa.created_name = name
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
new /obj/item/assembly/prox_sensor(Tsec)
|
||||
new used_weapon(Tsec)
|
||||
if(prob(50))
|
||||
new /obj/item/robot_parts/l_arm(Tsec)
|
||||
@@ -387,7 +387,7 @@
|
||||
|
||||
//Secbot Construction
|
||||
|
||||
/obj/item/clothing/head/helmet/attackby(var/obj/item/device/assembly/signaler/S, mob/user as mob)
|
||||
/obj/item/clothing/head/helmet/attackby(var/obj/item/assembly/signaler/S, mob/user as mob)
|
||||
..()
|
||||
if(!issignaler(S))
|
||||
..()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/item/device/mmi
|
||||
/obj/item/mmi
|
||||
name = "man-machine interface"
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
@@ -17,13 +17,13 @@
|
||||
var/mob/living/carbon/brain/brainmob = null//The current occupant.
|
||||
var/obj/item/organ/internal/brain/brainobj = null //The current brain organ.
|
||||
var/obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
var/obj/item/device/radio/headset/mmi_radio/radio = null//Let's give it a radio.
|
||||
var/obj/item/radio/headset/mmi_radio/radio = null//Let's give it a radio.
|
||||
|
||||
/obj/item/device/mmi/Initialize()
|
||||
/obj/item/mmi/Initialize()
|
||||
radio = new(src)//Spawns a radio inside the MMI.
|
||||
. = ..()
|
||||
|
||||
/obj/item/device/mmi/verb/toggle_radio()
|
||||
/obj/item/mmi/verb/toggle_radio()
|
||||
set name = "Toggle Brain Radio"
|
||||
set desc = "Enables or disables the integrated brain radio, which is only usable outside of a body."
|
||||
set category = "Object"
|
||||
@@ -43,7 +43,7 @@
|
||||
else
|
||||
to_chat (usr, "You were unable to toggle the [src]'s radio.")
|
||||
|
||||
/obj/item/device/mmi/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/obj/item/mmi/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O,/obj/item/organ/internal/brain) && !brainmob) //Time to stick a brain in it --NEO
|
||||
|
||||
var/obj/item/organ/internal/brain/B = O
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
return
|
||||
|
||||
if((istype(O,/obj/item/card/id)||istype(O,/obj/item/device/pda)) && brainmob)
|
||||
if((istype(O,/obj/item/card/id)||istype(O,/obj/item/pda)) && brainmob)
|
||||
if(allowed(user))
|
||||
locked = !locked
|
||||
to_chat(user, "<span class='notice'>You [locked ? "lock" : "unlock"] the brain holder.</span>")
|
||||
@@ -96,7 +96,7 @@
|
||||
..()
|
||||
|
||||
//TODO: ORGAN REMOVAL UPDATE. Make the brain remain in the MMI so it doesn't lose organ data.
|
||||
/obj/item/device/mmi/attack_self(mob/user as mob)
|
||||
/obj/item/mmi/attack_self(mob/user as mob)
|
||||
if(!brainmob)
|
||||
to_chat(user, "<span class='warning'>You upend the MMI, but there's nothing in it.</span>")
|
||||
else if(locked)
|
||||
@@ -120,7 +120,7 @@
|
||||
icon_state = "mmi_empty"
|
||||
name = "Man-Machine Interface"
|
||||
|
||||
/obj/item/device/mmi/proc/transfer_identity(var/mob/living/carbon/human/H)//Same deal as the regular brain proc. Used for human-->robot people.
|
||||
/obj/item/mmi/proc/transfer_identity(var/mob/living/carbon/human/H)//Same deal as the regular brain proc. Used for human-->robot people.
|
||||
brainmob = new(src)
|
||||
brainmob.name = H.real_name
|
||||
brainmob.real_name = H.real_name
|
||||
@@ -137,7 +137,7 @@
|
||||
locked = 1
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/relaymove(var/mob/user, var/direction)
|
||||
/obj/item/mmi/relaymove(var/mob/user, var/direction)
|
||||
if(user.stat || user.stunned)
|
||||
return
|
||||
var/obj/item/rig/rig = src.get_rig()
|
||||
@@ -145,7 +145,7 @@
|
||||
if(istype(rig,/obj/item/rig))
|
||||
rig.forced_move(direction, user)
|
||||
|
||||
/obj/item/device/mmi/Destroy()
|
||||
/obj/item/mmi/Destroy()
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/borg = loc
|
||||
borg.mmi = null
|
||||
@@ -153,12 +153,12 @@
|
||||
QDEL_NULL(brainmob)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/mmi/radio_enabled
|
||||
/obj/item/mmi/radio_enabled
|
||||
name = "radio-enabled man-machine interface"
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio. Wait, don't they all?"
|
||||
origin_tech = list(TECH_BIO = 4)
|
||||
|
||||
/obj/item/device/mmi/emp_act(severity)
|
||||
/obj/item/mmi/emp_act(severity)
|
||||
if(!brainmob)
|
||||
return
|
||||
else
|
||||
@@ -173,7 +173,7 @@
|
||||
brainmob.emp_damage += rand(0,5)
|
||||
..()
|
||||
|
||||
/obj/item/device/mmi/digital
|
||||
/obj/item/mmi/digital
|
||||
var/searching = 0
|
||||
var/askDelay = 10 * 60 * 1
|
||||
req_access = list(access_robotics)
|
||||
@@ -181,7 +181,7 @@
|
||||
mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
var/ghost_query_type = null
|
||||
|
||||
/obj/item/device/mmi/digital/Initialize()
|
||||
/obj/item/mmi/digital/Initialize()
|
||||
src.brainmob = new(src)
|
||||
// src.brainmob.add_language("Robot Talk")//No binary without a binary communication device
|
||||
src.brainmob.add_language(LANGUAGE_GALCOM)
|
||||
@@ -194,10 +194,10 @@
|
||||
dead_mob_list -= src.brainmob
|
||||
. = ..()
|
||||
|
||||
/obj/item/device/mmi/digital/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/obj/item/mmi/digital/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
return //Doesn't do anything right now because none of the things that can be done to a regular MMI make any sense for these
|
||||
|
||||
/obj/item/device/mmi/digital/examine(mob/user)
|
||||
/obj/item/mmi/digital/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
if(src.brainmob && src.brainmob.key)
|
||||
@@ -212,7 +212,7 @@
|
||||
else
|
||||
. += "<span class='deadsay'>It appears to be completely inactive.</span>"
|
||||
|
||||
/obj/item/device/mmi/digital/emp_act(severity)
|
||||
/obj/item/mmi/digital/emp_act(severity)
|
||||
if(!src.brainmob)
|
||||
return
|
||||
else
|
||||
@@ -227,7 +227,7 @@
|
||||
src.brainmob.emp_damage += rand(0,5)
|
||||
..()
|
||||
|
||||
/obj/item/device/mmi/digital/transfer_identity(var/mob/living/carbon/H)
|
||||
/obj/item/mmi/digital/transfer_identity(var/mob/living/carbon/H)
|
||||
brainmob.dna = H.dna
|
||||
brainmob.timeofhostdeath = H.timeofdeath
|
||||
brainmob.set_stat(CONSCIOUS)
|
||||
@@ -235,13 +235,13 @@
|
||||
H.mind.transfer_to(brainmob)
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/attack_self(mob/user as mob)
|
||||
/obj/item/mmi/digital/attack_self(mob/user as mob)
|
||||
if(brainmob && !brainmob.key && searching == 0)
|
||||
//Start the process of searching for a new user.
|
||||
to_chat(user, "<font color='blue'>You carefully locate the manual activation switch and start the [src]'s boot process.</font>")
|
||||
request_player()
|
||||
|
||||
/obj/item/device/mmi/digital/proc/request_player()
|
||||
/obj/item/mmi/digital/proc/request_player()
|
||||
if(!ghost_query_type)
|
||||
return
|
||||
searching = 1
|
||||
@@ -254,7 +254,7 @@
|
||||
else
|
||||
reset_search()
|
||||
|
||||
/obj/item/device/mmi/digital/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
/obj/item/mmi/digital/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
if(src.brainmob && src.brainmob.key)
|
||||
return
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
for (var/mob/M in viewers(T))
|
||||
M.show_message("<font color='blue'>\The [src] buzzes quietly, and the golden lights fade away. Perhaps you could try again?</font>")
|
||||
|
||||
/obj/item/device/mmi/digital/proc/transfer_personality(var/mob/candidate)
|
||||
/obj/item/mmi/digital/proc/transfer_personality(var/mob/candidate)
|
||||
announce_ghost_joinleave(candidate, 0, "They are occupying a synthetic brain now.")
|
||||
src.searching = 0
|
||||
if(candidate.mind)
|
||||
@@ -282,7 +282,7 @@
|
||||
for (var/mob/M in viewers(T))
|
||||
M.show_message("<font color='blue'>\The [src] chimes quietly.</font>")
|
||||
|
||||
/obj/item/device/mmi/digital/robot
|
||||
/obj/item/mmi/digital/robot
|
||||
name = "robotic intelligence circuit"
|
||||
desc = "The pinnacle of artifical intelligence which can be achieved using classical computer science."
|
||||
catalogue_data = list(/datum/category_item/catalogue/technology/drone/drones)
|
||||
@@ -292,19 +292,19 @@
|
||||
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_DATA = 4)
|
||||
ghost_query_type = /datum/ghost_query/drone_brain
|
||||
|
||||
/obj/item/device/mmi/digital/robot/Initialize()
|
||||
/obj/item/mmi/digital/robot/Initialize()
|
||||
. = ..()
|
||||
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN","NJS","SKS","DRD","IOS","CRM","IBM","TEX","LVM","BSD",))]-[rand(1000, 9999)]"
|
||||
src.brainmob.real_name = src.brainmob.name
|
||||
|
||||
/obj/item/device/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
|
||||
/obj/item/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Robotic Intelligence"
|
||||
to_chat(brainmob, "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>")
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain
|
||||
/obj/item/mmi/digital/posibrain
|
||||
name = "positronic brain"
|
||||
desc = "A cube of shining metal, four inches to a side and covered in shallow grooves."
|
||||
catalogue_data = list(/datum/category_item/catalogue/technology/positronics)
|
||||
@@ -314,12 +314,12 @@
|
||||
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2, TECH_DATA = 4)
|
||||
ghost_query_type = /datum/ghost_query/posi_brain
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/request_player()
|
||||
/obj/item/mmi/digital/posibrain/request_player()
|
||||
icon_state = "posibrain-searching"
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/transfer_identity(var/mob/living/carbon/H)
|
||||
/obj/item/mmi/digital/posibrain/transfer_identity(var/mob/living/carbon/H)
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Positronic Brain"
|
||||
@@ -327,25 +327,25 @@
|
||||
icon_state = "posibrain-occupied"
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/transfer_personality(var/mob/candidate)
|
||||
/obj/item/mmi/digital/posibrain/transfer_personality(var/mob/candidate)
|
||||
..()
|
||||
icon_state = "posibrain-occupied"
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
/obj/item/mmi/digital/posibrain/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
..()
|
||||
icon_state = "posibrain"
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/Initialize()
|
||||
/obj/item/mmi/digital/posibrain/Initialize()
|
||||
. = ..()
|
||||
src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
|
||||
src.brainmob.real_name = src.brainmob.name
|
||||
|
||||
// This type shouldn't care about brainmobs.
|
||||
/obj/item/device/mmi/inert
|
||||
/obj/item/mmi/inert
|
||||
|
||||
// This is a 'fake' MMI that is used to let AIs control borg shells directly.
|
||||
// This doesn't inherit from /digital because all that does is add ghost pulling capabilities, which this thing won't need.
|
||||
/obj/item/device/mmi/inert/ai_remote
|
||||
/obj/item/mmi/inert/ai_remote
|
||||
name = "\improper AI remote interface"
|
||||
desc = "A sophisticated board which allows for an artificial intelligence to remotely control a synthetic chassis."
|
||||
icon = 'icons/obj/module.dmi'
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/brain/say_understands(var/other)//Goddamn is this hackish, but this say code is so odd
|
||||
if(istype(container, /obj/item/device/mmi))
|
||||
if(istype(container, /obj/item/mmi))
|
||||
if(issilicon(other))
|
||||
return TRUE
|
||||
if(ishuman(other))
|
||||
@@ -34,7 +34,7 @@
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/brain/update_canmove()
|
||||
if(in_contents_of(/obj/mecha) || istype(loc, /obj/item/device/mmi))
|
||||
if(in_contents_of(/obj/mecha) || istype(loc, /obj/item/mmi))
|
||||
canmove = 1
|
||||
use_me = 1
|
||||
else
|
||||
@@ -42,7 +42,7 @@
|
||||
return canmove
|
||||
|
||||
/mob/living/carbon/brain/isSynthetic()
|
||||
return istype(loc, /obj/item/device/mmi)
|
||||
return istype(loc, /obj/item/mmi)
|
||||
|
||||
/mob/living/carbon/brain/set_typing_indicator(var/state)
|
||||
if(isturf(loc))
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/mob/living/carbon/brain/death(gibbed)
|
||||
if(!gibbed && istype(container, /obj/item/device/mmi)) //If not gibbed but in a container.
|
||||
if(!gibbed && istype(container, /obj/item/mmi)) //If not gibbed but in a container.
|
||||
container.icon_state = "mmi_dead"
|
||||
return ..(gibbed,"beeps shrilly as the MMI flatlines!")
|
||||
else
|
||||
return ..(gibbed, DEATHGASP_NO_MESSAGE)
|
||||
|
||||
/mob/living/carbon/brain/gib()
|
||||
if(istype(container, /obj/item/device/mmi))
|
||||
if(istype(container, /obj/item/mmi))
|
||||
qdel(container)//Gets rid of the MMI if there is one
|
||||
if(loc)
|
||||
if(istype(loc,/obj/item/organ/internal/brain))
|
||||
|
||||
@@ -11,7 +11,7 @@ var/list/_brain_default_emotes = list(
|
||||
)
|
||||
|
||||
/mob/living/carbon/brain/can_emote()
|
||||
return (istype(container, /obj/item/device/mmi) && ..())
|
||||
return (istype(container, /obj/item/mmi) && ..())
|
||||
|
||||
/mob/living/carbon/brain/get_available_emotes()
|
||||
return global._brain_default_emotes
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
|
||||
//Handling EMP effect in the Life(), it's made VERY simply, and has some additional effects handled elsewhere
|
||||
if(emp_damage) //This is pretty much a damage type only used by MMIs, dished out by the emp_act
|
||||
if(!(container && istype(container, /obj/item/device/mmi)))
|
||||
if(!(container && istype(container, /obj/item/mmi)))
|
||||
emp_damage = 0
|
||||
else
|
||||
emp_damage = round(emp_damage,1)//Let's have some nice numbers to work with
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/mmi/digital/posibrain
|
||||
/obj/item/mmi/digital/posibrain
|
||||
name = "positronic brain"
|
||||
desc = "A cube of shining metal, four inches to a side and covered in shallow grooves."
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
@@ -13,7 +13,7 @@
|
||||
mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/attack_self(mob/user as mob)
|
||||
/obj/item/mmi/digital/posibrain/attack_self(mob/user as mob)
|
||||
if(brainmob && !brainmob.key && searching == 0)
|
||||
//Start the process of searching for a new user.
|
||||
to_chat(user, "<font color='blue'>You carefully locate the manual activation switch and start the positronic brain's boot process.</font>")
|
||||
@@ -22,7 +22,7 @@
|
||||
src.request_player()
|
||||
spawn(600) reset_search()
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/proc/request_player()
|
||||
/obj/item/mmi/digital/posibrain/proc/request_player()
|
||||
for(var/mob/observer/dead/O in player_list)
|
||||
if(!O.MayRespawn())
|
||||
continue
|
||||
@@ -32,7 +32,7 @@
|
||||
if(O.client.prefs.be_special & BE_AI)
|
||||
question(O.client)
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/proc/question(var/client/C)
|
||||
/obj/item/mmi/digital/posibrain/proc/question(var/client/C)
|
||||
spawn(0)
|
||||
if(!C) return
|
||||
var/response = alert(C, "Someone is requesting a personality for a positronic brain. Would you like to play as one?", "Positronic brain request", "Yes", "No", "Never for this round")
|
||||
@@ -45,7 +45,7 @@
|
||||
C.prefs.be_special ^= BE_AI
|
||||
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/transfer_identity(var/mob/living/carbon/H)
|
||||
/obj/item/mmi/digital/posibrain/transfer_identity(var/mob/living/carbon/H)
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Positronic Brain"
|
||||
@@ -53,7 +53,7 @@
|
||||
icon_state = "posibrain-occupied"
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/proc/transfer_personality(var/mob/candidate)
|
||||
/obj/item/mmi/digital/posibrain/proc/transfer_personality(var/mob/candidate)
|
||||
announce_ghost_joinleave(candidate, 0, "They are occupying a positronic brain now.")
|
||||
src.searching = 0
|
||||
src.brainmob.mind = candidate.mind
|
||||
@@ -72,7 +72,7 @@
|
||||
playsound(src, 'sound/misc/boobeebeep.ogg', 50, 1)
|
||||
icon_state = "posibrain-occupied"
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
/obj/item/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
|
||||
if(src.brainmob && src.brainmob.key) return
|
||||
to_world_log("Resetting Posibrain: [brainmob][brainmob ? ", [brainmob.key]" : ""]")
|
||||
@@ -85,7 +85,7 @@
|
||||
M.show_message("<font color='blue'>The positronic brain buzzes and beeps, and the golden lights fade away. Perhaps you could try again?</font>")
|
||||
playsound(src, 'sound/misc/buzzbeep.ogg', 50, 1)
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/emp_act(severity)
|
||||
/obj/item/mmi/digital/posibrain/emp_act(severity)
|
||||
if(!src.brainmob)
|
||||
return
|
||||
else
|
||||
@@ -100,7 +100,7 @@
|
||||
src.brainmob.emp_damage += rand(0,5)
|
||||
..()
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/Initialize()
|
||||
/obj/item/mmi/digital/posibrain/Initialize()
|
||||
. = ..()
|
||||
src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
|
||||
src.brainmob.real_name = src.brainmob.name
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/mmi/digital/robot
|
||||
/obj/item/mmi/digital/robot
|
||||
name = "robotic intelligence circuit"
|
||||
desc = "The pinnacle of artifical intelligence which can be achieved using classical computer science."
|
||||
icon = 'icons/obj/module.dmi'
|
||||
@@ -6,18 +6,18 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_DATA = 4)
|
||||
|
||||
/obj/item/device/mmi/digital/robot/Initialize()
|
||||
/obj/item/mmi/digital/robot/Initialize()
|
||||
. = ..()
|
||||
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]"
|
||||
src.brainmob.real_name = src.brainmob.name
|
||||
src.name = "robotic intelligence circuit ([src.brainmob.name])"
|
||||
|
||||
/obj/item/device/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
|
||||
/obj/item/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Robotic Intelligence"
|
||||
to_chat(brainmob, "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>")
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/robot/attack_self(mob/user as mob)
|
||||
/obj/item/mmi/digital/robot/attack_self(mob/user as mob)
|
||||
return //This object is technically a brain, and should not be dumping brains out of itself like its parent object does.
|
||||
@@ -19,7 +19,7 @@
|
||||
/mob/living/carbon/brain/handle_message_mode(message_mode, message, verb, speaking, used_radios)
|
||||
..()
|
||||
if(message_mode)
|
||||
var/obj/item/device/mmi/R = container
|
||||
var/obj/item/mmi/R = container
|
||||
if(R.radio && R.radio.radio_enabled)
|
||||
if(message_mode == "general")
|
||||
message_mode = null
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
var/to_wear_helmet = /obj/item/clothing/head/welding
|
||||
var/to_wear_glasses = /obj/item/clothing/glasses/threedglasses
|
||||
var/to_wear_mask = /obj/item/clothing/mask/gas
|
||||
var/to_wear_l_radio = /obj/item/device/radio/headset
|
||||
var/to_wear_l_radio = /obj/item/radio/headset
|
||||
var/to_wear_r_radio = null
|
||||
var/to_wear_uniform = /obj/item/clothing/under/color/grey
|
||||
var/to_wear_suit = /obj/item/clothing/suit/armor/material/makeshift/glass
|
||||
@@ -24,7 +24,7 @@
|
||||
var/to_wear_shoes = /obj/item/clothing/shoes/galoshes
|
||||
var/to_wear_belt = /obj/item/storage/belt/utility/full
|
||||
var/to_wear_l_pocket = /obj/item/soap
|
||||
var/to_wear_r_pocket = /obj/item/device/pda
|
||||
var/to_wear_r_pocket = /obj/item/pda
|
||||
var/to_wear_back = /obj/item/storage/backpack
|
||||
var/to_wear_id_type = /obj/item/card/id
|
||||
var/to_wear_id_job = "Assistant"
|
||||
@@ -124,7 +124,7 @@
|
||||
to_wear_helmet = /obj/item/clothing/head/helmet/dermal
|
||||
to_wear_glasses = /obj/item/clothing/glasses/goggles
|
||||
to_wear_mask = /obj/item/clothing/mask/gas/half
|
||||
to_wear_l_radio = /obj/item/device/radio/headset/headset_rob
|
||||
to_wear_l_radio = /obj/item/radio/headset/headset_rob
|
||||
to_wear_r_radio = null
|
||||
to_wear_uniform = /obj/item/clothing/under/color/grey
|
||||
to_wear_suit = /obj/item/clothing/suit/armor/vest
|
||||
@@ -133,7 +133,7 @@
|
||||
to_wear_belt = /obj/item/storage/belt/utility/full
|
||||
to_wear_l_pocket = /obj/item/grenade/explosive/mini
|
||||
to_wear_r_pocket = /obj/item/grenade/explosive/mini
|
||||
to_wear_back = /obj/item/device/radio/electropack
|
||||
to_wear_back = /obj/item/radio/electropack
|
||||
to_wear_id_type = /obj/item/card/id
|
||||
to_wear_id_job = "Experiment"
|
||||
|
||||
|
||||
@@ -237,8 +237,8 @@
|
||||
//ID
|
||||
if(wear_id && wear_id.show_examine)
|
||||
/*var/id
|
||||
if(istype(wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = wear_id
|
||||
if(istype(wear_id, /obj/item/pda))
|
||||
var/obj/item/pda/pda = wear_id
|
||||
id = pda.owner
|
||||
else if(istype(wear_id, /obj/item/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[
|
||||
var/obj/item/card/id/idcard = wear_id
|
||||
@@ -370,8 +370,8 @@
|
||||
if(istype(wear_id, /obj/item/card/id))
|
||||
var/obj/item/card/id/I = wear_id
|
||||
perpname = I.registered_name
|
||||
else if(istype(wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/P = wear_id
|
||||
else if(istype(wear_id, /obj/item/pda))
|
||||
var/obj/item/pda/P = wear_id
|
||||
perpname = P.owner
|
||||
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
@@ -389,8 +389,8 @@
|
||||
if(istype(wear_id, /obj/item/card/id))
|
||||
var/obj/item/card/id/I = wear_id
|
||||
perpname = I.registered_name
|
||||
else if(istype(wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/P = wear_id
|
||||
else if(istype(wear_id, /obj/item/pda))
|
||||
var/obj/item/pda/P = wear_id
|
||||
perpname = P.owner
|
||||
|
||||
for (var/datum/data/record/R in data_core.medical)
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
|
||||
// Get rank from ID, ID inside PDA, PDA, ID in wallet, etc.
|
||||
/mob/living/carbon/human/proc/get_authentification_rank(var/if_no_id = "No id", var/if_no_job = "No job")
|
||||
var/obj/item/device/pda/pda = wear_id
|
||||
var/obj/item/pda/pda = wear_id
|
||||
if (istype(pda))
|
||||
if (pda.id)
|
||||
return pda.id.rank ? pda.id.rank : if_no_job
|
||||
@@ -235,7 +235,7 @@
|
||||
//gets assignment from ID or ID inside PDA or PDA itself
|
||||
//Useful when player do something with computers
|
||||
/mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job")
|
||||
var/obj/item/device/pda/pda = wear_id
|
||||
var/obj/item/pda/pda = wear_id
|
||||
if (istype(pda))
|
||||
if (pda.id)
|
||||
return pda.id.assignment
|
||||
@@ -251,7 +251,7 @@
|
||||
//gets name from ID or ID inside PDA or PDA itself
|
||||
//Useful when player do something with computers
|
||||
/mob/living/carbon/human/proc/get_authentification_name(var/if_no_id = "Unknown")
|
||||
var/obj/item/device/pda/pda = wear_id
|
||||
var/obj/item/pda/pda = wear_id
|
||||
if (istype(pda))
|
||||
if (pda.id)
|
||||
return pda.id.registered_name
|
||||
@@ -287,8 +287,8 @@
|
||||
//Useful when player is being seen by other mobs
|
||||
/mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown")
|
||||
. = if_no_id
|
||||
if(istype(wear_id,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/P = wear_id
|
||||
if(istype(wear_id,/obj/item/pda))
|
||||
var/obj/item/pda/P = wear_id
|
||||
return P.owner ? P.owner : if_no_id
|
||||
if(wear_id)
|
||||
var/obj/item/card/id/I = wear_id.GetID()
|
||||
|
||||
@@ -131,11 +131,11 @@
|
||||
if(B) // Incase we lost our brain for some reason, like if we got decapped.
|
||||
if(istype(B, /obj/item/organ/internal/mmi_holder))
|
||||
var/obj/item/organ/internal/mmi_holder/mmi_holder = B
|
||||
if(istype(mmi_holder.stored_mmi, /obj/item/device/mmi/digital/posibrain))
|
||||
if(istype(mmi_holder.stored_mmi, /obj/item/mmi/digital/posibrain))
|
||||
return FBP_POSI
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/device/mmi/digital/robot))
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/mmi/digital/robot))
|
||||
return FBP_DRONE
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/device/mmi)) // This needs to come last because inheritence.
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/mmi)) // This needs to come last because inheritence.
|
||||
return FBP_CYBORG
|
||||
|
||||
return FBP_NONE
|
||||
|
||||
@@ -136,12 +136,12 @@
|
||||
switch(message_mode)
|
||||
if("intercom")
|
||||
if(!restrained())
|
||||
for(var/obj/item/device/radio/intercom/I in view(1))
|
||||
for(var/obj/item/radio/intercom/I in view(1))
|
||||
I.talk_into(src, message_pieces, null, verb)
|
||||
I.add_fingerprint(src)
|
||||
used_radios += I
|
||||
if("headset")
|
||||
var/obj/item/device/radio/R = null
|
||||
var/obj/item/radio/R = null
|
||||
if(isradio(l_ear))
|
||||
R = l_ear
|
||||
if(R.talk_into(src, message_pieces, null, verb))
|
||||
@@ -154,7 +154,7 @@
|
||||
used_radios += R
|
||||
return
|
||||
if("right ear")
|
||||
var/obj/item/device/radio/R = null
|
||||
var/obj/item/radio/R = null
|
||||
if(isradio(r_ear))
|
||||
R = r_ear
|
||||
if(isradio(r_hand))
|
||||
@@ -163,7 +163,7 @@
|
||||
if(R.talk_into(src, message_pieces, null, verb))
|
||||
used_radios += R
|
||||
if("left ear")
|
||||
var/obj/item/device/radio/R = null
|
||||
var/obj/item/radio/R = null
|
||||
if(isradio(l_ear))
|
||||
R = l_ear
|
||||
if(isradio(l_hand))
|
||||
@@ -191,13 +191,13 @@
|
||||
|
||||
/mob/living/carbon/human/binarycheck()
|
||||
. = FALSE
|
||||
var/obj/item/device/radio/headset/R = null
|
||||
if(istype(l_ear, /obj/item/device/radio/headset))
|
||||
var/obj/item/radio/headset/R = null
|
||||
if(istype(l_ear, /obj/item/radio/headset))
|
||||
R = l_ear
|
||||
if(R.translate_binary)
|
||||
. = TRUE
|
||||
|
||||
if(istype(r_ear, /obj/item/device/radio/headset))
|
||||
if(istype(r_ear, /obj/item/radio/headset))
|
||||
R = r_ear
|
||||
if(R.translate_binary)
|
||||
. = TRUE
|
||||
|
||||
@@ -344,7 +344,7 @@
|
||||
|
||||
//If they are synth, they get a smol battery
|
||||
else if(synth)
|
||||
new /obj/item/device/fbp_backup_cell(box)
|
||||
new /obj/item/fbp_backup_cell(box)
|
||||
|
||||
box.calibrate_size()
|
||||
|
||||
|
||||
@@ -584,9 +584,9 @@
|
||||
|
||||
/datum/species/diona/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/flare(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/flashlight/flare(H), slot_r_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/flare(H.back), slot_in_backpack)
|
||||
H.equip_to_slot_or_del(new /obj/item/flashlight/flare(H.back), slot_in_backpack)
|
||||
|
||||
/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
H.gender = NEUTER
|
||||
|
||||
@@ -102,8 +102,8 @@
|
||||
/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
|
||||
//Being hit while using a deadman switch
|
||||
if(istype(get_active_hand(),/obj/item/device/assembly/signaler))
|
||||
var/obj/item/device/assembly/signaler/signaler = get_active_hand()
|
||||
if(istype(get_active_hand(),/obj/item/assembly/signaler))
|
||||
var/obj/item/assembly/signaler/signaler = get_active_hand()
|
||||
if(signaler.deadman && prob(80))
|
||||
log_and_message_admins("has triggered a signaler deadman's switch", src)
|
||||
src.visible_message("<font color='red'>[src] triggers their deadman's switch!</font>")
|
||||
|
||||
@@ -114,7 +114,7 @@ var/list/channel_to_radio_key = new
|
||||
|
||||
/mob/living/proc/handle_message_mode(message_mode, list/message_pieces, verb, used_radios)
|
||||
if(message_mode == "intercom")
|
||||
for(var/obj/item/device/radio/intercom/I in view(1, null))
|
||||
for(var/obj/item/radio/intercom/I in view(1, null))
|
||||
I.talk_into(src, message_pieces, verb)
|
||||
used_radios += I
|
||||
return 0
|
||||
|
||||
@@ -55,10 +55,10 @@ var/list/ai_verbs_default = list(
|
||||
var/viewalerts = 0
|
||||
var/icon/holo_icon//Default is assigned when AI is created.
|
||||
var/list/connected_robots = list()
|
||||
var/obj/item/device/pda/ai/aiPDA = null
|
||||
var/obj/item/device/communicator/aiCommunicator = null
|
||||
var/obj/item/device/multitool/aiMulti = null
|
||||
var/obj/item/device/radio/headset/heads/ai_integrated/aiRadio = null
|
||||
var/obj/item/pda/ai/aiPDA = null
|
||||
var/obj/item/communicator/aiCommunicator = null
|
||||
var/obj/item/multitool/aiMulti = null
|
||||
var/obj/item/radio/headset/heads/ai_integrated/aiRadio = null
|
||||
var/camera_light_on = 0 //Defines if the AI toggled the light on the camera it's looking through.
|
||||
var/datum/trackable/track = null
|
||||
var/last_announcement = ""
|
||||
@@ -106,7 +106,7 @@ var/list/ai_verbs_default = list(
|
||||
src.verbs -= ai_verbs_default
|
||||
src.verbs -= silicon_subsystems
|
||||
|
||||
/mob/living/silicon/ai/Initialize(var/ml, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
|
||||
/mob/living/silicon/ai/Initialize(var/ml, var/datum/ai_laws/L, var/obj/item/mmi/B, var/safety = 0)
|
||||
|
||||
announcement = new()
|
||||
announcement.title = "A.I. Announcement"
|
||||
@@ -124,7 +124,7 @@ var/list/ai_verbs_default = list(
|
||||
pickedName = null
|
||||
|
||||
if(!is_dummy)
|
||||
aiPDA = new/obj/item/device/pda/ai(src)
|
||||
aiPDA = new/obj/item/pda/ai(src)
|
||||
SetName(pickedName)
|
||||
anchored = 1
|
||||
canmove = 0
|
||||
@@ -132,7 +132,7 @@ var/list/ai_verbs_default = list(
|
||||
loc = loc
|
||||
|
||||
if(!is_dummy)
|
||||
aiCommunicator = new /obj/item/device/communicator/integrated(src)
|
||||
aiCommunicator = new /obj/item/communicator/integrated(src)
|
||||
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1"))
|
||||
|
||||
@@ -151,7 +151,7 @@ var/list/ai_verbs_default = list(
|
||||
additional_law_channels["Binary"] = "#b"
|
||||
additional_law_channels["Holopad"] = ":h"
|
||||
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/ai_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/ai_camera(src)
|
||||
|
||||
if (istype(loc, /turf))
|
||||
add_ai_verbs(src)
|
||||
@@ -755,9 +755,9 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
|
||||
/mob/living/silicon/ai/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/aicard))
|
||||
if(istype(W, /obj/item/aicard))
|
||||
|
||||
var/obj/item/device/aicard/card = W
|
||||
var/obj/item/aicard/card = W
|
||||
card.grab_ai(src, user)
|
||||
|
||||
else if(W.is_wrench())
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
for(var/obj/machinery/ai_status_display/O in machines)
|
||||
spawn( 0 )
|
||||
O.mode = 2
|
||||
if (istype(loc, /obj/item/device/aicard))
|
||||
var/obj/item/device/aicard/card = loc
|
||||
if (istype(loc, /obj/item/aicard))
|
||||
var/obj/item/aicard/card = loc
|
||||
card.update_icon()
|
||||
|
||||
. = ..(gibbed,"gives one shrill beep before falling lifeless.")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
pai_key = C.key
|
||||
|
||||
log_and_message_admins("made a pAI with key=[pai_key] at ([t.x],[t.y],[t.z])", usr)
|
||||
var/obj/item/device/paicard/card = new(t)
|
||||
var/obj/item/paicard/card = new(t)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.key = pai_key
|
||||
card.setPersonality(pai)
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
var/ram = 100 // Used as currency to purchase different abilities
|
||||
var/list/software = list()
|
||||
var/userDNA // The DNA string of our assigned user
|
||||
var/obj/item/device/paicard/card // The card we inhabit
|
||||
var/obj/item/device/radio/radio // Our primary radio
|
||||
var/obj/item/device/communicator/integrated/communicator // Our integrated communicator.
|
||||
var/obj/item/paicard/card // The card we inhabit
|
||||
var/obj/item/radio/radio // Our primary radio
|
||||
var/obj/item/communicator/integrated/communicator // Our integrated communicator.
|
||||
|
||||
var/chassis = "pai-repairbot" // A record of your chosen chassis.
|
||||
var/global/list/possible_chassis = list(
|
||||
@@ -67,7 +67,7 @@
|
||||
var/screen // Which screen our main window displays
|
||||
var/subscreen // Which specific function of the main screen is being displayed
|
||||
|
||||
var/obj/item/device/pda/ai/pai/pda = null
|
||||
var/obj/item/pda/ai/pai/pda = null
|
||||
|
||||
var/secHUD = 0 // Toggles whether the Security HUD is active or not
|
||||
var/medHUD = 0 // Toggles whether the Medical HUD is active or not
|
||||
@@ -102,7 +102,7 @@
|
||||
communicator = new(src)
|
||||
if(card)
|
||||
if(!card.radio)
|
||||
card.radio = new /obj/item/device/radio(src.card)
|
||||
card.radio = new /obj/item/radio(src.card)
|
||||
radio = card.radio
|
||||
|
||||
//Default languages without universal translator software
|
||||
@@ -148,7 +148,7 @@
|
||||
return 0
|
||||
|
||||
/mob/living/silicon/pai/restrained()
|
||||
if(istype(src.loc,/obj/item/device/paicard))
|
||||
if(istype(src.loc,/obj/item/paicard))
|
||||
return 0
|
||||
..()
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
/*
|
||||
// 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/obj/item/paicard/card = new(t)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.key = src.key
|
||||
card.setPersonality(pai)
|
||||
@@ -288,8 +288,8 @@
|
||||
H.visible_message("<span class='danger'>\The [src] explodes out of \the [H]'s [affecting.name] in shower of gore!</span>")
|
||||
break
|
||||
holder.drop_from_inventory(card)
|
||||
else if(istype(card.loc,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/holder = card.loc
|
||||
else if(istype(card.loc,/obj/item/pda))
|
||||
var/obj/item/pda/holder = card.loc
|
||||
holder.pai = null
|
||||
|
||||
src.client.perspective = EYE_PERSPECTIVE
|
||||
@@ -351,7 +351,7 @@
|
||||
set category = "IC"
|
||||
|
||||
// Pass lying down or getting up to our pet human, if we're in a rig.
|
||||
if(istype(src.loc,/obj/item/device/paicard))
|
||||
if(istype(src.loc,/obj/item/paicard))
|
||||
resting = 0
|
||||
var/obj/item/rig/rig = src.get_rig()
|
||||
if(istype(rig))
|
||||
|
||||
@@ -28,10 +28,10 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
/datum/paiController/Topic(href, href_list[])
|
||||
if(href_list["download"])
|
||||
var/datum/paiCandidate/candidate = locate(href_list["candidate"])
|
||||
var/obj/item/device/paicard/card = locate(href_list["device"])
|
||||
var/obj/item/paicard/card = locate(href_list["device"])
|
||||
if(card.pai)
|
||||
return
|
||||
if(istype(card,/obj/item/device/paicard) && istype(candidate,/datum/paiCandidate))
|
||||
if(istype(card,/obj/item/paicard) && istype(candidate,/datum/paiCandidate))
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
if(!candidate.name)
|
||||
pai.name = pick(ninja_names)
|
||||
@@ -87,7 +87,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
if("submit")
|
||||
if(candidate)
|
||||
candidate.ready = 1
|
||||
for(var/obj/item/device/paicard/p in all_pai_cards)
|
||||
for(var/obj/item/paicard/p in all_pai_cards)
|
||||
if(p.looking_for_personality == 1)
|
||||
p.alertUpdate()
|
||||
usr << browse(null, "window=paiRecruit")
|
||||
@@ -227,7 +227,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
|
||||
M << browse(dat, "window=paiRecruit;size=580x580;")
|
||||
|
||||
/datum/paiController/proc/findPAI(var/obj/item/device/paicard/p, var/mob/user)
|
||||
/datum/paiController/proc/findPAI(var/obj/item/paicard/p, var/mob/user)
|
||||
requestRecruits(user)
|
||||
var/list/available = list()
|
||||
for(var/datum/paiCandidate/c in paiController.pai_candidates)
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
//
|
||||
//Robotic Component Analyser, basically a health analyser for robots
|
||||
//
|
||||
/obj/item/device/robotanalyzer
|
||||
/obj/item/robotanalyzer
|
||||
name = "cyborg analyzer"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
pickup_sound = 'sound/items/pickup/device.ogg'
|
||||
drop_sound = 'sound/items/drop/device.ogg'
|
||||
icon_state = "robotanalyzer"
|
||||
item_state = "analyzer"
|
||||
desc = "A hand-held scanner able to diagnose robotic injuries."
|
||||
@@ -16,10 +18,10 @@
|
||||
matter = list(MAT_STEEL = 500, "glass" = 200)
|
||||
var/mode = 1;
|
||||
|
||||
/obj/item/device/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
/obj/item/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
do_scan(M, user)
|
||||
|
||||
/obj/item/device/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob)
|
||||
/obj/item/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
to_chat(user, "<font color='red'>You try to analyze the floor's vitals!</font>")
|
||||
for(var/mob/O in viewers(M, null))
|
||||
|
||||
@@ -119,7 +119,7 @@ var/list/mob_hat_cache = list()
|
||||
|
||||
/mob/living/silicon/robot/drone/init()
|
||||
if(!scrambledcodes && !foreign_droid)
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/drone_camera(src)
|
||||
additional_law_channels["Drone"] = ":d"
|
||||
if(!laws) laws = new law_type
|
||||
if(!module) module = new module_type(src)
|
||||
@@ -182,7 +182,7 @@ var/list/mob_hat_cache = list()
|
||||
to_chat(user, "<span class='danger'>\The [src] is hermetically sealed. You can't open the case.</span>")
|
||||
return
|
||||
|
||||
else if (istype(W, /obj/item/card/id)||istype(W, /obj/item/device/pda))
|
||||
else if (istype(W, /obj/item/card/id)||istype(W, /obj/item/pda))
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
if(stat == 2)
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
description_info = "Ctrl-Clicking on the gripper will drop whatever it is holding.<br>\
|
||||
Using an object on the gripper will interact with the item inside it, if it exists, instead."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
pickup_sound = 'sound/items/pickup/device.ogg'
|
||||
drop_sound = 'sound/items/drop/device.ogg'
|
||||
icon_state = "gripper"
|
||||
|
||||
flags = NOBLUDGEON
|
||||
@@ -71,9 +73,9 @@
|
||||
/obj/item/pen,
|
||||
/obj/item/sample,
|
||||
/obj/item/forensics/sample_kit,
|
||||
/obj/item/device/taperecorder,
|
||||
/obj/item/device/tape,
|
||||
/obj/item/device/uv_light
|
||||
/obj/item/taperecorder,
|
||||
/obj/item/tape,
|
||||
/obj/item/uv_light
|
||||
)
|
||||
|
||||
/obj/item/gripper/paperwork
|
||||
@@ -109,15 +111,15 @@
|
||||
can_hold = list(
|
||||
/obj/item/cell,
|
||||
/obj/item/stock_parts,
|
||||
/obj/item/device/mmi,
|
||||
/obj/item/mmi,
|
||||
/obj/item/robot_parts,
|
||||
/obj/item/borg/upgrade,
|
||||
/obj/item/device/flash, //to build borgs,
|
||||
/obj/item/flash, //to build borgs,
|
||||
/obj/item/disk,
|
||||
/obj/item/circuitboard,
|
||||
/obj/item/reagent_containers/glass,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/healthanalyzer, //to build medibots,
|
||||
/obj/item/assembly/prox_sensor,
|
||||
/obj/item/healthanalyzer, //to build medibots,
|
||||
/obj/item/slime_cube,
|
||||
/obj/item/slime_crystal,
|
||||
/obj/item/disposable_teleporter/slime,
|
||||
@@ -134,8 +136,8 @@
|
||||
|
||||
can_hold = list(
|
||||
/obj/item/cell/device,
|
||||
/obj/item/device/electronic_assembly,
|
||||
/obj/item/device/assembly/electronic_assembly,
|
||||
/obj/item/electronic_assembly,
|
||||
/obj/item/assembly/electronic_assembly,
|
||||
/obj/item/clothing/under/circuitry,
|
||||
/obj/item/clothing/gloves/circuitry,
|
||||
/obj/item/clothing/glasses/circuitry,
|
||||
@@ -409,6 +411,8 @@
|
||||
name = "matter decompiler"
|
||||
desc = "Eating trash, bits of glass, or other debris will replenish your stores."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
pickup_sound = 'sound/items/pickup/device.ogg'
|
||||
drop_sound = 'sound/items/drop/device.ogg'
|
||||
icon_state = "decompiler"
|
||||
|
||||
//Metal, glass, wood, plastic.
|
||||
@@ -571,7 +575,7 @@
|
||||
else
|
||||
module_string += text("[O]: <A HREF=?src=\ref[src];act=\ref[O]>Activate</A><BR>")
|
||||
|
||||
if((istype(O,/obj/item/weapon) || istype(O,/obj/item/device)) && !(istype(O,/obj/item/stack/cable_coil)))
|
||||
if(istype(O, /obj/item) && !(istype(O,/obj/item/stack/cable_coil)))
|
||||
tools += module_string
|
||||
else
|
||||
resources += module_string
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
name = "matter assimilator"
|
||||
desc = "Used to eat some forms of simple machinery; and large, wall-shaped blocks of metal with energetic fields."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
pickup_sound = 'sound/items/pickup/device.ogg'
|
||||
drop_sound = 'sound/items/drop/device.ogg'
|
||||
icon_state = "decompiler_swarm"
|
||||
|
||||
var/field_cooldown = 1 MINUTE
|
||||
|
||||
@@ -322,7 +322,7 @@
|
||||
if(client)
|
||||
client.screen -= contents
|
||||
for(var/obj/I in contents)
|
||||
if(I && !(istype(I,/obj/item/cell) || istype(I,/obj/item/device/radio) || istype(I,/obj/machinery/camera) || istype(I,/obj/item/device/mmi)))
|
||||
if(I && !(istype(I,/obj/item/cell) || istype(I,/obj/item/radio) || istype(I,/obj/machinery/camera) || istype(I,/obj/item/mmi)))
|
||||
client.screen += I
|
||||
if(module_state_1)
|
||||
module_state_1:screen_loc = ui_inv1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/living/silicon/robot/proc/photosync()
|
||||
var/obj/item/device/camera/siliconcam/master_cam = connected_ai ? connected_ai.aiCamera : null
|
||||
var/obj/item/camera/siliconcam/master_cam = connected_ai ? connected_ai.aiCamera : null
|
||||
if (!master_cam)
|
||||
return
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@
|
||||
var/module_state_2 = null
|
||||
var/module_state_3 = null
|
||||
|
||||
var/obj/item/device/radio/borg/radio = null
|
||||
var/obj/item/device/communicator/integrated/communicator = null
|
||||
var/obj/item/radio/borg/radio = null
|
||||
var/obj/item/communicator/integrated/communicator = null
|
||||
var/mob/living/silicon/ai/connected_ai = null
|
||||
var/obj/item/cell/cell = null
|
||||
var/obj/machinery/camera/camera = null
|
||||
@@ -59,9 +59,9 @@
|
||||
// Components are basically robot organs.
|
||||
var/list/components = list()
|
||||
|
||||
var/obj/item/device/mmi/mmi = null
|
||||
var/obj/item/mmi/mmi = null
|
||||
|
||||
var/obj/item/device/pda/ai/rbPDA = null
|
||||
var/obj/item/pda/ai/rbPDA = null
|
||||
|
||||
var/opened = 0
|
||||
var/emagged = 0
|
||||
@@ -117,8 +117,8 @@
|
||||
updatename(modtype)
|
||||
updateicon()
|
||||
|
||||
radio = new /obj/item/device/radio/borg(src)
|
||||
// communicator = new /obj/item/device/communicator/integrated(src)
|
||||
radio = new /obj/item/radio/borg(src)
|
||||
// communicator = new /obj/item/communicator/integrated(src)
|
||||
// communicator.register_device(src)
|
||||
common_radio = radio
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL)
|
||||
|
||||
/mob/living/silicon/robot/proc/init()
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
|
||||
laws = new /datum/ai_laws/nanotrasen()
|
||||
additional_law_channels["Binary"] = "#b"
|
||||
var/new_ai = select_active_ai_with_fewest_borgs()
|
||||
@@ -208,12 +208,12 @@
|
||||
// setup the PDA and its name
|
||||
/mob/living/silicon/robot/proc/setup_PDA()
|
||||
if (!rbPDA)
|
||||
rbPDA = new/obj/item/device/pda/ai(src)
|
||||
rbPDA = new/obj/item/pda/ai(src)
|
||||
rbPDA.set_name_and_job(custom_name,"[modtype] [braintype]")
|
||||
|
||||
/mob/living/silicon/robot/proc/setup_communicator()
|
||||
if (!communicator)
|
||||
communicator = new/obj/item/device/communicator/integrated(src)
|
||||
communicator = new/obj/item/communicator/integrated(src)
|
||||
communicator.register_device(src.name, "[modtype] [braintype]")
|
||||
|
||||
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
|
||||
@@ -282,11 +282,11 @@
|
||||
notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name)
|
||||
|
||||
/mob/living/silicon/robot/proc/update_braintype()
|
||||
if(istype(mmi, /obj/item/device/mmi/digital/posibrain))
|
||||
if(istype(mmi, /obj/item/mmi/digital/posibrain))
|
||||
braintype = BORG_BRAINTYPE_POSI
|
||||
else if(istype(mmi, /obj/item/device/mmi/digital/robot))
|
||||
else if(istype(mmi, /obj/item/mmi/digital/robot))
|
||||
braintype = BORG_BRAINTYPE_DRONE
|
||||
else if(istype(mmi, /obj/item/device/mmi/inert/ai_remote))
|
||||
else if(istype(mmi, /obj/item/mmi/inert/ai_remote))
|
||||
braintype = BORG_BRAINTYPE_AI_SHELL
|
||||
else
|
||||
braintype = BORG_BRAINTYPE_CYBORG
|
||||
@@ -617,7 +617,7 @@
|
||||
C.brute_damage = 0
|
||||
C.electronics_damage = 0
|
||||
|
||||
else if (W.is_wirecutter() || istype(W, /obj/item/device/multitool))
|
||||
else if (W.is_wirecutter() || istype(W, /obj/item/multitool))
|
||||
if (wiresexposed)
|
||||
wires.Interact(user)
|
||||
else
|
||||
@@ -651,7 +651,7 @@
|
||||
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/device/encryptionkey/) && opened)
|
||||
else if(istype(W, /obj/item/encryptionkey/) && opened)
|
||||
if(radio)//sanityyyyyy
|
||||
radio.attackby(W,user)//GTFO, you have your own procs
|
||||
else
|
||||
@@ -688,7 +688,7 @@
|
||||
|
||||
|
||||
else
|
||||
if( !(istype(W, /obj/item/device/robotanalyzer) || istype(W, /obj/item/device/healthanalyzer)) )
|
||||
if( !(istype(W, /obj/item/robotanalyzer) || istype(W, /obj/item/healthanalyzer)) )
|
||||
if(W.force > 0)
|
||||
spark_system.start()
|
||||
return ..()
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
src.modules += new /obj/item/borg/combat/shield(src)
|
||||
|
||||
// Med
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/healthanalyzer(src)
|
||||
src.modules += new /obj/item/reagent_containers/borghypo/lost(src)
|
||||
|
||||
// Engi
|
||||
@@ -28,10 +28,10 @@
|
||||
src.modules += new /obj/item/tool/screwdriver/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wirecutters/cyborg(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/multitool(src)
|
||||
|
||||
// Sci
|
||||
src.modules += new /obj/item/device/robotanalyzer(src)
|
||||
src.modules += new /obj/item/robotanalyzer(src)
|
||||
|
||||
// Potato
|
||||
src.emag = new /obj/item/gun/energy/retro/mounted(src)
|
||||
@@ -69,7 +69,7 @@
|
||||
// For growing flowers
|
||||
src.modules += new /obj/item/material/minihoe(src)
|
||||
src.modules += new /obj/item/material/knife/machete/hatchet(src)
|
||||
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
|
||||
src.modules += new /obj/item/analyzer/plant_analyzer(src)
|
||||
src.modules += new /obj/item/storage/bag/plants(src)
|
||||
src.modules += new /obj/item/robot_harvester(src)
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ var/global/list/robot_modules = list(
|
||||
handle_shell(R)
|
||||
|
||||
if(R.radio)
|
||||
addtimer(CALLBACK(R.radio, /obj/item/device/radio/proc/recalculateChannels), 0)
|
||||
addtimer(CALLBACK(R.radio, /obj/item/radio/proc/recalculateChannels), 0)
|
||||
|
||||
R.set_module_sprites(sprites)
|
||||
addtimer(CALLBACK(R, /mob/living/silicon/robot/proc/choose_icon, R.module_sprites.len + 1, R.module_sprites), 0)
|
||||
@@ -175,10 +175,10 @@ var/global/list/robot_modules = list(
|
||||
if(. != INITIALIZE_HINT_NORMAL)
|
||||
return
|
||||
|
||||
src.modules += new /obj/item/device/flash/robot(src)
|
||||
src.modules += new /obj/item/flash/robot(src)
|
||||
src.modules += new /obj/item/tool/crowbar/cyborg(src)
|
||||
src.modules += new /obj/item/extinguisher(src)
|
||||
src.modules += new /obj/item/device/gps/robot(src)
|
||||
src.modules += new /obj/item/gps/robot(src)
|
||||
|
||||
/obj/item/robot_module/robot/standard
|
||||
name = "standard robot module"
|
||||
@@ -212,7 +212,7 @@ var/global/list/robot_modules = list(
|
||||
|
||||
src.modules += new /obj/item/melee/baton/loaded(src)
|
||||
src.modules += new /obj/item/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/healthanalyzer(src)
|
||||
src.emag = new /obj/item/melee/energy/sword(src)
|
||||
|
||||
/obj/item/robot_module/robot/medical
|
||||
@@ -252,7 +252,7 @@ var/global/list/robot_modules = list(
|
||||
if(. != INITIALIZE_HINT_NORMAL)
|
||||
return
|
||||
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/healthanalyzer(src)
|
||||
src.modules += new /obj/item/reagent_containers/borghypo/surgeon(src)
|
||||
src.modules += new /obj/item/autopsy_scanner(src)
|
||||
src.modules += new /obj/item/surgical/scalpel/cyborg(src)
|
||||
@@ -332,8 +332,8 @@ var/global/list/robot_modules = list(
|
||||
if(. != INITIALIZE_HINT_NORMAL)
|
||||
return
|
||||
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/device/reagent_scanner/adv(src)
|
||||
src.modules += new /obj/item/healthanalyzer(src)
|
||||
src.modules += new /obj/item/reagent_scanner/adv(src)
|
||||
src.modules += new /obj/item/roller_holder(src)
|
||||
src.modules += new /obj/item/reagent_containers/borghypo/crisis(src)
|
||||
src.modules += new /obj/item/reagent_containers/glass/beaker/large(src)
|
||||
@@ -420,18 +420,18 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/tool/screwdriver/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wirecutters/cyborg(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/device/t_scanner(src)
|
||||
src.modules += new /obj/item/device/analyzer(src)
|
||||
src.modules += new /obj/item/multitool(src)
|
||||
src.modules += new /obj/item/t_scanner(src)
|
||||
src.modules += new /obj/item/analyzer(src)
|
||||
src.modules += new /obj/item/taperoll/engineering(src)
|
||||
src.modules += new /obj/item/gripper(src)
|
||||
src.modules += new /obj/item/gripper/circuit(src)
|
||||
src.modules += new /obj/item/device/lightreplacer(src)
|
||||
src.modules += new /obj/item/device/pipe_painter(src)
|
||||
src.modules += new /obj/item/device/floor_painter(src)
|
||||
src.modules += new /obj/item/lightreplacer(src)
|
||||
src.modules += new /obj/item/pipe_painter(src)
|
||||
src.modules += new /obj/item/floor_painter(src)
|
||||
src.modules += new /obj/item/inflatable_dispenser/robot(src)
|
||||
src.emag = new /obj/item/melee/baton/robot/arm(src)
|
||||
src.modules += new /obj/item/device/geiger(src)
|
||||
src.modules += new /obj/item/geiger(src)
|
||||
src.modules += new /obj/item/rcd/electric/mounted/borg(src)
|
||||
src.modules += new /obj/item/pickaxe/plasmacutter(src)
|
||||
src.modules += new /obj/item/gripper/no_use/loader(src)
|
||||
@@ -546,7 +546,7 @@ var/global/list/robot_modules = list(
|
||||
src.emag = new /obj/item/gun/energy/laser/mounted(src)
|
||||
|
||||
/obj/item/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/flash/F = locate() in src.modules
|
||||
var/obj/item/flash/F = locate() in src.modules
|
||||
if(F.broken)
|
||||
F.broken = 0
|
||||
F.times_used = 0
|
||||
@@ -591,13 +591,13 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/soap/nanotrasen(src)
|
||||
src.modules += new /obj/item/storage/bag/trash(src)
|
||||
src.modules += new /obj/item/mop(src)
|
||||
src.modules += new /obj/item/device/lightreplacer(src)
|
||||
src.modules += new /obj/item/lightreplacer(src)
|
||||
src.emag = new /obj/item/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("lube", 250)
|
||||
src.emag.name = "Lube spray"
|
||||
|
||||
/obj/item/robot_module/robot/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
var/obj/item/lightreplacer/LR = locate() in src.modules
|
||||
LR.Charge(R, amount)
|
||||
if(src.emag)
|
||||
var/obj/item/reagent_containers/spray/S = src.emag
|
||||
@@ -661,12 +661,12 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/reagent_containers/glass/bucket(src)
|
||||
src.modules += new /obj/item/material/minihoe(src)
|
||||
src.modules += new /obj/item/material/knife/machete/hatchet(src)
|
||||
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
|
||||
src.modules += new /obj/item/analyzer/plant_analyzer(src)
|
||||
src.modules += new /obj/item/storage/bag/plants(src)
|
||||
src.modules += new /obj/item/robot_harvester(src)
|
||||
src.modules += new /obj/item/material/knife(src)
|
||||
src.modules += new /obj/item/material/kitchen/rollingpin(src)
|
||||
src.modules += new /obj/item/device/multitool(src) //to freeze trays
|
||||
src.modules += new /obj/item/multitool(src) //to freeze trays
|
||||
|
||||
var/obj/item/rsf/M = new /obj/item/rsf(src)
|
||||
M.stored_matter = 30
|
||||
@@ -806,13 +806,13 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/gripper/no_use/organ/robotics(src)
|
||||
src.modules += new /obj/item/gripper/no_use/mech(src)
|
||||
src.modules += new /obj/item/gripper/no_use/loader(src)
|
||||
src.modules += new /obj/item/device/robotanalyzer(src)
|
||||
src.modules += new /obj/item/robotanalyzer(src)
|
||||
src.modules += new /obj/item/card/robot(src)
|
||||
src.modules += new /obj/item/weldingtool/electric/mounted/cyborg(src)
|
||||
src.modules += new /obj/item/tool/screwdriver/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wirecutters/cyborg(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/multitool(src)
|
||||
src.modules += new /obj/item/surgical/scalpel/cyborg(src)
|
||||
src.modules += new /obj/item/surgical/circular_saw/cyborg(src)
|
||||
src.modules += new /obj/item/reagent_containers/syringe(src)
|
||||
@@ -821,9 +821,9 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/shockpaddles/robot/jumper(src)
|
||||
src.modules += new /obj/item/melee/baton/slime/robot(src)
|
||||
src.modules += new /obj/item/gun/energy/taser/xeno/robot(src)
|
||||
src.modules += new /obj/item/device/xenoarch_multi_tool(src)
|
||||
src.modules += new /obj/item/xenoarch_multi_tool(src)
|
||||
src.modules += new /obj/item/pickaxe/excavationdrill(src)
|
||||
src.modules += new /obj/item/device/cataloguer(src)
|
||||
src.modules += new /obj/item/cataloguer(src)
|
||||
|
||||
src.emag = new /obj/item/hand_tele(src)
|
||||
|
||||
@@ -870,7 +870,7 @@ var/global/list/robot_modules = list(
|
||||
if(. != INITIALIZE_HINT_NORMAL)
|
||||
return
|
||||
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/flash(src)
|
||||
src.modules += new /obj/item/borg/sight/thermal(src)
|
||||
src.modules += new /obj/item/gun/energy/laser/mounted(src)
|
||||
src.modules += new /obj/item/pickaxe/plasmacutter(src)
|
||||
@@ -899,15 +899,15 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/tool/crowbar/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wirecutters/cyborg(src)
|
||||
src.modules += new /obj/item/device/t_scanner(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/device/lightreplacer(src)
|
||||
src.modules += new /obj/item/t_scanner(src)
|
||||
src.modules += new /obj/item/multitool(src)
|
||||
src.modules += new /obj/item/lightreplacer(src)
|
||||
src.modules += new /obj/item/gripper(src)
|
||||
src.modules += new /obj/item/soap(src)
|
||||
src.modules += new /obj/item/gripper/no_use/loader(src)
|
||||
src.modules += new /obj/item/extinguisher(src)
|
||||
src.modules += new /obj/item/device/pipe_painter(src)
|
||||
src.modules += new /obj/item/device/floor_painter(src)
|
||||
src.modules += new /obj/item/pipe_painter(src)
|
||||
src.modules += new /obj/item/floor_painter(src)
|
||||
|
||||
var/mob/living/silicon/robot/robit = loc
|
||||
robit.internals = new/obj/item/tank/jetpack/carbondioxide(src)
|
||||
@@ -985,7 +985,7 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/rcd/electric/mounted/borg/lesser(src)
|
||||
|
||||
/obj/item/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
var/obj/item/lightreplacer/LR = locate() in src.modules
|
||||
LR.Charge(R, amount)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
id = R.idcard
|
||||
src.modules += id
|
||||
src.modules += new /obj/item/rcd/electric/mounted/borg/swarm(src)
|
||||
src.modules += new /obj/item/device/flash/robot(src)
|
||||
src.modules += new /obj/item/flash/robot(src)
|
||||
src.modules += new /obj/item/handcuffs/cable/tape/cyborg(src)
|
||||
src.modules += new /obj/item/melee/baton/robot(src)
|
||||
src.modules += new /obj/item/gun/energy/taser/mounted/cyborg/swarm(src)
|
||||
|
||||
@@ -100,13 +100,13 @@
|
||||
src.modules += new /obj/item/tool/screwdriver/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/tool/wirecutters/cyborg(src)
|
||||
src.modules += new /obj/item/device/multitool/ai_detector(src)
|
||||
src.modules += new /obj/item/multitool/ai_detector(src)
|
||||
src.modules += new /obj/item/pickaxe/plasmacutter(src)
|
||||
src.modules += new /obj/item/rcd/electric/mounted/borg/lesser(src) // Can't eat rwalls to prevent AI core cheese.
|
||||
src.modules += new /obj/item/melee/energy/sword/ionic_rapier(src)
|
||||
|
||||
// FBP repair.
|
||||
src.modules += new /obj/item/device/robotanalyzer(src)
|
||||
src.modules += new /obj/item/robotanalyzer(src)
|
||||
src.modules += new /obj/item/shockpaddles/robot/jumper(src)
|
||||
src.modules += new /obj/item/gripper/no_use/organ/robotics(src)
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
return
|
||||
|
||||
src.modules += new /obj/item/borg/sight/hud/med(src)
|
||||
src.modules += new /obj/item/device/healthanalyzer/advanced(src)
|
||||
src.modules += new /obj/item/healthanalyzer/advanced(src)
|
||||
src.modules += new /obj/item/reagent_containers/borghypo/merc(src)
|
||||
|
||||
// Surgery things.
|
||||
|
||||
@@ -9,13 +9,13 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
|
||||
|
||||
// Premade AI shell, for roundstart shells.
|
||||
/mob/living/silicon/robot/ai_shell/Initialize()
|
||||
mmi = new /obj/item/device/mmi/inert/ai_remote(src)
|
||||
mmi = new /obj/item/mmi/inert/ai_remote(src)
|
||||
post_mmi_setup()
|
||||
return ..()
|
||||
|
||||
// Call after inserting or instantiating an MMI.
|
||||
/mob/living/silicon/robot/proc/post_mmi_setup()
|
||||
if(istype(mmi, /obj/item/device/mmi/inert/ai_remote))
|
||||
if(istype(mmi, /obj/item/mmi/inert/ai_remote))
|
||||
make_shell()
|
||||
playsound(src, 'sound/machines/twobeep.ogg', 50, 0)
|
||||
else
|
||||
@@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
|
||||
shell = TRUE
|
||||
braintype = "AI Shell"
|
||||
SetName("[modtype] AI Shell [num2text(ident)]")
|
||||
rbPDA = new /obj/item/device/pda/ai/shell(src)
|
||||
rbPDA = new /obj/item/pda/ai/shell(src)
|
||||
setup_PDA()
|
||||
GLOB.available_ai_shells |= src
|
||||
if(!QDELETED(camera))
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
can_be_antagged = FALSE
|
||||
|
||||
/mob/living/silicon/robot/gravekeeper/init()
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
|
||||
|
||||
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
|
||||
mmi = new /obj/item/mmi/digital/robot(src) // Explicitly a drone.
|
||||
module = new /obj/item/robot_module/robot/gravekeeper(src)
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
icon_selected = FALSE
|
||||
|
||||
/mob/living/silicon/robot/lost/init()
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
|
||||
|
||||
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
|
||||
mmi = new /obj/item/mmi/digital/robot(src) // Explicitly a drone.
|
||||
module = new /obj/item/robot_module/robot/lost(src)
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
icon_selected = FALSE
|
||||
|
||||
/mob/living/silicon/robot/syndicate/init()
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
|
||||
|
||||
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
|
||||
mmi = new /obj/item/mmi/digital/robot(src) // Explicitly a drone.
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
laws = new /datum/ai_laws/syndicate_override()
|
||||
|
||||
radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio)
|
||||
radio.keyslot = new /obj/item/encryptionkey/syndicate(radio)
|
||||
radio.recalculateChannels()
|
||||
|
||||
playsound(src, 'sound/mecha/nominalsyndi.ogg', 75, 0)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
/mob/living/silicon/robot/platform/Initialize(var/mapload)
|
||||
. = ..()
|
||||
if(!mmi)
|
||||
mmi = new /obj/item/device/mmi/digital/robot(src)
|
||||
mmi = new /obj/item/mmi/digital/robot(src)
|
||||
SetName("inactive [initial(name)]")
|
||||
updateicon()
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE)
|
||||
add_overlay(I)
|
||||
|
||||
/mob/living/silicon/robot/platform/proc/try_paint(var/obj/item/device/floor_painter/painting, var/mob/user)
|
||||
/mob/living/silicon/robot/platform/proc/try_paint(var/obj/item/floor_painter/painting, var/mob/user)
|
||||
|
||||
var/obj/item/robot_module/robot/platform/tank_module = module
|
||||
if(!istype(tank_module))
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
user.visible_message(SPAN_NOTICE("\The [user] slots \the [W] into \the [src]'s recharging port."))
|
||||
return TRUE
|
||||
|
||||
if(istype(W, /obj/item/device/floor_painter))
|
||||
if(istype(W, /obj/item/floor_painter))
|
||||
return FALSE // Paint sprayer wil call try_paint() in afterattack()
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
modules += new /obj/item/packageWrap(src)
|
||||
modules += new /obj/item/pen/multi(src)
|
||||
modules += new /obj/item/device/destTagger(src)
|
||||
modules += new /obj/item/destTagger(src)
|
||||
emag = new /obj/item/stamp/denied
|
||||
|
||||
/obj/item/robot_module/robot/platform/cargo/respawn_consumable(mob/living/silicon/robot/R, rate)
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
. = ..()
|
||||
|
||||
/mob/living/silicon/robot/syndicate/init()
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
|
||||
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
new /obj/item/robot_module/robot/syndicate(src)
|
||||
|
||||
radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio)
|
||||
radio.keyslot = new /obj/item/encryptionkey/syndicate(radio)
|
||||
radio.recalculateChannels()
|
||||
|
||||
playsound(src, 'sound/mecha/nominalsyndi.ogg', 75, 0)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/const/MAIN_CHANNEL = "Main Frequency"
|
||||
var/lawchannel = MAIN_CHANNEL // Default channel on which to state laws
|
||||
var/list/stating_laws = list()// Channels laws are currently being stated on
|
||||
var/obj/item/device/radio/common_radio
|
||||
var/obj/item/radio/common_radio
|
||||
|
||||
has_huds = TRUE
|
||||
var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer
|
||||
@@ -15,7 +15,7 @@
|
||||
var/speak_exclamation = "declares"
|
||||
var/speak_query = "queries"
|
||||
var/pose //Yes, now AIs can pose too.
|
||||
var/obj/item/device/camera/siliconcam/aiCamera = null //photography
|
||||
var/obj/item/camera/siliconcam/aiCamera = null //photography
|
||||
var/local_transmit //If set, can only speak to others of the same type within a short range.
|
||||
|
||||
var/next_alarm_notice
|
||||
|
||||
@@ -170,7 +170,7 @@ var/list/_cat_default_emotes = list(
|
||||
say_got_target = list("MEOW!","HSSSS!","REEER!")
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
if(istype(W, /obj/item/pen) || istype(W, /obj/item/flashlight/pen))
|
||||
if(named)
|
||||
to_chat(user, "<span class='notice'>\the [name] already has a name!</span>")
|
||||
else
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
// A headset, so that talking parrots can yell at the crew over comms.
|
||||
// If set to a type, on initialize it will be instantiated into that type.
|
||||
var/obj/item/device/radio/headset/my_headset = null
|
||||
var/obj/item/radio/headset/my_headset = null
|
||||
|
||||
// Say list
|
||||
/datum/say_list/bird/poly
|
||||
@@ -44,13 +44,13 @@
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, used_radios, whispering)
|
||||
..()
|
||||
if(message_mode)
|
||||
if(my_headset && istype(my_headset, /obj/item/device/radio))
|
||||
if(my_headset && istype(my_headset, /obj/item/radio))
|
||||
my_headset.talk_into(src, message, message_mode, verb, whispering)
|
||||
used_radios += my_headset
|
||||
|
||||
// Clicked on while holding an object.
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/device/radio/headset))
|
||||
if(istype(I, /obj/item/radio/headset))
|
||||
give_headset(I, user)
|
||||
return
|
||||
return ..()
|
||||
@@ -63,7 +63,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/proc/give_headset(obj/item/device/radio/headset/new_headset, mob/living/user)
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/proc/give_headset(obj/item/radio/headset/new_headset, mob/living/user)
|
||||
if(!istype(new_headset))
|
||||
to_chat(user, span("warning", "\The [new_headset] isn't a headset."))
|
||||
return
|
||||
@@ -110,12 +110,12 @@
|
||||
icon_dead = "poly-dead"
|
||||
tt_desc = "E Ara macao"
|
||||
attack_armor_pen = 20 //HE HAS THE B E A K
|
||||
my_headset = /obj/item/device/radio/headset/headset_eng
|
||||
my_headset = /obj/item/radio/headset/headset_eng
|
||||
say_list_type = /datum/say_list/bird/poly
|
||||
|
||||
// Best Bird with best headset.
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/poly/ultimate
|
||||
my_headset = /obj/item/device/radio/headset/omni
|
||||
my_headset = /obj/item/radio/headset/omni
|
||||
|
||||
/mob/living/simple_mob/animal/passive/bird/parrot/kea
|
||||
name = "kea"
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
flee_when_dying = TRUE
|
||||
|
||||
var/greed = 0 // The probability we will try to steal something. Increases over time if we are not holding something, or wearing a hat.
|
||||
var/list/steal_loot_list = list(/obj/item/coin, /obj/item/gun, /obj/item/fossil, /obj/item/stack/material, /obj/item/material, /obj/item/reagent_containers/food/snacks, /obj/item/clothing/head, /obj/item/reagent_containers/glass, /obj/item/device/flashlight, /obj/item/stack/medical, /obj/item/seeds, /obj/item/spacecash)
|
||||
var/list/steal_loot_list = list(/obj/item/coin, /obj/item/gun, /obj/item/fossil, /obj/item/stack/material, /obj/item/material, /obj/item/reagent_containers/food/snacks, /obj/item/clothing/head, /obj/item/reagent_containers/glass, /obj/item/flashlight, /obj/item/stack/medical, /obj/item/seeds, /obj/item/spacecash)
|
||||
var/hoard_items = TRUE
|
||||
var/hoard_distance = 1 // How far an item can be from the Sakimm's home turf to be counted inside its 'hoard'.
|
||||
var/original_home_distance = null
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
loot_list = list(/obj/item/ectoplasm = 100)
|
||||
|
||||
/mob/living/simple_mob/construct/shade/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/device/soulstone))
|
||||
var/obj/item/device/soulstone/S = O;
|
||||
if(istype(O, /obj/item/soulstone))
|
||||
var/obj/item/soulstone/S = O;
|
||||
S.transfer_soul("SHADE", src, user)
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "unknown person"
|
||||
desc = "How are you examining me?"
|
||||
see_invisible = SEE_INVISIBLE_LIVING
|
||||
var/obj/item/device/communicator/comm = null
|
||||
var/obj/item/communicator/comm = null
|
||||
|
||||
emote_type = 2 //This lets them emote through containers. The communicator has a image feed of the person calling them so...
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
add_language(LANGUAGE_GALCOM)
|
||||
set_default_language(GLOB.all_languages[LANGUAGE_GALCOM])
|
||||
|
||||
if(istype(loc, /obj/item/device/communicator))
|
||||
if(istype(loc, /obj/item/communicator))
|
||||
comm = loc
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -172,11 +172,11 @@
|
||||
O.job = "Cyborg"
|
||||
if(O.mind.assigned_role == "Cyborg")
|
||||
if(O.mind.role_alt_title == "Robot")
|
||||
O.mmi = new /obj/item/device/mmi/digital/posibrain(O)
|
||||
O.mmi = new /obj/item/mmi/digital/posibrain(O)
|
||||
else if(O.mind.role_alt_title == "Drone")
|
||||
O.mmi = new /obj/item/device/mmi/digital/robot(O)
|
||||
O.mmi = new /obj/item/mmi/digital/robot(O)
|
||||
else
|
||||
O.mmi = new /obj/item/device/mmi(O)
|
||||
O.mmi = new /obj/item/mmi(O)
|
||||
|
||||
O.mmi.transfer_identity(src)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user