This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
namespace PkmnLib.Plugin.Gen7.Scripts.Side;
|
||||
|
||||
[Script(ScriptCategory.Side, "spikes")]
|
||||
public class SpikesEffect : Script, IScriptOnSwitchIn, IScriptStack
|
||||
public class SpikesEffect : Script, IScriptOnSwitchIn, IScriptStack, IAIInfoScriptExpectedEntryDamage
|
||||
{
|
||||
private int _layers = 1;
|
||||
|
||||
@@ -18,14 +18,7 @@ public class SpikesEffect : Script, IScriptOnSwitchIn, IScriptStack
|
||||
if (pokemon.IsFloating)
|
||||
return;
|
||||
|
||||
var modifier = _layers switch
|
||||
{
|
||||
1 => 1 / 16f,
|
||||
2 => 3 / 16f,
|
||||
3 => 1 / 4f,
|
||||
_ => throw new ArgumentOutOfRangeException(),
|
||||
};
|
||||
var damage = (uint)(pokemon.MaxHealth * modifier);
|
||||
var damage = CalculateDamage(pokemon);
|
||||
|
||||
EventBatchId eventBatch = new();
|
||||
pokemon.Damage(damage, DamageSource.Misc, eventBatch);
|
||||
@@ -37,4 +30,26 @@ public class SpikesEffect : Script, IScriptOnSwitchIn, IScriptStack
|
||||
BatchId = eventBatch,
|
||||
});
|
||||
}
|
||||
|
||||
private uint CalculateDamage(IPokemon pokemon)
|
||||
{
|
||||
var modifier = _layers switch
|
||||
{
|
||||
1 => 1 / 16f,
|
||||
2 => 3 / 16f,
|
||||
3 => 1 / 4f,
|
||||
_ => throw new ArgumentOutOfRangeException(),
|
||||
};
|
||||
var damage = (uint)(pokemon.MaxHealth * modifier);
|
||||
return damage;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void ExpectedEntryDamage(IPokemon pokemon, ref uint damage)
|
||||
{
|
||||
if (pokemon.IsFloating)
|
||||
return;
|
||||
|
||||
damage += CalculateDamage(pokemon);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user