# Transfusion manual

## Mathieu Olivier and Dave Turner `<{elric,darth_linux}@planetblood.com>`

v1.0.1, October 22, 2002

This manual covers installation and usage of the Transfusion game.

## 1. Introduction

## 2. Installation

- 2.1 Using Transfusion as a Quake mod
- 2.2 Transfusion and QuakeWorld

## 3. Basic usage

- 3.1 Game types
- 3.2 Impulses
- 3.3 Game play notes
- 3.4 Bots
- 3.5 Brink Of Death

## 4. Bloody stuff

- 4.1 Weapons
- 4.2 Health & Armor
- 4.3 Items & Powerups

## 5. Advanced usage

- 5.1 Warmup
- 5.2 Voting menu
- 5.3 Cvars
- 5.4 Map cycling

## 6. Frequently Asked Questions

## 7. Links

## 1. Introduction

The Transfusion Project aims to recreate an old DOS game from Monolith Productions called Blood, using the Quake engine.

It looks like a simple mod, but actually, you don't need any Quake data to run it. In fact, Transfusion is a complete total conversion of the multiplayer aspect of Blood. The original Blood is a remarkable game, and the Transfusion team hopes you'll have as much fun playing it as we had playing Blood.

Obviously, you'll be more at ease if you already know Blood and/or Quake. Even if it's not the case, don't worry: you should be able to find in this manual all you need to know about Transfusion.

## 2. Installation

If you read this manual, chances are that you have already installed Transfusion on your machine. If it's not the case though, don't worry, it's extremely easy. If you are lucky enough to use a Transfusion installer program, just follow the steps as with any other installer program. If you have an archive file, such as a ZIP file for instance, extract its contents in a new, clean directory. That's it. You can launch the game now.

Unfortunately, there are a few cases where people will have to use another Quake engine instead of the one we provide, because of a low-end machine, or a poor network connection, or because of drivers with no OpenGL support or even a video card with no 3D acceleration.

## 2.1 Using Transfusion as a Quake mod

If you are in this case, you will be happy to know that Transfusion can be run using any Quake compatible engine, as a simple mod. Theorically, all you have to do is to copy the "transfusion" subdirectory (the one which contains the PAK files) into your Quake directory. Or copy a Quake binary in the Transfusion installation directory, for that matters.

Be aware that most Quake 1 compatible engines will requier the Quake original data, despite the fact that Transfusion doesn't need them. So you may also want to have the "id1" directory by the side of the "transfusion" data directory.

To launch Quake using Transfusion as a mod, type the following command line: "winquake -game transfusion", if your Quake engine is named "winquake" of course. You may encounter a few minor bugs (Quake engines with a software renderer have a few visual bugs, in particular), but the gameplay should be very similar to the one we intended to create.

## 2.2 Transfusion and QuakeWorld

If you want to play on the internet and that your computer can't run our engine, then you will have to use a QuakeWorld based engine. Bad news...

First, make sure you really want to play Transfusion on the internet and that there's no way to use our engine on your machine. I insist because 1- it's not easy to install and use Transfusion with QuakeWorld, and 2- the gameplay is significantly different and some features are missing.

Now that you are sure you want to give it a try, start by getting a copy of a good QuakeWorld based engine ( ZQuake is the best choice in my opinion). Then, (re)install Transfusion with the QuakeWorld support if you haven't done it previously. You will get a "qw" directory in your install directory. This "qw" directory contains 2 PAK files. The first one, "pak0.pak", will stay in this directory. The other one must be moved to the "transfusion" subdirectory when you play Transfusion with QuakeWorld, but only during that period of time. If this second PAK stays in "transfusion" while playing the game with a non-QuakeWorld engine, you will surely get at least visual bugs. Also, you may have the same kind of problems than those mentioned in the previous paragraph (Quake data needed, software renderer bugs, ...).

If you have enough luck or skills to make all things work correctly, the greatest challenge still remains: finding a server and some other QuakeWorld players... Good luck. You will need it.

## 3. Basic usage

## 3.1 Game types

Transfusion supports 3 game types:

