This commit is contained in:
Christoph Oelckers 2015-09-06 16:01:18 +02:00
commit 23cc7da268
8 changed files with 54 additions and 24 deletions

View file

@ -1791,8 +1791,14 @@ void G_ReadSnapshots (PNGHandle *png)
DWORD snapver; DWORD snapver;
arc << snapver; arc << snapver;
if (SaveVersion < 4508)
{
arc << namelen; arc << namelen;
arc.Read (mapname, namelen); arc.Read(mapname, namelen);
mapname[namelen] = 0;
MapName = mapname;
}
else arc << MapName;
TheDefaultLevelInfo.snapshotVer = snapver; TheDefaultLevelInfo.snapshotVer = snapver;
TheDefaultLevelInfo.snapshot = new FCompressedMemFile; TheDefaultLevelInfo.snapshot = new FCompressedMemFile;
TheDefaultLevelInfo.snapshot->Serialize (arc); TheDefaultLevelInfo.snapshot->Serialize (arc);

View file

@ -345,8 +345,8 @@ void UpdateJoystickMenu(IJoystickConfig *selected)
for(unsigned i=0;i<opt->mItems.Size();i++) for(unsigned i=0;i<opt->mItems.Size();i++)
{ {
delete opt->mItems[i]; delete opt->mItems[i];
opt->mItems.Clear();
} }
opt->mItems.Clear();
int i; int i;
int itemnum = -1; int itemnum = -1;

View file

@ -8880,7 +8880,22 @@ scriptwait:
break; break;
case PCD_STRLEN: case PCD_STRLEN:
STACK(1) = SDWORD(strlen(FBehavior::StaticLookupString (STACK(1)))); {
const char *str = FBehavior::StaticLookupString(STACK(1));
if (str != NULL)
{
STACK(1) = SDWORD(strlen(str));
break;
}
static bool StrlenInvalidPrintedAlready = false;
if (!StrlenInvalidPrintedAlready)
{
Printf(PRINT_BOLD, "Warning: ACS function strlen called with invalid string argument.\n");
StrlenInvalidPrintedAlready = true;
}
STACK(1) = 0;
}
break; break;
case PCD_GETCVAR: case PCD_GETCVAR:

View file

