Merge remote-tracking branch 'remotes/ZDoom/gzdoom/staging' into gzd_staging
This commit is contained in:
commit
9e0bf90be6
177 changed files with 4290 additions and 12626 deletions
|
|
@ -309,7 +309,7 @@ static bool UnravelVarArgAJump(FxVMFunctionCall *func, FCompileContext &ctx)
|
|||
static bool AJumpProcessing(FxVMFunctionCall *func, FCompileContext &ctx)
|
||||
{
|
||||
// Unfortunately the PrintableName is the only safe thing to catch this special case here.
|
||||
if (func->Function->Variants[0].Implementation->PrintableName.CompareNoCase("Actor.A_Jump [Native]") == 0)
|
||||
if (stricmp(func->Function->Variants[0].Implementation->QualifiedName, "Actor.A_Jump") == 0)
|
||||
{
|
||||
// Unravel the varargs part of this function here so that the VM->native interface does not have to deal with it anymore.
|
||||
if (func->ArgList.Size() > 2)
|
||||
|
|
|
|||
|
|
@ -347,6 +347,11 @@ static FFlagDef ActorFlagDefs[]=
|
|||
DEFINE_FLAG(MF8, ADDLIGHTLEVEL, AActor, flags8),
|
||||
DEFINE_FLAG(MF8, ONLYSLAMSOLID, AActor, flags8),
|
||||
|
||||
DEFINE_FLAG(MF9, SHADOWAIM, AActor, flags9),
|
||||
DEFINE_FLAG(MF9, DOSHADOWBLOCK, AActor, flags9),
|
||||
DEFINE_FLAG(MF9, SHADOWBLOCK, AActor, flags9),
|
||||
DEFINE_FLAG(MF9, SHADOWAIMVERT, AActor, flags9),
|
||||
|
||||
// Effect flags
|
||||
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
|
||||
DEFINE_FLAG2(FX_ROCKET, ROCKETTRAIL, AActor, effects),
|
||||
|
|
@ -355,8 +360,7 @@ static FFlagDef ActorFlagDefs[]=
|
|||
DEFINE_FLAG(RF, FORCEYBILLBOARD, AActor, renderflags),
|
||||
DEFINE_FLAG(RF, FORCEXYBILLBOARD, AActor, renderflags),
|
||||
DEFINE_FLAG(RF, ROLLSPRITE, AActor, renderflags), // [marrub] roll the sprite billboard
|
||||
// [fgsfds] Flat sprites
|
||||
DEFINE_FLAG(RF, FLATSPRITE, AActor, renderflags),
|
||||
DEFINE_FLAG(RF, FLATSPRITE, AActor, renderflags), // [fgsfds] Flat sprites
|
||||
DEFINE_FLAG(RF, WALLSPRITE, AActor, renderflags),
|
||||
DEFINE_FLAG(RF, DONTFLIP, AActor, renderflags),
|
||||
DEFINE_FLAG(RF, ROLLCENTER, AActor, renderflags),
|
||||
|
|
|
|||
|
|
@ -988,6 +988,7 @@ DEFINE_PROPERTY(clearflags, 0, Actor)
|
|||
defaults->flags6 = 0;
|
||||
defaults->flags7 = 0;
|
||||
defaults->flags8 = 0;
|
||||
defaults->flags9 = 0;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
|
|||
|
|
@ -1302,7 +1302,8 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, GetRadiusDamage, P_GetRadiusDamage)
|
|||
PARAM_INT(distance);
|
||||
PARAM_INT(fulldmgdistance);
|
||||
PARAM_BOOL(oldradiusdmg);
|
||||
ACTION_RETURN_INT(P_GetRadiusDamage(self, thing, damage, distance, fulldmgdistance, oldradiusdmg));
|
||||
PARAM_BOOL(circular);
|
||||
ACTION_RETURN_INT(P_GetRadiusDamage(self, thing, damage, distance, fulldmgdistance, oldradiusdmg, circular));
|
||||
}
|
||||
|
||||
static int RadiusAttack(AActor *self, AActor *bombsource, int bombdamage, int bombdistance, int damagetype, int flags, int fulldamagedistance, int species)
|
||||
|
|
@ -1538,20 +1539,21 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, LookForPlayers, P_LookForPlayers)
|
|||
ACTION_RETURN_BOOL(P_LookForPlayers(self, allaround, params));
|
||||
}
|
||||
|
||||
static int CheckMonsterUseSpecials(AActor *self)
|
||||
static int CheckMonsterUseSpecials(AActor *self, line_t *blocking)
|
||||
{
|
||||
spechit_t spec;
|
||||
int good = 0;
|
||||
|
||||
if (!(self->flags6 & MF6_NOTRIGGER))
|
||||
{
|
||||
auto checkLine = blocking ? blocking : self->BlockingLine;
|
||||
while (spechit.Pop (spec))
|
||||
{
|
||||
// [RH] let monsters push lines, as well as use them
|
||||
if (((self->flags4 & MF4_CANUSEWALLS) && P_ActivateLine (spec.line, self, 0, SPAC_Use)) ||
|
||||
((self->flags2 & MF2_PUSHWALL) && P_ActivateLine (spec.line, self, 0, SPAC_Push)))
|
||||
{
|
||||
good |= spec.line == self->BlockingLine ? 1 : 2;
|
||||
good |= spec.line == checkLine ? 1 : 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1563,8 +1565,9 @@ static int CheckMonsterUseSpecials(AActor *self)
|
|||
DEFINE_ACTION_FUNCTION_NATIVE(AActor, CheckMonsterUseSpecials, CheckMonsterUseSpecials)
|
||||
{
|
||||
PARAM_SELF_PROLOGUE(AActor);
|
||||
PARAM_POINTER(blocking, line_t);
|
||||
|
||||
ACTION_RETURN_INT(CheckMonsterUseSpecials(self));
|
||||
ACTION_RETURN_INT(CheckMonsterUseSpecials(self, blocking));
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(AActor, A_Wander, A_Wander)
|
||||
|
|
@ -1860,6 +1863,15 @@ DEFINE_ACTION_FUNCTION(AActor, PlayBounceSound)
|
|||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION(AActor, ReflectOffActor)
|
||||
{
|
||||
PARAM_SELF_PROLOGUE(AActor);
|
||||
PARAM_OBJECT(blocking, AActor);
|
||||
|
||||
ACTION_RETURN_BOOL(P_ReflectOffActor(self, blocking));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int isFrozen(AActor *self)
|
||||
{
|
||||
|
|
@ -2045,6 +2057,7 @@ DEFINE_FIELD(AActor, lastbump)
|
|||
DEFINE_FIELD(AActor, DesignatedTeam)
|
||||
DEFINE_FIELD(AActor, BlockingMobj)
|
||||
DEFINE_FIELD(AActor, BlockingLine)
|
||||
DEFINE_FIELD(AActor, MovementBlockingLine)
|
||||
DEFINE_FIELD(AActor, Blocking3DFloor)
|
||||
DEFINE_FIELD(AActor, BlockingCeiling)
|
||||
DEFINE_FIELD(AActor, BlockingFloor)
|
||||
|
|
@ -2108,6 +2121,8 @@ DEFINE_FIELD_NAMED(AActor, ViewAngles.Yaw, viewangle)
|
|||
DEFINE_FIELD_NAMED(AActor, ViewAngles.Pitch, viewpitch)
|
||||
DEFINE_FIELD_NAMED(AActor, ViewAngles.Roll, viewroll)
|
||||
DEFINE_FIELD(AActor, LightLevel)
|
||||
DEFINE_FIELD(AActor, ShadowAimFactor)
|
||||
DEFINE_FIELD(AActor, ShadowPenaltyFactor)
|
||||
|
||||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, thing);
|
||||
DEFINE_FIELD_X(FCheckPosition, FCheckPosition, pos);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue