Lifesteal now functional on Attack.

This commit is contained in:
Sam 2021-01-28 20:55:43 -05:00
parent fdef168e82
commit fcd89a5d41
2 changed files with 28 additions and 2 deletions

View File

@ -127,6 +127,18 @@ impl Attack {
});
}
},
AttackEffect::Lifesteal(l) => {
let change = HealthChange {
amount: (damage_damage * l) as i32,
cause: HealthSource::Heal {
by: Some(attacker_uid),
},
};
server_events.push(ServerEvent::Damage {
entity: attacker_entity,
change,
});
},
}
}
}
@ -170,6 +182,18 @@ impl Attack {
});
}
},
AttackEffect::Lifesteal(l) => {
let change = HealthChange {
amount: (accumulated_damage * l) as i32,
cause: HealthSource::Heal {
by: Some(attacker_uid),
},
};
server_events.push(ServerEvent::Damage {
entity: attacker_entity,
change,
});
},
}
}
}
@ -227,7 +251,7 @@ pub enum AttackEffect {
Buff(CombatBuff),
Knockback(Knockback),
EnergyReward(u32),
//Lifesteal(f32),
Lifesteal(f32),
}
#[derive(Clone, Debug, Serialize, Deserialize)]

View File

@ -136,7 +136,9 @@ impl CharacterBehavior for Data {
let energy = AttackEffect::EnergyReward(self.static_data.energy_regen);
let energy = EffectComponent::new(None, energy)
.with_requirement(CombatRequirement::AnyDamage);
let damage = DamageComponent::new(damage, Some(GroupTarget::OutOfGroup));
let lifesteal = AttackEffect::Lifesteal(self.static_data.lifesteal_eff);
let damage = DamageComponent::new(damage, Some(GroupTarget::OutOfGroup))
.with_effect(lifesteal);
let attack = Attack::default().with_damage(damage).with_effect(energy);
let properties = beam::Properties {