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(); }
/// <summary> /// Удалить баф по имени /// </summary> /// <param name="buff">Название бафа</param> public void RemoveBuff(string buff) { Buff buffRemov = Buffs.FirstOrDefault(p => p.Name == buff); if (buffRemov != null) { StopAndRemoveBuff(buffRemov); } }
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()); }
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 } } ; }
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(); } }
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()); }