################ Setting up waves ################ **On this page:** \* `About Modules <./Setting-up-the-waves#wiki-about-modules>`__ \* `Wave Branches <./Setting-up-the-waves#wiki-wave-branches>`__ \* `Common Nodes <./Setting-up-the-waves#wiki-common-nodes>`__ \* ```recurrent`` <./Setting-up-the-waves#wiki-recurrent-waves>`__ \* ```single`` <./Setting-up-the-waves#wiki-single-waves>`__ \* `Wave Types <./Setting-up-the-waves#wiki-wave-types>`__ \* ```default`` <./Setting-up-the-waves#wiki-default-waves>`__ \* ```special`` <./Setting-up-the-waves#wiki-special-waves>`__ \* ```swarm`` <./Setting-up-the-waves#wiki-swarm-waves>`__ \* ```supply`` <./Setting-up-the-waves#wiki-supply-waves>`__ \* ```upgrade`` <./Setting-up-the-waves#wiki-upgrade-waves>`__ \* ```boss`` <./Setting-up-the-waves#wiki-boss-waves>`__ \* `A Sample Setup <./Setting-up-the-waves#wiki-sample-config-file-setup>`__ **Note: If you are impatient, go to the bottom of this page for an example config-file setup to see what the waves could look like. Modify them as you please, but make sure to read this page before asking any questions!** Make sure to check out `Agnate's MobArena Bosses and Waves Thread `__ if you need inspiration for adding some cool bosses to your arenas! About Modules ------------- The new MobArena waves-system is extremely modular, meaning every time you plug in a new wave, you only have to provide the nodes required by the specific modules you are using. The modules can be broken into *wave branches* and *wave types*. The structure of the waves-section in config-file is the following: :: waves: recurrent: <-- Wave branch : type: <-- Wave type frequency: # priority: # single: <-- Wave branch : type: <-- Wave type wave: # Wave Branches ------------- The waves are split into two branches, ``recurrent`` and ``single``. *Recurrent waves* (may) occur more than once (as in, they repeat), given a frequency (how often they occur) and a priority (how "important" they are, i.e. which wave should spawn if two recurrent waves clash). *Single waves* occur just once, on the given wave (and always occur over recurrent waves, should they clash). Common Nodes ~~~~~~~~~~~~ As you can see, the two branches have one thing in common, the ``type``-node. Other than that, their other nodes differ. However, there are two additional nodes that can be used regardless of branch and type (doesn't work for boss waves, though): ``amount-multiplier: `` (optional) minimum value of 0.1, this multiplier helps determine how many monsters spawn per wave (minimum 1). If 8 mobs are supposed to spawn, and the value is ``0.5``, only 4 mobs will spawn. If the value is ``3``, 24 will spawn. ``health-multiplier: `` (optional) minimum value of 0.1, this multiplier helps determine the health for each monster in a wave. If a zombie spawns with the default of 20 health points and the value is ``0.5``, the zombie will have 10 health points. If the value is ``4``, it will be 80 health points. These two common nodes can be used to greatly customize the difficulty of the monsters in each wave. If you want more monsters, just set the amount-multiplier higher than 1, and maybe adjust the health with the health-multiplier accordingly. If you want the monsters to be tougher to kill, just up the health-multiplier. An additional node can be used to help determine where enemies will spawn: ``spawnpoints: `` For example, we can make a swarm wave spawn monsters only on spawns ``5,53,198``, ``-16,54,185``, and ``-7,53,179`` if players are in range: :: swarm3: type: swarm wave: 11 monster: zombie_pigman spawnpoints: 5,53,198; -16,54,185; -7,53,179 Note that these spawnpoints must exist in the ``spawnpoints``-list of the ``coords``-section to work. Recurrent Waves ~~~~~~~~~~~~~~~ ``type: [default|special|swarm|supply|upgrade|boss]`` (required) determines the wave type. Read the **Wave types** section further down for more details. ``frequency: #`` (required) determines how often the wave will/can spawn. With a frequency of 1, the wave can potentially spawn on every single wave number. The implicit default waves in MobArena have a frequency of 1, and the implicit special waves have a frequency of 4, which means the default waves (can) spawn every wave, and the special waves (can) spawn every 4th wave. ``priority: #`` (required) determines how "important" the wave is. If two recurrent waves clash, the wave with the highest priority will spawn. The implicit default waves in MobArena have a priority of 1, and the implicit special waves have a priority of 2, which means if the default and special waves clash, the special waves will spawn because their priority is higher. ``wave: #`` (optional) determines the first wave number on which this wave can/will spawn. This is useful for offsetting waves with similar frequencies. Note that if no wave is specified, it will default to the value of the (required) frequency-node. The implicit default waves in MobArena have wave value of 1, and the implicit special waves have a wave value of 4 (same as the frequency), which means the default waves may begin spawning from wave 1, and the special waves may begin spawning from wave 4. Single Waves ~~~~~~~~~~~~ ``type: [default|special|swarm|supply|upgrade|boss]`` (required) determines the wave type. Read the **Wave types** section further down for more details. ``wave: #`` (required) determines the wave on which this wave *will* spawn. No matter what priority a recurrent wave have, if it clashes with a single wave, the single wave will always spawn instead of the recurrent waves. Single waves are good for extraordinary waves like "swarm" waves, "boss" waves or even normal waves with specific monster types, for instance. Wave Types ---------- All MobArena waves must specify a *wave type*, which must be either ``default``, ``special``, ``swarm``, ``supply``, ``upgrade`` or ``boss``. These different wave type modules introduce some new required and optional nodes. Note that no matter what the wave type is, any wave *must* adhere to the requirements of the wave branch (read above). Default Waves ~~~~~~~~~~~~~ Default waves are waves that spawn an amount of monsters picked semi-randomly from an optional list of monsters. The amount of monsters grow at a configurable (but optional) rate. If no growth or monster-list is specified, default waves will consist of 5 different monster types (zombie, skeleton, spider, creeper, wolf), all equally likely to spawn, spawned at the "old" growth rate (player count + wave number). Nodes: ``growth: [old|slow|medium|fast|psycho]`` (optional) determines how fast the monster count grows with every wave. ``old`` means (player count + wave number), but the other four use a mathematical function to determine the monster count, also based on player count and wave number. See [[Formulas]] for more info. ``monsters: : >`` (optional) determines [[monster types]], and their individual probabilities of spawning on each wave. Note that the probabilities are just that, probabilities. They do not specify exact amounts, but only chance of spawning. The following sample will statistically spawn twice as many zombies as skeletons: :: monsters: zombies: 10 skeletons: 5 ``fixed: [true|false]`` (optional) the probability values in the monsters list becomes amount values instead, such that the above wave will spawn exactly 10 zombies and 5 skeletons, regardless of player count and wave number. Special Waves ~~~~~~~~~~~~~ Special waves are waves that spawn *one type* of monster, and always a fixed amount. Unlike with *default waves*, the (optional) monster list with probabilities determines which monster out of the entire list should spawn. The monsters-node's notation is identical to that of *default waves*. ``monsters: : >`` (optional) determines [[monster types]], and their probabilities of spawning on each wave. The following sample will statistically spawn powered-creepers twice as often as slimes: :: monsters: powered-creepers: 4 slimes: 2 Swarm Waves ~~~~~~~~~~~ Like *special waves*, swarm waves spawn just *one type* of monster, but in a configurable (but optional) amount. The swarm wave monsters only have *1 health point*, meaning they will die with just one blow from anything. Their numbers are vast compared to default and special waves, however, so they may be a bit hard on some servers. Use with caution! ``monster: `` (required) which [[monster types]] the swarm consists of. Note that this is different from special waves, in that only one type is specified, and no probability value. ``amount: [low|medium|high|psycho]`` (optional) how many monsters should spawn. Defaults to low (which is still a lot). See [[Formulas]] for more info. Supply Waves ~~~~~~~~~~~~ These waves spawn one monster per player, and will drop a random item from a customized drop list (same notation as the class items). The monster list notation is identical to that of default and special waves. :: drops: grilled_pork, cooked_chicken, cooked_beef, cooked_fish:2 Upgrade Waves ~~~~~~~~~~~~~ These waves don't spawn any monsters, but will give or upgrade items. The class names are optional (you don't have to give items to all classes), and it is possible to use the ``all`` identifier to specify items that will be given to all players regardless of class. The ``give-all-items`` flag determines if all items in the list should be given, or just a random item off the list (like with rewards and supply waves). **Legacy setup**: In the following example, all players get a healing potion, and on top of that, all Archers get 64 arrows, and all Oddjobs get either 2 TNT or a Netherrack: :: upgrades: all: potion:8197:1 Archer: arrow:64 Oddjob: tnt:2, netherrack give-all-items: false **Advanced setup**: Since MobArena v0.95, the Upgrade Waves can be set up to upgrade/replace certain weapons and armor, as well as add/remove permissions. The setup follows the setup of the classes-section. In the following example, the Knight class gets its diamond sword enchanted and its iron chestplate replaced with a diamond chestplate. The Archer just gets some more arrows (legacy setup) while the Wizard class gets the permission to cast the Forcepush spell from MagicSpells: :: classes: Knight: armor: iron_helmet, iron_chestplate, iron_leggings, iron_boots items: diamond_sword ... arenas: ... waves: ... upgrades: Archer: arrow:64 Knight: armor: diamond_chestplate items: diamond_sword 16:2 Wizard: permissions: - magicspells.cast.forcepush give-all-items: true Explanation: Items listed in the ``armor`` node will be considered armor, and (if valid) will replace any item currently in the armor slots of the players. Items in the ``items`` node will be checked if they are weapons or not; if they are weapons, then MobArena will search through the players' inventories for weapons with the same ID, and then replace the first weapon that matches it (automatic upgrades). If no weapon is found, it will default to a generic item, which will just be added to the inventory. Boss Waves ~~~~~~~~~~ Boss waves consist of *one monster* with a configurable (but optional) amount of health, and a configurable (but optional) list of special abilities. The health of a boss monster is significantly higher than that of normal monsters, and thus take much longer to kill. The special abilities help increase the difficulty (and fun!) of a boss wave. ``monster: `` (required) the boss [[monster types]]. Note that only one monster will spawn. ``name: `` (optional) the name of the boss. Shows the given name in a name tag above the boss' head. ``health: |[verylow|low|medium|high|veryhigh|psycho]`` (optional) how much health the boss has. Can be either a flat value, e.g. 40 or 800, or one of the scaling values. Defaults to the scaling value medium. See [[Formulas]] for more info about the scaling values. ``reward: `` (optional) a reward for getting the killing blow on the boss. This reward will only be given to one player (the killer, if any). ``drops: `` (optional) a comma-separated list of items dropped by the boss when killed. The boss will drop exactly the items listed. This could be used to have the boss drop a "key" to advance in the arena, or to gain access to a shed full of weapon chests or something wonderful like that. The item syntax is the same as the one for Supply Waves. ``potions: `` (optional) a comma-separated list of potion effects that will be applied to the boss when it spawns. Use this to slow down or speed up bosses that don't move at quite the speed you want, or perhaps to give a boss the wither effect to limit the amount of time it will stay alive. The potion syntax is ``::``. The amplifier and duration are optional, and will default to 0 (level 1) and pseudo-infinity, respectively. Note that ``slow``, ``slow:0``, and ``slow:0:600`` are identical, except the last one will only last 10 minutes (600 seconds). Check the sample config-file at the bottom for more examples. ``abilities: `` (optional) determines which (if any) boss abilities this boss has. The boss can have several abilities; just separate each ability with a comma (e.g. ``arrows, fire-aura, throw-target``). Note that the abilities happen in a cycle every few seconds, so the more abilities, the longer it takes before each ability is used again. Here is an overview of the different abilities bosses can have: :: NAME DESCRIPTION arrows Shoots arrows fireballs Hurls fireballs fire-aura Burns all nearby (5 blocks radius) players lightning-aura Strikes lightning 4 places around itself (3-block radius) living-bomb A random player is set on fire, and explodes after 3 seconds obsidian-bomb Spawns an Obsidian block which explodes after 4 seconds chain-lightning Lightning strikes the target and jumps to a nearby player disorient-target Spins the target around 45-315 degrees disorient-nearby Spins all nearby (5 blocks radius) players disorient-distant Spins all distant (8+ blocks) players root-target Locks the target in place for a couple of seconds warp-to-player Picks a random player in the arena to warp to shuffle-positions Swaps everyone's (including the boss) positions around flood Places a water block on a random player's location throw-target Throws the target backwards (if in distance) throw-nearby Throws all nearby (5 blocks radius) players throw-distant Throws all distant (8+ blocks) players pull-target Pulls the target towards the boss' location pull-nearby Pulls all nearby (5 blocks radius) players towards the boss' location pull-distant Pulls all distant (8+ blocks) players towards the boss' location fetch-target Warps the target to the boss' location fetch-nearby Warps all nearby (5 blocks radius) players to the boss' location fetch-distant Warps all distant (8+ blocks) players to the boss' location ``ability-announce: [true|false]`` (optional) should boss abilities be announced to arena players? Defaults to true. ``ability-interval: `` (optional) time between each ability. Defaults to 3. Sample config-file setup ------------------------ If you want to try a sample setup, here's one that you can use. Simply copy this block of text, and paste it into your own config-file, replacing the waves-section. :: waves: recurrent: def1: type: default priority: 1 frequency: 1 monsters: zombies: 10 skeletons: 4 exploding_sheep: 5 def2: type: default priority: 2 frequency: 1 wave: 5 monsters: zombies: 10 skeletons: 6 creepers: 4 spec1: type: special priority: 5 frequency: 4 wave: 4 monsters: powered_creepers: 10 angry_wolves: 10 zombie_pigmen: 10 upgrade1: type: upgrade priority: 7 frequency: 10 wave: 10 upgrades: all: potion:8197:2 Archer: arrow:64 Oddjob: tnt:2, netherrack give-all-items: true single: swarm1: type: swarm wave: 7 monster: slimes amount: medium boss1: type: boss wave: 9 monster: spider health: medium abilities: fire-aura, disorient-target, fireballs, throw-nearby potions: speed:3:20, wither, increase_damage:1 ability-interval: 5 boss2: type: boss wave: 13 monster: zombie_pigman health: high abilities: root-target, arrows, fetch-distant, fire-aura drops: lever, stone_button upgrade2: type: upgrade wave: 14 upgrades: all: potion:8197:2 Knight: armor: diamond_helmet items: diamond_sword 16:2;19:1 Tank: items: iron_sword 19:3 Oddjob: armor: iron_chestplate, iron_leggings Wizard: permissions: - magicspells.cast.ChainLightning give-all-items: true boss3: type: boss wave: 16 monster: wolf health: psycho abilities: warp-to-player, fire-aura, throw-nearby, fireballs, fetch-target, arrows potions: slow:1 ability-interval: 1 reward: diamond_chestplate supply1: type: supply wave: 19 monsters: cows: 10 pigs: 5 drops: grilled_pork, cooked_chicken, cooked_beef, cooked_fish:2 boss4: type: boss wave: 20 monster: blaze health: low abilities: fire-aura, throw-nearby potions: speed reward: diamond_helmet