mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 04:30:44 +01:00
Basic Mob Brimdemon (#78424)
## About The Pull Request Fixes #71330 The brimdemon was basically already perfect (well, it has a novel means of attacking) so I didn't get too fancy with this one, it's _largely_ just a straightforward conversion. Following this change it's a little slower to back off, but better at lining up with people in order to blast them. Additionally, its beam is now a mob ability so you can give it to other mobs if you so desire. Because I can't help doing a _little_ tinkering, Brimdemons now explode 2.5 seconds after they die, after a brief warning animation. ## Why It's Good For The Game Simple mobs must die ## Changelog 🆑 add: Brimdemon corpses release an explosion shortly after death, just to keep you on your toes. refactor: Brimdemons now use the basic mob framework which (should) improve their pathfinding somewhat. Please bug report any unusual behaviour. admin: The brimdemon's beam ability can be given to any mob, for your Binding of Isaac event /🆑
This commit is contained in:
@@ -19,14 +19,10 @@
|
||||
|
||||
///find dead humans and report their location on the radio
|
||||
/datum/ai_planning_subtree/locate_dead_humans/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
||||
var/mob/living/dead_target = controller.blackboard[BB_NEARBY_DEAD_MINER]
|
||||
|
||||
if(QDELETED(dead_target))
|
||||
controller.queue_behavior(/datum/ai_behavior/find_and_set/unconscious_human, BB_NEARBY_DEAD_MINER, /mob/living/carbon/human)
|
||||
return
|
||||
|
||||
controller.queue_behavior(/datum/ai_behavior/send_sos_message, BB_NEARBY_DEAD_MINER)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING
|
||||
if(controller.blackboard_key_exists(BB_NEARBY_DEAD_MINER))
|
||||
controller.queue_behavior(/datum/ai_behavior/send_sos_message, BB_NEARBY_DEAD_MINER)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING
|
||||
controller.queue_behavior(/datum/ai_behavior/find_and_set/unconscious_human, BB_NEARBY_DEAD_MINER, /mob/living/carbon/human)
|
||||
|
||||
/datum/ai_behavior/find_and_set/unconscious_human/search_tactic(datum/ai_controller/controller, locate_path, search_range)
|
||||
for(var/mob/living/carbon/human/target in oview(search_range, controller.pawn))
|
||||
@@ -73,18 +69,12 @@
|
||||
|
||||
///mine walls if we are on automated mining mode
|
||||
/datum/ai_planning_subtree/minebot_mining/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
||||
var/turf/mineral_target = controller.blackboard[BB_TARGET_MINERAL_TURF]
|
||||
var/automated_mining = controller.blackboard[BB_AUTOMATED_MINING]
|
||||
|
||||
if(!automated_mining)
|
||||
if(!controller.blackboard[BB_AUTOMATED_MINING])
|
||||
return
|
||||
|
||||
if(QDELETED(mineral_target))
|
||||
controller.queue_behavior(/datum/ai_behavior/find_mineral_wall/minebot, BB_TARGET_MINERAL_TURF)
|
||||
return
|
||||
|
||||
controller.queue_behavior(/datum/ai_behavior/minebot_mine_turf, BB_TARGET_MINERAL_TURF)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING
|
||||
if(controller.blackboard_key_exists(BB_TARGET_MINERAL_TURF))
|
||||
controller.queue_behavior(/datum/ai_behavior/minebot_mine_turf, BB_TARGET_MINERAL_TURF)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING
|
||||
controller.queue_behavior(/datum/ai_behavior/find_mineral_wall/minebot, BB_TARGET_MINERAL_TURF)
|
||||
|
||||
/datum/ai_behavior/find_mineral_wall/minebot
|
||||
|
||||
@@ -190,7 +180,7 @@
|
||||
|
||||
/datum/pet_command/minebot_ability/execute_action(datum/ai_controller/controller)
|
||||
var/datum/action/cooldown/ability = controller.blackboard[ability_key]
|
||||
if(QDELETED(ability) || !ability.IsAvailable())
|
||||
if(!ability?.IsAvailable())
|
||||
return
|
||||
controller.queue_behavior(/datum/ai_behavior/use_mob_ability, ability_key)
|
||||
controller.clear_blackboard_key(BB_ACTIVE_PET_COMMAND)
|
||||
|
||||
Reference in New Issue
Block a user