World Processor

This page is a stub. You can help by expanding it.

The **World Processor** is an indestructible block introduced in Version 7.0 that behaves much like a regular Micro Processor, but able to manipulate the map's terrain and units (and faster than it's doppelganger). This lets it destroy and create new Blocks, change the floors and natural walls of the map, spawn units and trigger flags, link to blocks from all teams as well as perform all other functions of a Logic Processor. Its instruction rate is also adjustible by itself.

World Processors are present on almost every map on Erekir and control aspects such as non-aggression periods, production escalation and tutorial-esque instructions. They are also found in Ground Zero as of Version 7.0.

World Processors, along with World Cells and World Messages, cannot be built unless directly in the Editor interface or when editing in-game. They are only configurable when editing in-game or when playtesting through the Editor. World Processors will darken like natural walls if surrounded by other natural walls. They are also not targetable by anything that can shoot.

## Exclusive Commands

### Get Block

The **Get Block** command allows a World Processor to get the data of a block at a specific co-ordinate. It is highly advised that on PC, you should turn on the settings *Show Mouse Position* and *Show Player Position*, under Graphics. If there is no block, it will return the variable as *null*, otherwise it is set as the block.

The command can be configured to check for:

* The floor of a tile (in which case it will never return *null* unless the coordinate is outside of the map boundary).
* The ore on a tile (excluding Graphitic Walls as it is not actually an ore).
* The block on a tile.
* The building on a tile, which excludes natural walls.

### Set Block

The **Set Block** command sets the block at a location to another, with configurable teams and rotation. The six main teams are internally referred to as *derelict, sharded, crux, malis, green* and *blue*; to call them as that team, simply type @ beforehand like *@derelict*.

The rotation determines the rotation state of some blocks like the Conveyor. A rotation state of 0 means that it points to the east, 1 is to the north, 2 is to the west and 3 is to the south.

Like with Get Block, Set Block is also configurable, this time to set either the floor, ore or block (irrespective of building or otherwise). It will not attempt to override buildings with other buildings, but will override natural walls with other natural walls or buildings.

### Spawn Unit

The **Spawn Unit** command spawns a unit at a set location, rotation (in degrees anticlockwise from east) and team. This unit is automatically bound to a variable. It will not bypass the unit cap.

### Apply Status

The **Apply Status** command applies a status effect to a bound unit (by a variable from Spawn Unit or through *@unit* with Unit Bind) containing a unit for a set duration. The eligible Status Effects are anything that is visible in the Core Database.

### Spawn Wave

The **Spawn Wave** command instantly spawns a wave and increases the wave counter by 1. If *natural* is anything but *false*, it will spawn based on the map's intended spawn points. Otherwise, it spawns at a definable location.

### Set Rule

The **Set Rule** command adjusts a game rule to an integer, float or boolean value. The adjustable rules are:

* *currentWaveTime:* sets the time remaining before the next wave in seconds.
* *waveTimer:* determines if there is a wave timer.
* *waves:* determines if waves can be sent.
* *wave:* sets current wave number.
* *waveSpacing:* sets the wave spacing of the map in seconds.
* *waveSending:* determines if the wave timer can be skipped.
* *attackMode*: determines if attack mode is on or off.
* *enemyCoreBuildRadius:* sets the radius of the no-build zone around all cores in tiles.
* *dronZoneRadius:* sets the radius of the enemy spawn point explosion in tiles.
* *unitCap:* sets the default unit cap for all players. Does not affect unit cap increases granted by cores. Enemy AI teams have their unit cap remain at the 32-bit integer limit.
* *mapArea:* sets the playable map area. Uses the same co-ordinate system as that of the Logic Display (Origin in bottom-left corner), but in tiles. World processors not in this area do not function.
* *lighting*: determines if lighting is enabled.
* *ambientLight:* sets the colour of the ambient light in RGBA. Accepts a colour from the **Pack Color** command.
* *solarMultiplier*: multiplies the output of Solar Panels and Large Solar Panels.
* *buildSpeed*: changes the build speed multiplier of a team.
* *unitBuildSpeed:* changes the unit build speed multiplier of a team.
* *unitCost:* changes the unit cost multiplier of a team.
* *unitDamage:* changes the unit damage multiplier of a team.
* *blockHealth:* changes the block health multiplier of a team.
* *blockDamage:* changes the block damage multiplier of a team.
* *rtsMinWeight:* sets the minimum group weight of a team under RTS behaviour.
* *rtsMinSquad:* sets the minimum group size of a team under RTS behaviour.

### Flush Message

The **Flush Message** command will use the game's UI to show what is in the processor's text buffer, much like how **Print Flush** shows it on a Message block. There are four ways of this:

* *notify* will show the text dropping down from the top of the screen, much like an alert in the Campaign for when a sector is captured or lost in the background.
* *announce* will show the text in the centre of the screen for a set time in seconds.
* *toast* will show the text like with *announce* but near the top of the screen, again for a set time in seconds.
* *mission* will replace whatever text is next to the player's health indicator with what is in the text buffer.

### Cutscene

The **Cutscene** command manipulates the game's camera. It has three options: pan, zoom and stop.

* *pan* will pan the camera to a fixed position at a constant speed. This prevents any control from the player and can only stop once given the *stop* command.
* *zoom* will zoom the camera to a certain level. This will also relinquish control from the player unless given the *stop* command.
* *stop* will terminate any cutscene commands and restore control to players.

### Explosion

The **Explosion** command will cause an explosion at a configurable position on the map. It has several settings:

* *team* determines which "team" the explosion is on, not damaging allied buildings. If this is empty, blocks from all teams will take damage.
* *radius* determines the radius of the explosion in blocks.
* *air* and *ground* determine whether the explosion can damage air and ground units respectively.
* *pierce* determines if the explosion is able to pierce and not have its damage absorbed with more blocks. If true, the explosion changes to a shockwave with fixed size.

### Set Rate

The **Set Rate** command adjusts the instruction rate of the processor in instructions per tick. 1 ipt is equal to 10 instructions per second.

### Fetch

The **Fetch** command will obtain either a specified unit, player, building or core or the counts of each for one team.

### Effect

The **Effect** command summons a specific in-game visual effect.