Blood: Fresh Supply
| Blood: Fresh Supply |
|---|
|
Also known as: Blood EX
|
To do:
|
Blood: Fresh Supply is the 2019 remastered edition of Blood, being released after issues over IP and publishing rights were resolved. It features both the Cryptic Passage and Plasma Pak expansions, achievements, and a ton of improvements.
Unfortunately, it also launched with a lot of bugs and other technical shortcomings thanks to being a recreation rather than being developed with the original source code on hand. However, Night Dive were quick to release patches fixing most of the issues and the game is in a much more acceptable state nowadays.
On December 4th, 2025, the game would be delisted in favor of the new, more accurate Blood: Refreshed Supply. Those that had owned Fresh Supply could get a discount prior to Refreshed Supply's release though this has since ended.
Much of the original's unused content still does not live... again, unless it has been upgraded to fully functioning form.
Contents
Sub-Pages
| Prerelease Info |
| Bugs |
Changes and Differences from the DOS Original
| To do: More. |
Fresh Supply has made some changes to the DOS original, mostly quality of life improvements.
- The game makes use of AngelScript for modern scripting.
- The game uses a more widescreen friendly HUD. The Beast statues featured on the HUD have arms added to their sprites.
- The game uses fan-made voxels from the Blood Voxel Pack by fgsfds for certain items that lacked them like props and items.
- The remaster has some new cheat codes added.
- NIGHTDIVE - Displays message Hey Larry? Am I going to get in trouble for adding this??, refers to Larry Kuperman, director of business development at Nightdive.
- OAKISLAND - Added in the v1.9.5 patch, shows entity markers on the automap. Prints Map markers placed!/removed!. Can be toggled to disable effect.
- TIMEGATE - Continuously bleed over the environment and slowly lose health over time, displays message Ahhh....fun times.... Can be toggled to disable effect. Likely a reference to lead Kex dev Samuel "Kaiser" Villarreal's previous employment at TimeGate Studios.
Most of the new content can be found in BloodEX.kpf.
Unused Voxels
A few unused voxels managed to sneak their way into the remaster.
| To do: The wide coils seen in some levels like E4M1 and E6M9 have unused voxels, the original tiles are used by the game instead. Could be more besides this. |
Unused Items
A few of the unused items have received voxels but since they are unused, these go unused too. These voxels would get used in an official compacity with the inclusion of Death Wish to Refreshed Supply.
0837_FIRESUIT.KVX depicts the Asbestos Suit.
2558_KEY7.KVX depicts Key7.
0783_FEATHER.KVX depicts the Feather Fall.
0517_HEALTHBOTTLE.KVX depicts the Red Potion.
Unused Life Seed
Present is 2433_SEED.KVX, an unused voxel for the frame of the Life Seed's "eye" being closed. It looks much rougher compared to the used 2433_SEED_A_0.KVX, with a noticeably red strip under the bottom. It also doesn't seem to be positioned correctly, as viewing it in a voxel viewer program has it orientated on its side.
This is also present in Refreshed Supply.
| Unused | Used |
|---|---|
Unused Scripting
Found in ai_common.txt is commentated out scripting for the Gargoyles Statues to play their unused coming to life and a comment noted that they don't in the original DOS version.
//pAI.Owner().PlaySEQ(SEQ_GARG1TR); // they don't play the animation in DOS
//pAI.Owner().PlaySEQ(SEQ_GARG2TR); // they don't play the animation in DOS
Found in ai_gillbeast.txt is some commented-out scripting.
// sprite_zvel[v28] = 8 * (v30 - v31);
//
// sub eax, edx
// shl eax, 3
// mov [esp+38h+var_24], eax
// mov eax, [esp+38h+var_24]
// mov sprite_zvel[edx], eax
//
// 8 * (targZ - selfZ)
// (8 * 128) / 65536.0f = 0.015625f
// 1.0f / 0.015625f = 64.0f
commented out script in ai_eel.txt.
// mov ecx, 22222h
Found in weapon_napalm.txt.
// (&loc_66665 + ((&unk_177777 << 15) >> 16) + 1)
Unused Actor Code
The POWERUP_DeliriumShroom actor for the unused Delirium Shroom item defined in powerups.txt has a commented-out line.
//pickup.powerup.type PU_SHROOM_DELIRIUM
Developer Comments
The remaster's scripting contains a few interesting comments. Note that all comments have been written as is.
Main Scripts
Found in LifeleechStaff.txt.
// fuck... where's the damn player object...
// lets hope this is it
Found in sharedCallbask.txt.
// FIXME: I am just making guesses at this point...
// Need to verify if the beast plays this seq when killed by fire.
// Also seems to invoke the dude to gib seq callback but not when
// its playing its normal death seq? I dunno.
Found in utils.txt.
// trying to reverse engineer these functions to use Kex's floating point unit keeps
// breaking my brain for some reason, so just work off in BUILD's units to make things
// easier for me
Weapon Scrips
Scripts found in the weapons sub-folder in the scripts.
Found in weapon_tesla.txt.
// TODO: this pre-fire animation is skipped in the original..
// was it intentional?
A silly comment presumably at the expense of hardcore purists.
// NO! says the community, it ruins my expirence!!! REEEEEEEEEEEE
Found in weapon_voodo.txt
// FIXME: crap... how do I save arrays with this?!
A comment that can also be found in ai_autoaim.txt.
// I'll be working off completely in BUILD's world units for sanity purposes...
// note: division was not part of the original. I did that so this attack would
// be at least a bit more effective
AI Scripts
Scripts found in the ai sub-folder in the scripts.
Found in ai_autoaim.txt.
// This is a bug...
// apparently the direction will be pointing downward if the target is above the AI.
// this seems to be correct as its occuring in the original game so I'll be leaving it
// as is for authentic purposes
Foind in burningDudes.txt.
// added for BloodEX: stay burning
// also added for BloodEX: immediately switch back to original self if in water
Found in ai_common.txt.
// TODO: condense all of this into definitions
// okay.. how is this NOT weird?
Found in ai_cultist.txt is a large fix me note about the Fanatics. In the Refreshed Supply version of this comment, the first senetice has been chaned to In the DOS version,
//
// FIXME: More bizarre bullshit inbound: Tommy Gun Cultists do a pause right before firing if you're not
// completely within their 28 degree FOV while continuing to invoke the move-turn callback. I've search
// the assembly up and down and found no evidence of this behavior anywhere. For now, I will make a
// guess and throw in custom logic to replicate this behavior
//
Found in ai_eel.txt.
// I like this better; make the eel adjust its z origin to the target's eye level
// instead of its top/bottom sprite level
Found in ai_gillbeast.txt.
// 3 vectors all along the same direction? weird
Found in ai_tchernobog.txt.
// one missile autoaims while the other doesn't? The other has a inverted z slope??
// I don't know what they were trying to go for here...
Actor Script Documentation
Found in e1m5.txt in defs/levelHacks is an explanation detailing the "xsectorid" used in this script.
/*
I got a little sloppy here because I wanted this quickly done and over with, but here's a reference on what this means:
xsectorid <A> <B> <C> <D>
where
A: id of xsector to modify
B: offset in bytes of where to modify the xsector structure
C: number of bits to modify
D: value to be written to the xsector data
xsector structure in BloodEX looks like this:
bool bDrag;
bool bUnderwater;
uint16_t triggerFlags;
uint16_t phaseFlags;
uint16_t panFlags;
uint16_t motionFlags;
uint8_t depth;
int shade;
bool bColoredLighting;
bool bCrush;
bool bAlwaysWindy;
bool bStoppedOn;
bool bStoppedOff;
int16_t marker1;
int16_t marker2;
int32_t onCeilingZ;
int32_t onFloorZ;
int32_t offCeilingZ;
int32_t offFloorZ;
struct offToOn_s
{
bool bSendOn;
bool bWaitTime;
int16_t busyTime;
int16_t waitTime;
busyWaveType_e waveType;
};
offToOn_s offToOn;
struct onToOff_s
{
bool bSendOff;
bool bWaitTime;
int16_t busyTime;
int16_t waitTime;
busyWaveType_e waveType;
};
onToOff_s onToOff;
struct lighting_s
{
uint8_t waveType;
int8_t amplitude;
uint8_t freq;
uint8_t phase;
uint8_t ceilPal;
uint8_t florPal;
};
lighting_s lighting;
struct motionFx_s
{
uint16_t speed;
uint16_t angle;
uint16_t windVel;
uint16_t windAngle;
};
motionFx_s motionFx;
struct contMotion_s
{
uint16_t zRange;
uint16_t theta;
uint16_t speed;
};
contMotion_s contMotion;
uint8_t damageType;
uint32_t xFloorPan;
uint32_t yFloorPan;
int32_t xCeilPan;
int32_t yCeilPan;
*/
Unused Levels
Present in the DOS/resources/mapperfiles/xbox/ folder of the Steam version is a rather large number of maps (186 to be precise), presumably user-made ones. They were added along with the DOS version. Fresh Supply can read them and make them appear in the user maps option but isn't able to load them. A full list of them is bellow.
- abreed.map
- abreedta.map
- actuas.map
- aitd.map
- aitd2.map
- aitd3.map
- aitdjack.map
- aladdin.map
- alienc.map
- alienr.map
- alientri.map
- alphasto.map
- alqadim.map
- amok.map
- another.map
- batmanac.map
- batmanf.map
- bigredr.map
- blam.map
- blood.map
- bluesb.map
- bluesbja.map
- bstone.map
- bstone2.map
- bthorne.map
- cadillac.map
- cataco3d.map
- catapoc.map
- chxquest.map
- cite.map
- ckeen1.map
- clifd.map
- coolspot.map
- covertac.map
- crusnreg.map
- crusnrem.map
- cyberm.map
- d.map
- dderby.map
- dderby2.map
- ddragon.map
- ddragon2.map
- ddragon3.map
- descent.map
- descent2.map
- disc.map
- dnukem.map
- dnukem2.map
- doom.map
- doom2.map
- drally.map
- dstrike.map
- duke3d.map
- ecstatic.map
- ecstatic2.map
- eradicat.map
- ewj.map
- ewj2.map
- exhumed.map
- extremea.map
- fadetb.map
- fatalr.map
- fb.map
- fifa.map
- fifa96.map
- Dfifa97.map
- firestrm.map
- funtrack.map
- fxfightr.map
- gb2.map
- gods.map
- goldnaxe.map
- gta.map
- gtalond.map
- heretic.map
- hexen.map
- hioctane.map
- horde.map
- hulkpant.map
- humans.map
- jazz.map
- jbazooka.map
- jdredd.map
- jimpower.map
- joemac.map
- jstrike.map
- jungbook.map
- jurassic.map
- krusty.map
- lba.map
- lba2.map
- lionking.map
- lollypop.map
- lostv.map
- Dlostv2.map
- magicp.map
- mars3d.map
- mdk.map
- megarac2.map
- megarace.map
- menace.map
- microcsm.map
- mk1.map
- mk2.map
- mk3.map
- mktril.map
- mm.map
- mm2.map
- moktar.map
- moon.map
- nba97.map
- nbajamte.map
- nfsse.map
- nhl97.map
- novas.map
- oddworld.map
- omf2097.map
- panzakb.map
- petesamp.map
- pitfghtr.map
- pop.map
- pop2.map
- prayfd.map
- preh.map
- preh2.map
- primrage.map
- pushover.map
- quake.map
- raiden.map
- rallyc.map
- raptor.map
- rayman.map
- redneck.map
- redneck2.map
- reloaded.map
- rg97.map
- rise.map
- rise2.map
- rott.map
- scorchdp.map
- screamr.map
- screamr2.map
- sf2.map
- shadoww.map
- shells.map
- simparc.map
- simpbvs.map
- skynet.map
- spacer.map
- spearod.map
- speedbl2.map
- spidey.map
- srally.map
- ssf2t.map
- stargunr.map
- streetr.map
- strife.map
- superc.map
- swdf.map
- swiv3d.map
- tbraider.map
- term2.map
- termfs.map
- timec.map
- timegate.map
- timewar.map
- tmnt.map
- tmntarc.map
- tmntman.map
- trackatk.map
- turric2.map
- tvcd.map
- tyrian.map
- wacky.map
- warriors.map
- wcrew.map
- whaven.map
- whaven2.map
- wilds.map
- wipeout.map
- wolf3d.map
- wrallyf.map
- wwfarc.map
- wwfiyh.map
- xenon2.map
- xmcota.map
Project Name
The remaster's executable is named "anuket", in reference to the Egyptian deity of the same name.
Revisional Differences
| To do: Beta branch versions need to be documented. |
These are taken from Steam update posts and the game's PatchNotes.txt. This .txt should not be confused with the original game's PATCH.TXT readme.
v1.8.4
The launch version.
v1.8.8
Released on May 15th, 2019.
- Fix video crash when switching from OpenGL to other renderers,
- Fluidsynth now loads MIDI internally, resolving some instances of user crashes depending on the user's directory name,
- Fix CD audio music not being present when reloading a level,
- Fix MP monster settings not being respected,
- Change "Show Player Weapons" to "Show Player Weapons Overhead",
- Fix armour being affected by friendly fire if friendly fire was switched off,
- Remove the three extra recoil SFX for Cultists,
- Tesla blast projectile now renders as flat - adding custom definition entry for making it always pitch towards the viewer,
- Bug fix with TNT/Spray can disappearing when exploding in hands while on the last ammo,
- Removing the run glitch feature,
- Fixed incorrect negative shade for candles, causing the sprite effect to appear brighter,
- Removed the pre-fire animation for tesla weapon,
- Removed the morphing animation for gargoyle statues,
- Stone gargoyle now uses the correct recoil SFX,
- Lightly Broiled is now always the default selected menu item when entering the difficulty menu,
- Akimbo Napalm weapon now plays the correct firing animation as seen in DOS version 1.21 (was using the old 1.0 one),
- Fix taunting when killing enemies with TNT not working,
- Stop players using power ups when dead,
- Disallow Quickloading if no saves are available to load,
- Fix a bug that caused a crash at the start of Death Wish E2M1,
- Autorun state is now saved between sessions,
- Fix the FoV slider being uncapped when using the arrow keys or controller,
- Key sprites now default to full shade values,
- Importing updated extra voxels,
- Major revision to virtual vram system and shaders. Height is now only padded for wall textures now. Fixes tiling issues with non power of 2 texture widths,
- Padded textures and normal textures are now treated as separate virtual vram entries. Fixes issue with the monolith logo in the save game menu being distorted while in E3M2,
- Concussion damage is now scaled against tick scale, making gibbing to occur more easily,
- Changed jump height for getting out of water back to the original height. This broke E2M2,
- Shade value for walls with back wall swap flag is now accounted for,
- Proper shade and palette values are now inherited from sprite to voxels (they now appear correct in DWE3M1),
- Texture UV mapping fixed for E1M1, E1M2, E1M3, E3M2, E1M8,
- Fix a bug that would allow loading in multiplayer,
- Fix issue when moving between menus if the current selected menu entry is too high or low,
- Players are now always respawned with 100 health, regardless of what the level start has,
- Spraycan and HellHound missiles now deal correct damage type and burn time,
- Tesla weapon now fires one extra projectile at the end of its firing animation,
- All TNT/Prox/Remote/dynamite explosions now play the correct sprite if not colliding with the floor first,
- Fix players being able to cheat to acquire the E3M1 no-civilians-killed achievement,
- Add support for private and friend lobbies,
- Add missing Cerberus electrocution state,
- Jumping boots now negate all pummel (includes fall) damage,
- Make sure zombies are changed into dead actors on death, restores knockback force in the DOS version,
- Add load screen messages when loading fails; allow loading from specific older versions. If, in this case, you want to load saves from the previous Fresh Supply version please type `developer 1` in console, load, save over your old save, then type `developer 0` in console.
- Fixing timing of burn damage,
- Enemies now correctly avoid water,
- Fixing DWE2M1 bug with player start spawns,
- Duplicate addon paths are now checked for,
- Key 7 is now defined,
- Remove a specific voxel on E2M2,
- Scale voxels at the same ratio as sprites,
- Show extra info in lobby list,
- Pressing use now performs a standard hitscan operation. This resolves some issues in DWE1M9.
v1.9.5
Released on June 4th 2019.
- Gargoyle Statues can be moved and bleed when shot,
- Ecto Skull Projectile is now transparent,
- Reflection effect appears on player when picking up the reflection powerup,
- Fixed bug with pressing use on wall sprites very close to the wall (fixes some issues in Death Wish),
- Crash fix for Bloody Pulp Fiction mod,
- Phantasm bleeds when shot,
- Fixed bug with pressing use on wall sprites with flip-y flag set. Fixes issue in DWE3M6,
- Support for unused dude actor types,
- INI parsing system now replicates Monolith's implementation (fixes numerous issues with user INIs),
- Full rendering support for wall type 501,
- Bug fix with Fat Zombies not seeing the player at the beginning of DWE3M2,
- Sounds played by QAV animations now assigns to channel 16 and up - fixes some problems with them cutting off Caleb's speeches,
- Reverse search order for linked sprites to sector stacks. Fixes DWE1M3,
- Reversed CanSee ray direction for CheckProximity - fixes proximity behavior,
- Fixed incorrect impact fx on vector firing on mid-textures via overpicnum,
- Jump Boots now protects against pummel type damage,
- Fixed crash when dropping items not defined in definition system,
- Fixed issues when interacting with usable walls and sectors marked as ‘pushwall’,
- RFF system is no longer case-sensitive when looking up data entries,
- Dude sprite types now activates when receiving the TOUCH or PUSH command,
- Dude sprite types now applies BLOCKING/HITSCAN/INTERACT flags on spawn,
- Player can now interact with stone statues,
- Corrected the bounceDamage factor for Spiders (was 1200 instead of 1600) which result in premature fall damage when they fall near the end of e2m7,
- New actor flag for not dropping items/keys (Cerberus fix),
- Various misc. Fixes involving Hitscan and Vectorscan,
- Start/End parameters for the CanSee function has been reversed - fixes MANY behavior problems,
- Fixed damage sectors not immediately damaging player on land impact,
- Fixed scroll floors/ceilings in wrong direction in E2M6,
- Fixed code to determine if wall should have decals (using proper logic now). Fixes decals not showing up in many areas in E1M1,
- Fixed up A LOT of the Cultists behaviors. Only use a 2D hitscan vector for determining sightlight checks instead of 3D. Fixes several problems,
- Cultists now play Gib SEQ based on type,
- Cultists and Earth/Axe Zombies now ignore damaged based sectors (fixes AI issue in DWE1M1),
- Proximity range for prox mines is now correct,
- Fixed issue with gib objects and other types from spawning two of the same item,
- Fixed a typo with Exp_Dynamite_Wall, resulting in no SEQ from playing when invoked,
- Minor bug fix with the CanSee function. Fixes an issue in DWE3M2,
- Art tile animation is now randomized for oscil,
- Fixed mouse not working on main menu after loading lower saves,
- Audio velocity option is now saved to config,
- Player no longer falls while dead in water,
- Camera no longer toggle chasecam while in menu,
- Map markers now show with an exclusive cheat (new cheat code: OAKISLAND),
- Can now switch weapons during any point of the gun's state that isn't lowering or holstering,
- Fixed a bug where explosion objects would persist due to bad underflow of xSprite's data1 and data4 members,
- Fixed hitscan wall detection and wall UV mapping,
- Added scale console variable for the weapon wheel. Set g_weaponWheelScale in the console to change it (defaults to 1.0),
- Changed player jump boot height to 24.0. Makes it easier to reach the rooms in BB1,
- Bug fix with wall unlock commands sending a ON command,
- Support for padlock actor,
- Allowed loading of all old (day-0 public build or later) saves.
v1.9.6
Released on June 6th 2019.
- Engine updates,
- Fixed a potential crash with OpenAL playback of Vorbis buffers,
- OpenAL32.dll updated,
- Missles now pass through breakable windows.
v1.9.10
The most recent patch for the game, released on August 5th, 2019. PatchNotes.txt mistakenly refers to this having released on August 4th.
- Sprite links and how they're handled on level load is now accurate,
- Earth zombie accuracy behaviour fix. They immediately go into search state when woken,
- Ghost sight check accuracy behaviour fix (does not use eye-height offset when calling hitscan),
- Napalm damage type accuracy fixed. Now uses hitscan type,
- Tommy Gun Alt-Fire attack now uses the correct vector type. Vector type 3 now identified as BV_BULLET_WIDE,
- Gillbeasts now take flare/fire damage on land,
- Speed optimizations when writing save games,
- Sounds now pre-cached on start-up,
- Correct logic for changing AI targets and kin (incorrect randomization weight),
- Miscellaneous General Engine Improvements,
- Explicitly check for link sprites when Z-Translating the sector,
- Support for tilenums beyond 4095 for SEQ files,
- Changed ActionScan interaction code,
- Support to make the object do a small 'boost' when snapping between different floor heights,
- Fixed Fat Zombie melee vector direction,
- Fixed player damage from being over-aggressive to network clients,
- Updated maphacks to include MLD offsets for Voxels,
- Fixed several floor link collision issues,
- Updated Steamworks to 1.46,
- Misc. sprite link fixes,
- Misc. respawn fixes,
- Misc. fixes.
Platform Differences
The Steam version at launch lacked the option to play the DOS version, something the GOG version had, until it was added in an update on November 19th, 2023.
The Blood series
| |
|---|---|
| DOS | Blood (Prototypes) |
| Windows | Fresh Supply • Refreshed Supply (Prototypes) |
| PlayStation 4, PlayStation 5, Xbox One, Xbox Series X and S, Nintendo Switch | Refreshed Supply |
- Games developed by Monolith Productions
- Games developed by Night Dive Studios
- Games published by Atari, SA
- Windows games
- Games released in 2019
- Games released in May
- Games released on May 9
- Games with unused areas
- Games with unused code
- Games with hidden development-related text
- Games with unused graphics
- Games with revisional differences
- To do
- Blood series
Cleanup
Cleanup
Cleanup
Cleanup > To do
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with revisional differences
Games > Games by content > Games with unused areas
Games > Games by content > Games with unused code
Games > Games by content > Games with unused graphics
Games > Games by developer > Games developed by Atari, SA > Games developed by Night Dive Studios
Games > Games by developer > Games developed by Warner Bros. Games > Games developed by Monolith Productions
Games > Games by platform > Windows games
Games > Games by publisher > Games published by Atari, SA
Games > Games by release date > Games released in 2019
Games > Games by release date > Games released in May
Games > Games by release date > Games released in May > Games released on May 9
Games > Games by series > Blood series
Hidden categories > Pages missing date references
Hidden categories > Pages missing developer references
Hidden categories > Pages missing publisher references