Loads of work on getting data ready.

This commit is contained in:
2021-03-28 20:22:46 +02:00
parent d3262e924d
commit 82ac1061fa
27 changed files with 19683 additions and 12390 deletions

View File

@@ -0,0 +1,26 @@
namespace Gen7 {
[Move effect=2_5HitMove]
class MultiHitMove : PkmnScript{
void ModifyNumberOfHits(MoveTurnChoice@ choice, uint8 &inout numberHits) override {
auto randValue = choice.User.Battle.Random.Get(6);
switch (randValue){
case 0:
case 1:
numberHits = 2;
break;
case 2:
case 3:
numberHits = 3;
break;
case 4:
numberHits = 4;
break;
case 5:
numberHits = 5;
break;
default:
throw("Invalid randValue");
}
}
}
}

View File

@@ -0,0 +1,18 @@
namespace Gen7 {
[Move effect=ChangeAllTargetStats]
class ChangeAllTargetStats : PkmnScript{
int8 _amount;
void OnInitialize(const EffectParameter@[] &in parameters) override{
_amount = int8(parameters[0].AsInt());
}
void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override{
target.ChangeStatBoost(Statistic::Attack, _amount);
target.ChangeStatBoost(Statistic::Defense, _amount);
target.ChangeStatBoost(Statistic::SpecialAttack, _amount);
target.ChangeStatBoost(Statistic::SpecialDefense, _amount);
target.ChangeStatBoost(Statistic::Speed, _amount);
}
}
}

View File

@@ -0,0 +1,14 @@
namespace Gen7 {
[Move effect=ChangeTargetAtt]
class ChangeTargetAttack : PkmnScript{
int8 _amount;
void OnInitialize(const EffectParameter@[] &in parameters) override{
_amount = int8(parameters[0].AsInt());
}
void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override{
target.ChangeStatBoost(Statistic::Attack, _amount);
}
}
}

View File

@@ -1,14 +1,14 @@
namespace Gen7{
namespace Gen7 {
[Move effect=drain]
shared class DrainMove : PkmnScript{
private float _healModifier = 0;
void OnInitialize(const array<EffectParameter@> &in parameters) override{
void OnInitialize(const array<EffectParameter@> &in parameters) override {
_healModifier = parameters[0].AsFloat();
}
void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override{
auto hitData = attack.GetAttackDataForTarget(target).GetHit(hit);
void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override {
auto hitData = attack.GetHitData(target, hit);
auto damage = hitData.Damage;
float mod = _healModifier;
if (attack.User.HasHeldItem("big_root")){
@@ -17,4 +17,4 @@ namespace Gen7{
attack.User.Heal(uint(damage * mod));
}
}
}
}

View File

@@ -0,0 +1,15 @@
namespace Gen7 {
[Move effect=HealEachEndOfTurn]
shared class HealEachEndOfTurn : PkmnScript {
float _amount;
void OnInitialize(const EffectParameter@[] &in parameters) override{
_amount = float(parameters[0].AsFloat()) / 100;
}
void OnSecondaryEffect(ExecutingMove@, Pokemon@ pokemon, uint8) override {
auto script = cast<HealEachEndOfTurnEffect>(pokemon.AddVolatile("HealEachEndOfTurn"));
script.SetBaseHealAmount(_amount);
}
}
}

View File

@@ -0,0 +1,9 @@
namespace Gen7 {
[Move effect=PreventFoeRunning]
shared class PreventFoeRunning : PkmnScript {
void OnSecondaryEffect(ExecutingMove@ move, Pokemon@ target, uint8 hit) override {
auto script = cast<PreventFoeRunningEffect>(move.User.AddVolatile("PreventFoeRunning"));
script.SetLockedOpponent(target);
}
}
}

View File

@@ -0,0 +1,8 @@
namespace Gen7 {
[Move effect=Struggle]
shared class Struggle : PkmnScript {
void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override{
attack.User.Damage(uint(attack.User.MaxHealth / 4), DamageSource::Struggle);
}
}
}

View File

@@ -0,0 +1,18 @@
namespace Gen7 {
[Move effect=SwapWithTarget]
shared class SwapWithTarget : PkmnScript {
void OnSecondaryEffect(ExecutingMove@ move, Pokemon@ target, uint8 hit) override {
auto userSide = move.User.BattleSide;
auto targetSide = target.BattleSide;
if (userSide !is targetSide){
move.GetHitData(target, hit).Fail();
return;
}
auto userIndex = userSide.GetPokemonIndex(move.User);
auto targetIndex = userSide.GetPokemonIndex(target);
if (!userSide.SwapPositions(userIndex, targetIndex)){
move.GetHitData(target, hit).Fail();
}
}
}
}