- exported most of Blood's text to the string table

MP messages with %s yet to do.
This commit is contained in:
Christoph Oelckers 2019-12-09 02:01:30 +01:00
parent 0604c72586
commit 5e9b874610
8 changed files with 72 additions and 171 deletions

View file

@ -50,99 +50,6 @@ char qsprite_filler[kMaxSprites], qsector_filler[kMaxSectors];
int gVisibility;
bool gModernMap = false;
const char *gItemText[] = {
"Skull Key",
"Eye Key",
"Fire Key",
"Dagger Key",
"Spider Key",
"Moon Key",
"Key 7",
"Doctor's Bag",
"Medicine Pouch",
"Life Essence",
"Life Seed",
"Red Potion",
"Feather Fall",
"Limited Invisibility",
"INVULNERABILITY",
"Boots of Jumping",
"Raven Flight",
"Guns Akimbo",
"Diving Suit",
"Gas mask",
"Clone",
"Crystal Ball",
"Decoy",
"Doppleganger",
"Reflective shots",
"Beast Vision",
"ShadowCloak",
"Rage shroom",
"Delirium Shroom",
"Grow shroom",
"Shrink shroom",
"Death mask",
"Wine Goblet",
"Wine Bottle",
"Skull Grail",
"Silver Grail",
"Tome",
"Black Chest",
"Wooden Chest",
"Asbestos Armor",
"Basic Armor",
"Body Armor",
"Fire Armor",
"Spirit Armor",
"Super Armor",
"Blue Team Base",
"Red Team Base",
"Blue Flag",
"Red Flag",
"DUMMY",
"Level map",
};
const char *gAmmoText[] = {
"Spray can",
"Bundle of TNT*",
"Bundle of TNT",
"Case of TNT",
"Proximity Detonator",
"Remote Detonator",
"Trapped Soul",
"4 shotgun shells",
"Box of shotgun shells",
"A few bullets",
"Voodoo Doll",
"OBSOLETE",
"Full drum of bullets",
"Tesla Charge",
"OBSOLETE",
"OBSOLETE",
"Flares",
"OBSOLETE",
"OBSOLETE",
"Gasoline Can",
NULL,
};
const char *gWeaponText[] = {
"RANDOM",
"Sawed-off",
"Tommy Gun",
"Flare Pistol",
"Voodoo Doll",
"Tesla Cannon",
"Napalm Launcher",
"Pitchfork",
"Spray Can",
"Dynamite",
"Life Leech",
};
void dbCrypt(char *pPtr, int nLength, int nKey)
{

View file

@ -41,6 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "messages.h"
#include "statistics.h"
#include "gamemenu.h"
#include "gstrings.h"
BEGIN_BLD_NS
@ -58,22 +59,22 @@ void CEndGameMgr::Draw(void)
int nY = 20 - nHeight / 2;
if (gGameOptions.nGameType == 0)
{
viewDrawText(1, "LEVEL STATS", 160, nY, -128, 0, 1, 0);
viewDrawText(1, GStrings("TXTB_LEVELSTATS"), 160, nY, -128, 0, 1, 0);
if (CCheatMgr::m_bPlayerCheated)
{
viewDrawText(3, ">>> YOU CHEATED! <<<", 160, 32, -128, 0, 1, 1);
viewDrawText(3, GStrings("TXTB_CHESTED"), 160, 32, -128, 0, 1, 1);
}
gKillMgr.Draw();
gSecretMgr.Draw();
}
else
{
viewDrawText(1, "FRAG STATS", 160, nY, -128, 0, 1, 0);
viewDrawText(1, GStrings("TXTB_FRAGSTATS"), 160, nY, -128, 0, 1, 0);
gKillMgr.Draw();
}
if (/*dword_28E3D4 != 1 && */((int)totalclock&32))
{
viewDrawText(3, "PRESS A KEY TO CONTINUE", 160, 134, -128, 0, 1, 1);
viewDrawText(3, GStrings("PRESSKEY"), 160, 134, -128, 0, 1, 1);
}
}
@ -164,18 +165,18 @@ void CKillMgr::Draw(void)
char pBuffer[40];
if (gGameOptions.nGameType == 0)
{
viewDrawText(1, "KILLS:", 75, 50, -128, 0, 0, 1);
viewDrawText(1, FStringf("%s:", GStrings("KILLS")), 75, 50, -128, 0, 0, 1);
sprintf(pBuffer, "%2d", at4);
viewDrawText(1, pBuffer, 160, 50, -128, 0, 0, 1);
viewDrawText(1, "OF", 190, 50, -128, 0, 0, 1);
viewDrawText(1, GStrings("OF"), 190, 50, -128, 0, 0, 1);
sprintf(pBuffer, "%2d", at0);
viewDrawText(1, pBuffer, 220, 50, -128, 0, 0, 1);
}
else
{
viewDrawText(3, "#", 85, 35, -128, 0, 0, 1);
viewDrawText(3, "NAME", 100, 35, -128, 0, 0, 1);
viewDrawText(3, "FRAGS", 210, 35, -128, 0, 0, 1);
viewDrawText(3, GStrings("NAME"), 100, 35, -128, 0, 0, 1);
viewDrawText(3, GStrings("FRAGS"), 210, 35, -128, 0, 0, 1);
int nStart = 0;
int nEnd = gInitialNetPlayers;
//if (dword_28E3D4 == 1)
@ -219,28 +220,21 @@ void CSecretMgr::Found(int nType)
} else at8++;
if (gGameOptions.nGameType == 0) {
switch (Random(2)) {
case 0:
viewSetMessage("A secret is revealed.", 0, MESSAGE_PRIORITY_SECRET);
break;
case 1:
viewSetMessage("You found a secret.", 0, MESSAGE_PRIORITY_SECRET);
break;
}
viewSetMessage(GStrings(FStringf("TXT_SECRET%d", Random(2))), 0, MESSAGE_PRIORITY_SECRET);
}
}
void CSecretMgr::Draw(void)
{
char pBuffer[40];
viewDrawText(1, "SECRETS:", 75, 70, -128, 0, 0, 1);
viewDrawText(1, FStringf("%s:", GStrings("TXT_SECRETS")), 75, 70, -128, 0, 0, 1);
sprintf(pBuffer, "%2d", at4);
viewDrawText(1, pBuffer, 160, 70, -128, 0, 0, 1);
viewDrawText(1, "OF", 190, 70, -128, 0, 0, 1);
viewDrawText(1, GStrings("OF"), 190, 70, -128, 0, 0, 1);
sprintf(pBuffer, "%2d", at0);
viewDrawText(1, pBuffer, 220, 70, -128, 0, 0, 1);
if (at8 > 0)
viewDrawText(1, "YOU FOUND A SUPER SECRET!", 160, 100, -128, 2, 1, 1);
viewDrawText(1, GStrings("TXT_SUPERSECRET"), 160, 100, -128, 2, 1, 1);
}
void CSecretMgr::Clear(void)

