summaryrefslogtreecommitdiffstats
path: root/pokemod/AbilityEffect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemod/AbilityEffect.cpp')
-rw-r--r--pokemod/AbilityEffect.cpp670
1 files changed, 457 insertions, 213 deletions
diff --git a/pokemod/AbilityEffect.cpp b/pokemod/AbilityEffect.cpp
index 130fafab..bca7d486 100644
--- a/pokemod/AbilityEffect.cpp
+++ b/pokemod/AbilityEffect.cpp
@@ -29,12 +29,12 @@ PokeGen::PokeMod::AbilityEffect::AbilityEffect(const unsigned _id)
{
LogCtor("AbilityEffect", _id);
chance.Set(1, 1);
- effect = -1;
- val1 = -1;
- val2 = -1;
- val3 = -1;
- trigger = -1;
- tval1 = -1;
+ effect = UINT_MAX;
+ val1 = UINT_MAX;
+ val2 = UINT_MAX;
+ val3 = INT_MAX;
+ trigger = UINT_MAX;
+ tval1 = UINT_MAX;
tval2.Set(1, 1);
id = _id;
}
@@ -52,17 +52,359 @@ PokeGen::PokeMod::AbilityEffect::~AbilityEffect()
LogDtor("AbilityEffect", id);
}
-#ifdef POKEMODR
-void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
-#else
void PokeGen::PokeMod::AbilityEffect::Validate()
-#endif
{
- isValid = true;
LogValidateStart("AbilityEffect", id);
- // TODO (Validation#1#): AbilityEffect Validation
+ chance.Reduce();
+ if (AE_END <= effect)
+ {
+ LogVarNotValid("AbilityEffect", id, "effect");
+ isValid = false;
+ }
+ else
+ {
+ switch (effect)
+ {
+ case AE_STATS:
+ if ((BST_END <= val1) || ((val1 == BST_SPECIAL_DEFENSE) && !curPokeMod.IsSpecialSplit()))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ break;
+ case AE_STATUS:
+ if (!curPokeMod.GetStatus(val1))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ break;
+ case AE_ABILITY:
+ if (!curPokeMod.GetAbility(val1))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ break;
+ case AE_ACC_POWER:
+ if (PA_END <= val1)
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ break;
+ case AE_ITEM_EFFECT:
+ if (ABIT_END <= val1)
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ break;
+ case AE_TYPE:
+ if (!curPokeMod.GetType(val1))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ break;
+ case AE_WEATHER:
+ if (W_END_ALL <= val1)
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ isValid = false;
+ }
+ }
+ switch (effect)
+ {
+ case AE_STATS:
+ if (BM_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ isValid = false;
+ }
+ break;
+ case AE_STATUS:
+ case AE_WEATHER:
+ if (CA_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ isValid = false;
+ }
+ break;
+ case AE_ABILITY:
+ if (ABI_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ isValid = false;
+ }
+ break;
+ case AE_TYPE:
+ if (BO_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ isValid = false;
+ }
+ }
+ switch (effect)
+ {
+ case AE_DMG_TO_HP:
+ case AE_PRV_DMG:
+ case AE_AUTO_HEAL:
+ case AE_DEAL_DMG:
+ case AE_WILDS:
+ case AE_ACC_POWER:
+ case AE_TYPE:
+ case AE_FAST_HATCH:
+ if ((val3 < 0) || (100 < val3))
+ {
+ LogVarNotValid("AbilityEffect", id, "val3");
+ isValid = false;
+ }
+ break;
+ case AE_STATS:
+ if ((val3 < -6) || (6 < val3))
+ {
+ LogVarNotValid("AbilityEffect", id, "val3");
+ isValid = false;
+ }
+ }
+ }
+ if (AT_END <= trigger)
+ {
+ LogVarNotValid("AbilityEffect", id, "trigger");
+ isValid = false;
+ }
+ else
+ {
+ switch (trigger)
+ {
+ case AT_WEATHER:
+ if (W_END_ALL <= tval1)
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ isValid = false;
+ }
+ break;
+ case AT_TYPE:
+ if (!curPokeMod.GetType(tval1))
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ isValid = false;
+ }
+ break;
+ case AT_HP_BOUND:
+ if (SI_END <= tval1)
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ isValid = false;
+ }
+ break;
+ case AT_STAT_CHANGE:
+ if ((BST_END <= tval1) || ((tval1 == BST_SPECIAL_DEFENSE) && !curPokeMod.IsSpecialSplit()))
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ isValid = false;
+ }
+ break;
+ case AT_STATUS:
+ if (!curPokeMod.GetStatus(tval1))
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ isValid = false;
+ }
+ }
+ tval2.Reduce();
+ }
+ LogValidateOver("AbilityEffect", id, isValid);
+}
+
+#ifdef PG_DEBUG_WINDOW
+void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
+{
+ LogValidateStart("AbilityEffect", id);
+ chance.Reduce();
+ if (AE_END <= effect)
+ {
+ LogVarNotValid("AbilityEffect", id, "effect");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "effect"));
+ isValid = false;
+ }
+ else
+ {
+ switch (effect)
+ {
+ case AE_STATS:
+ if ((BST_END <= val1) || ((val1 == BST_SPECIAL_DEFENSE) && !curPokeMod.IsSpecialSplit()))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ break;
+ case AE_STATUS:
+ if (!curPokeMod.GetStatus(val1))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ break;
+ case AE_ABILITY:
+ if (!curPokeMod.GetAbility(val1))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ break;
+ case AE_ACC_POWER:
+ if (PA_END <= val1)
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ break;
+ case AE_ITEM_EFFECT:
+ if (ABIT_END <= val1)
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ break;
+ case AE_TYPE:
+ if (!curPokeMod.GetType(val1))
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ break;
+ case AE_WEATHER:
+ if (W_END_ALL <= val1)
+ {
+ LogVarNotValid("AbilityEffect", id, "val1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ isValid = false;
+ }
+ }
+ switch (effect)
+ {
+ case AE_STATS:
+ if (BM_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ isValid = false;
+ }
+ break;
+ case AE_STATUS:
+ case AE_WEATHER:
+ if (CA_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ isValid = false;
+ }
+ break;
+ case AE_ABILITY:
+ if (ABI_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ isValid = false;
+ }
+ break;
+ case AE_TYPE:
+ if (BO_END <= val2)
+ {
+ LogVarNotValid("AbilityEffect", id, "val2");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ isValid = false;
+ }
+ }
+ switch (effect)
+ {
+ case AE_DMG_TO_HP:
+ case AE_PRV_DMG:
+ case AE_AUTO_HEAL:
+ case AE_DEAL_DMG:
+ case AE_WILDS:
+ case AE_ACC_POWER:
+ case AE_TYPE:
+ case AE_FAST_HATCH:
+ if ((val3 < 0) || (100 < val3))
+ {
+ LogVarNotValid("AbilityEffect", id, "val3");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val3"));
+ isValid = false;
+ }
+ break;
+ case AE_STATS:
+ if ((val3 < -6) || (6 < val3))
+ {
+ LogVarNotValid("AbilityEffect", id, "val3");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "val3"));
+ isValid = false;
+ }
+ }
+ }
+ if (AT_END <= trigger)
+ {
+ LogVarNotValid("AbilityEffect", id, "trigger");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "trigger"));
+ isValid = false;
+ }
+ else
+ {
+ switch (trigger)
+ {
+ case AT_WEATHER:
+ if (W_END_ALL <= tval1)
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ isValid = false;
+ }
+ break;
+ case AT_TYPE:
+ if (!curPokeMod.GetType(tval1))
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ isValid = false;
+ }
+ break;
+ case AT_HP_BOUND:
+ if (SI_END <= tval1)
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ isValid = false;
+ }
+ break;
+ case AT_STAT_CHANGE:
+ if ((BST_END <= tval1) || ((tval1 == BST_SPECIAL_DEFENSE) && !curPokeMod.IsSpecialSplit()))
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ isValid = false;
+ }
+ break;
+ case AT_STATUS:
+ if (!curPokeMod.GetStatus(tval1))
+ {
+ LogVarNotValid("AbilityEffect", id, "tVal1");
+ output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ isValid = false;
+ }
+ }
+ tval2.Reduce();
+ }
LogValidateOver("AbilityEffect", id, isValid);
}
+#endif
void PokeGen::PokeMod::AbilityEffect::ImportIni(Ini &ini, const unsigned _id)
{
@@ -81,12 +423,12 @@ void PokeGen::PokeMod::AbilityEffect::ImportIni(Ini &ini, const unsigned _id)
ini.GetValue("chance-n", i, 1);
ini.GetValue("chance-d", j, 1);
chance.Set(i, j);
- ini.GetValue("effect", effect, -1);
- ini.GetValue("val1", val1, -1);
- ini.GetValue("val2", val2, -1);
- ini.GetValue("val3", val3, -1);
- ini.GetValue("trigger", trigger, -1);
- ini.GetValue("tval1", tval1, -1);
+ ini.GetValue("effect", effect);
+ ini.GetValue("val1", val1);
+ ini.GetValue("val2", val2);
+ ini.GetValue("val3", val3);
+ ini.GetValue("trigger", trigger);
+ ini.GetValue("tval1", tval1);
ini.GetValue("tval2-n", i, 1);
ini.GetValue("tval2-d", j, 1);
tval2.Set(i, j);
@@ -137,31 +479,30 @@ void PokeGen::PokeMod::AbilityEffect::SetChanceDenom(const unsigned d)
chance.SetDenom(d);
}
-void PokeGen::PokeMod::AbilityEffect::SetEffect(const int e)
+void PokeGen::PokeMod::AbilityEffect::SetEffect(const unsigned e)
{
- if ((e <= AE_NONE) || (AE_END <= e))
- LogOutOfRange("AbilityEffect", id, "effect", e, "");
- else
+ if (e < AE_END)
{
LogSetVar("AbilityEffect", id, "effect", e);
effect = e;
- val1 = -1;
- val2 = -1;
- val3 = -1;
+ val1 = UINT_MAX;
+ val2 = UINT_MAX;
+ val3 = INT_MAX;
}
+ else
+ LogOutOfRange("AbilityEffect", id, "effect", e, AbilityEffectStr[effect]);
}
void PokeGen::PokeMod::AbilityEffect::SetEffect(const String &e)
{
- LogSetVar("AbilityEffect", id, "effect", e);
SetEffect(FindIn(AE_END, e, AbilityEffectStr));
}
-void PokeGen::PokeMod::AbilityEffect::SetVal1(const int v1)
+void PokeGen::PokeMod::AbilityEffect::SetVal1(const unsigned v1)
{
+ LogSetVar("AbilityEffect", id, "val1", v1);
switch (effect)
{
- case AE_NONE:
case AE_DMG_TO_HP:
case AE_PRV_DMG:
case AE_AUTO_HEAL:
@@ -172,67 +513,46 @@ void PokeGen::PokeMod::AbilityEffect::SetVal1(const int v1)
LogNoUse("AbilityEffect", id, "val1", v1, "effect", AbilityEffectStr[effect]);
break;
case AE_STATS:
- if ((v1 <= BST_NONE) || (BST_END <= v1) || (curPokeMod.IsSpecialSplit() && (v1 == BST_SPECIAL_DEFENSE)))
- LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Stat");
- else
- {
- LogSetVar("AbilityEffect", id, "val1", v1, (curPokeMod.IsSpecialSplit() ? BattleStatRBYStr : BattleStatGSCStr)[v1]);
+ if ((v1 < BST_END) && ((v1 != BST_SPECIAL_DEFENSE) || curPokeMod.IsSpecialSplit()))
val1 = v1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Stat");
break;
case AE_STATUS:
if (curPokeMod.GetStatus(v1))
- {
- LogSetVar("AbilityEffect", id, "val1", v1, curPokeMod.GetStatus(v1)->GetName());
val1 = v1;
- }
else
LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Status");
break;
case AE_ABILITY:
if (curPokeMod.GetAbility(v1))
- {
- LogSetVar("AbilityEffect", id, "val1", v1, curPokeMod.GetAbility(v1)->GetName());
val1 = v1;
- }
else
LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Ability");
break;
case AE_ACC_POWER:
- if ((v1 <= PA_NONE) || (PA_END <= v1))
- LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "AccPower");
- else
- {
- LogSetVar("AbilityEffect", id, "val1", v1, PowerAccStr[v1]);
+ if (v1 < PA_END)
val1 = v1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "AccPower");
break;
case AE_ITEM_EFFECT:
- if ((v1 <= ABIT_NONE) || (ABIT_END <= v1))
- LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "ItemEffect");
- else
- {
- LogSetVar("AbilityEffect", id, "val1", v1, AbilityItemStr[v1]);
+ if (v1 < ABIT_END)
val1 = v1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "ItemEffect");
break;
case AE_TYPE:
if (curPokeMod.GetType(v1))
- {
- LogSetVar("AbilityEffect", id, "val1", v1, curPokeMod.GetType(v1)->GetName());
val1 = v1;
- }
else
LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Type");
break;
case AE_WEATHER:
- if ((v1 <= W_NONE) || (W_END_ALL <= v1))
- LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Weather");
- else
- {
- LogSetVar("AbilityEffect", id, "val1", v1, StatusShowStr[v1]);
+ if (v1 < W_END_ALL)
val1 = v1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val1", v1, "effect", "Weather");
break;
default:
LogNotSet("AbilityEffect", id, "val1", v1, "effect");
@@ -241,10 +561,11 @@ void PokeGen::PokeMod::AbilityEffect::SetVal1(const int v1)
void PokeGen::PokeMod::AbilityEffect::SetVal1(const String &v1)
{
- void *temp;
+ Status *s;
+ Ability *a;
+ Type *t;
switch (effect)
{
- case AE_NONE:
case AE_DMG_TO_HP:
case AE_PRV_DMG:
case AE_AUTO_HEAL:
@@ -258,12 +579,12 @@ void PokeGen::PokeMod::AbilityEffect::SetVal1(const String &v1)
SetVal1(FindIn(BST_END, v1, curPokeMod.IsSpecialSplit() ? BattleStatRBYStr : BattleStatGSCStr));
break;
case AE_STATUS:
- if (temp = curPokeMod.GetStatus(v1))
- SetVal1((Status *)temp->GetId());
+ if (s = curPokeMod.GetStatus(v1))
+ SetVal1(s->GetId());
break;
case AE_ABILITY:
- if (temp = curPokeMod.GetAbility(v1))
- SetVal1((Ability *)temp->GetId());
+ if (a = curPokeMod.GetAbility(v1))
+ SetVal1(a->GetId());
break;
case AE_ACC_POWER:
SetVal1(FindIn(PA_END, v1, PowerAccStr));
@@ -272,8 +593,8 @@ void PokeGen::PokeMod::AbilityEffect::SetVal1(const String &v1)
SetVal1(FindIn(ABIT_END, v1, AbilityItemStr));
break;
case AE_TYPE:
- if (temp = curPokeMod.GetType(v1))
- SetVal1((Type *)temp->GetId());
+ if (t = curPokeMod.GetType(v1))
+ SetVal1(t->GetId());
break;
case AE_WEATHER:
SetVal1(FindIn(W_END_ALL, v1, WeatherStr));
@@ -283,8 +604,9 @@ void PokeGen::PokeMod::AbilityEffect::SetVal1(const String &v1)
}
}
-void PokeGen::PokeMod::AbilityEffect::SetVal2(const int v2)
+void PokeGen::PokeMod::AbilityEffect::SetVal2(const unsigned v2)
{
+ LogSetVar("AbilityEffect", id, "val2", v2);
switch (effect)
{
case AE_DMG_TO_HP:
@@ -299,41 +621,29 @@ void PokeGen::PokeMod::AbilityEffect::SetVal2(const int v2)
LogNoUse("AbilityEffect", id, "val2", v2, "effect", AbilityEffectStr[effect]);
break;
case AE_STATS:
- if ((v2 <= BM_NONE) || (BM_END <= v2))
- LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", "Stat");
- else
- {
- LogSetVar("AbilityEffect", id, "val2", v2, BattleMemberStr[v2]);
+ if (v2 < BM_END)
val2 = v2;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", "Stat");
break;
case AE_STATUS:
case AE_WEATHER:
- if ((v2 <= CA_NONE) || (CA_END <= v2))
- LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", AbilityEffectStr[effect]);
- else
- {
- LogSetVar("AbilityEffect", id, "val2", v2, CauseStr[v2]);
+ if (v2 < CA_END)
val2 = v2;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", AbilityEffectStr[effect]);
break;
case AE_ABILITY:
- if ((v2 <= ABI_NONE) || (ABI_END <= v2))
- LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", "Ability");
- else
- {
- LogSetVar("AbilityEffect", id, "val2", v2, AbilityInteractStr[v2]);
+ if (v2 < ABI_END)
val2 = v2;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", "Ability");
break;
case AE_TYPE:
- if ((v2 <= BO_NONE) || (BO_END <= v2))
- LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", "Type");
- else
- {
- LogSetVar("AbilityEffect", id, "val2", v2, BoostStr[v2]);
+ if (v2 < BO_END)
val2 = v2;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val2", v2, "effect", "Type");
break;
default:
LogNotSet("AbilityEffect", id, "val2", v2, "effect");
@@ -375,6 +685,7 @@ void PokeGen::PokeMod::AbilityEffect::SetVal2(const String &v2)
void PokeGen::PokeMod::AbilityEffect::SetVal3(const int v3)
{
+ LogSetVar("AbilityEffect", id, "val3", v3);
switch (effect)
{
case AE_DMG_TO_HP:
@@ -385,22 +696,16 @@ void PokeGen::PokeMod::AbilityEffect::SetVal3(const int v3)
case AE_ACC_POWER:
case AE_TYPE:
case AE_FAST_HATCH:
- if ((v3 < 0) || (100 < v3))
- LogOutOfRange("AbilityEffect", id, "val3", v3, "effect", AbilityEffectStr[effect]);
- else
- {
- LogSetVar("AbilityEffect", id, "val3", v3);
+ if ((0 <= v3) && (v3 <= 100))
val3 = v3;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val3", v3, "effect", AbilityEffectStr[effect]);
break;
case AE_STATS:
- if ((v3 < -6) || (6 < v3))
- LogOutOfRange("AbilityEffect", id, "val3", v3, "effect", "Stat");
- else
- {
- LogSetVar("AbilityEffect", id, "val3", v3);
+ if ((-6 <= v3) && (v3 <= 6))
val3 = v3;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "val3", v3, "effect", "Stat");
break;
case AE_STATUS:
case AE_ABILITY:
@@ -414,17 +719,17 @@ void PokeGen::PokeMod::AbilityEffect::SetVal3(const int v3)
}
}
-void PokeGen::PokeMod::AbilityEffect::SetTrigger(const int t)
+void PokeGen::PokeMod::AbilityEffect::SetTrigger(const unsigned t)
{
- if ((t <= AT_NONE) || (AT_END <= t))
- LogOutOfRange("AbilityEffect", id, "trigger", t, "");
- else
+ LogSetVar("AbilityEffect", id, "trigger", t);
+ if (t < AT_END)
{
- LogSetVar("AbilityEffect", id, "trigger", t);
trigger = t;
- tval1 = -1;
+ tval1 = UINT_MAX;
tval2.Set(1, 1);
}
+ else
+ LogOutOfRange("AbilityEffect", id, "trigger", t, "");
}
void PokeGen::PokeMod::AbilityEffect::SetTrigger(const String &t)
@@ -432,8 +737,9 @@ void PokeGen::PokeMod::AbilityEffect::SetTrigger(const String &t)
SetTrigger(FindIn(AT_END, t, AbilityTriggerStr));
}
-void PokeGen::PokeMod::AbilityEffect::SetTval1(const int tv1)
+void PokeGen::PokeMod::AbilityEffect::SetTval1(const unsigned tv1)
{
+ LogSetVar("AbilityEffect", id, "tVal1", tv1);
switch (trigger)
{
case AT_ANYTHING:
@@ -442,47 +748,32 @@ void PokeGen::PokeMod::AbilityEffect::SetTval1(const int tv1)
LogNoUse("AbilityEffect", id, "tVal1", tv1, "trigger", AbilityTriggerStr[effect]);
break;
case AT_WEATHER:
- if ((tv1 <= W_NONE) || (W_END_ALL <= tv1))
- LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "Weather");
- else
- {
- LogSetVar("AbilityEffect", id, "tVal1", tv1, WeatherStr[tv1]);
+ if (tv1 < W_END_ALL)
tval1 = tv1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "Weather");
break;
case AT_TYPE:
if (curPokeMod.GetType(tv1))
- {
- LogSetVar("AbilityEffect", id, "tVal1", tv1, curPokeMod.GetType(tv1)->GetName());
tval1 = tv1;
- }
else
LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "Type");
break;
case AT_HP_BOUND:
- if ((tv1 <= SI_NONE) || (SI_END <= tv1))
- LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "HPBound");
- else
- {
- LogSetVar("AbilityEffect", id, "tVal1", tv1, SideStr[tv1]);
+ if (tv1 < SI_END)
tval1 = tv1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "HPBound");
break;
case AT_STAT_CHANGE:
- if ((tv1 <= BST_NONE) || (BST_END <= tv1) || (curPokeMod.IsSpecialSplit() && (tv1 == BST_SPECIAL_DEFENSE)))
- LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "Stat");
- else
- {
- LogSetVar("AbilityEffect", id, "tVal1", tv1, (curPokeMod.IsSpecialSplit() ? BattleStatRBYStr : BattleStatGSCStr)[tv1]);
+ if ((tv1 < BST_END) && ((tv1 != BST_SPECIAL_DEFENSE) || curPokeMod.IsSpecialSplit()))
tval1 = tv1;
- }
+ else
+ LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "Stat");
break;
case AT_STATUS:
if (curPokeMod.GetStatus(tv1))
- {
- LogSetVar("AbilityEffect", id, "tVal1", tv1, curPokeMod.GetStatus(tv1)->GetName());
tval1 = tv1;
- }
else
LogOutOfRange("AbilityEffect", id, "tVal1", tv1, "trigger", "Status");
break;
@@ -493,7 +784,8 @@ void PokeGen::PokeMod::AbilityEffect::SetTval1(const int tv1)
void PokeGen::PokeMod::AbilityEffect::SetTval1(const String &tv1)
{
- void *temp;
+ Type *t;
+ Status *s;
switch (trigger)
{
case AT_ANYTHING:
@@ -505,8 +797,8 @@ void PokeGen::PokeMod::AbilityEffect::SetTval1(const String &tv1)
SetTval1(FindIn(W_END_ALL, tv1, WeatherStr));
break;
case AT_TYPE:
- if (temp = curPokeMod.GetType(tv1))
- SetTval1((Type *)temp->GetId());
+ if (t = curPokeMod.GetType(tv1))
+ SetTval1(t->GetId());
break;
case AT_HP_BOUND:
SetTval1(FindIn(SI_END, tv1, SideStr));
@@ -515,8 +807,8 @@ void PokeGen::PokeMod::AbilityEffect::SetTval1(const String &tv1)
SetTval1(FindIn(BST_END, tv1, curPokeMod.IsSpecialSplit() ? BattleStatRBYStr : BattleStatGSCStr));
break;
case AT_STATUS:
- if (temp = curPokeMod.GetStatus(tv1))
- SetTval1((Status *)temp->GetId());
+ if (s = curPokeMod.GetStatus(tv1))
+ SetTval1(s->GetId());
break;
default:
LogNotSet("AbilityEffect", id, "tVal1", tv1, "trigger");
@@ -625,7 +917,7 @@ unsigned PokeGen::PokeMod::AbilityEffect::GetChanceDenom() const
return chance.GetDenom();
}
-int PokeGen::PokeMod::AbilityEffect::GetEffect() const
+unsigned PokeGen::PokeMod::AbilityEffect::GetEffect() const
{
LogFetchVar("AbilityEffect", id, "effect", effect);
return effect;
@@ -634,13 +926,13 @@ int PokeGen::PokeMod::AbilityEffect::GetEffect() const
PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetEffectString() const
{
LogFetchVar("AbilityEffect", id, "effect string", effect);
- if ((effect <= AE_NONE) || (AE_END <= effect))
+ if (effect < AE_END)
return "";
else
return AbilityEffectStr[effect];
}
-int PokeGen::PokeMod::AbilityEffect::GetVal1() const
+unsigned PokeGen::PokeMod::AbilityEffect::GetVal1() const
{
LogFetchVar("AbilityEffect", id, "val1", val1);
return val1;
@@ -653,7 +945,7 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetVal1String() const
switch (effect)
{
case AE_STATS:
- if ((BST_NONE < val1) && (val1 < BST_END))
+ if (val1 < BST_END)
ret = (curPokeMod.IsSpecialSplit() ? BattleStatRBYStr : BattleStatGSCStr)[val1];
break;
case AE_STATUS:
@@ -665,11 +957,11 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetVal1String() const
ret = curPokeMod.GetAbility(val1)->GetName();
break;
case AE_ACC_POWER:
- if ((PA_NONE < val1) || (val1 < PA_END))
+ if (val1 < PA_END)
ret = PowerAccStr[val1];
break;
case AE_ITEM_EFFECT:
- if ((ABIT_NONE < val1) || (val1 < ABIT_END))
+ if (val1 < ABIT_END)
ret = AbilityItemStr[val1];
break;
case AE_TYPE:
@@ -677,13 +969,13 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetVal1String() const
ret = curPokeMod.GetType(val1)->GetName();
break;
case AE_WEATHER:
- if ((W_NONE < val1) || (val1 < W_END_ALL))
+ if (val1 < W_END_ALL)
ret = StatusShowStr[val1];
}
return ret;
}
-int PokeGen::PokeMod::AbilityEffect::GetVal2() const
+unsigned PokeGen::PokeMod::AbilityEffect::GetVal2() const
{
LogFetchVar("AbilityEffect", id, "val2", val2);
return val2;
@@ -696,20 +988,20 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetVal2String() const
switch (effect)
{
case AE_STATS:
- if ((BM_NONE < val2) && (val2 < BM_END))
+ if (val2 < BM_END)
ret = BattleMemberStr[val2];
break;
case AE_STATUS:
case AE_WEATHER:
- if ((CA_NONE < val2) && (val2 < CA_END))
+ if (val2 < CA_END)
ret = CauseStr[val2];
break;
case AE_ABILITY:
- if ((ABI_NONE < val2) && (val2 < ABI_END))
+ if (val2 < ABI_END)
ret = AbilityInteractStr[val2];
break;
case AE_TYPE:
- if ((BO_NONE < val2) && (val2 < BO_END))
+ if (val2 < BO_END)
ret = BoostStr[val2];
}
return ret;
@@ -721,7 +1013,7 @@ int PokeGen::PokeMod::AbilityEffect::GetVal3() const
return val3;
}
-int PokeGen::PokeMod::AbilityEffect::GetTrigger() const
+unsigned PokeGen::PokeMod::AbilityEffect::GetTrigger() const
{
LogFetchVar("AbilityEffect", id, "trigger", trigger);
return trigger;
@@ -730,13 +1022,13 @@ int PokeGen::PokeMod::AbilityEffect::GetTrigger() const
PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetTriggerString() const
{
LogFetchVar("AbilityEffect", id, "trigger string", trigger);
- if ((trigger <= AT_NONE) || (AT_END <= trigger))
+ if (trigger < AT_END)
return "";
else
return AbilityTriggerStr[trigger];
}
-int PokeGen::PokeMod::AbilityEffect::GetTval1() const
+unsigned PokeGen::PokeMod::AbilityEffect::GetTval1() const
{
LogFetchVar("AbilityEffect", id, "tVal1", tval1);
return tval1;
@@ -749,7 +1041,7 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetTval1String() const
switch (trigger)
{
case AT_WEATHER:
- if ((W_NONE < tval1) && (tval1 < W_END_ALL))
+ if (tval1 < W_END_ALL)
ret = WeatherStr[tval1];
break;
case AT_TYPE:
@@ -757,11 +1049,11 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetTval1String() const
ret = curPokeMod.GetType(tval1)->GetName();
break;
case AT_HP_BOUND:
- if ((SI_NONE < tval1) && (tval1 < SI_END))
+ if (tval1 < SI_END)
ret = SideStr[tval1];
break;
case AT_STAT_CHANGE:
- if ((BST_NONE < tval1) && (tval1 < BST_END))
+ if (tval1 < BST_END)
ret = (curPokeMod.IsSpecialSplit() ? BattleStatRBYStr : BattleStatGSCStr)[tval1];
break;
case AT_STATUS:
@@ -773,66 +1065,18 @@ PokeGen::PokeMod::String PokeGen::PokeMod::AbilityEffect::GetTval1String() const
PokeGen::PokeMod::Frac PokeGen::PokeMod::AbilityEffect::GetTval2() const
{
- switch (trigger)
- {
- case AT_ANYTHING:
- case AT_CONTACT:
- case AT_WEATHER:
- case AT_DMG:
- case AT_TYPE:
- case AT_STAT_CHANGE:
- case AT_STATUS:
- LogNoUse("AbilityEffect", id, "tVal2", 0, "trigger", AbilityTriggerStr[trigger]);
- break;
- case AT_HP_BOUND:
- LogFetchVar("AbilityEffect", id, "tVal2");
- break;
- default:
- LogNotSet("AbilityEffect", id, "tVal2", "trigger", AbilityTriggerStr[trigger]);
- }
+ LogFetchVar("AbilityEffect", id, "tVal2");
return tval2;
}
unsigned PokeGen::PokeMod::AbilityEffect::GetTval2Num() const
{
- switch (trigger)
- {
- case AT_ANYTHING:
- case AT_CONTACT:
- case AT_WEATHER:
- case AT_DMG:
- case AT_TYPE:
- case AT_STAT_CHANGE:
- case AT_STATUS:
- LogNoUse("AbilityEffect", id, "tVal2 numerator", tval2.GetNum(), "trigger", AbilityTriggerStr[trigger]);
- break;
- case AT_HP_BOUND:
- LogFetchVar("AbilityEffect", id, "tVal2", tval2.GetNum());
- return tval2.GetNum();
- default:
- LogNotSet("AbilityEffect", id, "tVal2 numerator", "trigger", AbilityTriggerStr[trigger]);
- }
- return 0;
+ LogFetchVar("AbilityEffect", id, "tVal2 numerator", tval2.GetNum());
+ return tval2.GetNum();
}
unsigned PokeGen::PokeMod::AbilityEffect::GetTval2Denom() const
{
- switch (trigger)
- {
- case AT_ANYTHING:
- case AT_CONTACT:
- case AT_WEATHER:
- case AT_DMG:
- case AT_TYPE:
- case AT_STAT_CHANGE:
- case AT_STATUS:
- LogNoUse("AbilityEffect", id, "tVal2 denominator", tval2.GetDenom(), "trigger", AbilityTriggerStr[trigger]);
- break;
- case AT_HP_BOUND:
- LogFetchVar("AbilityEffect", id, "tVal2", tval2.GetDenom());
- return tval2.GetDenom();
- default:
- LogNotSet("AbilityEffect", id, "tVal2 denominator", "trigger", AbilityTriggerStr[trigger]);
- }
- return 0;
+ LogFetchVar("AbilityEffect", id, "tVal2 denominator", tval2.GetDenom());
+ return tval2.GetDenom();
}