mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
Changes to crusher trophies and mining AOE, adds a new raptor-sourced trophy (#92241)
## About The Pull Request - Rebuke effect (from god's eye and lobstrocity claw trophy) now works on basicmobs, increasing the cooldown on their ranged attacks just like it does for simplemobs. - Bileworm spewlet trophy shots no longer hit your allied mobs, as previously this would cause you to constantly hit your own raptor/minebots/NODE drones, making it actively detrimental in some situations. Its shots now deals brute damage instead of burn, as otherwise its damage was reduced by 70% due to innate projectile resistance of lavaland mobs, making it deal measely 6 damage every 10 seconds. - MOD sphere module bombs now properly aggro lavaland mobs, as previously they only worked on simplemobs (also fixed a direct assignment to the blackboard in legionnaire spine code). - They also no longer deal damage to minebots and NODE drones. - Afterimages from the ice demon and their trophy can now be passed through, although hostile AI would attempt to avoid doing so. This way the trophy should no longer be an active detriment to players, and demons themselves should be less jank to fight. And if you're a heartless enough bastard, you can kill and butcher your raptor to get a new raptor feather crusher trophy, which allows your destabilizer shots to phase through your allied mobs similarly to passthrough mods for PKA. <img width="174" height="125" alt="Aseprite_3Olcd7oyVJ" src="https://github.com/user-attachments/assets/99d7eebb-e36d-428b-aa48-f1261a173ca1" /> ## Why It's Good For The Game These changes should make vent defense more bearable, as right now its very easy to accidentally damage and kill your own drone due to them being hit by all AOEs in miner arsenal. - Rebuke - should probably work on basicmobs as only remaining simplemobs on lavaland are megafauna - Bileworm spewlet - its a joke of a trophy at 6 damage as it has a 10 second cooldown, and it hitting your allies made vent defense much harder than it should've been - Sphere changes - should make bombs not kill your NODE/mining drones, aggro helps prevent cheese. - Afterimages - the trophy can end up bodyblocking you, this change should make it less of a pain in the ass to use the trophy and to fight the demons themselves. - Raptor feather - useful for vent defense when you're using minebots or have dismounted your raptor, right now its a pain for reasons mentioned above ## Changelog 🆑 add: Added a raptor feather crusher trophy which makes your crusher shots go through your allied mobs. balance: Rebuke effect from lobster claw trophy and the eye of god now applies to basicmob attacks balance: Bileworm spewlet's damage is no longer reduced by 70% when hitting lavaland fauna, and it no longer can hit allied mobs balance: Sphere MODule bombs no longer hit NODE drones and minebots balance: Ice demon/ice demon cube afterimages can now be walked through by players fix: Sphere MODule bombs now aggro basicmobs hit by their explosions /🆑
This commit is contained in:
@@ -188,15 +188,15 @@
|
||||
// Detonation effect
|
||||
var/datum/status_effect/crusher_damage/crusher_damage_effect = target.has_status_effect(/datum/status_effect/crusher_damage) || target.apply_status_effect(/datum/status_effect/crusher_damage)
|
||||
var/target_health = target.health
|
||||
var/combined_damage = detonation_damage
|
||||
for(var/obj/item/crusher_trophy/crusher_trophy as anything in trophies)
|
||||
crusher_trophy.on_mark_detonation(target, user)
|
||||
combined_damage += crusher_trophy.on_mark_detonation(target, user)
|
||||
if(QDELETED(target))
|
||||
return
|
||||
if(!QDELETED(crusher_damage_effect))
|
||||
crusher_damage_effect.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did
|
||||
new /obj/effect/temp_visual/kinetic_blast(get_turf(target))
|
||||
var/backstabbed = FALSE
|
||||
var/combined_damage = detonation_damage
|
||||
var/def_check = target.getarmor(type = BOMB)
|
||||
// Backstab bonus
|
||||
if(check_behind(user, target) || boosted_mark)
|
||||
@@ -297,6 +297,8 @@
|
||||
log_override = TRUE
|
||||
/// Has this projectile been boosted
|
||||
var/boosted = FALSE
|
||||
/// Should this projectile go through allied mobs?
|
||||
var/ignore_allies = FALSE
|
||||
|
||||
/obj/projectile/destabilizer/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -313,6 +315,14 @@
|
||||
damage = 10
|
||||
range = 9
|
||||
|
||||
/obj/projectile/destabilizer/prehit_pierce(atom/target)
|
||||
if(!isliving(target) || !firer || !ignore_allies)
|
||||
return ..()
|
||||
var/mob/living/victim = target
|
||||
if(firer.faction_check_atom(victim))
|
||||
return PROJECTILE_PIERCE_PHASE
|
||||
return ..()
|
||||
|
||||
/obj/projectile/destabilizer/on_hit(atom/target, blocked = 0, pierce_hit)
|
||||
var/obj/item/kinetic_crusher/used_crusher
|
||||
if(istype(fired_from, /obj/item/kinetic_crusher))
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
return
|
||||
|
||||
/// Does an effect when you hit a mob that is marked via the projectile
|
||||
/// Returns additional damage for detonation
|
||||
/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user) //the target and the user
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
//if we dont have a set id, use the typepath as identifier
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
missing_health *= missing_health_ratio //bonus is active at all times, even if you're above 90 health
|
||||
missing_health *= bonus_value //multiply the remaining amount by bonus_value
|
||||
if(missing_health > 0)
|
||||
target.adjustBruteLoss(missing_health) //and do that much damage
|
||||
return missing_health //and do that much damage
|
||||
|
||||
// Lobstrosity - Rebukes targets, increasing their click cooldown.
|
||||
/obj/item/crusher_trophy/lobster_claw
|
||||
@@ -116,7 +116,7 @@
|
||||
wildhunter_drop = /obj/item/organ/monster_core/rush_gland
|
||||
|
||||
/obj/item/crusher_trophy/lobster_claw/effect_desc()
|
||||
return "mark detonation to briefly rebuke the target for [bonus_value] seconds"
|
||||
return "mark detonation to briefly rebuke the target for [bonus_value] second[bonus_value > 1 ? "s" : ""]"
|
||||
|
||||
/obj/item/crusher_trophy/lobster_claw/on_mark_detonation(mob/living/target, mob/living/user)
|
||||
. = ..()
|
||||
@@ -186,13 +186,29 @@
|
||||
check_flags = NONE
|
||||
owner_has_control = FALSE
|
||||
cooldown_time = 10 SECONDS
|
||||
projectile_type = /obj/projectile/bileworm_acid
|
||||
projectile_type = /obj/projectile/bileworm_acid/crusher
|
||||
projectile_sound = 'sound/mobs/non-humanoids/bileworm/bileworm_spit.ogg'
|
||||
|
||||
/datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/spewlet/New(Target)
|
||||
firing_directions = GLOB.cardinals.Copy()
|
||||
return ..()
|
||||
|
||||
/obj/projectile/bileworm_acid/crusher
|
||||
damage_type = BRUTE // Otherwise the mobs take heavily reduced damage
|
||||
|
||||
/obj/projectile/bileworm_acid/crusher/prehit_pierce(atom/target)
|
||||
if (!isliving(target))
|
||||
return ..()
|
||||
var/mob/living/as_living = target
|
||||
// Only hit hostile things, or mining mobs if we have no firer (somehow)
|
||||
if (firer)
|
||||
if (firer.faction_check_atom(as_living))
|
||||
return PROJECTILE_DELETE_WITHOUT_HITTING
|
||||
return ..()
|
||||
if (as_living.mob_biotypes & MOB_MINING)
|
||||
return ..()
|
||||
return PROJECTILE_DELETE_WITHOUT_HITTING
|
||||
|
||||
// demonic watcher
|
||||
/obj/item/crusher_trophy/ice_demon_cube
|
||||
name = "demonic cube"
|
||||
@@ -245,7 +261,7 @@
|
||||
. = ..()
|
||||
user.apply_status_effect(/datum/status_effect/speed_boost, 1 SECONDS)
|
||||
|
||||
// Polar bear
|
||||
// Polar bear - If you're hurt, you attack twice when you detonate a mark
|
||||
/obj/item/crusher_trophy/bear_paw
|
||||
name = "polar bear paw"
|
||||
desc = "It's a polar bear paw."
|
||||
@@ -260,7 +276,21 @@
|
||||
. = ..()
|
||||
if(user.health / user.maxHealth > 0.5)
|
||||
return
|
||||
var/obj/item/I = user.get_active_held_item()
|
||||
if(!I)
|
||||
return
|
||||
I.melee_attack_chain(user, target, null)
|
||||
var/obj/item/weapon = user.get_active_held_item()
|
||||
if(weapon)
|
||||
addtimer(CALLBACK(weapon, TYPE_PROC_REF(/obj/item, melee_attack_chain), user, target), 0.1 SECONDS)
|
||||
|
||||
// Raptor - Your shots now go through your allied mobs. You monster.
|
||||
/obj/item/crusher_trophy/raptor_feather
|
||||
name = "raptor feather"
|
||||
desc = "A feather of an innocent raptor. You'd go to hell for this one, if you weren't already mining in it."
|
||||
icon_state = "raptor_feather"
|
||||
denied_type = /obj/item/crusher_trophy/raptor_feather
|
||||
trophy_id = TROPHY_RAPTOR_FEATHER
|
||||
wildhunter_drop = /obj/item/food/meat/slab/chicken
|
||||
|
||||
/obj/item/crusher_trophy/raptor_feather/effect_desc()
|
||||
return "your shots to go through your allies"
|
||||
|
||||
/obj/item/crusher_trophy/raptor_feather/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
|
||||
marker.ignore_allies = TRUE
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
return
|
||||
var/mob/living/basic/legion_brood/minion = new (user.loc)
|
||||
minion.assign_creator(user)
|
||||
minion.ai_controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET] = target
|
||||
minion.ai_controller.set_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET, target)
|
||||
|
||||
/obj/item/crusher_trophy/legionnaire_spine/attack_self(mob/user)
|
||||
if(!isliving(user))
|
||||
@@ -241,7 +241,7 @@
|
||||
//The Thing
|
||||
/obj/item/crusher_trophy/flesh_glob
|
||||
name = "glob of shifting flesh"
|
||||
desc = "A glob of shifting flesh. Sealed shut permanently. Suitable as a trophy for a kinetic crusher."
|
||||
desc = "A glob of shifting flesh, sealed shut permanently. Suitable as a trophy for a kinetic crusher."
|
||||
icon_state = "glob"
|
||||
denied_type = /obj/item/crusher_trophy/flesh_glob
|
||||
bonus_value = 20
|
||||
|
||||
Reference in New Issue
Block a user