View file

@ -39,15 +39,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "resource.h"
#include "view.h"
#include "c_bind.h"
#include "gstrings.h"
BEGIN_BLD_NS
const char* zNetGameTypes[] =
{
"Cooperative",
"Bloodbath",
"Teams",
};
void drawLoadingScreen(void)
{
@ -55,12 +50,12 @@ void drawLoadingScreen(void)
if (gGameOptions.nGameType == 0)
{
if (gDemo.at1)
sprintf(buffer, "Loading Demo");
strcpy(buffer, GStrings("TXTB_LDEMO"));
else
sprintf(buffer, "Loading Level");
strcpy(buffer, GStrings("TXTB_LLEVEL"));
}
else
sprintf(buffer, "%s", zNetGameTypes[gGameOptions.nGameType - 1]);
strcpy(buffer, GStrings(FStringf("TXTB_NETGT%d", gGameOptions.nGameType)));
viewLoadingScreen(2049, buffer, levelGetTitle(), NULL);
}

View file

@ -210,10 +210,12 @@ void CViewMap::sub_25C74(void)
nViewY = gViewY0S+1;
viewDrawText(3, pBuffer, gViewX1S, nViewY, -128, 0, 2, 0, 256);
#if 0 // needs to be generalized
if (gViewMap.bFollowMode)
viewDrawText(3, "MAP FOLLOW MODE", gViewX1S, nViewY+8, -128, 0, 2, 0, 256);
else
viewDrawText(3, "MAP SCROLL MODE", gViewX1S, nViewY+8, -128, 0, 2, 0, 256);
#endif
if (tm)
viewResizeView(viewSize);
}

