Essentials Docs Wiki

The Essentials wiki has moved and is now at: Essentials Engine wiki

This wiki will no longer be updated.

READ MORE

Essentials Docs Wiki
Advertisement
ShadowPokemon

Encountering a Shadow Electabuzz

This page describes Shadow Pokémon, a variant of Pokémon that have had the door to their heart shut.

Shadow Pokémon[]

Shadow Pokémon are a special kind of Pokémon. Their "door to their heart" has been fully closed, allowing them access to powerful Shadow moves which are super-effective against every Pokémon type (except Shadow), but they cannot gain experience points. By battling with them, their heart's door will open, and once it has been fully opened they can be purified back to regular Pokémon.

Sprites and icons[]

Shadow Pokémon appear different to their non-Shadow counterparts, typically having a purple tint to them. You will need to create new sprites and icons for species which have Shadow Pokémon, which show this alternate colouration. You will need to make sure you have all the graphics you need for this.

The sprite and icon files should have "_shadow" at the end of their file names.

Enabling Shadow Pokémon[]

ShadowSummary

Summary screen for a Shadow Pokémon

There are several things you need to do in order to have Shadow Pokémon in your game.

Define the Shadow type[]

Main article: Defining a type

Edit the PBS file "types.txt" to include the following type:

[SHADOW]
Name = Shadow
IconPosition = 19
IsSpecialType = true

The Shadow type's IconPosition may be different in your game, depending on which other types you have.

The interactions of Shadow moves are hardcoded: they are not very effective if used on a Shadow Pokémon or super-effective if used on a non-Shadow Pokémon.

Add in Shadow moves[]

Main article: Defining a move

Edit the PBS file "moves.txt" to include the following lines:

[SHADOWEND]
Name = Shadow End
Type = SHADOW
Category = Special
Power = 120
Accuracy = 60
TotalPP = 0
Target = NearOther
FunctionCode = UserLosesHalfHP
Flags = Contact,CanProtect
Description = A shadowy aura ram attack that also rebounds on the user.
#-------------------------------
[SHADOWSTORM]
Name = Shadow Storm
Type = SHADOW
Category = Special
Power = 95
Accuracy = 100
TotalPP = 0
Target = AllFoes
FunctionCode = DoublePowerIfTargetUnderwater
Flags = CanProtect
Description = A shadowy aura is used to whip up a vicious tornado.
#-------------------------------
[SHADOWBLAST]
Name = Shadow Blast
Type = SHADOW
Category = Special
Power = 80
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = None
Flags = CanProtect,HighCriticalHitRate
Description = A wicked blade of air is formed using a shadowy aura.
#-------------------------------
[SHADOWBOLT]
Name = Shadow Bolt
Type = SHADOW
Category = Special
Power = 75
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = ParalyzeTarget
Flags = CanProtect
EffectChance = 10
Description = A shadowy thunder attack that may paralyze.
#-------------------------------
[SHADOWBREAK]
Name = Shadow Break
Type = SHADOW
Category = Physical
Power = 75
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = None
Flags = Contact,CanProtect
Description = A shattering ram attack with a shadowy aura.
#-------------------------------
[SHADOWCHILL]
Name = Shadow Chill
Type = SHADOW
Category = Special
Power = 75
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = FreezeTarget
Flags = CanProtect
EffectChance = 10
Description = A shadowy ice attack that may freeze.
#-------------------------------
[SHADOWFIRE]
Name = Shadow Fire
Type = SHADOW
Category = Special
Power = 75
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = BurnTarget
Flags = CanProtect
EffectChance = 10
Description = A shadowy fireball attack that may inflict a burn.
#-------------------------------
[SHADOWRAVE]
Name = Shadow Rave
Type = SHADOW
Category = Special
Power = 70
Accuracy = 100
TotalPP = 0
Target = AllFoes
FunctionCode = None
Flags = CanProtect
Description = A shadowy aura in the ground is used to launch spikes.
#-------------------------------
[SHADOWRUSH]
Name = Shadow Rush
Type = SHADOW
Category = Physical
Power = 55
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = None
Flags = Contact,CanProtect
Description = A reckless move that also hurts the user.
#-------------------------------
[SHADOWWAVE]
Name = Shadow Wave
Type = SHADOW
Category = Special
Power = 50
Accuracy = 100
TotalPP = 0
Target = AllFoes
FunctionCode = None
Flags = CanProtect
Description = Shadowy aura waves are loosed to inflict damage.
#-------------------------------
[SHADOWBLITZ]
Name = Shadow Blitz
Type = SHADOW
Category = Physical
Power = 40
Accuracy = 100
TotalPP = 0
Target = NearOther
FunctionCode = None
Flags = Contact,CanProtect
Description = A Pokémon throws this tackle while casting a shadowy aura.
#-------------------------------
[SHADOWDOWN]
Name = Shadow Down
Type = SHADOW
Category = Status
Accuracy = 100
TotalPP = 0
Target = AllFoes
FunctionCode = LowerTargetDefense2
Flags = CanProtect
Description = A shadowy aura sharply cuts the foe's Defense.
#-------------------------------
[SHADOWHALF]
Name = Shadow Half
Type = SHADOW
Category = Status
Accuracy = 100
TotalPP = 0
Target = AllBattlers
FunctionCode = AllBattlersLoseHalfHPUserSkipsNextTurn
Flags = CanProtect
Description = A shadowy aura's energy cuts everyone's HP by half.
#-------------------------------
[SHADOWHOLD]
Name = Shadow Hold
Type = SHADOW
Category = Status
Accuracy = 100
TotalPP = 0
Target = AllFoes
FunctionCode = TrapTargetInBattle
Flags = CanProtect
Description = The opponent Pokémon cannot escape.
#-------------------------------
[SHADOWMIST]
Name = Shadow Mist
Type = SHADOW
Category = Status
Accuracy = 100
TotalPP = 0
Target = AllFoes
FunctionCode = LowerTargetEvasion2
Flags = CanProtect
Description = A shadowy aura sharply cuts the foe's evasiveness.
#-------------------------------
[SHADOWPANIC]
Name = Shadow Panic
Type = SHADOW
Category = Status
Accuracy = 90
TotalPP = 0
Target = AllFoes
FunctionCode = ConfuseTarget
Flags = CanProtect,Sound
Description = A shadowy aura emanates to confuse the foe.
#-------------------------------
[SHADOWSHED]
Name = Shadow Shed
Type = SHADOW
Category = Status
Accuracy = 100
TotalPP = 0
Target = BothSides
FunctionCode = RemoveAllScreens
Flags = CanProtect
Description = A shadowy aura eliminates Reflect and similar moves.
#-------------------------------
[SHADOWSKY]
Name = Shadow Sky
Type = SHADOW
Category = Status
Accuracy = 100
TotalPP = 0
Target = BothSides
FunctionCode = StartShadowSkyWeather
Flags = CanProtect
Description = Darkness hurts all but Shadow Pokémon for 5 turns.

