mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 04:24:39 +00:00
- scriptified the native parts of TRANSPORTERSTAR and TRANSPORTERBEAM
This commit is contained in:
parent
07ea5d06ae
commit
e0bd038391
8 changed files with 78 additions and 49 deletions
|
@ -176,7 +176,6 @@ void addspritetodelete(int spnum=0);
|
|||
void checkavailinven(player_struct* p);
|
||||
bool initspriteforspawn(DDukeActor* spn);
|
||||
bool commonEnemySetup(DDukeActor* self, DDukeActor* owner);
|
||||
void spawntransporter(DDukeActor* actj, DDukeActor* acti, bool beam);
|
||||
int spawnbloodpoolpart1(DDukeActor* acti);
|
||||
void initshell(DDukeActor* actj, DDukeActor* acti, bool isshell);
|
||||
void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors);
|
||||
|
|
|
@ -340,44 +340,6 @@ bool commonEnemySetup(DDukeActor* self, DDukeActor* owner)
|
|||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void spawntransporter(DDukeActor *actj, DDukeActor* act, bool beam)
|
||||
{
|
||||
if (actj == nullptr) return;
|
||||
if (beam)
|
||||
{
|
||||
act->spr.scale = DVector2(0.484375, REPEAT_SCALE);
|
||||
act->spr.pos.Z = actj->sector()->floorz - gs.playerheight;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (actj->spr.statnum == 4)
|
||||
{
|
||||
act->spr.scale = DVector2(0.125, 0.125);
|
||||
}
|
||||
else
|
||||
{
|
||||
act->spr.scale = DVector2(0.75, 1);
|
||||
if (actj->spr.statnum == 10 || badguy(actj))
|
||||
act->spr.pos.Z -= 32;
|
||||
}
|
||||
}
|
||||
|
||||
act->spr.shade = -127;
|
||||
act->spr.cstat = CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_TRANSLUCENT;
|
||||
act->spr.Angles.Yaw = actj->spr.Angles.Yaw;
|
||||
|
||||
act->vel.X = 8;
|
||||
ChangeActorStat(act, STAT_MISC);
|
||||
ssp(act, CLIPMASK0);
|
||||
SetActor(act, act->spr.pos);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
|
|
@ -156,11 +156,6 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.scale = DVector2(0, 0);
|
||||
ChangeActorStat(act, STAT_MISC);
|
||||
break;
|
||||
case DTILE_TRANSPORTERSTAR:
|
||||
case DTILE_TRANSPORTERBEAM:
|
||||
spawntransporter(actj, act, act->spr.picnum == DTILE_TRANSPORTERBEAM);
|
||||
break;
|
||||
|
||||
case DTILE_BLOOD:
|
||||
act->spr.scale = DVector2(0.25, 0.25);
|
||||
act->spr.pos.Z -= 26;
|
||||
|
|
|
@ -80,11 +80,6 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
pistonsound = 1;
|
||||
break;
|
||||
|
||||
case RTILE_TRANSPORTERSTAR:
|
||||
case RTILE_TRANSPORTERBEAM:
|
||||
spawntransporter(actj, act, act->spr.picnum == RTILE_TRANSPORTERBEAM);
|
||||
break;
|
||||
|
||||
case RTILE_BLOOD:
|
||||
act->spr.scale = DVector2(0.0625, 0.0625);
|
||||
act->spr.pos.Z -= 26;
|
||||
|
|
|
@ -237,4 +237,7 @@ spawnclasses
|
|||
|
||||
// the following actors use CON.
|
||||
1671 = DukeForceRipple
|
||||
1630 = DukeTransporterStar
|
||||
1261 = DukeTransporterBeam
|
||||
|
||||
}
|
||||
|
|
|
@ -270,6 +270,11 @@ spawnclasses
|
|||
3171 = DukeActor, "*RRTILE3171"
|
||||
3216 = DukeActor, "*RRTILE3216"
|
||||
3720 = DukeActor, "*RRTILE3720"
|
||||
|
||||
// the following actors use CON
|
||||
|
||||
1398 = DukeTransporterStar
|
||||
1338 = DukeTransporterBeam
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,8 @@ version "4.10"
|
|||
#include "zscript/games/duke/actors/bloodpool.zs"
|
||||
#include "zscript/games/duke/actors/toilet.zs"
|
||||
|
||||
#include "zscript/games/duke/actors/transporter.zs"
|
||||
|
||||
#include "zscript/games/duke/actors/flamethrowerflame.zs"
|
||||
#include "zscript/games/duke/actors/firefly.zs"
|
||||
|
||||
|
|
68
wadsrc/static/zscript/games/duke/actors/transporter.zs
Normal file
68
wadsrc/static/zscript/games/duke/actors/transporter.zs
Normal file
|
@ -0,0 +1,68 @@
|
|||
|
||||
class DukeTransporterStar : DukeActor
|
||||
{
|
||||
default
|
||||
{
|
||||
pic "TRANSPORTERSTAR";
|
||||
}
|
||||
|
||||
override void Initialize()
|
||||
{
|
||||
let owner = self.ownerActor;
|
||||
if (owner == nullptr || owner == self)
|
||||
{
|
||||
scale = (0, 0);
|
||||
return;
|
||||
}
|
||||
if (owner.statnum == STAT_PROJECTILE)
|
||||
{
|
||||
self.scale = (0.125, 0.125);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.scale = (0.75, 1);
|
||||
if (owner.statnum == STAT_PLAYER || owner.badguy())
|
||||
self.pos.Z -= 32;
|
||||
}
|
||||
|
||||
self.cstat = CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_TRANSLUCENT;
|
||||
self.angle = owner.angle;
|
||||
|
||||
self.vel.X = 8;
|
||||
self.DoMove(CLIPMASK0);
|
||||
self.SetPosition(self.pos);
|
||||
self.ChangeStat(STAT_MISC);
|
||||
self.shade = -127;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class DukeTransporterBeam : DukeActor
|
||||
{
|
||||
default
|
||||
{
|
||||
pic "TRANSPORTERBEAM";
|
||||
}
|
||||
|
||||
override void Initialize()
|
||||
{
|
||||
let owner = self.ownerActor;
|
||||
if (owner == nullptr || owner == self)
|
||||
{
|
||||
scale = (0, 0);
|
||||
return;
|
||||
}
|
||||
self.scale = (0.484375, REPEAT_SCALE);
|
||||
self.pos.Z = owner.sector.floorz - gs.playerheight;
|
||||
|
||||
self.cstat = CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_TRANSLUCENT;
|
||||
self.angle = owner.angle;
|
||||
|
||||
self.vel.X = 8;
|
||||
self.DoMove(CLIPMASK0);
|
||||
self.SetPosition(self.pos);
|
||||
self.ChangeStat(STAT_MISC);
|
||||
self.shade = -127;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in a new issue