- BloodBath (deathmatch = 0 or 1, and teamplay = 0): This is standard Free For All Deathmatch play. Everyone is your enemy - kill them all.
- Team BloodBath (deathmatch = 0 or 1, and teamplay = 1 or 2): Divides the game into two teams who are pitted against each other. When setting Teamplay to 1, team members are impervious to Friendly Fire, while setting Teamplay to 2 leaves you vulnerable to shots from your team mates.
- Capture The Flag (deathmatch = 2). Capture the opposing Teams flag and bring it your base. As with TBB, setting teamplay to 2 activates friendly fire.

## 3.2 Impulses

Impulses are command numbers. You can bind them to keys, or type them directly at console. For example, typing "impulse 12" at console will make you use the secondary fire of your weapon; you could achieve the same effect by binding a key to "impulse 12" and pressing it.

Here is the complete impulse list:

- impulses 1 to 9, and impulse 17: select a weapon
- impulses 10 and 11: cycle to next/previous weapon
- impulse 12: secondary fire (equivalent to the "+button3" command)
- impulse 13: use the currently selected item
- impulses 14 and 15: select previous/next item
- impulse 16: view the current value of the next armor type
- impulse 20: become an observer (only allowed when dead)
- impulse 50: enter the voting menu
- impulse 100: add a bot (to the red team if available)
- impulse 101: add a bot (to the blue team if available)
- impulse 102: kick a bot
- impulse 141: identify the player you're aiming at

All those impulses are considered cheats (not available in multiplayer games, except if the server has the "sv_cheats" cvar set to a non-zero value). WARNING: although it's unlikely, some of them may crash the game under some conditions.

- impulse 103: botcam mode (unavailable in QuakeWorld)
- impulse 104: waypoint edit mode (unavailable in QuakeWorld)
- impulse 250: Dump all entities stats to console (for debugging)
- impulse 251: Give full armor
- impulse 252: Burn yourself !
- impulse 253: Give all inventory items
- impulse 254: Put you on the Brink Of Death
- impulse 255: Give Guns Akimbo

## 3.3 Game play notes

Sending messages

  To communicate with other players during a multiplayer game, press "T" and type your message. Press [ENTER] to send it or [Esc] to abort.

Teleporters

  Some Transfusion levels feature teleporters. Learn to use these teleporters to get around levels quickly. Teleporter destinations generally appear as animated markers on the floor. Stay away from these in a crowded game -- someone might teleport right into you, killing you instantly.

## 3.4 Bots

Bots are fake players controled by a simple AI code. Transfusion bots are heavily based on FrikBotX source code, a Quake mod that provides its bot system as a separate piece of code.

The bots are easy to use. Take a look at the impulse list to see the few ones you'll have to use to spawn and remove bots.

Bots count as normal players, so if you can't spawn bots (message: "server is full") or if nobody can join your server, you have probably reached the current maximum number of players on the server, or you may have forgotten to put "-listen 8" or more in Quake's command line ("-dedicated 8" for a dedicated server). By default, Quake allows only 1 client into the game. That's why you must explicitly start a multiplayer game with the menu or add a "-listen" or "-dedicated" argument to your command line to tell Quake you want more clients.

You can't fill a server with bots. Transfusion will always let one slot free so that a new human player can come into the game. If a new player comes and takes the last free slot, a bot will be kicked automatically to free another slot if possible.

## 3.5 Brink Of Death

Sometimes you'll knock opponents to their knees instead of killing them outright. The victim spends several moments swaying, poised between life and death. If no one reacts, the victim will slump over and die, earning you a point. Of course, because your victim is helpless, you'll have a moment or two to gloat. You may end the torture swiftly by blowing the victim's head off. You may also draw it out by tossing a lit bundle of dynamite on the ground nearby. Be careful, though. Victims bring themselves back from the brink of death after a dozen secondes.

You'll recognize the brink of death by the sudden inability to move and the removal of your weapons.

Also, note that BOD doesn't apply to someone who's on fire, and does NOT exist in QuakeWorld.

## 4. Bloody stuff

## 4.1 Weapons

You have 12 differents weapons at your disposal in Transfusion. Aside from the Pitchfork, each of them has a normal fire and a secondary fire, also known as altfire. Most of the time, it's a deadlier mode that consumes more ammo.

