<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pmdo.pmdcollab.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FlowerSnek</id>
	<title>PMDOWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pmdo.pmdcollab.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FlowerSnek"/>
	<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/Special:Contributions/FlowerSnek"/>
	<updated>2026-07-31T05:40:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Draft:Particles_Tutorial&amp;diff=8167</id>
		<title>Draft:Particles Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Draft:Particles_Tutorial&amp;diff=8167"/>
		<updated>2026-04-05T21:17:48Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== Displaying a static particle ==&lt;br /&gt;
&lt;br /&gt;
To display a particle effect in a static location:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_data = RogueEssence.Content.AnimData(&amp;quot;Lock_On&amp;quot;, 3, -1, -1, 255, Dir8.None)&lt;br /&gt;
	local emitter = RogueEssence.Content.SingleEmitter(anim_data)&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
First, we create an AnimData object, which has the animation we want to display. This AnimData has the following parameters listed:&lt;br /&gt;
&lt;br /&gt;
* AnimIndex: The string ID of the particle animation to play. Here, we set it to &amp;quot;Lock_On&amp;quot;, so the particle uses the Lock-On animation.&lt;br /&gt;
&lt;br /&gt;
* FrameTime: An integer amount of time, in frames, to spend on each frame of the animation. Here, we set it to 3, so the Lock-On animation will play at 60/3, or 20, FPS.&lt;br /&gt;
&lt;br /&gt;
* StartFrame: The frame to start the animation on. Setting it to -1, as we do here, will cause the animation to play from the beginning.&lt;br /&gt;
&lt;br /&gt;
* EndFrame: The frame to end the animation on. Setting it to -1, as we do here, will cause the animation to end after the last frame.&lt;br /&gt;
&lt;br /&gt;
* Alpha: The opacity of the particle. Set it to 255 to make it completely opaque, or 0 to make it completely transparent.&lt;br /&gt;
&lt;br /&gt;
* AnimFlip: Determines whether the particle is flipped in a particular direction. We don&#039;t want to flip the particle, so we just set it to Dir8.None.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we create our particle emitter. The SingleEmitter displays a single particle in a single location, and plays its animation to completion. We pass the SingleEmitter our animation data, setting it to play that particle animation.&lt;br /&gt;
&lt;br /&gt;
Now that we have our emitter all set up, we just have to play it. The &amp;quot;activator&amp;quot; here is a reference to the character that the particles will play at the position of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Static particles 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once an emitter has been created, it can be used for multiple particles at several different locations. As an example, this code plays the above Lock-On particle four times around a central point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X - 16, activator.Bounds.Center.Y)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X + 16, activator.Bounds.Center.Y)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y - 16)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y + 16)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Static particles 2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Displaying a moving particle ==&lt;br /&gt;
&lt;br /&gt;
The MoveToEmitter is a particle emitter that moves from one point in space to another over a fixed time.&lt;br /&gt;
&lt;br /&gt;
This code creates a moving Mist Ball particle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local emitter = RogueEssence.Content.MoveToEmitter()&lt;br /&gt;
	emitter.Anim = RogueEssence.Content.AnimData(&amp;quot;Mist_Ball&amp;quot;, 3, -1, -1, 127, Dir8.None)&lt;br /&gt;
	emitter.ResultLayer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.OffsetStart = RogueElements.Loc(-50, 0)&lt;br /&gt;
	emitter.OffsetEnd = RogueElements.Loc(50, 0)&lt;br /&gt;
	emitter.HeightStart = -16&lt;br /&gt;
	emitter.HeightEnd = 16&lt;br /&gt;
	emitter.MoveTime = 180&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The AnimData for the MoveToEmitter is formatted the same was as it was for the Lock-On particle. The only difference, aside from the particle name, is that we&#039;ve set the Alpha to 127, so the particle is translucent.&lt;br /&gt;
&lt;br /&gt;
However, this MoveToEmitter has several parameters of its own that control how the particle moves:&lt;br /&gt;
&lt;br /&gt;
* ResultLayer: We can manually specify a layer that the particle will be drawn on. Setting it to RogueEssence.Content.DrawLayer.Front ensures that it renders in front of all other particles. The layers you can use are:&lt;br /&gt;
** Under: Draws on the floor, behind all entities and tiles.&lt;br /&gt;
** Bottom: Draws on the floor, behind entities, but not tiles.&lt;br /&gt;
** Back: Draws in front of entities if placed at a higher Y coordinate, but draws behind entities in a tie.&lt;br /&gt;
** Normal: Draws behind entities if placed at a lower Y coordinate, but draws in front of entities in a tie.&lt;br /&gt;
** Front: Draws in front of entities.&lt;br /&gt;
** Top: Draws on top of everything else.&lt;br /&gt;
** NoDraw: Does not render.&lt;br /&gt;
&lt;br /&gt;
* OffsetStart: Controls where the particle starts, relative to its display position. This particle will start 50 pixels to the left of Pikachu.&lt;br /&gt;
&lt;br /&gt;
* OffsetEnd: Controls where the particle ends, relative to its display position. This particle will end 50 pixels to the right of Pikachu.&lt;br /&gt;
&lt;br /&gt;
* HeightStart: Adds an additional height offset to the particle at the start of its journey. Note that the height here is added to the object, so unlike with locations, increasing the height value will cause the particle to rise. This particle will start 16 units below Pikachu.&lt;br /&gt;
&lt;br /&gt;
* HeightEnd: Adds an additional height offset to the particle at the end of its journey. This particle will end 16 units above Pikachu.&lt;br /&gt;
&lt;br /&gt;
* MoveTime: Controls the lifetime of the particle. It goes in frames, so our MoveTime of 45 will cause the particle to be displayed for three quarters of a second.&lt;br /&gt;
&lt;br /&gt;
Note that, unlike a SingleEmitter, a MoveToEmitter will loop its particle animation until its MoveTime has elapsed. So, the Mist Ball animation will stay looping until it completes its path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Mist ball particle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This emitter can also be useful for creating a spray of particles in a given direction.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating particles in an area ==&lt;br /&gt;
&lt;br /&gt;
=== Creating a ring of particles ===&lt;br /&gt;
&lt;br /&gt;
The StaticAreaEmitter is used to create a burst of multiple different particle types in a ring.&lt;br /&gt;
&lt;br /&gt;
This code creates a ring of blue music note particles around the emitter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None)})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.StaticAreaEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 32&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unlike with previous emitters, the StaticAreaEmitter takes an array of AnimData objects. So, we first create an array of AnimData objects, and then populate it with the particle types we want. Here, we just want one particle type: the blue music note.&lt;br /&gt;
&lt;br /&gt;
The Layer works the same as the DrawLayer from MoveToEmitter earlier. However, this StaticAreaEmitter has its own properties:&lt;br /&gt;
&lt;br /&gt;
* Range: The radius around which particles are generated.&lt;br /&gt;
&lt;br /&gt;
* Bursts: How many separate times particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* ParticlesPerBurst: How many particles are created at random points in the radius in each burst.&lt;br /&gt;
&lt;br /&gt;
* BurstTime: The delay between each burst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ring particles 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Multiple different particle types can be passed to this emitter, and they will be selected from randomly. Replace the anim_list definition above with this code, and four different music note particles will be used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 10, 10, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 20, 20, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 30, 30, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ring particles 2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating an area of static particles ===&lt;br /&gt;
&lt;br /&gt;
The FiniteAreaEmitter is used to create particles in a whole circular area, and not just at the edge. The particles start at the center and spread out to the edge over a fixed period of time.&lt;br /&gt;
&lt;br /&gt;
This code creates a mixture of leaf particles and music notes in an area centered around the entity.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 10, 10, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 20, 20, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 30, 30, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteAreaEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 48&lt;br /&gt;
	emitter.Speed = 96&lt;br /&gt;
	emitter.TotalParticles = 30&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The FiniteAreaEmitter&#039;s relevant parameters are:&lt;br /&gt;
&lt;br /&gt;
* Range: The radius particles will extend to at the end of the burst.&lt;br /&gt;
&lt;br /&gt;
* Speed: The amount of pixels the radius extends by per second. Here, we have it set to 96, so it reaches the end in half a second.&lt;br /&gt;
&lt;br /&gt;
* TotalParticles: The total amount of particles created in the burst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Finite area emitter.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating an area of moving particles ===&lt;br /&gt;
&lt;br /&gt;
If you want the particles to move in a certain direction after being spawned, use a FiniteSprinkleEmitter.&lt;br /&gt;
&lt;br /&gt;
This code creates a slow cloud of Ice Shard sparkle particles that drift slowly down and to the side:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 1, 1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 2, 2, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 3, 3, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteSprinkleEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 80&lt;br /&gt;
	emitter.Speed = 80&lt;br /&gt;
	emitter.HeightSpeed = -16&lt;br /&gt;
	emitter.SpeedDiff = 12&lt;br /&gt;
	emitter.TotalParticles = 60&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In addition to all the variables possessed by the FiniteAreaEmitter, the FiniteSprinkleEmitter has these additional variables:&lt;br /&gt;
&lt;br /&gt;
* HeightSpeed: How much the particles&#039; height will change as they drift. Here, we have it set to -16, so each sparkle goes down by 16 pixels from start to finish.&lt;br /&gt;
&lt;br /&gt;
* SpeedDiff: The maximum extent to which the particles will drift to the side as they move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Finite sprinkle emitter.png]]&lt;br /&gt;
&lt;br /&gt;
== Making particles move to and from a specific point ==&lt;br /&gt;
&lt;br /&gt;
=== Particles moving from the exterior to the center ===&lt;br /&gt;
&lt;br /&gt;
The FiniteGatherEmitter is used to spawn particles at the edge of its range, then have them move towards the center. Like the FiniteAreaEmitter, it can take a list of multiple particles to spawn randomly.&lt;br /&gt;
&lt;br /&gt;
This example spawns Ice Shard sparkle particles around the character and has them move towards the origin.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 1, 1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 2, 2, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 3, 3, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteGatherEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.TravelTime = 40&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartDistance = 64&lt;br /&gt;
	emitter.EndDistance = 8&lt;br /&gt;
	emitter.StartVariance = 16&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This emitter spawns particles in bursts, much like the FiniteAreaEmitter. However, it has its own unique variables as well:&lt;br /&gt;
&lt;br /&gt;
* TravelTime: How many frames it takes for the particles to move from the exterior to the origin.&lt;br /&gt;
&lt;br /&gt;
* StartDistance: The radius at which the particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* EndDistance: The radius at which the particles stop moving. If this is larger than the StartDistance, then the particles will scatter randomly.&lt;br /&gt;
&lt;br /&gt;
* StartVariance: A random variance applied to the StartDistance, so the particles don&#039;t all spawn at the same location.&lt;br /&gt;
&lt;br /&gt;
* Cycles: Controls how many animation cycles the particles will play while converging. For example, if Cycles is set to 10, then the particles will loop their animation 10 times before reaching the center.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Converging particles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Particles moving from the center to the exterior ===&lt;br /&gt;
&lt;br /&gt;
The FiniteReleaseEmitter spawns particles within a small radius, and the particles move to a larger radius before disappearing. It can also take a list of multiple particles to spawn randomly. Unlike the FiniteGatherEmitter, the particles will despawn when their animation is complete instead of when reaching a target radius.&lt;br /&gt;
&lt;br /&gt;
This example creates heart and sparkle particles that travel outwards at a fast speed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Captivate_Heart&amp;quot;, 5, -1, -1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 5, -1, -1, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteReleaseEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartDistance = 8&lt;br /&gt;
	emitter.Speed = 120&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The unique variables for the FiniteReleaseEmitter are:&lt;br /&gt;
&lt;br /&gt;
* StartDistance: The radius at which the particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* Speed: How many pixels per second, NOT per frame, the particles move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Diverging particles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating background overlays with particles ==&lt;br /&gt;
&lt;br /&gt;
To display a static background image for a given amount of time, a FlashEmitter is used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local bg_anim = RogueEssence.Content.BGAnimData(&amp;quot;Cosmic_Power&amp;quot;, 0, 0, 0, 255, Dir8.None)&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FlashEmitter()&lt;br /&gt;
	emitter.Anim = bg_anim&lt;br /&gt;
	emitter.Layer = DrawLayer.Bottom&lt;br /&gt;
	&lt;br /&gt;
	emitter.FadeInTime = 30&lt;br /&gt;
    emitter.HoldTime = 120&lt;br /&gt;
    emitter.FadeOutTime = 30&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartColor = Color.White&lt;br /&gt;
	emitter.EndColor = Color.White&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, GAME:GetCameraCenter().X, GAME:GetCameraCenter().Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, we create a BGAnimData object to hold the animation for the background. We set the layer to be DrawLayer.Bottom, so the background image renders under all characters in the scene. When we play the emitter, we have to do so at the camera&#039;s position; otherwise, the background will be located at the top left of the current ground map.&lt;br /&gt;
