mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-07 09:01:57 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
cbf353ca52
5 changed files with 76 additions and 0 deletions
|
@ -2306,6 +2306,12 @@ void FBehavior::LoadScriptsDirectory ()
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [EP] Clang 3.5.0 optimizer miscompiles this function and causes random
|
||||||
|
// crashes in the program. I hope that Clang 3.5.x will fix this.
|
||||||
|
#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ >= 5
|
||||||
|
asm("" : "+g" (NumScripts));
|
||||||
|
#endif
|
||||||
for (i = 0; i < NumScripts; ++i)
|
for (i = 0; i < NumScripts; ++i)
|
||||||
{
|
{
|
||||||
Scripts[i].Flags = 0;
|
Scripts[i].Flags = 0;
|
||||||
|
@ -4361,6 +4367,7 @@ enum EACSFunctions
|
||||||
ACSF_ChangeActorAngle,
|
ACSF_ChangeActorAngle,
|
||||||
ACSF_ChangeActorPitch, // 80
|
ACSF_ChangeActorPitch, // 80
|
||||||
ACSF_GetArmorInfo,
|
ACSF_GetArmorInfo,
|
||||||
|
ACSF_DropInventory,
|
||||||
|
|
||||||
/* Zandronum's - these must be skipped when we reach 99!
|
/* Zandronum's - these must be skipped when we reach 99!
|
||||||
-100:ResetMap(0),
|
-100:ResetMap(0),
|
||||||
|
@ -5485,6 +5492,42 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ACSF_DropInventory:
|
||||||
|
{
|
||||||
|
const char *type = FBehavior::StaticLookupString(args[1]);
|
||||||
|
AInventory *inv;
|
||||||
|
|
||||||
|
if (type != NULL)
|
||||||
|
{
|
||||||
|
if (args[0] == 0)
|
||||||
|
{
|
||||||
|
if (activator != NULL)
|
||||||
|
{
|
||||||
|
inv = activator->FindInventory(type);
|
||||||
|
if (inv)
|
||||||
|
{
|
||||||
|
activator->DropInventory(inv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FActorIterator it(args[0]);
|
||||||
|
AActor *actor;
|
||||||
|
|
||||||
|
while ((actor = it.Next()) != NULL)
|
||||||
|
{
|
||||||
|
inv = actor->FindInventory(type);
|
||||||
|
if (inv)
|
||||||
|
{
|
||||||
|
actor->DropInventory(inv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case ACSF_CheckFlag:
|
case ACSF_CheckFlag:
|
||||||
{
|
{
|
||||||
AActor *actor = SingleActorFromTID(args[0], activator);
|
AActor *actor = SingleActorFromTID(args[0], activator);
|
||||||
|
|
|
@ -1755,6 +1755,8 @@ enum SIX_Flags
|
||||||
SIXF_TRANSFERSPECIAL = 1 << 15,
|
SIXF_TRANSFERSPECIAL = 1 << 15,
|
||||||
SIXF_CLEARCALLERSPECIAL = 1 << 16,
|
SIXF_CLEARCALLERSPECIAL = 1 << 16,
|
||||||
SIXF_TRANSFERSTENCILCOL = 1 << 17,
|
SIXF_TRANSFERSTENCILCOL = 1 << 17,
|
||||||
|
SIXF_TRANSFERALPHA = 1 << 18,
|
||||||
|
SIXF_TRANSFERRENDERSTYLE = 1 << 19,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
||||||
|
@ -1843,6 +1845,10 @@ static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
||||||
// If this is a missile or something else set the target to the originator
|
// If this is a missile or something else set the target to the originator
|
||||||
mo->target = originator ? originator : self;
|
mo->target = originator ? originator : self;
|
||||||
}
|
}
|
||||||
|
if (flags & SIXF_SETMASTER)
|
||||||
|
{
|
||||||
|
mo->master = originator;
|
||||||
|
}
|
||||||
if (flags & SIXF_TRANSFERSCALE)
|
if (flags & SIXF_TRANSFERSCALE)
|
||||||
{
|
{
|
||||||
mo->scaleX = self->scaleX;
|
mo->scaleX = self->scaleX;
|
||||||
|
@ -1871,6 +1877,14 @@ static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
||||||
{
|
{
|
||||||
mo->fillcolor = self->fillcolor;
|
mo->fillcolor = self->fillcolor;
|
||||||
}
|
}
|
||||||
|
if (flags & SIXF_TRANSFERALPHA)
|
||||||
|
{
|
||||||
|
mo->alpha = self->alpha;
|
||||||
|
}
|
||||||
|
if (flags & SIXF_TRANSFERRENDERSTYLE)
|
||||||
|
{
|
||||||
|
mo->RenderStyle = self->RenderStyle;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4966,3 +4980,17 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DropItem)
|
||||||
|
|
||||||
P_DropItem(self, spawntype, amount, chance);
|
P_DropItem(self, spawntype, amount, chance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// A_SetSpeed
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpeed)
|
||||||
|
{
|
||||||
|
ACTION_PARAM_START(1);
|
||||||
|
ACTION_PARAM_FIXED(speed, 0);
|
||||||
|
|
||||||
|
self->Speed = speed;
|
||||||
|
}
|
||||||
|
|
|
@ -88,6 +88,7 @@ DEFINE_MEMBER_VARIABLE(height, AActor)
|
||||||
DEFINE_MEMBER_VARIABLE(radius, AActor)
|
DEFINE_MEMBER_VARIABLE(radius, AActor)
|
||||||
DEFINE_MEMBER_VARIABLE(reactiontime, AActor)
|
DEFINE_MEMBER_VARIABLE(reactiontime, AActor)
|
||||||
DEFINE_MEMBER_VARIABLE(meleerange, AActor)
|
DEFINE_MEMBER_VARIABLE(meleerange, AActor)
|
||||||
|
DEFINE_MEMBER_VARIABLE(Speed, AActor)
|
||||||
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
|
@ -62,6 +62,7 @@ ACTOR Actor native //: Thinker
|
||||||
native fixed_t radius;
|
native fixed_t radius;
|
||||||
native int reactiontime;
|
native int reactiontime;
|
||||||
native fixed_t meleerange;
|
native fixed_t meleerange;
|
||||||
|
native fixed_t speed;
|
||||||
|
|
||||||
// Meh, MBF redundant functions. Only for DeHackEd support.
|
// Meh, MBF redundant functions. Only for DeHackEd support.
|
||||||
action native A_Turn(float angle = 0);
|
action native A_Turn(float angle = 0);
|
||||||
|
@ -302,6 +303,7 @@ ACTOR Actor native //: Thinker
|
||||||
action native A_SetTics(int tics);
|
action native A_SetTics(int tics);
|
||||||
action native A_SetDamageType(name damagetype);
|
action native A_SetDamageType(name damagetype);
|
||||||
action native A_DropItem(class<Actor> item, int dropamount = -1, int chance = 256);
|
action native A_DropItem(class<Actor> item, int dropamount = -1, int chance = 256);
|
||||||
|
action native A_SetSpeed(float speed);
|
||||||
|
|
||||||
action native A_CheckSightOrRange(float distance, state label);
|
action native A_CheckSightOrRange(float distance, state label);
|
||||||
action native A_CheckRange(float distance, state label);
|
action native A_CheckRange(float distance, state label);
|
||||||
|
|
|
@ -65,6 +65,8 @@ const int SXF_TRANSFERSCALE = 16384;
|
||||||
const int SXF_TRANSFERSPECIAL = 32768;
|
const int SXF_TRANSFERSPECIAL = 32768;
|
||||||
const int SXF_CLEARCALLERSPECIAL = 65536;
|
const int SXF_CLEARCALLERSPECIAL = 65536;
|
||||||
const int SXF_TRANSFERSTENCILCOL = 131072;
|
const int SXF_TRANSFERSTENCILCOL = 131072;
|
||||||
|
const int SXF_TRANSFERALPHA = 262144;
|
||||||
|
const int SXF_TRANSFERRENDERSTYLE = 524288;
|
||||||
|
|
||||||
// Flags for A_Chase
|
// Flags for A_Chase
|
||||||
const int CHF_FASTCHASE = 1;
|
const int CHF_FASTCHASE = 1;
|
||||||
|
|
Loading…
Reference in a new issue