This document tries to explain tricks demonstrated in TRICKS1.MAP. Any suggestions
and/or comments are welcome to Discord channel related to Blood:

https://discord.gg/a84k4wQ

Im expect if some of these tricks motivated you to create new and cool maps ;)
NoOne, may 2018

==============================================================================
1. Missile Detector
==============================================================================
This example shows how to detect various weapon projectiles via counter sector.
Each projectile have its own number (type) that should be entered in Data field of 
counter sector.

Projectile numbers:
--------------------
300 - ButcherKnife
301 - Flare (Regular)
302 - Tesla (Alt)
303 - StarburstFlare
304 - Aerosol
305 - Fireball (used by Fireball Gen in MAPEDIT)
306 - Tesla (Regular)
307 - EctoSkull (Phantasm projectile)
308 - HellHound / Cerberus Flame
309 - ButcherPuke
310 - <Reserved>
311 - Unknown, similar to Life Leech alt or Stone Garg projectile
312 - Napalm (Regular)
313 - Cerberus Fireball
314 - Tchernobog Blue Fireball
315 - Life Leech (Regular)
316 - Stone Gargoyle Projectile
317 - Life Leech (Alt - when dropped)

==============================================================================
2. Things Detector
==============================================================================
Same as above this example show how to detect various things with counter sector.
"Things" is sprites that can be moved and/or destroyed. Base number (type) 
is 400, max is 433. For example dropped life leech is a "thing", TNT barrel, 
bundles of tnt and so on.

Things numbers:
--------------------
400 - TNT Barrel
401 - Armed Proxy Dynamite
402 - Armed Remote Dynamite
403 - Yellow Vase
404 - Yellow Vase 2
405 - Grate Face
406 - Some Glass (or more likely window)
407 - Light lamps (can be broken)
408 - Wall Crack
409 - Kickable Pail
410 -  Spider's Web
411 - Metal Grate
412 - Flammable Tree 1 (requires sprite to be visible)
413 -  MachineGun Trap or Flame Trap (invisible, can be destroyed)
414 - <Something invisible>
415 - <Same as 414>
416 - Gib Object
417 - Explode Object
418 -  Stick Of TNT
419 - Bundle Of TNT
420 - Aerosol
421 - Bone (Flesh Garg.)
422 - Some alpha stuff (requires sprite to be visible)
423 - WaterDrip (used by WaterDrip Gen in MAPEDIT)
424 -  BloodDrip (used by BloodDrip Gen in MAPEDIT)
425 - Blood chucks (used when exploding corpses)
426 - <Same as 426>
427 -  Axe Zombie Head (can be kicked)
428 - Napalm's Alt Fire explosion (invisible while flying)
429 - Fire Pod Explosion (invisible while flying)
430 - Green Pod Explosion (invisible while flying)
431 - Life Leech (does nothing, probably needs to be enabled somehow)
432 - Voodoo Head (probably from unused VDFIRE6.QAV)

==============================================================================
3. Jump of Faith (Proximity teleporter)
==============================================================================
On floor of this abyss placed _invisible_ explode objects that have _Proximity_
flag checked. When player (and monsters) get close enough, explode objects will
automatically enable teleport by sending _On_ command. If make explode objects
visable, they will trigger only once.


==============================================================================
4. Hazard Sprite
==============================================================================
This sprite is just decoration with _status list number_ set to 5. This number
used globally in game for missiles. Once missile will impact on player (or 
something else), it will damage and then dissapears. It's very important to
make it as blocking sprite, otherwise no damage will be received. To set 
status list number, press Alt+E when on sprite in 2D mode.

Status List Numbers:
--------------------
kStatDefault	= 0,	// inactive items, like torches and stuff, but NOT dudes
kStatEffect     = 1,	// non-damaging ricochets, splashes, etc.
kStatExplosion	= 2,
kStatItem		= 3,	// items that can be picked up
kStatThing		= 4,	// things that can be destroyed/moved
kStatMissile	= 5,	// player/enemy missiles that do damage
kStatDude		= 6,	// an active dude
kStatInactive	= 7,	// an inactive dude
kStatRespawn	= 8,
kStatPurge		= 9,	// use these for purgeable sprites
kStatMarker		= 10,
kStatTraps		= 11,
kStatProximity	= 12,	// sprites triggered by proximity
kStatSpares     = 13,	// allocated invisible sprites
kStatFlare		= 14,	// flares that are stuck in dudes
kStatDebris		= 15,	// moving non-Thing debris

==============================================================================
5. Heavy Door
==============================================================================
When press on sector's walls you send ON command to open the door, however 
activated in same time Trigger Gen send OFF command. The less _busyTime_ in
trigger gen, the "heavier" is door.

