mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 00:27:31 +01:00
5fb3112981
## About The Pull Request Bileworms now attack by firing a barrage of arcing projectiles at their target, one guaranteed to hit their turf and the rest spread around them. Bileworms fire 5 shots and vileworms fire 7 at a faster rate. The projectiles themselves deal 20/25 burn damage and scale with MELEE armor (as ACID is mostly for atom armor and not mob) on mobs and ACID on objects. Bileworms now have a short jump animation before they burrow, during which they can be stunned by getting shot or hit (only damaging projectiles count, so you need to melee with your crusher if you want to stop a burrow). Doing so prevents them from attacking for 2.4 seconds, after which they burrow back underground without an animation (as to avoid chainstunning) They will not burrow immediatelly after firing, now only repositioning if their target is 3 or less tiles away from them or if they have been hit by an attack. Their health has been increased to 110/175 to compensate for them now being able to be stunned, as those are above important breakpoints for damage, making them require 1 more swing after backstab/1 more shot to kill respectively. When attacking NODE drones bileworms will have 30% less spread, making them a priority target to take out during vent defense, but not as dangerous as brimdemons or legions. https://github.com/user-attachments/assets/9d11959f-c90b-4fd5-b93f-bc514237e9bf Full video of 7 bileworm/5 vileworm fights with better visuals and no compression can be seen here: https://streamable.com/6thbmm (Both underground firing and dead sprite issues have been fixed after the recording) Worm jumping sprite/animation by ArcaneMusic, edited by me ## Why It's Good For The Game Bileworms are not fun to fight for both PKA and PKC users, there is no counterplay to their burrowing, and they are not engaging during vent defense. This should address all of these issues, and make them more fun to fight. ## Changelog 🆑 SmArtKar, ArcaneMusic balance: Bileworms now fire arcing shots instead of cross patterns, and can be stunned by hitting them during the burrow animation. Their health has been slightly buffed to compensate. /🆑
64 lines
2.4 KiB
Plaintext
64 lines
2.4 KiB
Plaintext
///prototype for mining mobs
|
|
/mob/living/basic/mining
|
|
abstract_type = /mob/living/basic/mining
|
|
icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi'
|
|
combat_mode = TRUE
|
|
status_flags = NONE //don't inherit standard basicmob flags
|
|
mob_size = MOB_SIZE_LARGE
|
|
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_MINING
|
|
faction = list(FACTION_MINING, FACTION_ASHWALKER)
|
|
unsuitable_atmos_damage = 0
|
|
minimum_survivable_temperature = 0
|
|
maximum_survivable_temperature = INFINITY
|
|
// Pale purple, should be red enough to see stuff on lavaland
|
|
lighting_cutoff_red = 25
|
|
lighting_cutoff_green = 15
|
|
lighting_cutoff_blue = 35
|
|
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, STAMINA = 0, OXY = 1)
|
|
/// Message to output if throwing damage is absorbed
|
|
var/throw_blocked_message = "bounces off"
|
|
/// What crusher trophy this mob drops, if any
|
|
var/crusher_loot
|
|
/// What is the chance the mob drops it if all their health was taken by crusher attacks
|
|
var/crusher_drop_chance = 25
|
|
/// Does this mob count for mining mob kills counter?
|
|
var/kill_count = TRUE
|
|
|
|
/mob/living/basic/mining/Initialize(mapload)
|
|
. = ..()
|
|
add_traits(list(TRAIT_LAVA_IMMUNE, TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), INNATE_TRAIT)
|
|
if (kill_count)
|
|
AddElement(/datum/element/mob_killed_tally, "mobs_killed_mining")
|
|
var/static/list/vulnerable_projectiles
|
|
if(!vulnerable_projectiles)
|
|
vulnerable_projectiles = string_list(MINING_MOB_PROJECTILE_VULNERABILITY)
|
|
add_ranged_armour(vulnerable_projectiles)
|
|
if(crusher_loot)
|
|
AddElement(\
|
|
/datum/element/crusher_loot,\
|
|
trophy_type = crusher_loot,\
|
|
drop_mod = crusher_drop_chance,\
|
|
drop_immediately = basic_mob_flags & DEL_ON_DEATH,\
|
|
)
|
|
RegisterSignal(src, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked))
|
|
// We add this to ensure that mobs will actually receive the above signal, as some will lack AI
|
|
// handling for retaliation and attack special cases
|
|
AddElement(/datum/element/relay_attackers)
|
|
|
|
/mob/living/basic/mining/proc/add_ranged_armour(list/vulnerable_projectiles)
|
|
AddElement(\
|
|
/datum/element/ranged_armour,\
|
|
minimum_projectile_force = 30,\
|
|
below_projectile_multiplier = 0.3,\
|
|
vulnerable_projectile_types = vulnerable_projectiles,\
|
|
minimum_thrown_force = 20,\
|
|
throw_blocked_message = throw_blocked_message,\
|
|
)
|
|
|
|
/mob/living/basic/mining/proc/on_attacked(datum/source, atom/attacker, attack_flags)
|
|
SIGNAL_HANDLER
|
|
|
|
if(!isashwalker(attacker) || !has_faction(FACTION_ASHWALKER))
|
|
return
|
|
remove_faction(FACTION_ASHWALKER)
|