Pitch Fork

  This handy tool can be very effective if you can get close enough to your foes to use it on them. It doesn't need ammo, so you'll always have it to fall back on if you need it.

  Ammo: None. No altfire mode.

Flare Gun

  Fires burning projectiles that lodge easily in flesh and continue to burn for a short period of time. Unless you dive into water, you'll take damage until the flare burns itself out, by which time it may be too late. The alternative fire launches a starburst flare that douses a large area with flames. Can provide effective crowd control.

  Powered up by Guns Akimbo. Ammo: Flares.

Sawed-off Shotgun

  A trusty companion if ever there was one. It doesn't have great range, but it packs a hell of a wallop up close. Can be fired either a barrel at a time or both at once for extra damage.

  Powered up by Guns Akimbo. Ammo: Shotgun shells.

Thompson's Machine Gun

  The Tommy Gun is a favorite of the Cabal for its rapid rate of fire and impressive accuracy. On the down side, it chews up ammo quickly. The alternative mode is a strafing attack that covers a wider area with twice as many bullets, which is an effective way to clear out a room.

  Powered up by Guns Akimbo. Ammo: Bullet drums.

Incinerator

  This monstrous weapon launches a huge ball of flaming napalm at an extremely high velocity. If the initial explosion doesn't kill your enemy, the burning probably will. Best used with extreme caution, especially in tight areas. The alt-fire launches several napalm projectiles, covering a wider area but also chewing up a lot more ammo.

  Powered up by Guns Akimbo. Ammo: Gasoline cans.

Dynamite Bundle

  Light one up and chuck it at a group of zombies and you'll be rewarded with red rain and chunks of rotted flesh on the brim of your hat. The longer you hold down the fire button, the farther you'll throw the bundle. Watch the meter on the status bar to gauge the distance. The primary mode explodes on impact, while the alternative mode will burn all the way down before it explodes, making for some interesting traps.

  Ammo: Dynamite bundle.

Remote Detonator

  Remotes work like dynamite bundles, except that you can detonate them at will. You can bounce them off walls or ceilings if you're afraid to peek around a corner. The alternative fire drops a remote at your feet, and you can hit the alt-fire key again to place additional remotes without detonating those you've already placed.

  Ammo: Remote detonator.

Proximity Detonator

  These are by far the nastiest explosives you'll come across. You can scatter them around and concern yourself with other matters. As soon as someone steps near one, you'll hear a far-off boom and accompanying shrieks of agony. Use the alt-fire to drop them at your feet. Also, remember where you've dropped proximities or you may fall prey to your own trap.

  Ammo: Proximity detonator.

Aerosol Can

  Hairspray may not seem like the most daunting weapon, but apply it to a cigarette lighter and you've got an instant flamethrower (don't try this at home). While its range is rather limited, its effectiveness is quite impressive. You can also light one up like a Molotov cocktail and toss it into a group of adversaries. Hit alt-fire a second time after igniting a can to drop it at your feet-it will explode once it burns down.

  Ammo: Aerosol Can.

Tesla Cannon

  This powerful prototype weapon packs a mighty load of amperage. Nikola Tesla would be proud. Press alt-fire and the Tesla cannon charges up, and releases a powerful electrical blast.

  Powered up by Guns Akimbo. Ammo: Batteries.

Life Leech

  This artifact draws its power from the life energy of your foes. Run out of ammo and it saps your own strength! Press alt-fire to set the Life Leech down. It will automatically fire at anything that comes into its sights.

  Ammo: Trapped Souls.

Voodoo Doll

  The power of the voodoo doll is immense, but far subtler than that of a firearm. Hit alt-fire to unlease a more powerful supernatural attack at the expense using up the entire doll).

  Ammo: Voodoo doll.

## 4.2 Health & Armor

Life Essence

  Boosts your health by 20 points, up to 100.

Medicine Patch

  Boosts your health by 50 points, up to 100.

Life Seed

  Adds 100 points to your health, up to 200 total.

Body Armor

  Adds 100 body armor. Protects from bullets, shells, and concussion effects from explosives.