View file

@ -41,6 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "network.h"
#include "player.h"
#include "view.h"
#include "gstrings.h"
BEGIN_BLD_NS
@ -57,18 +58,18 @@ void SetGodMode(bool god)
{
playerSetGodMode(gMe, god);
if (gMe->godMode)
viewSetMessage("You are immortal.");
viewSetMessage(GStrings("TXTB_GODMODE"));
else
viewSetMessage("You are mortal.");
viewSetMessage(GStrings("TXTB_NOTGODMODE"));
}
void SetClipMode(bool noclip)
{
gNoClip = noclip;
if (gNoClip)
viewSetMessage("Unclipped movement.");
viewSetMessage(GStrings("TXTB_NOCLIP"));
else
viewSetMessage("Normal movement.");
viewSetMessage(GStrings("TXTB_NOCLIPOFF"));
}
void packStuff(PLAYER *pPlayer)
@ -93,13 +94,13 @@ void SetAmmo(bool stat)
{
for (int i = 0; i < 12; i++)
gMe->ammoCount[i] = gAmmoInfo[i].max;
viewSetMessage("You have full ammo.");
viewSetMessage(GStrings("TXTB_FULLAMMO"));
}
else
{
for (int i = 0; i < 12; i++)
gMe->ammoCount[i] = 0;
viewSetMessage("You have no ammo.");
viewSetMessage(GStrings("TXTB_NOAMMO"));
}
}
@ -111,7 +112,7 @@ void SetWeapons(bool stat)
}
SetAmmo(stat);
if (stat)
viewSetMessage("You have all weapons.");
viewSetMessage(GStrings("TXTB_ALLWEAP"));
else
{
if (!VanillaMode())
@ -121,7 +122,7 @@ void SetWeapons(bool stat)
gMe->curWeapon = 0;
gMe->nextWeapon = 1;
}
viewSetMessage("You have no weapons.");
viewSetMessage(GStrings("TXTB_NOWEAP"));
}
}
@ -130,12 +131,12 @@ void SetToys(bool stat)
if (stat)
{
packStuff(gMe);
viewSetMessage("Your inventory is full.");
viewSetMessage(GStrings("TXTB_FULLINV"));
}
else
{
packClear(gMe);
viewSetMessage("Your inventory is empty.");
viewSetMessage(GStrings("TXTB_NOINV"));
}
}
@ -144,12 +145,12 @@ void SetArmor(bool stat)
int nAmount;
if (stat)
{
viewSetMessage("You have full armor.");
viewSetMessage(GStrings("TXTB_FULLARM"));
nAmount = 3200;
}
else
{
viewSetMessage("You have no armor.");
viewSetMessage(GStrings("TXTB_NOARM"));
nAmount = 0;
}
for (int i = 0; i < 3; i++)
@ -161,27 +162,27 @@ void SetKeys(bool stat)
for (int i = 1; i <= 6; i++)
gMe->hasKey[i] = stat;
if (stat)
viewSetMessage("You have all keys.");
viewSetMessage(GStrings("TXTB_ALLKEYS"));
else
viewSetMessage("You have no keys.");
viewSetMessage(GStrings("TXTB_NOKEYS"));
}
void SetInfiniteAmmo(bool stat)
{
gInfiniteAmmo = stat;
if (gInfiniteAmmo)
viewSetMessage("You have infinite ammo.");
viewSetMessage(GStrings("TXTB_INFAMMO"));
else
viewSetMessage("You have limited ammo.");
viewSetMessage(GStrings("TXTB_LIMAMMO"));
}
void SetMap(bool stat)
{
gFullMap = stat;
if (gFullMap)
viewSetMessage("You have the map.");
viewSetMessage(GStrings("TXTB_ALLMAP"));
else
viewSetMessage("You have no map.");
viewSetMessage(GStrings("TXTB_NOALLMAP"));
}
void SetWooMode(bool stat)
@ -211,7 +212,7 @@ void ToggleBoots(void)
{
if (powerupCheck(gMe, kPwUpJumpBoots))
{
viewSetMessage("You have no Jumping Boots.");
viewSetMessage(GStrings("TXTB_NOJBOOTS"));
if (!VanillaMode())
{
gMe->pwUpTime[kPwUpJumpBoots] = 0;
@ -221,7 +222,7 @@ void ToggleBoots(void)
}
else
{
viewSetMessage("You have the Jumping Boots.");
viewSetMessage(GStrings("TXTB_JBOOTS"));
if (!VanillaMode())
gMe->pwUpTime[kPwUpJumpBoots] = gPowerUpInfo[kPwUpJumpBoots].bonusTime;
powerupActivate(gMe, kPwUpJumpBoots);
@ -232,14 +233,14 @@ void ToggleInvisibility(void)
{
if (powerupCheck(gMe, kPwUpShadowCloak))
{
viewSetMessage("You are visible.");
viewSetMessage(GStrings("TXTB_VISIBLE"));
if (!VanillaMode())
gMe->pwUpTime[kPwUpShadowCloak] = 0;
powerupDeactivate(gMe, kPwUpShadowCloak);
}
else
{
viewSetMessage("You are invisible.");
viewSetMessage(GStrings("TXTB_INVISIBLE"));
powerupActivate(gMe, kPwUpShadowCloak);
}
}
@ -248,14 +249,14 @@ void ToggleInvulnerability(void)
{
if (powerupCheck(gMe, kPwUpDeathMask))
{
viewSetMessage("You are vulnerable.");
viewSetMessage(GStrings("TXTB_VULN"));
if (!VanillaMode())
gMe->pwUpTime[kPwUpDeathMask] = 0;
powerupDeactivate(gMe, kPwUpDeathMask);
}
else
{
viewSetMessage("You are invulnerable.");
viewSetMessage(GStrings("TXTB_INVULN"));
powerupActivate(gMe, kPwUpDeathMask);
}
}
@ -264,14 +265,14 @@ void ToggleDelirium(void)
{
if (powerupCheck(gMe, kPwUpDeliriumShroom))
{
viewSetMessage("You are not delirious.");
viewSetMessage(GStrings("TXTB_NODELIR"));
if (!VanillaMode())
gMe->pwUpTime[kPwUpDeliriumShroom] = 0;
powerupDeactivate(gMe, kPwUpDeliriumShroom);
}
else
{
viewSetMessage("You are delirious.");
viewSetMessage(GStrings("TXTB_DELIR"));
powerupActivate(gMe, kPwUpDeliriumShroom);
}
}
@ -719,19 +720,19 @@ void CCheatMgr::Process(CCheatMgr::CHEATCODE nCheatCode, char* pzArgs)
break;
case kCheatKevorkian:
actDamageSprite(gMe->nSprite, gMe->pSprite, DAMAGE_TYPE_2, 8000);
viewSetMessage("Kevorkian approves.");
viewSetMessage(GStrings("TXTB_KEVORKIAN"));
break;
case kCheatMcGee:
{
if (!gMe->pXSprite->burnTime)
evPost(gMe->nSprite, 3, 0, kCallbackFXFlameLick);
actBurnSprite(actSpriteIdToOwnerId(gMe->nSprite), gMe->pXSprite, 2400);
viewSetMessage("You're fired!");
viewSetMessage(GStrings("TXTB_FIRED"));
break;
}
case kCheatEdmark:
actDamageSprite(gMe->nSprite, gMe->pSprite, DAMAGE_TYPE_3, 8000);
viewSetMessage("Ahhh...those were the days.");
viewSetMessage(GStrings("TXTB_THEDAYS"));
break;
case kCheatKrueger:
{
@ -740,7 +741,7 @@ void CCheatMgr::Process(CCheatMgr::CHEATCODE nCheatCode, char* pzArgs)
if (!gMe->pXSprite->burnTime)
evPost(gMe->nSprite, 3, 0, kCallbackFXFlameLick);
actBurnSprite(actSpriteIdToOwnerId(gMe->nSprite), gMe->pXSprite, 2400);
viewSetMessage("Flame retardant!");
viewSetMessage(GStrings("TXTB_RETARD"));
break;
}
case kCheatSterno:
@ -758,7 +759,7 @@ void CCheatMgr::Process(CCheatMgr::CHEATCODE nCheatCode, char* pzArgs)
case kCheatClarice:
if (!VanillaMode())
{
viewSetMessage("You have half armor.");
viewSetMessage(GStrings("TXTB_HALFARMOR"));
for (int i = 0; i < 3; i++)
gMe->armor[i] = 1600;
}

View file

@ -53,6 +53,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "weapon.h"
#include "common_game.h"
#include "messages.h"
#include "gstrings.h"
BEGIN_BLD_NS
@ -1468,7 +1469,7 @@ char PickupWeapon(PLAYER *pPlayer, spritetype *pWeapon) {
void PickUp(PLAYER *pPlayer, spritetype *pSprite)
{
char buffer[80];
const char *msg = nullptr;
int nType = pSprite->type;
char pickedUp = 0;
int customMsg = -1;
@ -1481,15 +1482,15 @@ void PickUp(PLAYER *pPlayer, spritetype *pSprite)
if (nType >= kItemBase && nType <= kItemMax) {
pickedUp = PickupItem(pPlayer, pSprite);
if (pickedUp && customMsg == -1) sprintf(buffer, "Picked up %s", gItemText[nType - kItemBase]);
if (pickedUp && customMsg == -1) msg = GStrings(FStringf("TXTB_ITEM%02d", int(nType - kItemBase +1)));
} else if (nType >= kItemAmmoBase && nType < kItemAmmoMax) {
pickedUp = PickupAmmo(pPlayer, pSprite);
if (pickedUp && customMsg == -1) sprintf(buffer, "Picked up %s", gAmmoText[nType - kItemAmmoBase]);
if (pickedUp && customMsg == -1) msg = GStrings(FStringf("TXTB_AMMO%02d", int(nType - kItemAmmoBase +1)));
} else if (nType >= kItemWeaponBase && nType < kItemWeaponMax) {
pickedUp = PickupWeapon(pPlayer, pSprite);
if (pickedUp && customMsg == -1) sprintf(buffer, "Picked up %s", gWeaponText[nType - kItemWeaponBase]);
if (pickedUp && customMsg == -1) msg = GStrings(FStringf("TXTB_WPN%02d", int(nType - kItemWeaponBase +1)));
}
if (!pickedUp) return;
@ -1505,7 +1506,7 @@ void PickUp(PLAYER *pPlayer, spritetype *pSprite)
pPlayer->pickupEffect = 30;
if (pPlayer == gMe) {
if (customMsg > 0) trTextOver(customMsg - 1);
else viewSetMessage(buffer, 0, MESSAGE_PRIORITY_PICKUP);
else if (msg) viewSetMessage(msg, 0, MESSAGE_PRIORITY_PICKUP);
}
}
@ -1798,14 +1799,14 @@ void ProcessInput(PLAYER *pPlayer)
int key = pXSector->Key;
if (pXSector->locked && pPlayer == gMe)
{
viewSetMessage("It's locked");
viewSetMessage(GStrings("TXTB_LOCKED"));
sndStartSample(3062, 255, 2, 0);
}
if (!key || pPlayer->hasKey[key])
trTriggerSector(a2, pXSector, kCmdSpritePush, nSprite);
else if (pPlayer == gMe)
{
viewSetMessage("That requires a key.");
viewSetMessage(GStrings("TXTB_KEY"));
sndStartSample(3063, 255, 2, 0);
}
}
@ -1816,14 +1817,14 @@ void ProcessInput(PLAYER *pPlayer)
int key = pXWall->key;
if (pXWall->locked && pPlayer == gMe)
{
viewSetMessage("It's locked");
viewSetMessage(GStrings("TXTB_LOCKED"));
sndStartSample(3062, 255, 2, 0);
}
if (!key || pPlayer->hasKey[key])
trTriggerWall(a2, pXWall, kCmdWallPush, pPlayer->nSprite);
else if (pPlayer == gMe)
{
viewSetMessage("That requires a key.");
viewSetMessage(GStrings("TXTB_KEY"));
sndStartSample(3063, 255, 2, 0);
}
break;
@ -1838,7 +1839,7 @@ void ProcessInput(PLAYER *pPlayer)
trTriggerSprite(a2, pXSprite, kCmdSpritePush, pPlayer->nSprite);
else if (pPlayer == gMe)
{
viewSetMessage("That requires a key.");
viewSetMessage(GStrings("TXTB_KEY"));
sndStartSample(3063, 255, 2, 0);
}
break;
@ -2157,7 +2158,7 @@ void playerFrag(PLAYER *pKiller, PLAYER *pVictim)
int nSound = gSuicide[nMessage].at4;
if (pVictim == gMe && gMe->handTime <= 0)
{
sprintf(buffer, "You killed yourself!");
sprintf(buffer, GStrings("TXTB_KILLSELF"));
if (gGameOptions.nGameType > 0 && nSound >= 0)
sndStartSample(nSound, 255, 2, 0);
}
@ -2487,7 +2488,7 @@ void PlayerSurvive(int, int nXSprite)
{
PLAYER *pPlayer = &gPlayer[pSprite->type-kDudePlayer1];
if (pPlayer == gMe)
viewSetMessage("I LIVE...AGAIN!!");
viewSetMessage(GStrings("TXT_LIVEAGAIM"));
else
{
sprintf(buffer, "%s lives again!", gProfile[pPlayer->nPlayer].name);

View file

@ -62,6 +62,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "weapon.h"
#include "zstring.h"
#include "menu/menu.h"
#include "gstrings.h"
CVARD(Bool, hud_powerupduration, true, CVAR_ARCHIVE|CVAR_FRONTEND_BLOOD, "enable/disable displaying the remaining seconds for power-ups")
@ -1401,7 +1402,7 @@ void viewDrawCtfHudVanilla(ClockTicks arg)
int x = 1, y = 1;
if (dword_21EFD0[0] == 0 || ((int)totalclock & 8))
{
viewDrawText(0, "BLUE", x, y, -128, 10, 0, 0, 256);
viewDrawText(0, GStrings("TXT_COLOR_BLUE"), x, y, -128, 10, 0, 0, 256);
dword_21EFD0[0] = dword_21EFD0[0] - arg;
if (dword_21EFD0[0] < 0)
dword_21EFD0[0] = 0;
@ -1411,7 +1412,7 @@ void viewDrawCtfHudVanilla(ClockTicks arg)
x = 319;
if (dword_21EFD0[1] == 0 || ((int)totalclock & 8))
{
viewDrawText(0, "RED", x, y, -128, 7, 2, 0, 512);
viewDrawText(0, GStrings("TXT_COLOR_RED"), x, y, -128, 7, 2, 0, 512);
dword_21EFD0[1] = dword_21EFD0[1] - arg;
if (dword_21EFD0[1] < 0)
dword_21EFD0[1] = 0;
@ -3557,7 +3558,7 @@ RORHACK:
viewDrawAimedPlayerName();
if (gPaused)
{
viewDrawText(1, "PAUSED", 160, 10, 0, 0, 1, 0);
viewDrawText(1, GStrings("TXTB_PAUSED"), 160, 10, 0, 0, 1, 0);
}
else if (gView != gMe)
{
@ -3640,7 +3641,7 @@ void viewLoadingScreenUpdate(const char *pzText4, int nPercent)
if (nPercent != -1)
TileHGauge(2260, 86, 110, nPercent, 100, 0, 131072);
viewDrawText(3, "Please Wait", 160, 134, -128, 0, 1, 1);
viewDrawText(3, GStrings("TXTB_PLSWAIT"), 160, 134, -128, 0, 1, 1);
}
void viewLoadingScreen(int nTile, const char *pText, const char *pText2, const char *pText3)

View file

@ -284,9 +284,9 @@ void SetDefaultStrings()
//Set a few quotes which are used for common handling of a few status messages
quoteMgr.InitializeQuote(23, "$MESSAGES: ON");
quoteMgr.InitializeQuote(24, "$MESSAGES:OFF");
quoteMgr.InitializeQuote(83, "$MAPFOLLOWOFF");
quoteMgr.InitializeQuote(84, "$MAPFOLLOWON");
quoteMgr.InitializeQuote(24, "$MESSAGES: OFF");
quoteMgr.InitializeQuote(83, "$FOLLOW MODE OFF");
quoteMgr.InitializeQuote(84, "$FOLLOW MODE ON");
quoteMgr.InitializeQuote(85, "$AUTORUNOFF");
quoteMgr.InitializeQuote(86, "$AUTORUNON");
#if 0 // todo: print a message