Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cyborg movement speed rebalance #17577

Merged
merged 4 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion _std/defines/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
/// Amount an arm on the same side as a missing leg will offset the missing leg penalty
#define ROBOT_MISSING_LEG_ARM_OFFSET -1
/// Amount a missing arm will speed you up (as long as you have legs)
#define ROBOT_MISSING_ARM_MOVEMENT_ADJUST -0.4
#define ROBOT_MISSING_ARM_MOVEMENT_ADJUST -0.1
6 changes: 3 additions & 3 deletions code/WorkInProgress/AphsStuff.dm
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@
appearanceString = "servo"
max_health = 40
handlistPart = "armR-light"
robot_movement_modifier = /datum/movement_modifier/robot_part/head
robot_movement_modifier = /datum/movement_modifier/robot_part/light_head

/obj/item/parts/robot_parts/arm/left/servotron
name = "servotron left arm"
Expand All @@ -405,15 +405,15 @@
appearanceString = "servo"
max_health = 40
handlistPart = "armL-light"
robot_movement_modifier = /datum/movement_modifier/robot_part/arm_left
robot_movement_modifier = /datum/movement_modifier/robot_part/light_arm_left

/obj/item/parts/robot_parts/head/servotron
name = "servotron head"
desc = "The surprisingly spacious head of a Kingsway Systems SV-4 Servotron."
icon_state = "head-servo"
appearanceString = "servo"
max_health = 87
robot_movement_modifier = /datum/movement_modifier/robot_part/arm_right
robot_movement_modifier = /datum/movement_modifier/robot_part/light_arm_right

/obj/item/parts/robot_parts/chest/servotron
name = "servotron chest"
Expand Down
58 changes: 51 additions & 7 deletions code/datums/movement_modifier/movement_modifiers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
return list(0,0.85)
return list(0,0.5)

// robot legs
// robot legs for humans
/datum/movement_modifier/robotleg_right
health_deficiency_adjustment = -25

Expand Down Expand Up @@ -119,14 +119,50 @@
. *= 0.75
return list(0, .)

/datum/movement_modifier/robot_part/head
additive_slowdown = -0.2
// robot heads
/datum/movement_modifier/robot_part/light_head
additive_slowdown = -0.1

/datum/movement_modifier/robot_part/standard_head
additive_slowdown = -0.05

/datum/movement_modifier/robot_part/sturdy_head
additive_slowdown = 0.05

/datum/movement_modifier/robot_part/heavy_head
additive_slowdown = 0.35

// robot arms
/datum/movement_modifier/robot_part/light_arm_left
additive_slowdown = -0.05

/datum/movement_modifier/robot_part/light_arm_right
additive_slowdown = -0.05

/datum/movement_modifier/robot_part/sturdy_arm_left
additive_slowdown = 0.1

/datum/movement_modifier/robot_part/sturdy_arm_right
additive_slowdown = 0.1

/datum/movement_modifier/robot_part/arm_left
additive_slowdown = -0.2
/datum/movement_modifier/robot_part/heavy_arm_left
additive_slowdown = 0.2

/datum/movement_modifier/robot_part/arm_right
additive_slowdown = -0.2
/datum/movement_modifier/robot_part/heavy_arm_right
additive_slowdown = 0.2

// robot legs
/datum/movement_modifier/robot_part/light_leg_left
additive_slowdown = -0.15

/datum/movement_modifier/robot_part/light_leg_right
additive_slowdown = -0.15

/datum/movement_modifier/robot_part/standard_leg_left
additive_slowdown = -0.1

/datum/movement_modifier/robot_part/standard_leg_right
additive_slowdown = -0.1

/datum/movement_modifier/robot_part/tread_left
additive_slowdown = -0.25
Expand All @@ -140,6 +176,14 @@
/datum/movement_modifier/robot_part/thruster_right
additive_slowdown = -0.3

// robot chests
/datum/movement_modifier/robot_part/light_chest
additive_slowdown = -0.1

/datum/movement_modifier/robot_part/standard_chest
additive_slowdown = -0.05


// artifact legs
/datum/movement_modifier/martian_legs/left
health_deficiency_adjustment = -35
Expand Down
7 changes: 0 additions & 7 deletions code/mob/living/silicon/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1785,13 +1785,6 @@
. += ROBOT_MISSING_ARM_MOVEMENT_ADJUST


if (total_weight > 0)
if (istype(src.part_leg_l,/obj/item/parts/robot_parts/leg/left/treads) && istype(src.part_leg_r,/obj/item/parts/robot_parts/leg/right/treads))
. += total_weight / 3
else
. += total_weight


hotkey(name)
switch (name)
if ("help")
Expand Down
24 changes: 17 additions & 7 deletions code/obj/item/mob_parts/robot_parts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts)
var/max_health = 100
var/dmg_blunt = 0
var/dmg_burns = 0
/// for calculating speed modifiers
/// Currently vestigal variable previously used for speed, being left for potiental future application
var/weight = 0
/// does this part consume any extra power
var/powerdrain = 0
Expand Down Expand Up @@ -261,6 +261,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/head)
/obj/item/parts/robot_parts/head/standard
name = "standard cyborg head"
max_health = 160
robot_movement_modifier = /datum/movement_modifier/robot_part/standard_head
attackby(obj/item/W, mob/user)
if (istype(W,/obj/item/sheet))
var/obj/item/sheet/M = W
Expand Down Expand Up @@ -292,6 +293,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/head)
icon_state = "head-sturdy"
max_health = 225
weight = 0.2
robot_movement_modifier = /datum/movement_modifier/robot_part/sturdy_head
kind_of_limb = (LIMB_ROBOT | LIMB_HEAVY) // shush

