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"