mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Changed how buffs were constructed on projectiles.
This commit is contained in:
parent
f4244ecbaf
commit
abf7301a89
@ -12,18 +12,17 @@ BasicRanged(
|
||||
Knockback(Away(10.0)),
|
||||
RewardEnergy(50),
|
||||
Vanish,
|
||||
/*projectile::Effect::Buff {
|
||||
buff: Buff::new(
|
||||
BuffKind::Bleeding,
|
||||
BuffData {
|
||||
strength: 20.0 * self.base_power(),
|
||||
duration: Some(Duration::from_secs(5)),
|
||||
},
|
||||
vec![BuffCategory::Physical],
|
||||
BuffSource::Unknown,
|
||||
Buff(
|
||||
buff: (
|
||||
kind: Bleeding,
|
||||
data: (
|
||||
strength: 20.0,
|
||||
duration: Some(5), // secs
|
||||
),
|
||||
cat_ids: [Physical],
|
||||
),
|
||||
chance: Some(0.10),
|
||||
},*/
|
||||
),
|
||||
],
|
||||
time_left: 15, // seconds
|
||||
owner: None,
|
||||
|
@ -14,18 +14,17 @@ RepeaterRanged(
|
||||
)),
|
||||
Knockback(Away(10.0)),
|
||||
Vanish,
|
||||
/*projectile::Effect::Buff {
|
||||
buff: Buff::new(
|
||||
BuffKind::Bleeding,
|
||||
BuffData {
|
||||
strength: 20.0 * self.base_power(),
|
||||
duration: Some(Duration::from_secs(5)),
|
||||
},
|
||||
vec![BuffCategory::Physical],
|
||||
BuffSource::Unknown,
|
||||
Buff(
|
||||
buff: (
|
||||
kind: Bleeding,
|
||||
data: (
|
||||
strength: 20.0,
|
||||
duration: Some(5), // secs
|
||||
),
|
||||
cat_ids: [Physical],
|
||||
),
|
||||
chance: Some(0.10),
|
||||
},*/
|
||||
),
|
||||
],
|
||||
time_left: 15, // seconds
|
||||
owner: None,
|
||||
|
@ -4,10 +4,10 @@
|
||||
use crate::{
|
||||
comp::{
|
||||
body::object,
|
||||
buff::{Buff, BuffCategory, BuffData, BuffKind, BuffSource},
|
||||
buff::{BuffCategory, BuffData, BuffKind},
|
||||
projectile, Body, CharacterAbility, Gravity, LightEmitter, Projectile,
|
||||
},
|
||||
effect::Effect,
|
||||
effect::{BuffEffect, Effect},
|
||||
states::combo_melee,
|
||||
Damage, DamageSource, Explosion, GroupTarget, Knockback, RadiusEffect,
|
||||
};
|
||||
@ -324,15 +324,14 @@ impl Tool {
|
||||
projectile::Effect::RewardEnergy(50),
|
||||
projectile::Effect::Vanish,
|
||||
projectile::Effect::Buff {
|
||||
buff: Buff::new(
|
||||
BuffKind::Bleeding,
|
||||
BuffData {
|
||||
buff: BuffEffect {
|
||||
kind: BuffKind::Bleeding,
|
||||
data: BuffData {
|
||||
strength: 20.0 * self.base_power(),
|
||||
duration: Some(Duration::from_secs(5)),
|
||||
},
|
||||
vec![BuffCategory::Physical],
|
||||
BuffSource::Unknown,
|
||||
),
|
||||
cat_ids: vec![BuffCategory::Physical],
|
||||
},
|
||||
chance: Some(0.10),
|
||||
},
|
||||
],
|
||||
@ -380,15 +379,14 @@ impl Tool {
|
||||
projectile::Effect::Knockback(Knockback::Away(10.0)),
|
||||
projectile::Effect::Vanish,
|
||||
projectile::Effect::Buff {
|
||||
buff: Buff::new(
|
||||
BuffKind::Bleeding,
|
||||
BuffData {
|
||||
buff: BuffEffect {
|
||||
kind: BuffKind::Bleeding,
|
||||
data: BuffData {
|
||||
strength: 20.0 * self.base_power(),
|
||||
duration: Some(Duration::from_secs(5)),
|
||||
},
|
||||
vec![BuffCategory::Physical],
|
||||
BuffSource::Unknown,
|
||||
),
|
||||
cat_ids: vec![BuffCategory::Physical],
|
||||
},
|
||||
chance: Some(0.10),
|
||||
},
|
||||
],
|
||||
|
@ -1,4 +1,4 @@
|
||||
use crate::{comp::Buff, sync::Uid, Damage, Explosion, GroupTarget, Knockback};
|
||||
use crate::{effect::BuffEffect, sync::Uid, Damage, Explosion, GroupTarget, Knockback};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use specs::{Component, FlaggedStorage};
|
||||
use specs_idvs::IdvStorage;
|
||||
@ -13,7 +13,10 @@ pub enum Effect {
|
||||
Vanish,
|
||||
Stick,
|
||||
Possess,
|
||||
Buff { buff: Buff, chance: Option<f32> },
|
||||
Buff {
|
||||
buff: BuffEffect,
|
||||
chance: Option<f32>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
|
@ -1,9 +1,10 @@
|
||||
use crate::{
|
||||
comp::{
|
||||
buff::{Buff, BuffCategory, BuffData, BuffKind, BuffSource},
|
||||
buff::{BuffCategory, BuffData, BuffKind},
|
||||
projectile, Body, CharacterState, EnergyChange, EnergySource, Gravity, LightEmitter,
|
||||
Projectile, StateUpdate,
|
||||
},
|
||||
effect::BuffEffect,
|
||||
event::ServerEvent,
|
||||
states::utils::*,
|
||||
sys::character_behavior::{CharacterBehavior, JoinData},
|
||||
@ -105,15 +106,14 @@ impl CharacterBehavior for Data {
|
||||
projectile::Effect::Knockback(Knockback::Away(knockback)),
|
||||
projectile::Effect::Vanish,
|
||||
projectile::Effect::Buff {
|
||||
buff: Buff::new(
|
||||
BuffKind::Bleeding,
|
||||
BuffData {
|
||||
buff: BuffEffect {
|
||||
kind: BuffKind::Bleeding,
|
||||
data: BuffData {
|
||||
strength: damage.value / 5.0,
|
||||
duration: Some(Duration::from_secs(5)),
|
||||
},
|
||||
vec![BuffCategory::Physical],
|
||||
BuffSource::Unknown,
|
||||
),
|
||||
cat_ids: vec![BuffCategory::Physical],
|
||||
},
|
||||
chance: Some(0.10),
|
||||
},
|
||||
],
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::{
|
||||
comp::{
|
||||
buff::{BuffChange, BuffSource},
|
||||
buff::{Buff, BuffChange, BuffSource},
|
||||
projectile, EnergyChange, EnergySource, Group, HealthSource, Loadout, Ori, PhysicsState,
|
||||
Pos, Projectile, Vel,
|
||||
},
|
||||
@ -176,10 +176,13 @@ impl<'a> System<'a> for Sys {
|
||||
uid_allocator.retrieve_entity_internal(other.into())
|
||||
{
|
||||
if chance.map_or(true, |c| thread_rng().gen::<f32>() < c) {
|
||||
let mut buff = buff.clone();
|
||||
if let Some(uid) = projectile.owner {
|
||||
buff.source = BuffSource::Character { by: uid };
|
||||
}
|
||||
let source = if let Some(owner) = projectile.owner {
|
||||
BuffSource::Character { by: owner }
|
||||
} else {
|
||||
BuffSource::Unknown
|
||||
};
|
||||
let buff =
|
||||
Buff::new(buff.kind, buff.data, buff.cat_ids, source);
|
||||
server_emitter.emit(ServerEvent::Buff {
|
||||
entity,
|
||||
buff_change: BuffChange::Add(buff),
|
||||
|
Loading…
Reference in New Issue
Block a user