Regarding the above error, it has existed at least since v5 of Essentials. I got it back then, reported it, and still receive bug reports about it to this day, but have yet to be able to reliably reproduce it. Super frustrating. I'll post the error message again next time I'm able to.
Here's a few, more concrete things for you, all tested in v14 unmodified:
1- Hustle AI is broken for high level trainers. To fix, replace:
Code:
if skill>=PBTrainerAI.highSkill
accuracy*=0.8 if attacker.hasWorkingAbility(:HUSTLE) &&
move.basedamage>0 &&
pbIsPhysical?(pbType(move.type,attacker,opponent))
end
with
Code:
if skill>=PBTrainerAI.highSkill
accuracy*=0.8 if attacker.hasWorkingAbility(:HUSTLE) &&
move.basedamage>0 &&
move.pbIsPhysical?(type)
end
2- The physical handler for Foul Play in _Move is mistyped. Replace:
Code:
if @function==0x121 # Foul Play
atk=opponent.atk
atkstage=opponent.stages[PBStats::ATTACK]+6
end
with
Code:
if @function==0x121 # Foul Play
atk=opponent.attack
atkstage=opponent.stages[PBStats::ATTACK]+6
end
3- Sheer Force has an issue in _AI. Replace:
Code:
# Sheer Force
if skill>=PBTrainerAI.highSkill
if attacker.hasWorkingAbility(:SHEERFORCE) && @addlEffect>0
basedamage=(basedamage*1.3).round
end
end
with
Code:
# Sheer Force
if skill>=PBTrainerAI.highSkill
if attacker.hasWorkingAbility(:SHEERFORCE) && move.addlEffect > 0
basedamage=(basedamage*1.3).round
end
end
4- Many, but not all of the 0x2[n] function codes in AI are broken (these are for moves that increase more than one stat.) To fix, check this section in each of these functions:
Code:
if hasphysicalattack
avg+=20
elsif skill>=PBTrainerAI.highSkill
avg-=90
end
Change those 'avg's to 'score' like so:
Code:
if hasphysicalattack
score+=20
elsif skill>=PBTrainerAI.highSkill
score-=90
end
That will need to be done for several different cases.
5- Life Orb and Shell Bell don't have the 'damage' variable passed onto them properly, and thereby fail. I don't have such a neat fix for this; I have somewhat of a work around by moving the code for those items to after Destiny Bond's processing in _Battler, but I'm not sure if this is an ideal solution, especially regarding moves that hit multiple targets. Thoughts? It might be easier to reinstate a variable to pass damage back into the current placement of this code, but I haven't done that yet.
6- Fury Cutter AI causes opponent inaction. Undefined method on the bitshift. I had to just remove the line because I'm not sure of the proper solution here, unfortunately.
7- Looks like Battlers/024.png is broken? Maybe my download/extract failed, but it's 0 bytes for me.
8- Protect occasionally fails even if it wasn't the last-used move. To reproduce, use protect with any Pokemon, use any other move, and then use protect again. It may fail. Keep in mind that it still has a 50% chance to succeed, so try this a few times to be sure. I only just found this, so I haven't got a solution offhand.
EDIT:
9- Rest is broken with a 3 for 2 argument error: Remove one of the trues on pbCanSleep? here:
Code:
################################################################################
# Heals user to full HP. User falls asleep for 2 more rounds.
################################################################################
class PokeBattle_Move_0D9 < PokeBattle_Move
def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
if !attacker.pbCanSleep?(true,true,true)