More abilities, refactor stealing held items
All checks were successful
Build / Build (push) Successful in 50s
All checks were successful
Build / Build (push) Successful in 50s
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using JetBrains.Annotations;
|
||||
using PkmnLib.Dynamic.Events;
|
||||
using PkmnLib.Dynamic.Libraries;
|
||||
@@ -251,6 +252,12 @@ public interface IPokemon : IScriptSource, IDeepCloneable
|
||||
/// </remarks>
|
||||
IItem? RemoveHeldItemForBattle();
|
||||
|
||||
/// <summary>
|
||||
/// Tries to steal the held item of the Pokémon. If successful, the item is removed from the Pokémon and returned.
|
||||
/// If the Pokémon does not have a held item, or the item is a form changer, this will return false.
|
||||
/// </summary>
|
||||
bool TryStealHeldItem([NotNullWhen(true)] out IItem? item);
|
||||
|
||||
/// <summary>
|
||||
/// Restores the held item of a Pokémon if it was temporarily removed.
|
||||
/// </summary>
|
||||
@@ -812,6 +819,25 @@ public class PokemonImpl : ScriptSource, IPokemon
|
||||
return _stolenHeldItem = RemoveHeldItem();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool TryStealHeldItem([NotNullWhen(true)] out IItem? item)
|
||||
{
|
||||
if (HeldItem is null || HeldItem.Category == ItemCategory.FormChanger)
|
||||
{
|
||||
item = null;
|
||||
return false;
|
||||
}
|
||||
var prevent = false;
|
||||
this.RunScriptHook(script => script.PreventHeldItemSteal(this, HeldItem, ref prevent));
|
||||
if (prevent)
|
||||
{
|
||||
item = null;
|
||||
return false;
|
||||
}
|
||||
item = RemoveHeldItemForBattle();
|
||||
return item is not null;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void RestoreStolenHeldItem()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user