diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm
index 30a3e5a9a2..68045296be 100644
--- a/code/game/objects/items/devices/dogborg_sleeper.dm
+++ b/code/game/objects/items/devices/dogborg_sleeper.dm
@@ -93,6 +93,7 @@
injection_chems += "toxin"
target.forceMove(src)
target.reset_perspective(src)
+ target.ExtinguishMob() //The tongue already puts out fire stacks but being put into the sleeper shouldn't allow you to keep burning.
update_gut()
user.visible_message("[hound.name]'s medical pod lights up and expands as [target.name] slips inside into their [src.name].", "Your medical pod lights up as [target] slips into your [src]. Life support functions engaged.")
message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]")
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 8a2e5d1292..1f3019fe65 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -94,6 +94,8 @@
target.update_handcuffed()
if(trashtype && !dispense)
qdel(src)
+ if(iscyborg(user))
+ playsound(user, "law", 50, 0)
return
/obj/item/restraints/handcuffs/sinew
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 3bac97b009..7867ec5f1e 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -80,7 +80,7 @@
return FALSE
//R.speed = -2 // Gotta go fast.
- //Citadel change - makes vtecs give an ability rather than reducing the borg's speed instantly
+ //Citadel change - makes vtecs give an ability rather than reducing the borg's speed instantly
R.AddAbility(new/obj/effect/proc_holder/silicon/cyborg/vtecControl)
/obj/item/borg/upgrade/vtec/deactivate(mob/living/silicon/robot/R, user = usr)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index f5cd894635..2ee079e41d 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -2062,10 +2062,16 @@ GLOBAL_LIST_EMPTY(preferences_datums)
else if("xenotail" in pref_species.default_features)
character.dna.species.mutant_bodyparts |= "xenotail"
- if(("legs" in pref_species.default_features) && character.dna.features["legs"] == "Digitigrade Legs")
- pref_species.species_traits += DIGITIGRADE
- character.Digitigrade_Leg_Swap(FALSE)
- else
+ if("legs" in pref_species.default_features)
+ if(character.dna.features["legs"] == "Digitigrade Legs")
+ pref_species.species_traits += DIGITIGRADE
+ character.Digitigrade_Leg_Swap(FALSE)
+
+ if(character.dna.features["legs"] == "Normal Legs" && DIGITIGRADE in pref_species.species_traits)
+ pref_species.species_traits -= DIGITIGRADE
+ character.Digitigrade_Leg_Swap(TRUE)
+
+ else if((!"legs" in pref_species.default_features) && DIGITIGRADE in pref_species.species_traits)
pref_species.species_traits -= DIGITIGRADE
character.Digitigrade_Leg_Swap(TRUE)
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index 96898051a4..4ff61f4fcc 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -64,6 +64,7 @@
clothing_flags = THICKMATERIAL //not spaceproof
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | LAVA_PROOF
+ tauric = TRUE //Citadel Add for tauric hardsuits
slowdown = 0
armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
@@ -134,6 +135,7 @@
armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25)
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
+ tauric = TRUE //Citadel Add for tauric hardsuits
/obj/item/clothing/head/hooded/seva
name = "SEVA Hood"
@@ -176,6 +178,7 @@
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
+ tauric = TRUE //Citadel Add for tauric hardsuits
/obj/item/clothing/head/hooded/exo
name = "Exo-hood"
diff --git a/modular_citadel/code/game/objects/items/robot/robot_upgrades.dm b/modular_citadel/code/game/objects/items/robot/robot_upgrades.dm
index 279685e94a..5f65b97173 100644
--- a/modular_citadel/code/game/objects/items/robot/robot_upgrades.dm
+++ b/modular_citadel/code/game/objects/items/robot/robot_upgrades.dm
@@ -1,4 +1,4 @@
-//V-tech kicked in yo
+// Citadel's Vtech Controller
/obj/effect/proc_holder/silicon/cyborg/vtecControl
name = "vTec Control"
desc = "Allows finer-grained control of the vTec speed boost."
@@ -10,7 +10,6 @@
/obj/effect/proc_holder/silicon/cyborg/vtecControl/Click(mob/living/silicon/robot/user)
-
var/mob/living/silicon/robot/self = usr
currentState = (currentState + 1) % 3
@@ -18,11 +17,11 @@
if(usr)
switch(currentState)
if (0)
- self.speed += maxReduction
+ self.speed = maxReduction
if (1)
self.speed -= maxReduction*0.5
if (2)
- self.speed -= maxReduction*0.5
+ self.speed -= maxReduction*1.25
action.button_icon_state = "Chevron_State_[currentState]"
action.UpdateButtonIcon()
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 6fe3994d20..0ac3d624e9 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
@@ -3,31 +3,31 @@ DOG BORG EQUIPMENT HERE
SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
*/
+/obj/item/dogborg/jaws
+ name = "Dogborg jaws"
+ desc = "The jaws of the debug errors oh god."
+ icon = 'icons/mob/dogborg.dmi'
+ flags_1 = CONDUCT_1
+ force = 1
+ throwforce = 0
+ w_class = 3
+ hitsound = 'sound/weapons/bite.ogg'
+ sharpness = IS_SHARP
+
/obj/item/dogborg/jaws/big
name = "combat jaws"
- icon = 'icons/mob/dogborg.dmi'
+ desc = "The jaws of the law. Very sharp."
icon_state = "jaws"
- desc = "The jaws of the law."
- flags_1 = CONDUCT_1
force = 12
- throwforce = 0
- hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
- w_class = 3
- sharpness = IS_SHARP
/obj/item/dogborg/jaws/small
name = "puppy jaws"
- icon = 'icons/mob/dogborg.dmi'
+ desc = "Rubberized teeth designed to protect accidental harm. Sharp enough for specialized tasks however."
icon_state = "smalljaws"
- desc = "The jaws of a small dog."
- flags_1 = CONDUCT_1
force = 6
- throwforce = 0
- hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
- w_class = 3
- sharpness = IS_SHARP
+ var/status = 0
/obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user)
..()
@@ -36,50 +36,25 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/dogborg/jaws/small/attack_self(mob/user)
var/mob/living/silicon/robot.R = user
- if(R.emagged)
- name = "combat jaws"
- icon = 'icons/mob/dogborg.dmi'
- icon_state = "jaws"
- desc = "The jaws of the law."
- flags_1 = CONDUCT_1
- force = 12
- throwforce = 0
- hitsound = 'sound/weapons/bite.ogg'
- attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
- w_class = 3
- sharpness = IS_SHARP
- else
- name = "puppy jaws"
- icon = 'icons/mob/dogborg.dmi'
- icon_state = "smalljaws"
- desc = "The jaws of a small dog."
- flags_1 = CONDUCT_1
- force = 5
- throwforce = 0
- hitsound = 'sound/weapons/bite.ogg'
- attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
- w_class = 3
- sharpness = IS_SHARP
- update_icon()
-
-
-//Cuffs
-
-/obj/item/restraints/handcuffs/cable/zipties/cyborg/dog/attack(mob/living/carbon/C, mob/user)
- if(!C.handcuffed)
- playsound(loc, 'sound/weapons/cablecuff.ogg', 60, 1, -2)
- C.visible_message("[user] is trying to put zipties on [C]!", \
- "[user] is trying to put zipties on [C]!")
- if(do_mob(user, C, 60))
- if(!C.handcuffed)
- C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
- C.update_inv_handcuffed(0)
- to_chat(user,"You handcuff [C].")
- playsound(loc, pick('sound/voice/beepsky/criminal.ogg', 'sound/voice/beepsky/justice.ogg', 'sound/voice/beepsky/freeze.ogg'), 50, FALSE)
- log_combat(user, C, "handcuffed")
+ if(R.cell && R.cell.charge > 100)
+ if(R.emagged && status == 0)
+ name = "combat jaws"
+ icon_state = "jaws"
+ desc = "The jaws of the law."
+ force = 12
+ attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
+ status = 1
+ to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].")
else
- to_chat(user,"You fail to handcuff [C]!")
-
+ name = "puppy jaws"
+ icon_state = "smalljaws"
+ desc = "The jaws of a small dog."
+ force = 5
+ attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
+ status = 0
+ if(R.emagged)
+ to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].")
+ update_icon()
//Boop
@@ -152,8 +127,10 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
/obj/item/analyzer/nose/AltClick(mob/user) //Barometer output for measuring when the next storm happens
. = ..()
-/obj/item/analyzer/nose/afterattack(atom/target, mob/user)
+/obj/item/analyzer/nose/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!")
@@ -172,8 +149,8 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
STR.max_combined_w_class = 5
STR.max_items = 1
STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear, /obj/item/radio/intercom))
-//Tongue stuff
+//Tongue stuff
/obj/item/soap/tongue
name = "synthetic tongue"
desc = "Useful for slurping mess off the floor before affectionally licking the crew members in the face."
@@ -190,12 +167,6 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
..()
item_flags |= NOBLUDGEON //No more attack messages
-/obj/item/trash/rkibble
- name = "robo kibble"
- desc = "A novelty bowl of assorted mech fabricator byproducts. Mockingly feed this to the sec-dog to help it recharge."
- icon = 'icons/mob/dogborg.dmi'
- icon_state= "kibble"
-
/obj/item/soap/tongue/attack_self(mob/user)
var/mob/living/silicon/robot.R = user
if(R.cell && R.cell.charge > 100)
@@ -303,6 +274,13 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
target.wash_cream()
return
+//Dogfood
+
+/obj/item/trash/rkibble
+ name = "robo kibble"
+ desc = "A novelty bowl of assorted mech fabricator byproducts. Mockingly feed this to the sec-dog to help it recharge."
+ icon = 'icons/mob/dogborg.dmi'
+ icon_state= "kibble"
//Defibs
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
index 8858934a53..0efe493c35 100644
--- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -30,7 +30,7 @@
/obj/item/robot_module/k9
name = "Security K-9 Unit"
basic_modules = list(
- /obj/item/restraints/handcuffs/cable/zipties/cyborg/dog,
+ /obj/item/restraints/handcuffs/cable/zipties,
/obj/item/storage/bag/borgdelivery,
/obj/item/dogborg/jaws/big,
/obj/item/dogborg/pounce,
diff --git a/modular_citadel/icons/mob/suit_digi.dmi b/modular_citadel/icons/mob/suit_digi.dmi
index abaa0d1a42..89284dbe52 100644
Binary files a/modular_citadel/icons/mob/suit_digi.dmi and b/modular_citadel/icons/mob/suit_digi.dmi differ
diff --git a/modular_citadel/icons/mob/taur_canine.dmi b/modular_citadel/icons/mob/taur_canine.dmi
index e6ccd17ff1..101430f0e2 100644
Binary files a/modular_citadel/icons/mob/taur_canine.dmi and b/modular_citadel/icons/mob/taur_canine.dmi differ
diff --git a/modular_citadel/icons/mob/taur_naga.dmi b/modular_citadel/icons/mob/taur_naga.dmi
index 7cdd50a10e..7342b52cdb 100644
Binary files a/modular_citadel/icons/mob/taur_naga.dmi and b/modular_citadel/icons/mob/taur_naga.dmi differ