private void StealItem(BattleEnemy enemy, Int32 itemIndex) { Byte itemId = enemy.StealableItems[itemIndex]; if (itemId == Byte.MaxValue) { UiState.SetBattleFollowFormatMessage(BattleMesages.CouldNotStealAnything); return; } enemy.StealableItems[itemIndex] = Byte.MaxValue; GameState.Thefts++; BattleItem.AddToInventory(itemId); UiState.SetBattleFollowFormatMessage(BattleMesages.Stole, FF9TextToolAccessor.ItemName(itemId)); if (_v.Caster.HasSupportAbility(SupportAbility2.Mug)) { _v.Target.Flags |= CalcFlag.HpAlteration; _v.Target.HpDamage = (Int16)(GameRandom.Next16() % (_v.Caster.Level * _v.Target.Level >> 1)); } if (_v.Caster.HasSupportAbility(SupportAbility1.StealGil)) { GameState.Gil += (UInt32)(GameRandom.Next16() % (1 + _v.Caster.Level * _v.Target.Level / 4)); } }
public void Perform() { if (!_v.Target.CheckUnsafetyOrMiss() || !_v.Target.CanBeAttacked() || _v.Target.HasCategory(EnemyCategory.Humanoid)) { UiState.SetBattleFollowFormatMessage(BattleMesages.CannotEat); return; } if (_v.Target.CurrentHp > _v.Target.MaximumHp / _v.Command.Power) { UiState.SetBattleFollowFormatMessage(BattleMesages.CannotEatStrong); return; } BattleEnemyPrototype enemyPrototype = BattleEnemyPrototype.Find(_v.Target); Byte blueMagicId = enemyPrototype.BlueMagicId; _v.Target.Kill(); if (blueMagicId == 0 || ff9abil.FF9Abil_IsMaster(_v.Caster.PresetId, blueMagicId)) { UiState.SetBattleFollowFormatMessage(BattleMesages.TasteBad); return; } ff9abil.FF9Abil_SetMaster(_v.Caster.PresetId, blueMagicId); BattleState.RaiseAbilitiesAchievement(blueMagicId); UiState.SetBattleFollowFormatMessage(BattleMesages.Learned, FF9TextToolAccessor.ActionAbilityName(blueMagicId)); }
private void RemoveItem() { Byte itemId = (Byte)_v.Command.HitRate; if (ff9item.FF9Item_GetCount(itemId) == 0) { UiState.SetBattleFollowFormatMessage(BattleMesages.CouldNotStealAnything); } else { BattleItem.RemoveFromInventory(itemId); UiState.SetBattleFollowFormatMessage(BattleMesages.WasStolen, FF9TextToolAccessor.ItemName(itemId)); } }