Modern features for Blood mappers
[SEP 12 2026]

This is off-line version! Please visit http://cruo.bloodgame.ru/xxsystem to stay updated!

The following features was made by NoOne and it's fully supported by NBlood source port. The latest builds always available on https://github.com/nukeykt/NBlood/releases.

I'm not against to add same features in all other existing ports and maintain it when i have free time. If authors is interested, they can just mail me to baitd@yandex.ru or search for me in Discord channel dedicated to Blood so we can discuss it. You may also visit modern features on GitHub.

The point of modern extensions is not just bring something new, but also remove the rust and make level designer's life easier. Hope this helps to make maps better than ever and generally turn map editing to the next level. Adding even more new features is planning as well. If you have any questions, problems, bug reports or suggestions, you may use contacts above to talk with me.

IMPORTANT! HOW TO ACTIVATE THE MODERN FEATURES

There is two ways to let the port(s) know that you are aiming for modern level design:

  1. (RECOMMENDED) Put an magic sprite in the map.

    In recent XMAPEDIT builds, there is an option added which toggles automatic sprite creation for each map individually:
    1. Open main menu (ESC).
    2. Press "Setup Board" button to open the dialog.
    3. Press "Enable use of the modern features" checkbox.
    4. Press "Confirm" button to save changes.
    If you want to enable automatic sprite creation for all maps:
    1. Open main menu (ESC).
    2. Press "Options" button.
    3. Enable "Save all maps as modern compatible" option.
    You still can setup the sprite manually:
    1. Put an sprite.
    2. Press [ALT] + [F6] on it in 2d mode to edit it's properties.
    3. Set RX ID and TX ID to 60.
    4. Set Cmd to 100: 36.
    5. (XMAPEDIT) save and reload the map to see names for new types and commands.
  2. (DEPRECATED) Enable save map file with new version in the editor.

    If you stick with PMAPEDIT, you must apply a patch that makes the edtor save the map with version 7.1. Note that using it is not recommended since is not supported anymore.

Changelog

  1. Sep 12 2026

  2. Jul 04 2026

  3. Apr 25 2026

    • Description of "HOW TO ACTIVATE MODERN FEATURES" has been updated.
    • Description of player condition 409 for types IF and !IF has been updated.
    • Description of player condition 402 for types IF and !IF has been updated.
    • Description of player conditions 403 and 404 for types IF and !IF has been updated.
  4. Aug 14 2025

  5. Apr 28 2025

  6. Feb 02 2025

    • Now it's possible to create custom pickup items. Refer to Custom Item System to learn how to use it.
  7. Apr 16 2023

    • Large update for Custom dude (type 254) type. Now it using completely new system and allows to setup way more parameters. Refer to chapter to get the details.
  8. Dec 03 2022

  9. Aug 18 2022

  10. Mar 25 2022

  11. Aug 03 2021

  12. May 09 2020

  13. Jan 14 2020

    • Support of BloodGDX port is discontinued.
    • New modern type Player Control was added! It designed to change many various player properties right in the game. It can do:
      • Change movement speed and jump height.
      • Set player's look and rotate angles.
      • Play QAV animations instead of weapon or in fullscreen.
      • Play screen effects (delirium, pain, darkening and so on).
      • Copy properties of it's sprite to player sprite, so it's possible to use player RX channels.
      • Operate with inventory: give or erase weapons, items, keys and so on.
    • Player RX channels was added.
    • Update for Properties changer type.
    • Update for Effect Gen type.
    • Update for Resizer type.
    • Update for Damager type.
    • Update for Custom Dude Spawn type.
    • There is some cool features has been added for Custom dude
      • Dynamic dispersion.
      • Dynamic damage resistance.
      • Dynamic attack distance.
      • Much better behavior when attacking the target.
  14. Sep 09 2019

    • There was added physics control for PropertiesChanger type!
    • New features has been added for Path Marker type.
    • 1-way switch type now working for walls.
    • Teleport Target type can now be triggered!
    • New features has been added for Ecto Skull Gen (aka Missile Gen) type.
    • New features has been added for Data changer type.
    • New features has been added for Picture changer type.
    • New features has been added for Damager type.
    • New features has been added for SFX Gen.
    • New features has been added for RandomTX type.
    • New modern type Inc-Dec has been added.
    • New features for SEQ Spawner type.
    • New features for Effect Gen type.
    • Update and new features for Sector wind generator type.
    • New features for SequentialTX type.
    • Custom dude
      • Can have different mass: the bigger sprite and clipdist, the greater mass.
      • Can use custom clipdist (mass multiplier).
      • Can damage target by stomp if heavy enough.
      • Recoil chance now counts by taking in account weapon type and mass. The greater mass, the less chance to recoil dude. If is melee, the chance is even less than usual.
      • Burning state is now optional.
      • Electrocution state is now optional.
      • Underwater states is now optional.
      • Duck states is now optional.
      • Can be Kamikaze.
      • Can summon other enemies.
    • Updates for random item generators.
    • Proximity trigger flag has been updated.
    • Touch trigger flag has been updated.
    • Sight trigger flag is now working.
    • New features for PropertiesChanger type.
    • Item Shrink Shroom is now working.
    • Item Grow Shroom is now working.
    • New features for weapon, ammo and health pickups, also check this one.
    • General update for most of modern types. It now supports to send any command to destination object. Command 5: Link = just perform operations and don't change state or trigger destination object, while other commands will trigger object after generator operations was performed.
    • A lot of minor changes and fixes.
  15. May 05 2019

    • I'm happy to announce that NBLOOD port officially support all of the features! I will now add new features to both GDX and NBLOOD and continue their support.
    • Changes for SequentialTX type
  16. Mar 07 2019

  17. Feb 03 2019

    • Initial release of this document.

