public HealthUpdateEvent(Dictionary <byte, object> parameters) : base(parameters)
        {
            ConsoleManager.WriteLineForNetworkHandler(GetType().Name, parameters);

            try
            {
                if (parameters.ContainsKey(0))
                {
                    ObjectId = parameters[0].ObjectToLong() ?? throw new ArgumentNullException();
                }

                if (parameters.ContainsKey(1))
                {
                    TimeStamp = new GameTimeStamp(parameters[1].ObjectToLong() ?? 0);
                }

                if (parameters.ContainsKey(2))
                {
                    HealthChange = parameters[2].ObjectToDouble();
                }

                if (parameters.ContainsKey(3))
                {
                    NewHealthValue = parameters[3].ObjectToDouble();
                }

                if (parameters.ContainsKey(4))
                {
                    EffectType = (EffectType)(parameters[4] as byte? ?? 0);
                }

                if (parameters.ContainsKey(5))
                {
                    EffectOrigin = (EffectOrigin)(parameters[5] as byte? ?? 0);
                }

                if (parameters.ContainsKey(6))
                {
                    CauserId = parameters[6].ObjectToLong() ?? throw new ArgumentNullException();
                }

                if (parameters.ContainsKey(7))
                {
                    CausingSpellType = parameters[7].ObjectToShort();
                }
            }
            catch (ArgumentNullException ex)
            {
                ConsoleManager.WriteLineForError(MethodBase.GetCurrentMethod().DeclaringType, ex);
                Log.Error(MethodBase.GetCurrentMethod().DeclaringType, ex);
            }
            catch (Exception e)
            {
                ConsoleManager.WriteLineForError(MethodBase.GetCurrentMethod().DeclaringType, e);
                Log.Error(MethodBase.GetCurrentMethod().DeclaringType, e);
            }
        }
Example #2
0
 public void HealthUpdate(
     long objectId,
     GameTimeStamp TimeStamp,
     double HealthChange,
     double NewHealthValue,
     EffectType EffectType,
     EffectOrigin EffectOrigin,
     long CauserId,
     int CausingSpellType
     )
 {
     OnHealthUpdate?.Invoke(
         objectId,
         TimeStamp,
         HealthChange,
         NewHealthValue,
         EffectType,
         EffectOrigin,
         CauserId,
         CausingSpellType
         );
 }
Example #3
0
 public void HealthUpdate(
     long objectId,
     GameTimeStamp packageTimeStamp,
     float packageHealthChange,
     float packageNewHealthValue,
     EffectType packageEffectType,
     EffectOrigin packageEffectOrigin,
     long packageCauserId,
     int packageCausingSpellType
     )
 {
     OnHealthUpdate?.Invoke(
         objectId,
         packageTimeStamp,
         packageHealthChange,
         packageNewHealthValue,
         packageEffectType,
         packageEffectOrigin,
         packageCauserId,
         packageCausingSpellType
         );
 }
Example #4
0
        public LastingEffect(EffectType type, ILastingEffectOwner owner, int turns, EffectOrigin origin, EffectiveFactor effectiveFactor,
                             PercentageFactor percentageFactor)
        {
            this.Id               = Guid.NewGuid();
            this.Origin           = origin;
            this.Type             = type;
            this.Owner            = owner;
            this.PendingTurns     = turns;
            this.EffectiveFactor  = effectiveFactor;
            this.PercentageFactor = percentageFactor;
            Application           = EffectApplication.Single;

            if (type == EffectType.Bleeding ||
                type == EffectType.Poisoned ||
                type == EffectType.Frozen ||
                type == EffectType.Firing ||
                type == EffectType.ConsumedRawFood ||
                type == EffectType.ConsumedRoastedFood ||
                type == EffectType.BushTrap //||
                )
            {
                Application = EffectApplication.EachTurn;
            }
        }
 public void DamageMeterUpdate(long objectId, GameTimeStamp timeStamp, double healthChange, double newHealthValue, EffectType effectType,
                               EffectOrigin effectOrigin, long causerId, int causingSpellType)
 {
     CombatController.AddDamageAsync(causerId, healthChange);
 }
Example #6
0
 public void SendHealthUpdate(long objectId, GameTimeStamp timeStamp, float healthChange, float newHealthValue, EffectType effectType, EffectOrigin effectOrigin, long causerId, int causingSpellType)
 {
     Broadcast(new WsCombatEvent
     {
         objectId       = objectId,
         timeStamp      = timeStamp.Ticks,
         healthChange   = healthChange,
         newHealthValue = newHealthValue,
         effectType     = effectType,
         effectOrigin   = effectOrigin,
         causerId       = causerId,
         causingSpell   = _gameData.SpellData.GetByType(causingSpellType)?.Name
     });
 }