Merge branch 'master' into scripting
Conflicts: src/actor.h src/g_hexen/a_clericstaff.cpp src/p_enemy.cpp src/p_interaction.cpp src/p_local.h src/p_mobj.cpp src/thingdef/thingdef_codeptr.cpp
This commit is contained in:
commit
bf747075e8
179 changed files with 10280 additions and 4787 deletions
|
|
@ -796,7 +796,7 @@ static int DoJumpIfCloser(AActor *target, VM_ARGS)
|
|||
// No target - no jump
|
||||
if (!target)
|
||||
return numret;
|
||||
if (P_AproxDistance(self->x-target->x, self->y-target->y) < dist &&
|
||||
if (self->AproxDistance(target) < dist &&
|
||||
(noz ||
|
||||
((self->z > target->z && self->z - (target->z + target->height) < dist) ||
|
||||
(self->z <= target->z && target->z - (self->z + self->height) < dist))))
|
||||
|
|
@ -1658,7 +1658,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomPunch)
|
|||
if (!(flags & CPF_NOTURN))
|
||||
{
|
||||
// turn to face target
|
||||
self->angle = R_PointToAngle2 (self->x, self->y, linetarget->x, linetarget->y);
|
||||
self->angle = self->AngleTo(linetarget);
|
||||
}
|
||||
|
||||
if (flags & CPF_PULLIN) self->flags |= MF_JUSTATTACKED;
|
||||
|
|
@ -1786,10 +1786,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun)
|
|||
|
||||
if (aim)
|
||||
{
|
||||
self->angle = R_PointToAngle2 (self->x,
|
||||
self->y,
|
||||
self->target->x,
|
||||
self->target->y);
|
||||
self->angle = self->AngleTo(self->target);
|
||||
}
|
||||
self->pitch = P_AimLineAttack (self, self->angle, MISSILERANGE, &linetarget, ANGLE_1*60, 0, aim ? self->target : NULL);
|
||||
if (linetarget == NULL && aim)
|
||||
|
|
@ -1803,9 +1800,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun)
|
|||
// Let the aim trail behind the player
|
||||
if (aim)
|
||||
{
|
||||
saved_angle = self->angle = R_PointToAngle2 (self->x, self->y,
|
||||
self->target->x - self->target->velx * 3,
|
||||
self->target->y - self->target->vely * 3);
|
||||
saved_angle = self->angle = self->AngleTo(self->target, -self->target->velx * 3, -self->target->vely * 3);
|
||||
|
||||
if (aim == CRF_AIMDIRECT)
|
||||
{
|
||||
|
|
@ -1814,9 +1809,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun)
|
|||
self->x += spawnofs_xy * finecosine[self->angle];
|
||||
self->y += spawnofs_xy * finesine[self->angle];
|
||||
spawnofs_xy = 0;
|
||||
self->angle = R_PointToAngle2 (self->x, self->y,
|
||||
self->target->x - self->target->velx * 3,
|
||||
self->target->y - self->target->vely * 3);
|
||||
self->angle = self->AngleTo(self->target,- self->target->velx * 3, -self->target->vely * 3);
|
||||
}
|
||||
|
||||
if (self->target->flags & MF_SHADOW)
|
||||
|
|
@ -2718,7 +2711,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeIn)
|
|||
}
|
||||
if (flags & FTF_REMOVE)
|
||||
{
|
||||
self->Destroy();
|
||||
P_RemoveThing(self);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -2751,7 +2744,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeOut)
|
|||
}
|
||||
if (flags & FTF_REMOVE)
|
||||
{
|
||||
self->Destroy();
|
||||
P_RemoveThing(self);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -2798,7 +2791,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FadeTo)
|
|||
}
|
||||
if (self->alpha == target && (flags & FTF_REMOVE))
|
||||
{
|
||||
self->Destroy();
|
||||
P_RemoveThing(self);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -3329,18 +3322,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Respawn)
|
|||
if (flags & RSF_TELEFRAG)
|
||||
{
|
||||
// [KS] DIE DIE DIE DIE erm *ahem* =)
|
||||
oktorespawn = P_TeleportMove(self, self->x, self->y, self->z, true);
|
||||
if (oktorespawn)
|
||||
{ // Need to do this over again, since P_TeleportMove() will redo
|
||||
// it with the proper point-on-side calculation.
|
||||
self->UnlinkFromWorld();
|
||||
self->LinkToWorld(true);
|
||||
sector_t *sec = self->Sector;
|
||||
self->dropoffz =
|
||||
self->floorz = sec->floorplane.ZatPoint(self->x, self->y);
|
||||
self->ceilingz = sec->ceilingplane.ZatPoint(self->x, self->y);
|
||||
P_FindFloorCeiling(self, FFCF_ONLYSPAWNPOS);
|
||||
}
|
||||
oktorespawn = P_TeleportMove(self, self->x, self->y, self->z, true, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -3644,8 +3626,8 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF)
|
|||
|
||||
if (target)
|
||||
{
|
||||
FVector2 xyvec(target->x - x1, target->y - y1);
|
||||
fixed_t distance = P_AproxDistance((fixed_t)xyvec.Length(), target->z - z1);
|
||||
fixed_t xydist = self->Distance2D(target);
|
||||
fixed_t distance = P_AproxDistance(xydist, target->z - z1);
|
||||
|
||||
if (range && !(flags & CLOFF_CHECKPARTIAL))
|
||||
{
|
||||
|
|
@ -3660,7 +3642,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF)
|
|||
{
|
||||
ang = self->angle;
|
||||
}
|
||||
else ang = R_PointToAngle2 (x1, y1, target->x, target->y);
|
||||
else ang = self->AngleTo (target);
|
||||
|
||||
angle += ang;
|
||||
|
||||
|
|
@ -3675,11 +3657,11 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF)
|
|||
}
|
||||
else if (flags & CLOFF_AIM_VERT_NOOFFSET)
|
||||
{
|
||||
pitch += R_PointToAngle2 (0,0, (fixed_t)xyvec.Length(), target->z - z1 + offsetheight + target->height / 2);
|
||||
pitch += R_PointToAngle2 (0,0, xydist, target->z - z1 + offsetheight + target->height / 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
pitch += R_PointToAngle2 (0,0, (fixed_t)xyvec.Length(), target->z - z1 + target->height / 2);
|
||||
pitch += R_PointToAngle2 (0,0, xydist, target->z - z1 + target->height / 2);
|
||||
}
|
||||
}
|
||||
else if (flags & CLOFF_ALLOWNULL)
|
||||
|
|
@ -3858,8 +3840,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfTargetInLOS)
|
|||
if ((flags & JLOSF_ALLYNOJUMP) && self->IsFriend(target))
|
||||
return numret;
|
||||
|
||||
fixed_t distance = P_AproxDistance(target->x - self->x, target->y - self->y);
|
||||
distance = P_AproxDistance(distance, target->z - self->z);
|
||||
fixed_t distance = self->AproxDistance3D(target);
|
||||
|
||||
if (dist_max && (distance > dist_max))
|
||||
return numret;
|
||||
|
|
@ -3890,11 +3871,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfTargetInLOS)
|
|||
|
||||
if (fov && (fov < ANGLE_MAX))
|
||||
{
|
||||
an = R_PointToAngle2 (viewport->x,
|
||||
viewport->y,
|
||||
target->x,
|
||||
target->y)
|
||||
- viewport->angle;
|
||||
an = viewport->AngleTo(target) - viewport->angle;
|
||||
|
||||
if (an > (fov / 2) && an < (ANGLE_MAX - (fov / 2)))
|
||||
{
|
||||
|
|
@ -3955,8 +3932,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfInTargetLOS)
|
|||
return numret;
|
||||
}
|
||||
|
||||
fixed_t distance = P_AproxDistance(target->x - self->x, target->y - self->y);
|
||||
distance = P_AproxDistance(distance, target->z - self->z);
|
||||
fixed_t distance = self->AproxDistance3D(target);
|
||||
|
||||
if (dist_max && (distance > dist_max))
|
||||
{
|
||||
|
|
@ -3979,11 +3955,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_JumpIfInTargetLOS)
|
|||
|
||||
if (fov && (fov < ANGLE_MAX))
|
||||
{
|
||||
an = R_PointToAngle2 (target->x,
|
||||
target->y,
|
||||
self->x,
|
||||
self->y)
|
||||
- target->angle;
|
||||
an = target->AngleTo(self) - target->angle;
|
||||
|
||||
if (an > (fov / 2) && an < (ANGLE_MAX - (fov / 2)))
|
||||
{
|
||||
|
|
@ -4947,7 +4919,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack)
|
|||
A_FaceTarget (self);
|
||||
|
||||
// Target can dodge if it can see enemy
|
||||
angle_t angle = R_PointToAngle2(self->target->x, self->target->y, self->x, self->y) - self->target->angle;
|
||||
angle_t angle = self->target->AngleTo(self) - self->target->angle;
|
||||
angle >>= 24;
|
||||
bool dodge = (P_CheckSight(self->target, self) && (angle>226 || angle<30));
|
||||
|
||||
|
|
@ -4986,7 +4958,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack)
|
|||
dx = self->target->x;
|
||||
dy = self->target->y;
|
||||
dz = self->target->z + (self->target->height>>1);
|
||||
angle = R_PointToAngle2(dx, dy, self->x, self->y);
|
||||
angle = self->target->AngleTo(self);
|
||||
|
||||
dx += FixedMul(self->target->radius, finecosine[angle>>ANGLETOFINESHIFT]);
|
||||
dy += FixedMul(self->target->radius, finesine[angle>>ANGLETOFINESHIFT]);
|
||||
|
|
@ -5021,7 +4993,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_WolfAttack)
|
|||
if (spawnblood)
|
||||
{
|
||||
P_SpawnBlood(dx, dy, dz, angle, newdam > 0 ? newdam : damage, self->target);
|
||||
P_TraceBleed(newdam > 0 ? newdam : damage, self->target, R_PointToAngle2(self->x, self->y, dx, dy), 0);
|
||||
P_TraceBleed(newdam > 0 ? newdam : damage, self->target, self->AngleTo(dx, dy, self->target), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6320,7 +6292,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckProximity)
|
|||
continue;
|
||||
|
||||
//Make sure it's in range and respect the desire for Z or not.
|
||||
if (P_AproxDistance(ref->x - mo->x, ref->y - mo->y) < distance &&
|
||||
if (ref->AproxDistance(mo) < distance &&
|
||||
((flags & CPXF_NOZ) ||
|
||||
((ref->z > mo->z && ref->z - (mo->z + mo->height) < distance) ||
|
||||
(ref->z <= mo->z && mo->z - (ref->z + ref->height) < distance))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue