public virtual void DoUpdate(LFloat deltaTime, EntityAttri ownerAttri) { if (timer > counter * config.triggerInterval) { counter++; //trigger buff for (int i = 0; i < config.count; i++) { var at = config.Attris[i]; var type = (EEntityAttriType)System.Math.Abs(at.attriType); switch (type) { case EEntityAttriType.Hp: { ownerAttri.Hp += at.val + LMath.FloorToInt(at.percent * triggerAttri.Hp); break; } case EEntityAttriType.MaxHp: { ownerAttri.MaxHp += at.val + LMath.FloorToInt(at.percent * triggerAttri.Hp); break; } } } } }
public void CopyFrom(EntityAttri attri) { IsSilence = attri.IsSilence; IsStone = attri.IsStone; IsFrozen = attri.IsFrozen; IsInvincible = attri.IsInvincible; IsInVisible = attri.IsInVisible; Hp = attri.Hp; MaxHp = attri.MaxHp; Speed = attri.Speed; }
public virtual void DoStart(EntityAttri ownerAttri) { for (int i = 0; i < config.count; i++) { var at = config.Attris[i]; bool isSet = at.val != 0; var type = (EEntityAttriType)System.Math.Abs(at.attriType); if (isSet) { switch (type) { case EEntityAttriType.IsSilence: { ownerAttri.IsSilence = isSet; break; } case EEntityAttriType.IsStone: { ownerAttri.IsStone = isSet; break; } case EEntityAttriType.IsFrozen: { ownerAttri.IsFrozen = isSet; break; } case EEntityAttriType.IsInvincible: { ownerAttri.IsInvincible = isSet; break; } case EEntityAttriType.IsInVisible: { ownerAttri.IsInVisible = isSet; break; } } } } }