Addressed feedback in sceptre branch

This commit is contained in:
Sam 2020-09-14 17:12:09 -05:00
parent de45784596
commit 5bd6f0e26f
2 changed files with 36 additions and 23 deletions
common/src

View File

@ -46,6 +46,11 @@ impl CharacterBehavior for Data {
handle_move(data, &mut update, 0.4); handle_move(data, &mut update, 0.4);
handle_jump(data, &mut update); handle_jump(data, &mut update);
if unwrap_tool_data(data).is_none() {
update.character = CharacterState::Idle;
return update;
}
if self.buildup_duration != Duration::default() { if self.buildup_duration != Duration::default() {
// Build up // Build up
update.character = CharacterState::BasicBeam(Data { update.character = CharacterState::BasicBeam(Data {

View File

@ -189,20 +189,14 @@ impl<'a> System<'a> for Sys {
damage.modify_damage(block, loadout); damage.modify_damage(block, loadout);
} }
if damage.healthchange != 0.0 { if is_damage {
let cause = if is_heal {
HealthSource::Healing { by: beam.owner }
} else {
HealthSource::Energy { owner: beam.owner }
};
server_emitter.emit(ServerEvent::Damage { server_emitter.emit(ServerEvent::Damage {
uid: *uid_b, uid: *uid_b,
change: HealthChange { change: HealthChange {
amount: damage.healthchange as i32, amount: damage.healthchange as i32,
cause, cause: HealthSource::Energy { owner: beam.owner },
}, },
}); });
if is_damage && beam.lifesteal_eff > 0.0 {
server_emitter.emit(ServerEvent::Damage { server_emitter.emit(ServerEvent::Damage {
uid: beam.owner.unwrap_or(*uid), uid: beam.owner.unwrap_or(*uid),
change: HealthChange { change: HealthChange {
@ -210,8 +204,6 @@ impl<'a> System<'a> for Sys {
cause: HealthSource::Healing { by: beam.owner }, cause: HealthSource::Healing { by: beam.owner },
}, },
}); });
}
if is_damage || stats_b.health.current() != stats_b.health.maximum() {
if let Some(energy_mut) = beam if let Some(energy_mut) = beam
.owner .owner
.and_then(|o| uid_allocator.retrieve_entity_internal(o.into())) .and_then(|o| uid_allocator.retrieve_entity_internal(o.into()))
@ -221,6 +213,22 @@ impl<'a> System<'a> for Sys {
.change_by(beam.energy_regen as i32, EnergySource::HitEnemy); .change_by(beam.energy_regen as i32, EnergySource::HitEnemy);
} }
} }
if is_heal {
if let Some(energy_mut) = beam
.owner
.and_then(|o| uid_allocator.retrieve_entity_internal(o.into()))
.and_then(|o| energies.get_mut(o))
{
if energy_mut.try_change_by(-(beam.energy_regen as i32), EnergySource::Ability).is_ok() {
server_emitter.emit(ServerEvent::Damage {
uid: *uid_b,
change: HealthChange {
amount: damage.healthchange as i32,
cause: HealthSource::Healing { by: beam.owner },
},
});
}
}
} }
} }
} }