&lt;br /&gt;
The emitter itself has the following parameters:&lt;br /&gt;
&lt;br /&gt;
* FadeInTime: How long it takes, in frames, for the background to fade in.&lt;br /&gt;
&lt;br /&gt;
* HoldTime: How long, in frames, the background is displayed for.&lt;br /&gt;
&lt;br /&gt;
* FadeOutTime: How long it takes, in frames, for the background to fade out.&lt;br /&gt;
&lt;br /&gt;
* StartColor: Color wash applied to the background at the start of the animation. Here, it&#039;s set to Color.White, so no color wash is applied.&lt;br /&gt;
&lt;br /&gt;
* EndColor: Color wash the background fades to by the end of the animation. Here, it&#039;s set to Color.White, so no color wash is applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Static bg flash.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This background is static. If you want to display a moving background, you need to use a FiniteOverlayEmitter.&lt;br /&gt;
&lt;br /&gt;
This code creates a Leaf Storm background that moves quickly to the left, taking up the entire screen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local bg_anim = RogueEssence.Content.BGAnimData(&amp;quot;Leaf_Storm&amp;quot;, 10, -1, -1, 255, Dir8.None)&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteOverlayEmitter()&lt;br /&gt;
	emitter.Anim = bg_anim&lt;br /&gt;
	emitter.Layer = DrawLayer.Bottom&lt;br /&gt;
	&lt;br /&gt;
	emitter.Movement = RogueElements.Loc(-80, 0)&lt;br /&gt;
	&lt;br /&gt;
    emitter.TotalTime = 180&lt;br /&gt;
	emitter.FadeIn = 10&lt;br /&gt;
    emitter.FadeOut = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.RepeatX = true&lt;br /&gt;
	emitter.RepeatY = true&lt;br /&gt;
	&lt;br /&gt;
	emitter.Color = Color.White&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, GAME:GetCameraCenter().X, GAME:GetCameraCenter().Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This emitter has the following parameters:&lt;br /&gt;
&lt;br /&gt;
* TotalTime: How long the overlay lasts for, in frames.&lt;br /&gt;
&lt;br /&gt;
* FadeIn: How long it takes the overlay to fade in, in frames. Cuts into TotalTime.&lt;br /&gt;
&lt;br /&gt;
* FadeOut: How long it takes the overlay to fade out, in frames. Cuts into TotalTime.&lt;br /&gt;
&lt;br /&gt;
* RepeatX: Whether the overlay loops horizontally.&lt;br /&gt;
&lt;br /&gt;
* RepeatY: Whether the overlay loops vertically.&lt;br /&gt;
&lt;br /&gt;
* Color: Applies a color wash to the background. Here, it&#039;s set to Color.White, so the default colors are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Moving bg.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Raichu/Stats&amp;diff=8166</id>
		<title>Raichu/Stats</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Raichu/Stats&amp;diff=8166"/>
		<updated>2026-03-11T01:48:26Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{StatBars|&lt;br /&gt;
|hp=60&lt;br /&gt;
|atk=90&lt;br /&gt;
|def=55&lt;br /&gt;
|spa=90&lt;br /&gt;
|spd=80&lt;br /&gt;
|spe=110&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category: Pokémon stat pages]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Raichu/Stats&amp;diff=8165</id>
		<title>Raichu/Stats</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Raichu/Stats&amp;diff=8165"/>
		<updated>2026-03-11T01:48:09Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{StatBars| |hp=60 |atk=90 |def=50 |spa=90 |spd=80 |spe=110 }} &amp;lt;noinclude&amp;gt;Category: Pokémon stat pages&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{StatBars|&lt;br /&gt;
|hp=60&lt;br /&gt;
|atk=90&lt;br /&gt;
|def=50&lt;br /&gt;
|spa=90&lt;br /&gt;
|spd=80&lt;br /&gt;
|spe=110&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category: Pokémon stat pages]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Pikachu/Stats&amp;diff=8164</id>
		<title>Pikachu/Stats</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Pikachu/Stats&amp;diff=8164"/>
		<updated>2026-03-11T01:47:36Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{StatBars| |hp=35 |atk=55 |def=40 |spa=50 |spd=50 |spe=90 }} &amp;lt;noinclude&amp;gt;Category: Pokémon stat pages&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{StatBars|&lt;br /&gt;
|hp=35&lt;br /&gt;
|atk=55&lt;br /&gt;
|def=40&lt;br /&gt;
|spa=50&lt;br /&gt;
|spd=50&lt;br /&gt;
|spe=90&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category: Pokémon stat pages]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Raichu/Data&amp;diff=8163</id>
		<title>Raichu/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Raichu/Data&amp;diff=8163"/>
		<updated>2026-03-11T01:46:31Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|PokemonData}}} |pokemon_name=Raichu |pokemon_id=raichu |form_id=00 |type1=Electric |ability1=Static |ability2= |ability3=Lightning Rod |recruit=-30 |portrait=Portrait_Raichu.png }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|PokemonData}}}&lt;br /&gt;
|pokemon_name=Raichu&lt;br /&gt;
|pokemon_id=raichu&lt;br /&gt;
|form_id=00&lt;br /&gt;
|type1=Electric&lt;br /&gt;
|ability1=Static&lt;br /&gt;
|ability2=&lt;br /&gt;
|ability3=Lightning Rod&lt;br /&gt;
|recruit=-30&lt;br /&gt;
|portrait=Portrait_Raichu.png&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Electro_Ball/Data&amp;diff=8162</id>
		<title>Electro Ball/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Electro_Ball/Data&amp;diff=8162"/>
		<updated>2026-03-11T01:35:21Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Base power fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Electro Ball&lt;br /&gt;
|move_id=electro_ball&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Special&lt;br /&gt;
|power=30&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=15&lt;br /&gt;
|range=6-tile shot&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Deals more damage if the target&#039;s [[Movement Speed]] is lower than the user&#039;s.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Wild_Charge/Data&amp;diff=8161</id>
		<title>Wild Charge/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Wild_Charge/Data&amp;diff=8161"/>
		<updated>2026-03-11T01:34:00Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Wild Charge |move_id=wild_charge |type=Electric |category=Physical |power=80 |accuracy=80 |pp=16 |range=4-tile dash |target=Anyone |effects=User takes 1/6 of their max HP in recoil damage. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Wild Charge&lt;br /&gt;
|move_id=wild_charge&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Physical&lt;br /&gt;
|power=80&lt;br /&gt;
|accuracy=80&lt;br /&gt;
|pp=16&lt;br /&gt;
|range=4-tile dash&lt;br /&gt;
|target=Anyone&lt;br /&gt;
|effects=User takes 1/6 of their max HP in recoil damage.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Slam/Data&amp;diff=8160</id>
		<title>Slam/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Slam/Data&amp;diff=8160"/>
		<updated>2026-03-11T01:32:08Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Slam |move_id=slam |type=Normal |category=Physical |power=80 |accuracy=80 |pp=18 |range=In front and sides |target=Foes |effects= }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Slam&lt;br /&gt;
|move_id=slam&lt;br /&gt;
|type=Normal&lt;br /&gt;
|category=Physical&lt;br /&gt;
|power=80&lt;br /&gt;
|accuracy=80&lt;br /&gt;
|pp=18&lt;br /&gt;
|range=In front and sides&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Discharge/Data&amp;diff=8159</id>
		<title>Discharge/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Discharge/Data&amp;diff=8159"/>
		<updated>2026-03-11T01:30:40Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Discharge |move_id=discharge |type=Electric |category=Special |power=50 |accuracy=100 |pp=14 |range=4-tile area |target=Foes |effects=35% chance to inflict Paralysis. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Discharge&lt;br /&gt;
