diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index f796f75407..5f128ff76d 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -25,7 +25,7 @@
return ..()
/obj/screen/examine(mob/user)
- return
+ return list()
/obj/screen/orbit()
return
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index 12b1ca2784..ecd34b7840 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -106,9 +106,8 @@
/obj/item/tk_grab/examine(user)
if (focus)
- focus.examine(user)
- else
- ..()
+ return focus.examine(user)
+ return ..()
/obj/item/tk_grab/attack_self(mob/user)
if(!focus)
diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm
index 53c8c280a9..975b52dcb9 100644
--- a/code/datums/components/armor_plate.dm
+++ b/code/datums/components/armor_plate.dm
@@ -29,21 +29,21 @@
var/obj/item/typecast = upgrade_item
upgrade_name = initial(typecast.name)
-/datum/component/armor_plate/proc/examine(datum/source, mob/user)
+/datum/component/armor_plate/proc/examine(datum/source, mob/user, list/examine_list)
//upgrade_item could also be typecast here instead
if(ismecha(parent))
if(amount)
if(amount < maxamount)
- to_chat(user, "Its armor is enhanced with [amount] [upgrade_name].")
+ examine_list += "Its armor is enhanced with [amount] [upgrade_name]."
else
- to_chat(user, "It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.")
+ examine_list += "It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter."
else
- to_chat(user, "It has attachment points for strapping monster hide on for added protection.")
+ examine_list += "It has attachment points for strapping monster hide on for added protection."
else
if(amount)
- to_chat(user, "It has been strengthened with [amount]/[maxamount] [upgrade_name].")
+ examine_list += "It has been strengthened with [amount]/[maxamount] [upgrade_name]."
else
- to_chat(user, "It can be strengthened with up to [maxamount] [upgrade_name].")
+ examine_list += "It can be strengthened with up to [maxamount] [upgrade_name]."
/datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params)
if(!istype(I,upgrade_item))
diff --git a/code/datums/components/construction.dm b/code/datums/components/construction.dm
index 3b64d68486..01df44752c 100644
--- a/code/datums/components/construction.dm
+++ b/code/datums/components/construction.dm
@@ -19,9 +19,9 @@
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action)
update_parent(index)
-/datum/component/construction/proc/examine(datum/source, mob/user)
+/datum/component/construction/proc/examine(datum/source, mob/user, list/examine_list)
if(desc)
- to_chat(user, desc)
+ examine_list += desc
/datum/component/construction/proc/on_step()
if(index > steps.len)
diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm
index bdc1d3a2f6..641dbdb1cf 100644
--- a/code/datums/components/decal.dm
+++ b/code/datums/components/decal.dm
@@ -71,5 +71,5 @@
if(strength >= cleanable)
qdel(src)
-/datum/component/decal/proc/examine(datum/source, mob/user)
- to_chat(user, description)
\ No newline at end of file
+/datum/component/decal/proc/examine(datum/source, mob/user, list/examine_list)
+ examine_list += description
\ No newline at end of file
diff --git a/code/datums/components/magnetic_catch.dm b/code/datums/components/magnetic_catch.dm
index fb68b89ebf..c7e59e0ead 100644
--- a/code/datums/components/magnetic_catch.dm
+++ b/code/datums/components/magnetic_catch.dm
@@ -15,8 +15,8 @@
for(var/i in parent)
RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
-/datum/component/magnetic_catch/proc/examine(datum/source, mob/user)
- to_chat(user, "It has been installed with inertia dampening to prevent coffee spills.")
+/datum/component/magnetic_catch/proc/examine(datum/source, mob/user, list/examine_list)
+ examine_list += "It has been installed with inertia dampening to prevent coffee spills."
/datum/component/magnetic_catch/proc/crossed_react(datum/source, atom/movable/thing)
RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)
diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm
index 48fa758db1..25094518b8 100644
--- a/code/datums/components/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -49,13 +49,13 @@
var/mat_path = possible_mats[id]
materials[id] = new mat_path()
-/datum/component/material_container/proc/OnExamine(datum/source, mob/user)
+/datum/component/material_container/proc/OnExamine(datum/source, mob/user, list/examine_list)
if(show_on_examine)
for(var/I in materials)
var/datum/material/M = materials[I]
var/amt = amount(M.id)
if(amt)
- to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.")
+ examine_list += "It has [amt] units of [lowertext(M.name)] stored."
/datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user)
var/list/tc = allowed_typecache
diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm
index bf47793f81..9dac20d94f 100644
--- a/code/datums/components/radioactive.dm
+++ b/code/datums/components/radioactive.dm
@@ -18,7 +18,7 @@
hl3_release_date = _half_life
can_contaminate = _can_contaminate
- if(istype(parent, /atom))
+ if(istype(parent, /atom))
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine)
if(istype(parent, /obj/item))
RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack)
@@ -58,7 +58,7 @@
else
strength = max(strength, arguments[1])
-/datum/component/radioactive/proc/rad_examine(datum/source, mob/user, atom/thing)
+/datum/component/radioactive/proc/rad_examine(datum/source, mob/user, list/examine_list)
var/atom/master = parent
var/list/out = list()
if(get_dist(master, user) <= 1)
@@ -72,7 +72,7 @@
out += "[out ? " and it " : "[master] "]hurts to look at."
else
out += "."
- to_chat(user, out.Join())
+ examine_list += out.Join()
/datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user)
radiation_pulse(parent, strength/20)
diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm
index a044ca301e..81ff2d517d 100644
--- a/code/datums/components/rotation.dm
+++ b/code/datums/components/rotation.dm
@@ -98,9 +98,9 @@
remove_verbs()
. = ..()
-/datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user)
+/datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user, list/examine_list)
if(rotation_flags & ROTATION_ALTCLICK)
- to_chat(user, "Alt-click to rotate it clockwise.")
+ examine_list += "Alt-click to rotate it clockwise."
/datum/component/simple_rotation/proc/HandRot(datum/source, mob/user, rotation = default_rotation_direction)
if(!can_be_rotated.Invoke(user, rotation) || !can_user_rotate.Invoke(user, rotation))
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index c0bec2fe98..20fc88f34e 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -283,7 +283,7 @@
return "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
/atom/proc/examine(mob/user)
- . = list(user, "[get_examine_string(user, TRUE)].")
+ . = list("[get_examine_string(user, TRUE)].")
if(desc)
. += desc
@@ -294,7 +294,7 @@
if(length(reagents.reagent_list))
if(user.can_see_reagents()) //Show each individual reagent
for(var/datum/reagent/R in reagents.reagent_list)
- . += user, "[R.volume] units of [R.name]"
+ . += "[R.volume] units of [R.name]"
else //Otherwise, just show the total volume
var/total_volume = 0
for(var/datum/reagent/R in reagents.reagent_list)
diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm
index b0b6b6527d..af5f50f28d 100644
--- a/code/game/machinery/status_display.dm
+++ b/code/game/machinery/status_display.dm
@@ -114,11 +114,11 @@
/obj/machinery/status_display/examine(mob/user)
. = ..()
if (message1 || message2)
- . += list("The display says:"
+ . += "The display says:"
if (message1)
- . += "
\t[html_encode(message1)]"
+ . += "\t[html_encode(message1)]"
if (message2)
- . += "
\t[html_encode(message2)]"
+ . += "\t[html_encode(message2)]"
// Helper procs for child display types.
/obj/machinery/status_display/proc/display_shuttle_status(obj/docking_port/mobile/shuttle)
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 1d302b409e..d86354f195 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -111,13 +111,15 @@
throw_speed = 3
throw_range = 7
attack_verb = list("HONKED")
+ var/moodlet = "honk" //used to define which kind of moodlet is added to the honked target
+ var/honksound = 'sound/items/bikehorn.ogg'
/obj/item/bikehorn/Initialize()
. = ..()
- AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50)
+ AddComponent(/datum/component/squeak, list(honksound=1), 50)
/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, moodlet, /datum/mood_event/honk)
return ..()
/obj/item/bikehorn/suicide_act(mob/user)
@@ -130,10 +132,7 @@
name = "air horn"
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
-
-/obj/item/bikehorn/airhorn/Initialize()
- . = ..()
- AddComponent(/datum/component/squeak, list('sound/items/airhorn2.ogg'=1), 50)
+ honksound = 'sound/items/airhorn2.ogg'
//golden bikehorn
/obj/item/bikehorn/golden
@@ -163,6 +162,19 @@
M.emote("flip")
flip_cooldown = world.time + 7
+/obj/item/bikehorn/silver
+ name = "silver bike horn"
+ desc = "A shiny bike horn handcrafted in the artisan workshops of Mars, with superior kevlar-reinforced rubber bulb attached to a polished plasteel reed horn."
+ attack_verb = list("elegantly HONKED")
+ icon_state = "silverhorn"
+
+/obj/item/bikehorn/bluespacehonker
+ name = "bluespace bike horn"
+ desc = "A normal bike horn colored blue and has bluespace dust held in to reed horn allowing for silly honks through space and time, into your in childhood."
+ attack_verb = list("HONKED in bluespace", "HONKED", "quantumly HONKED")
+ icon_state = "bluespacehonker"
+ moodlet = "bshonk"
+
//canned laughter
/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter
name = "Canned Laughter"
diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm
index 3c945f464e..1a3bc283d9 100644
--- a/code/game/objects/items/devices/dogborg_sleeper.dm
+++ b/code/game/objects/items/devices/dogborg_sleeper.dm
@@ -134,7 +134,6 @@
var/voracious = hound ? TRUE : FALSE
var/list/targets = target && hound ? list(target) : contents
if(hound)
- hound.setClickCooldown(50)
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
voracious = FALSE
else
@@ -447,7 +446,7 @@
if (!target.devourable)
to_chat(user, "The target registers an error code. Unable to insert into [src].")
return
- if(target)
+ if(patient)
to_chat(user,"Your [src] is already occupied.")
return
if(target.buckled)
@@ -524,3 +523,7 @@
update_gut()
user.visible_message("[hound.name]'s garbage processor groans lightly as [trashman] slips inside.", "Your garbage compactor groans lightly as [trashman] slips inside.")
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
+
+/obj/item/dogborg/sleeper/K9/flavour
+ name = "Mobile Sleeper"
+ desc = "A mounted, underslung sleeper, intended for holding willing occupants for leisurely purposes."
\ No newline at end of file
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 84439985b2..7a83893f8b 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -755,3 +755,47 @@
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("bashes", "smacks", "whacks")
+
+/obj/item/nullrod/rosary
+ icon_state = "rosary"
+ item_state = null
+ name = "prayer beads"
+ desc = "A set of prayer beads used by many of the more traditional religions in space"
+ force = 4
+ throwforce = 0
+ attack_verb = list("whipped", "repented", "lashed", "flagellated")
+ var/praying = FALSE
+ var/deity_name = "Coderbus" //This is the default, hopefully won't actually appear if the religion subsystem is running properly
+
+/obj/item/nullrod/rosary/Initialize()
+ .=..()
+ if(GLOB.deity)
+ deity_name = GLOB.deity
+
+/obj/item/nullrod/rosary/attack(mob/living/M, mob/living/user)
+ if(user.a_intent == INTENT_HARM)
+ return ..()
+
+ if(!user.mind || user.mind.assigned_role != "Chaplain")
+ to_chat(user, "You are not close enough with [deity_name] to use [src].")
+ return
+
+ if(praying)
+ to_chat(user, "You are already using [src].")
+ return
+
+ user.visible_message("[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [deity_name].", \
+ "You kneel[M == user ? null : " next to [M]"] and begin a prayer to [deity_name].")
+
+ praying = TRUE
+ if(do_after(user, 20, target = M))
+ M.reagents?.add_reagent("holywater", 5)
+ to_chat(M, "[user]'s prayer to [deity_name] has eased your pain!")
+ M.adjustToxLoss(-5, TRUE, TRUE)
+ M.adjustOxyLoss(-5)
+ M.adjustBruteLoss(-5)
+ M.adjustFireLoss(-5)
+ praying = FALSE
+ else
+ to_chat(user, "Your prayer to [deity_name] was interrupted.")
+ praying = FALSE
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 90e2efabc4..ffbbea84dc 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -1014,3 +1014,9 @@
icon_state = "maya"
item_state = "maya"
attack_verb = list("nuked", "arrested", "harmbatonned")
+
+/obj/item/toy/plush/catgirl/marisa
+ desc = "An adorable stuffed toy that resembles a crew member, or maybe a witch. Having it makes you feel you can win."
+ icon_state = "marisa"
+ item_state = "marisa"
+ attack_verb = list("blasted", "sparked", "dazzled")
diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm
index 571e09e47a..72d27ae544 100644
--- a/code/game/objects/items/pneumaticCannon.dm
+++ b/code/game/objects/items/pneumaticCannon.dm
@@ -56,12 +56,12 @@
/obj/item/pneumatic_cannon/examine(mob/user)
. = ..()
- var/list/out = list()
if(!in_range(user, src))
. += "You'll need to get closer to see any more."
return
for(var/obj/item/I in loadedItems)
. += "[icon2html(I, user)] It has \a [I] loaded."
+ CHECK_TICK
if(tank)
. += "[icon2html(tank, user)] It has \a [tank] mounted onto it."
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index d9045a7a34..6e6db2feae 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -203,7 +203,7 @@
desc = "A trash bag of holding replacement for the janiborg's standard trash bag."
icon_state = "cyborg_upgrade3"
require_module = 1
- module_type = list(/obj/item/robot_module/janitor, /obj/item/robot_module/scrubpup)
+ module_type = list(/obj/item/robot_module/butler)
/obj/item/borg/upgrade/tboh/action(mob/living/silicon/robot/R)
. = ..()
@@ -230,7 +230,7 @@
desc = "An advanced mop replacement for the janiborg's standard mop."
icon_state = "cyborg_upgrade3"
require_module = 1
- module_type = list(/obj/item/robot_module/janitor, /obj/item/robot_module/scrubpup)
+ module_type = list(/obj/item/robot_module/butler)
/obj/item/borg/upgrade/amop/action(mob/living/silicon/robot/R)
. = ..()
@@ -522,8 +522,7 @@
module_type = list(
/obj/item/robot_module/medical,
/obj/item/robot_module/syndicate_medical,
- /obj/item/robot_module/medihound,
- /obj/item/robot_module/borgi)
+ /obj/item/robot_module/medihound)
/obj/item/borg/upgrade/advhealth/action(mob/living/silicon/robot/R, user = usr)
. = ..()
diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm
index 7f9d60f8fc..3b4bbea559 100644
--- a/code/game/objects/structures/guillotine.dm
+++ b/code/game/objects/structures/guillotine.dm
@@ -36,8 +36,7 @@
/obj/structure/guillotine/examine(mob/user)
. = ..()
- . += "It is [anchored ? "wrenched to the floor." : "unsecured. A wrench should fix that."]
"
- msg = ""
+ . += "It is [anchored ? "wrenched to the floor." : "unsecured. A wrench should fix that."]"
if (blade_status == GUILLOTINE_BLADE_RAISED)
var/msg = "The blade is raised, ready to fall, and"
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 71b8845c71..99f8875aef 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -582,7 +582,7 @@
/obj/structure/rack/examine(mob/user)
. = ..()
- . += "It's held together by a couple of bolts.")
+ . += "It's held together by a couple of bolts."
/obj/structure/rack/CanPass(atom/movable/mover, turf/target)
if(src.density == 0) //Because broken racks -Agouri |TODO: SPRITE!|
diff --git a/code/game/turfs/simulated/wall/reinf_walls.dm b/code/game/turfs/simulated/wall/reinf_walls.dm
index 0d9bff1bdf..b4e84648c2 100644
--- a/code/game/turfs/simulated/wall/reinf_walls.dm
+++ b/code/game/turfs/simulated/wall/reinf_walls.dm
@@ -17,19 +17,19 @@
/turf/closed/wall/r_wall/deconstruction_hints(mob/user)
switch(d_state)
if(INTACT)
- to_chat(user, "The outer grille is fully intact.")
+ return "The outer grille is fully intact."
if(SUPPORT_LINES)
- to_chat(user, "The outer grille has been cut, and the support lines are screwed securely to the outer cover.")
+ return "The outer grille has been cut, and the support lines are screwed securely to the outer cover."
if(COVER)
- to_chat(user, "The support lines have been unscrewed, and the metal cover is welded firmly in place.")
+ return "The support lines have been unscrewed, and the metal cover is welded firmly in place."
if(CUT_COVER)
- to_chat(user, "The metal cover has been sliced through, and is connected loosely to the girder.")
+ return "The metal cover has been sliced through, and is connected loosely to the girder."
if(ANCHOR_BOLTS)
- to_chat(user, "The outer cover has been pried away, and the bolts anchoring the support rods are wrenched in place.")
+ return "The outer cover has been pried away, and the bolts anchoring the support rods are wrenched in place."
if(SUPPORT_RODS)
- to_chat(user, "The bolts anchoring the support rods have been loosened, but are still welded firmly to the girder.")
+ return "The bolts anchoring the support rods have been loosened, but are still welded firmly to the girder."
if(SHEATH)
- to_chat(user, "The support rods have been sliced through, and the outer sheath is connected loosely to the girder.")
+ return "The support rods have been sliced through, and the outer sheath is connected loosely to the girder."
/turf/closed/wall/r_wall/devastate_wall()
new sheet_type(src, sheet_amount)
diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
index b22507e537..297856f531 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -232,7 +232,7 @@
if(grace_period)
. += "Crew grace period time remaining: [DisplayTimeText(get_arrival_time())]"
else
- to_chat(user, "Time until Ratvar's arrival: [DisplayTimeText(get_arrival_time())]"
+ . += "Time until Ratvar's arrival: [DisplayTimeText(get_arrival_time())]"
switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND)
. += "The Ark is feeding power into the bluespace field."
@@ -242,7 +242,7 @@
. += "With the bluespace field established, Ratvar is preparing to come through!"
else
if(!active)
- . += "Whatever it is, it doesn't seem to be active.")
+ . += "Whatever it is, it doesn't seem to be active."
else
switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 6de068f747..77600cdefe 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -301,7 +301,7 @@
else
text += " normal"
text += " vine."
- . += text)
+ . += text
/obj/structure/spacevine/Destroy()
for(var/datum/spacevine_mutation/SM in mutations)
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 3f6b4cec8a..eb3e6a5b58 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -63,8 +63,7 @@
/obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user)
if(!wielded)
- to_chat(user, "[src] is too heavy to use with one hand. You fumble and drop everything.")
- user.drop_all_held_items()
+ to_chat(user, "[src] is too heavy to use with one hand.")
return
var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
var/target_health = target.health
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 7ae2ca7e26..8432ffda2c 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -13,7 +13,7 @@
if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA))
obscure_name = TRUE
- . = list("*---------*\nThis is [!obscure_name ? name : "Unknown"]!)"
+ . = list("*---------*\nThis is [!obscure_name ? name : "Unknown"]!")
var/list/obscured = check_obscured_slots()
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
@@ -133,10 +133,8 @@
. += "[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery."
if(hellbound)
. += "[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible."
- . += ""
- if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE)))
+ if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE))
. += "[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed..."
- if(!foundghost)
else
. += "[t_He] [t_is] limp and unresponsive; there are no signs of life..."
diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm
index 9180e2a132..63b275a416 100644
--- a/code/modules/mob/living/silicon/robot/examine.dm
+++ b/code/modules/mob/living/silicon/robot/examine.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/robot/examine(mob/user)
- . = list("*---------*\nThis is [icon2html(src, user)] \a [src], a [src.module.name]!")
+ . = list("*---------*\nThis is [icon2html(src, user)] \a [src], a [src.module.name] unit!")
if(desc)
. += "[desc]"
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 5b670aaa42..6dcd0a8cc9 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -110,6 +110,7 @@
var/sitting = 0
var/bellyup = 0
+ var/dogborg = FALSE
/mob/living/silicon/robot/get_cell()
return cell
@@ -232,15 +233,14 @@
var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \
"Engineering" = /obj/item/robot_module/engineering, \
"Medical" = /obj/item/robot_module/medical, \
+ "Medihound" = /obj/item/robot_module/medihound, \
"Miner" = /obj/item/robot_module/miner, \
- "Janitor" = /obj/item/robot_module/janitor, \
"Service" = /obj/item/robot_module/butler)
if(!CONFIG_GET(flag/disable_peaceborg))
modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper
if(BORG_SEC_AVAILABLE)
modulelist["Security"] = /obj/item/robot_module/security
-
- modulelist += get_cit_modules() //Citadel change - adds Citadel's borg modules.
+ modulelist["Security K-9"] = /obj/item/robot_module/k9
var/input_module = input("Please, select a module!", "Robot", null, null) as null|anything in modulelist
if(!input_module || module.type != /obj/item/robot_module)
@@ -879,9 +879,6 @@
/mob/living/silicon/robot/modules/miner
set_module = /obj/item/robot_module/miner
-/mob/living/silicon/robot/modules/janitor
- set_module = /obj/item/robot_module/janitor
-
/mob/living/silicon/robot/modules/syndicate
icon_state = "synd_sec"
faction = list(ROLE_SYNDICATE)
@@ -1256,6 +1253,20 @@
for(var/i in connected_ai.aicamera.stored)
aicamera.stored[i] = TRUE
+/mob/living/silicon/robot/lay_down()
+ ..()
+ update_canmove()
+
+/mob/living/silicon/robot/update_canmove()
+ ..()
+ if(client && stat != DEAD && dogborg == FALSE)
+ if(resting)
+ cut_overlays()
+ icon_state = "[module.cyborg_base_icon]-rest"
+ else
+ icon_state = "[module.cyborg_base_icon]"
+ update_icons()
+
/mob/living/silicon/robot/proc/rest_style()
set name = "Switch Rest Style"
set category = "Robot Commands"
@@ -1271,4 +1282,8 @@
sitting = 1
if("Belly up")
bellyup = 1
- update_icons()
\ No newline at end of file
+ update_icons()
+
+/mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_stamina = 1)
+ if(istype(cell))
+ cell.charge -= amount*5
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index abd2019fba..a617432ff4 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -35,6 +35,13 @@
var/ride_allow_incapacitated = FALSE
var/allow_riding = TRUE
+ var/sleeper_overlay
+ var/icon/cyborg_icon_override
+ var/has_snowflake_deadsprite
+ var/cyborg_pixel_offset
+ var/moduleselect_alternate_icon
+ var/dogborg = FALSE
+
/obj/item/robot_module/Initialize()
. = ..()
for(var/i in basic_modules)
@@ -129,6 +136,28 @@
rebuild_modules()
return I
+//Adds flavoursome dogborg items to dogborg variants without mechanical benefits
+/obj/item/robot_module/proc/dogborg_equip()
+ if(istype(src, /obj/item/robot_module/k9) || istype(src, /obj/item/robot_module/medihound))
+ return //Bandaid fix to prevent stacking until I merge these two modules into their base types
+ var/obj/item/I = new /obj/item/analyzer/nose/flavour(src)
+ basic_modules += I
+ I = new /obj/item/soap/tongue/flavour(src)
+ basic_modules += I
+ I = new /obj/item/dogborg/sleeper/K9/flavour(src)
+ if(istype(src, /obj/item/robot_module/engineering))
+ I.icon_state = "decompiler"
+ if(istype(src, /obj/item/robot_module/security))
+ I.icon_state = "sleeperb"
+ if(istype(src, /obj/item/robot_module/medical))
+ I.icon_state = "sleeper"
+ if(istype(src, /obj/item/robot_module/butler))
+ I.icon_state = "servicer"
+ if(cyborg_base_icon == "scrubpup")
+ I.icon_state = "compactor"
+ basic_modules += I
+ rebuild_modules()
+
/obj/item/robot_module/proc/remove_module(obj/item/I, delete_after)
basic_modules -= I
modules -= I
@@ -197,6 +226,8 @@
R.update_module_innate()
RM.rebuild_modules()
INVOKE_ASYNC(RM, .proc/do_transform_animation)
+ if(RM.dogborg)
+ RM.dogborg_equip()
R.maxHealth = borghealth
R.health = min(borghealth, R.health)
qdel(src)
@@ -245,15 +276,15 @@
name = "Standard"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/reagent_containers/borghypo/epi,
/obj/item/healthanalyzer,
/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/extinguisher,
/obj/item/pickaxe,
/obj/item/t_scanner/adv_mining_scanner,
/obj/item/restraints/handcuffs/cable/zipties,
@@ -271,6 +302,8 @@
name = "Medical"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/healthanalyzer,
/obj/item/reagent_containers/borghypo,
/obj/item/reagent_containers/glass/beaker/large,
@@ -283,7 +316,6 @@
/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,
@@ -299,6 +331,85 @@
can_be_pushed = FALSE
hat_offset = 3
+/obj/item/robot_module/medical/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("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot")
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Default")
+ cyborg_base_icon = "medical"
+ if("Droid")
+ cyborg_base_icon = "medical"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ hat_offset = 4
+ if("Sleek")
+ cyborg_base_icon = "sleekmed"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Marina")
+ cyborg_base_icon = "marinamed"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Eyebot")
+ cyborg_base_icon = "eyebotmed"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Heavy")
+ cyborg_base_icon = "heavymed"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ return ..()
+
+/obj/item/robot_module/medihound
+ name = "MediHound"
+ basic_modules = list(
+ /obj/item/dogborg/jaws/small,
+ /obj/item/storage/bag/borgdelivery,
+ /obj/item/analyzer/nose,
+ /obj/item/soap/tongue,
+ /obj/item/extinguisher/mini,
+ /obj/item/healthanalyzer,
+ /obj/item/dogborg/sleeper/medihound,
+ /obj/item/roller/robo,
+ /obj/item/reagent_containers/borghypo,
+ /obj/item/twohanded/shockpaddles/cyborg/hound,
+ /obj/item/stack/medical/gauze/cyborg,
+ /obj/item/pinpointer/crew,
+ /obj/item/sensor_device)
+ emag_modules = list(/obj/item/dogborg/pounce)
+ ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
+ /obj/item/clockwork/weapon/ratvarian_spear)
+ cyborg_base_icon = "medihound"
+ moduleselect_icon = "medihound"
+ moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+ sleeper_overlay = "msleeper"
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+
+/obj/item/robot_module/medihound/be_transformed_to(obj/item/robot_module/old_module)
+ var/mob/living/silicon/robot/R = loc
+ var/list/medhoundmodels = list("Default", "Dark", "Vale")
+ if(R.client && R.client.ckey in list("nezuli"))
+ medhoundmodels += "Alina"
+ var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medhoundmodels
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Default")
+ cyborg_base_icon = "medihound"
+ if("Dark")
+ cyborg_base_icon = "medihounddark"
+ sleeper_overlay = "mdsleeper"
+ if("Vale")
+ cyborg_base_icon = "valemed"
+ sleeper_overlay = "valemedsleeper"
+ if("Alina")
+ cyborg_base_icon = "alina-med"
+ special_light_key = "alina"
+ sleeper_overlay = "alinasleeper"
+ return ..()
+
/obj/item/robot_module/engineering
name = "Engineering"
basic_modules = list(
@@ -338,10 +449,79 @@
magpulsing = TRUE
hat_offset = -4
+/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module)
+ var/mob/living/silicon/robot/R = loc
+ var/list/engymodels = list("Default", "Default - Treads", "Heavy", "Sleek", "Marina", "Can", "Spider", "Loader","Handy", "Pup Dozer", "Vale")
+ if(R.client && R.client.ckey in list("nezuli"))
+ engymodels += "Alina"
+ var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in engymodels
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Default")
+ cyborg_base_icon = "engineer"
+ if("Default - Treads")
+ cyborg_base_icon = "engi-tread"
+ special_light_key = "engineer"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Loader")
+ cyborg_base_icon = "loaderborg"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ has_snowflake_deadsprite = TRUE
+ if("Handy")
+ cyborg_base_icon = "handyeng"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Sleek")
+ cyborg_base_icon = "sleekeng"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Can")
+ cyborg_base_icon = "caneng"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Marina")
+ cyborg_base_icon = "marinaeng"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Spider")
+ cyborg_base_icon = "spidereng"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Heavy")
+ cyborg_base_icon = "heavyeng"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Pup Dozer")
+ cyborg_base_icon = "pupdozer"
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+ sleeper_overlay = "dozersleeper"
+ if("Vale")
+ cyborg_base_icon = "valeeng"
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+ sleeper_overlay = "valeengsleeper"
+ if("Alina")
+ cyborg_base_icon = "alina-eng"
+ special_light_key = "alina"
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+ sleeper_overlay = "alinasleeper"
+ return ..()
+
/obj/item/robot_module/security
name = "Security"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/disabler/cyborg,
@@ -360,6 +540,90 @@
to_chat(loc, "While you have picked the security module, you still have to follow your laws, NOT Space Law. \
For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.")
+/obj/item/robot_module/security/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("Default", "Default - Treads", "Heavy", "Sleek", "Can", "Marina", "Spider")
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Default")
+ cyborg_base_icon = "sec"
+ if("Default - Treads")
+ cyborg_base_icon = "sec-tread"
+ special_light_key = "sec"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Sleek")
+ cyborg_base_icon = "sleeksec"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Marina")
+ cyborg_base_icon = "marinasec"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Can")
+ cyborg_base_icon = "cansec"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Spider")
+ cyborg_base_icon = "spidersec"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Heavy")
+ cyborg_base_icon = "heavysec"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ return ..()
+
+/obj/item/robot_module/k9
+ name = "Security K-9 Unit"
+ basic_modules = list(
+ /obj/item/restraints/handcuffs/cable/zipties,
+ /obj/item/storage/bag/borgdelivery,
+ /obj/item/dogborg/jaws/big,
+ /obj/item/dogborg/pounce,
+ /obj/item/clothing/mask/gas/sechailer/cyborg,
+ /obj/item/soap/tongue,
+ /obj/item/analyzer/nose,
+ /obj/item/dogborg/sleeper/K9,
+ /obj/item/gun/energy/disabler/cyborg,
+ /obj/item/pinpointer/crew)
+ emag_modules = list(/obj/item/gun/energy/laser/cyborg)
+ ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
+ /obj/item/clockwork/weapon/ratvarian_spear)
+ cyborg_base_icon = "k9"
+ moduleselect_icon = "k9"
+ moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+ sleeper_overlay = "ksleeper"
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+
+/obj/item/robot_module/k9/do_transform_animation()
+ ..()
+ to_chat(loc,"While you have picked the Security K-9 module, you still have to follow your laws, NOT Space Law. \
+ For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.")
+
+/obj/item/robot_module/k9/be_transformed_to(obj/item/robot_module/old_module)
+ var/mob/living/silicon/robot/R = loc
+ var/list/sechoundmodels = list("Default", "Dark", "Vale")
+ if(R.client && R.client.ckey in list("nezuli"))
+ sechoundmodels += "Alina"
+ var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in sechoundmodels
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Default")
+ cyborg_base_icon = "k9"
+ if("Alina")
+ cyborg_base_icon = "alina-sec"
+ special_light_key = "alina"
+ sleeper_overlay = "alinasleeper"
+ if("Dark")
+ cyborg_base_icon = "k9dark"
+ sleeper_overlay = "k9darksleeper"
+ if("Vale")
+ cyborg_base_icon = "valesec"
+ sleeper_overlay = "valesecsleeper"
+ return ..()
+
/obj/item/robot_module/security/Initialize()
. = ..()
if(!CONFIG_GET(flag/weaken_secborg))
@@ -372,12 +636,13 @@
name = "Peacekeeper"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/cookiesynth,
/obj/item/harmalarm,
/obj/item/reagent_containers/borghypo/peace,
/obj/item/holosign_creator/cyborg,
/obj/item/borg/cyborghug/peacekeeper,
- /obj/item/extinguisher,
/obj/item/megaphone,
/obj/item/borg/projectile_dampen)
emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked)
@@ -391,9 +656,31 @@
/obj/item/robot_module/peacekeeper/do_transform_animation()
..()
- to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
+ to_chat(loc, "Under ASIMOV/CREWSIMOV, you are an enforcer of the PEACE and preventer of HUMAN/CREW 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.")
+/obj/item/robot_module/peacekeeper/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("Default", "Spider", "Borgi")
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Default")
+ cyborg_base_icon = "peace"
+ if("Spider")
+ cyborg_base_icon = "whitespider"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Borgi")
+ cyborg_base_icon = "borgi"
+ moduleselect_icon = "borgi"
+ moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
+ hat_offset = INFINITY
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ has_snowflake_deadsprite = TRUE
+ return ..()
+
+//Janitor module combined with Service module
+/*
/obj/item/robot_module/janitor
name = "Janitor"
basic_modules = list(
@@ -416,6 +703,7 @@
moduleselect_icon = "janitor"
hat_offset = -5
clean_on_move = TRUE
+ */
/obj/item/reagent_containers/spray/cyborg_drying
name = "drying agent spray"
@@ -426,25 +714,12 @@
name = "lube spray"
list_reagents = list("lube" = 250)
-/obj/item/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
- ..()
- var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
- if(LR)
- for(var/i in 1 to coeff)
- LR.Charge(R)
-
- 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/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/robot_module/clown
name = "Clown"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/toy/crayon/rainbow,
/obj/item/instrument/bikehorn,
/obj/item/stamp/clown,
@@ -459,8 +734,7 @@
/obj/item/borg/cyborghug/peacekeeper,
/obj/item/borg/lollipop/clown,
/obj/item/picket_sign/cyborg,
- /obj/item/reagent_containers/borghypo/clown,
- /obj/item/extinguisher/mini)
+ /obj/item/reagent_containers/borghypo/clown)
emag_modules = list(
/obj/item/reagent_containers/borghypo/clown/hacked,
/obj/item/reagent_containers/spray/waterflower/cyborg/hacked)
@@ -476,11 +750,12 @@
name = "Service"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/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/extinguisher/mini,
/obj/item/hand_labeler/borg,
/obj/item/razor,
/obj/item/instrument/violin,
@@ -490,31 +765,123 @@
/obj/item/lighter,
/obj/item/storage/bag/tray,
/obj/item/reagent_containers/borghypo/borgshaker,
- /obj/item/borg/lollipop)
+ /obj/item/borg/lollipop,
+ /obj/item/screwdriver/cyborg,
+ /obj/item/stack/tile/plasteel/cyborg,
+ /obj/item/soap/nanotrasen,
+ /obj/item/storage/bag/trash/cyborg,
+ /obj/item/mop/cyborg,
+ /obj/item/lightreplacer/cyborg,
+ /obj/item/holosign_creator,
+ /obj/item/reagent_containers/spray/cyborg_drying)
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"
- special_light_key = "service"
hat_offset = 0
+ clean_on_move = TRUE
/obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules
+ var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
if(O)
O.reagents.add_reagent("enzyme", 2 * coeff)
+ if(LR)
+ for(var/i in 1 to coeff)
+ LR.Charge(R)
+ 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/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/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("(Service) Waitress", "(Service) Heavy", "(Service) Sleek", "(Service) Butler", "(Service) Tophat", "(Service) Can", "(Service) Bro", "(Service) DarkK9", "(Service) Vale", "(Service) ValeDark", "(Janitor) Default", "(Janitor) Sleek", "(Janitor) Marina", "(Janitor) Can", "(Janitor) Heavy", "(Janitor) Scrubpuppy")
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("(Service) Waitress")
+ cyborg_base_icon = "service_f"
+ special_light_key = "service"
+ if("(Service) Butler")
+ cyborg_base_icon = "service_m"
+ special_light_key = "service"
+ if("(Service) Bro")
+ cyborg_base_icon = "brobot"
+ special_light_key = "service"
+ if("(Service) Can")
+ cyborg_base_icon = "kent"
+ special_light_key = "medical"
+ hat_offset = 3
+ if("(Service) Tophat")
+ cyborg_base_icon = "tophat"
+ special_light_key = null
+ hat_offset = INFINITY //He is already wearing a hat
+ if("(Service) Sleek")
+ cyborg_base_icon = "sleekserv"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("(Service) Heavy")
+ cyborg_base_icon = "heavyserv"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("(Service) DarkK9")
+ cyborg_base_icon = "k50"
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+ sleeper_overlay = "ksleeper"
+ if("(Service) Vale")
+ cyborg_base_icon = "valeserv"
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+ sleeper_overlay = "valeservsleeper"
+ if("(Service) ValeDark")
+ cyborg_base_icon = "valeservdark"
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ dogborg = TRUE
+ cyborg_pixel_offset = -16
+ sleeper_overlay = "valeservsleeper"
+ if("(Janitor) Default")
+ cyborg_base_icon = "janitor"
+ if("(Janitor) Marina")
+ cyborg_base_icon = "marinajan"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("(Janitor) Sleek")
+ cyborg_base_icon = "sleekjan"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("(Janitor) Can")
+ cyborg_base_icon = "canjan"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("(Janitor) Heavy")
+ cyborg_base_icon = "heavyres"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("(Janitor) Scrubpuppy")
+ cyborg_base_icon = "scrubpup"
+ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
+ has_snowflake_deadsprite = TRUE
+ cyborg_pixel_offset = -16
+ dogborg = TRUE
+ sleeper_overlay = "jsleeper"
+ return ..()
/obj/item/robot_module/miner
name = "Miner"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/borg/sight/meson,
/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/t_scanner/adv_mining_scanner,
/obj/item/gun/energy/kinetic_accelerator/cyborg,
@@ -529,10 +896,44 @@
moduleselect_icon = "miner"
hat_offset = 0
+/obj/item/robot_module/miner/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("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid")
+ if(!borg_icon)
+ return FALSE
+ switch(borg_icon)
+ if("Lavaland")
+ cyborg_base_icon = "miner"
+ if("Asteroid")
+ cyborg_base_icon = "minerOLD"
+ special_light_key = "miner"
+ if("Droid")
+ cyborg_base_icon = "miner"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ hat_offset = 4
+ if("Sleek")
+ cyborg_base_icon = "sleekmin"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Can")
+ cyborg_base_icon = "canmin"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Marina")
+ cyborg_base_icon = "marinamin"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Spider")
+ cyborg_base_icon = "spidermin"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ if("Heavy")
+ cyborg_base_icon = "heavymin"
+ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
+ return ..()
+
/obj/item/robot_module/syndicate
name = "Syndicate Assault"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/melee/transforming/energy/sword/cyborg,
/obj/item/gun/energy/printer,
/obj/item/gun/ballistic/revolver/grenadelauncher/cyborg,
@@ -562,6 +963,8 @@
name = "Syndicate Medical"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
+ /obj/item/extinguisher/mini,
+ /obj/item/crowbar/cyborg,
/obj/item/reagent_containers/borghypo/syndicate,
/obj/item/twohanded/shockpaddles/syndicate,
/obj/item/healthanalyzer,
@@ -574,8 +977,6 @@
/obj/item/melee/transforming/energy/sword/cyborg/saw,
/obj/item/roller/robo,
/obj/item/card/emag,
- /obj/item/crowbar/cyborg,
- /obj/item/extinguisher/mini,
/obj/item/pinpointer/syndicate_cyborg,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/gun/medbeam,
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 13520774c5..cda4978f50 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -13,6 +13,7 @@
mob_biotypes = list(MOB_ROBOTIC)
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
speech_span = SPAN_ROBOT
+ no_vore = TRUE
var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS
var/last_lawchange_announce = 0
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 7c85a11d2a..185d717a00 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -416,9 +416,9 @@
. += "It appears to be alive but unresponsive."
if (getBruteLoss())
if (getBruteLoss() < 40)
- msg += "It has some punctures in its flesh!"
+ . += "It has some punctures in its flesh!"
else
- msg += "It has severe punctures and tears in its flesh!"
+ . += "It has severe punctures and tears in its flesh!"
switch(powerlevel)
if(2 to 3)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 6d0596b0d7..1e1b518849 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -144,7 +144,7 @@
/obj/item/gun/ballistic/shotgun/boltaction/examine(mob/user)
. = ..()
- . += "The bolt is [bolt_open ? "open" : "closed"].")
+ . += "The bolt is [bolt_open ? "open" : "closed"]."
/obj/item/gun/ballistic/shotgun/boltaction/enchanted
name = "enchanted bolt action rifle"
@@ -264,7 +264,7 @@
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user)
. = ..()
- . += "Alt-click to pump it.")
+ . += "Alt-click to pump it."
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize()
. = ..()
diff --git a/html/changelogs/AutoChangeLog-pr-9730.yml b/html/changelogs/AutoChangeLog-pr-9730.yml
new file mode 100644
index 0000000000..6caf95bcbc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9730.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - balance: "kinetic crushers no longer drop if you try to use it with one hand"
diff --git a/html/changelogs/AutoChangeLog-pr-9782.yml b/html/changelogs/AutoChangeLog-pr-9782.yml
new file mode 100644
index 0000000000..f29da71edc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9782.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Strawberry milk and tea have sprites now."
diff --git a/html/changelogs/AutoChangeLog-pr-9802.yml b/html/changelogs/AutoChangeLog-pr-9802.yml
new file mode 100644
index 0000000000..183515f5f1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9802.yml
@@ -0,0 +1,5 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Rosary beads prayer now works on non-carbon mobs too, and won't break when performed on a monkey or other humanoids."
+ - tweak: "You can flagellate people with rosary beads on harm intent. It's even mediocrer than the sord though."
diff --git a/icons/mob/dogborg.dmi b/icons/mob/dogborg.dmi
index ec63120ae1..856724be1f 100644
Binary files a/icons/mob/dogborg.dmi and b/icons/mob/dogborg.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index 5bcba5f7fc..ac898c55b2 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index 4d37bc9a70..e6e0b940a8 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi
index f29208e71f..c6f25f1b29 100644
Binary files a/icons/obj/plushes.dmi and b/icons/obj/plushes.dmi differ
diff --git a/modular_citadel/code/game/objects/items/holy_weapons.dm b/modular_citadel/code/game/objects/items/holy_weapons.dm
deleted file mode 100644
index 06cdb0f5fd..0000000000
--- a/modular_citadel/code/game/objects/items/holy_weapons.dm
+++ /dev/null
@@ -1,45 +0,0 @@
-/obj/item/nullrod/rosary
- icon = 'modular_citadel/icons/obj/items_and_weapons.dmi'
- icon_state = "rosary"
- item_state = null
- name = "prayer beads"
- desc = "A set of prayer beads used by many of the more traditional religions in space"
- force = 0
- throwforce = 0
- var/praying = FALSE
- var/deity_name = "Coderbus" //This is the default, hopefully won't actually appear if the religion subsystem is running properly
-
-/obj/item/nullrod/rosary/Initialize()
- .=..()
- if(GLOB.religion)
- deity_name = GLOB.deity
-
-/obj/item/nullrod/rosary/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- if(!istype(M))
- return ..()
-
- if(!user.mind || user.mind.assigned_role != "Chaplain")
- to_chat(user, "You are not close enough with [deity_name] to use [src].")
- return
-
- if(praying)
- to_chat(user, "You are already using [src].")
- return
-
- user.visible_message("[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [deity_name].", \
- "You kneel[M == user ? null : " next to [M]"] and begin a prayer to [deity_name].")
-
- praying = TRUE
- if(do_after(user, 20, target = M))
- if(istype(M, /mob/living/carbon/human)) // This probably should not work on catpeople. They're unholy abominations.
- var/mob/living/carbon/human/target = M
- M.reagents.add_reagent("holywater", 5)
- to_chat(target, "[user]'s prayer to [deity_name] has eased your pain!")
- target.adjustToxLoss(-5, TRUE, TRUE)
- target.adjustOxyLoss(-5)
- target.adjustBruteLoss(-5)
- target.adjustFireLoss(-5)
- praying = FALSE
- else
- to_chat(user, "Your prayer to [deity_name] was interrupted.")
- praying = FALSE
diff --git a/modular_citadel/code/game/objects/items/honk.dm b/modular_citadel/code/game/objects/items/honk.dm
deleted file mode 100644
index 47b9df7f10..0000000000
--- a/modular_citadel/code/game/objects/items/honk.dm
+++ /dev/null
@@ -1,17 +0,0 @@
-/obj/item/bikehorn/silver
- name = "silver bike horn"
- desc = "A shiny bike horn handcrafted in the artisan workshops of Mars, with superior kevlar-reinforced rubber bulb attached to a polished plasteel reed horn."
- attack_verb = list("elegantly HONKED")
- icon = 'modular_citadel/icons/obj/honk.dmi'
- icon_state = "silverhorn"
-
-/obj/item/bikehorn/bluespacehonker
- name = "bluespace bike horn"
- desc = "A normal bike horn colored blue and has bluespace dust held in to reed horn allowing for silly honks through space and time, into your in childhood."
- attack_verb = list("HONKED in bluespace", "HONKED", "quantumly HONKED")
- icon = 'modular_citadel/icons/obj/honk.dmi'
- icon_state = "bluespacehonker"
-
-/obj/item/bikehorn/bluespacehonker/attack(mob/living/carbon/M, mob/living/carbon/user)
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "bshonk", /datum/mood_event/bshonk)
- return ..()
diff --git a/modular_citadel/code/game/objects/items/vending_items.dm b/modular_citadel/code/game/objects/items/vending_items.dm
deleted file mode 100755
index db1fdb48cf..0000000000
--- a/modular_citadel/code/game/objects/items/vending_items.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-/obj/item/vending_refill/medical
- machine_name = "NanoMed"
- icon_state = "refill_medical"
diff --git a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm
index 353b0afb14..f5a15f7900 100644
--- a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm
+++ b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm
@@ -19,9 +19,9 @@
. = ..()
if(user.get_item_by_slot(SLOT_GLASSES) == src)
if(world.time >= nextadrenalinepop)
- to_chat(user, "The built-in adrenaline injector is ready for use.")
+ . += "The built-in adrenaline injector is ready for use."
else
- to_chat(user, "[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again.")
+ . += "[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again."
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
index 99ba9ad3e2..f1bd83ce71 100644
--- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
+++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
@@ -20,7 +20,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/dogborg/jaws/examine(mob/user)
. = ..()
if(!CONFIG_GET(flag/weaken_secborg))
- to_chat(user, "Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.")
+ . += "Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets."
/obj/item/dogborg/jaws/big
name = "combat jaws"
@@ -312,6 +312,42 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
target.wash_cream()
return
+//Nerfed tongue for flavour reasons (haha geddit?). Used for aux skins for regular borgs
+/obj/item/soap/tongue/flavour
+ desc = "For giving affectionate kisses."
+
+/obj/item/soap/tongue/flavour/attack_self(mob/user)
+ return
+
+/obj/item/soap/tongue/flavour/afterattack(atom/target, mob/user, proximity)
+ if(!proximity)
+ return
+ var/mob/living/silicon/robot.R = user
+ if(ishuman(target))
+ var/mob/living/L = target
+ if(status == 0 && check_zone(R.zone_selected) == "head")
+ R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
+ playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
+ return
+ else if(status == 0)
+ R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
+ playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
+ return
+
+//Same as above but for noses
+/obj/item/analyzer/nose/flavour/AltClick(mob/user)
+ return
+
+/obj/item/analyzer/nose/flavour/attack_self(mob/user)
+ return
+
+/obj/item/analyzer/nose/flavour/afterattack(atom/target, mob/user, proximity)
+ if(!proximity)
+ return
+ do_attack_animation(target, null, src)
+ user.visible_message("[user] [pick(attack_verb)] \the [target.name] with their nose!")
+
+
//Dogfood
/obj/item/trash/rkibble
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot.dm
deleted file mode 100644
index de98f9685c..0000000000
--- a/modular_citadel/code/modules/mob/living/silicon/robot/robot.dm
+++ /dev/null
@@ -1,26 +0,0 @@
-mob/living/silicon
- no_vore = TRUE
-
-/mob/living/silicon/robot
- var/dogborg = FALSE
-
-/mob/living/silicon/robot/lay_down()
- ..()
- update_canmove()
-
-/mob/living/silicon/robot/update_canmove()
- ..()
- if(client && stat != DEAD && dogborg == FALSE)
- if(resting)
- cut_overlays()
- icon_state = "[module.cyborg_base_icon]-rest"
- else
- icon_state = "[module.cyborg_base_icon]"
- update_icons()
-
-
-
-
-/mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_stamina = 1)
- if(istype(cell))
- cell.charge -= amount*5
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
deleted file mode 100644
index feec79ee8b..0000000000
--- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ /dev/null
@@ -1,466 +0,0 @@
-/mob/living/silicon/robot/modules/medihound
- set_module = /obj/item/robot_module/medihound
-
-/mob/living/silicon/robot/modules/k9
- set_module = /obj/item/robot_module/k9
-
-/mob/living/silicon/robot/modules/scrubpup
- set_module = /obj/item/robot_module/scrubpup
-
-/mob/living/silicon/robot/modules/borgi
- set_module = /obj/item/robot_module/borgi
-
-/mob/living/silicon/robot/proc/get_cit_modules()
- var/list/modulelist = list()
- modulelist["MediHound"] = /obj/item/robot_module/medihound
- if(BORG_SEC_AVAILABLE)
- modulelist["Security K-9"] = /obj/item/robot_module/k9
- modulelist["Scrub Puppy"] = /obj/item/robot_module/scrubpup
- modulelist["Borgi"] = /obj/item/robot_module/borgi
- return modulelist
-
-/obj/item/robot_module
- var/sleeper_overlay
- var/icon/cyborg_icon_override
- var/has_snowflake_deadsprite
- var/cyborg_pixel_offset
- var/moduleselect_alternate_icon
- var/dogborg = FALSE
-
-/obj/item/robot_module/k9
- name = "Security K-9 Unit"
- basic_modules = list(
- /obj/item/restraints/handcuffs/cable/zipties,
- /obj/item/storage/bag/borgdelivery,
- /obj/item/dogborg/jaws/big,
- /obj/item/dogborg/pounce,
- /obj/item/clothing/mask/gas/sechailer/cyborg,
- /obj/item/soap/tongue,
- /obj/item/analyzer/nose,
- /obj/item/dogborg/sleeper/K9,
- /obj/item/gun/energy/disabler/cyborg,
- /obj/item/pinpointer/crew)
- emag_modules = list(/obj/item/gun/energy/laser/cyborg)
- ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
- /obj/item/clockwork/weapon/ratvarian_spear)
- cyborg_base_icon = "k9"
- moduleselect_icon = "k9"
- moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
- can_be_pushed = FALSE
- hat_offset = INFINITY
- sleeper_overlay = "ksleeper"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- borghealth = 80
-
-/obj/item/robot_module/k9/do_transform_animation()
- ..()
- to_chat(loc,"While you have picked the Security K-9 module, you still have to follow your laws, NOT Space Law. \
- For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.")
-
-/obj/item/robot_module/k9/be_transformed_to(obj/item/robot_module/old_module)
- var/mob/living/silicon/robot/R = loc
- var/list/sechoundmodels = list("Default", "Dark", "Vale")
- if(R.client && R.client.ckey in list("nezuli"))
- sechoundmodels += "Alina"
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in sechoundmodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "k9"
- if("Alina")
- cyborg_base_icon = "alina-sec"
- special_light_key = "alina"
- sleeper_overlay = "alinasleeper"
- if("Dark")
- cyborg_base_icon = "k9dark"
- if("Vale")
- cyborg_base_icon = "valesec"
- return ..()
-
-/obj/item/robot_module/medihound
- name = "MediHound"
- basic_modules = list(
- /obj/item/dogborg/jaws/small,
- /obj/item/storage/bag/borgdelivery,
- /obj/item/analyzer/nose,
- /obj/item/soap/tongue,
- /obj/item/extinguisher/mini,
- /obj/item/healthanalyzer,
- /obj/item/dogborg/sleeper/medihound,
- /obj/item/roller/robo,
- /obj/item/reagent_containers/borghypo,
- /obj/item/twohanded/shockpaddles/cyborg/hound,
- /obj/item/stack/medical/gauze/cyborg,
- /obj/item/pinpointer/crew,
- /obj/item/sensor_device)
- emag_modules = list(/obj/item/dogborg/pounce)
- ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
- /obj/item/clockwork/weapon/ratvarian_spear)
- cyborg_base_icon = "medihound"
- moduleselect_icon = "medihound"
- moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
- can_be_pushed = FALSE
- hat_offset = INFINITY
- sleeper_overlay = "msleeper"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
-
-/obj/item/robot_module/medihound/be_transformed_to(obj/item/robot_module/old_module)
- var/mob/living/silicon/robot/R = loc
- var/list/medhoundmodels = list("Default", "Dark", "Vale")
- if(R.client && R.client.ckey in list("nezuli"))
- medhoundmodels += "Alina"
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medhoundmodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "medihound"
- if("Dark")
- cyborg_base_icon = "medihounddark"
- sleeper_overlay = "mdsleeper"
- if("Vale")
- cyborg_base_icon = "valemed"
- sleeper_overlay = "valemedsleeper"
- if("Alina")
- cyborg_base_icon = "alina-med"
- special_light_key = "alina"
- sleeper_overlay = "alinasleeper"
- return ..()
-
-/obj/item/robot_module/scrubpup
- name = "Scrub Pup"
- basic_modules = list(
- /obj/item/dogborg/jaws/small,
- /obj/item/analyzer/nose,
- /obj/item/soap/tongue/scrubpup,
- /obj/item/lightreplacer/cyborg,
- /obj/item/extinguisher/mini,
- /obj/item/dogborg/sleeper/compactor)
- emag_modules = list(/obj/item/dogborg/pounce)
- ratvar_modules = list(
- /obj/item/clockwork/slab/cyborg/janitor,
- /obj/item/clockwork/replica_fabricator/cyborg)
- cyborg_base_icon = "scrubpup"
- moduleselect_icon = "janitor"
- hat_offset = INFINITY
- clean_on_move = TRUE
- sleeper_overlay = "jsleeper"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- cyborg_pixel_offset = -16
- dogborg = TRUE
-
-/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
- ..()
- var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
- if(LR)
- for(var/i in 1 to coeff)
- LR.Charge(R)
-
-/obj/item/robot_module/scrubpup/do_transform_animation()
- ..()
- to_chat(loc,"As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.")
-
-/obj/item/robot_module/borgi
- name = "Borgi"
- basic_modules = list(
- /obj/item/dogborg/jaws/small,
- /obj/item/storage/bag/borgdelivery,
- /obj/item/analyzer/nose,
- /obj/item/soap/tongue,
- /obj/item/healthanalyzer,
- /obj/item/extinguisher/mini,
- /obj/item/borg/cyborghug)
- emag_modules = list(/obj/item/dogborg/pounce)
- ratvar_modules = list(
- /obj/item/clockwork/slab/cyborg,
- /obj/item/clockwork/weapon/ratvarian_spear,
- /obj/item/clockwork/replica_fabricator/cyborg)
- cyborg_base_icon = "borgi"
- moduleselect_icon = "borgi"
- moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
- hat_offset = INFINITY
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- has_snowflake_deadsprite = TRUE
-
-/*
-/obj/item/robot_module/orepup
- name = "Ore Pup"
- basic_modules = list(
- /obj/item/storage/bag/ore/cyborg,
- /obj/item/analyzer/nose,
- /obj/item/storage/bag/borgdelivery,
- /obj/item/dogborg/sleeper/ore,
- /obj/item/pickaxe/drill/cyborg,
- /obj/item/shovel,
- /obj/item/crowbar/cyborg,
- /obj/item/weldingtool/mini,
- /obj/item/extinguisher/mini,
- /obj/item/t_scanner/adv_mining_scanner,
- /obj/item/gun/energy/kinetic_accelerator/cyborg,
- /obj/item/gps/cyborg)
- emag_modules = list(/obj/item/dogborg/pounce)
- ratvar_modules = list(
- /obj/item/clockwork/slab/cyborg/miner,
- /obj/item/clockwork/weapon/ratvarian_spear,
- /obj/item/borg/sight/xray/truesight_lens)
- cyborg_base_icon = "orepup"
- moduleselect_icon = "orepup"
- sleeper_overlay = "osleeper"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- cyborg_pixel_offset = -16
-
-/obj/item/robot_module/miner/do_transform_animation()
- var/mob/living/silicon/robot/R = loc
- R.cut_overlays()
- R.setDir(SOUTH)
- flick("orepup_transform", R)
- do_transform_delay()
- R.update_headlamp()
-*/
-
-/obj/item/robot_module/medical/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("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "medical"
- if("Droid")
- cyborg_base_icon = "medical"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- hat_offset = 4
- if("Sleek")
- cyborg_base_icon = "sleekmed"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Marina")
- cyborg_base_icon = "marinamed"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Eyebot")
- cyborg_base_icon = "eyebotmed"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Heavy")
- cyborg_base_icon = "heavymed"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- return ..()
-
-/obj/item/robot_module/janitor/be_transformed_to(obj/item/robot_module/old_module)
- var/mob/living/silicon/robot/R = loc
- var/list/janimodels = list("Default", "Sleek", "Marina", "Can", "Heavy")
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in janimodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "janitor"
- if("Marina")
- cyborg_base_icon = "marinajan"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Sleek")
- cyborg_base_icon = "sleekjan"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Can")
- cyborg_base_icon = "canjan"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Heavy")
- cyborg_base_icon = "heavyres"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- return ..()
-
-/obj/item/robot_module/peacekeeper/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("Default", "Spider")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "peace"
- if("Spider")
- cyborg_base_icon = "whitespider"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- return ..()
-
-/obj/item/robot_module/security/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("Default", "Default - Treads", "Heavy", "Sleek", "Can", "Marina", "Spider")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "sec"
- if("Default - Treads")
- cyborg_base_icon = "sec-tread"
- special_light_key = "sec"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Sleek")
- cyborg_base_icon = "sleeksec"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Marina")
- cyborg_base_icon = "marinasec"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Can")
- cyborg_base_icon = "cansec"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Spider")
- cyborg_base_icon = "spidersec"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Heavy")
- cyborg_base_icon = "heavysec"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- return ..()
-
-/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", "Heavy", "Sleek", "Butler", "Tophat", "Kent", "Bro", "DarkK9", "Vale", "ValeDark")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Waitress")
- cyborg_base_icon = "service_f"
- if("Butler")
- cyborg_base_icon = "service_m"
- if("Bro")
- cyborg_base_icon = "brobot"
- if("Kent")
- cyborg_base_icon = "kent"
- special_light_key = "medical"
- hat_offset = 3
- if("Tophat")
- cyborg_base_icon = "tophat"
- special_light_key = null
- hat_offset = INFINITY //He is already wearing a hat
- if("Sleek")
- cyborg_base_icon = "sleekserv"
- special_light_key = "sleekserv"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Heavy")
- cyborg_base_icon = "heavyserv"
- special_light_key = "heavyserv"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("DarkK9")
- cyborg_base_icon = "k50"
- special_light_key = "k50"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- if("Vale")
- cyborg_base_icon = "valeserv"
- special_light_key = "valeserv"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- if("ValeDark")
- cyborg_base_icon = "valeservdark"
- special_light_key = "valeservdark"
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- return ..()
-
-/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module)
- var/mob/living/silicon/robot/R = loc
- var/list/engymodels = list("Default", "Default - Treads", "Heavy", "Sleek", "Marina", "Can", "Spider", "Loader","Handy", "Pup Dozer", "Vale")
- if(R.client && R.client.ckey in list("nezuli"))
- engymodels += "Alina"
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in engymodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Default")
- cyborg_base_icon = "engineer"
- if("Default - Treads")
- cyborg_base_icon = "engi-tread"
- special_light_key = "engineer"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Loader")
- cyborg_base_icon = "loaderborg"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- has_snowflake_deadsprite = TRUE
- if("Handy")
- cyborg_base_icon = "handyeng"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Sleek")
- cyborg_base_icon = "sleekeng"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Can")
- cyborg_base_icon = "caneng"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Marina")
- cyborg_base_icon = "marinaeng"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Spider")
- cyborg_base_icon = "spidereng"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Heavy")
- cyborg_base_icon = "heavyeng"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Pup Dozer")
- cyborg_base_icon = "pupdozer"
- can_be_pushed = FALSE
- hat_offset = INFINITY
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- if("Vale")
- cyborg_base_icon = "valeeng"
- can_be_pushed = FALSE
- hat_offset = INFINITY
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- if("Alina")
- cyborg_base_icon = "alina-eng"
- special_light_key = "alina"
- can_be_pushed = FALSE
- hat_offset = INFINITY
- cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi'
- has_snowflake_deadsprite = TRUE
- dogborg = TRUE
- cyborg_pixel_offset = -16
- return ..()
-
-/obj/item/robot_module/miner/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("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
- if("Lavaland")
- cyborg_base_icon = "miner"
- if("Asteroid")
- cyborg_base_icon = "minerOLD"
- special_light_key = "miner"
- if("Droid")
- cyborg_base_icon = "miner"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- hat_offset = 4
- if("Sleek")
- cyborg_base_icon = "sleekmin"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Can")
- cyborg_base_icon = "canmin"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Marina")
- cyborg_base_icon = "marinamin"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Spider")
- cyborg_base_icon = "spidermin"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- if("Heavy")
- cyborg_base_icon = "heavymin"
- cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
- return ..()
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
index 7e6a8b3389..f847d04e9e 100644
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
@@ -178,9 +178,9 @@
/obj/item/gun/ballistic/automatic/magrifle_e/examine(mob/user)
. = ..()
if(cell)
- to_chat(user, "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full.")
+ . += "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full."
else
- to_chat(user, "[src] doesn't seem to have a cell!")
+ . += "[src] doesn't seem to have a cell!"
/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot()
if(QDELETED(cell))
@@ -241,9 +241,9 @@
/obj/item/gun/ballistic/automatic/pistol/mag_e/examine(mob/user)
. = ..()
if(cell)
- to_chat(user, "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full.")
+ . += "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full."
else
- to_chat(user, "[src] doesn't seem to have a cell!")
+ . += "[src] doesn't seem to have a cell!"
/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot()
if(QDELETED(cell))
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
index 1e0e0afc87..e40ccfe6ea 100644
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
@@ -218,8 +218,8 @@
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
update_icon()
/obj/item/gun/ballistic/automatic/AM4B/examine(mob/user)
- ..()
- to_chat(user, "Alt-click to recolor it.")
+ . = ..()
+ . += "Alt-click to recolor it."
/obj/item/ammo_box/magazine/toy/AM4C
name = "foam force AM4-C magazine"
diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
index aef47a648e..be070ff7b5 100644
--- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
+++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
@@ -94,8 +94,8 @@
update_icon()
/obj/item/gun/energy/pumpaction/examine(mob/user) //so people don't ask HOW TO CHANGE FIRING MODE
- ..()
- to_chat(user, "Alt-click to change firing modes.")
+ . = ..()
+ . += "Alt-click to change firing modes."
/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file) //ammo counter for inhands
. = ..()
diff --git a/modular_citadel/icons/mob/widerobot.dmi b/modular_citadel/icons/mob/widerobot.dmi
index 19dd8dba86..e574766d70 100644
Binary files a/modular_citadel/icons/mob/widerobot.dmi and b/modular_citadel/icons/mob/widerobot.dmi differ
diff --git a/modular_citadel/icons/obj/drinks.dmi b/modular_citadel/icons/obj/drinks.dmi
deleted file mode 100644
index a7af4f23bd..0000000000
Binary files a/modular_citadel/icons/obj/drinks.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/honk.dmi b/modular_citadel/icons/obj/honk.dmi
deleted file mode 100644
index e605c646f8..0000000000
Binary files a/modular_citadel/icons/obj/honk.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/items_and_weapons.dmi b/modular_citadel/icons/obj/items_and_weapons.dmi
index 280b642d42..3b1d894d96 100644
Binary files a/modular_citadel/icons/obj/items_and_weapons.dmi and b/modular_citadel/icons/obj/items_and_weapons.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 2e0142c49f..03c341d97a 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3016,10 +3016,7 @@
#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
#include "modular_citadel\code\game\objects\items\balls.dm"
#include "modular_citadel\code\game\objects\items\boombox.dm"
-#include "modular_citadel\code\game\objects\items\holy_weapons.dm"
-#include "modular_citadel\code\game\objects\items\honk.dm"
#include "modular_citadel\code\game\objects\items\stunsword.dm"
-#include "modular_citadel\code\game\objects\items\vending_items.dm"
#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm"
#include "modular_citadel\code\game\objects\items\devices\radio\headset.dm"
@@ -3102,8 +3099,6 @@
#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "modular_citadel\code\modules\projectiles\gun.dm"
#include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm"