mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-25 18:21:47 +00:00
- scriptified shootMortar.
This commit is contained in:
parent
48f7690756
commit
76b9314f63
3 changed files with 26 additions and 62 deletions
|
@ -714,30 +714,6 @@ static void shootrpg(DDukeActor *actor, int p, DVector3 pos, DAngle ang, int atw
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static void shootmortar(DDukeActor* actor, int p, const DVector3& pos, DAngle ang, int atwith)
|
||||
{
|
||||
auto sect = actor->sector();
|
||||
if (actor->spr.extra >= 0) actor->spr.shade = -96;
|
||||
|
||||
double x;
|
||||
auto plActor = ps[findplayer(actor, &x)].GetActor();
|
||||
x = (plActor->spr.pos.XY() - actor->spr.pos.XY()).Length();
|
||||
|
||||
double zvel = -x * 0.5;
|
||||
|
||||
if (zvel < -8)
|
||||
zvel = -4;
|
||||
double vel = x / 16.;
|
||||
|
||||
CreateActor(sect, pos.plusZ(-6) + ang.ToVector() * 4, atwith, -64, DVector2(0.5, 0.5), ang, vel, zvel, actor, 1);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void shoot_d(DDukeActor* actor, int atwith, PClass *cls)
|
||||
{
|
||||
int p;
|
||||
|
@ -812,11 +788,6 @@ void shoot_d(DDukeActor* actor, int atwith, PClass *cls)
|
|||
case DTILE_RPG:
|
||||
shootrpg(actor, p, spos, sang, atwith);
|
||||
break;
|
||||
|
||||
case DTILE_BOUNCEMINE:
|
||||
case DTILE_MORTER:
|
||||
shootmortar(actor, p, spos, sang, atwith);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -735,31 +735,6 @@ static void shootwhip(DDukeActor* actor, int p, DVector3 pos, DAngle ang, int at
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static void shootmortar(DDukeActor* actor, int p, const DVector3& pos, DAngle ang, int atwith)
|
||||
{
|
||||
auto sect = actor->sector();
|
||||
if (actor->spr.extra >= 0) actor->spr.shade = -96;
|
||||
|
||||
double x;
|
||||
auto plActor = ps[findplayer(actor, &x)].GetActor();
|
||||
x = (plActor->spr.pos.XY() - actor->spr.pos.XY()).Length();
|
||||
|
||||
double zvel = -x * 0.5;
|
||||
|
||||
if (zvel < -8)
|
||||
zvel = -4;
|
||||
double vel = x / 16.;
|
||||
double size = atwith == RTILE_CHEERBOMB ? 0.25 : 0.5;
|
||||
|
||||
CreateActor(sect, pos.plusZ(-6) + ang.ToVector() * 4, atwith, -64, DVector2(size, size), ang, vel, zvel, actor, 1);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void shoot_r(DDukeActor* actor, int atwith, PClass* cls)
|
||||
{
|
||||
int p;
|
||||
|
@ -832,12 +807,6 @@ void shoot_r(DDukeActor* actor, int atwith, PClass* cls)
|
|||
rrra_rpg2:
|
||||
shootrpg(actor, p, spos, sang, atwith);
|
||||
break;
|
||||
|
||||
case RTILE_CHEERBOMB:
|
||||
if (!isRRRA()) break;
|
||||
case RTILE_MORTER:
|
||||
shootmortar(actor, p, spos, sang, atwith);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -2,13 +2,37 @@ class DukeMortar : DukeActor
|
|||
{
|
||||
default
|
||||
{
|
||||
pic "MORTAR";
|
||||
pic "MORTER";
|
||||
DukeMortar.ceilingdist 3;
|
||||
DukeMortar.spawnscale 0.5;
|
||||
}
|
||||
|
||||
meta int ceilingdist;
|
||||
meta double spawnscale;
|
||||
property ceilingdist: ceilingdist;
|
||||
property spawnscale: spawnscale;
|
||||
|
||||
|
||||
override bool ShootThis(DukeActor actor, DukePlayer p, Vector3 pos, double ang) const
|
||||
{
|
||||
let sect = actor.sector;
|
||||
if (actor.extra >= 0) actor.shade = -96;
|
||||
|
||||
double x;
|
||||
DukePlayer p;
|
||||
[p, x] = actor.findplayer();
|
||||
let plActor = p.Actor;
|
||||
x = (plActor.pos.XY - actor.pos.XY).Length();
|
||||
|
||||
double zvel = -x * 0.5;
|
||||
|
||||
if (zvel < -8)
|
||||
zvel = -4;
|
||||
double vel = x / 16.;
|
||||
dlevel.SpawnActor(sect, pos.plusZ(-6) + ang.ToVector() * 4, GetClass(), -64, (self.spawnscale, self.spawnscale), ang, vel, zvel, actor, STAT_ACTOR);
|
||||
return true;
|
||||
}
|
||||
|
||||
override void Tick()
|
||||
{
|
||||
let spawned = self.spawn("DukeFrameEffect");
|
||||
|
@ -186,7 +210,6 @@ class RedneckMortar : DukeMortar
|
|||
{
|
||||
default
|
||||
{
|
||||
pic "MORTAR";
|
||||
DukeMortar.ceilingdist 16;
|
||||
}
|
||||
|
||||
|
@ -204,6 +227,7 @@ class RedneckCheerBomb : DukeMortar
|
|||
spriteset "CHEERBOMB", "CHEERBOMB1", "CHEERBOMB2", "CHEERBOMB3";
|
||||
DukeMortar.ceilingdist 16;
|
||||
+NOFLOORPAL;
|
||||
DukeMortar.spawnscale 0.25;
|
||||
}
|
||||
|
||||
override bool Animate(tspritetype t)
|
||||
|
|
Loading…
Reference in a new issue