mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 04:57:12 +01:00
528 lines
18 KiB
Plaintext
528 lines
18 KiB
Plaintext
/obj/item/robot_module
|
|
name = "robot module"
|
|
icon = 'icons/obj/module.dmi'
|
|
icon_state = "std_module"
|
|
w_class = 100
|
|
item_state = "electronic"
|
|
flags = CONDUCT
|
|
|
|
var/list/modules = list()
|
|
var/obj/item/emag = null
|
|
var/list/subsystems = list()
|
|
var/list/module_actions = list()
|
|
|
|
var/module_type = "NoMod" // For icon usage
|
|
|
|
var/list/stacktypes
|
|
var/channels = list()
|
|
|
|
|
|
/obj/item/robot_module/emp_act(severity)
|
|
if(modules)
|
|
for(var/obj/O in modules)
|
|
O.emp_act(severity)
|
|
if(emag)
|
|
emag.emp_act(severity)
|
|
..()
|
|
|
|
|
|
/obj/item/robot_module/New()
|
|
modules += new /obj/item/flash/cyborg(src)
|
|
emag = new /obj/item/toy/sword(src)
|
|
emag.name = "Placeholder Emag Item"
|
|
|
|
/obj/item/robot_module/Destroy()
|
|
QDEL_LIST(modules)
|
|
QDEL_NULL(emag)
|
|
return ..()
|
|
|
|
/obj/item/robot_module/proc/fix_modules()
|
|
for(var/obj/item/I in modules)
|
|
I.flags |= NODROP
|
|
I.mouse_opacity = 2
|
|
if(emag)
|
|
emag.flags |= NODROP
|
|
emag.mouse_opacity = 2
|
|
|
|
/obj/item/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R)
|
|
if(!stacktypes || !stacktypes.len)
|
|
return
|
|
|
|
var/stack_respawned = 0
|
|
for(var/T in stacktypes)
|
|
var/O = locate(T) in modules
|
|
var/obj/item/stack/S = O
|
|
|
|
if(!S)
|
|
S = new T(src)
|
|
modules += S
|
|
S.amount = 1
|
|
stack_respawned = 1
|
|
|
|
if(S && S.amount < stacktypes[T])
|
|
S.amount++
|
|
if(stack_respawned && istype(R) && R.hud_used)
|
|
R.hud_used.update_robot_modules_display()
|
|
|
|
/obj/item/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module
|
|
var/list/temp_list = modules
|
|
modules = list()
|
|
for(var/obj/O in temp_list)
|
|
if(O)
|
|
modules += O
|
|
|
|
/obj/item/robot_module/proc/add_languages(mob/living/silicon/robot/R)
|
|
//full set of languages
|
|
R.add_language("Galactic Common", 1)
|
|
R.add_language("Sol Common", 1)
|
|
R.add_language("Tradeband", 1)
|
|
R.add_language("Gutter", 0)
|
|
R.add_language("Sinta'unathi", 0)
|
|
R.add_language("Siik'tajr", 0)
|
|
R.add_language("Canilunzt", 0)
|
|
R.add_language("Skrellian", 0)
|
|
R.add_language("Vox-pidgin", 0)
|
|
R.add_language("Rootspeak", 0)
|
|
R.add_language("Trinary", 1)
|
|
R.add_language("Chittin", 0)
|
|
R.add_language("Bubblish", 0)
|
|
R.add_language("Orluum", 0)
|
|
R.add_language("Clownish",0)
|
|
|
|
/obj/item/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R)
|
|
R.verbs |= subsystems
|
|
for(var/A in module_actions)
|
|
var/datum/action/act = new A()
|
|
act.Grant(R)
|
|
R.module_actions += act
|
|
|
|
/obj/item/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R)
|
|
R.verbs -= subsystems
|
|
for(var/datum/action/A in R.module_actions)
|
|
A.Remove(R)
|
|
qdel(A)
|
|
R.module_actions.Cut()
|
|
|
|
/obj/item/robot_module/standard
|
|
name = "standard robot module"
|
|
module_type = "Standard"
|
|
|
|
/obj/item/robot_module/standard/New()
|
|
..()
|
|
modules += new /obj/item/melee/baton/loaded(src)
|
|
modules += new /obj/item/extinguisher(src)
|
|
modules += new /obj/item/wrench/cyborg(src)
|
|
modules += new /obj/item/crowbar/cyborg(src)
|
|
modules += new /obj/item/healthanalyzer(src)
|
|
emag = new /obj/item/melee/energy/sword/cyborg(src)
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/medical
|
|
name = "medical robot module"
|
|
module_type = "Medical"
|
|
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
|
stacktypes = list(
|
|
/obj/item/stack/medical/bruise_pack/advanced = 6,
|
|
/obj/item/stack/medical/ointment/advanced = 6,
|
|
/obj/item/stack/medical/splint = 6,
|
|
/obj/item/stack/nanopaste = 6
|
|
)
|
|
|
|
/obj/item/robot_module/medical/New()
|
|
..()
|
|
modules += new /obj/item/healthanalyzer/advanced(src)
|
|
modules += new /obj/item/robotanalyzer(src)
|
|
modules += new /obj/item/reagent_scanner/adv(src)
|
|
modules += new /obj/item/borg_defib(src)
|
|
modules += new /obj/item/roller_holder(src)
|
|
modules += new /obj/item/reagent_containers/borghypo(src)
|
|
modules += new /obj/item/reagent_containers/glass/beaker/large(src)
|
|
modules += new /obj/item/reagent_containers/dropper(src)
|
|
modules += new /obj/item/reagent_containers/syringe(src)
|
|
modules += new /obj/item/extinguisher/mini(src)
|
|
modules += new /obj/item/stack/medical/bruise_pack/advanced(src)
|
|
modules += new /obj/item/stack/medical/ointment/advanced(src)
|
|
modules += new /obj/item/stack/medical/splint(src)
|
|
modules += new /obj/item/stack/nanopaste(src)
|
|
modules += new /obj/item/scalpel(src)
|
|
modules += new /obj/item/hemostat(src)
|
|
modules += new /obj/item/retractor(src)
|
|
modules += new /obj/item/cautery(src)
|
|
modules += new /obj/item/bonegel(src)
|
|
modules += new /obj/item/FixOVein(src)
|
|
modules += new /obj/item/bonesetter(src)
|
|
modules += new /obj/item/circular_saw(src)
|
|
modules += new /obj/item/surgicaldrill(src)
|
|
|
|
emag = new /obj/item/reagent_containers/spray(src)
|
|
|
|
emag.reagents.add_reagent("facid", 250)
|
|
emag.name = "Polyacid spray"
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/medical/respawn_consumable(mob/living/silicon/robot/R)
|
|
if(emag)
|
|
var/obj/item/reagent_containers/spray/PS = emag
|
|
PS.reagents.add_reagent("facid", 2)
|
|
..()
|
|
|
|
/obj/item/robot_module/engineering
|
|
name = "engineering robot module"
|
|
module_type = "Engineer"
|
|
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
|
|
module_actions = list(
|
|
/datum/action/innate/robot_sight/meson,
|
|
)
|
|
|
|
stacktypes = list(
|
|
/obj/item/stack/sheet/metal/cyborg = 50,
|
|
/obj/item/stack/sheet/glass/cyborg = 50,
|
|
/obj/item/stack/sheet/rglass/cyborg = 50,
|
|
/obj/item/stack/cable_coil/cyborg = 50,
|
|
/obj/item/stack/rods/cyborg = 60,
|
|
/obj/item/stack/tile/plasteel = 20
|
|
)
|
|
|
|
/obj/item/robot_module/engineering/New()
|
|
..()
|
|
modules += new /obj/item/rcd/borg(src)
|
|
modules += new /obj/item/rpd(src)
|
|
modules += new /obj/item/extinguisher(src)
|
|
modules += new /obj/item/weldingtool/largetank/cyborg(src)
|
|
modules += new /obj/item/screwdriver/cyborg(src)
|
|
modules += new /obj/item/wrench/cyborg(src)
|
|
modules += new /obj/item/crowbar/cyborg(src)
|
|
modules += new /obj/item/wirecutters/cyborg(src)
|
|
modules += new /obj/item/multitool/cyborg(src)
|
|
modules += new /obj/item/t_scanner(src)
|
|
modules += new /obj/item/analyzer(src)
|
|
modules += new /obj/item/taperoll/engineering(src)
|
|
modules += new /obj/item/gripper(src)
|
|
modules += new /obj/item/matter_decompiler(src)
|
|
modules += new /obj/item/floor_painter(src)
|
|
modules += new /obj/item/areaeditor/blueprints/cyborg(src)
|
|
emag = new /obj/item/borg/stun(src)
|
|
|
|
for(var/G in stacktypes) //Attempt to unify Engi-Borg material stacks into fewer lines. See Line 492 for example. Variables changed out of paranoia.
|
|
var/obj/item/stack/sheet/M = new G(src)
|
|
M.amount = stacktypes[G]
|
|
modules += M
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/security
|
|
name = "security robot module"
|
|
module_type = "Security"
|
|
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
|
|
|
/obj/item/robot_module/security/New()
|
|
..()
|
|
modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src)
|
|
modules += new /obj/item/melee/baton/loaded(src)
|
|
modules += new /obj/item/gun/energy/disabler/cyborg(src)
|
|
modules += new /obj/item/taperoll/police(src)
|
|
modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src)
|
|
emag = new /obj/item/gun/energy/laser/cyborg(src)
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/janitor
|
|
name = "janitorial robot module"
|
|
module_type = "Janitor"
|
|
|
|
/obj/item/robot_module/janitor/New()
|
|
..()
|
|
modules += new /obj/item/soap/nanotrasen(src)
|
|
modules += new /obj/item/storage/bag/trash/cyborg(src)
|
|
modules += new /obj/item/mop/advanced/cyborg(src)
|
|
modules += new /obj/item/lightreplacer(src)
|
|
modules += new /obj/item/holosign_creator(src)
|
|
emag = new /obj/item/reagent_containers/spray(src)
|
|
|
|
emag.reagents.add_reagent("lube", 250)
|
|
emag.name = "Lube spray"
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/butler
|
|
name = "service robot module"
|
|
module_type = "Service"
|
|
|
|
/obj/item/robot_module/butler/New()
|
|
..()
|
|
modules += new /obj/item/reagent_containers/food/drinks/cans/beer(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/cans/cola(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/cans/sodawater(src)
|
|
modules += new /obj/item/reagent_containers/food/condiment/enzyme(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/orangejuice(src) // -0.3 oxy/sec
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/tomatojuice(src) // -0.2 fire/sec
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/limejuice(src) // -0.2 tox/sec
|
|
modules += new /obj/item/reagent_containers/food/drinks/coffee(src) // -1 paralysis stunned & weakened/sec
|
|
modules += new /obj/item/reagent_containers/food/drinks/tea(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/milk(src) // -0.2 brute/sec
|
|
modules += new /obj/item/reagent_containers/food/condiment/sugar(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/ice(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/cream(src)
|
|
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/tequila(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/bottle/whiskey(src)
|
|
|
|
modules += new /obj/item/pen(src)
|
|
modules += new /obj/item/razor(src)
|
|
modules += new /obj/item/instrument/piano_synth(src)
|
|
modules += new /obj/item/healthanalyzer/advanced(src)
|
|
|
|
var/obj/item/rsf/M = new /obj/item/rsf(src)
|
|
M.matter = 30
|
|
modules += M
|
|
|
|
modules += new /obj/item/reagent_containers/dropper/cyborg(src)
|
|
modules += new /obj/item/lighter/zippo(src)
|
|
modules += new /obj/item/storage/bag/tray/cyborg(src)
|
|
modules += new /obj/item/reagent_containers/food/drinks/shaker(src)
|
|
emag = new /obj/item/reagent_containers/food/drinks/cans/beer(src)
|
|
|
|
var/datum/reagents/R = new/datum/reagents(50)
|
|
emag.reagents = R
|
|
R.my_atom = emag
|
|
R.add_reagent("beer2", 50)
|
|
emag.name = "Mickey Finn's Special Brew"
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/butler/respawn_consumable(var/mob/living/silicon/robot/R)
|
|
var/obj/item/reagent_containers/food/condiment/enzyme/E = locate() in modules
|
|
E.reagents.add_reagent("enzyme", 2)
|
|
if(emag)
|
|
var/obj/item/reagent_containers/food/drinks/cans/beer/B = emag
|
|
B.reagents.add_reagent("beer2", 2)
|
|
..()
|
|
|
|
/obj/item/robot_module/butler/add_languages(var/mob/living/silicon/robot/R)
|
|
//full set of languages
|
|
R.add_language("Galactic Common", 1)
|
|
R.add_language("Sol Common", 1)
|
|
R.add_language("Tradeband", 1)
|
|
R.add_language("Gutter", 1)
|
|
R.add_language("Sinta'unathi", 1)
|
|
R.add_language("Siik'tajr", 1)
|
|
R.add_language("Canilunzt", 1)
|
|
R.add_language("Skrellian", 1)
|
|
R.add_language("Vox-pidgin", 1)
|
|
R.add_language("Rootspeak", 1)
|
|
R.add_language("Trinary", 1)
|
|
R.add_language("Chittin", 1)
|
|
R.add_language("Bubblish", 1)
|
|
R.add_language("Clownish",1)
|
|
|
|
|
|
/obj/item/robot_module/miner
|
|
name = "miner robot module"
|
|
module_type = "Miner"
|
|
module_actions = list(
|
|
/datum/action/innate/robot_sight/meson,
|
|
)
|
|
|
|
/obj/item/robot_module/miner/New()
|
|
..()
|
|
modules += new /obj/item/storage/bag/ore/cyborg(src)
|
|
modules += new /obj/item/pickaxe/drill/cyborg(src)
|
|
modules += new /obj/item/shovel(src)
|
|
modules += new /obj/item/weldingtool/mini(src)
|
|
modules += new /obj/item/extinguisher/mini(src)
|
|
modules += new /obj/item/storage/bag/sheetsnatcher/borg(src)
|
|
modules += new /obj/item/t_scanner/adv_mining_scanner/cyborg(src)
|
|
modules += new /obj/item/gun/energy/kinetic_accelerator/cyborg(src)
|
|
modules += new /obj/item/gps/cyborg(src)
|
|
emag = new /obj/item/borg/stun(src)
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/deathsquad
|
|
name = "NT advanced combat module"
|
|
module_type = "Malf"
|
|
module_actions = list(
|
|
/datum/action/innate/robot_sight/thermal,
|
|
)
|
|
|
|
/obj/item/robot_module/deathsquad/New()
|
|
..()
|
|
modules += new /obj/item/melee/energy/sword/cyborg(src)
|
|
modules += new /obj/item/gun/energy/pulse/cyborg(src)
|
|
modules += new /obj/item/crowbar(src)
|
|
emag = null
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/syndicate
|
|
name = "syndicate assault robot module"
|
|
module_type = "Malf" // cuz it looks cool
|
|
|
|
/obj/item/robot_module/syndicate/New()
|
|
..()
|
|
modules += new /obj/item/melee/energy/sword/cyborg(src)
|
|
modules += new /obj/item/gun/energy/printer(src)
|
|
modules += new /obj/item/gun/projectile/revolver/grenadelauncher/multi/cyborg(src)
|
|
modules += new /obj/item/card/emag(src)
|
|
modules += new /obj/item/crowbar/cyborg(src)
|
|
modules += new /obj/item/pinpointer/operative(src)
|
|
emag = null
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/syndicate_medical
|
|
name = "syndicate medical robot module"
|
|
module_type = "Malf"
|
|
stacktypes = list(
|
|
/obj/item/stack/medical/bruise_pack/advanced = 25,
|
|
/obj/item/stack/medical/ointment/advanced = 25,
|
|
/obj/item/stack/medical/splint = 25,
|
|
/obj/item/stack/nanopaste = 25
|
|
)
|
|
|
|
/obj/item/robot_module/syndicate_medical/New()
|
|
..()
|
|
modules += new /obj/item/healthanalyzer/advanced(src)
|
|
modules += new /obj/item/reagent_scanner/adv(src)
|
|
modules += new /obj/item/borg_defib(src)
|
|
modules += new /obj/item/roller_holder(src)
|
|
modules += new /obj/item/reagent_containers/borghypo/syndicate(src)
|
|
modules += new /obj/item/extinguisher/mini(src)
|
|
modules += new /obj/item/stack/medical/bruise_pack/advanced(src)
|
|
modules += new /obj/item/stack/medical/ointment/advanced(src)
|
|
modules += new /obj/item/stack/medical/splint(src)
|
|
modules += new /obj/item/stack/nanopaste(src)
|
|
modules += new /obj/item/scalpel(src)
|
|
modules += new /obj/item/hemostat(src)
|
|
modules += new /obj/item/retractor(src)
|
|
modules += new /obj/item/cautery(src)
|
|
modules += new /obj/item/bonegel(src)
|
|
modules += new /obj/item/FixOVein(src)
|
|
modules += new /obj/item/bonesetter(src)
|
|
modules += new /obj/item/surgicaldrill(src)
|
|
modules += new /obj/item/melee/energy/sword/cyborg/saw(src) //Energy saw -- primary weapon
|
|
modules += new /obj/item/card/emag(src)
|
|
modules += new /obj/item/crowbar/cyborg(src)
|
|
modules += new /obj/item/pinpointer/operative(src)
|
|
emag = null
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/combat
|
|
name = "combat robot module"
|
|
module_type = "Malf"
|
|
module_actions = list(
|
|
/datum/action/innate/robot_sight/thermal,
|
|
)
|
|
|
|
/obj/item/robot_module/combat/New()
|
|
..()
|
|
modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src)
|
|
modules += new /obj/item/gun/energy/gun/cyborg(src)
|
|
modules += new /obj/item/pickaxe/drill/jackhammer(src)
|
|
modules += new /obj/item/borg/combat/shield(src)
|
|
modules += new /obj/item/borg/combat/mobility(src)
|
|
modules += new /obj/item/wrench/cyborg(src)
|
|
emag = new /obj/item/gun/energy/lasercannon/cyborg(src)
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/nations
|
|
name = "nations robot module"
|
|
module_type = "Malf"
|
|
|
|
/obj/item/robot_module/nations/New()
|
|
..()
|
|
modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src)
|
|
modules += new /obj/item/gun/energy/gun/cyborg(src)
|
|
modules += new /obj/item/pickaxe/drill/jackhammer(src)
|
|
modules += new /obj/item/borg/combat/shield(src)
|
|
modules += new /obj/item/borg/combat/mobility(src)
|
|
modules += new /obj/item/wrench/cyborg(src)
|
|
emag = new /obj/item/gun/energy/lasercannon/cyborg(src)
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/alien/hunter
|
|
name = "alien hunter module"
|
|
module_type = "Standard"
|
|
module_actions = list(
|
|
/datum/action/innate/robot_sight/thermal/alien,
|
|
)
|
|
|
|
/obj/item/robot_module/alien/hunter/New()
|
|
modules += new /obj/item/melee/energy/alien/claws(src)
|
|
modules += new /obj/item/flash/cyborg/alien(src)
|
|
var/obj/item/reagent_containers/spray/alien/stun/S = new /obj/item/reagent_containers/spray/alien/stun(src)
|
|
S.reagents.add_reagent("ether",250) //nerfed to sleeptoxin to make it less instant drop.
|
|
modules += S
|
|
var/obj/item/reagent_containers/spray/alien/smoke/A = new /obj/item/reagent_containers/spray/alien/smoke(src)
|
|
S.reagents.add_reagent("water",50) //Water is used as a dummy reagent for the smoke bombs. More of an ammo counter.
|
|
modules += A
|
|
emag = new /obj/item/reagent_containers/spray/alien/acid(src)
|
|
emag.reagents.add_reagent("facid", 125)
|
|
emag.reagents.add_reagent("sacid", 125)
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/alien/hunter/add_languages(var/mob/living/silicon/robot/R)
|
|
..()
|
|
R.add_language("xenocommon", 1)
|
|
|
|
/obj/item/robot_module/drone
|
|
name = "drone module"
|
|
module_type = "Engineer"
|
|
stacktypes = list(
|
|
/obj/item/stack/sheet/wood = 10,
|
|
/obj/item/stack/sheet/rglass/cyborg = 50,
|
|
/obj/item/stack/tile/wood = 20,
|
|
/obj/item/stack/rods/cyborg = 60,
|
|
/obj/item/stack/tile/plasteel = 20,
|
|
/obj/item/stack/sheet/metal/cyborg = 50,
|
|
/obj/item/stack/sheet/glass/cyborg = 50,
|
|
/obj/item/stack/cable_coil/cyborg = 30
|
|
)
|
|
|
|
/obj/item/robot_module/drone/New()
|
|
modules += new /obj/item/weldingtool/largetank/cyborg(src)
|
|
modules += new /obj/item/screwdriver/cyborg(src)
|
|
modules += new /obj/item/wrench/cyborg(src)
|
|
modules += new /obj/item/crowbar/cyborg(src)
|
|
modules += new /obj/item/wirecutters/cyborg(src)
|
|
modules += new /obj/item/multitool/cyborg(src)
|
|
modules += new /obj/item/lightreplacer(src)
|
|
modules += new /obj/item/gripper(src)
|
|
modules += new /obj/item/matter_decompiler(src)
|
|
modules += new /obj/item/reagent_containers/spray/cleaner/drone(src)
|
|
modules += new /obj/item/soap(src)
|
|
modules += new /obj/item/t_scanner(src)
|
|
modules += new /obj/item/rpd(src)
|
|
|
|
for(var/T in stacktypes)
|
|
var/obj/item/stack/sheet/W = new T(src)
|
|
W.amount = stacktypes[T]
|
|
modules += W
|
|
|
|
fix_modules()
|
|
|
|
/obj/item/robot_module/drone/respawn_consumable(mob/living/silicon/robot/R)
|
|
var/obj/item/reagent_containers/spray/cleaner/C = locate() in modules
|
|
C.reagents.add_reagent("cleaner", 3)
|
|
|
|
var/obj/item/lightreplacer/LR = locate() in modules
|
|
LR.Charge(R)
|
|
|
|
..()
|
|
|
|
//checks whether this item is a module of the robot it is located in.
|
|
/obj/item/proc/is_robot_module()
|
|
if(!istype(loc, /mob/living/silicon/robot))
|
|
return 0
|
|
|
|
var/mob/living/silicon/robot/R = loc
|
|
|
|
return (src in R.module.modules)
|