@ -74,7 +74,6 @@ EXTERN_CVAR (Bool, show_obituaries)
FName MeansOfDeath; FName MeansOfDeath;
bool FriendlyFire;
// //
// GET STUFF // GET STUFF
@ -198,10 +197,8 @@ void ClientObituary (AActor *self, AActor *inflictor, AActor *attacker, int dmgf
if (inflictor && inflictor->player && inflictor->player->mo != inflictor) if (inflictor && inflictor->player && inflictor->player->mo != inflictor)
MeansOfDeath = NAME_None; MeansOfDeath = NAME_None;
if (multiplayer && !deathmatch) friendly = (self->player != attacker->player && self->IsTeammate(attacker));
FriendlyFire = true;
friendly = FriendlyFire;
mod = MeansOfDeath; mod = MeansOfDeath;
message = NULL; message = NULL;
messagename = NULL; messagename = NULL;
@ -271,8 +268,6 @@ void ClientObituary (AActor *self, AActor *inflictor, AActor *attacker, int dmgf
{ {
if (friendly) if (friendly)
{ {
attacker->player->fragcount -= 2;
attacker->player->frags[attacker->player - players]++;
self = attacker; self = attacker;
gender = self->player->userinfo.GetGender(); gender = self->player->userinfo.GetGender();
mysnprintf (gendermessage, countof(gendermessage), "OB_FRIENDLY%c", '1' + (pr_obituary() & 3)); mysnprintf (gendermessage, countof(gendermessage), "OB_FRIENDLY%c", '1' + (pr_obituary() & 3));
@ -470,12 +465,21 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags)
if ((dmflags2 & DF2_YES_LOSEFRAG) && deathmatch) if ((dmflags2 & DF2_YES_LOSEFRAG) && deathmatch)
player->fragcount--; player->fragcount--;
if (this->IsTeammate(source))
{
source->player->fragcount--;
}
else
{
++source->player->fragcount; ++source->player->fragcount;
++source->player->spreecount; ++source->player->spreecount;
}
if (source->player->morphTics) if (source->player->morphTics)
{ // Make a super chicken { // Make a super chicken
source->GiveInventoryType (RUNTIME_CLASS(APowerWeaponLevel2)); source->GiveInventoryType (RUNTIME_CLASS(APowerWeaponLevel2));
} }
if (deathmatch && cl_showsprees) if (deathmatch && cl_showsprees)
{ {
const char *spreemsg; const char *spreemsg;
@ -1024,7 +1028,6 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
} }
MeansOfDeath = mod; MeansOfDeath = mod;
FriendlyFire = false;
// [RH] Andy Baker's Stealth monsters // [RH] Andy Baker's Stealth monsters
if (target->flags & MF_STEALTH) if (target->flags & MF_STEALTH)
{ {
@ -1221,8 +1224,6 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
((player && player != source->player) || (!player && target != source)) && ((player && player != source->player) || (!player && target != source)) &&
target->IsTeammate (source)) target->IsTeammate (source))
{ {
if (player)
FriendlyFire = true;
if (rawdamage < TELEFRAG_DAMAGE) //Use the original damage to check for telefrag amount. Don't let the now-amplified damagetypes do it. if (rawdamage < TELEFRAG_DAMAGE) //Use the original damage to check for telefrag amount. Don't let the now-amplified damagetypes do it.
{ // Still allow telefragging :-( { // Still allow telefragging :-(
damage = (int)((float)damage * level.teamdamage); damage = (int)((float)damage * level.teamdamage);

View file

@ -1013,6 +1013,10 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm)
bool solid; bool solid;
int damage; int damage;
// don't clip against self
if (thing == tm.thing)
return true;
if (!((thing->flags & (MF_SOLID | MF_SPECIAL | MF_SHOOTABLE)) || thing->flags6 & MF6_TOUCHY)) if (!((thing->flags & (MF_SOLID | MF_SPECIAL | MF_SHOOTABLE)) || thing->flags6 & MF6_TOUCHY))
return true; // can't hit thing return true; // can't hit thing
@ -1020,10 +1024,6 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm)
if (abs(thing->x - tm.x) >= blockdist || abs(thing->y - tm.y) >= blockdist) if (abs(thing->x - tm.x) >= blockdist || abs(thing->y - tm.y) >= blockdist)
return true; return true;
// don't clip against self
if (thing == tm.thing)
return true;
if ((thing->flags2 | tm.thing->flags2) & MF2_THRUACTORS) if ((thing->flags2 | tm.thing->flags2) & MF2_THRUACTORS)
return true; return true;

View file

@ -1562,12 +1562,15 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SkullPop)
if (player != NULL) if (player != NULL)
{ {
player->mo = mo; player->mo = mo;
if (player->camera == self)
{
player->camera = mo;
}
player->damagecount = 32; player->damagecount = 32;
} }
for (int i = 0; i < MAXPLAYERS; ++i)
{
if (playeringame[i] && players[i].camera == self)
{
players[i].camera = mo;
}
}
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View file

@ -309,7 +309,7 @@ FDInputJoystick::~FDInputJoystick()
{ {
Joy_GenerateButtonEvents(Axes[0].ButtonValue, 0, 2, KEY_JOYAXIS1PLUS); Joy_GenerateButtonEvents(Axes[0].ButtonValue, 0, 2, KEY_JOYAXIS1PLUS);
} }
else else if (Axes.Size() > 1)
{ {
Joy_GenerateButtonEvents(Axes[1].ButtonValue, 0, 4, KEY_JOYAXIS1PLUS); Joy_GenerateButtonEvents(Axes[1].ButtonValue, 0, 4, KEY_JOYAXIS1PLUS);
for (i = 2; i < Axes.Size(); ++i) for (i = 2; i < Axes.Size(); ++i)

View file

@ -396,3 +396,8 @@ A53AE580A4AF2B5D0B0893F86914781E // TNT: Evilution map31
{ {
setthingflags 470 2016 setthingflags 470 2016
} }
D0139194F7817BF06F3988DFC47DB38D // Whispers of Satan map29
{
nopassover
}