Balance tweaks for harvester.

This commit is contained in:
Sam 2021-06-21 22:50:16 -05:00
parent aac24ad601
commit 68c6a0a495
4 changed files with 18 additions and 12 deletions

View File

@ -3,9 +3,9 @@ BasicRanged(
buildup_duration: 0.5,
recover_duration: 0.8,
projectile: ExplodingPumpkin(
damage: 500.0,
damage: 200.0,
knockback: 25.0,
radius: 10.0,
radius: 5.0,
),
projectile_body: Object(Pumpkin),
projectile_light: None,

View File

@ -2,8 +2,8 @@ BasicBeam(
buildup_duration: 0.5,
recover_duration: 0.5,
beam_duration: 1.0,
damage: 35,
tick_rate: 3.0,
damage: 30,
tick_rate: 1.5,
range: 20.0,
max_angle: 15.0,
damage_effect: Some(Buff((
@ -15,6 +15,6 @@ BasicBeam(
energy_regen: 0,
energy_drain: 0,
orientation_behavior: Normal,
ori_rate: 0.6,
ori_rate: 0.2,
specifier: Flamethrower,
)

View File

@ -88,12 +88,12 @@ impl CharacterBehavior for Data {
data.pos.0.z.floor() as i32,
);
// Check for collision in z up to 25 blocks up or down
// Check for collision in z up to 10 blocks up or down
let obstacle_z = data
.terrain
.ray(
sprite_pos.map(|x| x as f32 + 0.5) + Vec3::unit_z() * 25.0,
sprite_pos.map(|x| x as f32 + 0.5) - Vec3::unit_z() * 25.0,
sprite_pos.map(|x| x as f32 + 0.5) + Vec3::unit_z() * 10.0,
sprite_pos.map(|x| x as f32 + 0.5) - Vec3::unit_z() * 10.0,
)
.until(|b| {
// Until reaching a solid block that is not the created sprite
@ -104,7 +104,7 @@ impl CharacterBehavior for Data {
.0;
// z height relative to caster
let z = sprite_pos.z + (25.5 - obstacle_z).ceil() as i32;
let z = sprite_pos.z + (10.5 - obstacle_z).ceil() as i32;
// Location sprite will be created
let sprite_pos = Vec3::new(sprite_pos.x as i32, sprite_pos.y as i32, z);

View File

@ -3734,10 +3734,16 @@ impl<'a> AgentData<'a> {
agent.action_state.condition = true;
}
} else if attack_data.dist_sqrd < FIRE_BREATH_RANGE.powi(2) {
if matches!(self.char_state, CharacterState::BasicBeam(c) if c.timer < Duration::from_secs(10))
if matches!(self.char_state, CharacterState::BasicBeam(c) if c.timer < Duration::from_secs(5))
&& can_see_tgt(
&*read_data.terrain,
self.pos,
tgt_data.pos,
attack_data.dist_sqrd,
)
{
// Keep breathing fire if close enough and have not been breathing for more than
// 10 seconds
// Keep breathing fire if close enough, can see target, and have not been
// breathing for more than 5 seconds
controller
.actions
.push(ControlAction::basic_input(InputKind::Secondary));