recursal/Fanatic-Fandom huggingface dataset:
Place COP

When a player uses Place COP, he is able to move the flag beacon as if placing a building. When a suitable location is selected, the beacon moves there instantly and its ability is removed. The range is unlimited.

The flag beacon itself is not an obstacle when selecting a location, so the flag beacon can be move to a location overlapping its original location or even directly on its original location, provided the area is buildable.

The Place COP ability is disabled permanently for all flag beacons when they spawn flags, ten minutes after the game begins.

### Usage Examples

The Place COP ability has many potential uses outside of its normal function in capture the flag matches.

The map Flag Beacon to Bunker demonstrates using Flag Beacons to place Bunkers. The Bunkers are automatically loaded with units. This type of system is used in Defense maps such as Beacon Defence.
IceCC Animations

### GndAttkInit

Ground Attack Initialization: This is played when the image begins to attack a ground unit.

### AirAttkInit

Air Attack Initialization: Exactly the same as GndAttkInit, with the exception that it applies to air units.

### GndAttkRpt

Ground Attack Repeat: This is played when the units cooldown has completed, the gotorepeatattk opcode has been called, and the unit is still attacking. This applies only to ground attacks.

### AirAttkRpt

Air Attack Repeat: Exactly the same as GndAttkRpt, with the exception that it applies to air units.

### GndAttkToIdle

Ground Attack to Idle: This is played when a unit returns to an idle state after a ground attack.

### AirAttkToIdle

Air Attack to Idle: Exactly the same as GndAttkToIdle, with the exception that it applies to air units.

### WalkingToIdle

This is played when the unit stops moving.

### SpecialState1

This is some sort of category of special animations. In some cases it acts as an in-transit animation, it is sometimes used for special orders, it sometimes has to do with the animation when something finishes morphing, or the first stage of a construction animation

### SpecialState2

This is some sort of category of special animations. In some cases it acts as a burrowed animation, it is sometimes used for special orders, it sometimes has to do with the animation when canceling a morph, or the second stage of a construction animation

### AlmostBuilt

This is played at one part of the build animation.

### Landing

This is played when a flying building lands.

### LiftOff

This is played when a flying building lifts-off.

### IsWorking

This is played when the unit is researching an upgrade or technology, or training or building units. This is also used for some other animations for some sort of work being done

### WorkingToIdle

This is played when the task being performed for IsWorking returns to idle state.

### WarpIn

This is played when a unit or building warps-in.

### StarEditInit

Previously was incorrectly called InitTurret. This is actually an alternate initialization animation that is played when the unit is created in the campaign editor.

### Disable

This is played when the unit becomes disabled, either through the "Set Doodad State" trigger action or by not being in the psi field of any pylons.

### Enable

This is played when the unit becomes enabled, either through the "Set Doodad State" trigger action or by being in the psi field of any pylons.
Scy'kadia LARP Wiki

## Welcome to the Scy'kadia LARP Wiki

Scy'kadia is a Sydney based, high fantasy, Live Action Roleplay group.

This wiki provides info relevant to Scy'kadia, including lore of the game world, links to important documents, & background descriptions for many of our player-created characters.