|move_id=discharge&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Special&lt;br /&gt;
|power=50&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=14&lt;br /&gt;
|range=4-tile area&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=35% chance to inflict [[Paralysis]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Nuzzle/Data&amp;diff=8158</id>
		<title>Nuzzle/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Nuzzle/Data&amp;diff=8158"/>
		<updated>2026-03-11T01:28:55Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Spelling fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Nuzzle&lt;br /&gt;
|move_id=nuzzle&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Physical&lt;br /&gt;
|power=40&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=18&lt;br /&gt;
|range=In front&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Inflicts [[Paralysis]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Nuzzle/Data&amp;diff=8157</id>
		<title>Nuzzle/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Nuzzle/Data&amp;diff=8157"/>
		<updated>2026-03-11T01:28:37Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Nuzzle |move_id=nuzzle |type=Electric |category=Physical |power=40 |accuracy=100 |pp=18 |range=In front |target=Foes |effects=Inficts Paralysis. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Nuzzle&lt;br /&gt;
|move_id=nuzzle&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Physical&lt;br /&gt;
|power=40&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=18&lt;br /&gt;
|range=In front&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Inficts [[Paralysis]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Spark/Data&amp;diff=8156</id>
		<title>Spark/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Spark/Data&amp;diff=8156"/>
		<updated>2026-03-11T01:26:44Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Fixing category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Spark&lt;br /&gt;
|move_id=spark&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Physical&lt;br /&gt;
|power=50&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=16&lt;br /&gt;
|range=2-tile dash&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=50% chance to inflict [[Paralysis]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Spark/Data&amp;diff=8155</id>
		<title>Spark/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Spark/Data&amp;diff=8155"/>
		<updated>2026-03-11T01:26:24Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Spark |move_id=spark |type=Electric |category=Status |power=50 |accuracy=100 |pp=16 |range=2-tile dash |target=Foes |effects=50% chance to inflict Paralysis. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Spark&lt;br /&gt;
|move_id=spark&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Status&lt;br /&gt;
|power=50&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=16&lt;br /&gt;
|range=2-tile dash&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=50% chance to inflict [[Paralysis]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Feint/Data&amp;diff=8154</id>
		<title>Feint/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Feint/Data&amp;diff=8154"/>
		<updated>2026-03-11T01:23:39Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Feint |move_id=feint |type=Normal |category=Status |power=40 |accuracy=100 |pp=20 |range=4-tile dash |target=Foes |effects=Pierces and lifts the effect of Protect and other protection moves. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Feint&lt;br /&gt;
|move_id=feint&lt;br /&gt;
|type=Normal&lt;br /&gt;
|category=Status&lt;br /&gt;
|power=40&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=20&lt;br /&gt;
|range=4-tile dash&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Pierces and lifts the effect of [[Protect]] and other protection moves.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Electro_Ball/Data&amp;diff=8153</id>
		<title>Electro Ball/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Electro_Ball/Data&amp;diff=8153"/>
		<updated>2026-03-11T01:22:19Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Electro Ball |move_id=electro_ball |type=Electric |category=Special |power=-- |accuracy=100 |pp=15 |range=6-tile shot |target=Foes |effects=Deals more damage if the target&amp;#039;s Movement Speed is lower than the user&amp;#039;s. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Electro Ball&lt;br /&gt;
|move_id=electro_ball&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Special&lt;br /&gt;
|power=--&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=15&lt;br /&gt;
|range=6-tile shot&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Deals more damage if the target&#039;s [[Movement Speed]] is lower than the user&#039;s.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Quick_Attack/Data&amp;diff=8152</id>
		<title>Quick Attack/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Quick_Attack/Data&amp;diff=8152"/>
		<updated>2026-03-11T01:19:10Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Quick Attack |move_id=quick_attack |type=Normal |category=Physical |power=40 |accuracy=100 |pp=20 |range=3-tile piercing dash |target=Foes |effects= }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Quick Attack&lt;br /&gt;
|move_id=quick_attack&lt;br /&gt;
|type=Normal&lt;br /&gt;
|category=Physical&lt;br /&gt;
|power=40&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=20&lt;br /&gt;
|range=3-tile piercing dash&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Play_Nice/Data&amp;diff=8151</id>
		<title>Play Nice/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Play_Nice/Data&amp;diff=8151"/>
		<updated>2026-03-11T01:17:30Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Play Nice&lt;br /&gt;
|move_id=play_nice&lt;br /&gt;
|type=Normal&lt;br /&gt;
|category=Status&lt;br /&gt;
|power=--&lt;br /&gt;
|accuracy=--&lt;br /&gt;
|pp=20&lt;br /&gt;
|range=4-tile arc&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Lowers Special Attack.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Play_Nice/Data&amp;diff=8150</id>
		<title>Play Nice/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Play_Nice/Data&amp;diff=8150"/>
		<updated>2026-03-11T01:17:16Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Play Nice |move_id=play_nice |type=Normal |category=Status |power=-- |accuracy=-- |pp=20 |range=4-tile arc |target=Foe |effects=Lowers Special Attack. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Play Nice&lt;br /&gt;
|move_id=play_nice&lt;br /&gt;
|type=Normal&lt;br /&gt;
|category=Status&lt;br /&gt;
|power=--&lt;br /&gt;
|accuracy=--&lt;br /&gt;
|pp=20&lt;br /&gt;
|range=4-tile arc&lt;br /&gt;
|target=Foe&lt;br /&gt;
|effects=Lowers Special Attack.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Thunder_Shock/Data&amp;diff=8149</id>
		<title>Thunder Shock/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Thunder_Shock/Data&amp;diff=8149"/>
		<updated>2026-03-11T01:15:39Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Formatting fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Thunder Shock&lt;br /&gt;
|move_id=thunder_shock&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Special&lt;br /&gt;
|power=30&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=20&lt;br /&gt;
|range=3-tile arc&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=35% chance to inflict [[Paralysis]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Thunder_Shock/Data&amp;diff=8148</id>
		<title>Thunder Shock/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Thunder_Shock/Data&amp;diff=8148"/>
		<updated>2026-03-11T01:15:08Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Thunder Shock |move_id=thunder_shock |type=Electric |category=Special |power=30 |accuracy=100 |pp=20 |range=3-tile arc |target=Foes |effects=35% chance to inflict {{Paralysis}}. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Thunder Shock&lt;br /&gt;
|move_id=thunder_shock&lt;br /&gt;
|type=Electric&lt;br /&gt;
|category=Special&lt;br /&gt;
|power=30&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=20&lt;br /&gt;
|range=3-tile arc&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=35% chance to inflict {{Paralysis}}.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Tail_Whip/Data&amp;diff=8147</id>
		<title>Tail Whip/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Tail_Whip/Data&amp;diff=8147"/>
		<updated>2026-03-11T01:12:59Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Tail Whip |move_id=tail_whip |type=Normal |category=Status |power=-- |accuracy=-- |pp=22 |range=1-tile cone |target=Foes |effects=Lowers Defense. }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Tail Whip&lt;br /&gt;
|move_id=tail_whip&lt;br /&gt;
|type=Normal&lt;br /&gt;
|category=Status&lt;br /&gt;
|power=--&lt;br /&gt;
|accuracy=--&lt;br /&gt;
|pp=22&lt;br /&gt;
|range=1-tile cone&lt;br /&gt;
|target=Foes&lt;br /&gt;
|effects=Lowers Defense.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Pikachu/Learnset&amp;diff=8146</id>
		<title>Pikachu/Learnset</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Pikachu/Learnset&amp;diff=8146"/>
		<updated>2026-03-11T01:10:36Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;&amp;lt;h6&amp;gt;By level up&amp;lt;/h6&amp;gt; {|- class=&amp;quot;wikitable&amp;quot; {{LearnsetHeader}} |  1 {{:Tail_Whip/Data|LearnsetRow}} |  1 {{:Thunder_Shock/Data|LearnsetRow}} |  5 {{:Growl/Data|LearnsetRow}} |  7 {{:Play_Nice/Data|LearnsetRow}} | 10 {{:Quick_Attack/Data|LearnsetRow}} | 13 {{:Electro_Ball/Data|LearnsetRow}} | 18 {{:Thunder_Wave/Data|LearnsetRow}} | 21 {{:Feint/Data|LearnsetRow}} | 23 {{:Double_Team/Data|LearnsetRow}} | 26 {{:Spark/Data|LearnsetRow}} | 29 {{:Nuzzle/Data|LearnsetRow}} | 34 {...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h6&amp;gt;By level up&amp;lt;/h6&amp;gt;&lt;br /&gt;
{|- class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{LearnsetHeader}}&lt;br /&gt;
|  1 {{:Tail_Whip/Data|LearnsetRow}}&lt;br /&gt;
|  1 {{:Thunder_Shock/Data|LearnsetRow}}&lt;br /&gt;
|  5 {{:Growl/Data|LearnsetRow}}&lt;br /&gt;
|  7 {{:Play_Nice/Data|LearnsetRow}}&lt;br /&gt;
| 10 {{:Quick_Attack/Data|LearnsetRow}}&lt;br /&gt;
| 13 {{:Electro_Ball/Data|LearnsetRow}}&lt;br /&gt;
| 18 {{:Thunder_Wave/Data|LearnsetRow}}&lt;br /&gt;
| 21 {{:Feint/Data|LearnsetRow}}&lt;br /&gt;
| 23 {{:Double_Team/Data|LearnsetRow}}&lt;br /&gt;
| 26 {{:Spark/Data|LearnsetRow}}&lt;br /&gt;
| 29 {{:Nuzzle/Data|LearnsetRow}}&lt;br /&gt;
| 34 {{:Discharge/Data|LearnsetRow}}&lt;br /&gt;
| 37 {{:Slam/Data|LearnsetRow}}&lt;br /&gt;
| 42 {{:Thunderbolt/Data|LearnsetRow}}&lt;br /&gt;
| 45 {{:Agility/Data|LearnsetRow}}&lt;br /&gt;
| 50 {{:Wild_Charge/Data|LearnsetRow}}&lt;br /&gt;
| 53 {{:Light_Screen/Data|LearnsetRow}}&lt;br /&gt;
| 58 {{:Thunder/Data|LearnsetRow}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h6&amp;gt;By TM&amp;lt;/h6&amp;gt;&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h6&amp;gt;By move tutor&amp;lt;/h6&amp;gt;&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category: Learnsets]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Faultline_Ridge.png&amp;diff=8069</id>
		<title>File:Faultline Ridge.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Faultline_Ridge.png&amp;diff=8069"/>
		<updated>2026-03-02T17:23:42Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: An image of Dugtrio in Faultline Ridge, in PMDO.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
An image of Dugtrio in Faultline Ridge, in PMDO.&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Incinerate&amp;diff=8000</id>
		<title>Incinerate</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Incinerate&amp;diff=8000"/>
		<updated>2026-02-16T20:50:32Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{:Incinerate/Data|MoveInfobox}}  &amp;#039;&amp;#039;&amp;#039;Incinerate&amp;#039;&amp;#039;&amp;#039; is a move in PMDO.  == Effects == Incinerate deals damage and, if the target has a food item as a held item or in its team&amp;#039;s inventory, destroys a random food item.  == Strategy ==  Incinerate&amp;#039;s effect is not particularly useful on the player side, but becomes much deadlier on the enemy side, particularly in dungeons such as Guildmaster Trail where food items are in short supply. As Incinerate fires in a...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Incinerate/Data|MoveInfobox}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incinerate&#039;&#039;&#039; is a [[move]] in [[PMDO]].&lt;br /&gt;
&lt;br /&gt;
== Effects ==&lt;br /&gt;
Incinerate deals damage and, if the target has a [[food]] item as a held item or in its team&#039;s inventory, destroys a random food item.&lt;br /&gt;
&lt;br /&gt;
== Strategy ==&lt;br /&gt;
&lt;br /&gt;
Incinerate&#039;s effect is not particularly useful on the player side, but becomes much deadlier on the enemy side, particularly in dungeons such as [[Guildmaster Trail]] where food items are in short supply. As Incinerate fires in a straight line, an enemy Pokémon that is known to have the move can be lured in close by staying out of its direct line of sight.&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Incinerate/Data&amp;diff=7999</id>
		<title>Incinerate/Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Incinerate/Data&amp;diff=7999"/>
		<updated>2026-02-16T20:47:12Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Created page with &amp;quot;{{{{{1|MoveData}}} |move_name=Incinerate |move_id=incinerate |type=Fire |category=Special |power=45 |accuracy=100 |pp=18 |range=3-tile shot |target=Foes }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{1|MoveData}}}&lt;br /&gt;
|move_name=Incinerate&lt;br /&gt;
|move_id=incinerate&lt;br /&gt;
|type=Fire&lt;br /&gt;
|category=Special&lt;br /&gt;
|power=45&lt;br /&gt;
|accuracy=100&lt;br /&gt;
|pp=18&lt;br /&gt;
|range=3-tile shot&lt;br /&gt;
|target=Foes&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Template:Mirage/AWD&amp;diff=7998</id>
		<title>Template:Mirage/AWD</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Template:Mirage/AWD&amp;diff=7998"/>
		<updated>2026-02-16T02:23:18Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Wrong ability listed for Drapion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{MirageTileID&lt;br /&gt;
|start_floor={{{start|0}}}&lt;br /&gt;
|end_floor={{{end|0}}}&lt;br /&gt;
|map_id=boss_awd&lt;br /&gt;
}}&lt;br /&gt;
{{MirageTileRow&lt;br /&gt;
|pokemon=Weavile&lt;br /&gt;
|gender=Female&lt;br /&gt;
|moves=[[Ice Punch]], [[Knock Off]],[[Fake Out]],[[Assurance]]&lt;br /&gt;
|ability=Pickpocket&lt;br /&gt;
|notes=&lt;br /&gt;
}}&lt;br /&gt;
{{MirageTileRow&lt;br /&gt;
|pokemon=Arbok&lt;br /&gt;
|gender=Male&lt;br /&gt;
|moves=[[Glare]],[[Stockpile]],[[Spit Up]],[[Acid Spray]]&lt;br /&gt;
|ability=Intimidate&lt;br /&gt;
|notes=&lt;br /&gt;
}}&lt;br /&gt;
{{MirageTileRow&lt;br /&gt;
|pokemon=Drapion&lt;br /&gt;
|gender=Female&lt;br /&gt;
|moves=[[Thunder Fang]],[[Pursuit]],[[Night Slash]],[[Poison Fang]]&lt;br /&gt;
|ability=Sniper&lt;br /&gt;
|notes=&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Mirage Encounter]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Bayleaf.png&amp;diff=7997</id>
		<title>File:Portrait Bayleaf.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Bayleaf.png&amp;diff=7997"/>
		<updated>2026-02-16T00:55:32Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Bayleaf.png to File:Portrait Bayleef.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:Portrait Bayleef.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Bayleef.png&amp;diff=7996</id>
		<title>File:Portrait Bayleef.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Bayleef.png&amp;diff=7996"/>
		<updated>2026-02-16T00:55:32Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Bayleaf.png to File:Portrait Bayleef.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Moonlit_Courtyard&amp;diff=7995</id>
		<title>Moonlit Courtyard</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Moonlit_Courtyard&amp;diff=7995"/>
		<updated>2026-02-16T00:55:14Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Spelling fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DungeonInfobox&lt;br /&gt;
|dungeon_name=Moonlit Courtyard&lt;br /&gt;
|zone_id=moonlit_courtyard&lt;br /&gt;
|prerequisites=Complete [[Trickster Maze]]&lt;br /&gt;
|floors=15&lt;br /&gt;
|image=Moonlit_Courtyard_1.png&lt;br /&gt;
|max_items=16&lt;br /&gt;
}}&lt;br /&gt;
{{SidePathTabs|Moonlit Courtyard|Moonlit Temple}}&lt;br /&gt;
&#039;&#039;&#039;Moonlit Courtyard&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Forest Camp]]. It has a [[side path]] called [[Moonlit Temple]].&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Exploration ==&lt;br /&gt;
{{SectStub}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{DunAreaHeader}}&lt;br /&gt;
{{DunAreaRowMajor&lt;br /&gt;
|image=Moonlit Courtyard 1.png&lt;br /&gt;
|name=Flower Maze&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|type=Fairy&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Moonlit Courtyard&lt;br /&gt;
|music=Star Cave&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
{{DunAreaRowMajor&lt;br /&gt;
|image=Moonlit Courtyard 2.png&lt;br /&gt;
|name=Castle Maze&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|type=Fairy&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Moonlit Courtyard 2&lt;br /&gt;
|music=Star Cave&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
{{DunAreaRowMajor&lt;br /&gt;
|image=Moonlit Courtyard 3.png&lt;br /&gt;
|name=Grass Maze&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|type=Fairy&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Moonlit Courtyard 3&lt;br /&gt;
|music=Star Cave&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
|}&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pokémon ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Ralts&lt;br /&gt;
|level=18&lt;br /&gt;
|start_floor=2&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Teleport, Growl&lt;br /&gt;
|notes=Does not randomly respawn &amp;lt;br&amp;gt; Held: [[Key|Key(1)]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Flabébé&lt;br /&gt;
|level=18&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Fairy Wind, Razor Leaf&lt;br /&gt;
|notes=Assorted colours&amp;lt;br&amp;gt;Spawns in formations of 3 anywhere on the floor&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Clefairy&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Follow Me, Disarming Voice&lt;br /&gt;
|ability=Cute Charm&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Cutiefly&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|moves=Draining Kiss, Struggle Bug&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Mime Jr.&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|moves=Copycat, Encore&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Roselia&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Magical Leaf&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Umbreon&lt;br /&gt;
|level=40&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=13&lt;br /&gt;
|moves=Moonlight, Confuse Ray, Assurance, Toxic&lt;br /&gt;
|notes=Does not randomly respawn &amp;lt;br&amp;gt; Spawns asleep &amp;lt;br&amp;gt; Held: [[Pass Scarf]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Gloom&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Mega Drain, Moonlight&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Bayleef&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Magical Leaf, Synthesis&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Lunatone&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Embargo, Moonblast&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Floette&lt;br /&gt;
|level=19&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Grassy Terrain, Wish&lt;br /&gt;
|notes=Assorted colours with equal chance&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Volbeat&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Flash, Struggle Bug&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Illumise&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Wish, Struggle Bug&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
=== Shops ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
== Traps ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{TrapHeader}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Trip&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Slumber&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Seal&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Krilia.png&amp;diff=7994</id>
		<title>File:Portrait Krilia.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Krilia.png&amp;diff=7994"/>
		<updated>2026-02-16T00:52:23Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Krilia.png to File:Portrait Kirlia.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:Portrait Kirlia.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Kirlia.png&amp;diff=7993</id>
		<title>File:Portrait Kirlia.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Kirlia.png&amp;diff=7993"/>
		<updated>2026-02-16T00:52:23Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Krilia.png to File:Portrait Kirlia.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Category:Portraits]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Moonlit_Temple&amp;diff=7992</id>
		<title>Moonlit Temple</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Moonlit_Temple&amp;diff=7992"/>
		<updated>2026-02-16T00:51:53Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Spelling fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DungeonSectionInfobox&lt;br /&gt;
|floors=6&lt;br /&gt;
|dungeon_name=Moonlit Temple&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Wish Cave 1&lt;br /&gt;
|music=Dark Temple of Espina&lt;br /&gt;
|image=Moonlit_Temple.png&lt;br /&gt;
|main_type={{TypeAndIcon|type=Fairy}}&lt;br /&gt;
}}&lt;br /&gt;
{{SidePathTabs|Moonlit Courtyard|Moonlit Temple}}&lt;br /&gt;
&#039;&#039;&#039;Moonlit Temple&#039;&#039;&#039; is a [[side path]] of [[Moonlit Courtyard]].&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Exploration ==&lt;br /&gt;
The dungeon uses [[GridPathBranch]] to generate a simple path of rooms to traverse. Rooms generated are [[Round Room|round]] and [[Square Room|square]]. Circular rooms with a pond shaped in a phase of the moon spawn from combing 2x2 cells of rooms, once per floor.&lt;br /&gt;
&lt;br /&gt;
[[Water (terrain)|Water]] spawns throughout the dungeon, typically in small smooth paths of one tile.&lt;br /&gt;
&lt;br /&gt;
On each floor, exit stairs will spawn that take the player out of the dungeon. Additionally, on each floor but 1F, the stairway which allows the player to proceed to the next floor spawns as a hidden tile. It must be revealed in order to proceed through the dungeon.&lt;br /&gt;
=== 6F ===&lt;br /&gt;
The stairs to proceed are locked behind a [[Mirage Tile|mirage tile]] boss. One defeated, the way to the stairs will unlock, allowing the player to proceed to the moonlit chamber.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Moonlit Chamber ===&lt;br /&gt;
A level 50 [[Cresselia]] is found inside of the chamber. She will ask to join the player&#039;s team. Once recruited, the chamber will be empty on a return visit.&lt;br /&gt;
== Pokémon ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Mr. Mime&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Quick Guard, Psybeam&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Kirlia&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Heal Pulse, Disarming Voice&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Glameow&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Fake Out, Fury Swipes&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Drowzee&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Hypnosis, Meditate&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Wobbuffet&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Counter, Safeguard&lt;br /&gt;
|ability=Shadow Tag&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Lunatone&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Embargo, Moonblast&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Floette&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Grass Terrain, Wish&lt;br /&gt;
|notes=Assorted colours with equal chance (except white)&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Floette&lt;br /&gt;
|level=19&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Grass Terrain, Wish&lt;br /&gt;
|notes=White only&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mirage Tile ===&lt;br /&gt;
All mirage bosses are scaled to level 30.&lt;br /&gt;
{{Mirage/PinkWall|start=6|end=6}}&lt;br /&gt;
{{Mirage/Celestial|start=6|end=6}}&lt;br /&gt;
{{Mirage/Charm|start=6|end=6}}&lt;br /&gt;
{{Mirage/RaltsP|start=6|end=6}}&lt;br /&gt;
{{Mirage/Eclipse|start=6|end=6}}&lt;br /&gt;
{{Mirage/FireflyP|start=6|end=6}}&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
== Traps ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{TrapHeader}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Trip&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Slumber&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Seal&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Warp&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;br /&gt;
[[Category:Side Path]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Trickster_Woods&amp;diff=7991</id>
		<title>Trickster Woods</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Trickster_Woods&amp;diff=7991"/>
		<updated>2026-02-16T00:47:24Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Wrong moves listed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SingleSectionDungeonInfobox&lt;br /&gt;
|dungeon_name=Trickster Woods&lt;br /&gt;
|zone_id=trickster_woods&lt;br /&gt;
|prerequisites=Complete [[Faultline Ridge]]&lt;br /&gt;
|floors=10 (both routes)&lt;br /&gt;
|image=Trickster_Woods.png&lt;br /&gt;
|team_size=1&lt;br /&gt;
|darkness=No&lt;br /&gt;
|tileset=Pitfall Valley 1(1F-5F)&amp;lt;br&amp;gt;Grass Maze(6F-10F)&lt;br /&gt;
|music=Sky Peak Forest&lt;br /&gt;
|music_link=&lt;br /&gt;
|main_type={{TypeAndIcon|type=Normal}}&lt;br /&gt;
}}&lt;br /&gt;
{{SidePathTabs|Trickster Woods|Trickster Maze}}&lt;br /&gt;
&#039;&#039;&#039;Trickster Woods&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Forest Camp]]. It can be accessed after completing [[Faultline Ridge]]. It has a [[side path]] called [[Trickster Maze]].&lt;br /&gt;
&lt;br /&gt;
== Exploration ==&lt;br /&gt;
Floors are generated grid style, using [[GridPathBranch]]. The room types [[Cross Room|cross]] and [[Round Room|round]] generate throughout the dungeon. Rooms may merge into larger rooms during generation.&lt;br /&gt;
&lt;br /&gt;
[[Secret stairs]] that lead to a secret room will spawn at least once on floors 1F-9F.&lt;br /&gt;
&lt;br /&gt;
=== 1F-5F ===&lt;br /&gt;
The floor&#039;s grid has 4x3 cells, with a size of 12x12. Alongside the other room types, the [[Block Room|block]] room generates here. &lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== 6F-10F ===&lt;br /&gt;
[[File:Trickster_Woods_Ring.png|200px|thumb|right|The Fairy Ring.]] &lt;br /&gt;
The floor&#039;s grid has 5x5 cells, with a size of 7x7.&lt;br /&gt;
&lt;br /&gt;
On 6F, a [[Fairy Ring]] is guaranteed to spawn. Interacting with it as a {{TypeAndIcon|type=Fairy}}-type {{Pokemon}} will cause a [[secret stairway]] to spawn, which will lead to Trickster Maze.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Pokémon ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Fennekin&lt;br /&gt;
|level=14&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|moves=Ember&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Paras&lt;br /&gt;
|level=15&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Leech Life&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Luxio&lt;br /&gt;
|level=18&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Spark, Charge&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Slowpoke&lt;br /&gt;
|level=19&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|moves=Curse, Tackle&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Rattata&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Hyper Fang&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Mankey&lt;br /&gt;
|level=17&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Seismic Toss&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Sandshrew&lt;br /&gt;
|level=17&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Rapid Spin&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Bidoof&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|moves=Defense Curl, Tackle&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Poochyena&lt;br /&gt;
|level=14&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Howl, Bite&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Abra&lt;br /&gt;
|level=12&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Teleport&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{{Sectstub}}&lt;br /&gt;
== Traps ==&lt;br /&gt;
Traps are spawned using patterned behavior of a checkerboard pattern.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{TrapHeader}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Trip&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=12&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Slow&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=12&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Chestnut&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=12&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Gust&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=12&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Grimy&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=12&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Trickster_Maze&amp;diff=7990</id>
		<title>Trickster Maze</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Trickster_Maze&amp;diff=7990"/>
		<updated>2026-02-16T00:44:55Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Spelling fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Trickster Maze&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Purity Forest 8&lt;br /&gt;
|music=Random Dungeon Theme 2&lt;br /&gt;
|music_link=&lt;br /&gt;
|image=Trickster_Maze.png&lt;br /&gt;
|main_type={{TypeAndIcon|type=Normal}}&lt;br /&gt;
}}&lt;br /&gt;
{{SidePathTabs|Trickster Woods|Trickster Maze}}&lt;br /&gt;
[[Trickster Maze]] is a [[side path]] of [[Trickster Woods]]. Completing it unlocks [[Moonlit Courtyard]].&lt;br /&gt;
&lt;br /&gt;
== Exploration ==&lt;br /&gt;
The dungeon wraps in on itself, allowing the player to cross one side of the screen to reach the other. The floor&#039;s grid has 5x5 cells, with a size of 7x7. The floors are generated using [[GridPathBranch]], creating a simple branching series of rooms that connect to each other.&lt;br /&gt;
&lt;br /&gt;
Rooms of the [[Cross Room|cross]] and [[Block Room|block]] type are generated throughout the dungeon.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Pokémon ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Buizel&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Aqua Jet, Sonic Boom&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Woobat&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Heart Stamp&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Hatenna&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Life Dew, Disarming Voice&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Combee&lt;br /&gt;
|level=18&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Gust&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Houndour&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Roar, Smog&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Deerling&lt;br /&gt;
|level=19&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Take Down, Leech Seed&lt;br /&gt;
|notes=Equal chance of any seasonal variant&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{{Sectstub}}&lt;br /&gt;
== Traps ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{TrapHeader}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Mud&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Slow&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Chestnut&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Gust&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Poison&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Self-Destruct&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Slumber&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
{{TrapRow&lt;br /&gt;
|trap=Trigger&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;br /&gt;
[[Category:Side Path]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Draft:Particles_Tutorial&amp;diff=6664</id>
		<title>Draft:Particles Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Draft:Particles_Tutorial&amp;diff=6664"/>
		<updated>2026-01-24T14:36:43Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Displaying a static particle ==&lt;br /&gt;
&lt;br /&gt;
To display a particle effect in a static location:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_data = RogueEssence.Content.AnimData(&amp;quot;Lock_On&amp;quot;, 3, -1, -1, 255, Dir8.None)&lt;br /&gt;
	local emitter = RogueEssence.Content.SingleEmitter(anim_data)&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
First, we create an AnimData object, which has the animation we want to display. This AnimData has the following parameters listed:&lt;br /&gt;
&lt;br /&gt;
* AnimIndex: The string ID of the particle animation to play. Here, we set it to &amp;quot;Lock_On&amp;quot;, so the particle uses the Lock-On animation.&lt;br /&gt;
&lt;br /&gt;
* FrameTime: An integer amount of time, in frames, to spend on each frame of the animation. Here, we set it to 3, so the Lock-On animation will play at 60/3, or 20, FPS.&lt;br /&gt;
&lt;br /&gt;
* StartFrame: The frame to start the animation on. Setting it to -1, as we do here, will cause the animation to play from the beginning.&lt;br /&gt;
&lt;br /&gt;
* EndFrame: The frame to end the animation on. Setting it to -1, as we do here, will cause the animation to end after the last frame.&lt;br /&gt;
&lt;br /&gt;
* Alpha: The opacity of the particle. Set it to 255 to make it completely opaque, or 0 to make it completely transparent.&lt;br /&gt;
&lt;br /&gt;
* AnimFlip: Determines whether the particle is flipped in a particular direction. We don&#039;t want to flip the particle, so we just set it to Dir8.None.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we create our particle emitter. The SingleEmitter displays a single particle in a single location, and plays its animation to completion. We pass the SingleEmitter our animation data, setting it to play that particle animation.&lt;br /&gt;
&lt;br /&gt;
Now that we have our emitter all set up, we just have to play it. The &amp;quot;activator&amp;quot; here is a reference to the character that the particles will play at the position of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Static particles 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once an emitter has been created, it can be used for multiple particles at several different locations. As an example, this code plays the above Lock-On particle four times around a central point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X - 16, activator.Bounds.Center.Y)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X + 16, activator.Bounds.Center.Y)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y - 16)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y + 16)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Static particles 2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Displaying a moving particle ==&lt;br /&gt;
&lt;br /&gt;
The MoveToEmitter is a particle emitter that moves from one point in space to another over a fixed time.&lt;br /&gt;
&lt;br /&gt;
This code creates a moving Mist Ball particle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local emitter = RogueEssence.Content.MoveToEmitter()&lt;br /&gt;
	emitter.Anim = RogueEssence.Content.AnimData(&amp;quot;Mist_Ball&amp;quot;, 3, -1, -1, 127, Dir8.None)&lt;br /&gt;
	emitter.ResultLayer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.OffsetStart = RogueElements.Loc(-50, 0)&lt;br /&gt;
	emitter.OffsetEnd = RogueElements.Loc(50, 0)&lt;br /&gt;
	emitter.HeightStart = -16&lt;br /&gt;
	emitter.HeightEnd = 16&lt;br /&gt;
	emitter.MoveTime = 180&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The AnimData for the MoveToEmitter is formatted the same was as it was for the Lock-On particle. The only difference, aside from the particle name, is that we&#039;ve set the Alpha to 127, so the particle is translucent.&lt;br /&gt;
&lt;br /&gt;
However, this MoveToEmitter has several parameters of its own that control how the particle moves:&lt;br /&gt;
&lt;br /&gt;
* ResultLayer: We can manually specify a layer that the particle will be drawn on. Setting it to RogueEssence.Content.DrawLayer.Front ensures that it renders in front of all other particles. The layers you can use are:&lt;br /&gt;
** Under: Draws on the floor, behind all entities and tiles.&lt;br /&gt;
** Bottom: Draws on the floor, behind entities, but not tiles.&lt;br /&gt;
** Back: Draws in front of entities if placed at a higher Y coordinate, but draws behind entities in a tie.&lt;br /&gt;
** Normal: Draws behind entities if placed at a lower Y coordinate, but draws in front of entities in a tie.&lt;br /&gt;
** Front: Draws in front of entities.&lt;br /&gt;
** Top: Draws on top of everything else.&lt;br /&gt;
** NoDraw: Does not render.&lt;br /&gt;
&lt;br /&gt;
* OffsetStart: Controls where the particle starts, relative to its display position. This particle will start 50 pixels to the left of Pikachu.&lt;br /&gt;
&lt;br /&gt;
* OffsetEnd: Controls where the particle ends, relative to its display position. This particle will end 50 pixels to the right of Pikachu.&lt;br /&gt;
&lt;br /&gt;
* HeightStart: Adds an additional height offset to the particle at the start of its journey. Note that the height here is added to the object, so unlike with locations, increasing the height value will cause the particle to rise. This particle will start 16 units below Pikachu.&lt;br /&gt;
&lt;br /&gt;
* HeightEnd: Adds an additional height offset to the particle at the end of its journey. This particle will end 16 units above Pikachu.&lt;br /&gt;
&lt;br /&gt;
* MoveTime: Controls the lifetime of the particle. It goes in frames, so our MoveTime of 45 will cause the particle to be displayed for three quarters of a second.&lt;br /&gt;
&lt;br /&gt;
Note that, unlike a SingleEmitter, a MoveToEmitter will loop its particle animation until its MoveTime has elapsed. So, the Mist Ball animation will stay looping until it completes its path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Mist ball particle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This emitter can also be useful for creating a spray of particles in a given direction.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating particles in an area ==&lt;br /&gt;
&lt;br /&gt;
=== Creating a ring of particles ===&lt;br /&gt;
&lt;br /&gt;
The StaticAreaEmitter is used to create a burst of multiple different particle types in a ring.&lt;br /&gt;
&lt;br /&gt;
This code creates a ring of blue music note particles around the emitter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None)})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.StaticAreaEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 32&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unlike with previous emitters, the StaticAreaEmitter takes an array of AnimData objects. So, we first create an array of AnimData objects, and then populate it with the particle types we want. Here, we just want one particle type: the blue music note.&lt;br /&gt;
&lt;br /&gt;
The Layer works the same as the DrawLayer from MoveToEmitter earlier. However, this StaticAreaEmitter has its own properties:&lt;br /&gt;
&lt;br /&gt;
* Range: The radius around which particles are generated.&lt;br /&gt;
&lt;br /&gt;
* Bursts: How many separate times particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* ParticlesPerBurst: How many particles are created at random points in the radius in each burst.&lt;br /&gt;
&lt;br /&gt;
* BurstTime: The delay between each burst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ring particles 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Multiple different particle types can be passed to this emitter, and they will be selected from randomly. Replace the anim_list definition above with this code, and four different music note particles will be used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 10, 10, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 20, 20, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 30, 30, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ring particles 2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating an area of static particles ===&lt;br /&gt;
&lt;br /&gt;
The FiniteAreaEmitter is used to create particles in a whole circular area, and not just at the edge. The particles start at the center and spread out to the edge over a fixed period of time.&lt;br /&gt;
&lt;br /&gt;
This code creates a mixture of leaf particles and music notes in an area centered around the entity.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 10, 10, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 20, 20, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 30, 30, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteAreaEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 48&lt;br /&gt;
	emitter.Speed = 96&lt;br /&gt;
	emitter.TotalParticles = 30&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The FiniteAreaEmitter&#039;s relevant parameters are:&lt;br /&gt;
