From f71140fae5218ee9839ffcd4ec83abfded5124f4 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 1 Jun 2007 02:54:29 +0000 Subject: Added Map and Tile, added Hat class, and fixed up some other minor things git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@17 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemod/AbilityEffect.cpp | 670 +++++++++++++++++++++++++++++++--------------- 1 file changed, 457 insertions(+), 213 deletions(-) (limited to 'pokemod/AbilityEffect.cpp') 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(); } -- cgit