These moves already have their function code effects coded, so this is all you need to do here.

Note that the PP of Shadow moves is 0. This means that they are infinite use.

Aside from the PP, there is nothing special about these moves, and they can be given to Pokémon in the same way as any other move. However, Shadow moves typically can only be obtained by Shadow Pokémon, and only by the method mentioned below.

PBS file "shadow_pokemon.txt"[]

The PBS file "shadow_pokemon.txt" lists a number of Pokémon species, and each one has a defined Heart Gauge size and a set of moves it will know when it becomes a Shadow Pokémon (i.e. when it is created). For example:

[BEEDRILL]
GaugeSize = 4500
Moves = SHADOWBLITZ,SHADOWHOLD
#-------------------------------
[EXEGGUTOR]
GaugeSize = 9000
Moves = SHADOWSTORM,SHADOWSHED,SHADOWHOLD,SHADOWEND
#-------------------------------
[SCIZOR]
GaugeSize = 8000
Moves = SHADOWRUSH

The default Heart Gauge size is 4000. Stronger Pokémon typically have larger Heart Gauges, which require more work to empty before they can be purified.

If a species is not given one or more moves it will know as a Shadow Pokémon, then it will know the move Shadow Rush. If Shadow Rush is not defined, the Shadow Pokémon of that species will have the usual moves it would know if it was not a Shadow Pokémon.

When a Shadow Pokémon is generated, it will first be given its initial moveset as normal. Then, starting from the first move, some/all of the initial moves are replaced with the Shadow moves defined for that species. This is its Shadow moveset. All Shadow moves will be available immediately, while the other moves are unlocked while opening that Pokémon's door to the heart.

It is recommended that you specifically define the initial movesets for all Shadow Pokémon (in the PBS file "trainers.txt"), to make sure that the appropriate moves are replaced by Shadow moves.

You don't have to list just Shadow moves in the PBS file "shadow_pokemon.txt"; you can list any move that exists.

Add in items that affect Shadow Pokémon (optional)[]

Main article: Defining an item

You can also include some items that allow the player to purify Shadow Pokémon more quickly. Add these lines into the PBS file "items.txt":