&lt;br /&gt;
* Range: The radius particles will extend to at the end of the burst.&lt;br /&gt;
&lt;br /&gt;
* Speed: The amount of pixels the radius extends by per second. Here, we have it set to 96, so it reaches the end in half a second.&lt;br /&gt;
&lt;br /&gt;
* TotalParticles: The total amount of particles created in the burst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Finite area emitter.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating an area of moving particles ===&lt;br /&gt;
&lt;br /&gt;
If you want the particles to move in a certain direction after being spawned, use a FiniteSprinkleEmitter.&lt;br /&gt;
&lt;br /&gt;
This code creates a slow cloud of Ice Shard sparkle particles that drift slowly down and to the side:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 1, 1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 2, 2, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 3, 3, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteSprinkleEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 80&lt;br /&gt;
	emitter.Speed = 80&lt;br /&gt;
	emitter.HeightSpeed = -16&lt;br /&gt;
	emitter.SpeedDiff = 12&lt;br /&gt;
	emitter.TotalParticles = 60&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In addition to all the variables possessed by the FiniteAreaEmitter, the FiniteSprinkleEmitter has these additional variables:&lt;br /&gt;
&lt;br /&gt;
* HeightSpeed: How much the particles&#039; height will change as they drift. Here, we have it set to -16, so each sparkle goes down by 16 pixels from start to finish.&lt;br /&gt;
&lt;br /&gt;
* SpeedDiff: The maximum extent to which the particles will drift to the side as they move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Finite sprinkle emitter.png]]&lt;br /&gt;
&lt;br /&gt;
== Making particles move to and from a specific point ==&lt;br /&gt;
&lt;br /&gt;
=== Particles moving from the exterior to the center ===&lt;br /&gt;
&lt;br /&gt;
The FiniteGatherEmitter is used to spawn particles at the edge of its range, then have them move towards the center. Like the FiniteAreaEmitter, it can take a list of multiple particles to spawn randomly.&lt;br /&gt;
&lt;br /&gt;
This example spawns Ice Shard sparkle particles around the character and has them move towards the origin.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 1, 1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 2, 2, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 3, 3, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteGatherEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.TravelTime = 40&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartDistance = 64&lt;br /&gt;
	emitter.EndDistance = 8&lt;br /&gt;
	emitter.StartVariance = 16&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This emitter spawns particles in bursts, much like the FiniteAreaEmitter. However, it has its own unique variables as well:&lt;br /&gt;
