Addressed comments and more testing feedback.

This commit is contained in:
Sam 2021-05-03 16:29:08 -04:00
parent 240a8e577d
commit 2652660a58
4 changed files with 28 additions and 20 deletions

View File

@ -28,6 +28,8 @@
"buff.desc.cursed": "You are cursed.",
"buff.title.burn": "On Fire",
"buff.desc.burn": "You are burning alive",
"buff.title.crippled": "Crippled",
"buff.desc.crippled": "Your movement is crippled as your legs are heavily injured.",
// Buffs stats
"buff.stat.health": "Restores {str_total} Health",
"buff.stat.increase_max_stamina": "Raises Maximum Stamina by {strength}",

View File

@ -441,7 +441,7 @@ impl Body {
biped_large::Species::Wendigo => 2800,
biped_large::Species::Troll => 2400,
biped_large::Species::Dullahan => 3000,
biped_large::Species::Mindflayer => 8000,
biped_large::Species::Mindflayer => 25000,
biped_large::Species::Tidalwarrior => 2500,
biped_large::Species::Yeti => 4000,
biped_large::Species::Minotaur => 30000,
@ -553,10 +553,11 @@ impl Body {
biped_large::Species::Wendigo => 80,
biped_large::Species::Troll => 60,
biped_large::Species::Dullahan => 120,
biped_large::Species::Mindflayer => 250,
biped_large::Species::Tidalwarrior => 90,
biped_large::Species::Yeti => 80,
biped_large::Species::Harvester => 80,
// Boss enemies have their health set, not adjusted by level.
biped_large::Species::Mindflayer => 0,
biped_large::Species::Minotaur => 0,
_ => 100,
},
@ -606,7 +607,11 @@ impl Body {
pub fn combat_multiplier(&self) -> f32 {
match self {
Body::Object(_) | Body::Ship(_) => 0.0,
Body::BipedLarge(b) if matches!(b.species, biped_large::Species::Mindflayer) => 4.0,
Body::BipedLarge(b) => match b.species {
biped_large::Species::Mindflayer => 4.8,
biped_large::Species::Minotaur => 3.2,
_ => 1.0,
},
_ => 1.0,
}
}

View File

@ -14,22 +14,13 @@ use std::{cmp::Ordering, time::Duration};
/// This is used to determine what effects a buff will have
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Serialize, Deserialize, PartialOrd, Ord)]
pub enum BuffKind {
/// Does damage to a creature over time
/// Strength should be 10x the DPS of the debuff
Burning,
// Buffs
/// Restores health/time for some period
/// Strength should be 10x the healing per second
Regeneration,
/// Restores health/time for some period for consumables
/// Strength should be 10x the healing per second
Saturation,
/// Lowers health over time for some duration
/// Strength should be 10x the DPS of the debuff
Bleeding,
/// Lower a creature's max health over time
/// Strength only affects the target max health, 0.5 targets 50% of base
/// max, 1.0 targets 100% of base max
Cursed,
/// Applied when drinking a potion
/// Strength should be 10x the healing per second
Potion,
@ -49,14 +40,25 @@ pub enum BuffKind {
/// Strength scales the damage reduction non-linearly. 0.5 provides 50% DR,
/// 1.0 provides 67% DR
ProtectingWard,
/// Reduces movement speed and causes bleeding damage
/// Strength scales the movement speed debuff non-linearly. 0.5 is 50%
/// speed, 1.0 is 33% speed. Bleeding is at 10x the value of the strength.
Crippled,
/// Increases movement speed and gives health regeneration
/// Strength scales the movement speed linearly. 0.5 is 150% speed, 1.0 is
/// 200% speed. Provides regeneration at 10x the value of the strength
Frenzied,
// Debuffs
/// Does damage to a creature over time
/// Strength should be 10x the DPS of the debuff
Burning,
/// Lowers health over time for some duration
/// Strength should be 10x the DPS of the debuff
Bleeding,
/// Lower a creature's max health over time
/// Strength only affects the target max health, 0.5 targets 50% of base
/// max, 1.0 targets 100% of base max
Cursed,
/// Reduces movement speed and causes bleeding damage
/// Strength scales the movement speed debuff non-linearly. 0.5 is 50%
/// speed, 1.0 is 33% speed. Bleeding is at 10x the value of the strength.
Crippled,
}
#[cfg(not(target_arch = "wasm32"))]

View File

@ -2569,10 +2569,9 @@ impl<'a> AgentData<'a> {
const MINION_SUMMON_THRESHOLD: f32 = 0.20;
let health_fraction = self.health.map_or(0.5, |h| h.fraction());
// Sets counter at start of combat
if agent.action_state.counter < MINION_SUMMON_THRESHOLD
&& health_fraction > MINION_SUMMON_THRESHOLD
{
if agent.action_state.condition {
agent.action_state.counter = 1.0 - MINION_SUMMON_THRESHOLD;
agent.action_state.condition = true;
}
let mindflayer_is_far = dist_sqrd > MINDFLAYER_ATTACK_DIST.powi(2);
if agent.action_state.counter > health_fraction {