Extract downlevel check for reuse; clamp edge moves to max raid lvl

This commit is contained in:
Kurt
2020-05-31 13:28:14 -07:00
parent 3fcb29e68a
commit 5c0d6d0f31
2 changed files with 25 additions and 14 deletions

View File

@@ -52,22 +52,33 @@ protected override bool IsMatchLevel(PKM pkm, int lvl)
if (rank > MaxRank)
return false;
if (rank < MinRank) // down-leveled
{
if (metLevel % 5 != 0)
return false;
// shared nests can be down-leveled to any
if (pkm.Met_Location == SharedNest)
return met >= 20;
// native down-levels: only allow 1 rank down (1 badge 2star -> 25), (3badge 3star -> 35)
return ((MinRank <= 1 && 1 <= MaxRank && met == 25)
|| (MinRank <= 2 && 2 <= MaxRank && met == 35)) && !pkm.IsShiny;
}
return IsDownLeveled(pkm, metLevel, met);
return metLevel % 10 <= 5;
}
public bool IsDownLeveled(PKM pkm)
{
var met = pkm.Met_Level;
var metLevel = met - 15;
var rank = ((uint)metLevel) / 10;
return rank < MinRank && IsDownLeveled(pkm, metLevel, met);
}
private bool IsDownLeveled(PKM pkm, int metLevel, int met)
{
if (metLevel % 5 != 0)
return false;
// shared nests can be down-leveled to any
if (pkm.Met_Location == SharedNest)
return met >= 20;
// native down-levels: only allow 1 rank down (1 badge 2star -> 25), (3badge 3star -> 35)
return ((MinRank <= 1 && 1 <= MaxRank && met == 25)
|| (MinRank <= 2 && 2 <= MaxRank && met == 35)) && !pkm.IsShiny;
}
protected override bool IsMatchLocation(PKM pkm)
{
var loc = pkm.Met_Location;

View File

@@ -33,8 +33,8 @@ private static void AddEdgeCaseMoves(List<int> moves, IEncounterable encounter,
{
switch (encounter)
{
case EncounterStatic8N r when !EncounterStatic8N.IsHighestLevelTier(pkm.Met_Level) && pkm.Met_Level % 5 == 0: // Downleveled Raid can happen for shared raids and self-hosted raids.
moves.AddRange(MoveLevelUp.GetMovesLevelUp(pkm, r.Species, -1, -1, 60, r.Form, GameVersion.SW, false, 8));
case EncounterStatic8N r when !EncounterStatic8N.IsHighestLevelTier(pkm.Met_Level) && r.IsDownLeveled(pkm): // Downleveled Raid can happen for shared raids and self-hosted raids.
moves.AddRange(MoveLevelUp.GetMovesLevelUp(pkm, r.Species, -1, -1, r.LevelMax, r.Form, GameVersion.SW, false, 8));
break;
}
}