diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm
index e0dd2e9b6f1..cadd376a7b3 100644
--- a/code/__DEFINES/atom_hud.dm
+++ b/code/__DEFINES/atom_hud.dm
@@ -25,7 +25,7 @@
#define HEART_STATUS_HUD "heart_status_hud" // display if revivable, along with blood level
#define XENO_FIRE_HUD "xeno_fire_hud" // displays how many fire stacks a xeno has
#define XENO_BLESSING_HUD "xeno_blessing_hud" //indicates what blessings the xeno has
-#define XENO_EVASION_HUD "xeno_extra_hud" // displays anything extra or additional such as runner's evasion duration
+#define XENO_EVASION_HUD "xeno_extra_hud" // displays anything extra or additional such as evasion duration
#define XENO_BANISHED_HUD "xeno_banished_hud" // indicates that the xeno is banished
#define ADD_HUD_TO_COOLDOWN 20 //cooldown for being shown the images for any particular data hud
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index ec035c4e288..db842225255 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -822,6 +822,7 @@
#define COMSIG_XENOABILITY_TOGGLE_STEALTH "xenoability_toggle_stealth"
#define COMSIG_XENOABILITY_HUNTER_BLINK "xenoability_hunter_blink"
#define COMSIG_XENOABILITY_MIRAGE "xenoability_mirage"
+#define COMSIG_XENOABILITY_HUNTER_POUNCE "xenoability_hunter_pounce"
#define COMSIG_XENOABILITY_SCREECH "xenoability_screech"
#define COMSIG_XENOABILITY_PSYCHIC_WHISPER "xenoability_psychic_whisper"
@@ -850,12 +851,7 @@
#define COMSIG_XENOABILITY_IMMORTALITY "xenoability_immortality"
#define COMSIG_XENOABILITY_VAMPIRISM "xenoability_vampirism"
-#define COMSIG_XENOABILITY_RUNNER_POUNCE "xenoability_runner_pounce"
-#define COMSIG_XENOABILITY_HUNTER_POUNCE "xenoability_hunter_pounce"
-#define COMSIG_XENOABILITY_TOGGLE_SAVAGE "xenoability_toggle_savage"
-#define COMSIG_XENOABILITY_EVASION "xenoability_evasion"
-#define COMSIG_XENOABILITY_AUTO_EVASION "xenoability_auto_evasion"
-#define COMSIG_XENOABILITY_SNATCH "xenoability_snatch"
+
#define COMSIG_XENOABILITY_VENTCRAWL "xenoability_vent_crawl"
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index a8f2014d69b..c78f7a1c631 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -97,7 +97,6 @@
#define isxenodefender(A) (istype(A, /mob/living/carbon/xenomorph/defender))
#define isxenopraetorian(A) (istype(A, /mob/living/carbon/xenomorph/praetorian))
#define isxenoravager(A) (istype(A, /mob/living/carbon/xenomorph/ravager))
-#define isxenorunner(A) (istype(A, /mob/living/carbon/xenomorph/runner))
#define isxenospitter(A) (istype(A, /mob/living/carbon/xenomorph/spitter))
#define isxenosentinel(A) (istype(A, /mob/living/carbon/xenomorph/sentinel))
#define isxenowarrior(A) (istype(A, /mob/living/carbon/xenomorph/warrior))
diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm
index a8e4d99fb85..eb634abb24e 100644
--- a/code/__DEFINES/movespeed_modification.dm
+++ b/code/__DEFINES/movespeed_modification.dm
@@ -40,7 +40,6 @@
#define MOVESPEED_ID_BULL_GORE_CHARGE "BULL_GORE_CHARGE"
#define MOVESPEED_ID_GORGER_CARNAGE "GORGER_CARNAGE"
#define MOVESPEED_ID_GORGER_REJUVENATE "GORGER_REJUVENATE"
-#define MOVESPEED_ID_SNATCH "RUNNER_SNATCH"
#define MOVESPEED_ID_BLESSED_HIVE "BLESSED_HIVE" //#blessed.
#define MOVESPEED_ID_WARLOCK_CHANNELING "WARLOCK_CHANNELING"
#define MOVESPEED_ID_XENO_DREAD "DREADXENO"
diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index 0e6ec53ffec..7b7317b1e21 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -115,7 +115,6 @@ GLOBAL_LIST_INIT(playable_icons, list(
"ravager",
"requisition",
"researcher",
- "runner",
"sentinel",
"spiderling",
"spitter",
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 416824fdfed..59c983d2d4a 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -61,8 +61,6 @@ GLOBAL_LIST_INIT_TYPED(xeno_caste_datums, /list/datum/xeno_caste, init_xeno_cast
.[caste.get_base_caste_type()][caste.upgrade] = caste
GLOBAL_LIST_INIT(all_xeno_types, list(
- /mob/living/carbon/xenomorph/runner,
- /mob/living/carbon/xenomorph/runner/primordial,
/mob/living/carbon/xenomorph/drone,
/mob/living/carbon/xenomorph/drone/primordial,
/mob/living/carbon/xenomorph/sentinel,
@@ -125,7 +123,7 @@ GLOBAL_LIST_EMPTY_TYPED(mob_illusions_list, /mob/illusion)
GLOBAL_LIST_INIT(xeno_types_tier_one, list(
/datum/xeno_caste/defender,
/datum/xeno_caste/drone,
- /datum/xeno_caste/runner,
+ /datum/xeno_caste/panther,
/datum/xeno_caste/sentinel,
))
@@ -134,7 +132,6 @@ GLOBAL_LIST_INIT(xeno_types_tier_two, list(
/datum/xeno_caste/carrier,
/datum/xeno_caste/hivelord,
/datum/xeno_caste/hunter,
- /datum/xeno_caste/panther,
/datum/xeno_caste/spitter,
/datum/xeno_caste/warrior,
))
diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm
index 3d85e1c1edd..f820a8c50d5 100644
--- a/code/datums/components/riding/riding_mob.dm
+++ b/code/datums/components/riding/riding_mob.dm
@@ -231,7 +231,7 @@
/datum/component/riding/creature/crusher/handle_specials()
. = ..()
set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(-10, -3), TEXT_SOUTH = list(-11, 6), TEXT_EAST = list(-21, 4), TEXT_WEST = list(4, 4)))
- set_riding_offsets(/mob/living/carbon/xenomorph/runner, list(TEXT_NORTH = list(-16, 9), TEXT_SOUTH = list(-16, 17), TEXT_EAST = list(-21, 7), TEXT_WEST = list(-6, 7)))
+ set_riding_offsets(/mob/living/carbon/xenomorph/panther, list(TEXT_NORTH = list(-16, 9), TEXT_SOUTH = list(-16, 17), TEXT_EAST = list(-21, 7), TEXT_WEST = list(-6, 7)))
set_riding_offsets(/mob/living/carbon/xenomorph/larva, list(TEXT_NORTH = list(3, 6), TEXT_SOUTH = list(0, 16), TEXT_EAST = list(-2, 10), TEXT_WEST = list(0, 10)))
set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
set_vehicle_dir_layer(NORTH, ABOVE_LYING_MOB_LAYER)
diff --git a/code/datums/keybinding/xeno.dm b/code/datums/keybinding/xeno.dm
index b7d4c6b452b..cf71d06dff3 100644
--- a/code/datums/keybinding/xeno.dm
+++ b/code/datums/keybinding/xeno.dm
@@ -775,39 +775,6 @@
description = ""
keybind_signal = COMSIG_XENOABILITY_RAVAGE_SELECT
-/datum/keybinding/xeno/pounce
- name = "pounce"
- full_name = "Runner: Pounce"
- description = ""
- keybind_signal = COMSIG_XENOABILITY_RUNNER_POUNCE
- hotkey_keys = list("E")
-
-/datum/keybinding/xeno/toggle_savage
- name = "toggle_savage"
- full_name = "Runner: Toggle Savage"
- description = ""
- keybind_signal = COMSIG_XENOABILITY_TOGGLE_SAVAGE
-
-/datum/keybinding/xeno/evasion
- name = "evasion"
- full_name = "Runner: Evasion"
- description = "Take evasive action, forcing non-friendly projectiles that would hit you to miss so long as you keep moving."
- keybind_signal = COMSIG_XENOABILITY_EVASION
- hotkey_keys = list("Z")
-
-/datum/keybinding/xeno/auto_evasion
- name = "auto_evasion"
- full_name = "Runner: Toggle Auto Evasion"
- description = "Toggles Auto Evasion on or off. While active, Auto Evasion will automatically use Evasion when you gain its cooldown reset bonus."
- keybind_signal = COMSIG_XENOABILITY_AUTO_EVASION
-
-/datum/keybinding/xeno/snatch
- name = "snatch"
- full_name = "Runner: Snatch"
- description = "Take an item equipped by your target in your mouth, and carry it away."
- keybind_signal = COMSIG_XENOABILITY_SNATCH
- hotkey_keys = list("Q")
-
/datum/keybinding/xeno/toxic_slash
name = "toxic_slash"
full_name = "Sentinel: Toxic Slash"
diff --git a/code/datums/wave_spawner.dm b/code/datums/wave_spawner.dm
index ea8cddc39d2..833597ed085 100644
--- a/code/datums/wave_spawner.dm
+++ b/code/datums/wave_spawner.dm
@@ -26,7 +26,7 @@
/datum/wave_spawner/t1
spawn_types = list(
- /mob/living/carbon/xenomorph/runner/ai,
+ /mob/living/carbon/xenomorph/panther/ai,
/mob/living/carbon/xenomorph/sentinel/ai,
/mob/living/carbon/xenomorph/defender/ai,
/mob/living/carbon/xenomorph/drone/ai,
@@ -60,7 +60,7 @@
/mob/living/carbon/xenomorph/mantis/ai,
/mob/living/carbon/xenomorph/scorpion/ai,
/mob/living/carbon/xenomorph/nymph/ai,
- /mob/living/carbon/xenomorph/runner/ai,
+ /mob/living/carbon/xenomorph/panther/ai,
/mob/living/carbon/xenomorph/sentinel/ai,
/mob/living/carbon/xenomorph/defender/ai,
/mob/living/carbon/xenomorph/drone/ai,
diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm
index 7ead8c0d094..15757b7ac43 100644
--- a/code/game/objects/effects/landmarks/landmarks.dm
+++ b/code/game/objects/effects/landmarks/landmarks.dm
@@ -562,8 +562,8 @@
return INITIALIZE_HINT_QDEL
/obj/effect/landmark/last_stand_waves
- icon = 'icons/Xeno/castes/runner/basic.dmi'
- icon_state = "Runner Walking"
+ icon = 'icons/Xeno/castes/panther/basic.dmi'
+ icon_state = "Panther Walking"
name = "last stand waves location"
/obj/effect/landmark/last_stand_waves/Initialize(mapload)
diff --git a/code/game/objects/structures/misc.dm b/code/game/objects/structures/misc.dm
index f0b59f3d87d..b336637f995 100644
--- a/code/game/objects/structures/misc.dm
+++ b/code/game/objects/structures/misc.dm
@@ -331,7 +331,7 @@
return TRUE
if(M.mob_size <= MOB_SIZE_SMALL)
return TRUE
- if(isxenorunner(M)) //alas, snowflake
+ if(isxenopanther(M)) //alas, snowflake
return TRUE
return FALSE
diff --git a/code/modules/admin/panels/player_panel.dm b/code/modules/admin/panels/player_panel.dm
index 10e3e831d38..ad7112e42b5 100644
--- a/code/modules/admin/panels/player_panel.dm
+++ b/code/modules/admin/panels/player_panel.dm
@@ -472,13 +472,12 @@
Predalien Larva |
Facehugger
Alien Tier 1:
- Runner |
+ Panther |
Drone |
Sentinel |
Defender
Alien Tier 2:
Hunter |
- Panther |
Bull |
Warrior |
Spitter |
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index ab5ec796610..8b8783bcc4c 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -402,8 +402,6 @@ Status: [status ? status : "Unknown"] | Damage: [health ? health : "None"]
newmob = M.change_mob_type(/mob/living/carbon/xenomorph/defender, location, null, delmob)
if("warrior")
newmob = M.change_mob_type(/mob/living/carbon/xenomorph/warrior, location, null, delmob)
- if("runner")
- newmob = M.change_mob_type(/mob/living/carbon/xenomorph/runner, location, null, delmob)
if("drone")
newmob = M.change_mob_type(/mob/living/carbon/xenomorph/drone, location, null, delmob)
if("sentinel")
diff --git a/code/modules/ai/presets/xeno_presets.dm b/code/modules/ai/presets/xeno_presets.dm
index 6ad5548906e..c7ce0ae138a 100644
--- a/code/modules/ai/presets/xeno_presets.dm
+++ b/code/modules/ai/presets/xeno_presets.dm
@@ -58,9 +58,9 @@
. = ..()
AddComponent(/datum/component/ai_controller, /datum/ai_behavior/xeno/suicidal)
-/mob/living/carbon/xenomorph/runner/ai
+/mob/living/carbon/xenomorph/panther/ai
-/mob/living/carbon/xenomorph/runner/ai/Initialize(mapload)
+/mob/living/carbon/xenomorph/panther/ai/Initialize(mapload)
. = ..()
AddComponent(/datum/component/ai_controller, /datum/ai_behavior/xeno)
diff --git a/code/modules/ai/spawners/xeno.dm b/code/modules/ai/spawners/xeno.dm
index 5c5bca94e7d..7aabcb9a15c 100644
--- a/code/modules/ai/spawners/xeno.dm
+++ b/code/modules/ai/spawners/xeno.dm
@@ -4,8 +4,8 @@
//////Generic xeno spawners
////////Tier ones
-/obj/effect/ai_node/spawner/xeno/runnergang // RUNNNER GANG RUNNER GANG
- spawntypes = /mob/living/carbon/xenomorph/runner/ai
+/obj/effect/ai_node/spawner/xeno/panthergang
+ spawntypes = /mob/living/carbon/xenomorph/panther/ai
spawnamount = 4
spawndelay = 10 SECONDS
maxamount = 10
@@ -29,7 +29,7 @@
maxamount = 10
/obj/effect/ai_node/spawner/xeno/tierones
- spawntypes = list(/mob/living/carbon/xenomorph/runner/ai, /mob/living/carbon/xenomorph/sentinel/ai, /mob/living/carbon/xenomorph/defender/ai, /mob/living/carbon/xenomorph/drone/ai)
+ spawntypes = list(/mob/living/carbon/xenomorph/panther/ai, /mob/living/carbon/xenomorph/sentinel/ai, /mob/living/carbon/xenomorph/defender/ai, /mob/living/carbon/xenomorph/drone/ai)
spawnamount = 4
spawndelay = 10 SECONDS
maxamount = 10
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 260e00396ef..8e329ac78f0 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -79,8 +79,8 @@ GLOBAL_LIST_INIT(hallucination_list, list(
var/mob/living/carbon/target = null
/obj/effect/hallucination/simple
- icon = 'icons/Xeno/castes/runner/basic.dmi'
- icon_state = "Runner Walking"
+ icon = 'icons/Xeno/castes/panther/basic.dmi'
+ icon_state = "Panther Walking"
var/px = 0
var/py = 0
var/col_mod = null
@@ -124,14 +124,14 @@ GLOBAL_LIST_INIT(hallucination_list, list(
return ..()
/obj/effect/hallucination/simple/xeno
- name = "Mature Runner"
+ name = "Mature Panther"
desc = "A small red alien that looks like it could run fairly quickly..."
- icon = 'icons/Xeno/castes/runner/basic.dmi'
- icon_state = "Runner Walking"
+ icon = 'icons/Xeno/castes/panther/basic.dmi'
+ icon_state = "Panther Walking"
/obj/effect/hallucination/simple/xeno/Initialize(mapload, mob/living/carbon/T)
. = ..()
- name = "Mature Runner ([rand(100, 999)])"
+ name = "Mature Panther ([rand(100, 999)])"
/obj/effect/hallucination/simple/xeno/throw_impact(atom/hit_atom, speed)
. = ..()
@@ -313,7 +313,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
fakemob = target //ever been so lonely you had to haunt yourself?
if(fakemob)
sleep(rand(20, 50))
- to_chat(target, span_deadsay("DEAD: [fakemob.name] says, \"[pick("rip","why did i just drop dead?","hey [target.real_name]","git gud","you too?","did we get the [pick("nuke", "blue disk", "red disk", "green disk", "yellow disk")]?","i[prob(50)?" fucking":""] hate [pick("runners", "queens", "shrikes", "xenos", "this", "myself", "admins", "you")]")]\""))
+ to_chat(target, span_deadsay("DEAD: [fakemob.name] says, \"[pick("rip","why did i just drop dead?","hey [target.real_name]","git gud","you too?","did we get the [pick("nuke", "blue disk", "red disk", "green disk", "yellow disk")]?","i[prob(50)?" fucking":""] hate [pick("panthers", "queens", "shrikes", "xenos", "this", "myself", "admins", "you")]")]\""))
sleep(rand(7 SECONDS, 9 SECONDS))
target.set_screwyhud(SCREWYHUD_NONE)
target.SetSleeping(0)
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/crusher/crusher.dm b/code/modules/mob/living/carbon/xenomorph/castes/crusher/crusher.dm
index 47c7b53ccaa..df16cabdb7b 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/crusher/crusher.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/crusher/crusher.dm
@@ -35,7 +35,7 @@
return "wounded_charging_[severity]"
/mob/living/carbon/xenomorph/crusher/buckle_mob(mob/living/buckling_mob, force = FALSE, check_loc = TRUE, lying_buckle = FALSE, hands_needed = 0, target_hands_needed = 0, silent)
- if(!force)//crushers should be overriden by runners
+ if(!force)//crushers should be overriden by panthers
return FALSE
return ..()
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm b/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm
index 464ae4e8f0b..de13494fac0 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm
@@ -6,14 +6,16 @@
keybinding_signals = list(
KEYBINDING_NORMAL = COMSIG_XENOABILITY_PANTHER_POUNCE,
)
- cooldown_duration = 13 SECONDS
- ability_cost = 20
- var/pantherplasmaheal = 45
+ cooldown_duration = 8 SECONDS
+ ability_cost = 15
+ var/pantherplasmaheal = 35
+ var/pantherlifesteal = 25
/datum/action/ability/activable/xeno/pounce/panther/mob_hit(datum/source, mob/living/M)
. = ..()
var/mob/living/carbon/xenomorph/xenomorph_owner = owner
xenomorph_owner.plasma_stored += pantherplasmaheal
+ HEAL_XENO_DAMAGE(xenomorph_owner, pantherlifesteal, FALSE)
///////////////////////////////////
// ***************************************
@@ -24,8 +26,8 @@
name = "Tearing tail"
action_icon_state = "tearing_tail"
desc = "Hit all nearby enemies around you, poisoning them with selected toxin and healing you for each target hit."
- ability_cost = 50
- cooldown_duration = 15 SECONDS
+ ability_cost = 35
+ cooldown_duration = 10 SECONDS
var/tearing_tail_reagent
keybind_flags = ABILITY_KEYBIND_USE_ABILITY
keybinding_signals = list(
@@ -52,7 +54,7 @@
affecting = human_target.get_limb("chest") //Gotta have a torso?!
human_target.apply_damage(damage, BRUTE, affecting, MELEE)
xenomorph_owner.plasma_stored += 25
- xenomorph_owner.heal_overall_damage(25, 25, updating_health = TRUE)
+ xenomorph_owner.heal_overall_damage(35, 35, updating_health = TRUE)
if(human_target.can_sting())
tearing_tail_reagent = xenomorph_owner.selected_reagent
var/reagent_amount = (xenomorph_owner.selected_reagent == /datum/reagent/toxin/xeno_ozelomelyn) ? PANTHER_TEARING_TAIL_REAGENT_AMOUNT * 0.5 : PANTHER_TEARING_TAIL_REAGENT_AMOUNT
@@ -83,7 +85,7 @@
action_icon_state = "adrenaline_jump"
desc = "Jump from some distance to target, knocking them down and pulling them to you, only works if you are at least from 3 to 8 meters away from the target, this ability sends Pounce on cooldown."
ability_cost = 15
- cooldown_duration = 12 SECONDS
+ cooldown_duration = 8 SECONDS
keybinding_signals = list(
KEYBINDING_NORMAL = COMSIG_XENOABILITY_ADRENALINE_JUMP,
)
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/panther/castedatum_panther.dm b/code/modules/mob/living/carbon/xenomorph/castes/panther/castedatum_panther.dm
index af7eff33c4f..fefc8430f82 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/panther/castedatum_panther.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/panther/castedatum_panther.dm
@@ -4,7 +4,7 @@
upgrade_name = ""
caste_desc = "Run fast, hit hard, die young."
caste_type_path = /mob/living/carbon/xenomorph/panther
- tier = XENO_TIER_TWO
+ tier = XENO_TIER_ONE
upgrade = XENO_UPGRADE_BASETYPE
wound_type = "panther" //used to match appropriate wound overlays
@@ -12,7 +12,7 @@
gib_flick = "gibbed-a-runner"
// *** Melee Attacks *** //
- melee_damage = 23
+ melee_damage = 21
attack_delay = 6
// *** Speed *** //
@@ -28,7 +28,7 @@
max_health = 280
// *** Evolution *** //
- evolution_threshold = 225
+ evolution_threshold = 100
// *** Flags *** //
caste_flags = CASTE_INNATE_PLASMA_REGEN|CASTE_PLASMADRAIN_IMMUNE|CASTE_EVOLUTION_ALLOWED
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/panther/panther.dm b/code/modules/mob/living/carbon/xenomorph/castes/panther/panther.dm
index 9d2f082ed87..ba7bcf8a676 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/panther/panther.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/panther/panther.dm
@@ -61,3 +61,6 @@
if(prob(44.81))
new /obj/item/reagent_containers/food/drinks/pantherheart(loc)
gib()
+
+/mob/living/carbon/xenomorph/panther/set_frenzy_aura(new_aura)
+ return
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm b/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm
deleted file mode 100644
index b7d95433db1..00000000000
--- a/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm
+++ /dev/null
@@ -1,395 +0,0 @@
-// ***************************************
-// *********** Runner's Pounce
-// ***************************************
-#define RUNNER_POUNCE_RANGE 6 // in tiles
-#define RUNNER_SAVAGE_DAMAGE_MINIMUM 15
-#define RUNNER_SAVAGE_COOLDOWN 30 SECONDS
-
-/datum/action/ability/activable/xeno/pounce/runner
- desc = "Leap at your target, tackling and disarming them. Alternate use toggles Savage off or on."
- action_icon_state = "pounce_savage_on"
- ability_cost = 10
- keybinding_signals = list(
- KEYBINDING_NORMAL = COMSIG_XENOABILITY_RUNNER_POUNCE,
- KEYBINDING_ALTERNATE = COMSIG_XENOABILITY_TOGGLE_SAVAGE,
- )
- pounce_range = RUNNER_POUNCE_RANGE
- /// Whether Savage is active or not.
- var/savage_activated = TRUE
- /// Savage's cooldown.
- COOLDOWN_DECLARE(savage_cooldown)
-
-/datum/action/ability/activable/xeno/pounce/runner/give_action(mob/living/L)
- . = ..()
- var/mutable_appearance/savage_maptext = mutable_appearance(icon = null, icon_state = null, layer = ACTION_LAYER_MAPTEXT)
- savage_maptext.pixel_x = 12
- savage_maptext.pixel_y = -5
- visual_references[VREF_MUTABLE_SAVAGE_COOLDOWN] = savage_maptext
-
-/datum/action/ability/activable/xeno/pounce/runner/alternate_action_activate()
- savage_activated = !savage_activated
- owner.balloon_alert(owner, "Savage [savage_activated ? "activated" : "deactivated"]")
- action_icon_state = "pounce_savage_[savage_activated? "on" : "off"]"
- update_button_icon()
-
-/datum/action/ability/activable/xeno/pounce/runner/trigger_pounce_effect(mob/living/living_target)
- . = ..()
- if(!savage_activated)
- return
- if(!COOLDOWN_CHECK(src, savage_cooldown))
- owner.balloon_alert(owner, "Savage on cooldown ([COOLDOWN_TIMELEFT(src, savage_cooldown) * 0.1]s)")
- return
- var/mob/living/carbon/xenomorph/xeno_owner = owner
- var/savage_damage = max(RUNNER_SAVAGE_DAMAGE_MINIMUM, xeno_owner.plasma_stored * 0.15)
- var/savage_cost = savage_damage * 2
- if(xeno_owner.plasma_stored < savage_cost)
- owner.balloon_alert(owner, "Not enough plasma to Savage ([savage_cost])")
- return
- living_target.attack_alien_harm(xeno_owner, savage_damage)
- xeno_owner.use_plasma(savage_cost)
- COOLDOWN_START(src, savage_cooldown, RUNNER_SAVAGE_COOLDOWN)
- START_PROCESSING(SSprocessing, src)
- RegisterSignal(owner, COMSIG_QDELETING, PROC_REF(on_qdel))
- GLOB.round_statistics.runner_savage_attacks++
- SSblackbox.record_feedback(FEEDBACK_TALLY, "round_statistics", 1, "runner_savage_attacks")
-
-/datum/action/ability/activable/xeno/pounce/runner/process()
- if(COOLDOWN_CHECK(src, savage_cooldown))
- button.cut_overlay(visual_references[VREF_MUTABLE_SAVAGE_COOLDOWN])
- owner.balloon_alert(owner, "Savage ready")
- owner.playsound_local(owner, 'sound/effects/alien/newlarva.ogg', 25, 0, 1)
- STOP_PROCESSING(SSprocessing, src)
- UnregisterSignal(COMSIG_QDELETING)
- return
- button.cut_overlay(visual_references[VREF_MUTABLE_SAVAGE_COOLDOWN])
- var/mutable_appearance/cooldown = visual_references[VREF_MUTABLE_SAVAGE_COOLDOWN]
- cooldown.maptext = MAPTEXT("[round(COOLDOWN_TIMELEFT(src, savage_cooldown) * 0.1)]s")
- visual_references[VREF_MUTABLE_SAVAGE_COOLDOWN] = cooldown
- button.add_overlay(visual_references[VREF_MUTABLE_SAVAGE_COOLDOWN])
-
-/datum/action/ability/activable/xeno/pounce/runner/proc/on_qdel()
- SIGNAL_HANDLER
- STOP_PROCESSING(SSprocessing, src)
-
-// ***************************************
-// *********** Evasion
-// ***************************************
-#define RUNNER_EVASION_DURATION 2 //seconds
-#define RUNNER_EVASION_MAX_DURATION 6 //seconds
-#define RUNNER_EVASION_RUN_DELAY 0.5 SECONDS // If the time since the Runner last moved is equal to or greater than this, its Evasion ends.
-#define RUNNER_EVASION_COOLDOWN_REFRESH_THRESHOLD 120 // If we dodge this much damage times our streak count plus 1 while evading, refresh the cooldown of Evasion.
-
-/datum/action/ability/xeno_action/evasion
- name = "Evasion"
- action_icon_state = "evasion_on"
- desc = "Take evasive action, forcing non-friendly projectiles that would hit you to miss for a short duration so long as you keep moving. Alternate use toggles Auto Evasion off or on."
- ability_cost = 75
- cooldown_duration = 10 SECONDS
- keybinding_signals = list(
- KEYBINDING_NORMAL = COMSIG_XENOABILITY_EVASION,
- KEYBINDING_ALTERNATE = COMSIG_XENOABILITY_AUTO_EVASION,
- )
- /// Whether auto evasion is on or off.
- var/auto_evasion = TRUE
- /// Whether evasion is currently active
- var/evade_active = FALSE
- /// How long our Evasion will last.
- var/evasion_duration = 0
- /// Current amount of Evasion stacks.
- var/evasion_stacks = 0
-
-/datum/action/ability/xeno_action/evasion/on_cooldown_finish()
- . = ..()
- owner.balloon_alert(owner, "Evasion ready")
- owner.playsound_local(owner, 'sound/effects/alien/newlarva.ogg', 25, 0, 1)
-
-/datum/action/ability/xeno_action/evasion/can_use_action(silent = FALSE, override_flags)
- . = ..()
- var/mob/living/carbon/xenomorph/xeno_owner = owner
- if(xeno_owner.on_fire)
- if(!silent)
- xeno_owner.balloon_alert(xeno_owner, "Can't while on fire!")
- return FALSE
-
-/datum/action/ability/xeno_action/evasion/alternate_action_activate()
- auto_evasion = !auto_evasion
- owner.balloon_alert(owner, "Auto Evasion [auto_evasion ? "activated" : "deactivated"]")
- action_icon_state = "evasion_[auto_evasion? "on" : "off"]"
- update_button_icon()
-
-/datum/action/ability/xeno_action/evasion/action_activate()
- succeed_activate()
- add_cooldown()
- if(evade_active)
- evasion_stacks = 0
- evasion_duration = min(evasion_duration + RUNNER_EVASION_DURATION, RUNNER_EVASION_MAX_DURATION)
- owner.balloon_alert(owner, "Extended evasion: [evasion_duration]s.")
- return
- evade_active = TRUE
- evasion_duration = RUNNER_EVASION_DURATION
- owner.balloon_alert(owner, "Begin evasion: [evasion_duration]s.")
- to_chat(owner, span_highdanger("We take evasive action, making us impossible to hit."))
- START_PROCESSING(SSprocessing, src)
- RegisterSignals(owner, list(COMSIG_LIVING_STATUS_STUN,
- COMSIG_LIVING_STATUS_KNOCKDOWN,
- COMSIG_LIVING_STATUS_PARALYZE,
- COMSIG_LIVING_STATUS_UNCONSCIOUS,
- COMSIG_LIVING_STATUS_SLEEP,
- COMSIG_LIVING_STATUS_STAGGER,
- COMSIG_LIVING_IGNITED), PROC_REF(evasion_debuff_check))
- RegisterSignal(owner, COMSIG_XENO_PROJECTILE_HIT, PROC_REF(evasion_dodge))
- RegisterSignal(owner, COMSIG_ATOM_BULLET_ACT, PROC_REF(evasion_flamer_hit))
- RegisterSignal(owner, COMSIG_LIVING_PRE_THROW_IMPACT, PROC_REF(evasion_throw_dodge))
- RegisterSignal(owner, COMSIG_QDELETING, PROC_REF(qdel_deactivate))
- GLOB.round_statistics.runner_evasions++
- SSblackbox.record_feedback(FEEDBACK_TALLY, "round_statistics", 1, "runner_evasions")
-
-/datum/action/ability/xeno_action/evasion/process()
- var/mob/living/carbon/xenomorph/runner/runner_owner = owner
- runner_owner.hud_set_evasion(evasion_duration)
- if(evasion_duration <= 0)
- evasion_deactivate()
- return
- evasion_duration--
-
-/**
- * Called when the owner is hit by a flamethrower projectile.
- * Reduces evasion stacks based on the damage received.
-*/
-/datum/action/ability/xeno_action/evasion/proc/evasion_flamer_hit(datum/source, obj/projectile/proj)
- SIGNAL_HANDLER
- if(!(proj.ammo.flags_ammo_behavior & AMMO_FLAME))
- return
- evasion_stacks = max(0, evasion_stacks - proj.damage) // We lose evasion stacks equal to the burn damage.
- if(evasion_stacks)
- owner.balloon_alert(owner, "Evasion reduced, damaged")
- to_chat(owner, span_danger("The searing fire compromises our ability to dodge![RUNNER_EVASION_COOLDOWN_REFRESH_THRESHOLD - evasion_stacks > 0 ? " We must dodge [RUNNER_EVASION_COOLDOWN_REFRESH_THRESHOLD - evasion_stacks] more projectile damage before Evasion's cooldown refreshes." : ""]"))
- else // If we have no stacks left, disable Evasion.
- evasion_deactivate()
-
-/**
- * Called after getting hit with an Evasion disabling debuff.
- * Checks if evasion is active, and if the debuff inflicted any stacks, disabling Evasion if so.
-*/
-/datum/action/ability/xeno_action/evasion/proc/evasion_debuff_check(datum/source, amount)
- SIGNAL_HANDLER
- if(!(amount > 0) || !evade_active)
- return
- evasion_deactivate()
-
-/// Deactivates Evasion, clearing signals, vars, etc.
-/datum/action/ability/xeno_action/evasion/proc/evasion_deactivate()
- STOP_PROCESSING(SSprocessing, src)
- UnregisterSignal(owner, list(
- COMSIG_LIVING_STATUS_STUN,
- COMSIG_LIVING_STATUS_KNOCKDOWN,
- COMSIG_LIVING_STATUS_PARALYZE,
- COMSIG_LIVING_STATUS_UNCONSCIOUS,
- COMSIG_LIVING_STATUS_SLEEP,
- COMSIG_LIVING_STATUS_STAGGER,
- COMSIG_LIVING_IGNITED,
- COMSIG_XENO_PROJECTILE_HIT,
- COMSIG_LIVING_PRE_THROW_IMPACT,
- COMSIG_ATOM_BULLET_ACT,
- COMSIG_QDELETING,
- ))
- evade_active = FALSE
- evasion_stacks = 0
- evasion_duration = 0
- owner.balloon_alert(owner, "Evasion ended")
- owner.playsound_local(owner, 'sound/voice/alien/hiss8.ogg', 50)
- var/mob/living/carbon/xenomorph/runner/runner_owner = owner
- runner_owner.hud_set_evasion(evasion_duration)
-
-///Deactivates processing on qdel of owner, because if we don't we enter a fucking infinite runtime loop
-/datum/action/ability/xeno_action/evasion/proc/qdel_deactivate(datum/source)
- SIGNAL_HANDLER
- if(!evade_active)
- return
- STOP_PROCESSING(SSprocessing, src)
-
-/// Determines whether or not a thrown projectile is dodged while the Evasion ability is active
-/datum/action/ability/xeno_action/evasion/proc/evasion_throw_dodge(datum/source, atom/movable/proj)
- SIGNAL_HANDLER
- var/mob/living/carbon/xenomorph/xeno_owner = owner
- if(!evade_active) //If evasion is not active we don't dodge
- return NONE
- if((xeno_owner.last_move_time < (world.time - RUNNER_EVASION_RUN_DELAY))) //Gotta keep moving to benefit from evasion!
- return NONE
- if(isitem(proj))
- var/obj/item/I = proj
- evasion_stacks += I.throwforce //Add to evasion stacks for the purposes of determining whether or not our cooldown refreshes equal to the thrown force
- evasion_dodge_fx(proj)
- return COMPONENT_PRE_THROW_IMPACT_HIT
-
-/// This is where the dodgy magic happens
-/datum/action/ability/xeno_action/evasion/proc/evasion_dodge(datum/source, obj/projectile/proj, cardinal_move, uncrossing)
- SIGNAL_HANDLER
- if(!evade_active) //If evasion is not active we don't dodge
- return FALSE
- var/mob/living/carbon/xenomorph/xeno_owner = owner
- if((xeno_owner.last_move_time < (world.time - RUNNER_EVASION_RUN_DELAY))) //Gotta keep moving to benefit from evasion!
- return FALSE
- if(xeno_owner.issamexenohive(proj.firer)) //We automatically dodge allied projectiles at no cost, and no benefit to our evasion stacks
- return COMPONENT_PROJECTILE_DODGE
- if(proj.ammo.flags_ammo_behavior & AMMO_FLAME) //We can't dodge literal fire
- return FALSE
- if(proj.original_target == xeno_owner && proj.distance_travelled < 2) //Pointblank shot.
- return FALSE
- if(!(proj.ammo.flags_ammo_behavior & AMMO_SENTRY) && !xeno_owner.fire_stacks) //We ignore projectiles from automated sources/sentries for the purpose of contributions towards our cooldown refresh; also fire prevents accumulation of evasion stacks
- evasion_stacks += proj.damage //Add to evasion stacks for the purposes of determining whether or not our cooldown refreshes
- evasion_dodge_fx(proj)
- return COMPONENT_PROJECTILE_DODGE
-
-/// Handles dodge effects and visuals for the Evasion ability.
-/datum/action/ability/xeno_action/evasion/proc/evasion_dodge_fx(atom/movable/proj)
- var/mob/living/carbon/xenomorph/xeno_owner = owner
- xeno_owner.visible_message(span_warning("[xeno_owner] effortlessly dodges the [proj.name]!"), \
- span_xenodanger("We effortlessly dodge the [proj.name]![(RUNNER_EVASION_COOLDOWN_REFRESH_THRESHOLD - evasion_stacks) > 0 && evasion_stacks > 0 ? " We must dodge [RUNNER_EVASION_COOLDOWN_REFRESH_THRESHOLD - evasion_stacks] more projectile damage before [src]'s cooldown refreshes." : ""]"))
- xeno_owner.add_filter("runner_evasion", 2, gauss_blur_filter(5))
- addtimer(CALLBACK(xeno_owner, TYPE_PROC_REF(/atom, remove_filter), "runner_evasion"), 0.5 SECONDS)
- xeno_owner.do_jitter_animation(4000)
- if(evasion_stacks >= RUNNER_EVASION_COOLDOWN_REFRESH_THRESHOLD && cooldown_remaining()) //We have more evasion stacks than needed to refresh our cooldown, while being on cooldown.
- clear_cooldown()
- if(auto_evasion && xeno_owner.plasma_stored >= ability_cost)
- action_activate()
- var/turf/current_turf = get_turf(xeno_owner) //location of after image SFX
- playsound(current_turf, pick('sound/effects/throw.ogg','sound/effects/alien/tail_swipe1.ogg', 'sound/effects/alien/tail_swipe2.ogg'), 25, 1) //sound effects
- var/obj/effect/temp_visual/xenomorph/afterimage/after_image
- for(var/i=0 to 2) //number of after images
- after_image = new /obj/effect/temp_visual/xenomorph/afterimage(current_turf, owner) //Create the after image.
- after_image.pixel_x = pick(randfloat(xeno_owner.pixel_x * 3, xeno_owner.pixel_x * 1.5), rand(0, xeno_owner.pixel_x * -1)) //Variation on the X position
-
-
-// ***************************************
-// *********** Snatch
-// ***************************************
-/datum/action/ability/activable/xeno/snatch
- name = "Snatch"
- action_icon_state = "snatch"
- desc = "Take an item equipped by your target in your mouth, and carry it away."
- ability_cost = 75
- cooldown_duration = 35 SECONDS
- keybinding_signals = list(
- KEYBINDING_NORMAL = COMSIG_XENOABILITY_SNATCH,
- )
- target_flags = ABILITY_MOB_TARGET
- ///If the runner have an item
- var/obj/item/stolen_item = FALSE
- ///Mutable appearance of the stolen item
- var/mutable_appearance/stolen_appearance
- ///A list of slot to check for items, in order of priority
- var/static/list/slots_to_steal_from = list(
- SLOT_S_STORE,
- SLOT_BACK,
- SLOT_SHOES,
- )
-
-/datum/action/ability/activable/xeno/snatch/action_activate()
- if(!stolen_item)
- return ..()
- drop_item()
-
-/datum/action/ability/activable/xeno/snatch/can_use_ability(atom/A, silent, override_flags)
- . = ..()
- if(!.)
- return
- if(!owner.Adjacent(A))
- if(!silent)
- owner.balloon_alert(owner, "Cannot reach")
- return FALSE
- if(!ishuman(A))
- if(!silent)
- owner.balloon_alert(owner, "Cannot snatch")
- return FALSE
- var/mob/living/carbon/human/target = A
- if(target.stat == DEAD)
- if(!silent)
- owner.balloon_alert(owner, "Cannot snatch")
- return FALSE
- if(target.status_flags & GODMODE)
- if(!silent)
- owner.balloon_alert(owner, "Cannot snatch")
- return FALSE
-
-/datum/action/ability/activable/xeno/snatch/use_ability(atom/A)
- var/mob/living/carbon/xenomorph/X = owner
- var/mob/living/carbon/human/victim = A
-
- if(isyautja(victim))
- victim.emote("laugh")
- X.Paralyze(75)
- playsound(X,'sound/effects/hit_kick.ogg', 35, FALSE)
- victim.balloon_alert(owner, "Snatch failed, we got caught!")
- to_chat(X, span_xenodanger("[victim] counterattacks during our snatch attemp!"))
- to_chat(victim, span_danger("[X] tried to steal our equipment, but failed!"))
- return FALSE
-
- if(!do_after(owner, 0.5 SECONDS, IGNORE_HELD_ITEM, A, BUSY_ICON_DANGER, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), list("health" = X.health))))
- return FALSE
- stolen_item = victim.get_active_held_item()
- if(!stolen_item)
- stolen_item = victim.get_inactive_held_item()
- for(var/slot in slots_to_steal_from)
- stolen_item = victim.get_item_by_slot(slot)
- if(stolen_item)
- break
- if(!stolen_item)
- victim.balloon_alert(owner, "Snatch failed, no item")
- return fail_activate()
- playsound(owner, 'sound/voice/alien/pounce2.ogg', 30)
- victim.dropItemToGround(stolen_item, TRUE)
- stolen_item.forceMove(owner)
- stolen_appearance = mutable_appearance(stolen_item.icon, stolen_item.icon_state)
- stolen_appearance.layer = ABOVE_OBJ_LAYER
- addtimer(CALLBACK(src, PROC_REF(drop_item), stolen_item), 3 SECONDS)
- RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, PROC_REF(owner_turned))
- owner.add_movespeed_modifier(MOVESPEED_ID_SNATCH, TRUE, 0, NONE, TRUE, 2)
- owner_turned(null, null, owner.dir)
- succeed_activate()
- add_cooldown()
-
-///Signal handler to update the item overlay when the owner is changing dir
-/datum/action/ability/activable/xeno/snatch/proc/owner_turned(datum/source, old_dir, new_dir)
- SIGNAL_HANDLER
- if(!new_dir || new_dir == old_dir)
- return
- owner.overlays -= stolen_appearance
- var/matrix/new_transform = stolen_appearance.transform
- switch(old_dir)
- if(NORTH)
- new_transform.Translate(-15, -12)
- if(SOUTH)
- new_transform.Translate(-15, 12)
- if(EAST)
- new_transform.Translate(-35, 0)
- if(WEST)
- new_transform.Translate(5, 0)
- switch(new_dir)
- if(NORTH)
- new_transform.Translate(15, 12)
- if(SOUTH)
- new_transform.Translate(15, -12)
- if(EAST)
- new_transform.Translate(35, 0)
- if(WEST)
- new_transform.Translate(-5, 0)
- stolen_appearance.transform = new_transform
- owner.overlays += stolen_appearance
-
-///Force the xeno owner to drop the stolen item
-/datum/action/ability/activable/xeno/snatch/proc/drop_item()
- if(!stolen_item)
- return
-
- stolen_item.drag_windup = 0 SECONDS
- owner.start_pulling(stolen_item, suppress_message = FALSE)
- stolen_item.drag_windup = 1.5 SECONDS
-
- owner.remove_movespeed_modifier(MOVESPEED_ID_SNATCH)
- stolen_item.forceMove(get_turf(owner))
- stolen_item = null
- owner.overlays -= stolen_appearance
- playsound(owner, 'sound/voice/alien/pounce2.ogg', 30, frequency = -1)
- UnregisterSignal(owner, COMSIG_ATOM_DIR_CHANGE)
-
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/runner/castedatum_runner.dm b/code/modules/mob/living/carbon/xenomorph/castes/runner/castedatum_runner.dm
deleted file mode 100644
index de779a05336..00000000000
--- a/code/modules/mob/living/carbon/xenomorph/castes/runner/castedatum_runner.dm
+++ /dev/null
@@ -1,69 +0,0 @@
-/datum/xeno_caste/runner
- caste_name = "Runner"
- display_name = "Runner"
- upgrade_name = ""
- caste_desc = "A fast, four-legged terror. Weak in sustained combat."
- caste_type_path = /mob/living/carbon/xenomorph/runner
- tier = XENO_TIER_ONE
- upgrade = XENO_UPGRADE_BASETYPE
- wound_type = "runner" //used to match appropriate wound overlays
-
- gib_anim = "gibbed-a-corpse-runner"
- gib_flick = "gibbed-a-runner"
-
- // *** Melee Attacks *** //
- melee_damage = 21
- attack_delay = 6
-
- // *** Speed *** //
- speed = -1.5
-
- // *** Plasma *** //
- plasma_max = 200
- plasma_gain = 11
-
- // *** Health *** //
- max_health = 240
-
- // *** Evolution *** //
- evolution_threshold = 100
-
- // *** Flags *** //
- caste_flags = CASTE_EVOLUTION_ALLOWED|CASTE_ACID_BLOOD
- can_flags = CASTE_CAN_BE_QUEEN_HEALED|CASTE_CAN_BE_GIVEN_PLASMA|CASTE_CAN_BE_LEADER|CASTE_CAN_RIDE_CRUSHER
- caste_traits = list(TRAIT_CAN_VENTCRAWL)
-
- // *** Defense *** //
- soft_armor = list(MELEE = 20, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 0, BIO = 5, FIRE = 0, ACID = 5)
-
- // *** Minimap Icon *** //
- minimap_icon = "runner"
-
- // *** Abilities *** ///
- actions = list(
- /datum/action/ability/xeno_action/xeno_resting,
- /datum/action/ability/xeno_action/watch_xeno,
- /datum/action/ability/activable/xeno/psydrain,
- /datum/action/ability/xeno_action/xenohide,
- /datum/action/ability/xeno_action/evasion,
- /datum/action/ability/activable/xeno/pounce/runner,
- )
-
-/datum/xeno_caste/runner/normal
- upgrade = XENO_UPGRADE_NORMAL
-
-/datum/xeno_caste/runner/primordial
- upgrade_name = "Primordial"
- caste_desc = "A sprinting terror of the hive. It looks ancient and menacing."
- primordial_message = "Nothing can outrun us. We are the swift death."
- upgrade = XENO_UPGRADE_PRIMO
-
- actions = list(
- /datum/action/ability/xeno_action/xeno_resting,
- /datum/action/ability/xeno_action/watch_xeno,
- /datum/action/ability/activable/xeno/psydrain,
- /datum/action/ability/xeno_action/xenohide,
- /datum/action/ability/xeno_action/evasion,
- /datum/action/ability/activable/xeno/pounce/runner,
- /datum/action/ability/activable/xeno/snatch,
- )
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/runner/runner.dm b/code/modules/mob/living/carbon/xenomorph/castes/runner/runner.dm
deleted file mode 100644
index 251db0fb576..00000000000
--- a/code/modules/mob/living/carbon/xenomorph/castes/runner/runner.dm
+++ /dev/null
@@ -1,57 +0,0 @@
-/mob/living/carbon/xenomorph/runner
- caste_base_type = /datum/xeno_caste/runner
- name = "Runner"
- desc = "A small red alien that looks like it could run fairly quickly..."
- icon = 'icons/Xeno/castes/runner/basic.dmi' //They are now like, 2x1 or something
- effects_icon = 'icons/Xeno/castes/runner/basic_effects.dmi'
- rouny_icon = 'icons/Xeno/castes/runner/basic_rouny.dmi'
- icon_state = "Runner Walking"
- bubble_icon = "alienleft"
- health = 100
- maxHealth = 100
- plasma_stored = 50
- pass_flags = PASS_LOW_STRUCTURE
- tier = XENO_TIER_ONE
- upgrade = XENO_UPGRADE_NORMAL
- pixel_x = -16 //Needed for 2x2
- old_x = -16
- bubble_icon = "alien"
- skins = list(
- /datum/xenomorph_skin/runner/gold,
- /datum/xenomorph_skin/runner/tacticool,
- /datum/xenomorph_skin/runner/cowboy,
- /datum/xenomorph_skin/runner/saddles,
- /datum/xenomorph_skin/runner,
- )
- inherent_verbs = list(
- /mob/living/carbon/xenomorph/proc/vent_crawl,
- )
-
-/mob/living/carbon/xenomorph/runner/Initialize(mapload)
- . = ..()
- ADD_TRAIT(src, TRAIT_LIGHT_STEP, XENO_TRAIT)
-
-/mob/living/carbon/xenomorph/runner/set_stat()
- . = ..()
- if(isnull(.))
- return
- if(. == CONSCIOUS && layer != initial(layer))
- layer = MOB_LAYER
-
-/mob/living/carbon/xenomorph/runner/med_hud_set_status()
- . = ..()
- hud_set_evasion()
-
-/mob/living/carbon/xenomorph/runner/proc/hud_set_evasion(duration)
- var/image/holder = hud_list[XENO_EVASION_HUD]
- if(!holder)
- return
- holder.overlays.Cut()
- holder.icon_state = ""
- if(stat == DEAD || !duration)
- return
- holder.icon = 'icons/mob/hud/xeno_misc.dmi'
- holder.icon_state = "evasion_duration[duration]"
- holder.pixel_x = 24
- holder.pixel_y = 24
- hud_list[XENO_EVASION_HUD] = holder
diff --git a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm
index 598a4e647a2..85a18459796 100644
--- a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm
+++ b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm
@@ -1462,7 +1462,7 @@ to_chat will check for valid clients itself already so no need to double check f
/mob/living/carbon/xenomorph/ravager/Corrupted
hivenumber = XENO_HIVE_CORRUPTED
-/mob/living/carbon/xenomorph/runner/Corrupted
+/mob/living/carbon/xenomorph/panther/Corrupted
hivenumber = XENO_HIVE_CORRUPTED
/mob/living/carbon/xenomorph/sentinel/Corrupted
@@ -1537,7 +1537,7 @@ to_chat will check for valid clients itself already so no need to double check f
/mob/living/carbon/xenomorph/ravager/Alpha
hivenumber = XENO_HIVE_ALPHA
-/mob/living/carbon/xenomorph/runner/Alpha
+/mob/living/carbon/xenomorph/panther/Alpha
hivenumber = XENO_HIVE_ALPHA
/mob/living/carbon/xenomorph/sentinel/Alpha
@@ -1609,7 +1609,7 @@ to_chat will check for valid clients itself already so no need to double check f
/mob/living/carbon/xenomorph/ravager/Beta
hivenumber = XENO_HIVE_BETA
-/mob/living/carbon/xenomorph/runner/Beta
+/mob/living/carbon/xenomorph/panther/Beta
hivenumber = XENO_HIVE_BETA
/mob/living/carbon/xenomorph/sentinel/Beta
@@ -1681,7 +1681,7 @@ to_chat will check for valid clients itself already so no need to double check f
/mob/living/carbon/xenomorph/ravager/Zeta
hivenumber = XENO_HIVE_ZETA
-/mob/living/carbon/xenomorph/runner/Zeta
+/mob/living/carbon/xenomorph/panther/Zeta
hivenumber = XENO_HIVE_ZETA
/mob/living/carbon/xenomorph/sentinel/Zeta
diff --git a/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm b/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm
index 90e971d031b..2addd934a1b 100644
--- a/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm
+++ b/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm
@@ -308,7 +308,7 @@
remove_verb(src, /mob/living/proc/toggle_resting)
//Adds or removes a delay to movement based on your caste. If speed = 0 then it shouldn't do much.
-//Runners are -2, -4 is BLINDLINGLY FAST, +2 is fat-level
+//Pantherss are -2, -4 is BLINDLINGLY FAST, +2 is fat-level
/mob/living/carbon/xenomorph/proc/setXenoCasteSpeed(new_speed)
if(new_speed == 0)
remove_movespeed_modifier(MOVESPEED_ID_XENO_CASTE_SPEED)
@@ -346,7 +346,7 @@
SEND_SOUND(src, sound('sound/effects/alien/evolveready.ogg'))
-//This deals with "throwing" xenos -- ravagers, hunters, and runners in particular. Everyone else defaults to normal
+//This deals with "throwing" xenos -- ravagers, hunters, and panthers in particular. Everyone else defaults to normal
//Pounce, charge both use throw_at, so we need extra code to do stuff rather than just push people aside.
/mob/living/carbon/xenomorph/throw_impact(atom/hit_atom, speed)
set waitfor = FALSE
diff --git a/code/modules/mob/living/carbon/xenomorph/xenoupgrade.dm b/code/modules/mob/living/carbon/xenomorph/xenoupgrade.dm
index 5c99bc33589..b1540403fc3 100644
--- a/code/modules/mob/living/carbon/xenomorph/xenoupgrade.dm
+++ b/code/modules/mob/living/carbon/xenomorph/xenoupgrade.dm
@@ -79,12 +79,6 @@
//Tiered spawns.
-//-----RUNNER START-----//
-
-/mob/living/carbon/xenomorph/runner/primordial
- upgrade = XENO_UPGRADE_PRIMO
-
-//-----RUNNER END-----//
//================//
//-----BULL START-----//
diff --git a/icons/UI_Icons/map_blips.dmi b/icons/UI_Icons/map_blips.dmi
index 2c525cab539..3cc0b460532 100644
Binary files a/icons/UI_Icons/map_blips.dmi and b/icons/UI_Icons/map_blips.dmi differ
diff --git a/tgmc.dme b/tgmc.dme
index 3419d877925..60af7d32b07 100644
--- a/tgmc.dme
+++ b/tgmc.dme
@@ -1762,9 +1762,6 @@
#include "code\modules\mob\living\carbon\xenomorph\castes\ravager\abilities_ravager.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\ravager\castedatum_ravager.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\ravager\ravager.dm"
-#include "code\modules\mob\living\carbon\xenomorph\castes\runner\abilities_runner.dm"
-#include "code\modules\mob\living\carbon\xenomorph\castes\runner\castedatum_runner.dm"
-#include "code\modules\mob\living\carbon\xenomorph\castes\runner\runner.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\scorpion\castedatum_scorpion.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\scorpion\scorpion.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\sentinel\abilities_sentinel.dm"