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

[Archive] The Pokémon Essentials Wiki

Status
Not open for further replies.

KingRazor

Pokemon Master Since 1999
39
Posts
13
Years
  • A friend of mine has been working with this starter kit for some time now. I've been alpha testing for him.

    There is a bug in the program that we have yet to be able to fix.

    When a pokemon who is not the currently selected pokemon levels up, they won't learn new moves.

    For example, if I start a battle with a level 10 pikachu (who learns quick attack at level 11) and then, mid-fight, switch to Charmelon, and win the fight with Charmelon, and Pikachu gains enough exp to grow to level 11, he will grow to level 11, but will not learn quick attack.

    This bug also occurs when using EXP share.

    Here's the code for exp gain and move learning:

    Code:
    def pbGainEXP
     return if !@internalbattle
     successbegin=true
     for i in 0..3 # Not ordered by priority
      if !@doublebattle && pbIsDoubleBattler?(i)
       @battlers[i].participants=[]
       next
      end
      if pbIsOpposing?(i) && @battlers[i].participants.length>0 && @battlers[i].hp<=0
       dexdata=pbOpenDexData
       battlerSpecies=@battlers[i].species
       # Current species, not original species; also using R/S base EXP
       pbDexDataOffset(dexdata,battlerSpecies,17)
       baseexp=dexdata.fgetb
       level=@battlers[i].level
       dexdata.close
       # First count the number of participants
       partic=0
       expshare=0
       for j in @battlers[i].participants
            @participants[j]=true # Add participant to global list
       end
       for j in @battlers[i].participants
            next if !@party1[j] || !pbIsOwner?(0,j)
            partic+=1 if @party1[j].hp>0 && !@party1[j].egg?
       end
       for j in [email protected]
            next if !@party1[j] || !pbIsOwner?(0,j)
            expshare+=1 if @party1[j].hp>0 && !@party1[j].egg? && 
            isConst?(@party1[j].item,PBItems,:EXPSHARE)
       end
       # Now calculate EXP for the participants
       if partic>0
            if !@opponent && successbegin && pbAllFainted?(@party2)
            @scene.pbWildBattleSuccess
            successbegin=false
            end
            for j in [email protected]
            thispoke=@party1[j]
            next if !@party1[j] || !pbIsOwner?(0,j)
            ispartic=0
            level=@battlers[i].level
            haveexpshare=(isConst?(thispoke.item,PBItems,:EXPSHARE)) ? 1 : 0
            for k in @battlers[i].participants
            ispartic=1 if k==j
            end
            if thispoke.hp>0 && !thispoke.egg?
            exp=0
            if expshare>0
            exp=((level*baseexp/7).floor/2).floor
            exp=(exp/partic).floor*ispartic+(exp/expshare).floor*haveexpshare
            elsif ispartic==1
            exp=((level*baseexp/7).floor/partic).floor
            end
            isOutsider=(thispoke.trainerID!=self.pbPlayer.id || (thispoke.language!=0 && thispoke.language!=self.pbPlayer.language))
            exp=(exp*3/2).floor if @opponent
            exp=(exp*3/2).floor if isOutsider
            exp=(exp*3/2).floor if isConst?(thispoke.item,PBItems,:LUCKYEGG)
            growthrate=thispoke.growthrate
            newexp=PBExperience.pbAddExperience(thispoke.exp,exp,growthrate)
            exp=newexp-thispoke.exp;
            if exp > 0
            if isOutsider
            pbDisplayPaused(_INTL("{1} gained a boosted\r\n{2} Exp. Points!",thispoke.name,exp))
            else
            pbDisplayPaused(_INTL("{1} gained\r\n{2} Exp. Points!",thispoke.name,exp))
            end
            #Gain effort value points, using RS effort values
            totalev=0
            for k in 0..5
            totalev+=thispoke.ev[k]
            end
            dexdata=pbOpenDexData
            pbDexDataOffset(dexdata,battlerSpecies,23)
            for k in 0..5
            evgain=dexdata.fgetb
            if isConst?(thispoke.item,PBItems,:MACHOBRACE)
                    evgain*=2
            end
            if evgain>0
                    # Can't exceed overall limit
                    if totalev+evgain>510
            # Bug Fix: must use "-=" instead of "="
            evgain-=totalev+evgain-510
                    end
                    # Can't exceed stat limit
                    if thispoke.ev[k]+evgain>255
            # Bug Fix: must use "-=" instead of "="
            evgain-=thispoke.ev[k]+evgain-255
                    end
                    # Add EV gain
                    thispoke.ev[k]+=evgain
                    if thispoke.ev[k]>255
            print "Single-stat EV limit 255 exceeded.\r\nStat: #{k}  EV gain: #{evgain}  EVs: #{thispoke.ev.inspect}"
            thispoke.ev[k]=255
                    end
                    totalev+=evgain
                    if totalev>510
            print "EV limit 510 exceeded.\r\nTotal EVs: #{totalev} EV gain: #{evgain}  EVs: #{thispoke.ev.inspect}"
                    end
            end
            end
            newlevel=PBExperience.pbGetLevelFromExperience(newexp,growthrate)
            tempexp=0
            curlevel=thispoke.level
            thisPokeSpecies=thispoke.species
            if newlevel<curlevel
            debuginfo="#{thispoke.name}: #{thispoke.level}/#{newlevel} | #{thispoke.exp}/#{newexp} | gain: #{exp}"
            raise RuntimeError.new(
                    _INTL("The new level ({1}) is less than the Pokémon's\r\ncurrent level ({2}), which shouldn't happen.\r\n[Debug: {3}]",
                    newlevel,curlevel,debuginfo))
            return
            end
            if thispoke.respond_to?("isShadow?") && thispoke.isShadow?
            thispoke.exp+=exp
            else
            tempexp1=thispoke.exp
            tempexp2=0
            # Find battler
            battler=pbFindPlayerBattler(j)
            loop do
                    #EXP Bar animation
                    startexp=PBExperience.pbGetStartExperience(curlevel,growthrate)
                    endexp=PBExperience.pbGetStartExperience(curlevel+1,growthrate)
                    tempexp2=(endexp<newexp) ? endexp : newexp
                    thispoke.exp=tempexp2
                    @scene.pbEXPBar(thispoke,battler,startexp,endexp,tempexp1,tempexp2)
                    tempexp1=tempexp2
                    curlevel+=1
                    break if curlevel>newlevel
                    oldtotalhp=thispoke.totalhp
                    oldattack=thispoke.attack
                    olddefense=thispoke.defense
                    oldspeed=thispoke.speed
                    oldspatk=thispoke.spatk
                    oldspdef=thispoke.spdef
                    thispoke.calcStats
                    battler.pbUpdate if battler
                    @scene.pbRefresh
                    if battler.pokemon && @internalbattle
            battler.pokemon.happiness+=2
            battler.pokemon.happiness=255 if battler.pokemon.happiness>255
                    end
                    pbDisplayPaused(_INTL("{1} grew to Level {2}!",thispoke.name,curlevel))
                    @scene.pbLevelUp(thispoke,battler,oldtotalhp,oldattack,
                            olddefense,oldspeed,oldspatk,oldspdef)
                    # Finding all moves learned at this level
                    atkdata=pbRgssOpen("Data/attacksRS.dat","rb")
                    offset=atkdata.getOffset(thisPokeSpecies-1)
                    length=atkdata.getLength(thisPokeSpecies-1)>>1
                    atkdata.pos=offset
                    for k in 0..length-1
            atklevel=atkdata.fgetw
            move=atkdata.fgetw
            if atklevel==thispoke.level
                    # Learned a new move
                    pbLearnMove(j,move)
            end
                    end
                    atkdata.close
            end
            end
            end
            end
            end
       end
       # Now clear the participants array
       @battlers[i].participants=[]
      end
     end
    end
    Code:
    def pbLearnMove(pkmnIndex,move)
     pokemon=@party1[pkmnIndex]
     return if !pokemon
     pkmnname=pokemon.name
     battler=pbFindPlayerBattler(pkmnIndex)
     movename=PBMoves.getName(move)
     for i in 0..3
      if pokemon.moves[i].id==move
       return
      end
      if pokemon.moves[i].id==0
       pokemon.moves[i]=PBMove.new(move)
       battler.moves[i]=PokeBattle_Move.pbFromPBMove(self,pokemon.moves[i]) if battler
       pbDisplayPaused(_INTL("{1} learned {2}!",pkmnname,movename))
       return
      end
     end
     loop do
      pbDisplayPaused(_INTL("{1} is trying to learn {2}.",pkmnname,movename)) #Replaces current/total PP
      pbDisplayPaused(_INTL("But {1} can't learn more than four moves.",pkmnname))
      if pbDisplayConfirm(_INTL("Delete a move to make room for {1}?",movename))
       pbDisplayPaused(_INTL("Which move should be forgotten?"))
       [email protected](pokemon,move)
       if forgetmove >=0
            oldmovename=PBMoves.getName(pokemon.moves[forgetmove].id)
            pokemon.moves[forgetmove]=PBMove.new(move)#Replaces current/total PP
            battler.moves[forgetmove]=PokeBattle_Move.pbFromPBMove(self,pokemon.moves[forgetmove]) if battler
            pbDisplayPaused(_INTL("1,  2, and... ... ..."))
            pbDisplayPaused(_INTL("Poof!"))
            pbDisplayPaused(_INTL("{1} forgot {2}.",pkmnname,oldmovename))
            pbDisplayPaused(_INTL("And..."))
            pbDisplayPaused(_INTL("{1} learned {2}!",pkmnname,movename))
            return
       elsif pbDisplayConfirm(_INTL("Should {1} stop learning {2}?",pkmnname,movename))
            pbDisplayPaused(_INTL("{1} did not learn {2}.",pkmnname,movename))
            return
       end
      elsif pbDisplayConfirm(_INTL("Should {1} stop learning {2}?",pkmnname,movename))
       pbDisplayPaused(_INTL("{1} did not learn {2}.",pkmnname,movename))
       return
      end
     end
    end
    
    def pbGainEXP
     return if !@internalbattle
     successbegin=true
     for i in 0..3 # Not ordered by priority
      if !@doublebattle && pbIsDoubleBattler?(i)
       @battlers[i].participants=[]
       next
      end
      if pbIsOpposing?(i) && @battlers[i].participants.length>0 && @battlers[i].hp<=0
       dexdata=pbOpenDexData
       battlerSpecies=@battlers[i].species
       # Current species, not original species; also using R/S base EXP
       pbDexDataOffset(dexdata,battlerSpecies,17)
       baseexp=dexdata.fgetb
       level=@battlers[i].level
       dexdata.close
       # First count the number of participants
       partic=0
       expshare=0
       for j in @battlers[i].participants
            @participants[j]=true # Add participant to global list
       end
       for j in @battlers[i].participants
            next if !@party1[j] || !pbIsOwner?(0,j)
            partic+=1 if @party1[j].hp>0 && !@party1[j].egg?
       end
       for j in [email protected]
            next if !@party1[j] || !pbIsOwner?(0,j)
            expshare+=1 if @party1[j].hp>0 && !@party1[j].egg? && 
            isConst?(@party1[j].item,PBItems,:EXPSHARE)
       end
       # Now calculate EXP for the participants
       if partic>0
            if !@opponent && successbegin && pbAllFainted?(@party2)
            @scene.pbWildBattleSuccess
            successbegin=false
            end
            for j in [email protected]
            thispoke=@party1[j]
            next if !@party1[j] || !pbIsOwner?(0,j)
            ispartic=0
            level=@battlers[i].level
            haveexpshare=(isConst?(thispoke.item,PBItems,:EXPSHARE)) ? 1 : 0
            for k in @battlers[i].participants
            ispartic=1 if k==j
            end
            if thispoke.hp>0 && !thispoke.egg?
            exp=0
            if expshare>0
            exp=((level*baseexp/7).floor/2).floor
            exp=(exp/partic).floor*ispartic+(exp/expshare).floor*haveexpshare
            elsif ispartic==1
            exp=((level*baseexp/7).floor/partic).floor
            end
            isOutsider=(thispoke.trainerID!=self.pbPlayer.id || (thispoke.language!=0 && thispoke.language!=self.pbPlayer.language))
            exp=(exp*3/2).floor if @opponent
            exp=(exp*3/2).floor if isOutsider
            exp=(exp*3/2).floor if isConst?(thispoke.item,PBItems,:LUCKYEGG)
            growthrate=thispoke.growthrate
            newexp=PBExperience.pbAddExperience(thispoke.exp,exp,growthrate)
            exp=newexp-thispoke.exp;
            if exp > 0
            if isOutsider
            pbDisplayPaused(_INTL("{1} gained a boosted\r\n{2} Exp. Points!",thispoke.name,exp))
            else
            pbDisplayPaused(_INTL("{1} gained\r\n{2} Exp. Points!",thispoke.name,exp))
            end
            #Gain effort value points, using RS effort values
            totalev=0
            for k in 0..5
            totalev+=thispoke.ev[k]
            end
            dexdata=pbOpenDexData
            pbDexDataOffset(dexdata,battlerSpecies,23)
            for k in 0..5
            evgain=dexdata.fgetb
            if isConst?(thispoke.item,PBItems,:MACHOBRACE)
            evgain*=2
            end
            if evgain>0
            # Can't exceed overall limit
            if totalev+evgain>510
            # Bug Fix: must use "-=" instead of "="
            evgain-=totalev+evgain-510
            end
            # Can't exceed stat limit
            if thispoke.ev[k]+evgain>255
            # Bug Fix: must use "-=" instead of "="
            evgain-=thispoke.ev[k]+evgain-255
            end
            # Add EV gain
            thispoke.ev[k]+=evgain
            if thispoke.ev[k]>255
            print "Single-stat EV limit 255 exceeded.\r\nStat: #{k}  EV gain: #{evgain}  EVs: #{thispoke.ev.inspect}"
            thispoke.ev[k]=255
            end
            totalev+=evgain
            if totalev>510
            print "EV limit 510 exceeded.\r\nTotal EVs: #{totalev} EV gain: #{evgain}  EVs: #{thispoke.ev.inspect}"
            end
            end
            end
            newlevel=PBExperience.pbGetLevelFromExperience(newexp,growthrate)
            tempexp=0
            curlevel=thispoke.level
            thisPokeSpecies=thispoke.species
            if newlevel<curlevel
            debuginfo="#{thispoke.name}: #{thispoke.level}/#{newlevel} | #{thispoke.exp}/#{newexp} | gain: #{exp}"
            raise RuntimeError.new(
            _INTL("The new level ({1}) is less than the Pokémon's\r\ncurrent level ({2}), which shouldn't happen.\r\n[Debug: {3}]",
            newlevel,curlevel,debuginfo))
            return
            end
            if thispoke.respond_to?("isShadow?") && thispoke.isShadow?
            thispoke.exp+=exp
            else
            tempexp1=thispoke.exp
            tempexp2=0
            # Find battler
            battler=pbFindPlayerBattler(j)
            loop do
            #EXP Bar animation
            startexp=PBExperience.pbGetStartExperience(curlevel,growthrate)
            endexp=PBExperience.pbGetStartExperience(curlevel+1,growthrate)
            tempexp2=(endexp<newexp) ? endexp : newexp
            thispoke.exp=tempexp2
            @scene.pbEXPBar(thispoke,battler,startexp,endexp,tempexp1,tempexp2)
            tempexp1=tempexp2
            curlevel+=1
            break if curlevel>newlevel
            oldtotalhp=thispoke.totalhp
            oldattack=thispoke.attack
            olddefense=thispoke.defense
            oldspeed=thispoke.speed
            oldspatk=thispoke.spatk
            oldspdef=thispoke.spdef
            thispoke.calcStats
            battler.pbUpdate if battler
            @scene.pbRefresh
            if battler.pokemon && @internalbattle
            battler.pokemon.happiness+=2
            battler.pokemon.happiness=255 if battler.pokemon.happiness>255
            end
            pbDisplayPaused(_INTL("{1} grew to Level {2}!",thispoke.name,curlevel))
            @scene.pbLevelUp(thispoke,battler,oldtotalhp,oldattack,
                    olddefense,oldspeed,oldspatk,oldspdef)
            # Finding all moves learned at this level
            atkdata=pbRgssOpen("Data/attacksRS.dat","rb")
            offset=atkdata.getOffset(thisPokeSpecies-1)
            length=atkdata.getLength(thisPokeSpecies-1)>>1
            atkdata.pos=offset
            for k in 0..length-1
            atklevel=atkdata.fgetw
            move=atkdata.fgetw
            if atklevel==thispoke.level
            # Learned a new move
            pbLearnMove(j,move)
            end
            end
            atkdata.close
            end
            end
            end
            end
            end
       end
       # Now clear the participants array
       @battlers[i].participants=[]
      end
     end
    end
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    A friend of mine has been working with this starter kit for some time now. I've been alpha testing for him.

    There is a bug in the program that we have yet to be able to fix.

    When a pokemon who is not the currently selected pokemon levels up, they won't learn new moves.

    For example, if I start a battle with a level 10 pikachu (who learns quick attack at level 11) and then, mid-fight, switch to Charmelon, and win the fight with Charmelon, and Pikachu gains enough exp to grow to level 11, he will grow to level 11, but will not learn quick attack.

    This bug also occurs when using EXP share.
    That bug was fixed in version 1 of the revived Essentials. Levelling up and learning moves works perfectly now. I forget what exactly caused the problem.

    If you and your friend want to contribute to Essentials, please feel free. Any tweaks or insights are appreciated.
     

    KingRazor

    Pokemon Master Since 1999
    39
    Posts
    13
    Years
  • That bug was fixed in version 1 of the revived Essentials. Levelling up and learning moves works perfectly now. I forget what exactly caused the problem.

    If you and your friend want to contribute to Essentials, please feel free. Any tweaks or insights are appreciated.

    That's great to hear! We've been trying to fix that bug for months. Sounds like it's time to upgrade.
     

    IceGod64

    In the Lost & Found bin!
    624
    Posts
    15
    Years
  • I just had an idea, and I'm going to see if I can do it as early as tomorrow, but I dunno if I can, it's rather complicated...

    Wouldn't it be nice if Editor.exe actually had an attack editor in it, though?
     

    Cilerba

    the hearts of lonely people
    1,162
    Posts
    14
    Years
  • I just had an idea, and I'm going to see if I can do it as early as tomorrow, but I dunno if I can, it's rather complicated...

    Wouldn't it be nice if Editor.exe actually had an attack editor in it, though?

    I would personally love to see this feature implemented. So I'm all for it. :P
     

    KingRazor

    Pokemon Master Since 1999
    39
    Posts
    13
    Years
  • That bug was fixed in version 1 of the revived Essentials. Levelling up and learning moves works perfectly now. I forget what exactly caused the problem.

    If you and your friend want to contribute to Essentials, please feel free. Any tweaks or insights are appreciated.

    Okay, so we recently updated to the latest version, but the above mentioned bug remains. Just a minute ago my Pikachu leveled from shared exp to level 6, but did not learn tail whip (and I double checked his moveset in the game to make sure that he learned that at that level).

    Any idea why that would still be an issue?
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    I just had an idea, and I'm going to see if I can do it as early as tomorrow, but I dunno if I can, it's rather complicated...

    Wouldn't it be nice if Editor.exe actually had an attack editor in it, though?
    I assume you mean you want a function that allows you to add entries to moves.txt. It's certainly possible, although it's a more extensive change than any I've made so far.

    To be honest, though, it's easy to edit moves.txt. There are hundreds of examples to look at, and a detailed description on the wiki of what it all means. And it wouldn't help if you wanted to add your own effect anyway, since that needs to be programmed in manually (and if you can do that, it's child's play to knock up a new line in moves.txt by yourself anyway).

    For those reasons, I'm not going to spend time trying to add in such a feature. I just don't think it's necessary, and it would be incomplete in any case (it could only choose from existing effects). Sorry, but I don't think it's worth it.

    If someone else wants to come up with it, I'll add it in. I just won't waste my own time on it.


    Okay, so we recently updated to the latest version, but the above mentioned bug remains. Just a minute ago my Pikachu leveled from shared exp to level 6, but did not learn tail whip (and I double checked his moveset in the game to make sure that he learned that at that level).

    Any idea why that would still be an issue?
    I have no idea. I made sure to try it myself, getting a Pikachu to hit level 26 during a battle (both after it was switched out, and when it never participated but had an Exp Share, and for both trainer and wild battles), and it worked all times. It may be something you've tweaked that's to blame.

    I seem to recall the issue involved only the first battler gaining experience, and it could could only gain enough experience to level up - it couldn't learn a move at that time or gain the rest of its due experience, though. I really don't remember how I fixed it.
     

    IceGod64

    In the Lost & Found bin!
    624
    Posts
    15
    Years
  • I assume you mean you want a function that allows you to add entries to moves.txt. It's certainly possible, although it's a more extensive change than any I've made so far.

    To be honest, though, it's easy to edit moves.txt. There are hundreds of examples to look at, and a detailed description on the wiki of what it all means. And it wouldn't help if you wanted to add your own effect anyway, since that needs to be programmed in manually (and if you can do that, it's child's play to knock up a new line in moves.txt by yourself anyway).

    For those reasons, I'm not going to spend time trying to add in such a feature. I just don't think it's necessary, and it would be incomplete in any case (it could only choose from existing effects). Sorry, but I don't think it's worth it.

    If someone else wants to come up with it, I'll add it in. I just won't waste my own time on it.

    I wasn't expecting you would. The only reason I suggested it would be because it's easier to add content through a GUI, as even though using the text file is relatively easy, I for one still find myself making mistakes from time to time.

    It's certainly not something I have the expertise of scripting to do.
     

    KingRazor

    Pokemon Master Since 1999
    39
    Posts
    13
    Years
  • EDIT: The bug has been fixed. We had to undo all of our switches and update all the scripts, but the EXP share bug is now fixed.
     
    Last edited:

    Zephyra

    I lurk
    7
    Posts
    14
    Years
    • Seen May 6, 2012
    Okay, I've had something on my mind for a while but I'm not sure how possible it is

    Would there be a way to go about having certain parts of a Pokemon's sprite be a different color based on the personality values? I know Spinda's spots are implemented somewhat like that, but with position rather than color. Perhaps the parts in the sprite that would have the color changed would be blank and then like the Spinda script, it could draw the color on there.

    It would probably be best to just have the hue change rather than saturation and lightness because if it gets too dark or too light it would look really out of place.

    I was curious if something like this would be possible because I would like to see Smeargle with different paint colors!
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    I wasn't expecting you would. The only reason I suggested it would be because it's easier to add content through a GUI, as even though using the text file is relatively easy, I for one still find myself making mistakes from time to time.

    It's certainly not something I have the expertise of scripting to do.
    If it's a GUI you want (and I'd quite like one too, actually), I think an html file would be better (like townmapgen). If someone wants to knock one or two up for various things, please do.


    Okay, I've had something on my mind for a while but I'm not sure how possible it is

    Would there be a way to go about having certain parts of a Pokemon's sprite be a different color based on the personality values? I know Spinda's spots are implemented somewhat like that, but with position rather than color. Perhaps the parts in the sprite that would have the color changed would be blank and then like the Spinda script, it could draw the color on there.

    It would probably be best to just have the hue change rather than saturation and lightness because if it gets too dark or too light it would look really out of place.

    I was curious if something like this would be possible because I would like to see Smeargle with different paint colors!
    The simplest way is to make Smeargle behave like Unown, and give it a variety of alternate forms, one per coloured tail.

    If you want a whole range of all possible colours, though, then alternate forms won't cut it. Your best bet is probably to have an overlay sprite (i.e. showing just a Smeargle's paint) and tint it various colours depending on whatever, and then put it over the original sprite. Your task is to decide how to overlay Smeargle with this tinted picture.
     
    Last edited:

    zingzags

    PokemonGDX creator
    536
    Posts
    15
    Years
  • Maruno can you do some of the developers a favor, rememeber the link i gave you for keeping a change log for the scripts, can you do that for both the August version, and the september version if possible, because I my self with a few other developers have been developing off of the wiki essentials, and I think it would make it easier for both us and you if you put the files, on a online change log.
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    I want to start a series of debates that will help Essentials develop and grow. Each debate will be about a particular aspect of Essentials, from tilesets to Pokédex, from item use to community. Ideally there would be a thread for each of these topics, but I don't think that would be appreciated on PokéCommunity. The opinions gleaned from these debates will be used to guide the directions Essentials will grow in.

    The first topic will be about savegames. What do you think of the way games are saved and loaded? Do you want multiple save slots, or do you prefer the traditional one save slot only? When loading a game, what information do you want to see displayed? Is there any alternative system you think might work better?

    Please let us know what you think.

    Also, if you have any ideas about better ways to hold these debates, and ideally how to draw more people in so we get more representative opinions, please also share them.


    Maruno can you do some of the developers a favor, rememeber the link i gave you for keeping a change log for the scripts, can you do that for both the August version, and the september version if possible, because I my self with a few other developers have been developing off of the wiki essentials, and I think it would make it easier for both us and you if you put the files, on a online change log.
    You're very welcome to do that yourself. Remember that Essentials is (ostensibly) a community project now, which everyone can contribute to. If you want to give a bit more support to the minority who want specific change logs that list every altered line of script, go ahead and do it. You've got a link that'll apparently make it easy to produce, and the wiki's open to everyone to edit.

    For the record, it wouldn't affect me whether this detailed change log existed, because I save the older versions (plus "in-between" versions) anyway, and since I've made all the changes I'd know at least vaguely what I'm looking for - I have no need of such a log.
     
    302
    Posts
    13
    Years
    • Seen Aug 25, 2014
    I would honestly prefer multiple slots. With the nature of Pokemon games being centered around making choices, it would be helpful to add another slot for the sake of starting fresh and trying new things without having to completely wipe out your old achievements by starting a new game on a single slot.

    As far as what should be displayed, I feel that playtime, the player's graphic, and file number are a given. The other aspects about the essentials save system are fine with me.
     

    FL

    Pokémon Island Creator
    2,450
    Posts
    13
    Years
    • Seen today
    I want to start a series of debates that will help Essentials develop and grow. Each debate will be about a particular aspect of Essentials, from tilesets to Pokédex, from item use to community. Ideally there would be a thread for each of these topics, but I don't think that would be appreciated on PokéCommunity. The opinions gleaned from these debates will be used to guide the directions Essentials will grow in.

    The first topic will be about savegames. What do you think of the way games are saved and loaded? Do you want multiple save slots, or do you prefer the traditional one save slot only? When loading a game, what information do you want to see displayed? Is there any alternative system you think might work better?

    Please let us know what you think.

    Also, if you have any ideas about better ways to hold these debates, and ideally how to draw more people in so we get more representative opinions, please also share them.
    It's really easy to change the save name or copy the game folder, so the multiple slots aren't too necessary, maybe you can put an option in global metadata for it (for respect the ones who likes to make identical games or remakes like the poccil original concept).
    The screen for save/loading is fine in the current way. Maybe the loading screen can have the player graphics and the location of save.

    I like this debate idea, is a good way to share the users opinions about decisions. For the nexts maybe you can list some features that you wish to put in essentials and the others can vote in they priority.
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    It's taken a little longer this time, but once again...

    A new version of Pokémon Essentials has been released!

    Link: Pokémon Essentials Wiki

    This update features an overhaul of the move function codes, which was a vital change to allow all the new Gen 4 and Gen 5 move effects to fit in. Although I suspect the only thing most of you will notice is that all moves are now in the moves PBS file. For stronger developers, the rearranging of the effects and added comments next to each function code will surely help.

    There are many move effects that haven't yet been included in Essentials, but the space for them is now there. If you have any effects you would like to donate, please let me know!

    In addition to the moves, there are a few other welcome additions, such as the option to make TMs infinite-use, easy Bag pocket defining, and the "already caught" icon in battle. A few game-crashing bugs have also been fixed.

    Enjoy!


    (for respect the ones who likes to make identical games or remakes like the poccil original concept).
    Now that's a whole other debate. Stay true to the games, or improve on them (and there's definitely scope for improvement)? Let's not go into that can of worms just yet, though.

    Thanks for your suggestion for a future debate. If anyone wants to suggest future topics, please go ahead.

    What might people think of Essentials having its very own forum, and not just a couple of threads here (and possibly on other forums too, which I don't know about)? For starters, it would make these debates easier to hold.
     
    3
    Posts
    12
    Years
  • Hey! The new release sounds pretty cool. I just started with Pokemon Essentials kit last week and I'm a bit of a noob. I was wondering if there's a way to get the new update without losing all my work? If not can I just get the "already caught" icon added to my game?

    Thanks in advance.
     

    Maruno

    Lead Dev of Pokémon Essentials
    5,286
    Posts
    16
    Years
    • Seen yesterday
    Hey! The new release sounds pretty cool. I just started with Pokemon Essentials kit last week and I'm a bit of a noob. I was wondering if there's a way to get the new update without losing all my work? If not can I just get the "already caught" icon added to my game?

    Thanks in advance.
    If all you've done are map changes, then you can just use the new version and copy across the map files from your old game (in the Data folder). If you've made script changes, follow the below instructions:



    In PokeBattle_Battler, at the top where it lists all the attributes, add the line attr_accessor :owned.

    Further down, in pbInitPokemon, add the line @owned=($Trainer.owned[pkmn.species] && [email protected]).

    Just below that, in pbInitBlank, add the line @owned=false.

    In PokeBattle_ActualScene, around line 590 in the def refresh, add the following lines:

    Code:
        if @battler.owned && (@battler.index==1 || @battler.index==3)
          imagepos=[["Graphics/Pictures/databoxowned.png",@spritebaseX+14,@spritebaseY+28,0,0,-1,-1]]
          pbDrawImagePositions(self.bitmap,imagepos)
        end
    Be sure to put that above the code that adds in the status icon (because the status goes over the caught icon). Put an image called databoxowned.png in your Pictures folder.
     
    302
    Posts
    13
    Years
    • Seen Aug 25, 2014
    Hell to the yes. I'm going to have to do some work in re-importing my custom stuff to this new version but still hell to the yes! xD
     

    Pharetra

    zzzz
    451
    Posts
    12
    Years
    • Seen Apr 22, 2024
    Maruno, do you have a changelog of all edited stuff in this version?
    It's more easy for me to upgrade then :p
     
    Status
    Not open for further replies.
    Back
    Top