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, buildup_duration: 0.5,
recover_duration: 0.8, recover_duration: 0.8,
projectile: ExplodingPumpkin( projectile: ExplodingPumpkin(
damage: 500.0, damage: 200.0,
knockback: 25.0, knockback: 25.0,
radius: 10.0, radius: 5.0,
), ),
projectile_body: Object(Pumpkin), projectile_body: Object(Pumpkin),
projectile_light: None, projectile_light: None,

View File

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

View File

@ -88,12 +88,12 @@ impl CharacterBehavior for Data {
data.pos.0.z.floor() as i32, 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 let obstacle_z = data
.terrain .terrain
.ray( .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() * 10.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,
) )
.until(|b| { .until(|b| {
// Until reaching a solid block that is not the created sprite // Until reaching a solid block that is not the created sprite
@ -104,7 +104,7 @@ impl CharacterBehavior for Data {
.0; .0;
// z height relative to caster // 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 // Location sprite will be created
let sprite_pos = Vec3::new(sprite_pos.x as i32, sprite_pos.y as i32, z); 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; agent.action_state.condition = true;
} }
} else if attack_data.dist_sqrd < FIRE_BREATH_RANGE.powi(2) { } 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 // Keep breathing fire if close enough, can see target, and have not been
// 10 seconds // breathing for more than 5 seconds
controller controller
.actions .actions
.push(ControlAction::basic_input(InputKind::Secondary)); .push(ControlAction::basic_input(InputKind::Secondary));