mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 07:12:16 +00:00
- extended parameter list of A_BFGSpray.
This commit is contained in:
parent
e025f40902
commit
68c481945a
2 changed files with 23 additions and 8 deletions
|
@ -546,6 +546,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireBFG)
|
||||||
P_SpawnPlayerMissile (self, 0, 0, 0, PClass::FindClass("BFGBall"), self->angle, NULL, NULL, !!(dmflags2 & DF2_NO_FREEAIMBFG));
|
P_SpawnPlayerMissile (self, 0, 0, 0, PClass::FindClass("BFGBall"), self->angle, NULL, NULL, !!(dmflags2 & DF2_NO_FREEAIMBFG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// A_BFGSpray
|
// A_BFGSpray
|
||||||
// Spawn a BFG explosion on every monster in view
|
// Spawn a BFG explosion on every monster in view
|
||||||
|
@ -559,14 +560,21 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray)
|
||||||
AActor *thingToHit;
|
AActor *thingToHit;
|
||||||
AActor *linetarget;
|
AActor *linetarget;
|
||||||
|
|
||||||
ACTION_PARAM_START(3);
|
ACTION_PARAM_START(7);
|
||||||
ACTION_PARAM_CLASS(spraytype, 0);
|
ACTION_PARAM_CLASS(spraytype, 0);
|
||||||
ACTION_PARAM_INT(numrays, 1);
|
ACTION_PARAM_INT(numrays, 1);
|
||||||
ACTION_PARAM_INT(damagecnt, 2);
|
ACTION_PARAM_INT(damagecnt, 2);
|
||||||
|
ACTION_PARAM_ANGLE(angle, 3);
|
||||||
|
ACTION_PARAM_FIXED(distance, 4);
|
||||||
|
ACTION_PARAM_ANGLE(vrange, 5);
|
||||||
|
ACTION_PARAM_INT(defdamage, 6);
|
||||||
|
|
||||||
if (spraytype == NULL) spraytype = PClass::FindClass("BFGExtra");
|
if (spraytype == NULL) spraytype = PClass::FindClass("BFGExtra");
|
||||||
if (numrays <= 0) numrays = 40;
|
if (numrays <= 0) numrays = 40;
|
||||||
if (damagecnt <= 0) damagecnt = 15;
|
if (damagecnt <= 0) damagecnt = 15;
|
||||||
|
if (angle == 0) angle = ANG90;
|
||||||
|
if (distance <= 0) distance = 16 * 64 * FRACUNIT;
|
||||||
|
if (vrange == 0) vrange = ANGLE_1 * 32;
|
||||||
|
|
||||||
// [RH] Don't crash if no target
|
// [RH] Don't crash if no target
|
||||||
if (!self->target)
|
if (!self->target)
|
||||||
|
@ -575,10 +583,10 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray)
|
||||||
// offset angles from its attack angle
|
// offset angles from its attack angle
|
||||||
for (i = 0; i < numrays; i++)
|
for (i = 0; i < numrays; i++)
|
||||||
{
|
{
|
||||||
an = self->angle - ANG90/2 + ANG90/numrays*i;
|
an = self->angle - angle/2 + angle/numrays*i;
|
||||||
|
|
||||||
// self->target is the originator (player) of the missile
|
// self->target is the originator (player) of the missile
|
||||||
P_AimLineAttack (self->target, an, 16*64*FRACUNIT, &linetarget, ANGLE_1*32);
|
P_AimLineAttack (self->target, an, distance, &linetarget, vrange);
|
||||||
|
|
||||||
if (!linetarget)
|
if (!linetarget)
|
||||||
continue;
|
continue;
|
||||||
|
@ -589,10 +597,17 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray)
|
||||||
if (spray && (spray->flags5 & MF5_PUFFGETSOWNER))
|
if (spray && (spray->flags5 & MF5_PUFFGETSOWNER))
|
||||||
spray->target = self->target;
|
spray->target = self->target;
|
||||||
|
|
||||||
|
if (defdamage == 0)
|
||||||
damage = 0;
|
{
|
||||||
for (j = 0; j < damagecnt; ++j)
|
damage = 0;
|
||||||
damage += (pr_bfgspray() & 7) + 1;
|
for (j = 0; j < damagecnt; ++j)
|
||||||
|
damage += (pr_bfgspray() & 7) + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if this is used, damagecnt will be ignored
|
||||||
|
damage = defdamage;
|
||||||
|
}
|
||||||
|
|
||||||
thingToHit = linetarget;
|
thingToHit = linetarget;
|
||||||
int newdam = P_DamageMobj (thingToHit, self->target, self->target, damage, spray != NULL? FName(spray->DamageType) : FName(NAME_BFGSplash),
|
int newdam = P_DamageMobj (thingToHit, self->target, self->target, damage, spray != NULL? FName(spray->DamageType) : FName(NAME_BFGSplash),
|
||||||
|
|
|
@ -70,7 +70,7 @@ ACTOR Actor native //: Thinker
|
||||||
// End of MBF redundant functions.
|
// End of MBF redundant functions.
|
||||||
|
|
||||||
action native A_MonsterRail();
|
action native A_MonsterRail();
|
||||||
action native A_BFGSpray(class<Actor> spraytype = "BFGExtra", int numrays = 40, int damagecount = 15);
|
action native A_BFGSpray(class<Actor> spraytype = "BFGExtra", int numrays = 40, int damagecount = 15, float angle = 90, float distance = 16*64, float vrange = 32, int damage = 0);
|
||||||
action native A_Pain();
|
action native A_Pain();
|
||||||
action native A_NoBlocking();
|
action native A_NoBlocking();
|
||||||
action native A_XScream();
|
action native A_XScream();
|
||||||
|
|
Loading…
Reference in a new issue