• 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.

Report bugs and errors in unmodified Essentials version 21

#Not Important

All hail the wishmaker
910
Posts
4
Years
  • That doesn't seem right, It's supposed to yield, and you call it with a block, else it would crash the second a battler was set up and sent in.
    with this code, I believe that some battlers won't be properly set up as participants, and fainting them will give no experience.

    it works fine for me (as of now)
     
    143
    Posts
    4
    Years
    • Seen Mar 26, 2024
    Code:
    # Yields each unfainted opposing Pokémon.
      def eachOpposing
        #@battle.battlers.each { |b| yield b if b && !b.fainted? && b.opposes?(@index) } OLD METHOD
       #                             ^ cannot yield nothing
        @battle.battlers.each { |b| return b if b && !b.fainted? && b.opposes?(@index) }
      end
    I think the actual problem is not that eachOpposing doesn't yield anything. It just doesn't yield on fainted battlers:
    Code:
     && !b.fainted?
    This leads to target.damagestate.fainted to never be true. Don't know how to fix it though, because I don't know if removing this clause messes anything else up.
     
    1
    Posts
    4
    Years
    • Seen Apr 17, 2022
    Simply enter the debug menu, information editors, edit pokemon, and try to edit anyone.
     

    Attachments

    • 2020-09-09 20_01_17-Pokemon Essentials.png
      2020-09-09 20_01_17-Pokemon Essentials.png
      37.4 KB · Views: 21
    71
    Posts
    6
    Years
    • Seen today
    i was getting an error when adding an item in debug when no one else was, but i was sure it was pbs related so i didnt pay attention
    i looked into it again, basically this error happens if u have ur item.pbs set like
    item 500
    item 501
    item 600
    if there's a leap in items, the debug will try to get the name from item 502 that doesnt exist and crash
    this is how i fixed it
    Code:
        for i in 1..PBItems.maxValue
          next if !@itemdata[i]  ##change added
          name = @itemdata[i][ITEM_NAME]
          if name && name!="" && @itemdata[i][ITEM_POCKET]!=0
            cmds.push([i,name])
          end
        end
     

    mewlover22

    Pokemon Creator
    455
    Posts
    15
    Years
  • Found a bug where when you evolve an alternate form of a Pokemon the pokedex shows both the regular and alternative entries even though I don't have the regular version.
     
    61
    Posts
    4
    Years
  • Flame/Toxic Orbs will override your current status if you are already paralyzed, asleep, etc, replacing it with Burned/Badly Poisoned. Tested various times.
     
    13
    Posts
    4
    Years
  • For V18:

    The pre-evolutions of fully evolved Pokémon do not seem to be retrieved correctly. If a Pokémon itself does not have any evolutions, but has pre-evolved forms, an error is returned if trying to return a pre-evolution. This happens for the functions pbGetBabySpecies and pbGetPreviousForm. For instance, if either of those are called for Raticate and Pidgeot, they return an error, but they both work fine for Rattata, Pidgey and Pidgeotto. It appears to be a problem with pbGetEvolutionData, which returns nil if the Pokémon does not evolve. I found out about this when automatically adjusting the evolution stage of low-level wild Pokémon. When breeding Pokémon, this means that the baby will hatch fully evolved.

    I don't see a quick fix for this; the one thing I can think of is a separate subroutine that checks if the Pokémon occurs in another mon's evolution tree before returning nil, but that is not too elegant.

    UPDATE:
    I've looked into the evolution data that is actually stored; as I understand it, each Pokémon stores its previous and next evolutions in a list. That list consists of lists each having the format [Other Pokémon's ID],[Evolution Method],[Method Parameter],[Boolean whether this is a pre-evolution or not]. So, Bulbasaur's data is [2],[4],[16],[False], meaning "it evolves into Ivysaur at level 16, which is not a pre-evolution". Ivysaur's data, then, is [[1],[4],[16],[True]],[[3],[4],[32],[False]]. This means it evolves from Bulbasaur at level 16 and into Venusaur at level 32. Venusaur's data should then be [2],[4],[32],[True], but is instead empty, which is probably something that goes wrong when compiling. This means that an egg bred from an Ivysaur will correctly hatch a Bulbasaur, but an egg bred from Venusaur will hatch a Venusaur because the evolution data is empty, as it would be for a Pokémon with no evolutionary relatives (Also, returning nil instead of the empty list results in a few unexpected errors; eggs are generated correctly for Pokémon with no relatives). I think I can patch this up in pbGetEvolutionData knowing what I know now; but that's more of a band-aid.
     
    Last edited:

    DarrylBD99

    Content Creator and Game Developer
    321
    Posts
    4
    Years
  • 2020-09-13 (1).png
    I managed to find a fix, but I am not sure if it will be permenant

    in Tilemap_XP, look for the following line
    Code:
    spriteZ = priority==0 ? 0 : ypos+priority*32+32
    located in the function "addTile" and replace it with
    Code:
    spriteZ = (!priority || priority==0) ? 0 : ypos+priority*32+32

    If you run it like that, there is a chance you will encounter a different error like this.2020-09-13 (2).png In that case, go to Game_Map and find
    Code:
    return terrain if terrain > 0 && terrain!=PBTerrain::Neutral
    located in the function "terrain_tag" and replace it with
    Code:
    return terrain if terrain && terrain > 0 && terrain!=PBTerrain::Neutral
     
    143
    Posts
    4
    Years
    • Seen Mar 26, 2024
    UPDATE:
    I've looked into the evolution data that is actually stored; as I understand it, each Pokémon stores its previous and next evolutions in a list. That list consists of lists each having the format [Other Pokémon's ID],[Evolution Method],[Method Parameter],[Boolean whether this is a pre-evolution or not]. So, Bulbasaur's data is [2],[4],[16],[False], meaning "it evolves into Ivysaur at level 16, which is not a pre-evolution". Ivysaur's data, then, is [[1],[4],[16],[True]],[[3],[4],[32],[False]]. This means it evolves from Bulbasaur at level 16 and into Venusaur at level 32. Venusaur's data should then be [2],[4],[32],[True], but is instead empty, which is probably something that goes wrong when compiling. This means that an egg bred from an Ivysaur will correctly hatch a Bulbasaur, but an egg bred from Venusaur will hatch a Venusaur because the evolution data is empty, as it would be for a Pokémon with no evolutionary relatives (Also, returning nil instead of the empty list results in a few unexpected errors; eggs are generated correctly for Pokémon with no relatives). I think I can patch this up in pbGetEvolutionData knowing what I know now; but that's more of a band-aid.

    I think the problem lies here in "Compiler_PBS":
    Spoiler:
    And here
    Spoiler:
    The array "speciesEvolutions" is empty for pokemon without an evolution leading to the part where pre evolution data is created to always be skipped by the second line of code.Simply removing that line won't fix the problem because the function after needs an evolution array?
     
    61
    Posts
    4
    Years
  • For V18:

    ----- When breeding Pokémon, this means that the baby will hatch fully evolved.

    -----UPDATE:
    I've looked into the evolution data that is actually stored; as I understand it, each Pokémon stores its previous and next evolutions in a list. That list consists of lists each having the format [Other Pokémon's ID],[Evolution Method],[Method Parameter],[Boolean whether this is a pre-evolution or not]. So, Bulbasaur's data is [2],[4],[16],[False], meaning "it evolves into Ivysaur at level 16, which is not a pre-evolution". Ivysaur's data, then, is [[1],[4],[16],[True]],[[3],[4],[32],[False]]. This means it evolves from Bulbasaur at level 16 and into Venusaur at level 32. Venusaur's data should then be [2],[4],[32],[True], but is instead empty, which is probably something that goes wrong when compiling. This means that an egg bred from an Ivysaur will correctly hatch a Bulbasaur, but an egg bred from Venusaur will hatch a Venusaur because the evolution data is empty, as it would be for a Pokémon with no evolutionary relatives (Also, returning nil instead of the empty list results in a few unexpected errors; eggs are generated correctly for Pokémon with no relatives). -----.

    I have been having the same issue! To add a little more info to hopefully help solve this... I was experimenting in unedited Essentials and found that breeding has problems deciding what to put in the egg. If I bred two Pokemon from the same evolution line (such as Venusaur + Ivysaur or Gyarados + Gyarados) the correct Egg would result. However, if I bred two different Pokemon in the same Egg Group (such as Ditto + Persian or Fearow + Pidgeot) the resulting Egg would just be the exact same as the mother, even if it was evolved.
     
    143
    Posts
    4
    Years
    • Seen Mar 26, 2024
    Found a little bug regarding the AI. When the AI can't switch or use an item and all moves return a score of 0 the game automatically registers an encored move or struggle. For my example the AI had a Pokemon with only Tackle against a Ghost type. So it used Struggle (because Tackle had a score of 0) even though it should only do that if it can't use any moves. This is really insignificant because Tackle doesn't do damage, but it just feels unnatural. So I added a little piece of code to register any random move if the AI didn't register any choices and isn't encored:
    Spoiler:
     
    6
    Posts
    4
    Years
    • Seen Jun 18, 2022
    Has anyone else experienced a bug where pokemon evolving lose their nicknames? I can't quite figure out why it happens.
     
    143
    Posts
    4
    Years
    • Seen Mar 26, 2024
    Here is another little fix for the moves dragon tail and circle throw.
    This line in the function for the two moves:
    Code:
    if roarSwitched>0
    should be this
    Code:
    if roarSwitched.length>0
    otherwise the game tries to compare an array to 0, leading to an error. :)
     
    1,407
    Posts
    10
    Years
    • Seen today
    I may be missing something obvious, but some Pokemon have their forms reset upon evolution. It seems like this mostly pertains to the newer forms/species added in v18, although I havent tested every viable species.

    For example, East Sea Shellos will properly evolve into East Sea Gastrodon, like it always has.

    But when attempting to evolve Alolan Sandshrew into Alolan Sandslash via Ice Stone, the Pokemon's form resets to zero upon evolution, and I get regular Sandslash.

    The same happens with Pikachu evolving into Alolan Raichu (when on the appropriate map). I can see the Alolan Raichu sprite during the evolution sequence, but once I leave that screen, it's a regular Raichu again.

    Same thing happens to Rockruff. I evolve it during the nighttime (and its form even says it's set to 1 in the debug menu), but then after evolving it, it becomes a Midday Lycanroc (form 0).

    I even tried manually forcing forms prior to evolving to see if theyd carry over that way, but it still resets. I tried removing the code in Pokemon_Forms regarding Alolan forms in case that was bugged, but that doesnt seem to be the issue. I dont think its a PBS issue either, because everything seems to be in order. Im not sure what it is about these particular species that causes this to happen.
     

    Atlat

    Atlat
    62
    Posts
    4
    Years
    • Seen today
    I think Mirror Move is broken. Specifically around "lastRegularMoveUsed" being undefined. This seems to just be a general v18 bug, but I could be going mad.
     
    61
    Posts
    4
    Years
  • Did some testing in Vanilla Essentials V18 and found a few bugs:
    • Recoil moves only do 1 damage to user if the move faints the opposing Pokemon. Recoil works as normal if the move doesn't faint the opponent.
    • Battle Arena crashes when trying to start the Round at the beginning of the battle.
    • Battle Palace crashes if you try to select a move or switch.
    • Nature's Madness doesn't do anything. Super Fang works, so Nature's Madness just needs to be given the same move class as Super Fang.
    • The Ability activation animation for Electric/Grassy/Misty/Psychic Surge is too quick, to the point where it can't really be read.
     
    143
    Posts
    4
    Years
    • Seen Mar 26, 2024
    It feels kinda unclean but I got a fix for the recoil bug and also the same concerning draining moves. The problem is that after fainting, all the properties of a battler are reset. This happens before the additional effects of a move apply. In case of recoil and draining moves they need a number stored in the target's damage state which is also reset to 0 if the battler faints. Therefore a few changes need to be made to fix this.

    Inside "def pbProcessMoveHit(move,user,targets,hitNum,skipAccuracyCheck)":
    Spoiler:


    Inside "def pbUseMove(choice,specialUsage=false)":
    Spoiler:

    Spoiler:

    Spoiler:
    If anyone finds a better fix for this, please tell me. I don't like the way I worked this out.
     
    Back
    Top