Exemplo n.º 1
0
        public void GetAward(IUnit killedUnit)
        {
            this.Exp += killedUnit.NExp;
            int    gold         = 0;
            Player killedPlayer = killedUnit as Player;

            if (killedPlayer != null)
            {
                gold += killedPlayer.Level * StaticVaribl.PlayerGoldPlus;
            }
            else
            {
                gold += killedUnit.NGold;
            }

            Buff buff = Buffs.FirstOrDefault(p => p.Name == "GreevilsGreed");

            if (buff != null)
            {
                gold += buff.GoldBonus;
            }

            this.Gold             += gold;
            StatisticData.AllGold += gold;
            this.UpdateView();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Удалить баф по имени
        /// </summary>
        /// <param name="buff">Название бафа</param>
        public void RemoveBuff(string buff)
        {
            Buff buffRemov = Buffs.FirstOrDefault(p => p.Name == buff);

            if (buffRemov != null)
            {
                StopAndRemoveBuff(buffRemov);
            }
        }
Exemplo n.º 3
0
        public void RemoveBuff(int id, bool removePermaBuff = false)
        {
            Buff.Buff indicator = Buffs.FirstOrDefault(s => s.Card.CardId == id);
            if (indicator == null || !removePermaBuff && indicator.IsPermaBuff && indicator.RemainingTime <= 0)
            {
                return;
            }

            if (indicator.IsPermaBuff && !removePermaBuff)
            {
                AddBuff(indicator);
                return;
            }

            Buffs.RemoveWhere(s => s.Card.CardId != id, out ConcurrentBag <Buff.Buff> buffs);
            Buffs = buffs;
            if (!(Session is Character character))
            {
                return;
            }

            if (indicator.StaticBuff)
            {
                character.Session.SendPacket($"vb {indicator.Card.CardId} 0 {indicator.Card.Duration}");
                character.Session.SendPacket(character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("EFFECT_TERMINATED"), indicator.Card.Name), 11));
            }
            else
            {
                character.Session.SendPacket($"bf 1 {character.CharacterId} 0.{indicator.Card.CardId}.0 {Level}");
                character.Session.SendPacket(character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("EFFECT_TERMINATED"), indicator.Card.Name), 20));
            }

            if (indicator.Card.BCards.Any(s => s.Type == (byte)CardType.Move))
            {
                character.LoadSpeed();
                character.LastSpeedChange = DateTime.Now;
                character.Session.SendPacket(character.GenerateCond());
            }

            if (!indicator.Card.BCards.Any(s => s.Type == (byte)CardType.SpecialActions && s.SubType.Equals((byte)AdditionalTypes.SpecialActions.Hide)))
            {
                return;
            }

            character.Invisible = false;
            character.Mates.Where(m => m.IsTeamMember).ToList().ForEach(m => character.MapInstance?.Broadcast(m.GenerateIn()));
            character.MapInstance?.Broadcast(character.GenerateInvisible());
        }
Exemplo n.º 4
0
        protected override void OnLoaded()
        {
            base.OnLoaded();

            if (StorageSize == 0)
            {
                StorageSize = Globals.StorageSize;
            }

            BuffInfo buff = Buffs.FirstOrDefault(x => x.Type == BuffType.HuntGold);

            if (buff != null)
            {
                buff.Stats = new Stats {
                    [Stat.AvailableHuntGoldCap] = 15
                }
            }
            ;
        }
Exemplo n.º 5
0
        public void RemoveItem(ItemClass item, bool notUpdate)
        {
            if (item.ItemUsed == true)
            {
                #region Убираем действие итема

                Agility      -= item.Agility;
                Intelligence -= item.Intelligence;
                Strength     -= item.Strength;

                ItemArrmor -= item.Armor;

                OrijAttackSpeed += item.AttackSpeed;

                DemageItem -= item.Demage;
                OrijHealth -= item.HealthBonus;
                MaxHealth  -= item.HealthBonus;

                int health = Health - item.HealthBonus;
                if (health <= 0)
                {
                    health = 1;
                }
                Health = health;

                OrijHealthRegeneration -= item.HealthRegen;

                OrijMana -= item.ManaBonus;
                MaxMana  -= item.ManaBonus;

                int mana = Mana - item.ManaBonus;
                if (mana <= 0)
                {
                    mana = 1;
                }
                Mana = mana;


                OrijManaRegeneration -= (int)item.ManaRegen;

                if ((item.Boots && Items.Count(p => p.Boots) > 1) ||
                    (item.IsYasha && Items.Count(p => p.IsYasha) > 1))
                {
                }
                else
                {
                    OrijSpeed += item.Speed;
                }


                if (item.Buff != null)
                {
                    Buff buff = Buffs.FirstOrDefault(p => p.Name == item.Buff.Name);
                    if (buff != null)
                    {
                        Buffs.Remove(buff);
                    }
                }

                IAura aura = item.AuraItem as IAura;
                if (aura != null)
                {
                    aura.StopUseAura();
                }
            }
            #endregion
            Items.Remove(item);



            if (!notUpdate)
            {
                if (UpdateItemPlayerData != null)
                {
                    UpdateItemPlayerData(this, null);
                }

                UpdateView();
            }
        }
