here we go again (#2456)

This commit is contained in:
LetterJay
2017-08-24 19:24:25 -07:00
committed by kevinz000
parent c7ed043fd5
commit 188193eb61
1107 changed files with 25420 additions and 25417 deletions
+1 -1
View File
@@ -35,7 +35,7 @@
if(nuking)
set_security_level("red")
nuking = FALSE
for(var/obj/item/weapon/pinpointer/P in GLOB.pinpointer_list)
for(var/obj/item/pinpointer/P in GLOB.pinpointer_list)
P.switch_mode_to(TRACK_NUKE_DISK) //Party's over, back to work, everyone
P.nuke_warning = FALSE
+2 -2
View File
@@ -24,7 +24,7 @@
var/speakDoubleExclamation = "alarms"
var/speakQuery = "queries"
var/obj/item/weapon/pai_cable/cable // The cable we produce and use when door or camera jacking
var/obj/item/pai_cable/cable // The cable we produce and use when door or camera jacking
var/master // Name of the one who commands us
var/master_dna // DNA string for owner verification
@@ -53,7 +53,7 @@
var/holoform = FALSE
var/canholo = TRUE
var/obj/item/weapon/card/id/access_card = null
var/obj/item/card/id/access_card = null
var/chassis = "repairbot"
var/list/possible_chassis = list("cat", "mouse", "monkey", "corgi", "fox", "repairbot", "rabbit")
@@ -265,7 +265,7 @@
src.hackdoor = null
if(href_list["cable"])
var/turf/T = get_turf(src.loc)
cable = new /obj/item/weapon/pai_cable(T)
cable = new /obj/item/pai_cable(T)
T.visible_message("<span class='warning'>A port on [src] opens to reveal [src.cable], which promptly falls to the floor.</span>", "<span class='italics'>You hear the soft click of something light and hard falling to the ground.</span>")
//src.updateUsrDialog() We only need to account for the single mob this is intended for, and he will *always* be able to call this window
src.paiInterface() // So we'll just call the update directly rather than doing some default checks
@@ -16,13 +16,13 @@
var/obj/item/borg/sight/S = O
sight_mode &= ~S.sight_mode
update_sight()
else if(istype(O, /obj/item/weapon/storage/bag/tray/))
var/obj/item/weapon/storage/bag/tray/T = O
else if(istype(O, /obj/item/storage/bag/tray/))
var/obj/item/storage/bag/tray/T = O
T.do_quick_empty()
else if(istype(O,/obj/item/weapon/gun/energy/laser/cyborg))
else if(istype(O,/obj/item/gun/energy/laser/cyborg))
laser = 0
update_icons()
else if(istype(O,/obj/item/weapon/gun/energy/disabler/cyborg))
else if(istype(O,/obj/item/gun/energy/disabler/cyborg))
disabler = 0
update_icons()
else if(istype(O,/obj/item/device/dogborg/sleeper))
@@ -62,10 +62,10 @@
if(activated(O))
to_chat(src, "<span class='warning'>That module is already activated.</span>")
return
if(istype(O,/obj/item/weapon/gun/energy/laser/cyborg))
if(istype(O,/obj/item/gun/energy/laser/cyborg))
laser = 1
update_icons()
if(istype(O,/obj/item/weapon/gun/energy/disabler/cyborg))
if(istype(O,/obj/item/gun/energy/disabler/cyborg))
disabler = 1
update_icons()
if(!held_items[1])
+34 -34
View File
@@ -34,14 +34,14 @@
var/obj/screen/robot_modules_background
//3 Modules can be activated at any one time.
var/obj/item/weapon/robot_module/module = null
var/obj/item/robot_module/module = null
var/obj/item/module_active = null
held_items = list(null, null, null) //we use held_items for the module holding, because that makes sense to do!
var/mutable_appearance/eye_lights
var/mob/living/silicon/ai/connected_ai = null
var/obj/item/weapon/stock_parts/cell/cell = null
var/obj/item/stock_parts/cell/cell = null
var/opened = 0
var/emagged = FALSE
@@ -115,7 +115,7 @@
ident = rand(1, 999)
if(!cell)
cell = new /obj/item/weapon/stock_parts/cell(src)
cell = new /obj/item/stock_parts/cell(src)
cell.maxcharge = 7500
cell.charge = 7500
@@ -131,7 +131,7 @@
builtInCamera.network = list("SS13")
if(wires.is_cut(WIRE_CAMERA))
builtInCamera.status = 0
module = new /obj/item/weapon/robot_module(src)
module = new /obj/item/robot_module(src)
module.rebuild_modules()
update_icons()
. = ..()
@@ -194,29 +194,29 @@
/mob/living/silicon/robot/proc/pick_module()
if(module.type != /obj/item/weapon/robot_module)
if(module.type != /obj/item/robot_module)
return
if(wires.is_cut(WIRE_RESET_MODULE))
to_chat(src,"<span class='userdanger'>ERROR: Module installer reply timeout. Please check internal connections.</span>")
return
var/list/modulelist = list("Standard" = /obj/item/weapon/robot_module/standard, \
"Engineering" = /obj/item/weapon/robot_module/engineering, \
"Medical" = /obj/item/weapon/robot_module/medical, \
"Miner" = /obj/item/weapon/robot_module/miner, \
"Janitor" = /obj/item/weapon/robot_module/janitor, \
"Service" = /obj/item/weapon/robot_module/butler, \
"MediHound" = /obj/item/weapon/robot_module/medihound, \
"Security K9" = /obj/item/weapon/robot_module/k9, \
"Scrub Puppy" = /obj/item/weapon/robot_module/scrubpup)
var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \
"Engineering" = /obj/item/robot_module/engineering, \
"Medical" = /obj/item/robot_module/medical, \
"Miner" = /obj/item/robot_module/miner, \
"Janitor" = /obj/item/robot_module/janitor, \
"Service" = /obj/item/robot_module/butler, \
"MediHound" = /obj/item/robot_module/medihound, \
"Security K9" = /obj/item/robot_module/k9, \
"Scrub Puppy" = /obj/item/robot_module/scrubpup)
if(!config.forbid_peaceborg)
modulelist["Peacekeeper"] = /obj/item/weapon/robot_module/peacekeeper
modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper
if(!config.forbid_secborg)
modulelist["Security"] = /obj/item/weapon/robot_module/security
modulelist["Security"] = /obj/item/robot_module/security
var/input_module = input("Please, select a module!", "Robot", null, null) as null|anything in modulelist
if(!input_module || module.type != /obj/item/weapon/robot_module)
if(!input_module || module.type != /obj/item/robot_module)
return
module.transform_to(modulelist[input_module])
@@ -367,10 +367,10 @@
queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
return !cleared
/mob/living/silicon/robot/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/weldingtool) && (user.a_intent != INTENT_HARM || user == src))
/mob/living/silicon/robot/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weldingtool) && (user.a_intent != INTENT_HARM || user == src))
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if (!getBruteLoss())
to_chat(user, "<span class='warning'>[src] is already in good condition!</span>")
return
@@ -407,7 +407,7 @@
else
to_chat(user, "The wires seem fine, there's no need to fix them.")
else if(istype(W, /obj/item/weapon/crowbar)) // crowbar means open or close the cover
else if(istype(W, /obj/item/crowbar)) // crowbar means open or close the cover
if(opened)
to_chat(user, "<span class='notice'>You close the cover.</span>")
opened = 0
@@ -420,7 +420,7 @@
opened = 1
update_icons()
else if(istype(W, /obj/item/weapon/stock_parts/cell) && opened) // trying to put a cell inside
else if(istype(W, /obj/item/stock_parts/cell) && opened) // trying to put a cell inside
if(wiresexposed)
to_chat(user, "<span class='warning'>Close the cover first!</span>")
else if(cell)
@@ -440,12 +440,12 @@
else
to_chat(user, "<span class='warning'>You can't reach the wiring!</span>")
else if(istype(W, /obj/item/weapon/screwdriver) && opened && !cell) // haxing
else if(istype(W, /obj/item/screwdriver) && opened && !cell) // haxing
wiresexposed = !wiresexposed
to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]")
update_icons()
else if(istype(W, /obj/item/weapon/screwdriver) && opened && cell) // radio
else if(istype(W, /obj/item/screwdriver) && opened && cell) // radio
if(shell)
to_chat(user, "You cannot seem to open the radio compartment") //Prevent AI radio key theft
else if(radio)
@@ -454,7 +454,7 @@
to_chat(user, "<span class='warning'>Unable to locate a radio!</span>")
update_icons()
else if(istype(W, /obj/item/weapon/wrench) && opened && !cell) //Deconstruction. The flashes break from the fall, to prevent this from being a ghetto reset module.
else if(istype(W, /obj/item/wrench) && opened && !cell) //Deconstruction. The flashes break from the fall, to prevent this from being a ghetto reset module.
if(!lockcharge)
to_chat(user, "<span class='boldannounce'>[src]'s bolts spark! Maybe you should lock them down first!</span>")
spark_system.start()
@@ -466,8 +466,8 @@
user.visible_message("[user] deconstructs [src]!", "<span class='notice'>You unfasten the securing bolts, and [src] falls to pieces!</span>")
deconstruct()
else if(istype(W, /obj/item/weapon/aiModule))
var/obj/item/weapon/aiModule/MOD = W
else if(istype(W, /obj/item/aiModule))
var/obj/item/aiModule/MOD = W
if(!opened)
to_chat(user, "<span class='warning'>You need access to the robot's insides to do that!</span>")
return
@@ -495,7 +495,7 @@
else
to_chat(user, "<span class='warning'>Unable to locate a radio!</span>")
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
else if (istype(W, /obj/item/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)//still allow them to open the cover
to_chat(user, "<span class='notice'>The interface seems slightly damaged.</span>")
if(opened)
@@ -570,7 +570,7 @@
return check_access(george.get_active_held_item())
return 0
/mob/living/silicon/robot/proc/check_access(obj/item/weapon/card/id/I)
/mob/living/silicon/robot/proc/check_access(obj/item/card/id/I)
if(!istype(req_access, /list)) //something's very wrong
return 1
@@ -578,7 +578,7 @@
if(!L.len) //no requirements
return 1
if(!istype(I, /obj/item/weapon/card/id) && isitem(I))
if(!istype(I, /obj/item/card/id) && isitem(I))
I = I.GetID()
if(!I || !I.access) //not ID or no access
@@ -825,7 +825,7 @@
<b>You are armed with powerful offensive tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \
Your cyborg LMG will slowly produce ammunition from your power supply, and your operative pinpointer will find and locate fellow nuclear operatives. \
<i>Help the operatives secure the disk at all costs!</i></b>"
var/set_module = /obj/item/weapon/robot_module/syndicate
var/set_module = /obj/item/robot_module/syndicate
/mob/living/silicon/robot/syndicate/Initialize()
..()
@@ -851,7 +851,7 @@
Your defibrillator paddles can revive operatives through their hardsuits, or can be used on harm intent to shock enemies! \
Your energy saw functions as a circular saw, but can be activated to deal more damage, and your operative pinpointer will find and locate fellow nuclear operatives. \
<i>Help the operatives secure the disk at all costs!</i></b>"
set_module = /obj/item/weapon/robot_module/syndicate_medical
set_module = /obj/item/robot_module/syndicate_medical
/mob/living/silicon/robot/proc/notify_ai(notifytype, oldname, newname)
if(!connected_ai)
@@ -977,7 +977,7 @@
shown_robot_modules = FALSE
if(hud_used)
hud_used.update_robot_modules_display()
module.transform_to(/obj/item/weapon/robot_module)
module.transform_to(/obj/item/robot_module)
// Remove upgrades.
for(var/obj/item/I in upgrades)
@@ -992,7 +992,7 @@
return 1
/mob/living/silicon/robot/proc/has_module()
if(!module || module.type == /obj/item/weapon/robot_module)
if(!module || module.type == /obj/item/robot_module)
. = FALSE
else
. = TRUE
@@ -1,4 +1,4 @@
/obj/item/weapon/robot_module
/obj/item/robot_module
name = "Default"
icon = 'icons/obj/module.dmi'
icon_state = "std_module"
@@ -34,7 +34,7 @@
var/ride_allow_incapacitated = FALSE
var/allow_riding = TRUE
/obj/item/weapon/robot_module/New()
/obj/item/robot_module/New()
..()
for(var/i in basic_modules)
var/obj/item/I = new i(src)
@@ -49,7 +49,7 @@
ratvar_modules += I
ratvar_modules -= i
/obj/item/weapon/robot_module/Destroy()
/obj/item/robot_module/Destroy()
basic_modules.Cut()
emag_modules.Cut()
ratvar_modules.Cut()
@@ -58,29 +58,29 @@
storages.Cut()
return ..()
/obj/item/weapon/robot_module/emp_act(severity)
/obj/item/robot_module/emp_act(severity)
for(var/obj/O in modules)
O.emp_act(severity)
..()
/obj/item/weapon/robot_module/proc/get_usable_modules()
/obj/item/robot_module/proc/get_usable_modules()
. = modules.Copy()
/obj/item/weapon/robot_module/proc/get_inactive_modules()
/obj/item/robot_module/proc/get_inactive_modules()
. = list()
var/mob/living/silicon/robot/R = loc
for(var/m in get_usable_modules())
if(!(m in R.held_items))
. += m
/obj/item/weapon/robot_module/proc/get_or_create_estorage(var/storage_type)
/obj/item/robot_module/proc/get_or_create_estorage(var/storage_type)
for(var/datum/robot_energy_storage/S in storages)
if(istype(S, storage_type))
return S
return new storage_type(src)
/obj/item/weapon/robot_module/proc/add_module(obj/item/I, nonstandard, requires_rebuild)
/obj/item/robot_module/proc/add_module(obj/item/I, nonstandard, requires_rebuild)
if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I
@@ -114,8 +114,8 @@
S.materials = list()
S.is_cyborg = 1
if(istype(I, /obj/item/weapon/restraints/handcuffs/cable))
var/obj/item/weapon/restraints/handcuffs/cable/C = I
if(istype(I, /obj/item/restraints/handcuffs/cable))
var/obj/item/restraints/handcuffs/cable/C = I
C.wirestorage = get_or_create_estorage(/datum/robot_energy_storage/wire)
if(I.loc != src)
@@ -129,7 +129,7 @@
rebuild_modules()
return I
/obj/item/weapon/robot_module/proc/remove_module(obj/item/I, delete_after)
/obj/item/robot_module/proc/remove_module(obj/item/I, delete_after)
basic_modules -= I
modules -= I
emag_modules -= I
@@ -139,7 +139,7 @@
if(delete_after)
qdel(I)
/obj/item/weapon/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
/obj/item/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
for(var/datum/robot_energy_storage/st in storages)
st.energy = min(st.max_energy, st.energy + coeff * st.recharge_rate)
@@ -149,18 +149,18 @@
F.times_used = 0
F.crit_fail = 0
F.update_icon()
else if(istype(I, /obj/item/weapon/melee/baton))
var/obj/item/weapon/melee/baton/B = I
else if(istype(I, /obj/item/melee/baton))
var/obj/item/melee/baton/B = I
if(B.cell)
B.cell.charge = B.cell.maxcharge
else if(istype(I, /obj/item/weapon/gun/energy))
var/obj/item/weapon/gun/energy/EG = I
else if(istype(I, /obj/item/gun/energy))
var/obj/item/gun/energy/EG = I
if(!EG.chambered)
EG.recharge_newshot() //try to reload a new shot.
R.toner = R.tonermax
/obj/item/weapon/robot_module/proc/rebuild_modules() //builds the usable module list from the modules we have
/obj/item/robot_module/proc/rebuild_modules() //builds the usable module list from the modules we have
var/mob/living/silicon/robot/R = loc
var/held_modules = R.held_items.Copy()
R.uneq_all()
@@ -181,9 +181,9 @@
if(R.hud_used)
R.hud_used.update_robot_modules_display()
/obj/item/weapon/robot_module/proc/transform_to(new_module_type)
/obj/item/robot_module/proc/transform_to(new_module_type)
var/mob/living/silicon/robot/R = loc
var/obj/item/weapon/robot_module/RM = new new_module_type(R)
var/obj/item/robot_module/RM = new new_module_type(R)
if(!RM.be_transformed_to(src))
qdel(RM)
return
@@ -194,14 +194,14 @@
qdel(src)
return RM
/obj/item/weapon/robot_module/proc/be_transformed_to(obj/item/weapon/robot_module/old_module)
/obj/item/robot_module/proc/be_transformed_to(obj/item/robot_module/old_module)
for(var/i in old_module.added_modules)
added_modules += i
old_module.added_modules -= i
did_feedback = old_module.did_feedback
return TRUE
/obj/item/weapon/robot_module/proc/do_transform_animation()
/obj/item/robot_module/proc/do_transform_animation()
var/mob/living/silicon/robot/R = loc
R.notransform = TRUE
var/obj/effect/temp_visual/decoy/fading/fivesecond/ANM = new /obj/effect/temp_visual/decoy/fading/fivesecond(R.loc, R)
@@ -230,25 +230,25 @@
if(feedback_key && !did_feedback)
SSblackbox.inc(feedback_key, 1)
/obj/item/weapon/robot_module/standard
/obj/item/robot_module/standard
name = "Standard"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/reagent_containers/borghypo/epi,
/obj/item/reagent_containers/borghypo/epi,
/obj/item/device/healthanalyzer,
/obj/item/weapon/weldingtool/largetank/cyborg,
/obj/item/weapon/wrench/cyborg,
/obj/item/weapon/crowbar/cyborg,
/obj/item/weldingtool/largetank/cyborg,
/obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/stack/sheet/metal/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/weapon/extinguisher,
/obj/item/weapon/pickaxe,
/obj/item/extinguisher,
/obj/item/pickaxe,
/obj/item/device/t_scanner/adv_mining_scanner,
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/weapon/soap/nanotrasen,
/obj/item/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/soap/nanotrasen,
/obj/item/borg/cyborghug)
emag_modules = list(/obj/item/weapon/melee/transforming/energy/sword/cyborg)
emag_modules = list(/obj/item/melee/transforming/energy/sword/cyborg)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg,
/obj/item/clockwork/ratvarian_spear/cyborg,
@@ -257,29 +257,29 @@
feedback_key = "cyborg_standard"
hat_offset = -3
/obj/item/weapon/robot_module/medical
/obj/item/robot_module/medical
name = "Medical"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/device/healthanalyzer,
/obj/item/weapon/reagent_containers/borghypo,
/obj/item/weapon/reagent_containers/glass/beaker/large,
/obj/item/weapon/reagent_containers/dropper,
/obj/item/weapon/reagent_containers/syringe,
/obj/item/weapon/surgical_drapes,
/obj/item/weapon/retractor,
/obj/item/weapon/hemostat,
/obj/item/weapon/cautery,
/obj/item/weapon/surgicaldrill,
/obj/item/weapon/scalpel,
/obj/item/weapon/circular_saw,
/obj/item/weapon/extinguisher/mini,
/obj/item/reagent_containers/borghypo,
/obj/item/reagent_containers/glass/beaker/large,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/syringe,
/obj/item/surgical_drapes,
/obj/item/retractor,
/obj/item/hemostat,
/obj/item/cautery,
/obj/item/surgicaldrill,
/obj/item/scalpel,
/obj/item/circular_saw,
/obj/item/extinguisher/mini,
/obj/item/roller/robo,
/obj/item/borg/cyborghug/medical,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/weapon/organ_storage,
/obj/item/organ_storage,
/obj/item/borg/lollipop)
emag_modules = list(/obj/item/weapon/reagent_containers/borghypo/hacked)
emag_modules = list(/obj/item/reagent_containers/borghypo/hacked)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/ratvarian_spear/cyborg)
@@ -289,19 +289,19 @@
can_be_pushed = FALSE
hat_offset = 3
/obj/item/weapon/robot_module/engineering
/obj/item/robot_module/engineering
name = "Engineering"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/borg/sight/meson,
/obj/item/weapon/construction/rcd/borg,
/obj/item/weapon/pipe_dispenser,
/obj/item/weapon/extinguisher,
/obj/item/weapon/weldingtool/largetank/cyborg,
/obj/item/weapon/screwdriver/cyborg,
/obj/item/weapon/wrench/cyborg,
/obj/item/weapon/crowbar/cyborg,
/obj/item/weapon/wirecutters/cyborg,
/obj/item/construction/rcd/borg,
/obj/item/pipe_dispenser,
/obj/item/extinguisher,
/obj/item/weldingtool/largetank/cyborg,
/obj/item/screwdriver/cyborg,
/obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/wirecutters/cyborg,
/obj/item/device/multitool/cyborg,
/obj/item/device/t_scanner,
/obj/item/device/analyzer,
@@ -323,15 +323,15 @@
magpulsing = TRUE
hat_offset = INFINITY // No hats
/obj/item/weapon/robot_module/security
/obj/item/robot_module/security
name = "Security"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/weapon/melee/baton/loaded,
/obj/item/weapon/gun/energy/disabler/cyborg,
/obj/item/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/disabler/cyborg,
/obj/item/clothing/mask/gas/sechailer/cyborg)
emag_modules = list(/obj/item/weapon/gun/energy/laser/cyborg)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/ratvarian_spear/cyborg)
cyborg_base_icon = "sec"
@@ -340,23 +340,23 @@
can_be_pushed = FALSE
hat_offset = 3
/obj/item/weapon/robot_module/security/do_transform_animation()
/obj/item/robot_module/security/do_transform_animation()
..()
to_chat(loc, "<span class='userdanger'>While you have picked the security module, you still have to follow your laws, NOT Space Law. \
For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
/obj/item/weapon/robot_module/k9
/obj/item/robot_module/k9
name = "Security K-9 Unit module"
basic_modules = list(
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/dog,
/obj/item/weapon/dogborg/jaws/big,
/obj/item/weapon/dogborg/pounce,
/obj/item/restraints/handcuffs/cable/zipties/cyborg/dog,
/obj/item/dogborg/jaws/big,
/obj/item/dogborg/pounce,
/obj/item/clothing/mask/gas/sechailer/cyborg,
/obj/item/weapon/soap/tongue,
/obj/item/soap/tongue,
/obj/item/device/analyzer/nose,
/obj/item/device/dogborg/sleeper/K9,
/obj/item/weapon/gun/energy/disabler/cyborg)
emag_modules = list(/obj/item/weapon/gun/energy/laser/cyborg)
/obj/item/gun/energy/disabler/cyborg)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/ratvarian_spear/cyborg)
cyborg_base_icon = "k9"
@@ -365,14 +365,14 @@
can_be_pushed = FALSE
hat_offset = INFINITY
/obj/item/weapon/robot_module/k9/do_transform_animation()
/obj/item/robot_module/k9/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>While you have picked the security-k9 module, you still have to follow your laws, NOT Space Law. \
For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
/obj/item/weapon/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
/obj/item/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/weapon/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/weapon/gun/energy/e_gun/advtaser/cyborg) in basic_modules
var/obj/item/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/e_gun/advtaser/cyborg) in basic_modules
if(T)
if(T.cell.charge < T.cell.maxcharge)
var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select]
@@ -381,17 +381,17 @@
else
T.charge_tick = 0
/obj/item/weapon/robot_module/medihound
/obj/item/robot_module/medihound
name = "MediHound module"
basic_modules = list(
/obj/item/weapon/dogborg/jaws/small,
/obj/item/dogborg/jaws/small,
/obj/item/device/analyzer/nose,
/obj/item/weapon/soap/tongue,
/obj/item/soap/tongue,
/obj/item/device/healthanalyzer,
/obj/item/device/dogborg/sleeper,
/obj/item/weapon/twohanded/shockpaddles/hound,
/obj/item/twohanded/shockpaddles/hound,
/obj/item/device/sensor_device)
emag_modules = list(/obj/item/weapon/dogborg/pounce)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/ratvarian_spear/cyborg)
cyborg_base_icon = "medihound"
@@ -400,21 +400,21 @@
can_be_pushed = FALSE
hat_offset = INFINITY
/obj/item/weapon/robot_module/medihound/do_transform_animation()
/obj/item/robot_module/medihound/do_transform_animation()
..()
to_chat(loc, "<span class='userdanger'>Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.</span>")
/obj/item/weapon/robot_module/scrubpup
/obj/item/robot_module/scrubpup
name = "Janitor"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/dogborg/jaws/small,
/obj/item/dogborg/jaws/small,
/obj/item/device/analyzer/nose,
/obj/item/weapon/soap/tongue,
/obj/item/soap/tongue,
/obj/item/device/lightreplacer/cyborg,
/obj/item/device/dogborg/sleeper/compactor)
emag_modules = list(/obj/item/weapon/dogborg/pounce)
emag_modules = list(/obj/item/dogborg/pounce)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/janitor,
/obj/item/clockwork/replica_fabricator/cyborg)
@@ -424,30 +424,30 @@
hat_offset = INFINITY
clean_on_move = TRUE
/obj/item/weapon/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/device/lightreplacer/LR = locate(/obj/item/device/lightreplacer) in basic_modules
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
/obj/item/weapon/robot_module/scrubpup/do_transform_animation()
/obj/item/robot_module/scrubpup/do_transform_animation()
..()
to_chat(loc,"<span class='userdanger'>As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.</span>")
/obj/item/weapon/robot_module/peacekeeper
/obj/item/robot_module/peacekeeper
name = "Peacekeeper"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/cookiesynth,
/obj/item/cookiesynth,
/obj/item/device/harmalarm,
/obj/item/weapon/reagent_containers/borghypo/peace,
/obj/item/weapon/holosign_creator/cyborg,
/obj/item/reagent_containers/borghypo/peace,
/obj/item/holosign_creator/cyborg,
/obj/item/borg/cyborghug/peacekeeper,
/obj/item/weapon/extinguisher,
/obj/item/extinguisher,
/obj/item/borg/projectile_dampen)
emag_modules = list(/obj/item/weapon/reagent_containers/borghypo/peace/hacked)
emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/peacekeeper,
/obj/item/clockwork/ratvarian_spear/cyborg)
@@ -457,26 +457,26 @@
can_be_pushed = FALSE
hat_offset = -2
/obj/item/weapon/robot_module/peacekeeper/do_transform_animation()
/obj/item/robot_module/peacekeeper/do_transform_animation()
..()
to_chat(loc, "<span class='userdanger'>Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.</span>")
/obj/item/weapon/robot_module/janitor
/obj/item/robot_module/janitor
name = "Janitor"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/screwdriver/cyborg,
/obj/item/weapon/crowbar/cyborg,
/obj/item/screwdriver/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/weapon/soap/nanotrasen,
/obj/item/weapon/storage/bag/trash/cyborg,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/mop/cyborg,
/obj/item/soap/nanotrasen,
/obj/item/storage/bag/trash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/mop/cyborg,
/obj/item/device/lightreplacer/cyborg,
/obj/item/weapon/holosign_creator,
/obj/item/weapon/reagent_containers/spray/cyborg_drying)
emag_modules = list(/obj/item/weapon/reagent_containers/spray/cyborg_lube)
/obj/item/holosign_creator,
/obj/item/reagent_containers/spray/cyborg_drying)
emag_modules = list(/obj/item/reagent_containers/spray/cyborg_lube)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/janitor,
/obj/item/clockwork/replica_fabricator/cyborg)
@@ -486,50 +486,50 @@
hat_offset = -5
clean_on_move = TRUE
/obj/item/weapon/reagent_containers/spray/cyborg_drying
/obj/item/reagent_containers/spray/cyborg_drying
name = "drying agent spray"
color = "#A000A0"
list_reagents = list("drying_agent" = 250)
/obj/item/weapon/reagent_containers/spray/cyborg_lube
/obj/item/reagent_containers/spray/cyborg_lube
name = "lube spray"
list_reagents = list("lube" = 250)
/obj/item/weapon/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
/obj/item/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/device/lightreplacer/LR = locate(/obj/item/device/lightreplacer) in basic_modules
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
var/obj/item/weapon/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/weapon/reagent_containers/spray/cyborg_drying) in basic_modules
var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules
if(CD)
CD.reagents.add_reagent("drying_agent", 5 * coeff)
var/obj/item/weapon/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/weapon/reagent_containers/spray/cyborg_lube) in emag_modules
var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules
if(CL)
CL.reagents.add_reagent("lube", 2 * coeff)
/obj/item/weapon/robot_module/butler
/obj/item/robot_module/butler
name = "Service"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,
/obj/item/weapon/reagent_containers/food/condiment/enzyme,
/obj/item/weapon/pen,
/obj/item/reagent_containers/food/drinks/drinkingglass,
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/pen,
/obj/item/toy/crayon/spraycan/borg,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/hand_labeler/borg,
/obj/item/weapon/razor,
/obj/item/extinguisher/mini,
/obj/item/hand_labeler/borg,
/obj/item/razor,
/obj/item/device/instrument/violin,
/obj/item/device/instrument/guitar,
/obj/item/weapon/rsf/cyborg,
/obj/item/weapon/reagent_containers/dropper,
/obj/item/weapon/lighter,
/obj/item/weapon/storage/bag/tray,
/obj/item/weapon/reagent_containers/borghypo/borgshaker,
/obj/item/rsf/cyborg,
/obj/item/reagent_containers/dropper,
/obj/item/lighter,
/obj/item/storage/bag/tray,
/obj/item/reagent_containers/borghypo/borgshaker,
/obj/item/borg/lollipop)
emag_modules = list(/obj/item/weapon/reagent_containers/borghypo/borgshaker/hacked)
emag_modules = list(/obj/item/reagent_containers/borghypo/borgshaker/hacked)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/service,
/obj/item/borg/sight/xray/truesight_lens)
moduleselect_icon = "service"
@@ -537,13 +537,13 @@
feedback_key = "cyborg_service"
hat_offset = 0
/obj/item/weapon/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
/obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/weapon/reagent_containers/O = locate(/obj/item/weapon/reagent_containers/food/condiment/enzyme) in basic_modules
var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules
if(O)
O.reagents.add_reagent("enzyme", 2 * coeff)
/obj/item/weapon/robot_module/butler/be_transformed_to(obj/item/weapon/robot_module/old_module)
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Waitress", "Butler", "Tophat", "Kent", "Bro")
if(!borg_icon)
@@ -565,19 +565,19 @@
hat_offset = INFINITY //He is already wearing a hat
return ..()
/obj/item/weapon/robot_module/miner
/obj/item/robot_module/miner
name = "Miner"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/storage/bag/ore/cyborg,
/obj/item/weapon/pickaxe/drill/cyborg,
/obj/item/weapon/shovel,
/obj/item/weapon/crowbar/cyborg,
/obj/item/weapon/weldingtool/mini,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/storage/bag/sheetsnatcher/borg,
/obj/item/storage/bag/ore/cyborg,
/obj/item/pickaxe/drill/cyborg,
/obj/item/shovel,
/obj/item/crowbar/cyborg,
/obj/item/weldingtool/mini,
/obj/item/extinguisher/mini,
/obj/item/storage/bag/sheetsnatcher/borg,
/obj/item/device/t_scanner/adv_mining_scanner,
/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg,
/obj/item/gun/energy/kinetic_accelerator/cyborg,
/obj/item/device/gps/cyborg,
/obj/item/stack/marker_beacon)
emag_modules = list(/obj/item/borg/stun)
@@ -590,16 +590,16 @@
feedback_key = "cyborg_miner"
hat_offset = 0
/obj/item/weapon/robot_module/syndicate
/obj/item/robot_module/syndicate
name = "Syndicate Assault"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/melee/transforming/energy/sword/cyborg,
/obj/item/weapon/gun/energy/printer,
/obj/item/weapon/gun/ballistic/revolver/grenadelauncher/cyborg,
/obj/item/weapon/card/emag,
/obj/item/weapon/crowbar/cyborg,
/obj/item/weapon/pinpointer/syndicate/cyborg)
/obj/item/melee/transforming/energy/sword/cyborg,
/obj/item/gun/energy/printer,
/obj/item/gun/ballistic/revolver/grenadelauncher/cyborg,
/obj/item/card/emag,
/obj/item/crowbar/cyborg,
/obj/item/pinpointer/syndicate/cyborg)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/security,
@@ -609,25 +609,25 @@
can_be_pushed = FALSE
hat_offset = 3
/obj/item/weapon/robot_module/syndicate_medical
/obj/item/robot_module/syndicate_medical
name = "Syndicate Medical"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
/obj/item/weapon/reagent_containers/borghypo/syndicate,
/obj/item/weapon/twohanded/shockpaddles/syndicate,
/obj/item/reagent_containers/borghypo/syndicate,
/obj/item/twohanded/shockpaddles/syndicate,
/obj/item/device/healthanalyzer,
/obj/item/weapon/surgical_drapes,
/obj/item/weapon/retractor,
/obj/item/weapon/hemostat,
/obj/item/weapon/cautery,
/obj/item/weapon/scalpel,
/obj/item/weapon/melee/transforming/energy/sword/cyborg/saw,
/obj/item/surgical_drapes,
/obj/item/retractor,
/obj/item/hemostat,
/obj/item/cautery,
/obj/item/scalpel,
/obj/item/melee/transforming/energy/sword/cyborg/saw,
/obj/item/roller/robo,
/obj/item/weapon/card/emag,
/obj/item/weapon/crowbar/cyborg,
/obj/item/weapon/pinpointer/syndicate/cyborg,
/obj/item/card/emag,
/obj/item/crowbar/cyborg,
/obj/item/pinpointer/syndicate/cyborg,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/weapon/gun/medbeam)
/obj/item/gun/medbeam)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/ratvarian_spear/cyborg)
@@ -642,7 +642,7 @@
var/recharge_rate = 1000
var/energy
/datum/robot_energy_storage/New(var/obj/item/weapon/robot_module/R = null)
/datum/robot_energy_storage/New(var/obj/item/robot_module/R = null)
energy = max_energy
if(R)
R.storages |= src