mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 14:51:40 +00:00
- added an override for NOTAUTOAIMED flag when using P_AimLineAttack for informative CCMDs.
The flag is explicitly blocked for script use.
This commit is contained in:
parent
74866c28ce
commit
de4627a477
6 changed files with 6 additions and 2 deletions
|
@ -53,7 +53,7 @@ void C_PrintInfo(AActor *target, bool verbose)
|
||||||
void C_AimLine(FTranslatedLineTarget *t, bool nonshootable)
|
void C_AimLine(FTranslatedLineTarget *t, bool nonshootable)
|
||||||
{
|
{
|
||||||
P_AimLineAttack(players[consoleplayer].mo,players[consoleplayer].mo->Angles.Yaw, MISSILERANGE, t, 0.,
|
P_AimLineAttack(players[consoleplayer].mo,players[consoleplayer].mo->Angles.Yaw, MISSILERANGE, t, 0.,
|
||||||
(nonshootable) ? ALF_CHECKNONSHOOTABLE|ALF_FORCENOSMART : 0);
|
(nonshootable) ? ALF_CHECKNONSHOOTABLE|ALF_FORCENOSMART|ALF_IGNORENOAUTOAIM : ALF_IGNORENOAUTOAIM);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_PrintInv(AActor *target)
|
void C_PrintInv(AActor *target)
|
||||||
|
|
|
@ -310,6 +310,7 @@ enum // P_AimLineAttack flags
|
||||||
ALF_NOFRIENDS = 16,
|
ALF_NOFRIENDS = 16,
|
||||||
ALF_PORTALRESTRICT = 32, // only work through portals with a global offset (to be used for stuff that cannot remember the calculated FTranslatedLineTarget info)
|
ALF_PORTALRESTRICT = 32, // only work through portals with a global offset (to be used for stuff that cannot remember the calculated FTranslatedLineTarget info)
|
||||||
ALF_NOWEAPONCHECK = 64, // ignore NOAUTOAIM flag on a player's weapon.
|
ALF_NOWEAPONCHECK = 64, // ignore NOAUTOAIM flag on a player's weapon.
|
||||||
|
ALF_IGNORENOAUTOAIM = 128, // for informative stuff like 'linetarget' CCMD.
|
||||||
};
|
};
|
||||||
|
|
||||||
enum // P_LineAttack flags
|
enum // P_LineAttack flags
|
||||||
|
|
|
@ -4192,7 +4192,7 @@ struct aim_t
|
||||||
dist = attackrange * in->frac;
|
dist = attackrange * in->frac;
|
||||||
|
|
||||||
// Don't autoaim certain special actors
|
// Don't autoaim certain special actors
|
||||||
if (!cl_doautoaim && th->flags6 & MF6_NOTAUTOAIMED)
|
if (!cl_doautoaim && !(flags & ALF_IGNORENOAUTOAIM) && th->flags6 & MF6_NOTAUTOAIMED)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6846,6 +6846,7 @@ AActor *P_SpawnPlayerMissile (AActor *source, double x, double y, double z,
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
aimflags &= ~ALF_IGNORENOAUTOAIM; // just to be safe.
|
||||||
|
|
||||||
static const double angdiff[3] = { -5.625, 5.625, 0 };
|
static const double angdiff[3] = { -5.625, 5.625, 0 };
|
||||||
DAngle an = angle;
|
DAngle an = angle;
|
||||||
|
|
|
@ -1198,6 +1198,7 @@ DAngle P_BulletSlope (AActor *mo, FTranslatedLineTarget *pLineTarget, int aimfla
|
||||||
DAngle pitch;
|
DAngle pitch;
|
||||||
FTranslatedLineTarget scratch;
|
FTranslatedLineTarget scratch;
|
||||||
|
|
||||||
|
aimflags &= ~ALF_IGNORENOAUTOAIM; // just to be safe.
|
||||||
if (pLineTarget == NULL) pLineTarget = &scratch;
|
if (pLineTarget == NULL) pLineTarget = &scratch;
|
||||||
// see which target is to be aimed at
|
// see which target is to be aimed at
|
||||||
i = 2;
|
i = 2;
|
||||||
|
|
|
@ -1150,6 +1150,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, CheckMove, CheckMove)
|
||||||
|
|
||||||
static double AimLineAttack(AActor *self, double angle, double distance, FTranslatedLineTarget *pLineTarget, double vrange, int flags, AActor *target, AActor *friender)
|
static double AimLineAttack(AActor *self, double angle, double distance, FTranslatedLineTarget *pLineTarget, double vrange, int flags, AActor *target, AActor *friender)
|
||||||
{
|
{
|
||||||
|
flags &= ~ALF_IGNORENOAUTOAIM; // just to be safe. This flag is not supposed to be accesible to scripting.
|
||||||
return P_AimLineAttack(self, angle, distance, pLineTarget, vrange, flags, target, friender).Degrees;
|
return P_AimLineAttack(self, angle, distance, pLineTarget, vrange, flags, target, friender).Degrees;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue