TASVideos

Tool-assisted game movies
When human skills are just not enough

Game Resources / DOS / Blake Stone

Movement

Scale

  • Each tile is 256 units.
  • There are 360 directions in a full circle (degrees).

Speed

  • Forward: Max. ~58.5 units per frame.
  • Backward: Max. ~39 units per frame.
  • Sideways (strafe): Max. ~58.5 units per frame.
  • Straferun (diagonal): Max. ~83 units per frame.
  • Backwards straferun (diagonal): Max ~70.3 units per frame.
  • Maximum turn is 5 units per frame (= 5 degrees per frame).

Primary direction

Each direction has an associated primary direction. This is the direction the "use" command searches for object (door, elevator, secret door, etc...)

  • For 45 degree direction (North-East), it is North.
  • For 135 degree direction (North-West), it is West.
  • For 225 degree direction (South-West), it is South.
  • For 315 degree direction (South-East), it is South (not East).
  • For every other direction, it is the nearest cardinal direction.

So for instance, if strafing West at a 135 degree angle, you can open the door pointing to the West, but if strafing West at a 225 degree angle, you can't open that door without turning.

Also, doors to the East can't be opened at either 45 degree angle suitable for straferunning East.

Player-to-enemy damage calculation

All random numbers are 0-255.

The numbers are pulled from a table-based pseudo-random number generator. The table is:

    0,   8, 109, 220, 222, 241, 149, 107,  75, 248, 254, 140,  16,  66
   74,  21, 211,  47,  80, 242, 154,  27, 205, 128, 161,  89,  77,  36
   95, 110,  85,  48, 212, 140, 211, 249,  22,  79, 200,  50,  28, 188
   52, 140, 202, 120,  68, 145,  62,  70, 184, 190,  91, 197, 152, 224
  149, 104,  25, 178, 252, 182, 202, 182, 141, 197,   4,  81, 181, 242
  145,  42,  39, 227, 156, 198, 225, 193, 219,  93, 122, 175, 249,   0
  175, 143,  70, 239,  46, 246, 163,  53, 163, 109, 168, 135,   2, 235
   25,  92,  20, 145, 138,  77,  69, 166,  78, 176, 173, 212, 166, 113
   94, 161,  41,  50, 239,  49, 111, 164,  70,  60,   2,  37, 171,  75
  136, 156,  11,  56,  42, 146, 138, 229,  73, 146,  77,  61,  98, 196
  135, 106,  63, 197, 195,  86,  96, 203, 113, 101, 170, 247, 181, 113
   80, 250, 108,   7, 255, 237, 129, 226,  79, 107, 112, 166, 103, 241
   24, 223, 239, 120, 198,  58,  60,  82, 128,   3, 184,  66, 143, 224
  145, 224,  81, 206, 163,  45,  63,  90, 168, 114,  59,  33, 159,  95
   28, 139, 123,  98, 125, 196,  15,  70, 194, 253,  54,  14, 109, 226
   71,  17, 161,  93, 186,  87, 244, 138,  20,  52, 123, 251,  26,  36
   17,  46,  52, 231, 232,  76,  31, 221,  84,  37, 216, 165, 212, 106
  197, 242,  98,  43,  39, 175, 254, 145, 190,  84, 118, 222, 187, 136
  120, 163, 236, 249
The RNG index is a value from 0-255. It increases at least once every frame and also whenever a random number is required, and wraps back around after it hits 255.

Enemy-to-player damage

Hitscan

  • The chances of dodging an enemy bullet can be increased not only by running, but you also get a significantly higher dodge chance if the enemy is visible on the screen.
  • The odds of dodging depend on the distance from the enemy.
    • A point-blank shot against the player's back has a 0% chance of missing.
    • Running while being shot at increases the odds of dodging by a flat 37.5%.
    • If the enemy is visible, the odds of dodging increase by an additional 6.25% for each tile of distance between the player and the enemy. If the enemy isn't visible, this bonus is cut in half to 3.125% per tile.
    • If running and the enemy is visible, the maximum distance they can hit from is 9 tiles.
    • If running and the enemy is not visible, the maximum distance is 19.
    • If not running and the enemy is visible, the maximum distance is 15.
    • If not running and the enemy is not visible, the maximum distance is 31.
  • The above values are different for star sentinels, as they are hardcoded to be more accurate. The distance bonus of the dodging formula is cut by 1/3 and as a result their range also increases.
  • If a shot hits, the damage depends on the distance.
    • From a distance of 0-1, the damage is random >> 2 (maximum 63).
    • From a distance of 2-3, the damage is random >> 3 (maximum 31).
    • From a distance of 4 or greater, the damage is random >> 4 (maximum 15).

Melee

  • Genetic guards, pod aliens, mutant humans: damage is (random >> 3) | 1 (range of 1 to 31). Chance of hitting is 86.3%.
  • Others: random >> 4 (range of 0 to 15). Chance of hitting is 78.5%.

Enemy info table

All HP values are on veteran difficulty.

Enemy ID HP Damage
Sector patrol 5 38 Hitscan
Informant 7 1 Emotional (NOT ME)
Bio-tech 7 28 Hitscan
Plasma alien 9 96
Plasma sphere 10 1
Star sentinel 11 175 Hitscan
Genetic guard 12 240 Melee
Mech sentinel 13 210
Genetic alien 18 240
Star trooper 22 425 Hitscan

Enemy AI

Enemies behave differently depending on if they can see you or not. Note that AI decisions are based on entire tiles, and the subposition of the player is not used as a tiebreaker if they line up with the enemy.

Enemy sees player

  • List of enemy travel directions, in order of priority. If one direction is blocked, it will go down the list until something works.
    • Diagonal towards the player. If their x tile is the same as the player, west will be the x component, and if the y tiles are the same, north will be the y component.
    • Cardinal direction towards the player, randomly chosen between the two possibilities
    • Other cardinal direction towards the player
    • Cardinal direction away from the player, randomly chosen between the two possibilities. This is predetermined by the previous randomly chosen direction and does not use an extra RNG roll.
    • Other cardinal direction away from the player
  • If the enemy is less than 4 tiles away from the player, they will want more distance. In this case, use the above priority list but prioritize moving away from the player.
  • An RNG roll is always used when determining the direction, even if the diagonal is free.
  • The odds of the enemy shooting the player decrease with distance.
    • If the player is right up against the enemy, he's guaranteed to stop and shoot.

Enemy is awake but cannot see player

  • List of enemy travel directions, in order of priority. If one direction is blocked, it will go down the list until something works.
    • Cardinal direction towards the player with the largest difference in distance to the player. Skip if this requires turning around
    • Other cardinal direction towards the player. Skip if this requires turning around. Also skip if the player is lined up directly behind.
    • Direction previously traveled by the enemy
    • Enemy will rotate until it finds a free direction. This includes diagonals and is the only way for enemies to move diagonally when they can't see the player. Any direction that involves turning around is skipped over. The direction of rotation (clockwise or counter-clockwise) is randomly chosen. The enemy will only check west, northwest, and north, which is possibly unintended but is what the code does. This RNG roll is not done unless this step is necessary.
    • Turn around as a last resort

Enemy reaction times

Enemies will react if they see you or if you fire a bullet within their floor code (enemies placed on deaf tiles will not react to bullets). Floor codes and deaf tiles can be viewed in the map editor. If a door is even slightly open between two floor codes, they will be considered conjoined and firing within one code will awaken enemies in both.

Different enemies have different reaction times once they're aware of your presence, with some of them incorporating randomness. All reaction times here are given in frames.

  • Goldfire, sector patrol, turret, perscan drone: 1 + random/4 (range of 1 to 64)
  • Star sentinel, star trooper, fluid monster: Both are 1 + random/6 (range of 1 to 43)
  • Scientist: Always 2, no randomness involved.
  • Everything else (including bosses): Always 1.

Map editor

WDC: http://winwolf3d.dugtrio17.com/


Combined RSS Feed
GameResources/DOS/BlakeStone last edited by slamo on 2017-12-17 21:09:24
Page info and history | Latest diff | List referrers | View Source