To open the door, player should press "Open" all time.

Similar effect can be achived by using just switch instead of Trigger Gen, but
then you will not get that "randomity" effect.

==============================================================================
6. Breakable Boxes
==============================================================================
Those boxes done with gib and explode objects only with same RX and TX
values, but its very important to set only "going off" send flag, otherwise
game will freeze.

Example:
RX ID: 100
TX ID: 100
x going off

Advantage against sector boxes:
--------------------
1. Economy of sectors.
2. You can create it any form and size you wish (with sectors you limited
   with floor texture size).
3. No need to additional triggers to drop items after destuction
4. Easy copy-paste.

==============================================================================
7. Mighty Tchernobog
==============================================================================
The "Lock" command that sents on Tchernobog (or any other monster!) makes him 
immune to all damage, while "Unlock" command makes mortal again. The sector 
controls how long Tchernobog is mortal/immortal by busyTime and/or waitTime. 
This allows to make monsters that live longer or cannot be killed at all. I used
sector to control timings because it allows to control mortality/immortality
times separatelly.

This trick works best on strong monsters like bosses, but can be used on regular
ones too. For example it protects good against flares. 

==============================================================================
8. Proximity Door
==============================================================================
From both sides of door is placed _invisible Explode Objects_ with _Proximity_
flag enabled. When player or monsters get close enough, explode objects sends
"On" command to door, but in same time Trigger Gen activated that sends "Off"
command. This is why door closes before "Open" state is reached.
 
==============================================================================
9. Player Detector
==============================================================================
This trick allows to detect what exactly player entered in _counter sector._ Can
be used in multiplayer game. Just enter one of following types in data field of
counter sector.

Players ID (types):
--------------------
231 - Player 1
232 - Player 2
233 - Player 3
234 - Player 4
235 - Player 5
236 - Player 6
237 - Player 7
238 - Player 8  

==============================================================================
10. Dynamic Slope + Z-motion + Continuous Slope
==============================================================================
To create dynamic slope, use key combo Alt+X on wall while in 2D mode. In game
wall of sector will aligned to sector.

==============================================================================
11. Deadly Traps
==============================================================================
This type of tricks uses invisible _Decoration_ sprite with _Touch_ flag
enabled. Once player (or monsters) touched this sprite, it will trigger 
_DudeSpawn_with data field 231 (Player 1 duplicate) on _Damage sector_. 
Duplicate of player reflects all received damage to real player.

It's worth to note: You can spawn duplicate only in single player game.

==============================================================================
11.1 Dark hole (Deadly Traps)
==============================================================================
See also: 11. Deadly Traps

On middle of sector is placed invisible _Decoration_ sprite with _Touch_ flag
enabled. Once player (or monster) touched this sprite, it will trigger sector
to go down and then triggers player's death.
 
The important difference between regular trap is that you actually can overjump 
this sector and it wont be triggered because you didn't touched the sprites.

==============================================================================
11.2 Fan (Deadly Traps)
==============================================================================
See also: 11. Deadly Traps

There is placed invisible _Decoration_ sprite with _Touch_ flag enabled. Once 
player (or monster) touched this sprite, it will trigger player's death.
Try to jump on it.

==============================================================================
11.3 Spikes (Deadly Traps)
==============================================================================
See also: 11. Deadly Traps

There is placed invisible _Decoration_ sprite with _Touch_ flag enabled. Once 
player (or monster) touched this sprite, it will trigger player's death.
Try to jump on it.

==============================================================================
12. Multi-Stage Elevator
==============================================================================
This elevator was done by using _Path Sector_ and _path markers_ placed above
each others. The sector itself should not be connected to other sectors 
otherwise it will drag nearby walls also. To make it stop on each stage, was
used _Lock_ commands. To start it go again, was used _Unlock_ and _On_ commands.

To make elevator play sounds, type soundId in Data4 field of path marker and
don't forget to place SFX gen inside.

==============================================================================
13. Dynamic Slope + ROR
==============================================================================
To create dynamic slope, use key combo Alt+X on wall while in 2D mode. In game
wall of sector will aligned to sector.

==============================================================================
14. ROR Elevator
==============================================================================
This one can go up to second floor and go down to first one. Moving ceiling has
been done with sprite.

==============================================================================
15. Vertical fireballs
==============================================================================
Fireball generators can not only shot horizontally, but vertically too. To make
them fire like that, create _floor oriented_ sprite and make it _1-sided_. The
side you see is direction of fire.

==============================================================================
16. Active 1-dead head cerberus
==============================================================================
When you spawn 1-dead head cerberus (Type 228), it usually ignores world until
not getting any damage. The example uses machine gun trap triggered to fire in
spawned cerberus just before it get teleport from "secret" room to world.