[JOYSCENT]
Name = Joy Scent
NamePlural = Joy Scents
Pocket = 1
Price = 600
FieldUse = OnPokemon
BattleUse = OnPokemon
Description = A cologne that inspires feelings of joy. It will slightly please a Shadow Pokémon.
#-------------------------------
[EXCITESCENT]
Name = Excite Scent
NamePlural = Excite Scents
Pocket = 1
Price = 800
FieldUse = OnPokemon
BattleUse = OnPokemon
Description = A cologne that inspires feelings of excitement. It will please a Shadow Pokémon.
#-------------------------------
[VIVIDSCENT]
Name = Vivid Scent
NamePlural = Vivid Scents
Pocket = 1
Price = 1200
FieldUse = OnPokemon
BattleUse = OnPokemon
Description = A cologne that inspires vivid feelings. It will greatly please a Shadow Pokémon.
#-------------------------------
[TIMEFLUTE]
Name = Time Flute
NamePlural = Time Flutes
Pocket = 1
Price = 0
FieldUse = OnPokemon
Description = A marvellous flute that can summon Celebi to instantly purify a Shadow Pokémon.

Their effects are already defined in the script section ShadowPokemon_Other. These items should have icons just like any other item.

Giving enemy trainers a Shadow Pokémon[]

Main article: Defining a trainer

Shadow Pokémon are typically owned by an enemy trainer. To give an enemy trainer a Shadow Pokémon is a simple matter: simply define the trainer's party as normal, then set the Pokémon's "Shadow" property to TRUE.

Shadow Pokémon in battle[]

Hyper Mode[]

Most Shadow moves will cause the user to enter Hyper Mode after using them.

While a Shadow Pokémon is in Hyper Mode:

  • It will take some damage at the end of each turn. This damage is the same as that inflicted by being confused.
  • There is a chance that it will disobey the player if it is ordered to use a non-Shadow move.
  • Any Shadow move it uses has an increased critical hit rate.

Calling to the Shadow Pokémon will cause it to snap out of Hyper Mode. Calling is only possible in trainer battles if the Shadow type is defined.

Snagging Shadow Pokémon[]

Shadow Pokémon can be captured from other trainers by using a Snag Ball. Any type of Poké Ball can be a Snag Ball. A Snag Ball works in exactly the same way as any other Poké Ball, except it can also capture a Shadow Pokémon that is owned by another trainer.

To make all Poké Balls work as Snag Balls, simply use:

$player.has_snag_machine = true

Alternatively, if you want to make one particular Poké Ball item into a Snag Ball, you will need to edit that Poké Ball's definition in the PBS file "items.txt" to give it the flag "SnagBall".

When a Shadow Pokémon has been captured, its species is recorded as caught with $player.pokedex.set_shadow_pokemon_owned(species). You can use $player.pokedex.owned_shadow_pokemon?(species) to check whether a given species has been caught by the player. This information can be used to alter future trainer battles (e.g. rematches where the trainer may or may not have their Shadow Pokémon depending on whether the player caught it). There is no equivalent recording of whether the player has simply seen a Shadow Pokémon.

Purification[]

A Shadow Pokémon can have its heart gauge reduced in a number of ways:

  • Walking around with it in the party (every 256 steps).
  • Walking around with it in the Purification Chamber (every step).
  • Sending it into battle.
  • Snapping it out of Hyper Mode by calling to it.
  • Using the Joy Scent, Excite Scent, Vivid Scent or Time Flute on it.

Once its heart gauge has reached zero, a message will state that it is ready to be purified.

When a Shadow Pokémon is purified:

  • It forgets all its Shadow moves, and its moveset is reset to its initial one.
  • It immediately regains all Exp and EVs that it would have gained from battles it was involved in. It immediately jumps to the level it would end up at, rather than going through all levels leading up to it. If it can learn a move at its resulting level, it will try to learn it.
  • It gains the National Ribbon.
  • The player is given the chance to nickname it.

Relic Stone[]

The Relic Stone is a special location where Shadow Pokémon can be turned back into regular Pokémon. This can only be done if the Shadow Pokémon's heart gauge is empty.

To start the purification process at the Relic Stone, use the script:

pbRelicStone

Purification Chamber[]

The Purification Chamber is a way to lower a Shadow Pokémon's heart gauge.

The option to access it is in the PC menu alongside Pokémon storage and the player's PC. The option will only be shown if the variable $player.seen_purify_chamber is TRUE.

To access the Purification Chamber, use the script:

pbPurifyChamber

Tips[]

  • In Pokémon XD, Miror B. would collect any Shadow Pokémon the player knocked out, and would occasionally appear with these Pokémon. You could add a similar feature to your game, using $player.pokédex.owned_shadow_pokemon?(species) in conjunction with a list of Shadow Pokémon you have fought so far to determine which Shadow Pokémon Miror B. can have.
  • Lugia was a special Shadow Pokémon, in that it couldn't be purified unless the Purification Chamber's tempo was at maximum. You could make your own special Shadow Pokémon with their own unique features.
  • Why not give the player the ability to turn regular Pokémon into Shadow Pokémon?
  • Don't limit yourself to the Shadow moves/items listed above. Try inventing your own!
Advertisement