Fire Armor

  Adds 100 fire resistant armor, which is useful against flares, flaming aerosol, and the residual effects of dynamite and napalm.

Spirit Armor

  Adds 100 spiritual armor, which will absorb damage from the Voodoo Doll and Life Leech.

Super Armor

  Adds 200 points of body, fire, and spirit armor.

Basic Armor

  Adds 50 of each type of armor.

## 4.3 Items & Powerups

Death Mask

  Provides temporary invulnerability to all attacks. Note that you are still susceptible to physics, which means a dynamite blast may hurl you off a cliff.

Jump Boots

  Enable you to jump much higher than normal. Useful for those hard to reach places or crossing chasms the easy way.

Cloak of Invisibility

  The cloak will hide you from your enemies. That is, until you decide to attack them, even then they will have a hard time attacking you. Definately, one of the more useful power-ups in the game.

Dr.'s Bag

  Will restore up to 100 points of health when activated. The unused medicine will remain in your inventory until used up. Keep this item handy!

Guns akimbo

  Gives you double-fisted killing power with one-handed weapons, such as the shotgun, flare gun, and Tommy gun. Lasts 30 seconds.

Reflective Shots

  This powerup causes bullets to bounce back at your attacker. You are still susceptible to flares and explosives, so be careful.

## 5. Advanced usage

## 5.1 Warmup

The warmup is a short period of time before the fight actually begins. The idea behind this system is to make sure all players start at the same time so that no guy gets all the stuff before someone else even enters play. Also it lets the time to players who don't know the map yet to explore it a little bit.

You control the amount of time dedicated to the warmup by setting the g_warmup cvar to a value in secondes. A server will wait after at least 2 players (of different teams if any) have entered the game to start the countdown. It will then reset the map and respawn all players. Be sure to set it to a non-zero value before starting the map, or you won't have any warmup at all.

Of course, no frag can be taken during the warmup.

## 5.2 Voting menu

The voting menu is a mecanism that allows players to change server settings via votes. For the moment, the available settings are: map, game type, frag limit, time limit, warmup duration, and options.

To enter the menu, you must use "impulse 50" while idle. The menu is entirely based on impulse commands. To enter into a submenu or vote for something, just send the impulse number corresponding to your choice. Once you have voted, you will be exited from the menu automatically, but until you vote or you explicitely exit the menu, all your impulses will be handled by it.

Observers don't have access to the menu.

## 5.3 Cvars

You'll find in Transfusion quite a lot of the usual cvars from Quake (be careful though, "samelevel" hasn't the same use as in Quake, see the map cycling section for more informations). We have already talked about "deathmatch", "teamplay", "fraglimit" and "timelimit"; but you'll also find "skill" for setting the bots skill.

Transfusion has a few specific cvars that you may want to use if you host a server:

- "g_flashyEffects": turn on/off some flashy effects. Some of them may actually be changed only after restarting the map.
- "g_lockTeams": if set during a teamplay, the end of the warmup locks the teams so that no new player can join them until the end of the match.
- "g_warmup" : if set to a non-zero value, it indicates the duration of the warmup in secondes. If set to 0, the warmup is disabled.
- "g_weaponStay": if set, weapons don't disappear when taken, but you can't take a weapon more than once (equivalent to "Doom Old DeathMatch" and "Quake DM 3").
- "sv_cheats": enable a few client impulses which may be used to cheat one way or another.
- "sv_disable": a set of flags that allow a server administrator to keep his server under control despite the voting system. Its value must be set by adding the following numbers: 1 to disable bots, 2 to disable map voting, 4 to disable game type voting, 8 to disable frag limit voting, 16 to disable time limit voting, 32 to disable warmup duration voting, and 64 to disable options voting. For example, setting "sv_disable" to 5 (1+4) will ensure your server won't have bots and won't change its initial game type.

Your server must have a "set" command or an automatic cvar creation at progs request to allow you to use the new cvars though. It's not the case of the original Quake binaries and of quite a lot of more modern versions of the Quake engine. Be sure to check that.

