mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-10-02 07:29:05 -05:00
Extract downlevel check for reuse; clamp edge moves to max raid lvl
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user