mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-14 08:30:50 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
65080a65c9
7 changed files with 26 additions and 19 deletions
|
@ -95,7 +95,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Tracer2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// change angle
|
// change angle
|
||||||
exact = R_PointToAngle2 (self->x, self->y, dest->x, dest->y);
|
exact = self->AngleTo(dest);
|
||||||
|
|
||||||
if (exact != self->angle)
|
if (exact != self->angle)
|
||||||
{
|
{
|
||||||
|
@ -120,8 +120,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Tracer2)
|
||||||
if (!(self->flags3 & (MF3_FLOORHUGGER|MF3_CEILINGHUGGER)))
|
if (!(self->flags3 & (MF3_FLOORHUGGER|MF3_CEILINGHUGGER)))
|
||||||
{
|
{
|
||||||
// change slope
|
// change slope
|
||||||
dist = P_AproxDistance (dest->x - self->x, dest->y - self->y);
|
dist = self->AproxDistance (dest) / self->Speed;
|
||||||
dist /= self->Speed;
|
|
||||||
|
|
||||||
if (dist < 1)
|
if (dist < 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1954,11 +1954,14 @@ bool FBehavior::Init(int lumpnum, FileReader * fr, int len)
|
||||||
int arraynum = MapVarStore[LittleLong(chunk[2])];
|
int arraynum = MapVarStore[LittleLong(chunk[2])];
|
||||||
if ((unsigned)arraynum < (unsigned)NumArrays)
|
if ((unsigned)arraynum < (unsigned)NumArrays)
|
||||||
{
|
{
|
||||||
int initsize = MIN<int> (ArrayStore[arraynum].ArraySize, (LittleLong(chunk[1])-4)/4);
|
// Use unsigned iterator here to avoid issue with GCC 4.9/5.x
|
||||||
|
// optimizer. Might be some undefined behavior in this code,
|
||||||
|
// but I don't know what it is.
|
||||||
|
unsigned int initsize = MIN<unsigned int> (ArrayStore[arraynum].ArraySize, (LittleLong(chunk[1])-4)/4);
|
||||||
SDWORD *elems = ArrayStore[arraynum].Elements;
|
SDWORD *elems = ArrayStore[arraynum].Elements;
|
||||||
for (i = 0; i < initsize; ++i)
|
for (unsigned int j = 0; j < initsize; ++j)
|
||||||
{
|
{
|
||||||
elems[i] = LittleLong(chunk[3+i]);
|
elems[j] = LittleLong(chunk[3+j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chunk = (DWORD *)NextChunk((BYTE *)chunk);
|
chunk = (DWORD *)NextChunk((BYTE *)chunk);
|
||||||
|
|
|
@ -1345,12 +1345,14 @@ static void HandleReply(player_t *player, bool isconsole, int nodenum, int reply
|
||||||
if (reply->NextNode != 0)
|
if (reply->NextNode != 0)
|
||||||
{
|
{
|
||||||
int rootnode = npc->ConversationRoot;
|
int rootnode = npc->ConversationRoot;
|
||||||
if (reply->NextNode < 0)
|
unsigned next = (unsigned)(rootnode + (reply->NextNode < 0 ? -1 : 1) * reply->NextNode - 1);
|
||||||
{
|
|
||||||
unsigned next = (unsigned)(rootnode - reply->NextNode - 1);
|
if (next < StrifeDialogues.Size())
|
||||||
if (gameaction != ga_slideshow && next < StrifeDialogues.Size())
|
|
||||||
{
|
{
|
||||||
npc->Conversation = StrifeDialogues[next];
|
npc->Conversation = StrifeDialogues[next];
|
||||||
|
|
||||||
|
if (gameaction != ga_slideshow)
|
||||||
|
{
|
||||||
P_StartConversation (npc, player->mo, player->ConversationFaceTalker, false);
|
P_StartConversation (npc, player->mo, player->ConversationFaceTalker, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1359,10 +1361,6 @@ static void HandleReply(player_t *player, bool isconsole, int nodenum, int reply
|
||||||
S_StopSound (npc, CHAN_VOICE);
|
S_StopSound (npc, CHAN_VOICE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
npc->Conversation = StrifeDialogues[rootnode + reply->NextNode - 1];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
npc->angle = player->ConversationNPCAngle;
|
npc->angle = player->ConversationNPCAngle;
|
||||||
|
|
|
@ -380,7 +380,6 @@ class FPathTraverse
|
||||||
divline_t trace;
|
divline_t trace;
|
||||||
unsigned int intercept_index;
|
unsigned int intercept_index;
|
||||||
unsigned int intercept_count;
|
unsigned int intercept_count;
|
||||||
fixed_t maxfrac;
|
|
||||||
unsigned int count;
|
unsigned int count;
|
||||||
|
|
||||||
void AddLineIntercepts(int bx, int by);
|
void AddLineIntercepts(int bx, int by);
|
||||||
|
|
|
@ -545,7 +545,7 @@ inline fixed_t secfriction(const sector_t *sec, int plane = sector_t::floor)
|
||||||
|
|
||||||
inline fixed_t secmovefac(const sector_t *sec, int plane = sector_t::floor)
|
inline fixed_t secmovefac(const sector_t *sec, int plane = sector_t::floor)
|
||||||
{
|
{
|
||||||
if (sec->Flags & SECF_FRICTION) return sec->friction;
|
if (sec->Flags & SECF_FRICTION) return sec->movefactor;
|
||||||
fixed_t movefactor = Terrains[sec->GetTerrain(plane)].MoveFactor;
|
fixed_t movefactor = Terrains[sec->GetTerrain(plane)].MoveFactor;
|
||||||
return movefactor != 0 ? movefactor : ORIG_FRICTION_FACTOR;
|
return movefactor != 0 ? movefactor : ORIG_FRICTION_FACTOR;
|
||||||
}
|
}
|
||||||
|
@ -4297,6 +4297,14 @@ void P_RailAttack(AActor *source, int damage, int offset_xy, fixed_t offset_z, i
|
||||||
SpawnShootDecal(source, trace);
|
SpawnShootDecal(source, trace);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (trace.HitType == TRACE_HitFloor || trace.HitType == TRACE_HitCeiling)
|
||||||
|
{
|
||||||
|
AActor* puff = NULL;
|
||||||
|
if (puffclass != NULL && puffDefaults->flags3 & MF3_ALWAYSPUFF)
|
||||||
|
{
|
||||||
|
puff = P_SpawnPuff(source, puffclass, trace.X, trace.Y, trace.Z, (source->angle + angleoffset) - ANG90, 1, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (thepuff != NULL)
|
if (thepuff != NULL)
|
||||||
{
|
{
|
||||||
if (trace.HitType == TRACE_HitFloor &&
|
if (trace.HitType == TRACE_HitFloor &&
|
||||||
|
|
|
@ -985,7 +985,7 @@ void FPathTraverse::AddLineIntercepts(int bx, int by)
|
||||||
P_MakeDivline (ld, &dl);
|
P_MakeDivline (ld, &dl);
|
||||||
frac = P_InterceptVector (&trace, &dl);
|
frac = P_InterceptVector (&trace, &dl);
|
||||||
|
|
||||||
if (frac < 0) continue; // behind source
|
if (frac < 0 || frac > 1) continue; // behind source or beyond end point
|
||||||
|
|
||||||
intercept_t newintercept;
|
intercept_t newintercept;
|
||||||
|
|
||||||
|
@ -1170,7 +1170,7 @@ intercept_t *FPathTraverse::Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dist > maxfrac || in == NULL) return NULL; // checked everything in range
|
if (dist > FRACUNIT || in == NULL) return NULL; // checked everything in range
|
||||||
in->done = true;
|
in->done = true;
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
@ -1388,7 +1388,6 @@ FPathTraverse::FPathTraverse (fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, in
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
maxfrac = FRACUNIT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FPathTraverse::~FPathTraverse()
|
FPathTraverse::~FPathTraverse()
|
||||||
|
|
|
@ -403,6 +403,7 @@ D0139194F7817BF06F3988DFC47DB38D // Whispers of Satan map29
|
||||||
}
|
}
|
||||||
|
|
||||||
D7F6E9F08C39A17026349A04F8C0B0BE // Return to Hadron, e1m9
|
D7F6E9F08C39A17026349A04F8C0B0BE // Return to Hadron, e1m9
|
||||||
|
19D03FFC875589E21EDBB7AB74EF4AEF // Return to Hadron, e1m9, 2016.01.03 update
|
||||||
{
|
{
|
||||||
pointonline
|
pointonline
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue