• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Script: Generation 9 Resource Pack [v21.1]

71
Posts
6
Years
    • Seen today
    I've installed this plugin and was testing everything starting by abilities, I've encountered some problems:
    >Anger Shell : It wasn't proccing at 50%, just below 50%.
    :It used droppedbelowhalfhp, which I think is the function for Emergency Retreat, it's not appropriate for this ability.

    >Commander : When Tatsugiri faints, then Dondozo faints, it still says Tatsugiri came out of Dondozo's mouth. It correctly says Tatsugiri comes out of its mouth when Tatsugiri faints but it even says "Pokemon" came out of its mouth after Tatsugiri faints and is replaced with a non tatsugiri pokemon, Dondonzo also remains "trapped" after tatsugiri fainted.
    : I think this can't be done with just commander effect, on my end I fixed using a commanderUsed attribute for the battlers, and setting dondozo's commander to nil after tatsugiri fainted while keeping commanderUsed true until it finally faints.

    >Cud Chew : It doesn't work on flung berries.

    >Electromorphosis : According to bulbapedia the message should also be displayed even if the attack faints, I don't agree with it, but I thought I'd also mention it.

    >Lingering Aroma : The message is spammed.
    : next if [:MUMMY, :LINGERINGAROMA].include?(user.ability) should be just "ability". Also This works just fine as a copy of mummy without a single change.

    >Protosynthesis : It lets a Protosynthesis pokemon active the ability when there's sun / harsh sun and a cloud nine / air lock pokemon in the field.
    : I fixed it on my end by adding another check after for the field after the first one, field_check = [:Sun, :HarshSun].include?(battle.pbWeather) if ability == :PROTOSYNTHESIS. pbWeather here checks for cloud nine and air lock.

    >Supreme Overlord : A team mate dying to a damage move will count for 4 deaths instead of 1.
    : Just need to add a "return if @Fainted" before paldea_pbFaint(showmessage), this happens because pbFaint is called in 4 different places when processing a move, the original pbFaint function stopped it with this strategic return, but the alias lacks it.

    >Sword of Ruin: Doesn't boost physical attacks.
    : I have no idea why it doesn't work, the code for it is more complex than the rest of it and at the end of the day I just can't figure it out. I tested Beads of Ruin earlier today and it seemed fine so this is just weird to me.
    Edit: It seems the Beads of Ruin test earlier was wrong, maybe it was a matter of a high roll vs low roll, but after testing again, neither of the treasure of ruins abilities are working for me, the message shows but the effect doesn't work.

    There's also some other things to take into account:
    Bulbapedia says overworld weather should make Orichalcum Pulse fail, I think that's stupid and I confirmed it doesn't work that way (which I actually agree with so I didn't count as a bug).
    Protosynthesis and Quark Drive page in bulbapedia isn't clear enough but the text makes it seem like it should be an ungainable and unstoppable ability.
    Bulbapedia isn't also clear on these aspects regarding Orichalcum Pulse and Hadron Engine, it just says skill swap should fail and it doesn't.

    I'd also like to point out that my project is already pretty modded but I hadn't made any changes to the battle part yet, still you never know, there might be some things that I messed up on my end.
     
    Last edited:
    1,407
    Posts
    10
    Years
    • Online now
    I've installed this plugin and was testing everything starting by abilities, I've encountered some problems:
    >Anger Shell : It wasn't proccing at 50%, just below 50%.
    :It used droppedbelowhalfhp, which I think is the function for Emergency Retreat, it's not appropriate for this ability.
    The ability is modeled after Berserk, which functions nearly identical to Anger Shell except that Anger Shell triggers multiple stat changes rather than just Sp.Atk. That's why it uses droppedBelowHalfHP, because Berserk uses droppedBelowHalfHP. This is also why it triggers at 49% or lower, rather than 50% or lower, since that's how Berserk works (must be lower than 50% rather than exactly 50% or lower). The difference is so minor that it's not really worth reinventing the wheel for it.

    >Commander : When Tatsugiri faints, then Dondozo faints, it still says Tatsugiri came out of Dondozo's mouth. It correctly says Tatsugiri comes out of its mouth when Tatsugiri faints but it even says "Pokemon" came out of its mouth after Tatsugiri faints and is replaced with a non tatsugiri pokemon, Dondonzo also remains "trapped" after tatsugiri fainted.
    : I think this can't be done with just commander effect, on my end I fixed using a commanderUsed attribute for the battlers, and setting dondozo's commander to nil after tatsugiri fainted while keeping commanderUsed true until it finally faints.
    Dondozo is supposed to remain trapped even after Tatsugiri faints. The "mouth" message is easily fixed, though. It just needs to check if the Pokemon in the slot where Tatsugiri used to be has the Commander effect or not.

    >Cud Chew : It doesn't work on flung berries.
    I'm not surprised. The ability is surprisingly one of the most janky and frustrating ones to implement.

    >Electromorphosis : According to bulbapedia the message should also be displayed even if the attack faints, I don't agree with it, but I thought I'd also mention it.
    Yeah, we ignored that too. A lot of liberties were taken in terms of message displays in cases where it felt like the main series actually does things worse. Anger Shell is another example of this. In SV, the ability splash is displayed redundantly for each stat change. In this plugin, the ability splash only displays once.

    >Lingering Aroma : The message is spammed.
    : next if [:MUMMY, :LINGERINGAROMA].include?(user.ability) should be just "ability". Also This works just fine as a copy of mummy without a single change.
    It's supposed to be user.ability_id, actually. It also can't work as an identical copy to Mummy (as it is in base Essentials) since it needs to account for the Ability Shield, which is why Mummy in general is also overwritten by the plugin.

    >Protosynthesis : It lets a Protosynthesis pokemon active the ability when there's sun / harsh sun and a cloud nine / air lock pokemon in the field.
    : I fixed it on my end by adding another check after for the field after the first one, field_check = [:Sun, :HarshSun].include?(battle.pbWeather) if ability == :PROTOSYNTHESIS. pbWeather here checks for cloud nine and air lock.
    >Supreme Overlord : A team mate dying to a damage move will count for 4 deaths instead of 1.
    : Just need to add a "return if @Fainted" before paldea_pbFaint(showmessage), this happens because pbFaint is called in 4 different places when processing a move, the original pbFaint function stopped it with this strategic return, but the alias lacks it.
    Yeah, these are oversights.

    >Sword of Ruin: Doesn't boost physical attacks.
    : I have no idea why it doesn't work, the code for it is more complex than the rest of it and at the end of the day I just can't figure it out. I tested Beads of Ruin earlier today and it seemed fine so this is just weird to me.
    Edit: It seems the Beads of Ruin test earlier was wrong, maybe it was a matter of a high roll vs low roll, but after testing again, neither of the treasure of ruins abilities are working for me, the message shows but the effect doesn't work.
    These abilities are annoyingly complicated, it doesn't shock me that they don't work. I'd honestly be more surprised if they did work.

    There's also some other things to take into account:
    Bulbapedia says overworld weather should make Orichalcum Pulse fail, I think that's stupid and I confirmed it doesn't work that way (which I actually agree with so I didn't count as a bug).
    Protosynthesis and Quark Drive page in bulbapedia isn't clear enough but the text makes it seem like it should be an ungainable and unstoppable ability.
    Bulbapedia isn't also clear on these aspects regarding Orichalcum Pulse and Hadron Engine, it just says skill swap should fail and it doesn't.

    I'd also like to point out that my project is already pretty modded but I hadn't made any changes to the battle part yet, still you never know, there might be some things that I messed up on my end.
    Overworld weather works a lot differently in Gen 9 in general due to it being an open world game, so it's best to ignore it in general.
    The flags for abilities have already been datamined here. In this doc, Protosynthesis/Quark Drive have the same exact flags as the Illusion ability, which is listed as an ungainable ability in Essentials (but not unstoppable). This doc doesn't show Orichalcum Pulse/Hadron Engine as having any special flags, so that's why it's not immune to Skill Swap in the plugin.
     
    71
    Posts
    6
    Years
    • Seen today
    Alright, I think making changes like the Electromorphosis one are welcome changes so I'll ignore similar changes from now on. I wasn't sure if Dondozo should be trapped but if yes then the message is the only thing and it's a harmless thing.
    Cud Chew if I'm being honest seems "skippable", fling is already something that's almost never used, and I can already see some problems with its implementation like flinging a berry at a mon that gets low and uses its berry, it doesn't seem worth it.
    This datamine doc will help me test the rest of things, going only by bulbapedia is hard, sometimes they aren't very clear.
    I have to revisit Lingering Aroma, I may have made an oopsie when trying to get rid of the spam message so thanks for that.
    As for the treasures of ruin, after testing it a bit more it seems the problem is the multipliers aren't being applied, the logic seems sound but printing the multiplier before and after the code displayed 1.0 in both cases. I'll look into it a bit more later, I feel like it should work.

    edit: In case of lingering aroma, I expressed myself poorly, I kept the alias function but had changed this:
    Ruby:
        next if user.ability == ability #new
        #next if [:MUMMY, :LINGERINGAROMA].include?(user.ability)
    The previous code has a problem, the array is holding ability symbolic ids and user.ability is an ability object so it was never true, it can be used by changing it to
    Ruby:
     next if [:MUMMY, :LINGERINGAROMA].include?(user.ability.id)
    However I suspect this will make it so a pokemon with mummy can't trigger lingeringaroma, it has no practical effects tho.
     
    Last edited:
    24
    Posts
    1
    Years
    • Seen yesterday
    Alright, I think making changes like the Electromorphosis one are welcome changes so I'll ignore similar changes from now on. I wasn't sure if Dondozo should be trapped but if yes then the message is the only thing and it's a harmless thing.
    Cud Chew if I'm being honest seems "skippable", fling is already something that's almost never used, and I can already see some problems with its implementation like flinging a berry at a mon that gets low and uses its berry, it doesn't seem worth it.
    This datamine doc will help me test the rest of things, going only by bulbapedia is hard, sometimes they aren't very clear.
    I have to revisit Lingering Aroma, I may have made an oopsie when trying to get rid of the spam message so thanks for that.
    As for the treasures of ruin, after testing it a bit more it seems the problem is the multipliers aren't being applied, the logic seems sound but printing the multiplier before and after the code displayed 1.0 in both cases. I'll look into it a bit more later, I feel like it should work.

    edit: In case of lingering aroma, I expressed myself poorly, I kept the alias function but had changed this:
    Ruby:
        next if user.ability == ability #new
        #next if [:MUMMY, :LINGERINGAROMA].include?(user.ability)
    The previous code has a problem, the array is holding ability symbolic ids and user.ability is an ability object so it was never true, it can be used by changing it to
    Ruby:
     next if [:MUMMY, :LINGERINGAROMA].include?(user.ability.id)
    However I suspect this will make it so a pokemon with mummy can't trigger lingeringaroma, it has no practical effects tho.
    According to wiki it is impossible to make a Pokémon with Mummy trigger Lingering Aroma and vice versa. So this may be intended.
     
    71
    Posts
    6
    Years
    • Seen today
    Well, it does make sense. It would be pretty pointless, it was just a matter of adding the id then.

    As for treasures of ruin, I think I've got them to work:
    Ruby:
        #attempt at treasures of ruin:
        [:TABLETSOFRUIN, :SWORDOFRUIN, :VESSELOFRUIN, :BEADSOFRUIN].each_with_index do |abil, i|
          next if [email protected](abil)
          next if target.hasActiveAbility?(abil) && (i.odd?)
          next if user.hasActiveAbility?(abil) && (i.even?)
          physical_move = (i < 2)
          physical_move = !physical_move if i.odd? && @battle.field.effects[PBEffects::WonderRoom] > 0
          mult = (i.even?) ? :attack_multiplier : :defense_multiplier
          if physical_move
            multipliers[mult] *= 0.75 if physicalMove?
          else
            multipliers[mult] *= 0.75 if specialMove?
          end
        end

    This was too complex, I had to start by dumbing down the code a bit, I added a skip if there's no ability, or if the ability affects the targets defenses and the target also has the ability, or if the ability affects the users attacks and user has ability. (I am assuming the pokemon that has the ability should be immune to the ability of another pokemon with the same ability)
    I didn't understand how that category part was working so I did things a bit different, and I think before it wasn't affecting the real multiplier, just a variable that held its value.
    As far as tests goes, they seem to be working, I was looking at damage and printing the actual multipliers to double check and it seemed fine.
    Honestly, this was a brave approach, I would have 100% done 4 separate abilities if I had to start from scratch.


    For the sake of avoiding spam I'll use this post to update with stuff I catch while I'm testing the rest of the abilities, it's almost done anyway excluding some abilities that I'll test later after installing more plugins.

    >Wind Power (Probably Wind Rider too) : If the player had a pokemon with Wind Power and the enemy used Tailwind, the enemy's tailwind would trigger Wind Power.
    : In the tailwind code there was this @battle.allSameSideBattlers(user.index).each do |b|, but without the user.index part, without it defaults to 0, just had to add it.
    : I also noticed Wind Rider doesn't have a message for immunity, I don't know if there should be one, either way it's functionally perfect.

    >Hospitality : Its effect isn't negated by heal block.
    : I just added next if battler.allAllies.none? { |b| b.canHeal? } under the check for the allies hp, but I'd also point out that heal block was removed in gen8 apparently. Plus I don't know if there's a precedent for an ability that heals users upon entering.

    Edit2: Finished all non tera abilities, that's all. I'll start checking moves later.

    Edit3: While testing moves I found out that Toxic Chain ability splash was triggering when pecharunt knocked down an enemy, it was just that fast blink, added next if target.fainted? in its ability at the beginning and it solved it. I got lucky for testing with Pecharunt, I don't know if there's other abilities similar to this that need to be checked.
     
    Last edited:
    1,407
    Posts
    10
    Years
    • Online now
    >Wind Power (Probably Wind Rider too) : If the player had a pokemon with Wind Power and the enemy used Tailwind, the enemy's tailwind would trigger Wind Power.
    : In the tailwind code there was this @battle.allSameSideBattlers(user.index).each do |b|, but without the user.index part, without it defaults to 0, just had to add it.
    : I also noticed Wind Rider doesn't have a message for immunity, I don't know if there should be one, either way it's functionally perfect.
    Wind Power is definitely an oversight. As far as Wind Rider, the immunity message only displays if the battler is otherwise incapable of having its Attack stat raised by the ability.

    >Hospitality : Its effect isn't negated by heal block.
    : I just added next if battler.allAllies.none? { |b| b.canHeal? } under the check for the allies hp, but I'd also point out that heal block was removed in gen8 apparently. Plus I don't know if there's a precedent for an ability that heals users upon entering.
    Yeah, Heal Block was definitely overlooked due to it not existing in the current gens. Heal Block does negate other healing abilities though such as Water Absorb, so it should apply here.

    As far as Cud Chew and the Ruin abilities, those are things that'll probably require some time to figure out and test properly.
     
    71
    Posts
    6
    Years
    • Seen today
    I added another edit in previous post, it was regarding Toxic Chain, just saying for visibility since it was a small edit.
    As for the last dlc moves: (going from last to first this time)

    >Malignant Chain: Bulbapedia says Mirror Move shouldn't work, serebii says it does, since you had a datamine doc for abilities I'll just assume bulbapedia is wrong on this one.

    >Dragon Cheer: It has 10 PP but both bulbapedia and serebii have it as 15.

    >Blood Moon: This one has more than one problem, the first test I did was against a faster encorer, for replicability this is what I did. Turn 1: Bloodmoon vs Encore Blissey, Encore is faster so it fails, Blood Moon hits, turn 2 I select another move, blissey is faster so it encores my mon but instead of using blood moon it used the move I selected instead.
    Additionally locking a mon to bloodmoon with choice items won't make it use struggle on the second turn.
    In v20.1 I've had similar problems with tricking choice items and some times they weren't even fully replicable so I can't exactly say for sure this is a problem with the move and not a problem with base essentials.

    >Psyblade: I don't understand why it has an effect chance of 10, it has no secondary effect, this shouldn't be here. Also the electric terrain part doesn't work because the code doesn't have the same string as the function code, in calcdamagemultipliers it checks for "IncreasePowerWhileElectricTerrain", its function code is "IncreasePowerInElectricTerrain".


    Blood Moon is the only serious issue I've found, I think pre gen9 there was no similar abilities so I have a feeling there's more to this than meets the eye.
    Upon testing the faster encorer without blood moon involved the results were different, it rightfully locked the pokemon to the first move it used.

    Edit: Gonna update here from now on for the rest of the moves:

    >Tidy Up : Error in PBS, it should be Target = User, works fine after change.

    >Ice Spinner : According to bulbapedia it shouldn't remove terrain if the user dies to rocky helmet / life orb recoil etc, however it does remove terrain after user faints.
    :Only needs a return if user.fainted? on the move function to stop this effect.
    This has a video where this interaction is seen, so it seems bulbapedia is right this time.

    >Fillet Away : Error in PBS, the function code there doesn't exist, it should be RaiseUserAtkSpAtkSpeed2LoseHalfOfTotalHP (I'm letting the naming aside, what matters is either pbs or code needs to be changed to match the other)

    >Double Shock : I don't have access to the data dump, so if you can check, bulbapedia says it doesn't make contact, but literally every other site says it does. I'm 99% sure this is right, but if you can check just in case :P

    >Chilly reception : It's the same as Fillet Away, the function code in the scripts and in the pbs is mismatched.

    >Comeuppance : This is one of the nasty moves, it's more complex than it seems. It has two wrong things:
    1. If user has a substitute and uses comeuppance, it will damage the target, according to bulbapedia it should fail.
    2. If user is in a doubles or more battle, and is hit by 2 targets, but the last target faints to whatever recoil or rocky helmet, comeuppance will fail saying there's no target instead of targeting the previous pokemon to hit the user.
    I think the substitute part should be easy the target part not so much.
     
    Last edited:
    1,407
    Posts
    10
    Years
    • Online now
    Edit3: While testing moves I found out that Toxic Chain ability splash was triggering when pecharunt knocked down an enemy, it was just that fast blink, added next if target.fainted? in its ability at the beginning and it solved it. I got lucky for testing with Pecharunt, I don't know if there's other abilities similar to this that need to be checked.
    If that's the case, then the same issue must also be present with the Poison Touch ability in base Essentials. Because Toxic Chain is literally just a carbon copy of that ability besides not requiring contact moves.

    >Malignant Chain: Bulbapedia says Mirror Move shouldn't work, serebii says it does, since you had a datamine doc for abilities I'll just assume bulbapedia is wrong on this one.
    There was a move data dump with all the move flags we were working off of, but it's buried in a Smogon thread somewhere and I can't be bothered to find it anymore. I have to imagine we pulled the data from there, but it could just as easily have been a mistake. I'll try to dig it up again at some point.

    EDIT: I found the move data dump here. It confirms that Malignant Chain does in fact have the Mirror Move flag.

    >Dragon Cheer: It has 10 PP but both bulbapedia and serebii have it as 15.
    Yeah I checked in-game and it's 15.

    >Blood Moon: This one has more than one problem, the first test I did was against a faster encorer, for replicability this is what I did. Turn 1: Bloodmoon vs Encore Blissey, Encore is faster so it fails, Blood Moon hits, turn 2 I select another move, blissey is faster so it encores my mon but instead of using blood moon it used the move I selected instead.
    Additionally locking a mon to bloodmoon with choice items won't make it use struggle on the second turn.
    In v20.1 I've had similar problems with tricking choice items and some times they weren't even fully replicable so I can't exactly say for sure this is a problem with the move and not a problem with base essentials.
    Idk either, that's something that requires more thorough testing and comparing to how the move actually works in-game.

    >Psyblade: I don't understand why it has an effect chance of 10, it has no secondary effect, this shouldn't be here. Also the electric terrain part doesn't work because the code doesn't have the same string as the function code, in calcdamagemultipliers it checks for "IncreasePowerWhileElectricTerrain", its function code is "IncreasePowerInElectricTerrain".
    The effect chance may have been given at some point due to thinking it should be affected by Sheer Force, but I forget. I'd have to find that move dump again to confirm. Even if that's the case though, the damage functions would still need to be edited to reflect this. In either case, the function code in the scripts is definitely incorrect.

    EDIT: The move data dump confirms this move is not affected by Sheer Force, so the effect chance should be removed.
     
    Last edited:
    71
    Posts
    6
    Years
    • Seen today
    If that's the case, then the same issue must also be present with the Poison Touch ability in base Essentials. Because Toxic Chain is literally just a carbon copy of that ability besides not requiring contact moves.
    I confirm that's the case, I didn't test it in a clean essentials, but this problem happens under the same conditions, if the ability was going to proc (30%) it will blink ability bar.
     
    1,407
    Posts
    10
    Years
    • Online now
    I confirm that's the case, I didn't test it in a clean essentials, but this problem happens under the same conditions, if the ability was going to proc (30%) it will blink ability bar.
    Yeah, I reported the bug to Maruno.
     
    71
    Posts
    6
    Years
    • Seen today
    Yeah, I reported the bug to Maruno.
    I saw your post, you really did some digging on that encore part, this is one thing that does NOT seem easy / simple to fix :\

    In the meantime I've finished testing every move excluding tera-related ones except for the PLA moves which I'll either do later or tomorrow. I edited my previous post with everything I've found but only Blood Moon / Gigaton have significant problems, Comeuppance too but half of the problem is easily solvable and I think if 100 people played for 100 hours no one would find the second bug of comeuppance. (and this is assuming bulbapedia is correct)
    On a final note, Salt Cure is fine but I found something weird in its move class, it has both def pbEffectAgainstTarget(user, target) and def pbAdditionalEffect(user, target)
    The first one doesn't seem to be called at all. I don't know if it's an artifact or it's doing something I don't understand, but it's harmless. The comments in there are also mixed (the 1/8 and 1/4 part) but the move is working flawlessly so it doesn't matter.
     
    1,407
    Posts
    10
    Years
    • Online now
    >Tidy Up : Error in PBS, it should be Target = User, works fine after change.

    >Fillet Away : Error in PBS, the function code there doesn't exist, it should be RaiseUserAtkSpAtkSpeed2LoseHalfOfTotalHP (I'm letting the naming aside, what matters is either pbs or code needs to be changed to match the other)

    >Chilly reception : It's the same as Fillet Away, the function code in the scripts and in the pbs is mismatched.

    >Ice Spinner : According to bulbapedia it shouldn't remove terrain if the user dies to rocky helmet / life orb recoil etc, however it does remove terrain after user faints.
    :Only needs a return if user.fainted? on the move function to stop this effect.
    Easy enough.

    >Double Shock : I don't have access to the data dump, so if you can check, bulbapedia says it doesn't make contact, but literally every other site says it does. I'm 99% sure this is right, but if you can check just in case :P
    It does indeed make contact.

    >Comeuppance : This is one of the nasty moves, it's more complex than it seems. It has two wrong things:
    1. If user has a substitute and uses comeuppance, it will damage the target, according to bulbapedia it should fail.
    2. If user is in a doubles or more battle, and is hit by 2 targets, but the last target faints to whatever recoil or rocky helmet, comeuppance will fail saying there's no target instead of targeting the previous pokemon to hit the user.
    I think the substitute part should be easy the target part not so much.
    Comeuppance is implemented in the plugin as an exact copy of the move Metal Burst that exists in base Essentials. So any issues with Comeuppance are Essentials issues, and not a plugin issue. Unless Comeuppance has some kind of unique properties that sets it apart from Metal Burst that I'm not aware of, I'm just going to assume they're the exact same move, and thus chalk it up as an Essentials bug.

    On a final note, Salt Cure is fine but I found something weird in its move class, it has both def pbEffectAgainstTarget(user, target) and def pbAdditionalEffect(user, target)
    The first one doesn't seem to be called at all. I don't know if it's an artifact or it's doing something I don't understand, but it's harmless.
    It's there so that the StartSaltCureTarget function code can be given to both damage dealing moves and status moves and apply the same effect. Basically, it's there to let people design custom moves using this function without having to do any coding. As far as the plugin goes though, yeah, it's unnecessary.

    I edited my previous post with everything I've found but only Blood Moon / Gigaton have significant problems
    This is the only one that is going to be a challenge to fix. I have some ideas, but I don't think it'll be easy without rewriting stuff I'd rather not have to rewrite.
     
    71
    Posts
    6
    Years
    • Seen today
    I haven't tested Metal Burst in a clean essentials, but its description matches that of Comeuppance, so there's a high chance this is also present in native essentials.
    The substitute part is trivial but the part about the targets is tricky, I was relieved when I ctrl shift F lastFoeAttacker and saw a limited number of mentions that means it should be possible to change it with minimal risk of messing everything up, still I didn't look much into it so I'm guessing it does as the name says and registers + overwrites the battlers that attack the user, the problem is this only holds one battler not multiple, which is incompatible with how metal burst / comeuppance should work. To be honest I'd just ignore this mechanic and chalk it up to common sense like, the user can only focus on one foe.

    I've finished testing the moves here's what I found today:

    >Bleakwind Storm / Wildbolt Storm / Sandsear Storm : This had been reported before so it's nothing new, but adding the rain check for accuracy is trivial as well.

    >Bitter Malice: It had an effect chance of 30 but both bulbapedia and serebii state it's 100, it also fits with the moves from PLA that all have similar effects. I think it should be 100.

    >Dire Claw : It has the HighCriticalHitRate flag but I think it shouldn't have it. According to bulbapedia and serebii the move in gen 9 doesn't have an increased critical rate, only in PLA.

    Now I saved this for last because I don't understand it.
    In my tests Take Heart only cured the user but didn't raise any stats. This is confusing to me, the move is properly set in pbs and to my knowledge the function code is correct, it should work.
    I noticed it had a small effect on the top left of my screen when I used it which is generally used when there's no animation and the move is iirc field effect, but it makes no sense, the target is the user. Can you test this on your end?


    edit:
    For the sake of completion I also tested the custom evos, all good except for Kingambit one, it says undefined method init_crest_count, I think this was a typo and it was meant to be init_evo_crest_count(item) instead.
    The Pokémon evolved normally and the error came afterwards.

    In terms of items, for the most part are copies of existing items, evo stones, change forms items, etc so I'll just test these real quick:
    Booster Energy: already tested previously, seemed fine

    Ability Shield: This had 2 typos and it crashed when facing Neutralizinng Gas Pokemon:
    Ruby:
          if b.hasActiveItem?(:ABILITYSHIELD)
            #itemname = GameData::Item.get(target.item).name
            itemname = GameData::Item.get(b.item).name
            #@battle.pbDisplay(_INTL("{1}'s Ability is protected by the effects of its {2}!",b.pbThis,itemname))
            battle.pbDisplay(_INTL("{1}'s Ability is protected by the effects of its {2}!",b.pbThis,itemname))
            next
          end
    I didn't test all cases for this, but after a brief search I think this was the only place that had a typo. I wasn't very thorough tho.

    Clear Amulet: Seems fine.

    Mirror Herb: Seems fine.

    Punching Glove: Seems fine.

    Covert Cloak: Seems fine.

    Loaded Dice: Seens fine.
     
    Last edited:
    71
    Posts
    4
    Years
  • Comeuppance is implemented in the plugin as an exact copy of the move Metal Burst that exists in base Essentials. So any issues with Comeuppance are Essentials issues, and not a plugin issue. Unless Comeuppance has some kind of unique properties that sets it apart from Metal Burst that I'm not aware of, I'm just going to assume they're the exact same move, and thus chalk it up as an Essentials bug.
    I think the bug comes from Metal Burst using a different function than Counter or Mirror Coat for example.
    (I work in 20.1, so this may be changed in 21.1) but, Metal Burst uses this to determine who attacked:
    Code:
       lastAttacker = user.lastFoeAttacker.last

    While Counter and Mirror Coat use this:
    Code:
       #In Mirror Coat's, extracted from "CounterSpecialDamage"
       t = user.effects[PBEffects::MirrorCoatTarget]
      
       #In Counter's case, extracted from "CounterPhysicalDamage"
       t = user.effects[PBEffects::CounterTarget]

    Maybe the solution is changing the Metal Burst code to a PBEffect too? I'm not good at programming sorry, so it's just an hypothesis
     
    71
    Posts
    6
    Years
    • Seen today
    Comeuppance / Metal Burst is different from counter, can't use the effects from it.
    I was trying to add the substitute check to it and it was when it hit me, if I add the substitute check to add target, it won't register the target and say there wasn't any target, it'll be wrong, it should just say it failed or something alone the lines.

    After finishing checking everything, Comeuppance / Metal Burst, Blood Moon / Gigaton Hammer, Take Heart and Cud Chew are the things I wasn't able to fix on my own (or seemed to complex to even try.)
    I've finished testing evolutions and some items as well and added them to the edit on my last post.
    As for the storm moves, this should do it.

    Spoiler: moves


    Personally, I'm not interested in Cud Chew, Metal Burst / Comeuppance I'll test on a clean essentials when I have the time and report to Maruno afterwards (or if anyone wants to do it, please do, I'd have to download a new one and I'm lazy for that)
    Metal Burst / Comeuppance replication:
    Spoiler:

    Blood Moon / Gigaton Hammer is its own problem. I'll try to mess with Take Heart for a little longer and see if I can understand what's going on.
    I'm currently at the phase of adding plugins to my project and I like to test things after adding one and before adding the next, after Take Heart I'll move on to the next one, I wasn't 100% thorough in my tests but I think I've caught a good part of the errors. Either way, if I find something else in the future I'll let you know.
     
    1,407
    Posts
    10
    Years
    • Online now
    >Bleakwind Storm / Wildbolt Storm / Sandsear Storm : This had been reported before so it's nothing new, but adding the rain check for accuracy is trivial as well.
    Yeah, this has already been fixed a while ago, the plugin just hasn't been updated with these changes yet.

    >Bitter Malice: It had an effect chance of 30 but both bulbapedia and serebii state it's 100, it also fits with the moves from PLA that all have similar effects. I think it should be 100.
    Yeah, 30 was a holdover from its PLA version. Should be 100 now.

    >Dire Claw : It has the HighCriticalHitRate flag but I think it shouldn't have it. According to bulbapedia and serebii the move in gen 9 doesn't have an increased critical rate, only in PLA.
    Another PLA holdover.

    In my tests Take Heart only cured the user but didn't raise any stats. This is confusing to me, the move is properly set in pbs and to my knowledge the function code is correct, it should work.
    I noticed it had a small effect on the top left of my screen when I used it which is generally used when there's no animation and the move is iirc field effect, but it makes no sense, the target is the user. Can you test this on your end?
    The move's code is missing a super in def pbEffectGeneral.

    For the sake of completion I also tested the custom evos, all good except for Kingambit one, it says undefined method init_crest_count, I think this was a typo and it was meant to be init_evo_crest_count(item) instead.
    Ability Shield: This had 2 typos and it crashed when facing Neutralizinng Gas Pokemon:
    Noted.


    As for the rest:
    Cud Chew: Already fixed by Caruban.
    Comeuppance: Pretty much ignoring this since it seems like an Essentials issue.
    Gigaton Hammer/Blood Moon: The only challenging one. Work in progress.
     
    Last edited:
    71
    Posts
    6
    Years
    • Seen today
    I was messing around with Following Pkmn and noticed Dondozo's left / right sprite is reversed, the up and down are normal and I looked at other random g9 pokemon but they were all fine.
     
    1,407
    Posts
    10
    Years
    • Online now
    >Blood Moon: This one has more than one problem, the first test I did was against a faster encorer, for replicability this is what I did. Turn 1: Bloodmoon vs Encore Blissey, Encore is faster so it fails, Blood Moon hits, turn 2 I select another move, blissey is faster so it encores my mon but instead of using blood moon it used the move I selected instead.
    Additionally locking a mon to bloodmoon with choice items won't make it use struggle on the second turn.
    In v20.1 I've had similar problems with tricking choice items and some times they weren't even fully replicable so I can't exactly say for sure this is a problem with the move and not a problem with base essentials.
    After some extensive testing, I've determined that both the Encore and Choice item bugs are issues in base Essentials, and not related to this plugin. So I'm putting this in the same category as Comeuppance. So with that out of the way, all of the issues have now been addressed.
     
    18
    Posts
    5
    Years
    • Seen May 5, 2024
    Minor Update (v3.2.4)
    Spoiler:
     
    3
    Posts
    24
    Days
    • Seen yesterday
    The generation 8 resource used have a Sprite wrapper for animated Sprite sheets.How to have animated Sprites for the gen 9 pack.
     
    Back
    Top