Pokémon/Behaviour

Revision as of 00:43, 19 May 2023 by Blob (talk | contribs) (→‎PokemonBehaviour: canSwimInLava - "the Pokémon can swim in lava without taking damage." The taking damage part should be for hurtByLava, and this is only if it can swim or float if I'm not mistaken)

Pokémon Behaviour

A Pokémon's AI behaviour is configurable from their species JSON. This is used control whether it can walk, swim, or fly as well as the speed it moves while doing each of those, whether or not it can fall asleep, and various other things.

The default is a land-moving AI that moves at a brisk pace, cannot breathe underwater, and does not sleep.

PokemonBehaviour

Option Details
moving A set of properties relating to the movement of a Pokémon.


Option Details
walk A set of properties that control the land walking of a Pokémon.


Option Details
canWalk A true/false value. If false, the Pokémon cannot move over land.
walkSpeed The base speed of the Pokémon when moving over land, defaulting to 0.35.
swim A set of properties that control the swimming (through water or lava) of a Pokémon.


Option Details
canSwimInWater A true/false value. If true, the Pokémon can swim in water.
canBreatheUnderwater A true/false value. If false, the Pokémon will drown if it stays submerged in water for too long.
canWalkOnWater A true/false value. If true, the Pokémon will move across the top of water as if it's walking on it.
canSwimInLava A true/false value. If true, the Pokémon can swim in lava.
canBreatheUnderlava A true/false value. If false, the Pokémon will drown if it stays submerged in lava for too long.
canWalkOnLava A true/false value. If true, the Pokémon will move across the top of lava as if it's walking on it.
hurtByLava A true/false value. If false, the Pokémon will not take damage in lava.
swimSpeed The base speed of the Pokémon when moving through fluids, defaulting to 0.3.
fly A set of properties that control the flight through the air of a Pokémon.


Option Details
canFly A true/false value. If true, the Pokémon is capable of flying through the air.
flySpeedHorizontal The horizontal speed of the Pokémon when flying, defaulting to 0.3.
canLook A true/false value. If false, the Pokémon will not even turn to look at nearby entities.
resting A set of properties relating to how and when the Pokémon sleeps, if it sleeps at all.


Option Details
canSleep A true/false value. If it's true, then it can fall asleep if it is a wild Pokémon. Many other options exist as filters for when a Pokémon can fall asleep in nature and all require this option to be set to true.
times A time range for when it can sleep, which can be abbreviations or tick ranges and can be combined with commas. Examples: "day", "night", "dawn,dusk", "1200-2400,morning". This is the same format as the time range controls in Spawner Conditions.
sleepChance The chance (per tick) of a Pokémon falling asleep. By default it is 0.0017 which roughly equates to it taking an average of 30 seconds to fall asleep.
blocks A list of block conditions, one of which must be met for the Pokémon to be able to sleep on the block. Block conditions can be either the name of the block or a tag that the block must be in.
biomes A list of biome conditions, one of which must be met for the Pokémon to be able to sleep in the biome. Biome conditions can be either the name of the biome or a tag that the biome must be in.
light A light level or level range, between 0 and 15, which represents the light levels in which the Pokémon is able to sleep. If you set this option to "15", then the Pokémon can only fall asleep in maximum light. If you set this option to "0-7", then it can only fall asleep when it's fairly dark. Template:Mc.
depth The depth of the sleep. This is a classification on what things can interrupt the sleep and make the Pokémon wake up. If you set it to "normal" then it will wake up when a non-sneaking player is within 16 blocks of the Pokémon. Another option is "comatose", and this causes the Pokémon to sleep through pretty much anything. You can add new sleep depths using the SleepDepth API.
willSleepOnBed A true/false value. If true, the Pokémon will try to sleep on top of the player's bed when they hop into it, much like cats.

Examples

Examples from existing species JSONs:

Charmander

   "behaviour": {
       "resting": {
           "canSleep": true,
           "willSleepOnBed": true,
           "depth": "normal",
           "light": "0-2"
       }
   },


Charizard

   "behaviour": {
       "moving": {
           "fly": {
               "canFly": true,
               "flySpeedHorizontal": 0.6
           }
       }
   },


Lapras

   "behaviour": {
       "moving": {
           "swim": {
               "canWalkOnWater": true,
               "canSwim": true,
               "canBreatheUnderwater": true
           }
       }
   },