# Cannot Create an Ability past 256

#### BlowDryGuy

##### Rookie
Member
First off, I am using an older version of Essentials (v15) and I cannot update to a newer version so please do not tell me to update.
I am running into an issue where I cannot create a new ability past 256. In the PBS file, I have ability 256 defined as so:
However, when I give the ability Headache to a pokemon, when I play the game it has no ability.
Then, when I give a pokemon ability number 257:
257,INNARDSOUT,Innards Out,"When user fnt, deals dmg equal to current HP."
It gives them ability number 1, Stench.
Then when I give a pokemon ability number 258:
258,LIGHTARMOR,Light Armor,"Reduces damage from Dark moves."
They get ability number 2, Drizzle.

It seems to be looping back on the abilities once it reaches 256 for whatever reason. Does anyone have any idea how I can fix this?

#### Ash2louis

##### Rookie
Member
Why don't you try make a pbs file called ability_2 I doubt it will work but u can try

#### NoodlesButt

Member
Why don't you try make a pbs file called ability_2 I doubt it will work but u can try
No idea where you got this idea from but it won't work.

First off, I am using an older version of Essentials (v15) and I cannot update to a newer version so please do not tell me to update.
I am running into an issue where I cannot create a new ability past 256. In the PBS file, I have ability 256 defined as so:

However, when I give the ability Headache to a pokemon, when I play the game it has no ability.
Then, when I give a pokemon ability number 257:

It gives them ability number 1, Stench.
Then when I give a pokemon ability number 258:

They get ability number 2, Drizzle.

It seems to be looping back on the abilities once it reaches 256 for whatever reason. Does anyone have any idea how I can fix this?
Pokémon Essentials v15 and lower can only have 256 abilities. v16 and higher can have 65535 abilities sooooo.... update to a newer version.

#### BlowDryGuy

##### Rookie
Member
No idea where you got this idea from but it won't work.

Pokémon Essentials v15 and lower can only have 256 abilities. v16 and higher can have 65535 abilities sooooo.... update to a newer version.
Its too late to update, I cannot. What was changed that allows v16 to have 65535 abilities? If I can just figure out what was changed then I can easily fix this problem.

#### Ash2louis

##### Rookie
Member
Like I said I doubt it will work

#### MGriffin

##### Trainer
Member
I imagine that somewhere in Essentials v15 are some lines that look like "ability = dexdata.fgetb" (fgetb reads a byte, i.e. a number 0–255).

I assume Essentials v17 uses fgetw:

Code:
pokemon-essentials\$ git g "ability.*fget"
Data/Scripts.rxdata
93351=# PBattle_OrgBattleRules.rb
93770:    ability1=dexdata.fgetw
93771:    ability2=dexdata.fgetw
106090=# Editor_Screens.rb
106934:          ability1       = dexdata.fgetw
106935:          ability2       = dexdata.fgetw
106969:          hiddenability1 = dexdata.fgetw
106970:          hiddenability2 = dexdata.fgetw
106971:          hiddenability3 = dexdata.fgetw
106972:          hiddenability4 = dexdata.fgetw
107701=# Editor_SaveData.rb
108268:    ability1       = dexdata.fgetw
108269:    ability2       = dexdata.fgetw
108295:    hiddenability1 = dexdata.fgetw
108296:    hiddenability2 = dexdata.fgetw
108297:    hiddenability3 = dexdata.fgetw
108298:    hiddenability4 = dexdata.fgetw
108538:    origdata["ability1"]       = dexdata.fgetw
108539:    origdata["ability2"]       = dexdata.fgetw
108565:    origdata["hiddenability1"] = dexdata.fgetw
108566:    origdata["hiddenability2"] = dexdata.fgetw
108567:    origdata["hiddenability3"] = dexdata.fgetw
108568:    origdata["hiddenability4"] = dexdata.fgetw
108575:    ability1       = dexdata.fgetw
108576:    ability2       = dexdata.fgetw
108602:    hiddenability1 = dexdata.fgetw
108603:    hiddenability2 = dexdata.fgetw
108604:    hiddenability3 = dexdata.fgetw
108605:    hiddenability4 = dexdata.fgetw

Good luck making your changes! I imagine that you'll have to mess about with how dexdata is compiled (this is probably in Compiler) to make sure that the amount of data you try to read back is the amount that is written.