Exemplo n.º 6
0
        public void RemoveBuff(int id, bool removePermaBuff = false)
        {
            Buff.Buff indicator = Buffs.FirstOrDefault(s => s.Card.CardId == id);
            if (indicator == null || !removePermaBuff && indicator.IsPermaBuff && indicator.RemainingTime <= 0)
            {
                return;
            }

            if (indicator.IsPermaBuff && !removePermaBuff)
            {
                AddBuff(indicator);
                return;
            }

            if (ObservableBag.ContainsKey((short)id))
            {
                ObservableBag[(short)id]?.Dispose();
            }
            Buffs.RemoveWhere(s => s.Card.CardId != id, out ConcurrentBag <Buff.Buff> buffs);
            Buffs = buffs;

            if (Session is MapMonster monster)
            {
                monster.ReflectiveBuffs.TryRemove((short)id, out _);
            }

            if (!(Session is Character character))
            {
                return;
            }

            character.ReflectiveBuffs.TryRemove((short)id, out _);

            // Fairy booster
            if (indicator.Card.CardId == 131)
            {
                character.GeneratePairy();
            }

            if (!character.ReflectiveBuffs.Any())
            {
                IsReflecting = false;
            }

            if (indicator.StaticBuff)
            {
                character.Session.SendPacket($"vb {indicator.Card.CardId} 0 {indicator.Card.Duration}");
                character.Session.SendPacket(character.GenerateSay(
                                                 string.Format(Language.Instance.GetMessageFromKey("EFFECT_TERMINATED"), indicator.Card.Name), 11));
            }
            else
            {
                character.Session.SendPacket($"bf 1 {character.CharacterId} 0.{indicator.Card.CardId}.0 {Level}");
                character.Session.SendPacket(character.GenerateSay(
                                                 string.Format(Language.Instance.GetMessageFromKey("EFFECT_TERMINATED"), indicator.Card.Name), 20));
            }

            // Fairy Booster
            if (indicator.Card.CardId == 131)
            {
                character.Session.SendPacket(character.GeneratePairy());
            }

            if (indicator.Card.BCards.Any(s => s.Type == (byte)CardType.Move))
            {
                character.LoadSpeed();
                character.LastSpeedChange = DateTime.Now;
                character.Session.SendPacket(character.GenerateCond());
            }

            if (!indicator.Card.BCards.Any(s =>
                                           s.Type == (byte)CardType.SpecialActions &&
                                           s.SubType.Equals((byte)AdditionalTypes.SpecialActions.Hide)) &&
                indicator.Card.CardId != 559 && indicator.Card.CardId != 560)
            {
                return;
            }

            if (indicator.Card.CardId == 559 && character.TriggerAmbush)
            {
                character.AddBuff(new Buff.Buff(560));
                character.TriggerAmbush = false;
                return;
            }

            if (indicator.Card.BCards.Any(s => s.Type == (byte)CardType.HideBarrelSkill && s.SubType.Equals((byte)AdditionalTypes.HideBarrelSkill.NoHPConsumption)))
            {
                character.HasGodMode = false;
            }

            if (indicator.Card.BCards.Any(s => s.Type == (byte)CardType.NoDefeatAndNoDamage && s.SubType.Equals((byte)AdditionalTypes.NoDefeatAndNoDamage.NeverReceiveDamage)))
            {
                character.HasGodMode = false;
            }

            character.Invisible = false;
            character.Mates.Where(m => m.IsTeamMember).ToList()
            .ForEach(m => character.MapInstance?.Broadcast(m.GenerateIn()));
            character.MapInstance?.Broadcast(character.GenerateInvisible());
        }