Modern features for Blood mappers
[May 09 2020]

This is off-line version! Please visit to stay updated!

The following features was made by NoOne and support of these started since NBLOOD 1.10 (not released yet, but latest test builds always available on I'm not against to add same features in all other existing ports, and continue their support. If authors is interesting, they can just mail me to or search for me in Discord channel dedicated to Blood so we can discuss it.

I'm hope this helps to make your maps better than ever and 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. The same you can do if you want to update, for instance, my "perfect" english in this documentation.


If you are using editors different than PMAPEDIT, it's required to put single special control x-sprite in your map to let the port(s) know that you are aimed for modern level design:

  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.

However, if you are using PMAPEDIT, it's possible to enable saving file with different version, which automatically recognized by port(s) as modern map and gives access to all the features without need to put the control sprite.


  1. May 09 2020

  2. 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.
  3. 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.
  4. 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
  5. Mar 07 2019

  6. Feb 03 2019

    • Initial release of this document.

List of updated vanilla blood features

Jan 14 2020

  1. .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.

Sep 09 2019

  1. .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: [ reserved ]
      • 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 = set destination object velocity to zero
      • 0: do not set (quake-like teleports)
      • 1: set (blood-like teleports)
    • data4 = sound id to play
      • 0: do not play any sound
    • hitag = enable telefrag
      • 0: do not enable (default)
      • 1: enable
  2. Type 21: 1-way switch is now working for walls. It acts same as such type for sprites, however it does not change the picture of the wall. Switches of this type usually used to make sure you send command once in required period of time.

  3. .MAP There is few cool updates for trigger flags available. Previously, "DudeLockout" has no effect when used in conjunction with "Proximity" or "Touch" flags, but now it does. When you check "DudeLockout" - it means only player can interact with object.

    Aside from this, "Touch" flag will now work for every type of sprite - not just Decoration sprites like it was earlier. It also works for walls. If you use vanilla MAPEDIT, this flag called "Reserved". In PMAPEDIT it's renamed to "Touch". The name explains itself: sprite or wall with this flag checked triggers something when player or enemy (in case if no DudeLockout checked) touching it.

    "Sight" flag is now working too. Sprite with this flag checked, will be triggered once it can see player from it's location. Note that this trigger works only for players!

    There is 128 of additional Proximity and Sight sprites available for you to use. Unlike in vanilla, where only thing types (400 - 432) can be triggered via Proximity, now you can set these flags to any type of sprites. For instance, you want if Toggle Switch send command or Blood Drip Gen spawn blood drips only when you see or close to it. If you plan to use any of additional sprites, you probably want to set it properly, because sprites from this arrays triggers a little bit different and more safely than in vanilla.

    • 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.

    Make sure that restState is equals to state of the sprite, however in case of thing types (400 - 432), there is required to set restState to On in MAPEDIT. If you want to ignore these rules, just set "Interruptable" trigger flag in addition to Sight or Proximity.

  4. .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.

  5. .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.

  6. .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.

Mar 07 2019

Feb 03 2019


For using modern objects you need latest PMAPEDIT version which can be downloaded from To see new types in 2D Mode list, you have to add it first. Run PMAPED.BAT, then press [3] in the main screen and select which exactly group of types should be added.

Modern objects and "Link" command

It used in all modern types as "dummy" command. This just means when sending it, you basically only change properties of destination object, but not trigger it. Typical example: you want to change destination sector's lighting effects with Sector Lighting Changer, but that sector also have TX ID. So, if you send any of common commands (On, Off, Toggle etc.) - that sector will be triggered and send it's command to all it's TX ID destination objects, which is probably not what you meant to do. But if you send "Link" command to that sector - only lighting effects will be changed and nothing triggered.

Modern objects and negative values

When building the level, it's often you will be in situation, when it's required to set negaive value in data field. In PMAPEDIT you able to set it using [PAGE DOWN] or [NUM -]. Arrow keys won't set value below than 0!

Mar 14 2020

Jan 14 2020

Sep 09 2019

Mar 02 2019

Feb 03 2019