mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-01-31 05:40:44 +00:00
- Added Karate Chris's patch for teamplay MAPINFO option.
- Added Karate Chris's patch for custom damage color per player class. - Added Karate Chris's patch for respawnlimit skill property. - Added Karate Chris's patch for Strife quit messages. - Fixed: P_RailAttack ignored the puff's damage type. SVN r714 (trunk)
This commit is contained in:
parent
d134deda95
commit
58816f5d09
13 changed files with 117 additions and 17 deletions
|
@ -1,4 +1,9 @@
|
||||||
January 26, 2008 (Changes by Graf Zahl)
|
January 26, 2008 (Changes by Graf Zahl)
|
||||||
|
- Added Karate Chris's patch for teamplay MAPINFO option.
|
||||||
|
- Added Karate Chris's patch for custom damage color per player class.
|
||||||
|
- Added Karate Chris's patch for respawnlimit skill property.
|
||||||
|
- Added Karate Chris's patch for Strife quit messages.
|
||||||
|
- Fixed: P_RailAttack ignored the puff's damage type.
|
||||||
- Fixed: ACS used incompatible values for APROP_RenderStyle. It needs to use
|
- Fixed: ACS used incompatible values for APROP_RenderStyle. It needs to use
|
||||||
the exact same values as previous ZDoom versions
|
the exact same values as previous ZDoom versions
|
||||||
- Added a DECORATE 'stencilcolor' property so that the stencil render style
|
- Added a DECORATE 'stencilcolor' property so that the stencil render style
|
||||||
|
|
|
@ -657,6 +657,7 @@ public:
|
||||||
} LastLook;
|
} LastLook;
|
||||||
WORD SpawnPoint[3]; // For nightmare respawn
|
WORD SpawnPoint[3]; // For nightmare respawn
|
||||||
WORD SpawnAngle;
|
WORD SpawnAngle;
|
||||||
|
int skillrespawncount;
|
||||||
AActor *tracer; // Thing being chased/attacked for tracers
|
AActor *tracer; // Thing being chased/attacked for tracers
|
||||||
AActor *master; // Thing which spawned this one (prevents mutual attacks)
|
AActor *master; // Thing which spawned this one (prevents mutual attacks)
|
||||||
fixed_t floorclip; // value to use for floor clipping
|
fixed_t floorclip; // value to use for floor clipping
|
||||||
|
|
|
@ -118,6 +118,12 @@ public:
|
||||||
FNameNoInit MorphWeapon;
|
FNameNoInit MorphWeapon;
|
||||||
fixed_t AttackZOffset; // attack height, relative to player center
|
fixed_t AttackZOffset; // attack height, relative to player center
|
||||||
|
|
||||||
|
// [CW] Fades for when you are being damaged.
|
||||||
|
bool HasDamageFade;
|
||||||
|
float RedDamageFade;
|
||||||
|
float GreenDamageFade;
|
||||||
|
float BlueDamageFade;
|
||||||
|
|
||||||
bool UpdateWaterLevel (fixed_t oldz, bool splash);
|
bool UpdateWaterLevel (fixed_t oldz, bool splash);
|
||||||
bool ResetAirSupply ();
|
bool ResetAirSupply ();
|
||||||
|
|
||||||
|
|
|
@ -305,6 +305,8 @@ static const char *MapInfoMapLevel[] =
|
||||||
"fogdensity",
|
"fogdensity",
|
||||||
"outsidefogdensity",
|
"outsidefogdensity",
|
||||||
"skyfog",
|
"skyfog",
|
||||||
|
"teamplayon",
|
||||||
|
"teamplayoff",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -450,6 +452,8 @@ MapHandlers[] =
|
||||||
{ MITYPE_INT, lioffset(fogdensity), 0 },
|
{ MITYPE_INT, lioffset(fogdensity), 0 },
|
||||||
{ MITYPE_INT, lioffset(outsidefogdensity), 0 },
|
{ MITYPE_INT, lioffset(outsidefogdensity), 0 },
|
||||||
{ MITYPE_INT, lioffset(skyfog), 0 },
|
{ MITYPE_INT, lioffset(skyfog), 0 },
|
||||||
|
{ MITYPE_SCFLAGS, LEVEL_FORCETEAMPLAYON, ~LEVEL_FORCETEAMPLAYOFF },
|
||||||
|
{ MITYPE_SCFLAGS, LEVEL_FORCETEAMPLAYOFF, ~LEVEL_FORCETEAMPLAYON },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *MapInfoClusterLevel[] =
|
static const char *MapInfoClusterLevel[] =
|
||||||
|
@ -1978,6 +1982,14 @@ void G_DoLoadLevel (int position, bool autosave)
|
||||||
G_InitLevelLocals ();
|
G_InitLevelLocals ();
|
||||||
StatusBar->DetachAllMessages ();
|
StatusBar->DetachAllMessages ();
|
||||||
|
|
||||||
|
// Force 'teamplay' to 'true' if need be.
|
||||||
|
if (level.flags & LEVEL_FORCETEAMPLAYON)
|
||||||
|
teamplay = true;
|
||||||
|
|
||||||
|
// Force 'teamplay' to 'false' if need be.
|
||||||
|
if (level.flags & LEVEL_FORCETEAMPLAYOFF)
|
||||||
|
teamplay = false;
|
||||||
|
|
||||||
Printf (
|
Printf (
|
||||||
"\n\35\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36"
|
"\n\35\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36"
|
||||||
"\36\36\36\36\36\36\36\36\36\36\36\36\37\n\n"
|
"\36\36\36\36\36\36\36\36\36\36\36\36\37\n\n"
|
||||||
|
@ -3136,6 +3148,7 @@ static void ParseSkill (FScanner &sc)
|
||||||
skill.EasyBossBrain = false;
|
skill.EasyBossBrain = false;
|
||||||
skill.AutoUseHealth = false;
|
skill.AutoUseHealth = false;
|
||||||
skill.RespawnCounter = 0;
|
skill.RespawnCounter = 0;
|
||||||
|
skill.RespawnLimit = 0;
|
||||||
skill.Aggressiveness = FRACUNIT;
|
skill.Aggressiveness = FRACUNIT;
|
||||||
skill.SpawnFilter = 0;
|
skill.SpawnFilter = 0;
|
||||||
skill.ACSReturn = AllSkills.Size();
|
skill.ACSReturn = AllSkills.Size();
|
||||||
|
@ -3185,6 +3198,11 @@ static void ParseSkill (FScanner &sc)
|
||||||
sc.MustGetFloat ();
|
sc.MustGetFloat ();
|
||||||
skill.RespawnCounter = int(sc.Float*TICRATE);
|
skill.RespawnCounter = int(sc.Float*TICRATE);
|
||||||
}
|
}
|
||||||
|
else if (sc.Compare("respawnlimit"))
|
||||||
|
{
|
||||||
|
sc.MustGetNumber ();
|
||||||
|
skill.RespawnLimit = sc.Number;
|
||||||
|
}
|
||||||
else if (sc.Compare("Aggressiveness"))
|
else if (sc.Compare("Aggressiveness"))
|
||||||
{
|
{
|
||||||
sc.MustGetFloat ();
|
sc.MustGetFloat ();
|
||||||
|
@ -3282,6 +3300,9 @@ int G_SkillProperty(ESkillProperty prop)
|
||||||
return TICRATE * (gameinfo.gametype != GAME_Strife ? 12 : 16);
|
return TICRATE * (gameinfo.gametype != GAME_Strife ? 12 : 16);
|
||||||
return AllSkills[gameskill].RespawnCounter;
|
return AllSkills[gameskill].RespawnCounter;
|
||||||
|
|
||||||
|
case SKILLP_RespawnLimit:
|
||||||
|
return AllSkills[gameskill].RespawnLimit;
|
||||||
|
|
||||||
case SKILLP_Aggressiveness:
|
case SKILLP_Aggressiveness:
|
||||||
return AllSkills[gameskill].Aggressiveness;
|
return AllSkills[gameskill].Aggressiveness;
|
||||||
|
|
||||||
|
@ -3324,6 +3345,7 @@ FSkillInfo &FSkillInfo::operator=(const FSkillInfo &other)
|
||||||
AutoUseHealth = other.AutoUseHealth;
|
AutoUseHealth = other.AutoUseHealth;
|
||||||
EasyBossBrain = other.EasyBossBrain;
|
EasyBossBrain = other.EasyBossBrain;
|
||||||
RespawnCounter= other.RespawnCounter;
|
RespawnCounter= other.RespawnCounter;
|
||||||
|
RespawnLimit= other.RespawnLimit;
|
||||||
Aggressiveness= other.Aggressiveness;
|
Aggressiveness= other.Aggressiveness;
|
||||||
SpawnFilter = other.SpawnFilter;
|
SpawnFilter = other.SpawnFilter;
|
||||||
ACSReturn = other.ACSReturn;
|
ACSReturn = other.ACSReturn;
|
||||||
|
|
|
@ -115,6 +115,9 @@
|
||||||
|
|
||||||
#define LEVEL_ALLOWRESPAWN UCONST64(0x4000000000000)
|
#define LEVEL_ALLOWRESPAWN UCONST64(0x4000000000000)
|
||||||
|
|
||||||
|
#define LEVEL_FORCETEAMPLAYON UCONST64(0x8000000000000)
|
||||||
|
#define LEVEL_FORCETEAMPLAYOFF UCONST64(0x10000000000000)
|
||||||
|
|
||||||
struct acsdefered_s;
|
struct acsdefered_s;
|
||||||
|
|
||||||
struct FSpecialAction
|
struct FSpecialAction
|
||||||
|
@ -376,6 +379,7 @@ enum ESkillProperty
|
||||||
SKILLP_DamageFactor,
|
SKILLP_DamageFactor,
|
||||||
SKILLP_FastMonsters,
|
SKILLP_FastMonsters,
|
||||||
SKILLP_Respawn,
|
SKILLP_Respawn,
|
||||||
|
SKILLP_RespawnLimit,
|
||||||
SKILLP_Aggressiveness,
|
SKILLP_Aggressiveness,
|
||||||
SKILLP_DisableCheats,
|
SKILLP_DisableCheats,
|
||||||
SKILLP_AutoUseHealth,
|
SKILLP_AutoUseHealth,
|
||||||
|
@ -397,6 +401,7 @@ struct FSkillInfo
|
||||||
bool AutoUseHealth;
|
bool AutoUseHealth;
|
||||||
bool EasyBossBrain;
|
bool EasyBossBrain;
|
||||||
int RespawnCounter;
|
int RespawnCounter;
|
||||||
|
int RespawnLimit;
|
||||||
fixed_t Aggressiveness;
|
fixed_t Aggressiveness;
|
||||||
int SpawnFilter;
|
int SpawnFilter;
|
||||||
int ACSReturn;
|
int ACSReturn;
|
||||||
|
|
|
@ -1437,7 +1437,18 @@ void FBaseStatusBar::BlendView (float blend[4])
|
||||||
if (cnt > 228)
|
if (cnt > 228)
|
||||||
cnt = 228;
|
cnt = 228;
|
||||||
|
|
||||||
AddBlend (1.f, 0.f, 0.f, cnt / 255.f, blend);
|
APlayerPawn *mo = players[consoleplayer].mo;
|
||||||
|
|
||||||
|
// [CW] If no damage fade is specified, assume defaults.
|
||||||
|
if (!mo->HasDamageFade)
|
||||||
|
{
|
||||||
|
mo->HasDamageFade = true;
|
||||||
|
mo->RedDamageFade = 255;
|
||||||
|
mo->GreenDamageFade = 0;
|
||||||
|
mo->BlueDamageFade = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddBlend (mo->RedDamageFade / 255, mo->GreenDamageFade / 255, mo->BlueDamageFade / 255, cnt / 255.f, blend);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unlike Doom, I did not have any utility source to look at to find the
|
// Unlike Doom, I did not have any utility source to look at to find the
|
||||||
|
|
|
@ -42,8 +42,9 @@
|
||||||
|
|
||||||
extern FStringTable GStrings;
|
extern FStringTable GStrings;
|
||||||
|
|
||||||
// QuitDOOM messages
|
// QuitGame messages
|
||||||
#define NUM_QUITMESSAGES 15
|
#define NUM_QUITDOOMMESSAGES 15
|
||||||
|
#define NUM_QUITSTRIFEMESSAGES 8
|
||||||
|
|
||||||
extern const char *endmsg[];
|
extern const char *endmsg[];
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,7 @@ static void M_Options (int choice);
|
||||||
static void M_EndGame (int choice);
|
static void M_EndGame (int choice);
|
||||||
static void M_ReadThis (int choice);
|
static void M_ReadThis (int choice);
|
||||||
static void M_ReadThisMore (int choice);
|
static void M_ReadThisMore (int choice);
|
||||||
static void M_QuitDOOM (int choice);
|
static void M_QuitGame (int choice);
|
||||||
static void M_GameFiles (int choice);
|
static void M_GameFiles (int choice);
|
||||||
static void M_ClearSaveStuff ();
|
static void M_ClearSaveStuff ();
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ static oldmenuitem_t MainMenu[]=
|
||||||
{1,0,'s',"M_SAVEG",M_SaveGame, CR_UNTRANSLATED},
|
{1,0,'s',"M_SAVEG",M_SaveGame, CR_UNTRANSLATED},
|
||||||
{1,0,'o',"M_OPTION",M_Options, CR_UNTRANSLATED}, // [RH] Moved
|
{1,0,'o',"M_OPTION",M_Options, CR_UNTRANSLATED}, // [RH] Moved
|
||||||
{1,0,'r',"M_RDTHIS",M_ReadThis, CR_UNTRANSLATED}, // Another hickup with Special edition.
|
{1,0,'r',"M_RDTHIS",M_ReadThis, CR_UNTRANSLATED}, // Another hickup with Special edition.
|
||||||
{1,0,'q',"M_QUITG",M_QuitDOOM, CR_UNTRANSLATED}
|
{1,0,'q',"M_QUITG",M_QuitGame, CR_UNTRANSLATED}
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t MainDef =
|
static oldmenu_t MainDef =
|
||||||
|
@ -296,7 +296,7 @@ static oldmenuitem_t HereticMainMenu[] =
|
||||||
{1,1,'o',"MNU_OPTIONS",M_Options, CR_UNTRANSLATED},
|
{1,1,'o',"MNU_OPTIONS",M_Options, CR_UNTRANSLATED},
|
||||||
{1,1,'f',"MNU_GAMEFILES",M_GameFiles, CR_UNTRANSLATED},
|
{1,1,'f',"MNU_GAMEFILES",M_GameFiles, CR_UNTRANSLATED},
|
||||||
{1,1,'i',"MNU_INFO",M_ReadThis, CR_UNTRANSLATED},
|
{1,1,'i',"MNU_INFO",M_ReadThis, CR_UNTRANSLATED},
|
||||||
{1,1,'q',"MNU_QUITGAME",M_QuitDOOM, CR_UNTRANSLATED}
|
{1,1,'q',"MNU_QUITGAME",M_QuitGame, CR_UNTRANSLATED}
|
||||||
};
|
};
|
||||||
|
|
||||||
static oldmenu_t HereticMainDef =
|
static oldmenu_t HereticMainDef =
|
||||||
|
@ -625,7 +625,7 @@ CCMD (menu_quit)
|
||||||
{ // F10
|
{ // F10
|
||||||
//M_StartControlPanel (true);
|
//M_StartControlPanel (true);
|
||||||
S_Sound (CHAN_VOICE, "menu/activate", 1, ATTN_NONE);
|
S_Sound (CHAN_VOICE, "menu/activate", 1, ATTN_NONE);
|
||||||
M_QuitDOOM(0);
|
M_QuitGame(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CCMD (menu_game)
|
CCMD (menu_game)
|
||||||
|
@ -1942,7 +1942,7 @@ void M_FinishReadThis (int choice)
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// M_QuitDOOM
|
// M_QuitGame
|
||||||
//
|
//
|
||||||
|
|
||||||
void M_QuitResponse(int ch)
|
void M_QuitResponse(int ch)
|
||||||
|
@ -1960,16 +1960,16 @@ void M_QuitResponse(int ch)
|
||||||
ST_Endoom();
|
ST_Endoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
void M_QuitDOOM (int choice)
|
void M_QuitGame (int choice)
|
||||||
{
|
{
|
||||||
// We pick index 0 which is language sensitive,
|
// We pick index 0 which is language sensitive,
|
||||||
// or one at random, between 1 and maximum number.
|
// or one at random, between 1 and maximum number.
|
||||||
if (gameinfo.gametype == GAME_Doom)
|
if (gameinfo.gametype & (GAME_Doom|GAME_Strife))
|
||||||
{
|
{
|
||||||
int quitmsg = gametic % NUM_QUITMESSAGES;
|
int quitmsg = gametic % (gameinfo.gametype == GAME_Doom ? NUM_QUITDOOMMESSAGES : NUM_QUITSTRIFEMESSAGES);
|
||||||
if (quitmsg != 0)
|
if (quitmsg != 0)
|
||||||
{
|
{
|
||||||
EndString.Format("QUITMSG%d", quitmsg);
|
EndString.Format("QUITMSG%d", quitmsg + (gameinfo.gametype == GAME_Doom ? 0 : NUM_QUITDOOMMESSAGES));
|
||||||
EndString.Format("%s\n\n%s", GStrings(EndString), GStrings("DOSY"));
|
EndString.Format("%s\n\n%s", GStrings(EndString), GStrings("DOSY"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -3202,6 +3202,9 @@ void P_RailAttack (AActor *source, int damage, int offset, int color1, int color
|
||||||
|
|
||||||
// Now hurt anything the trace hit
|
// Now hurt anything the trace hit
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
const PClass *puffclass = PClass::FindClass(puff);
|
||||||
|
AActor *puffDefaults = puffclass == NULL? NULL : GetDefaultByType (puffclass);
|
||||||
|
FName damagetype = puffDefaults != NULL && puffDefaults->DamageType == NAME_None? FName(NAME_Railgun) : puffDefaults->DamageType;
|
||||||
|
|
||||||
for (i = 0; i < RailHits.Size (); i++)
|
for (i = 0; i < RailHits.Size (); i++)
|
||||||
{
|
{
|
||||||
|
@ -3214,14 +3217,13 @@ void P_RailAttack (AActor *source, int damage, int offset, int color1, int color
|
||||||
if ((RailHits[i].HitActor->flags & MF_NOBLOOD) ||
|
if ((RailHits[i].HitActor->flags & MF_NOBLOOD) ||
|
||||||
(RailHits[i].HitActor->flags2 & (MF2_DORMANT|MF2_INVULNERABLE)))
|
(RailHits[i].HitActor->flags2 & (MF2_DORMANT|MF2_INVULNERABLE)))
|
||||||
{
|
{
|
||||||
const PClass *puffclass = PClass::FindClass(puff);
|
|
||||||
if (puffclass != NULL) P_SpawnPuff (puffclass, x, y, z, source->angle - ANG180, 1, true);
|
if (puffclass != NULL) P_SpawnPuff (puffclass, x, y, z, source->angle - ANG180, 1, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
P_SpawnBlood (x, y, z, source->angle - ANG180, damage, RailHits[i].HitActor);
|
P_SpawnBlood (x, y, z, source->angle - ANG180, damage, RailHits[i].HitActor);
|
||||||
}
|
}
|
||||||
P_DamageMobj (RailHits[i].HitActor, source, source, damage, NAME_Railgun);
|
P_DamageMobj (RailHits[i].HitActor, source, source, damage, damagetype);
|
||||||
P_TraceBleed (damage, x, y, z, RailHits[i].HitActor, angle, pitch);
|
P_TraceBleed (damage, x, y, z, RailHits[i].HitActor, angle, pitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -281,6 +281,7 @@ void AActor::Serialize (FArchive &arc)
|
||||||
<< player
|
<< player
|
||||||
<< SpawnPoint[0] << SpawnPoint[1] << SpawnPoint[2]
|
<< SpawnPoint[0] << SpawnPoint[1] << SpawnPoint[2]
|
||||||
<< SpawnAngle
|
<< SpawnAngle
|
||||||
|
<< skillrespawncount
|
||||||
<< tracer
|
<< tracer
|
||||||
<< floorclip
|
<< floorclip
|
||||||
<< tid
|
<< tid
|
||||||
|
@ -2182,6 +2183,8 @@ void P_NightmareRespawn (AActor *mobj)
|
||||||
AActor *mo;
|
AActor *mo;
|
||||||
AActor *info = mobj->GetDefault();
|
AActor *info = mobj->GetDefault();
|
||||||
|
|
||||||
|
mobj->skillrespawncount++;
|
||||||
|
|
||||||
// spawn the new monster (assume the spawn will be good)
|
// spawn the new monster (assume the spawn will be good)
|
||||||
if (info->flags & MF_SPAWNCEILING)
|
if (info->flags & MF_SPAWNCEILING)
|
||||||
z = ONCEILINGZ;
|
z = ONCEILINGZ;
|
||||||
|
@ -2226,6 +2229,8 @@ void P_NightmareRespawn (AActor *mobj)
|
||||||
mo->CopyFriendliness (mobj, false);
|
mo->CopyFriendliness (mobj, false);
|
||||||
mo->Translation = mobj->Translation;
|
mo->Translation = mobj->Translation;
|
||||||
|
|
||||||
|
mo->skillrespawncount = mobj->skillrespawncount;
|
||||||
|
|
||||||
// spawn a teleport fog at old spot because of removal of the body?
|
// spawn a teleport fog at old spot because of removal of the body?
|
||||||
mo = Spawn ("TeleportFog", mobj->x, mobj->y, mobj->z, ALLOW_REPLACE);
|
mo = Spawn ("TeleportFog", mobj->x, mobj->y, mobj->z, ALLOW_REPLACE);
|
||||||
if (mo != NULL)
|
if (mo != NULL)
|
||||||
|
@ -2970,6 +2975,9 @@ void AActor::Tick ()
|
||||||
if (pr_nightmarerespawn() > 4)
|
if (pr_nightmarerespawn() > 4)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (G_SkillProperty (SKILLP_RespawnLimit) && (this)->skillrespawncount >= G_SkillProperty (SKILLP_RespawnLimit))
|
||||||
|
return;
|
||||||
|
|
||||||
P_NightmareRespawn (this);
|
P_NightmareRespawn (this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2304,6 +2304,34 @@ static void PlayerCrouchSprite (FScanner &sc, APlayerPawn *defaults, Baggage &ba
|
||||||
defaults->crouchsprite = GetSpriteIndex (sc.String);
|
defaults->crouchsprite = GetSpriteIndex (sc.String);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
static void PlayerDmgScreenColor (FScanner &sc, APlayerPawn *defaults, Baggage &bag)
|
||||||
|
{
|
||||||
|
defaults->HasDamageFade = true;
|
||||||
|
|
||||||
|
if (sc.CheckNumber ())
|
||||||
|
{
|
||||||
|
sc.MustGetNumber ();
|
||||||
|
defaults->RedDamageFade = clamp <float> (sc.Number, 0, 255);
|
||||||
|
sc.CheckString (",");
|
||||||
|
sc.MustGetNumber ();
|
||||||
|
defaults->GreenDamageFade = clamp <float> (sc.Number, 0, 255);
|
||||||
|
sc.CheckString (",");
|
||||||
|
sc.MustGetNumber ();
|
||||||
|
defaults->BlueDamageFade = clamp <float> (sc.Number, 0, 255);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sc.MustGetString ();
|
||||||
|
int c = V_GetColor (NULL, sc.String);
|
||||||
|
defaults->RedDamageFade = RPART (c);
|
||||||
|
defaults->GreenDamageFade = GPART (c);
|
||||||
|
defaults->BlueDamageFade = BPART (c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// [GRB] Store start items in drop item list
|
// [GRB] Store start items in drop item list
|
||||||
|
@ -2495,6 +2523,7 @@ static const ActorProps props[] =
|
||||||
{ "player.attackzoffset", (apf)PlayerAttackZOffset, RUNTIME_CLASS(APlayerPawn) },
|
{ "player.attackzoffset", (apf)PlayerAttackZOffset, RUNTIME_CLASS(APlayerPawn) },
|
||||||
{ "player.colorrange", (apf)PlayerColorRange, RUNTIME_CLASS(APlayerPawn) },
|
{ "player.colorrange", (apf)PlayerColorRange, RUNTIME_CLASS(APlayerPawn) },
|
||||||
{ "player.crouchsprite", (apf)PlayerCrouchSprite, RUNTIME_CLASS(APlayerPawn) },
|
{ "player.crouchsprite", (apf)PlayerCrouchSprite, RUNTIME_CLASS(APlayerPawn) },
|
||||||
|
{ "player.damagescreencolor", (apf)PlayerDmgScreenColor, RUNTIME_CLASS(APlayerPawn) },
|
||||||
{ "player.displayname", (apf)PlayerDisplayName, RUNTIME_CLASS(APlayerPawn) },
|
{ "player.displayname", (apf)PlayerDisplayName, RUNTIME_CLASS(APlayerPawn) },
|
||||||
{ "player.forwardmove", (apf)PlayerForwardMove, RUNTIME_CLASS(APlayerPawn) },
|
{ "player.forwardmove", (apf)PlayerForwardMove, RUNTIME_CLASS(APlayerPawn) },
|
||||||
{ "player.healradiustype", (apf)PlayerHealRadius, RUNTIME_CLASS(APlayerPawn) },
|
{ "player.healradiustype", (apf)PlayerHealRadius, RUNTIME_CLASS(APlayerPawn) },
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
// SAVESIG should match SAVEVER.
|
// SAVESIG should match SAVEVER.
|
||||||
|
|
||||||
// MINSAVEVER is the minimum level snapshot version that can be loaded.
|
// MINSAVEVER is the minimum level snapshot version that can be loaded.
|
||||||
#define MINSAVEVER 667
|
#define MINSAVEVER 714
|
||||||
|
|
||||||
#if SVN_REVISION_NUMBER == 0
|
#if SVN_REVISION_NUMBER == 0
|
||||||
// This can happen if svnrevision is not updated properly (e.g. compiling while offline)
|
// This can happen if svnrevision is not updated properly (e.g. compiling while offline)
|
||||||
|
|
|
@ -9,7 +9,7 @@ PRESSYN = "press y or n.";
|
||||||
|
|
||||||
QUITMSG = "are you sure you want to\nquit this great game?";
|
QUITMSG = "are you sure you want to\nquit this great game?";
|
||||||
|
|
||||||
// QuitDoom1 messages
|
// Quit Doom 1 messages
|
||||||
QUITMSG1 = "please don't leave, there's more\ndemons to toast!";
|
QUITMSG1 = "please don't leave, there's more\ndemons to toast!";
|
||||||
QUITMSG2 = "let's beat it -- this is turning\ninto a bloodbath!";
|
QUITMSG2 = "let's beat it -- this is turning\ninto a bloodbath!";
|
||||||
QUITMSG3 = "i wouldn't leave if i were you.\ndos is much worse.";
|
QUITMSG3 = "i wouldn't leave if i were you.\ndos is much worse.";
|
||||||
|
@ -18,7 +18,7 @@ QUITMSG5 = "don't leave yet -- there's a\ndemon around that corner!";
|
||||||
QUITMSG6 = "ya know, next time you come in here\ni'm gonna toast ya.";
|
QUITMSG6 = "ya know, next time you come in here\ni'm gonna toast ya.";
|
||||||
QUITMSG7 = "go ahead and leave. see if i care.";
|
QUITMSG7 = "go ahead and leave. see if i care.";
|
||||||
|
|
||||||
// QuitDOOM II messages
|
// Quit Doom II messages
|
||||||
QUITMSG8 = "you want to quit?\nthen, thou hast lost an eighth!";
|
QUITMSG8 = "you want to quit?\nthen, thou hast lost an eighth!";
|
||||||
QUITMSG9 = "don't go now, there's a \ndimensional shambler waiting\nat the dos prompt!";
|
QUITMSG9 = "don't go now, there's a \ndimensional shambler waiting\nat the dos prompt!";
|
||||||
QUITMSG10 = "get outta here and go back\nto your boring programs.";
|
QUITMSG10 = "get outta here and go back\nto your boring programs.";
|
||||||
|
@ -27,6 +27,16 @@ QUITMSG12 = "look, bud. you leave now\nand you forfeit your body count!";
|
||||||
QUITMSG13 = "just leave. when you come\nback, i'll be waiting with a bat.";
|
QUITMSG13 = "just leave. when you come\nback, i'll be waiting with a bat.";
|
||||||
QUITMSG14 = "you're lucky i don't smack\nyou for thinking about leaving.";
|
QUITMSG14 = "you're lucky i don't smack\nyou for thinking about leaving.";
|
||||||
|
|
||||||
|
// Quit Strife messages
|
||||||
|
QUITMSG15 = "where are you going?! what about the rebellion?";
|
||||||
|
QUITMSG16 = "carnage interrupted... what a tease!";
|
||||||
|
QUITMSG17 = "but you're the hope -- my only chance!!";
|
||||||
|
QUITMSG18 = "nobody walks out on blackbird.";
|
||||||
|
QUITMSG19 = "i thought you were different...";
|
||||||
|
QUITMSG20 = "fine! just kill and run!";
|
||||||
|
QUITMSG21 = "you can quit...but you can't hide...";
|
||||||
|
QUITMSG22 = "whaaa, what's the matter? mommy says dinnertime?";
|
||||||
|
|
||||||
LOADNET = "you can't do load while in a net game!\n\npress a key.";
|
LOADNET = "you can't do load while in a net game!\n\npress a key.";
|
||||||
QLOADNET = "you can't quickload during a netgame!\n\npress a key.";
|
QLOADNET = "you can't quickload during a netgame!\n\npress a key.";
|
||||||
QSAVESPOT = "you haven't picked a quicksave slot yet!\n\npress a key.";
|
QSAVESPOT = "you haven't picked a quicksave slot yet!\n\npress a key.";
|
||||||
|
|
Loading…
Reference in a new issue