• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Trading Card Game 2 protagonist in the poll by clicking here.
  • 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.
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
 
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.
 
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.
 
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 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
 
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?
 
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.
 
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.
 
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:
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!
 
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:
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.
 
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.
 
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.
 
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.
 
It's taken a little longer this time, but once again...

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

Link: (broken link removed)

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