In general you won't have problems with Transfusion specific cvars. The voting menu allows the players to set most of them manually as needed, so you shouldn't have to worry about that. That said, there's one particular case that is indeed problematic: when you want to set a Transfusion specific cvar right at server start, using the command line or some config file. At this time, the Transfusion cvars won't be created yet and the program will tell you that it doesn't know this command. This is due to the fact that they are created by the game code the first time you start a map.

For instance, if you run "transfusion +set g_warmup 15 +map bb3", the g_warmup value will be 0 because the map is launched after the "set" command. The right way to do it is: "transfusion +map bb3 +set g_warmup 15". Actually, this example is even trickier than that, because you will probably want to have a warmup at once. Unfortunately, the value is set after you start the map, so you won't get a warmup the first time. The best way to do it is then: "transfusion +map bb3 +set g_warmup 15 +restart". With the addition of this last command, you'll restart the map immediately, and so you'll have a warmup.

With the engine we provide with Transfusion, it's even more complicated (yes, it's possible). To put it in a nutshell, DarkPlaces doesn't launch a map when it executes the "map" command. Instead, it waits until all parts of the engine are initialized to do so. This means that you'll have to make your commands waiting too. How to do that? With the "wait" command. The previous example becomes "transfusion +map bb3 +wait +wait +wait +wait +wait +set g_warmup 15 +restart". Yes, the 5 "wait" are necessary, because the engine has the time to execute the command buffer 4 times before the map is actually launched.

## 5.4 Map cycling

Transfusion supports a map cycling mecanism which is very similar to the system used by several popular Quake mods, including FrikBotX and Omicron bots. It is based on a script file ("maps.cfg"), a cvar ("samelevel"), and a few console aliases. Basically, you have to write a "maps.cfg" in your "transfusion" subdirectory so that it sets "samelevel" to the number of maps in your list, and that it defines an alias for each of those maps, named "map1", "map2", "map3", ... you get the idea. Each alias must contain the command line to launch the map.

Here's a sample "maps.cfg" file to help you understand the system. It cycles through 4 maps (bb3, bb7, cpbb01, and crypt):

             samelevel "4"
             alias map1 "changelevel bb3"
             alias map2 "changelevel bb7"
             alias map3 "changelevel cpbb01"
             alias map4 "changelevel crypt"

This file is reloaded each time the server starts a map, so you can safely modify it without having to restart your server. Also, this means you don't have to execute it manually: the game code will do it for you when needed. All you have to do is putting the file in the right place.

Note that the voting system still works correctly even if the server administrator defines a map cycling list. The map will change according to the vote, and the cycle will resume afterwards.

## 6. Frequently Asked Questions

I just replaced a PAK file and some of the objects look all messed up

  Delete the "glquake" directory inside all of your Quake directories and run Transfusion again.

Why didn't you use another engine to make Transfusion?

  Because in order to make the necessary AI, physic and logic changes to the game so that it feels and behaves like Blood, we need direct access to the engine source code, not just the "game.dll" or game code, or whatever you want to refer to it as. Making a "game.dll" only lets you change some things, and they aren't enough things to do a total conversion correctly (in our opinion). Therefore, we chose the Quake 1 engine, since we have complete control over every aspect of the game. We felt it outweighed the other limitations of the Quake engine (low count polys, lower resolution, lack of things like colored lights, etc). Also, the Quake engine is licensed under the GNU GPL - which means we are free to change it without paying anyone a dime... To use the Quake 3 engine or the Unreal engine would have required us to purchase a license, something we don't have the money to do.

Transfusion exits with: Z_Malloc: failed on allocation of XXX bytes

  The engine hasn't allocated enough "zone" memory. You can change this with the "-zone" command line argument. With most engines, "-zone 256" will be enough, but some of them may require more (try 512).

I want to contribute to the Transfusion Project

  It's very simple. Start doing a quick tour through our 2 websites to be sure to know all the basic informations you may need. Then, contact the Project Coordinator and either the Lead Artist or the Lead Programmer, depending on what you want to contribute.

## 7. Links

- The Transfusion Project: our home page
- Transfusion on SourceForge.net: our development page
- The DarkPlaces engine: the engine we recommend and provide
- FrikBotX: where our bots come from
- ZQuake: arguably the best QuakeWorld based engine