&lt;br /&gt;
* TravelTime: How many frames it takes for the particles to move from the exterior to the origin.&lt;br /&gt;
&lt;br /&gt;
* StartDistance: The radius at which the particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* EndDistance: The radius at which the particles stop moving. If this is larger than the StartDistance, then the particles will scatter randomly.&lt;br /&gt;
&lt;br /&gt;
* StartVariance: A random variance applied to the StartDistance, so the particles don&#039;t all spawn at the same location.&lt;br /&gt;
&lt;br /&gt;
* Cycles: Controls how many animation cycles the particles will play while converging. For example, if Cycles is set to 10, then the particles will loop their animation 10 times before reaching the center.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Converging particles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Particles moving from the center to the exterior ===&lt;br /&gt;
&lt;br /&gt;
The FiniteReleaseEmitter spawns particles within a small radius, and the particles move to a larger radius before disappearing. It can also take a list of multiple particles to spawn randomly. Unlike the FiniteGatherEmitter, the particles will despawn when their animation is complete instead of when reaching a target radius.&lt;br /&gt;
&lt;br /&gt;
This example creates heart and sparkle particles that travel outwards at a fast speed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Captivate_Heart&amp;quot;, 5, -1, -1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 5, -1, -1, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteReleaseEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartDistance = 8&lt;br /&gt;
	emitter.Speed = 120&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The unique variables for the FiniteReleaseEmitter are:&lt;br /&gt;
&lt;br /&gt;
* StartDistance: The radius at which the particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* Speed: How many pixels per second, NOT per frame, the particles move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Diverging particles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating background overlays with particles ==&lt;br /&gt;
&lt;br /&gt;
To display a static background image for a given amount of time, a FlashEmitter is used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local bg_anim = RogueEssence.Content.BGAnimData(&amp;quot;Cosmic_Power&amp;quot;, 0, 0, 0, 255, Dir8.None)&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FlashEmitter()&lt;br /&gt;
	emitter.Anim = bg_anim&lt;br /&gt;
	emitter.Layer = DrawLayer.Bottom&lt;br /&gt;
	&lt;br /&gt;
	emitter.FadeInTime = 30&lt;br /&gt;
    emitter.HoldTime = 120&lt;br /&gt;
    emitter.FadeOutTime = 30&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartColor = Color.White&lt;br /&gt;
	emitter.EndColor = Color.White&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, GAME:GetCameraCenter().X, GAME:GetCameraCenter().Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, we create a BGAnimData object to hold the animation for the background. We set the layer to be DrawLayer.Bottom, so the background image renders under all characters in the scene. When we play the emitter, we have to do so at the camera&#039;s position; otherwise, the background will be located at the top left of the current ground map.&lt;br /&gt;
&lt;br /&gt;
The emitter itself has the following parameters:&lt;br /&gt;
&lt;br /&gt;
* FadeInTime: How long it takes, in frames, for the background to fade in.&lt;br /&gt;
&lt;br /&gt;
* HoldTime: How long, in frames, the background is displayed for.&lt;br /&gt;
&lt;br /&gt;
* FadeOutTime: How long it takes, in frames, for the background to fade out.&lt;br /&gt;
&lt;br /&gt;
* StartColor: Color wash applied to the background at the start of the animation. Here, it&#039;s set to Color.White, so no color wash is applied.&lt;br /&gt;
&lt;br /&gt;
* EndColor: Color wash the background fades to by the end of the animation. Here, it&#039;s set to Color.White, so no color wash is applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Static bg flash.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This background is static. If you want to display a moving background, you need to use a FiniteOverlayEmitter.&lt;br /&gt;
&lt;br /&gt;
This code creates a Leaf Storm background that moves quickly to the left, taking up the entire screen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local bg_anim = RogueEssence.Content.BGAnimData(&amp;quot;Leaf_Storm&amp;quot;, 10, -1, -1, 255, Dir8.None)&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteOverlayEmitter()&lt;br /&gt;
	emitter.Anim = bg_anim&lt;br /&gt;
	emitter.Layer = DrawLayer.Bottom&lt;br /&gt;
	&lt;br /&gt;
	emitter.Movement = RogueElements.Loc(-80, 0)&lt;br /&gt;
	&lt;br /&gt;
    emitter.TotalTime = 180&lt;br /&gt;
	emitter.FadeIn = 10&lt;br /&gt;
    emitter.FadeOut = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.RepeatX = true&lt;br /&gt;
	emitter.RepeatY = true&lt;br /&gt;
	&lt;br /&gt;
	emitter.Color = Color.White&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, GAME:GetCameraCenter().X, GAME:GetCameraCenter().Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This emitter has the following parameters:&lt;br /&gt;
