public override bool DoEquip(Hero hero) { DetachAll(hero.Belongings.Backpack); if (hero.Belongings.Weapon == null || hero.Belongings.Weapon.DoUnequip(hero, true)) { hero.Belongings.Weapon = this; Activate(hero); QuickSlot.Refresh(); cursedKnown = true; if (cursed) { EquipCursed(hero); GLog.Negative(TxtEquipCursed, Name); } hero.SpendAndNext(TimeToEquip); return(true); } Collect(hero.Belongings.Backpack); return(false); }
public Item DetachAll(Bag container) { foreach (var item in container.Items) { if (item == this) { container.Items.Remove(this); item.OnDetach(); QuickSlot.Refresh(); return(this); } var bag1 = item as Bag; if (bag1 == null) { continue; } var bag = bag1; if (bag.Contains(this)) { return(DetachAll(bag)); } } return(this); }
public void UpdateQuickslot() { //TODO: CHECK UpdateQuickslot if (Stackable && Dungeon.Quickslot == this) { QuickSlot.Refresh(); } }
protected override bool OnLongClick() { if (_owner.listener == null && _item.DefaultAction != null) { _owner.Hide(); Dungeon.Quickslot = _item; QuickSlot.Refresh(); return(true); } return(false); }
public override int AttackProc(Character enemy, int damage) { var wep = RangedWeapon ?? Belongings.Weapon; if (wep == null) { return(damage); } wep.Proc(this, enemy, damage); switch (subClass.SubClassType) { case HeroSubClassType.GLADIATOR: if (wep is MeleeWeapon) { damage += buffs.Buff.Affect <Combo>(this).Hit(enemy, damage); } break; case HeroSubClassType.BATTLEMAGE: var wand = wep as Wand; if (wand != null) { if (wand.CurrrentCharges < wand.MaxCharges && damage > 0) { wand.CurrrentCharges++; if (Dungeon.Quickslot == wand) { QuickSlot.Refresh(); } ScrollOfRecharging.Charge(this); } damage += wand.CurrrentCharges; } goto case HeroSubClassType.SNIPER; case HeroSubClassType.SNIPER: if (RangedWeapon != null) { buffs.Buff.Prolong <SnipersMark>(enemy, AttackDelay() * 1.1f); } break; } return(damage); }
public virtual bool Collect(Bag container) { var items = container.Items; if (items.Contains(this)) { return(true); } foreach (var item in items.Where(item => item is Bag && ((Bag)item).Grab(this))) { return(Collect((Bag)item)); } if (Stackable) { var c = GetType(); foreach (var item in items.Where(item => item.GetType() == c)) { item.quantity += quantity; item.UpdateQuickslot(); return(true); } } if (items.Count < container.Size) { if (Dungeon.Hero != null && Dungeon.Hero.IsAlive) { Badge.ValidateItemLevelAquired(this); } items.Add(this); QuickSlot.Refresh(); items.Sort(); return(true); } GLog.Negative(TxtPackFull, Name); return(false); }