Modern features

  1. Gib and Explode objects (Types 416, 417) has been updated. It now allows to spawn gibs on TX ID sprites and setup gib FX appearance in details. You can override picnum, palette and many other properties by setting required flags.

    • data1 = set gib FX type 1
    • data2 = set gib FX type 2
    • data4 = sound ID to play
    • busyTime = set custom remove timer (in ticks, 0 is default).
    • hi-tag = gib FX appearance settings:
      • flag1: inherit palette
      • flag2: inherit shade
      • flag4: inherit x and y repeat
      • flag8: inherit tile
      • flag16: inherit cstat (except invisible)
      • flag32: inherit angle
      • flag64: inherit from destination sprite (from source otherwise)
      • flag128: spawn gibs on TX ID sprite(s)

    AVAILABLE GIB TYPES:

    Data Name Description
    1 Glass shards (triangular) Fall to the ground and disappear
    2 Glass shards (long) Fall to the ground and disappear
    3 Burning Wood chunks Fall to the ground and disappear
    4 Wood chips Fall to the ground and disappear
    5 Bones Fall to the ground and disappear
    6 Particles (orange) Fall to the ground and disappear
    7 Particles (blue) Fall to the ground and disappear
    8 Meat chunks Fall to the ground and leave blood stains for a few seconds
    9 Bubbles (small) Fall to the ground and disappear
    10 Bubbles (medium) Float up to the ceiling and disappear
    11 Bubbles (large) Float up to the ceiling and disappear
    12 Glass shards (triangular) Fall to the ground and disappear, but more dense
    13 Glass shards (long) Fall to the ground and disappear, but more dense
    14 Colored glass shards Fall to the ground and disappear
    15 Burning wood chips Fall to the ground and disappear
    16 Hands, eyes and stuff Fall to the ground and remain there
    17 Meat, bones, shards and particles Fall to the ground and leave blood stains for a few seconds
    18 White particles (small) Fall to the ground and disappear
    19 Meat chunks Fall to the ground and leave blood stains for a few seconds
    20 Rock chunks Fall to the ground and disappear
    21 Burning paper Fall to the ground and disappear
    22 Leaves Fall to the ground and disappear
    23 Sparks (vertical) Go up and down and disappear
    24 Sparks (horizontal) Go left and right and disappear
    25 Sparks and particles Sparks go horizontal and disappear
    26 Flames 1 Go horizontal and then up a bit and disappear
    27 Flames 2 Fall to the ground and disappear
    28 Zombie head stack Gives 3 heads with blood stains for a few seconds, but the heads will remain
    29 Mime parts Fall to the ground and remain
    30 Hellhound parts Fall to the ground and remain
    31 Gargoyle parts Fall to the ground and remain
  2. Blood and Water drip generatos (Types 701, 702) got update as well. It's allowed to disable annoying drip sound or replace it with your own. It also allowed to set initial falling speed of a drip. If sprite have TX ID, the drips will be spawned on destination sprites.

    • data1 = randomize busyTime
    • data2 = sound ID to play
      • -1: mute the sound
      •  0: play default sound
      •  N: custom sound ID
    • data4 = initial drip falling multiplier
  3. Event Causer TX Channel (TX ID 50)

    Every action in the game can be treated as an event. For example when you pressing a switch, enter sector, touching walls or even destroying gib objects, the game produces an event, which may send command on given TX ID. Sometimes we may need to send command on object if it does not have an RX ID assigned or it's ID is unknown. For that a special TX ID 50 is created.

    event causer

    In this example the Damager have TX 50 (event causer channel) which leads to interesting result: it does the damage (sends the command) to any sprite in proximity radius even if the destination sprite RX ID is unknown. This allows to create a complex and very flexible trigger sequences, especially in conjunction with conditional triggers (IF).

    There is some limitations, however: objects that using TX 50 must send the command immediately - using waitTime is not safe, because the command may be send to the wrong object.

  4. Move outside sprites with movable sector

    It's possible to make sprites that were attached to outside walls of movable sector to travel with that sector automatically. This means that there is no need to create a second sector which duplicates properties of the first one anymore.

    sprites near z-motion sector

    In this example the sprites placed outside the Z-motion sector, but still close enough to it's walls. Once that sector activates and ceiling moves, the sprites will travel in tact.

    For obvious reason this feature intended for all sectors that is supposed to move, but not for marked sector types. For example it works for "Rotate" type, but not for "Rotate Marked", works for "Slide" and "Z-motion", but doesn't for "Slide marked" and "Z-motion SPRITE".

    To make this feature work, you need to place sprites close to the walls of sector you want to travel sprites with. Each sector can move up to 256 sprites. The distance between walls and the sprite cannot be longer than 16. Also, to avoid conflicts, sector which contains the sprites cannot be movable and always must be next to the walls of the target sector.

    After that you need setup sprites just like you do it for common traveling e.g. blue sprites travels in sector direction and green sprites in opposite. For Z-Motion blue sprites means that it travels with floor and green means that it travels with ceiling.

  5. Dude flags and patrolling

    .MAP It's possible to make patrol location by any enemy that can move with using Path Marker (type 15) and dude flags. Basically, this means that AI will follow from one marker to another and go back when is not found. The next marker can be referenced to any of previous markers and can be inserted in underwater sectors, so you can make loops and do many other interesting things which makes your maps more alive.

    You must first actually create at least one marker; just put sprite and set type 15. The first marker enemy selects is always the closest marker it can see and it must have no "Locked" or "DudeLockout" flags enabled. There is two ways to make enemy to follow it:

    • The first one and the easiest way is to just set dude flag "P" (aka "Reserved" in vanilla MAPEDIT) in the enemy sprite properties. This means that dude will follow markers once level started.
    • The second one allows to start (or stop) patrol by sending command "Set Dude Flags" to the destination enemy sprite from any source sprite by RX/TX system. Enemy that receive this command will inherit states of all dude flags.

    What if you want the enemy to follow another marker after first one is reached? Just create second marker same way you did it for the first, but set data1 (id of the marker) value, then get back to the first marker and set data2 (id of the next marker) according to data1 of the second one. This is very same way you setup path for sectors. If you create two or more markers with same ID, the AI will select next marker randomly, which could make path a bit unpredictable for the player.

    image Patrol

    image Marker branches

    Path marker that gets reached (see clipdist) by the enemy will be automatically triggered if have TX ID or Command 15 (Set Dude Flags). If it have no TX ID, but still have "Set Dude Flags" command, all dude flags that marker have will be inherited by the enemy that just reached it. This allows you to change dude flags dynamically, but may also lead to unexpected results such as breaking the patrol when is not supposed to be stopped, so you have to be carefully.

    Sometimes it may be useful make enemy to stay for some period of time before it goes to the next marker. There is two ways to make it possible: by enterring fixed value in the waitTime field of the marker after which it starts the move again (similar to path sector) or set same values in both data1 (marker id) and data2 (next marker id) which makes the enemy stay until target is spotted. The second way is very useful to build dynamic path using Data Changer or Inc-Dec since you can change data values.

    If you want to break the patrol once marker gets reached, you may set value of the data2 (next marker) to -1 or set it to -2 if you want enemy to go back same path.

    ADDITIONAL OPTIONS:

    • clipDist = defines the radius at which the marker treated as reached for the enemy.
    • goingOn = trigger marker when enemy reached it.
    • goingOff = trigger marker when enemy leaves it.
    • 1-shot = enemy can visit this marker only once.
    • busyTime = enemy velocity.
    • hi-tag = flags:
      • flag1: enable enemy crouching.
      • flag2: disable enemy crouching.
      • flag3: toggle enemy crouching.
      • flag4: do not turn to the marker's angle at all.
      • flag8: do not turn 180deg relative to marker's angle when coming back.
      • flag16: enables turning in random direction with random delay while waiting.
      • flag64: enables the "guard" mode (see description below).
      • flag128: randomize waitTime of the marker in a range of 5 and 95%.

    GUARD MODE

    In this mode dude patrols the area in the radius of a single marker using random direction, which makes path buidling easier as it allows to avoid creation of the branches. Recommended to use in conjunction with flag16.

    Let's back to the dude flags.
    The rest of it ((D)eaf, (B)lind, (A)larm, (S)tealth, (T)ouch) currently are working only when patrol flag is active and brings additional effects to the enemy:

    Deaf The enemy is deaf, so the player can be spotted with a sight or touch only.
    Blind The enemy is blind, so the player can be spotted with a hear or touch only. This flag also known as dudeGuard in vanilla mapedit.
    Alarm The enemy will activate all other enemies in sight radius once player is spotted. If there is other enemies in patrol and have Alarm flag checked, it will activate enemies that they see too. This flag also known as dudeAmbush in vanilla mapedit.
    Stealth A special flag that brings some kind of stealth mechanics. This allows the player to sneak around while enemies patrol the location without being spotted immediately. In case if enemy is not Blind nor Deaf, there is spot progress bar will appear on the top of enemy sprite. Player's velocity, race, some sounds, as well as crouching affects spot radius and speed of spot progress.
    Touch This flag always enabled by default and indicates that dude will spot the player when touched.

    See also IF conditions related to dude flags and Patrol region markers that allows to modify spot chance of the enemy.

  6. Enable or disable Damage Sectors

    Damage Sector will do the damage only when is enabled (State: 1 On). This allows you to control it via TX/RX system and commands.

  7. .MAP Sometimes it may be useful to send command on player's sprite. For instance, you could make Effect Generator to spawn any of effects directly on player's location. This way you could achieve bleeding, if you select "Red blood Trail" effect. For that special Player RX Channels was created.

    • TX ID: 30 - Player 1
    • TX ID: 31 - Player 2
    • TX ID: 32 - Player 3
    • TX ID: 33 - Player 4
    • TX ID: 34 - Player 5
    • TX ID: 35 - Player 6
    • TX ID: 36 - Player 7
    • TX ID: 37 - Player 8
    • TX ID: 38 - All players

    Player channels supported by all types, include vanilla ones. So, you probably want to experiment with those a lot to get interesting results.

  8. .MAP Teleport target (Type 8) can be triggered via RX ID channel and teleport any TX ID sprite or player from any to it's sprite location! It may be useful to teleport path markers to change path sector's way or player without need to enter the sector. It can also teleport other teleport targets, so it's possible to create complex combinations! There is also few options to control how exactly sprite should be teleported available:

    • data1 = number of player to teleport (if TX ID is not specified)
      • 0: [ player that caused the event ]
      • 1: player #1
      • 2: player #2
      • 3: player #3
      • 4: player #4
      • 5: player #5
      • 6: player #6
      • 7: player #7
      • 8: player #8
    • data2 = set destination object angle according to teleport target angle
      • 0: destination object stay with same angle after teleportation
      • 1: destination object take angle of teleport target after teleportation
    • data3 = destination object velocity control
      • 0: does nothing
      • value 1: set velocity to zero (blood-like)
      • flag  2: change X and Y velocity according to source sprite angle (quake-like)
      • flag  4: set Z velocity to zero
    • data4 = sound id to play
      • 0: do not play any sound
    • hi-tag = enable telefrag
      • 0: do not enable (default)
      • 1: enable
  9. .MAP There is few cool updates for trigger flags available. Previously, DudeLockout flag has no effect when used in conjunction with Proximity or Touch flags, but now it does. If sprite is not a dude, you can define proximity radius through sprite's clipdist property. Aside from this, "Touch" flag is working for almost every type of sprite and for walls. Sprite or wall with this flag checked gets triggered when player or enemy touching it.

    Sight flag was renamed to Sees Player. Sprite with this flag checked gets triggered once it can see one of players from it's location.

    Screen flag means that sprite will trigger when it drawn on the screen of one of players. Note that it works only in single player.

    Aim triggers sprite when one of players aims in it

    If sprite have "Impact" flag enabled, it means that it will be triggered once get hit with projectile, affected by explosion or touch another object (like wall, sprite or sector). Note that not all projectiles can make sprite to trigger.

    Just set Interruptable flag if you need object to set command immediately. To get advantage of waitTime property, you will need to setup objects the right way.

    First of all, make sure the restState is equals to State of the sprite, however in case of types 400 - 432, there is required to set restState to On. Then pay attention to going on and going off properties:

    • Example 1: [x]going on, [x]going off, waitTime = 0 - will send cmd only once, because waiTime is zero.

    • Example 2: [x]going on, [x]going off, waitTime = N - will send cmd always, with period specifid in waitTime.

    • Example 3: [x]going on, []going off, waitTime = N - will send cmd when going to Off state, skip sending when coming from Off, with period specifid in waitTime.

    • Example 4: []going on, [x]going off, waitTime = N - will skip sending cmd when going to On state, send cmd when coming from Off, with period specifid in waitTime.

    To conclude, if you want a Toggle Switch to send command when player fire a flare in it, or Blood Drip Gen spawn drips only when player can see or at close distance, these flags help you save much of your time.

  10. .MAP Grow (Type 129) and Shrink (Type 130) shroom items is working! When player is grown, it receives less damage, jumps higher and become heavier, which means it can easily damage by stomp and push back enemies that have less mass than player. Be carefully when pickup this powerup as you may lose your invisibility or can even die if place is too tight to grow ;)

    When player is shrink, the enemies can do same thing to player as it becomes very small and receives way more damage than it usually does. However, player can go to really tight place.

  11. .MAP You can set custom value for the following types of items using it's data1 field:

    • Health (life essence, red potion etc.)
    • Weapons (sawed-off, tesla gun etc.)
    • Ammo(box of shotgun shells, casoline can etc.)

    The value should be greater than 0. If value is greater than max value of the pickup, max value will be used.

    • Example #1: data1: 1 - will give 1 ammo for sawed-off instead of 8.

    • Example #2: data1: 0 - will give 8 ammo for sawed-off.

    • Example #3: data1: 200 - will give 100 ammo for sawed-off.

  12. .MAP You can specify number of INI message that will be displayed instead of "Picked Up ..." message when item was actually picked up. Just specify it in Lock msg field.

  13. .MAP You can specify team in data2 of BloodBath player start marker which is actually used for all multiplayer modes. When playing Teams you probably want if team 1 players get spawned on team 1 base and team 2 on team 2 base, however in vanilla players in any mode spawning at random locations.

    • data2 = specify team
      • 0: use old vanilla way to spawn player
      • 1: team 1
      • 2: team 2

    There should be 4 spawn positions for each team, otherwise default player spawn location will be used if not enough start positions for players. If no team specified in all spawn markers, the vanilla way to spawn player will be used.

  14. .MAP SFX Gen (Type 708) now can play sounds with custom pitch specified in data4 and volume in data3. The value of pitch can be between 2000 and 65535. Normal value is ~35000. If value is zero or below minimum, the default pitch will be used. The value of volume should be between 1 and 255. If value is 0, default volume will be used. Negative value will leads to zero volume. It can be useful if you want smoothly increase volume with DataChanger of IncDec types.

  15. .MAP Path Marker (Type 15) gets an update. When Path Sector reach required marker, the marker will be triggered, so it can send the command. It may be very useful to indicate the process of moving and there is no more need to create side switches which have timer to track sector movement.

  16. .MAP Hidden Exploder (Type 459) can now be customized in different ways by using it's data fields.
    • data1 = explosion type (max. 8)
      • 0: [ default explosion ]
      • 1: TNT Bundle explosion.
      • 2: TNT barrel explosion.
      • 3: Flare Pistol's alt fire explosion.
      • 4: Spray Can explosion.
      • 5: Burning explosion.
      • 6: Similar to default one, burns a little.
      • 7: Napalm Launcher's regular explosion.
      • 8: TNT Stick explosion (ground).

      The value above max will selects default explosion.

    • data2 = SEQ id (optional)
      Type a SEQ animation ID if you want override default one. The SEQ ID should actually exist to be played.
    • data3 = sound ID (optional)
      Type a sound file ID if you want override default one. The sound should actually exist to be played.
    • data4 = explosion radius (optional)
      The value should be greater than 0 and less than 65535. In a perfect way, greater radius should be used if there is no sector crossing the sector where explosion placed in, otherwise it won't work or will work only with sectors near. The normal value for radius is ~2000.
  17. .MAP The liveTime of sprite statnum 2 (explosions) is no longer count down if their hi-tag value is 1. As result they can stay forever in game and do not disappear after liveTime ends.

    • data1 = liveTime (must be non-zero)
    • data2 = player's quake strength (optional)
    • data3 = flash effect that enlighten player's screen (optional)
    • data4 = explosion radius settings

      The values greater than 0 used for custom explosion radius. Normal radius value is ~2000, the greater may work not in way you expect, so you have to experiment there.

    • hi-tag = liveTime settings
      • 0: remove explosion sprite once liveTime ends
      • 1: do not remove explosion after liveTime ends (optional)
  18. .MAP It's possible now to set "global" (player's screen) palette of underwater by setting data2 of Upper Water (Type 9) or Upper Goo (Type 13) to one of following values:

    • data2 = screen palette
      • 0: [ default palette ]
      • 1: water palette (used by water stacks)
      • 2: red palette (for instance, can be used when you swim in bloody water)
      • 3: sewer palette (used by goo stacks)
      • 4: invulnerability palette (same as normal, but you always can edit it)

      Custom palettes support is planned.

  19. .MAP Random Ammo (Type 80) and RANDOM (Type 40) are now working in single player and multiplayer modes! These sprites takes values from data fields to select item that should be generated. To make it work in the game, at least 2 data fields must be non-zero.

    • Example #1: data1: 43, data2: 41, data3: 42, data4: 46 - will generate Flare Pistol, or Sawed-Off, or Tommy Gun, or Napalm Launcher.

    • Example #2: data1: 140, data2: 0, data3: 144, data4: 0 - will generate Basic Armor, or Super Armor.

    • Example #3: data1: 0, data2: 100, data3: 0, data4: 0 - will generate nothing, because only one data field is not empty.

    Since these sprites is actually creates new item sprite instead of transforming in it, they re-triggerable. This means that you can send "Toggle" command on it and they will drop new item.

    Also, items will be generated and dropped at level start automatically if sprite state is set to 1 (On). You should not care about different sprite names as both of them acts identically and can drop any existing item type (not just ammo or weapon).

    It possible to make generated item inherit some values of the spawner such as TX ID to make it able to send commands after being picked up.

    • hi-tag = inherit spawner values
      if set to 1, the following properties of spawner will be inherited by item: TX ID, Command, going on and going off. The Pickup flag will be selected automatically.

    If items generated previously was not picked up, they will be removed before new items is generated. New item will never be the same as previous, unless data fields have same values.

  20. .MAP It's possible to spawn a random dude with Dude Spawn (Type 18) sprite. There should be at least 2 data fields are not empty, otherwise data1 value will be used. Example: data1 = 203, data2 = 201 will spawn Axe Zombie or Tommy Cultist.

    • hi-tag = additional options:
      • flag1: inherit the following properties of the spawner: TX ID, Command, going on, going off, drop item, palette and all dude flags.
      • flag3: activate dude.
      • flag4: spawn dude on TX ID sprite instead of dude spawn sprite.
  21. .MAP Now you can put Pods (Types 221, 223) and Tentacles (222, 224) on ceilings. Just flipY it's sprites. This makes them not to fall back on floor when game starts.

  22. .MAP Counter Sector (Type 619) can work more than just 1 time. Once sector triggered, it will send commands and then become Locked. So, you need just unlock it by "Unlock" command. When unlocked, the sector is ready to work again.

    In some cases (let's say you need the same objects and their amount again) you may need first remove previous objects from sector. This can be done with sector panning (with "drag" function enabled) or via wind.

  23. .MAP New "End Level" TX ID: 6 channel added. It designed rather for episodes than just maps as it allows to set custom number of next map in episode via numbered command. Let's say you want to jump directly from E1M1 to E1M3. Then send command field to Cmd 66: 2. You can place sprites with this channel on your maps as many as you want. Say "Hello!" to non-linearity.

    • More examples: E1M1 -> E1M4 = Cmd 67: 3

    • More examples: E1M4 -> E1M1 = Cmd 64: 0

    • More examples: E1M6 -> E1M5 = Cmd 68: 4

    Counting is always absolute. This means first level is 0, second one is 1 and so on. It does not matter what level is now; you should count always from first level i.e from 0.

  24. .MAP Now it's possible to set custom start HP for monsters by enterring value in data4 field. The value can be between 1 and 65 535!

MODERN OBJECTS


MODERN COMMANDS