&lt;br /&gt;
* TotalTime: How long the overlay lasts for, in frames.&lt;br /&gt;
&lt;br /&gt;
* FadeIn: How long it takes the overlay to fade in, in frames. Cuts into TotalTime.&lt;br /&gt;
&lt;br /&gt;
* FadeOut: How long it takes the overlay to fade out, in frames. Cuts into TotalTime.&lt;br /&gt;
&lt;br /&gt;
* RepeatX: Whether the overlay loops horizontally.&lt;br /&gt;
&lt;br /&gt;
* RepeatY: Whether the overlay loops vertically.&lt;br /&gt;
&lt;br /&gt;
* Color: Applies a color wash to the background. Here, it&#039;s set to Color.White, so the default colors are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Moving bg.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Veiled_Ridge&amp;diff=6522</id>
		<title>Veiled Ridge</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Veiled_Ridge&amp;diff=6522"/>
		<updated>2026-01-20T01:54:29Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: /* Pokémon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Release Candidate|pmdo-version=0.8.11}}&lt;br /&gt;
{{DungeonInfobox&lt;br /&gt;
|dungeon_name=Veiled Ridge&lt;br /&gt;
|zone_id=veiled_ridge&lt;br /&gt;
|floors=17&lt;br /&gt;
|image=Veiled_Ridge_1.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Veiled Ridge&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Cave Shelter]]. It is a branching dungeon, with a side path called &#039;&#039;&#039;Illusion Ridge&#039;&#039;&#039;.&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Veiled Ridge ==&lt;br /&gt;
{{DungeonSectionInfoboxImageless&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Veiled Ridge (1F-4F)&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Rock Path TDS&lt;br /&gt;
|main_type={{TypeAndIcon|type=Dark}}&lt;br /&gt;
|music=Dark Wasteland&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&lt;br /&gt;
=== 1F-4F ===&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== 5F-8F ===&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Veiled Ridge (5F-8F)&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Dark Hill 2&lt;br /&gt;
|main_type={{TypeAndIcon|type=Dark}}&lt;br /&gt;
|music=Dark Wasteland&lt;br /&gt;
|image=Veiled_Ridge_2.png&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== 9F-16F ===&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Veiled Ridge (9F-16F)&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Dark Hill 1&lt;br /&gt;
|main_type={{TypeAndIcon|type=Dark}}&lt;br /&gt;
|music=Dark Wasteland&lt;br /&gt;
|image=Veiled_Ridge_3.png&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Pokémon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Graveler&lt;br /&gt;
|level=32&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Rock Blast&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Koffing&lt;br /&gt;
|level=28&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|ability=Levitate&lt;br /&gt;
|moves=Self Destruct, Haze&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Masquerain&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Ominous Wind, Stun Spore&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Pawniard&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Torment, Slash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Zorua&lt;br /&gt;
|level=25&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Foul Play&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Grumpig&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|ability=Thick Fat&lt;br /&gt;
|moves=Magic Coat, Psywave, Confuse Ray&lt;br /&gt;
|notes=Spawns asleep&lt;br /&gt;
Always holds a [[Pearl]] (2)&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Mightyena&lt;br /&gt;
|level=31&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Thief, Scary Face&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Ninetales&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Imprison, Flamethrower&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Absol&lt;br /&gt;
|level=33&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Future Sight, Night Slash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Sableye&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Knock Off, Detect&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Scrafty&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Beat Up, Feint Attack&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Items ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
=== Traps ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
== Illusion Ridge  ==&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=6&lt;br /&gt;
|dungeon_name=Illusion Ridge&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Spacial Rift 2&lt;br /&gt;
|image=Illusion_Ridge.png&lt;br /&gt;
|main_type={{TypeAndIcon|type=Dark}}&lt;br /&gt;
|music=Flow of Misery ~ Sickly Hollow Swamp Area&lt;br /&gt;
|music_link=https://www.youtube.com/watch?v=ghHSUa5asL4&lt;br /&gt;
}}{{sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Pokémon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Absol&lt;br /&gt;
|level=33&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Future Sight, Night Slash&lt;br /&gt;
|notes=1/3 chance: Spawns asleep, holds [[Black Gummi]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Grumpig&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Magic Coat, Zen Headbutt&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Masquerain&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Ominous Wind, Stun Spore&lt;br /&gt;
|notes=1/3 chance: Spawns asleep, holds [[Green Gummi]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Mightyena&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Thief, Scary Face&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Pawniard&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Torment, Slash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Persian&lt;br /&gt;
|level=33&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Switcheroo, Feint Attack, Swift&lt;br /&gt;
|notes=Flees after taking an item&amp;lt;br&amp;gt;Held: [[Toxic Orb]], [[Flame Orb]], [[Iron Ball]], [[Ring Target]], or [[Choice Scarf]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Sneasel&lt;br /&gt;
|level=33&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=Pickpocket&lt;br /&gt;
|moves=Agility, Quick Attack&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Zoroark&lt;br /&gt;
|level=55&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Night Daze, U Turn, Agility, Night Slash&lt;br /&gt;
|notes=Spawns asleep&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Items ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
=== Traps ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Thunderstruck_Pass&amp;diff=6519</id>
		<title>Thunderstruck Pass</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Thunderstruck_Pass&amp;diff=6519"/>
		<updated>2026-01-20T01:52:46Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Spelling fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Release Candidate|pmdo-version=0.8.11}}&lt;br /&gt;
{{SingleSectionDungeonInfobox&lt;br /&gt;
|dungeon_name=Thunderstruck Pass&lt;br /&gt;
|zone_id=thunderstruck_pass&lt;br /&gt;
|floors=14&lt;br /&gt;
|music=Amp Plains&lt;br /&gt;
|image=Thunderstruck_Pass.png&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Mt. Bristle (1F-5F)&amp;lt;br&amp;gt;Mt. Thunder Peak (6F-10F)&amp;lt;br&amp;gt; Mt. Travail (11F-14F)&lt;br /&gt;
|main_type={{TypeAndIcon|type=Electric}}&lt;br /&gt;
}}&#039;&#039;&#039;Thunderstruck Pass&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Cave Shelter]].&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Exploration ==&lt;br /&gt;
{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Pokémon ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Geodude&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Spark, Defense Curl&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Loudred&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Screech, Echoed Voice&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Magnemite&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Thunder Shock, Thunder Wave&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Voltorb&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Eerie Impulse, Charge Beam&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Hariyama&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Fake Out, Smelling Salts&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Hitmonchan&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=6&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Focus Punch, Agility&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Electabuzz&lt;br /&gt;
|level=29&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Thunder Punch, Light Screen&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Raichu&lt;br /&gt;
|level=28&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Thunderbolt&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Minun&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=14&lt;br /&gt;
|end_floor=17&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Fake Tears, Helping Hand, Nuzzle&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Plusle&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=14&lt;br /&gt;
|end_floor=17&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Play Nice, Helping Hand, Electro Ball&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{{Sectstub}}&lt;br /&gt;
== Traps ==&lt;br /&gt;
{{Sectstub}}&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Thunderstruck_Pass.png&amp;diff=6518</id>
		<title>File:Thunderstruck Pass.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Thunderstruck_Pass.png&amp;diff=6518"/>
		<updated>2026-01-20T01:50:58Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: An image of Luxray in Thunderstruck Pass, in PMDO.
Category:Dungeon screenshots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
An image of Luxray in Thunderstruck Pass, in PMDO.&lt;br /&gt;
[[Category:Dungeon screenshots]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Cratered_Basin.png&amp;diff=6515</id>
		<title>File:Cratered Basin.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Cratered_Basin.png&amp;diff=6515"/>
		<updated>2026-01-20T01:44:21Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
An image of Dugtrio in Cratered Basin, in PMDO.&lt;br /&gt;
[[Category:Dungeon screenshots]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Depleted_Basin.png&amp;diff=6514</id>
		<title>File:Depleted Basin.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Depleted_Basin.png&amp;diff=6514"/>
		<updated>2026-01-20T01:44:01Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
An image of Dugtrio in Depleted Basin, in PMDO.&lt;br /&gt;
[[Category:Dungeon screenshots]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Depleted_Basin&amp;diff=6510</id>
		<title>Depleted Basin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Depleted_Basin&amp;diff=6510"/>
		<updated>2026-01-20T01:36:21Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Added missing file extension and fixed dungeon name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Release Candidate|pmdo-version=0.8.11}}&lt;br /&gt;
{{DungeonInfobox&lt;br /&gt;
|dungeon_name=Depleted Basin&lt;br /&gt;
|zone_id=depleted_basin&lt;br /&gt;
|prerequisites=Reach [[Ravine Camp]]&lt;br /&gt;
|floors=10&lt;br /&gt;
|image=Depleted_Basin.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Depleted Basin&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Ravine Camp]]. It is a branching dungeon, with a side path called &#039;&#039;&#039;Cratered Basin&#039;&#039;&#039;.&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Depleted Basin ==&lt;br /&gt;
{{DungeonSectionInfoboxImageless&lt;br /&gt;
|floors=10&lt;br /&gt;
|dungeon_name=Depleted Basin&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Silent Chasm (B1F-B5F)&amp;lt;br&amp;gt;Quicksand Cave (B6F-B12F)&lt;br /&gt;
|main_type={{TypeAndIcon|type=Normal}}&lt;br /&gt;
|music=Barren Valley&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Pokémon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Meowth&lt;br /&gt;
|level=21&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Pay Day, Scratch&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Rhyhorn&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=7&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Bulldoze&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Shuppet&lt;br /&gt;
|level=21&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|ability=Insomnia&lt;br /&gt;
|moves=Curse, Night Shade&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Staravia&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Double Team, Endeavor, Wing Attack&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Zangoose&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Pursuit, Quick Attack&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Dunsparce&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=2&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Spite, Screech, Ancient Power&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Absol&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=Pressure&lt;br /&gt;
|moves=Razor Wind&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Vigoroth&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Yawn, Slack Off, Slash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Watchog&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Rototiller, Sand Attack, Crunch&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Misdreavus&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=7&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Spite, Astonish, Pain Split&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Items ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
=== Traps ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
== Cratered Basin   ==&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Cratered Basin&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Meteor Cave&lt;br /&gt;
|main_type={{TypeAndIcon|type=Ghost}}&lt;br /&gt;
|music=Barren Valley&lt;br /&gt;
|image=Cratered_Basin.png&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Pokémon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Absol&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|ability=Pressure&lt;br /&gt;
|moves=Razor Wind&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Items ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
=== Traps ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Depleted_Basin&amp;diff=6509</id>
		<title>Depleted Basin</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Depleted_Basin&amp;diff=6509"/>
		<updated>2026-01-20T01:34:57Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Fixed spelling errors and added images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Release Candidate|pmdo-version=0.8.11}}&lt;br /&gt;
{{DungeonInfobox&lt;br /&gt;
|dungeon_name=Copper Quarry&lt;br /&gt;
|zone_id=copper_quarry&lt;br /&gt;
|prerequisites=Reach [[Ravine Camp]]&lt;br /&gt;
|floors=10&lt;br /&gt;
|image=Depleted_Basin&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Depleted Basin&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Ravine Camp]]. It is a branching dungeon, with a side path called &#039;&#039;&#039;Cratered Basin&#039;&#039;&#039;.&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Depleted Basin ==&lt;br /&gt;
{{DungeonSectionInfoboxImageless&lt;br /&gt;
|floors=10&lt;br /&gt;
|dungeon_name=Depleted Basin&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Silent Chasm (B1F-B5F)&amp;lt;br&amp;gt;Quicksand Cave (B6F-B12F)&lt;br /&gt;
|main_type={{TypeAndIcon|type=Normal}}&lt;br /&gt;
|music=Barren Valley&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Pokémon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Meowth&lt;br /&gt;
|level=21&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Pay Day, Scratch&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Rhyhorn&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=7&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Bulldoze&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Shuppet&lt;br /&gt;
|level=21&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|ability=Insomnia&lt;br /&gt;
|moves=Curse, Night Shade&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Staravia&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Double Team, Endeavor, Wing Attack&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Zangoose&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Pursuit, Quick Attack&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Dunsparce&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=2&lt;br /&gt;
|end_floor=5&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Spite, Screech, Ancient Power&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Absol&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=Pressure&lt;br /&gt;
|moves=Razor Wind&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Vigoroth&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Yawn, Slack Off, Slash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Watchog&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Rototiller, Sand Attack, Crunch&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Misdreavus&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=7&lt;br /&gt;
|end_floor=9&lt;br /&gt;
|ability=&lt;br /&gt;
|moves=Spite, Astonish, Pain Split&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Items ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
=== Traps ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
== Cratered Basin   ==&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Cratered Basin&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|tileset=Meteor Cave&lt;br /&gt;
|main_type={{TypeAndIcon|type=Ghost}}&lt;br /&gt;
|music=Barren Valley&lt;br /&gt;
|image=Cratered_Basin.png&lt;br /&gt;
}}{{Sectstub}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Pokémon ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Absol&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|ability=Pressure&lt;br /&gt;
|moves=Razor Wind&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Items ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
=== Traps ===&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Cratered_Basin.png&amp;diff=6508</id>
		<title>File:Cratered Basin.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Cratered_Basin.png&amp;diff=6508"/>
		<updated>2026-01-20T01:33:55Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: An image of Dugtrio in Cratered Basin, in PMDO.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
An image of Dugtrio in Cratered Basin, in PMDO.&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Depleted_Basin.png&amp;diff=6507</id>
		<title>File:Depleted Basin.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Depleted_Basin.png&amp;diff=6507"/>
		<updated>2026-01-20T01:33:24Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: An image of Dugtrio in Depleted Basin, in PMDO.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
An image of Dugtrio in Depleted Basin, in PMDO.&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Feebass.png&amp;diff=6506</id>
		<title>File:Portrait Feebass.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Feebass.png&amp;diff=6506"/>
		<updated>2026-01-20T01:15:11Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Feebass.png to File:Portrait Feebas.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:Portrait Feebas.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Feebas.png&amp;diff=6505</id>
		<title>File:Portrait Feebas.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Feebas.png&amp;diff=6505"/>
		<updated>2026-01-20T01:15:11Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Feebass.png to File:Portrait Feebas.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Category:Portraits]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Sliggo.png&amp;diff=6504</id>
		<title>File:Portrait Sliggo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Sliggo.png&amp;diff=6504"/>
		<updated>2026-01-20T01:14:22Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Sliggo.png to File:Portrait Sliggoo.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:Portrait Sliggoo.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Sliggoo.png&amp;diff=6503</id>
		<title>File:Portrait Sliggoo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=File:Portrait_Sliggoo.png&amp;diff=6503"/>
		<updated>2026-01-20T01:14:22Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: FlowerSnek moved page File:Portrait Sliggo.png to File:Portrait Sliggoo.png: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Category:Portraits]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Wayward_Wetlands&amp;diff=6502</id>
		<title>Wayward Wetlands</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Wayward_Wetlands&amp;diff=6502"/>
		<updated>2026-01-20T01:13:34Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: /* Pokémon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DungeonInfobox&lt;br /&gt;
|dungeon_name=Wayward Wetlands&lt;br /&gt;
|zone_id=wayward_wetlands&lt;br /&gt;
|prerequisites=Clear [[Muddy Valley]]&lt;br /&gt;
|floors=17&lt;br /&gt;
|max_items=4&lt;br /&gt;
|level_reset=20&lt;br /&gt;
|team_size=2&lt;br /&gt;
|image=Wayward_Wetlands_1.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wayward Wetlands&#039;&#039;&#039; is a dungeon in [[PMDO]] accessible from [[Cliff Camp]] that is unlocked after clearing [[Muddy Valley]]. Once unlocked, it becomes available in [[Roguelocke]] mode.&lt;br /&gt;
&lt;br /&gt;
The dungeon features a sprawling wetland with lots of tall grass, some tiles of water, and few walls beyond the edges of the floor. Strong {{Pokemon}} are found in the grass, attacking the player should they spot them but otherwise remaining in the tall grass.&lt;br /&gt;
&lt;br /&gt;
== Exploration ==&lt;br /&gt;
{{SectStub}}&lt;br /&gt;
Wayward Wetlands has three distinct zones.&lt;br /&gt;
&lt;br /&gt;
=== Water Zone ===&lt;br /&gt;
{{DungeonSectionInfoboxImageless&lt;br /&gt;
|floors=8&lt;br /&gt;
|dungeon_name=Wayward Wetlands - Water Zone (B1F-B8F)&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|main_type={{TypeAndIcon|type=Water}} &lt;br /&gt;
|tileset=Water Maze&lt;br /&gt;
|music=Treeshroud Forest&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
=== Poison Zone ===&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Wayward Wetlands - Poison Zone (B9F-B12F)&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|main_type={{TypeAndIcon|type=Poison}} &lt;br /&gt;
|tileset=Poison Maze&lt;br /&gt;
|music=Treeshroud Forest&lt;br /&gt;
|image=Wayward_Wetlands_2.png&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grass Zone===&lt;br /&gt;
{{DungeonSectionInfobox&lt;br /&gt;
|floors=4&lt;br /&gt;
|dungeon_name=Wayward Wetlands - Grass Zone (B13F-B16F)&lt;br /&gt;
|darkness=Yes&lt;br /&gt;
|main_type={{TypeAndIcon|type=Grass}} &lt;br /&gt;
|tileset=Deep Dusk Forest 2&lt;br /&gt;
|music=Sinister Woods&lt;br /&gt;
|image=Wayward_Wetlands_3.png&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Last Floor ===&lt;br /&gt;
B17F always has rain. It contains two chests and a patch of grass. A [[Hisuian Goodra]] is lurking in the grass, and will attack the player if they walk in. Another chest is found in this patch of grass behind the Goodra.&lt;br /&gt;
&lt;br /&gt;
== Pokémon ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
! colspan=7|Water Zone&lt;br /&gt;
|-&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Feebas&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Splash, Tackle&lt;br /&gt;
|notes=Spawns in disconnected pockets&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Taillow&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Focus Energy, Peck&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Venipede&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Poison Sting&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Patrat&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Bite, Detect&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Surskit&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=4&lt;br /&gt;
|moves=Quick Attack, Bubble&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Venonat&lt;br /&gt;
|level=16&lt;br /&gt;
|start_floor=2&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Confusion&lt;br /&gt;
|ability=Compound Eyes&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Poliwhirl&lt;br /&gt;
|level=18&lt;br /&gt;
|start_floor=3&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Hypnosis, Water Gun&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Carnivine&lt;br /&gt;
|level=18&lt;br /&gt;
|start_floor=4&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Sweet Scent, Ingrain, Bite&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Basculin&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Aqua Jet&lt;br /&gt;
|notes=Both stripes&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Ekans&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Glare, Wrap&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Yanma&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Sonic Boom&lt;br /&gt;
|ability=Speed Boost&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Skiddo&lt;br /&gt;
|level=20&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Growth, Razor Leaf&lt;br /&gt;
|notes=Retreater [[tactic]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Tangela&lt;br /&gt;
|level=21&lt;br /&gt;
|start_floor=7&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Growth, Mega Drain, Constrict&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Swellow&lt;br /&gt;
|level=21&lt;br /&gt;
|start_floor=7&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Aerial Ace, Focus Energy&lt;br /&gt;
}}&lt;br /&gt;
! colspan=7|Poison Zone&lt;br /&gt;
|-&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Goomy&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|moves=Bubble, Dragon Breath&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Farfetch&#039;d&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|moves=Brutal Swing, Rock Smash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Grimer&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|moves=Sludge, Mud Bomb&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Weepinbell&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|moves=Acid, Wrap&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Corphish&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|moves=Leer, Vice Grip, Knock Off&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Pancham&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Circle Throw, Arm Thrust&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Yanmega&lt;br /&gt;
|level=23&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Air Slash&lt;br /&gt;
|ability=Speed Boost&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Kecleon&lt;br /&gt;
|level=22&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Thief, Shadow Sneak&lt;br /&gt;
}}&lt;br /&gt;
! colspan=7|Grass Zone&lt;br /&gt;
|-&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Whirlipede&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Poison Sting, Screech&lt;br /&gt;
|notes=Retreater [[tactic]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Galarian Ponyta&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Growl, Psybeam&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Watchog&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Confuse Ray, Crunch&lt;br /&gt;
|ability=Keen Eye&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Pumpkaboo&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Trick, Razor Leaf, Worry Seed&lt;br /&gt;
|notes=Small, Average, and Large sizes&lt;br /&gt;
|ability=Pickup&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Pumpkaboo&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Trick, Trick-Or-Treat, Worry Seed&lt;br /&gt;
|ability=Pickup&lt;br /&gt;
|notes=Super size&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Axew&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Dual Chop&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Scyther&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Wing Attack, Slash&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Impidimp&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Fake Out, Confide&lt;br /&gt;
|notes=Retreater [[tactic]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Venomoth&lt;br /&gt;
|level=25&lt;br /&gt;
|start_floor=15&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Quiver Dance, Bug Buzz&lt;br /&gt;
|ability=Tinted Lens&lt;br /&gt;
|notes=Retreater [[tactic]]&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Masquerain&lt;br /&gt;
|level=25&lt;br /&gt;
|start_floor=15&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Air Cutter, Sweet Scent&lt;br /&gt;
|notes=Retreater [[tactic]]&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tall Grass Pokémon ===&lt;br /&gt;
All tall grass {{Pokemon}} have the Lurker [[tactic]].&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
{{EncounterHeader}}&lt;br /&gt;
! colspan=7|Water Zone&lt;br /&gt;
|-&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Pinsir&lt;br /&gt;
|level=24&lt;br /&gt;
|start_floor=1&lt;br /&gt;
|end_floor=6&lt;br /&gt;
|moves=Vice Grip, Seismic Toss&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Heracross&lt;br /&gt;
|level=25&lt;br /&gt;
|start_floor=2&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Brick Break, Pin Missile&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Poliwrath&lt;br /&gt;
|level=26&lt;br /&gt;
|start_floor=3&lt;br /&gt;
|end_floor=8&lt;br /&gt;
|moves=Hypnosis, Circle Throw&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Tangrowth&lt;br /&gt;
|level=27&lt;br /&gt;
|start_floor=5&lt;br /&gt;
|end_floor=10&lt;br /&gt;
|moves=Block, Bind, Poison Powder, Mega Drain&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Crawdaunt&lt;br /&gt;
|level=28&lt;br /&gt;
|start_floor=7&lt;br /&gt;
|end_floor=12&lt;br /&gt;
|moves=Razor Shell, Night Slash&lt;br /&gt;
}}&lt;br /&gt;
! colspan=7|Poison Zone&lt;br /&gt;
|-&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Victreebel&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Sleep Powder, Growth, Wring Out, Leaf Tornado&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Arbok&lt;br /&gt;
|level=30&lt;br /&gt;
|start_floor=9&lt;br /&gt;
|end_floor=14&lt;br /&gt;
|moves=Thunder Fang, Fire Fang, Glare&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Scolipede&lt;br /&gt;
|level=31&lt;br /&gt;
|start_floor=11&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Steamroller, Poison Tail&lt;br /&gt;
|ability=Speed Boost&lt;br /&gt;
}}&lt;br /&gt;
! colspan=7|Grass Zone&lt;br /&gt;
|-&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Kleavor&lt;br /&gt;
|level=31&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Stone Axe, Double Hit&lt;br /&gt;
}}&lt;br /&gt;
{{EncounterRow&lt;br /&gt;
|pokemon=Sliggoo&lt;br /&gt;
|level=31&lt;br /&gt;
|start_floor=13&lt;br /&gt;
|end_floor=16&lt;br /&gt;
|moves=Dragon Breath, Body Slam, Infestation&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{{sectstub}}&lt;br /&gt;
&lt;br /&gt;
=== In grass ===&lt;br /&gt;
===Shops===&lt;br /&gt;
== Traps ==&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
{{PMDO Dungeons}}&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
	<entry>
		<id>https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Draft:Particles_Tutorial&amp;diff=2876</id>
		<title>Draft:Particles Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.pmdo.pmdcollab.org/wiki/index.php?title=Draft:Particles_Tutorial&amp;diff=2876"/>
		<updated>2025-08-06T00:28:05Z</updated>

		<summary type="html">&lt;p&gt;FlowerSnek: Fixed image position&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Displaying a static particle ==&lt;br /&gt;
&lt;br /&gt;
To display a particle effect in a static location:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_data = RogueEssence.Content.AnimData(&amp;quot;Lock_On&amp;quot;, 3, -1, -1, 255, Dir8.None)&lt;br /&gt;
	local emitter = RogueEssence.Content.SingleEmitter(anim_data)&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
First, we create an AnimData object, which has the animation we want to display. This AnimData has the following parameters listed:&lt;br /&gt;
&lt;br /&gt;
* AnimIndex: The string ID of the particle animation to play. Here, we set it to &amp;quot;Lock_On&amp;quot;, so the particle uses the Lock-On animation.&lt;br /&gt;
&lt;br /&gt;
* FrameTime: An integer amount of time, in frames, to spend on each frame of the animation. Here, we set it to 3, so the Lock-On animation will play at 60/3, or 20, FPS.&lt;br /&gt;
&lt;br /&gt;
* StartFrame: The frame to start the animation on. Setting it to -1, as we do here, will cause the animation to play from the beginning.&lt;br /&gt;
&lt;br /&gt;
* EndFrame: The frame to end the animation on. Setting it to -1, as we do here, will cause the animation to end after the last frame.&lt;br /&gt;
&lt;br /&gt;
* Alpha: The opacity of the particle. Set it to 255 to make it completely opaque, or 0 to make it completely transparent.&lt;br /&gt;
&lt;br /&gt;
* AnimFlip: Determines whether the particle is flipped in a particular direction. We don&#039;t want to flip the particle, so we just set it to Dir8.None.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we create our particle emitter. The SingleEmitter displays a single particle in a single location, and plays its animation to completion. We pass the SingleEmitter our animation data, setting it to play that particle animation.&lt;br /&gt;
&lt;br /&gt;
Now that we have our emitter all set up, we just have to play it. The &amp;quot;activator&amp;quot; here is a reference to the character that the particles will play at the position of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Static particles 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once an emitter has been created, it can be used for multiple particles at several different locations. As an example, this code plays the above Lock-On particle four times around a central point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X - 16, activator.Bounds.Center.Y)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X + 16, activator.Bounds.Center.Y)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y - 16)&lt;br /&gt;
GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y + 16)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Static particles 2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Displaying a moving particle ==&lt;br /&gt;
&lt;br /&gt;
The MoveToEmitter is a particle emitter that moves from one point in space to another over a fixed time.&lt;br /&gt;
&lt;br /&gt;
This code creates a moving Mist Ball particle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local emitter = RogueEssence.Content.MoveToEmitter()&lt;br /&gt;
	emitter.Anim = RogueEssence.Content.AnimData(&amp;quot;Mist_Ball&amp;quot;, 3, -1, -1, 127, Dir8.None)&lt;br /&gt;
	emitter.ResultLayer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.OffsetStart = RogueElements.Loc(-50, 0)&lt;br /&gt;
	emitter.OffsetEnd = RogueElements.Loc(50, 0)&lt;br /&gt;
	emitter.HeightStart = -16&lt;br /&gt;
	emitter.HeightEnd = 16&lt;br /&gt;
	emitter.MoveTime = 180&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, activator.Bounds.Center.X, activator.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The AnimData for the MoveToEmitter is formatted the same was as it was for the Lock-On particle. The only difference, aside from the particle name, is that we&#039;ve set the Alpha to 127, so the particle is translucent.&lt;br /&gt;
&lt;br /&gt;
However, this MoveToEmitter has several parameters of its own that control how the particle moves:&lt;br /&gt;
&lt;br /&gt;
* ResultLayer: We can manually specify a layer that the particle will be drawn on. Setting it to RogueEssence.Content.DrawLayer.Front ensures that it renders in front of all other particles.&lt;br /&gt;
&lt;br /&gt;
* OffsetStart: Controls where the particle starts, relative to its display position. This particle will start 50 pixels to the left of Pikachu.&lt;br /&gt;
&lt;br /&gt;
* OffsetEnd: Controls where the particle ends, relative to its display position. This particle will end 50 pixels to the right of Pikachu.&lt;br /&gt;
&lt;br /&gt;
* HeightStart: Adds an additional height offset to the particle at the start of its journey. Note that the height here is added to the object, so unlike with locations, increasing the height value will cause the particle to rise. This particle will start 16 units below Pikachu.&lt;br /&gt;
&lt;br /&gt;
* HeightEnd: Adds an additional height offset to the particle at the end of its journey. This particle will end 16 units above Pikachu.&lt;br /&gt;
&lt;br /&gt;
* MoveTime: Controls the lifetime of the particle. It goes in frames, so our MoveTime of 45 will cause the particle to be displayed for three quarters of a second.&lt;br /&gt;
&lt;br /&gt;
Note that, unlike a SingleEmitter, a MoveToEmitter will loop its particle animation until its MoveTime has elapsed. So, the Mist Ball animation will stay looping until it completes its path.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Mist ball particle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This emitter can also be useful for creating a spray of particles in a given direction.&lt;br /&gt;
[TODO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating particles in an area ==&lt;br /&gt;
&lt;br /&gt;
=== Creating a ring of particles ===&lt;br /&gt;
&lt;br /&gt;
The StaticAreaEmitter is used to create a burst of multiple different particle types in a ring.&lt;br /&gt;
&lt;br /&gt;
This code creates a ring of blue music note particles around the emitter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None)})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.StaticAreaEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 32&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unlike with previous emitters, the StaticAreaEmitter takes an array of AnimData objects. So, we first create an array of AnimData objects, and then populate it with the particle types we want. Here, we just want one particle type: the blue music note.&lt;br /&gt;
&lt;br /&gt;
The Layer works the same as the DrawLayer from MoveToEmitter earlier. However, this StaticAreaEmitter has its own properties:&lt;br /&gt;
&lt;br /&gt;
* Range: The radius around which particles are generated.&lt;br /&gt;
&lt;br /&gt;
* Bursts: How many separate times particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* ParticlesPerBurst: How many particles are created at random points in the radius in each burst.&lt;br /&gt;
&lt;br /&gt;
* BurstTime: The delay between each burst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ring particles 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Multiple different particle types can be passed to this emitter, and they will be selected from randomly. Replace the anim_list definition above with this code, and four different music note particles will be used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 10, 10, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 20, 20, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 30, 30, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Ring particles 2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating an area of static particles ===&lt;br /&gt;
&lt;br /&gt;
The FiniteAreaEmitter is used to create particles in a whole circular area, and not just at the edge. The particles start at the center and spread out to the edge over a fixed period of time.&lt;br /&gt;
&lt;br /&gt;
This code creates a mixture of leaf particles and music notes in an area centered around the entity.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Leaf_Storm_Leaf&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 0, 0, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 10, 10, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 20, 20, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Music_Notes&amp;quot;, 30, 30, 30, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteAreaEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 48&lt;br /&gt;
	emitter.Speed = 96&lt;br /&gt;
	emitter.TotalParticles = 30&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The FiniteAreaEmitter&#039;s relevant parameters are:&lt;br /&gt;
&lt;br /&gt;
* Range: The radius particles will extend to at the end of the burst.&lt;br /&gt;
&lt;br /&gt;
* Speed: The amount of pixels the radius extends by per second. Here, we have it set to 96, so it reaches the end in half a second.&lt;br /&gt;
&lt;br /&gt;
* TotalParticles: The total amount of particles created in the burst.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Finite area emitter.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating an area of moving particles ===&lt;br /&gt;
&lt;br /&gt;
If you want the particles to move in a certain direction after being spawned, use a FiniteSprinkleEmitter.&lt;br /&gt;
&lt;br /&gt;
This code creates a slow cloud of Ice Shard sparkle particles that drift slowly down and to the side:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 1, 1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 2, 2, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 3, 3, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteSprinkleEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	emitter.Range = 80&lt;br /&gt;
	emitter.Speed = 80&lt;br /&gt;
	emitter.HeightSpeed = -16&lt;br /&gt;
	emitter.SpeedDiff = 12&lt;br /&gt;
	emitter.TotalParticles = 60&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In addition to all the variables possessed by the FiniteAreaEmitter, the FiniteSprinkleEmitter has these additional variables:&lt;br /&gt;
&lt;br /&gt;
* HeightSpeed: How much the particles&#039; height will change as they drift. Here, we have it set to -16, so each sparkle goes down by 16 pixels from start to finish.&lt;br /&gt;
&lt;br /&gt;
* SpeedDiff: The maximum extent to which the particles will drift to the side as they move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Finite sprinkle emitter.png]]&lt;br /&gt;
&lt;br /&gt;
== Making particles move to and from a specific point ==&lt;br /&gt;
&lt;br /&gt;
=== Particles moving from the exterior to the center ===&lt;br /&gt;
&lt;br /&gt;
The FiniteGatherEmitter is used to spawn particles at the edge of its range, then have them move towards the center. Like the FiniteAreaEmitter, it can take a list of multiple particles to spawn randomly.&lt;br /&gt;
&lt;br /&gt;
This example spawns Ice Shard sparkle particles around the character and has them move towards the origin.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 1, 1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 2, 2, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 120, 3, 3, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteGatherEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.TravelTime = 40&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartDistance = 64&lt;br /&gt;
	emitter.EndDistance = 8&lt;br /&gt;
	emitter.StartVariance = 16&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, chara.Bounds.Center.X, chara.Bounds.Center.Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This emitter spawns particles in bursts, much like the FiniteAreaEmitter. However, it has its own unique variables as well:&lt;br /&gt;
&lt;br /&gt;
* TravelTime: How many frames it takes for the particles to move from the exterior to the origin.&lt;br /&gt;
&lt;br /&gt;
* StartDistance: The radius at which the particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* EndDistance: The radius at which the particles stop moving. If this is larger than the StartDistance, then the particles will scatter randomly.&lt;br /&gt;
&lt;br /&gt;
* StartVariance: A random variance applied to the StartDistance, so the particles don&#039;t all spawn at the same location.&lt;br /&gt;
&lt;br /&gt;
* Cycles: Controls how many animation cycles the particles will play while converging. For example, if Cycles is set to 10, then the particles will loop their animation 10 times before reaching the center.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Converging particles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Particles moving from the center to the exterior ===&lt;br /&gt;
&lt;br /&gt;
The FiniteReleaseEmitter spawns particles within a small radius, and the particles move to a larger radius before disappearing. It can also take a list of multiple particles to spawn randomly. Unlike the FiniteGatherEmitter, the particles will despawn when their animation is complete instead of when reaching a target radius.&lt;br /&gt;
&lt;br /&gt;
This example creates heart and sparkle particles that travel outwards at a fast speed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local anim_list = luanet.make_array(RogueEssence.Content.AnimData, {&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Captivate_Heart&amp;quot;, 5, -1, -1, 255, Dir8.None),&lt;br /&gt;
		RogueEssence.Content.AnimData(&amp;quot;Ice_Shard_Hit_Sparkle&amp;quot;, 5, -1, -1, 255, Dir8.None)&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteReleaseEmitter(anim_list)&lt;br /&gt;
	emitter.Layer = RogueEssence.Content.DrawLayer.Front&lt;br /&gt;
	&lt;br /&gt;
	emitter.Bursts = 5&lt;br /&gt;
	emitter.ParticlesPerBurst = 8&lt;br /&gt;
	emitter.BurstTime = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartDistance = 8&lt;br /&gt;
	emitter.Speed = 120&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The unique variables for the FiniteReleaseEmitter are:&lt;br /&gt;
&lt;br /&gt;
* StartDistance: The radius at which the particles are spawned.&lt;br /&gt;
&lt;br /&gt;
* Speed: How many pixels per second, NOT per frame, the particles move.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Diverging particles.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating background overlays with particles ==&lt;br /&gt;
&lt;br /&gt;
To display a static background image for a given amount of time, a FlashEmitter is used.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local bg_anim = RogueEssence.Content.BGAnimData(&amp;quot;Cosmic_Power&amp;quot;, 0, 0, 0, 255, Dir8.None)&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FlashEmitter()&lt;br /&gt;
	emitter.Anim = bg_anim&lt;br /&gt;
	emitter.Layer = DrawLayer.Bottom&lt;br /&gt;
	&lt;br /&gt;
	emitter.FadeInTime = 30&lt;br /&gt;
    emitter.HoldTime = 120&lt;br /&gt;
    emitter.FadeOutTime = 30&lt;br /&gt;
	&lt;br /&gt;
	emitter.StartColor = Color.White&lt;br /&gt;
	emitter.EndColor = Color.White&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, GAME:GetCameraCenter().X, GAME:GetCameraCenter().Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, we create a BGAnimData object to hold the animation for the background. We set the layer to be DrawLayer.Bottom, so the background image renders under all characters in the scene. When we play the emitter, we have to do so at the camera&#039;s position; otherwise, the background will be located at the top left of the current ground map.&lt;br /&gt;
&lt;br /&gt;
The emitter itself has the following parameters:&lt;br /&gt;
&lt;br /&gt;
* FadeInTime: How long it takes, in frames, for the background to fade in.&lt;br /&gt;
&lt;br /&gt;
* HoldTime: How long, in frames, the background is displayed for.&lt;br /&gt;
&lt;br /&gt;
* FadeOutTime: How long it takes, in frames, for the background to fade out.&lt;br /&gt;
&lt;br /&gt;
* StartColor: Color wash applied to the background at the start of the animation. Here, it&#039;s set to Color.White, so no color wash is applied.&lt;br /&gt;
&lt;br /&gt;
* EndColor: Color wash the background fades to by the end of the animation. Here, it&#039;s set to Color.White, so no color wash is applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Static bg flash.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This background is static. If you want to display a moving background, you need to use a FiniteOverlayEmitter.&lt;br /&gt;
&lt;br /&gt;
This code creates a Leaf Storm background that moves quickly to the left, taking up the entire screen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	local bg_anim = RogueEssence.Content.BGAnimData(&amp;quot;Leaf_Storm&amp;quot;, 10, -1, -1, 255, Dir8.None)&lt;br /&gt;
	&lt;br /&gt;
	local emitter = RogueEssence.Content.FiniteOverlayEmitter()&lt;br /&gt;
	emitter.Anim = bg_anim&lt;br /&gt;
	emitter.Layer = DrawLayer.Bottom&lt;br /&gt;
	&lt;br /&gt;
	emitter.Movement = RogueElements.Loc(-80, 0)&lt;br /&gt;
	&lt;br /&gt;
    emitter.TotalTime = 180&lt;br /&gt;
	emitter.FadeIn = 10&lt;br /&gt;
    emitter.FadeOut = 10&lt;br /&gt;
	&lt;br /&gt;
	emitter.RepeatX = true&lt;br /&gt;
	emitter.RepeatY = true&lt;br /&gt;
	&lt;br /&gt;
	emitter.Color = Color.White&lt;br /&gt;
	&lt;br /&gt;
	GROUND:PlayVFX(emitter, GAME:GetCameraCenter().X, GAME:GetCameraCenter().Y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This emitter has the following parameters:&lt;br /&gt;
&lt;br /&gt;
* TotalTime: How long the overlay lasts for, in frames.&lt;br /&gt;
&lt;br /&gt;
* FadeIn: How long it takes the overlay to fade in, in frames. Cuts into TotalTime.&lt;br /&gt;
&lt;br /&gt;
* FadeOut: How long it takes the overlay to fade out, in frames. Cuts into TotalTime.&lt;br /&gt;
&lt;br /&gt;
* RepeatX: Whether the overlay loops horizontally.&lt;br /&gt;
&lt;br /&gt;
* RepeatY: Whether the overlay loops vertically.&lt;br /&gt;
&lt;br /&gt;
* Color: Applies a color wash to the background. Here, it&#039;s set to Color.White, so the default colors are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Moving bg.png]]&lt;/div&gt;</summary>
		<author><name>FlowerSnek</name></author>
	</entry>
</feed>