IMPORTANT NOTE: As this page is oft edited by our players, some of the information found within is considered non-canon (unfortunately we don't get time to check every page created & besides, we do want our players to exercise creativity). When making your character always refer to the official documents on our Facebook page to avoid confusion about major details of the game world (like the current rulers, realms, etc).

- The Admin Team.

## Important Pages

Participant Characters

Factions

Significant Locales

Game Summaries

## Links

To learn the rules, find notifications for upcoming events & speak to players or admins, visit: https://www.facebook.com/groups/scykadia/

The rules themselves are found specifically here: https://www.facebook.com/groups/scykadia/files/

When considering participation in Scy'kadian events or online activities, be sure to read our Code Of Safe Conduct first! This can be found in the files section of our Facebook Group.
Rookies Four

* Rias and Sona agreeing to a tennis match.jpgRias Gremory and Sona Sitri
* Sairaorg Bael
* Seekvaira anime.jpgSeekvaira Agares
1/3
The **Rookies Four** (若手四王ルーキーズ・フォー, *Rūkīzu Fō*, lit. Four Young Kings) is the title that was given to the four young Devils consisting of Sairaorg Bael, Rias Gremory, Sona Sitri, and Seekvaira Agares.

## Summary

First mentioned in Volume 14 by Mephisto Pheles and later explained by Ravel, the Rookies Four refers to the four Devils - Sairaorg, Rias, Sona, and Seekvaira as "a generation gathered with promising rookies that are on an exceptional level". Ravel also mentions that something like this has never occurred before in the history of the Underworld. She claims that the Rookies Four and their servants belong to something which is out of the ordinary, mostly because they are still starting young Devils who have still yet to mature. Azazel mentions that the reason for the exceptional abilities displayed by the Rookies Four and their servants is due to training. Most pure-blooded Devils would not train; instead, they would depend entirely on the demonic powers that they inherited and would simply trade off any of their servants that they deemed weak. The Rookies Four, however, would rather train their servants instead of making a trade with other Devils.

## Trivia

* Three members of the Rookies Four have had major roles in the story.
* The other name for them is "The Four Novice Kings".
* Sairaorg is the only male member of the Rookies Four.
* Seekvaira is the only member of the Rookies Four to not have any known siblings.
* All members of the Rookies Four have servants that have connections with Dragons.
	+ Issei Hyoudou for Rias.
	+ Genshirou Saji for Sona.
	+ Ladora Buné for Sairaorg.
	+ Alivian for Seekvaira.
Queue or Exclusive Triggers

"Queue" or Exclusive Triggers is a good method to use if you want to:

* Avoid conflicting triggers / conflicting conditions (for example: due to conflicting timing)
* Place priority on a trigger to be activated before another trigger which meets the same conditions
* To allow only the working of one trigger which meets the same conditions as any other trigger
* To skip certain triggers (going down the list of triggers) which meet equal conditions
* To enable or disable certain triggers or groups of triggers during the working of a particular trigger
* "Wait" conditions (as opposed to wait actions)
* "One Trigger at a Time Please"

This method is very effective when dealing with timing glitches of triggers which meet the same conditions or of a pair of triggers in which the later triggers' conditions depend on the previous triggers' actions. For example, when you don't want the later triggers to activate before the 1st trigger is finished.

## How to:

One of the best things to use as a "queue" or exclusive trigger, is the death count. My favorite is the death count of the start location (you can use whatever unit you like).

### Example:

```
Trigger("Player 1")
Conditions:
Deaths("Player 8", "Start Location", Exactly, 0);
Bring("Player 7", "Zerg Zergling", "Location A", Exactly, 1);
Switch("Switch0", set);
Actions:
Set Deaths("Player 8", "Start Location", Set To, 1);
Create Unit with Properties("Current Player", "Vulture Spider Mine", 1, "Location A", 1);
Set Switch("Switch0", randomize);
Set Deaths("Player 8", "Start Location", Set To, 2);
Preserve Trigger();

```

```
Trigger("Player 1")
Conditions:
Deaths("Player 8", "Start Location", Exactly, 0);
Bring("Player 7", "Zerg Zergling", "Location A", Exactly, 1);
Actions:
Set Deaths("Player 8", "Start Location", Set To, 1);
Give Units to Player("Player 7", "Player 8", "Zerg Zergling", 1, "Location A");
Set Switch("Switch0", randomize);
Set Deaths("Player 8", "Start Location", Set To, 2);
Preserve Trigger();

```

```
Trigger("Player 1")
Conditions:
Deaths("Player 8", "Start Location", Exactly, 2);
Actions:
Set Deaths("Player 8", "Start Location", Set To, 0);
Preserve Trigger();

```

In the example above, I have 3 triggers:

* The 1st trigger and the 2nd trigger both have the exact same conditions, (except that the 1st trigger has one more additional condition: The Switch). If Switch 0 is set, then the 1st trigger will be activated.
* The 2nd trigger will be activated regardless. This means that both triggers will be active at the same time (I don't want it to be). The death count of the Start Location for player 8 is used in both triggers (in the conditions, and at the beginning and end of the actions) to make it exclusive; that is: Only ONE trigger will be activated while the Other Skipped. Notice that when Switch 0 is set, the 1st trigger is activated; and the death count changes to exclude the very next trigger.
* The 3rd trigger I used is only to "reset" the "queue".
StarEdit

Template:Stub
**StarCraft Campaign Editor (StarEdit)** is the stock map editor provided by Blizzard to create custom StarCraft maps. Compared to third-party editors such as SCMDraft 2, StarEdit is simple to use but lacking in support of various (unintended) features and capabilities of the game. StarEdit also comes with an interesting helpfile that explains some of the workings of maps and triggers from Blizzard's perspective.
Cmdicons.grp

## Unit Images

The first 195 images correspond to unit IDs in units.dat, and are the outlines that appear in the selected unit panel in the middle of the hud while playing.

* e.g. 0 = Terran Marine, 32 = Firebat, 84 = Protoss Observer.

*Note: Some images are omitted and have placeholder images that read "BLANK" because they are not selectable.*

## Command Buttons

The rest of the images are the buttons used for unit commands. Order pattern unknown.
Game

**Game** is an evolutionary process that starts on a map with initial conditions defined by the game type, progresses with certain speed defined by the game speed, submits to laws of the imaginary world, takes place in the map environment, uses computational resources, progresses in certain limits, is held under control of intellectual or computer players, involves struggle of opposing players for victory conditions and finishes either in draw or defeat for everyone or in victory for a group of allied players that agreed for the allied victory. Games may be *singleplayer* or *multiplayer*. These vary by such nuances of the game mechanics as but not limited to: availability of cheat codes, presence of latency, circumstances under which game pause may occur, behavior of some trigger actions (such as Center View and Pause Game), possibility to change speed of the game after the start of the game.
GRP Image Format

* Byte = 8 bits
* Word = 2 bytes (Short)
* Long = 4 bytes
* All values are unsigned.

* GRP Header
* Image Header \* number of images
* Line Offsets \* number of images \* image height
* RLE Line \* number of images \* image height

* Word - number of images
* Word - maximum width
* Word - maximum height
* Image Headers - one header for each image

* Byte - difference from maximum width (?)
* Byte - difference from maximum height (?)
* Byte - width (in pixels)
* Byte - height (in pixels)
* Long - offset to Line Offsets: the number of bytes from the beginning of the file to the offset for each line.

### Line Offsets

Struct Size: 2 bytes \* image height

* Word - offset to a RLE Line in bytes from the location of this Line Offsets.
* Word - another offset...
* Word - another...
* Word - another...
* ...

### RLE Line

* Byte - Instruction and length:
	+ if bit 7 is on, it indicates X number pixels are skipped aka transparency.
	+ if bit 6 is 1 indicates X number of pixels are "this" color. (RLE compression part)
	+ else X normal pixels should be copied over.

eh... i got lazy, sorry. :/

### Example Code

```
struct definitions
struct grp_image_s
{
 uint8_t  x_offset;
 uint8_t  y_offset;
 uint8_t  width;
 uint8_t  height;
 uint32_t offsets;
};

struct grp_header_s
{
 uint16_t     num_images;
 uint16_t     max_width;
 uint16_t     max_height;
};

struct color_s
{
 uint8_t red;
 uint8_t green;
 uint8_t blue;
 uint8_t alpha;
};

```

read the whole file into sprite\_data

```
uint8_t sprite_data = new uint8_t[file_size_in_bytes];

```

allocate a color\_s for each pixel (for just one image)

```
grp_header_s* gr_file_header = (grp_header_s*)sprite_data;
color_s* pixels = new color_s[grp_file_header->max_width *
                     grp_header->max_height ];

```

decoding algo

```
for (k = 0; k < num_images; ++k)
{
  current_image = (grp_image_s*)(sprite_data + 6 + (k * sizeof(grp_image_s)));
  line_offsets = (uint16_t*)(sprite_data + current_image->offsets);

  image_width  = current_image->width;
  image_height = current_image->height;

  memset(pixels, 0, grp_header->size_x * grp_header->size_y * sizeof(color_s));

  for (y = 0; y < image_height; ++y)
  {
    line_data   = (uint8_t*)line_offsets + line_offsets[y];
    line_pixels = pixels + (image_width * y);
    for (data_offset = x = 0; x < image_width;)
    {
      if (line_data[data_offset] & 0x80) // transparent
        {x += line_data[data_offset++] & 0x7f;}
      else if (line_data[data_offset] & 0x40)  // data run
      {
        length    = x + (line_data[data_offset++] & 0x3f);
        rle_index =      line_data[data_offset++];
        while (x < length) {line_pixels[x++] = palette[rle_index];}
      }
      else // normal
      {
        for (length = x + line_data[data_offset++]; x < length;)
          {line_pixels[x++] = palette[line_data[data_offset++]];}
      }
    }
  }

  COPY pixels TO ANOTHER PLACE
}

```
Crash List

All of the things listed here can and usually will cause *StarCraft* to crash. If your map is crashing and you can't figure out why, read through this list and make any fixes necessary.

## Unit-/sprite-related crashes

* Setting a building's max HP to zero. (Windows-only)
* Setting a unit's build time to zero and viewing the unit production bar while the unit is being trained. (Windows-only)
* Placing certain units on the map.
	+ Independent Command Center, Cantina, Cave, Cave-in, Jump Gate, Kyadarin Crystal Formation, Mining Platform, Ruins, Protoss Marker, Protoss Unused (both of them), Unused Terran Bldg (both of them), Terran Marker, Alan Turret, Duke Turret (both of them), Goliath Turret, Tank Turret (both of them), Unused Zerg Bldg, Unused Zerg Bldg 5, Zerg Marker
* Placing certain sprites on the map. (Examples: Psionic Storm, Grenade Shot Smoke, White Circle)
* Placing certain extended units or extended sprites on the map. (buffer overflow)
* Placing units for extended players. (color-related buffer overflow)
* Disabling certain units.
* Selecting Flags with high-index (extended) player colors. (buffer overflow)
* Selecting extended units. (buffer overflow)
* Selecting unit sprites with negative HP.
* Selecting a unit with 8388607 HP and a nonzero HP flag (the small box next to HP box).
* Giving units from one player to another just as they hatch or are finished building.
* Placing certain disabled unit sprites on the map. (Examples: Protoss Archon, Protoss Pylon, Terran Siege Tank, etc.)

#### List of units that crash StarCraft

* Independent Command Center
* Cantina
* Cave
* Cave-in
* Jump Gate
* Kyadarin Crystal Formation
* Mining Platform
* Ruins
* Protoss Marker
* Protoss Unused (both of them)
* Unused Terran Bldg (both)
* Terran Marker
* Alan Turret
* Duke Turret (both)
* Goliath Turret
* Tank turret (both)
* Unused Zerg Bldg
* Unused Zerg Bldg 5
* Zerg Marker

## Map-related crashes

* Creating a map in which both dimensions are non-standard sizes. (Standard sizes are 64, 96, 128, 192, and 256 tiles.)
This only crashes when there is no data in the terrain and mini-map buffers from a standard-sized map. In other words, play a normal-sized map before playing a odd-sized map in order to avoid the crash.
* Setting an active player's race to an invalid one. (buffer overflow)
* Setting an active player's controller to an invalid one. (buffer overflow)
* Setting an active player's color to an invalid one.
* Invalid terrain. Can happen when making picture maps.

## Other crashes

* Attempting to use the Play WAV trigger action with strings that don't exist in the map. (String pointer is beyond max strings (default: 1024).)
* Displaying text that is mapped to a non-existent string. (String pointer is beyond max strings (default: 1024).)
* Initiating non-existent triggers. (buffer overflow)
* Displaying illegal/invalid portraits. (buffer overflow)
* Placing non-existent terrain tiles. (buffer overflow)
* Running conditions that read as a buffer overflow and reach non-readable memory.
* Saving the game when playing a map in which any player owns more than 65534 triggers.
Battra

**Battra** is a black divine moth Kaiju, and one of Earth's monsters.

## History

### Origin/Backstory

Created by the Earth as a natural 'defense system' to protect it from anything deemed to be a threat to its continued existence, Battra was sealed deep below the Earth for millions of years until the time was right for it to be summoned in the planet's hour of need. By the time the Gior arrived, Battra had already been fighting a protracted 'war' against both humanity and Earth's monsters, who the Earth had deemed to be beyond its control.

## Personality

Cold and unfeeling, Battra acts solely on the instruction of Earth's spirit, and as such keeps mostly to himself when not defending the planet from whichever new threat it commands him to fend off.
Terrain Type Elevations

* Red = Low Height
* Green = Mid Height
* Blue = High Height

## Ashworld

* Magma
* Dirt
* Lava
* Shale
* Broken Rock
* High Dirt
* High Lava
* High Shale

## Badlands

* Dirt
* Mud
* Water
* Grass
* Asphalt
* Rocky Ground
* High Dirt
* High Grass
* Structure

## Desert

* Tar
* Dirt
* Dried Mud
* Sand Dunes
* Rocky Ground
* Crags
* Sandy Sunken Pit
* Compound
* High Dirt
* High Sand Dunes
* High Crags
* High Sandy Sunken Pit
* High Compound

## Ice

* Ice
* Snow
* Moguls
* Dirt
* Rocky Snow
* Grass
* Water
* Outpost
* High Snow
* High Dirt
* High Grass
* High Water
* High Outpost

## Installation

* Substructure
* Substructure Plating
* Substructure Panels
* Bottomless Pit
* Floor
* Plating
* Roof

## Jungle

* Water
* Dirt
* Mud
* Jungle
* Rocky Ground
* Ruins
* Raised Jungle
* Temple
* High Dirt
* High Jungle
* High Ruins
* High Raised Jungle
* High Temple

## Space Platform

* Space
* Low Platform
* Rusty Pit
* Platform
* Dark Platform
* Plating
* Solar Array
* High Platform
* High Plating
* Elevated Catwalk

## Twilight

* Water
* Dirt
* Mud
* Crushed Rock
* Crevices
* Flagstones
* Sunken Ground
* Basilica
* High Dirt
* High Crushed Rock
* High Flagstones
* High Sunken Ground
* High Basilica
Changing Unit Wireframes

In StarCraft, every unit has a wire frame that represents itself. Large wire frames appear in the command bar when you select a single unit, and smaller ones appear when you select multiple units. Wire Frames change color as the unit's health changes. The normal wire frames consist of a mixture of green, yellow, and red. Green represents high health, yellow medium, and red low.

## Modifying Wire Frames with Triggers

The easiest way to change the colors of Wire Frames is to modify the health of the unit. This is done with the **Modify Unit Hit Points** Trigger.

## Modifying Wire Frames with Unit Settings

With StarForge and SCMDraft 2 you can change the Wire Frames with Unit Settings. When you select a unit to modify, there are two boxes for Hit Points.

The large one contains the unit's hp and the small one has a 0. If you change the 0 to a different number, the in-game wire frame for that unit may be different. The unit's hp will also be different; if you do it correctly it will have more than 100% hp.

For example, if you put a 3 in the small box and a 2 in the large box, the unit's hp will be 2/1 and have a different wire frame.

The following are results of different combinations of numbers in the large and small boxes. With Protoss and Terran each combination has two different out comes, with Zerg there is only one. The values in the small boxes are just flags--meaning everything but 0 will give the same result, and 0 will do nothing. Please also note that different tilesets may change the wireframe, even if the HP value remains the same.

#### Examples

 2 / 3

 1 / 9

 2 / 1

 7 / 2

 8 / 4

Here are the approximate percentages of nonstandard [i.e. blue, black,] wireframes:

**Unique/Total HP - Percentage**

* 0/500 -- 0%
* 245/500 -- 49%
* 250/500 -- 50%
* 259/500 -- 51.8%
* 243/500 -- 48.6%
* 250/500 -- 50%
* 231/500 -- 46.2%
* 241/500 -- 48.2%
* 245/500 -- 49%

* Note that these were made with 9 clusters of 100 Protoss units, and each unit was counted by hand (or eye) five times according to their cluster. Contact poison\_us if you have any questions.\*
Terran

The **Terran** race is one of three playable civilizations in the *StarCraft* series. The term "terran" is a demonym referring to humans. They are noted for their reliance on ranged units, adaptability, and micromanagement.

## Race-specific attributes

* Terran buildings and mechanical units can be repaired by Terran SCVs.
* Terran buildings will catch fire when damaged. When their health is in the red, they will slowly begin to take fire damage until they burn down.
* Some Terran buildings can lift off, fly to another location, and land there.
* Some Terran buildings can construct and use add-ons -- small structures that, when attached to a "host" building, grant tech tree upgrades.
* SCVs are vulnerable when constructing buildings, as are the structures being built. If an SCV is killed while constructing a building, the incomplete building will remain on the map. Another SCV can be sent to finish it.
Let Esc, F10 become in-game buttons

**To let [Esc] become part of the in-game buttons:**

*StarCraft* Trigger [template]
Players

* Human Player 1

Conditions

* Human player 1 commands at least 1 infested Duran.

Actions

* Center Location labeled '9x9 infested duran bazooka' to Infested Duran.
* Preserve Trigger.

*StarCraft* Trigger [template]
Players

* Human Player 1

Conditions

* Human player 1 brings at least 1 Infested Duran to '9x9 infested duran bazooka'.
* 'Switch bomb' is cleared.

Actions

* Wait for 9999666 milliseconds.
* Set 'Switch bomb'.
* Preserve Trigger.

*StarCraft* Trigger [template]
Description
Use [Esc] key to fire bazooka plus create human player 1 random warrior.
Players

* Human Player 1

Conditions

* 'Switch bomb' is set.

Actions

* Create 1 'science vessel BOMB' at '9x9 infested duran bazooka' for neutral player.
* Create 2 'Overlord BOMB' at '9x9 infested duran bazooka' for neutral player.
* Kill all 'science vessel BOMB' for neutral player.
* Kill all 'Overlord BOMB' for neutral player.
* Kill all any unit for Hostile Computer player 2 at '9x9 infested duran bazooka'.
* (Create 1 'random warrior' at 'random warrior base' for Human player 1).
* Clear 'Switch bomb'.
* Preserve Trigger.

After 9999666 milliseconds the bazooka will fire/(random warrior will arrive) automatically, just use some triggers to cancel the bombing or the arrival of random warrior at that moment. Can also use defeat/victory/other triggers if the mission reaches the 9999666th millisecond.

**To let [F10] become part of the in-game buttons:**

When 'power overwhelming' or 'black sheep wall' or 'staying alive' is enabling, actually it will need several seconds for the human player to re-type the cheat for disabling it. Use the ways shown at the article 'List of single-player cheats in StarCraft' to detect these cheats. If a human player cannot disable (one of) these cheats quickly, defeat... the only way to competently disable (one of) these cheats is using [F10], [save], then [load] the scenario.

**Anti-[F10]... :**

With 'staying alive', any defeat trigger + preserve trigger will still never make a player defeat. If the player uses [F10], [save], [load], the cheat 'staying alive' will be gone then the player will lose unless
The CONDITIONS are no longer be, such as a slain Zeratul Hero has been being on the map again.
Switch

A **Switch** is an on/off variable that can be found in "Set" or "Cleared" states. Switches are assigned values with actions and tested with conditions. Switches may be given custom names which makes them use strings. There is a maximum of 256 switches that may be used in a map. Switches can be used to keep track of which triggers have been activated, to disable or enable certain triggers or to link multiple triggers together.

## Conditions

Condition text: <Switch name> is <switch state>.

Tests **switch** <switch name> against given **state** <switch state>.

### Editors syntax

Syntax in SCMDraft 2:

* Switch("Switch name", set/not set);

Syntax in StarForge:

* Switch(Switch name, Switch state);

## Actions

Action text: <Switch name> is <switch state>.

Tests **switch** <switch name> against given **state** <switch state>.

### Editors syntax

Syntax in SCMDraft 2:

* Switch("Switch name", set/not set);

Syntax in StarForge:

* Switch(Switch name, Switch state);
Mission Briefings

Editing mission briefings is similar to that of editing triggers. Trigger editing requires a player, condition, and action. Mission briefings only require a player and action. A few actions can be carried out:

#### Display Speaking Portrait

Makes one of the four portraits at the top begin its speaking (or moving) animation cycle for a set amount of time. You must have the portrait first shown (see SHOW PORTRAIT) for this to work.

#### Hide Portrait

Makes one of the four portraits at the top disappear. You must have the portrait first shown (see SHOW PORTRAIT) for this to work.

#### Mission Objectives

Changes the mission objective box at the bottom left corner to your desired text. Note that this does not refer to the mission objectives box in the game, rather only the mission objectives box in your mission briefing prescreen is affected.

#### Show Portrait

Reveals the portrait of a desired unit in one of the four portrait slots.

#### Text Message

Displays a given text message for a set amount of time. Should be coupled with the WAIT function as the briefing duration does not count the time the message it to be displayed (i.e. the briefing may end before displaying the text for the set amount of time if the wait period is less than the time the message is to be displayed). Also the text message will scroll downwards if the message exceeds the length that can fit in the box. The scroll speed can be adjusted by lengthening or shortening the text display time (slower speeds by increasing display time and vice versa). Note that there is a max speed the text can scroll and if too large a message is shown in too small a time, the message will be truncated.

#### Transmission

This is a combo of the DISPLAY SPEAKING PORTRAIT, PLAY WAV, and TEXT MESSAGE functions. However you must still remember to SHOW PORTRAIT first in a separate action.

#### Wait

This function allows you to determine the length of the entire mission briefings as well as set pauses between transmissions.

Remember that having actions set for any number of time without any "WAIT" action itself, the mission briefing will simply end and nobody will see what you've done.
To make splash damage of Scarabs also damage the player's own units

The splash damage of human player reavers' scarabs can damage human player's own units by using this way:

*StarCraft* Trigger [template]
Description
Place some reavers for hostile computer player 2 first.
Players

* Computer Player 2

Conditions

* At least 1 game seconds.

Actions

* Execute AI script 'Send all units on Strategic suicide missions'.

*StarCraft* Trigger [template]
Description
Turn computer player 2 to rescue passive.
Players

* Computer Player 2

Conditions

* At least 9 game seconds.

Actions

* Execute AI script 'Switch computer player to rescue passive'.

*StarCraft* Trigger [template]
Description
...reavers.
Players

* Computer Player 2

Conditions

* Any (custom score is at least 130, to delay).

Actions

* (modify score set to 0 custom).
* Add at most 10(or 5 if had not upgraded) to hanger for all 'Reaver' at anywhere owned by all players.
* Give all 'Reaver' owned by all players at anywhere to 'Other hostile computer player 3'.
* Give all 'Reaver' owned by 'Other hostile computer player 3' at anywhere to 'computer player 2'.
* Preserve trigger.

Let some human player units rescue these Player 2 reavers again and again, the splash damage of human player reavers' scarabs will now damage human player's own units.

By default, your newly added Scarabs will lose the Scarab Damage upgrade. To let those scarabs still have the upgrade, click the Scarab Damage for hostile computer player 2 and player 3 to be 'set' in the Player Settings.
Map Limits

There are several **limits** that a mapper may encounter when creating maps (particularly UMS maps) for *StarCraft*. Most of these limits are numeric, such as the maximum amount of units that may exist during gameplay, or the number of locations a map may contain.

## List of map limits

* Location limit: **254** (+ Anywhere = **255**)
* String limit: **1024** in StarEdit/XtraEdit
Variable in other editors, see Strings.
* Trigger limit: **65534 per player**
This is the number of triggers that a player in a map can have until *StarCraft* crashes while saving the game.
* Minimum working map size: **1x6**
* Maximum working map size: **256x256**
* StarEdit Unit limit: **1650**
* CHK load Unit limit: **1700**
This does not include Start Locations.
* *StarCraft* Unit limit: **1700**
This does not include Start Locations.
This limit is also known as map max.
* StarEdit Sprite limit: **250**
* CHK load Sprite limit: **499**
This is the number of Pure Sprites *StarCraft* will load which obviously includes the sprites that are on some doodads like the tree doodads. If ever you over-pass this limit, *StarCraft* will ignore the last sprites created.
* *StarCraft* Sprite limit: **2500**
* *StarCraft* Image limit: **5000**
* *StarCraft* Weapon limit: **100**
Cutoff of **80** for Terran Valkyries.

## List of general limits

Unit HP range (1+3 Bytes)

**-8 388 608** to **8 388 607.5**
Protoss Shield range (2 Bytes)

**0** to **65 535**
Mineral/Gas cost range (2 Bytes)

**0** to **65 535**
Build time range (2 Bytes)

**0** to **65 535**
Armor range (1 Byte)

**0** to **255** (+255 with upgrades)
Upgrades range (1 Byte)

**0** to **255**
Resource range for Mineral Fields and Vespene Geysers (2 Bytes)

**0** to **65 535**
Damage range (2 Bytes)

**0** to **65 535** (+ **65 535** bonus \* 255 upgrades)
Number Value (Wait, Set Deaths, Set Mineral Amount, Scores, etc.) range (4 Bytes)

**-2 147 483 648** to **2 147 483 647** signed
**0** to **4 294 967 295** unsigned
Mapmaking Tips by Demaris

Map Making Tips by Demaris

By Demaris, 2006-03-05 @ 05:19:11

When you are making extensive maps, and especially when you are dealing with more advanced concepts (I.E. Mobile Grids and Death Counters), there are many things that can make the process of creating the map go more smoothly.

Always name your locations! This is especially useful when dealing with multiple mobile grids. Even if it is simple names like "p1 grid", it still makes it so you don't have to look back at your other triggers to find out whether you used "Location 47" or "Location 46" for your complex spell. It may seem obvious, but it is a real time saver. Also, if you want to allow others to look at your map, named locations will let them see more quickly where they are located and to which triggers they relate.

Death Counter Shortcuts

1.If you are using a unit that doesn't appear on your map (as you should be!), name the unit to something which helps you remember what the counter is used for.

I.E.

Player 1 has suffered at least 35 deaths of "Cave-in"

Compared to:

Player 1 has suffered at least 35 deaths of "P1 randomization result"

And for single state variables (Death counters that just work as switches)

Player 2 has suffered exactly 1 death of "Kakura"

Compared to

Player 2 has suffered exactly 1 death of "Spawn Switch"

Comments

When I talk about comments, I mean the trigger action, of course. I can't count the number of times i've yelled at a friend when he asked me to help with a trigger problem. I open the map up and find 80 or so uncommented triggers. He doesn't know which trigger it is either. So i get to slog through them all until I find the one that looks right. This is especially important if it is a long project, and you are forced to stop mid-trigger group. Leave a trigger with the Condition of Never and the comment of where you left off, for example "Finish the unit spawns after p4".

Just a couple of hints to speed your mapmaking along.

(Copied from Old Old Wiki; Original Article - http://doodle77.dyndns.org/tutorials.php?id=318)
Isometrical Terrain

Isometrical terrain is the basis of most maps. While some maps use a lot of rectangular terrain, it quite simply doesn't look good.
But what is isometrical terrain? It's a long word for something easy to use. Basically, the terrain Blizzard uses in their maps is isometrical. It is a 'puzzle' of 2 dimensional pictures, or 'puzzle pieces', that looks 3 dimensional when the puzzle is put together.
The easiest way to see what the puzzle looks like is to open your map editor, and go to the terrain. Click the type you want, and paint it onto the map. It's that simple!

How it works: StarCraft has a bunch of image files known as tiles. These are the 'puzzle pieces'. Starcraft puts these pieces together to make a 3D-looking image using a preset system.

What makes StarCraft terrain look so good, and not just a repetitive bland terrain, is because most tiles have several pairs, which look almost the same. However, although they are different, they can both go into the same place without looking out of place. So Starcraft randomly chooses one of the pairs each time there is a slot that it wants a piece for. You can see all the possible pairs for a particular tile by going on terrain, and changing the dropdown box on the right to Subtile, and Ctrl-click a tile(i think, someone check this, no scmdraft on this comp). We'll have more about the Subtile tool later.

Another thing about Isometrical terrain is that it doesn't let you do everything. For example, you can't put cliff terrain on top of more cliffs and stack it. Instead, it will just replace it with more cliff. Try it and see for yourself! To get around that, you can use extended terrain.

### Credits

Thanks to Jack for writing this in September 2009.
Simple Waterfall Terrain

**Step 1:** Create a T shape of water.

**Step 2:** Create High Dirt next to the T as shown in the picture.

**Step 3:** Extend the southern part of the T one pixel up and one left.

**Step 4:** Turn the Top part of the T into High Dirt the turns into water by copy and pasting the water to dirt one pixel up and then finding the corresponding tile of high dirt that matches the tile that goes with the top of the water as shown in the picture.

**Step 5:** Copy and Paste random watercliff tiles to the area between the water where the water fall is going to be.

**Step 6:** Extend your cliffs to your liking.

**Step 7:** Add Sprites to your chosing. Becareful to not over do the sprites! The Sprite that makes it look like a waterfall is under: Spites;Unknown;Unknown;Unknown 3.

**Step 8:** Place locations at the base of the waterfall and make triggers that create any halucinated air unit and kill it imediatly, this will give it a nice effect that make it look real.

Experiment with this until you can do it in your sleep. You'll get it, one day. And no, there is no way to get rid of those pesky white lines...

Original author is A\_of\_s\_t, 2006-04-10
Player

A **player** is a participant in a StarCraft game. Players own and control units in a *StarCraft* map. Vision and triggers also operate on a per-player basis. A map cannot have more than eight players (excluding Neutral).

## Human players

Virtually every *StarCraft* map features a human player. Human players are the actual people that play maps.

## Computer players

Computer players' actions are controlled by AI scripts and triggers. The mapmaker has control over computers' actions.

A computer player need not be an actual participant in the game. A mapmaker might use a computer as a trigger or death counter owner, to ensure that certain important triggers run regardless of the number of human players. Computers could also be used to give a human player vision of one or more specific locations.

### Rescuable players

Rescuable players are a special kind of computer players. When another player's units approach those of a rescuable player, the other player takes ownership of the rescuable units.

### Neutral

Neutral, also known as Player 12, is a "dummy" player. All Mineral Fields and Vespene Geysers on a map belong to Neutral. If, during an online match, a human player leaves the game early, their units will be given to Neutral. Unlike normal human and computer players, Neutral cannot run triggers. (Triggers can be given to Neutral, but they will not execute unless other players also own them.)

### Extended players

Players 9, 10, and 11 are extended players. These players can only be made use of in third-party map editors.

Extended players do not have vision of any units -- not even their own. This means that, with few exceptions, extended players' units cannot attack other units. Like Neutral, extended players cannot run triggers; this means that they cannot gain shared vision of other players' units.
Anti-Lifting Off

The Terran building's Liftoff ability cannot be disabled directly, but there are several ways to prevent players from moving their buildings.

Simply destroying buildings that lift off is probably the easiest method. This can be done by placing enemy air attackers near the buildings, or by creating an air-only location over the buildings and killing anything that enter it. If you destroy a player's building for lifting off, you may want to recreate it on the ground.

Another way is to disable the buildings with the Set Doodad State action. This cannot be used on the Command Center, Starport, or Science Facility. Disabled buildings are unable to liftoff, but their other functions are disabled as well.

Placing the buildings as Unit Sprites and checking their Disabled property will also prevent them from lifting. As with the above method, disabling Liftoff this way will also disable all of the building's other functions. This can be used on all of the buildings. Additionally, this will cause the buildings to appear half-built.

Lastly, you can allow buildings to lift off, but move them back or destroy them if they leave a designated area. One thing to remember about doing this is that the Move Unit and Order actions are unable to effect buildings that have been given an order to land.
Counter Arithmetic

t is possible to do basic mathematical operations with triggers. Refer to the map Binary Calculator for an example of add, subtract, multiply, and divide.

Binary Countoffs can be used to speed up these calculations.

## Addition

Adding two counters is fairly simple. All you need to do is subtract from one counter while adding to the other. As an example, suppose you have two counters, minerals and gas, set to 10 and 8 respectively, and you need to add gas to minerals. It is possible to do this with a single trigger.

* Conditions:
	+ Current Player accumulates at least 1 gas.
* Actions:
	+ Preserve trigger.
	+ Modify resources for Current Player: Subtract 1 gas.
	+ Modify resources for Current Player: Add 1 ore.

This trigger will need to be allowed to run untill gas reaches zero in order to get the correct sum. The use of hyper triggers will speed up this process greatly.

If you need to have this operation finish in one trigger cycle, you can copy this trigger many times, or use a binary countoff.

## Subtraction

Subtraction can be done similarly to addition. Instead of subtrating from one counter and adding to the other, subtract from both counters. A problem with this method of subtraction is that it will not handle negative numbers. If the subtrahend is larger than the minuend, the result will incorrectly be zero.

### Subtraction with Negatives

Since negative values are common when dealing with subtraction, and StarCraft's counter system won't deal with them, your system will need to be able to.

The above subtraction method, with no regard for negative numbers, will attempt to keep subtracting when it is not possible to do so. For example, if you're trying to subtract 5 from 2, the system will attempt to subtract one from the result thee times when it is already zero, which will not change it.

To counter this, simply prevent the system from doing it. When the number being subtracted from reaches zero, stop. The other counter will still have a positive value. If you use your imagination and pretend that this value is negative, then this is your result.

## Multiplication

For this method of multiplication, you will need additional counters. Check if either of the numbers are 0 before you start, as this indicates that the result will be zero.

If the numbers (minerals and gas) are non-zero, then do the following operations:

1. Add the amount of gas to a Result counter and to a Storage counter.
2. Subtract 1 from minerlals.
3. Use the Storage counter to restore the amount of gas.
4. Repeat steps these untill the amount of minerals is zero.

For this operation to happen in a reasonable amount of time, you will almost certainly need to use binary countoffs. If the numbers are very large, it may also be necessary to copy the entire system a few times over to speed up the calculation.

## Division

Divide is similar to multiplication.

Just subtract the denominator from the numerator, and add 1 to the result. Repeat this untill the numerator reaches zero. You can store the amount subtraced during the last cycle in another counter if you want a remainder.
Crystallic Cannons

Have you ever seen crystallic cannons? Many haven't, because it is a bit useless in maps, but it looks cool. It is basically what the cannon looks like before it is fully warped. This tutorial will help you in that process of creating one or many crystallic cannons.

## Explanation

Basically, This is the easier version and would probably take more time. Place individual locations for where the cannons are going to be created. Why? Because it would probably stop bugs and allow creations of many cannons. Now for the triggers.

*StarCraft* Trigger [template]
Players

* Neutral

Conditions

* (Put any conditions, but I suggest you make one that would prevent the player from making multiple cannons, such as, if a player has a certain amount of gas)

Actions

* Enable doodad state for 'Protoss Photon Cannon' at 'Location'.
* Preserve trigger.

*StarCraft* Trigger [template]
Players

* Neutral

Conditions

* Always

Actions

* Wait # miliseconds.
* Kill all Pylons for Current Player.
* Preserve trigger.

## Aftermath

Make sure you have the pylons near the cannons, unless you want pylonless cannons, which can be done by individually enabling them with their own individual locations and trigger. If you do want to use the pylons, make sure they are rebuilt. Keep in mind, it takes about 850 to 1000 miliseconds from for 1 second for the cannon to be built. Try Different numbers for different designs and styles. You can also create other crystal buildings useing the same method, as long as they require a pylon. Crystal cannons cannot be manually controlled, only auto attack. Sort of like bunkers. Crystal buildings cannot upgrade, create units or have vespene gas/minerals returned to them.

Category:

* Tutorials
Doodad

**Doodads** are special terrain features that can be placed in *StarCraft* maps. Many are decorative, though some, like ramp doodads, tend to be functional.

Technically, doodads are special chunks of terrain tiles that are occasionally paired with sprites. In some cases (such as with the Installation tileset's door and trap doodads), they may be paired with unit sprites, giving them unit-like functionality. Such doodads (or, to be more accurate, the unit sprites they are paired with) can be enabled or disabled, allowing doors to be opened and closed and traps to be activated and deactivated.

Doodads tend to be quite limited; they may only be placed on exact terrain formations. (For example, a ramp doodad may only be placed on a cliff section with a specific minimum width.) Third-party map editors allow mappers to completely ignore these limitations and place doodads wherever they please, though there is often little point in doing so. Because doodads are generally just special terrain tiles, their tiles may be placed individually when creating extended terrain; this makes them very useful for blends.

Doodads were originally affected by the "Move Unit" action before patch 1.03 and also were attackable.
Adding .trg headers to a .got template

This tutorial will tell you how to add triggers to a regular game type. These triggers will be executed in ANY game of that game type. For example, if you make a trigger to kill all Protoss Probes and add it to the Melee game template, all Probes will die in ANY Melee game, regardless of the map.

## Definitions

.got - Game template file. Determines the name of the game, and other internal parameters. Game Template Editor has these flags labeled, so play around with them.

.trg - StarCraft trigger file output from a map editor. It contains the triggers of a map.

## Instructions

1. The first thing that you will need is GotEd. [[1]]
2. Open StarEdit, or a similar map editor. Create all the triggers that you need. Remember that locations are not loaded in melee, and that Staredit removes all locations from your .trg's. Also note that StarEdit will save all strings into your file, giving StarCraft a difficult time reading the file, causing weird things to happen. Don't use strings unless you know what you're doing.
3. Once you're done with the triggers, click the Save Triggers button and save them as a .trg file.
4. Go into GotEd, select Trigger Files > Strip Header, and choose your .trg file. GotEd will create a .trged file.
5. Close GotEd.
6. Open an MPQ and add the .trged file to "triggers\", removing the ed part of the extension.

For example, if you are using the melee game type, your path should look like: "triggers\melee.trg"

The paths of the .trg and .got files can be found in your StarDat.MPQ.
Game speed

Frame time is in direct sync with game time; game speed alters game time. Game time on Fastest is roughly 1.5x realtime, but it seems to vary slightly as in SC2. Gamespeed normal varies a bit from 1.0x realtime as well. Using Wait(0) Hypers, ie every other frame of animation, Starcraft runs a trigger cycle 8 times every game second. From this we can extrapolate that there are 4 frames of animation per game second. Regular non-hypered trigger check interval is 16 per 15 game seconds. This doesn't line up correctly with an even frame interval; it may either be that default trigger cycles indeed are not synchronous with the basic frames of animation, and thus are odd and rounded, or that there is a slight error in my observations.

## See also

* Regeneration
* Hyper Triggers