attackby(obj/item/W, mob/user)
Expand Down Expand Up @@ -347,6 +349,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/head)
icon_state = "head-heavy"
max_health = 350
weight = 0.4
robot_movement_modifier = /datum/movement_modifier/robot_part/heavy_head
kind_of_limb = (LIMB_ROBOT | LIMB_HEAVIER)

attackby(obj/item/W, mob/user)
Expand Down Expand Up @@ -376,7 +379,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/head)
appearanceString = "light"
icon_state = "head-light"
max_health = 60
robot_movement_modifier = /datum/movement_modifier/robot_part/head
robot_movement_modifier = /datum/movement_modifier/robot_part/light_head
kind_of_limb = (LIMB_ROBOT | LIMB_LIGHT)

/obj/item/parts/robot_parts/head/antique
Expand All @@ -386,7 +389,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/head)
icon_state = "head-android"
max_health = 150
visible_eyes = 0
robot_movement_modifier = /datum/movement_modifier/robot_part/head
robot_movement_modifier = /datum/movement_modifier/robot_part/light_head

/obj/item/parts/robot_parts/head/screen
name = "cyborg screen head"
Expand Down Expand Up @@ -479,6 +482,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/chest)
name = "standard cyborg chest"
desc = "The centerpiece of any cyborg. It wouldn't get very far without it."
max_health = 250
robot_movement_modifier = /datum/movement_modifier/robot_part/standard_chest

attackby(obj/item/W, mob/user)
if (isweldingtool(W))
Expand All @@ -499,6 +503,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/chest)
appearanceString = "light"
icon_state = "body-light"
max_health = 75
robot_movement_modifier = /datum/movement_modifier/robot_part/light_chest
kind_of_limb = (LIMB_ROBOT | LIMB_LIGHT) // hush

ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm)
Expand Down Expand Up @@ -579,6 +584,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/left)

/obj/item/parts/robot_parts/arm/left/standard
name = "standard cyborg left arm"

attackby(obj/item/W, mob/user)
if(istype(W,/obj/item/sheet))
var/obj/item/sheet/M = W
Expand All @@ -602,6 +608,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/left)
icon_state = "l_arm-sturdy"
max_health = 115
weight = 0.2
robot_movement_modifier = /datum/movement_modifier/robot_part/sturdy_arm_left
kind_of_limb = (LIMB_ROBOT | LIMB_HEAVY)

attackby(obj/item/W, mob/user)
Expand Down Expand Up @@ -630,6 +637,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/left)
icon_state = "l_arm-heavy"
max_health = 175
weight = 0.4
robot_movement_modifier = /datum/movement_modifier/robot_part/heavy_arm_left
kind_of_limb = (LIMB_ROBOT | LIMB_HEAVIER)

/obj/item/parts/robot_parts/arm/left/light
Expand All @@ -638,7 +646,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/left)
icon_state = "l_arm-light"
max_health = 25
handlistPart = "armL-light"
robot_movement_modifier = /datum/movement_modifier/robot_part/arm_left
robot_movement_modifier = /datum/movement_modifier/robot_part/light_arm_left
kind_of_limb = (LIMB_ROBOT | LIMB_LIGHT)

ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/right)
Expand Down Expand Up @@ -676,6 +684,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/right)
icon_state = "r_arm-sturdy"
max_health = 115
weight = 0.2
robot_movement_modifier = /datum/movement_modifier/robot_part/sturdy_arm_right
kind_of_limb = (LIMB_ROBOT | LIMB_HEAVY)

attackby(obj/item/W, mob/user)
Expand Down Expand Up @@ -704,6 +713,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/right)
icon_state = "r_arm-heavy"
max_health = 175
weight = 0.4
robot_movement_modifier = /datum/movement_modifier/robot_part/heavy_arm_right
kind_of_limb = (LIMB_ROBOT | LIMB_HEAVIER)

/obj/item/parts/robot_parts/arm/right/light
Expand All @@ -712,7 +722,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/arm/right)
icon_state = "r_arm-light"
max_health = 25
handlistPart = "armR-light"
robot_movement_modifier = /datum/movement_modifier/robot_part/arm_right
robot_movement_modifier = /datum/movement_modifier/robot_part/light_arm_right
kind_of_limb = (LIMB_ROBOT | LIMB_LIGHT)

ABSTRACT_TYPE(/obj/item/parts/robot_parts/leg)
Expand Down Expand Up @@ -819,7 +829,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/leg/left)
icon_state = "l_leg-light"
partlistPart = "legL-light"
max_health = 25
robot_movement_modifier = /datum/movement_modifier/robotleg_left
robot_movement_modifier = /datum/movement_modifier/robot_part/light_leg_left
kind_of_limb = (LIMB_ROBOT | LIMB_LIGHT)

/obj/item/parts/robot_parts/leg/left/treads
Expand Down Expand Up @@ -854,7 +864,7 @@ ABSTRACT_TYPE(/obj/item/parts/robot_parts/leg/right)
icon_state = "r_leg-light"
partlistPart = "legR-light"
max_health = 25
robot_movement_modifier = /datum/movement_modifier/robotleg_right
robot_movement_modifier = /datum/movement_modifier/robot_part/light_leg_right
kind_of_limb = (LIMB_ROBOT | LIMB_LIGHT)

/obj/item/parts/robot_parts/leg/right/treads
Expand Down