Begin VisualThinker migration. Some effects still pending.
This commit is contained in:
parent
af8f8fc6ee
commit
77b1ad89a9
28 changed files with 577 additions and 412 deletions
|
|
@ -177,7 +177,7 @@ Class HeavyMahSheenGun : SWWMWeapon
|
|||
for ( int i=5; i<st.Results.Distance; i+=10 )
|
||||
{
|
||||
if ( !Random[Boolet](0,2) ) continue;
|
||||
let b = Actor.Spawn("SWWMBubble",level.Vec3Offset(origin,dir*i));
|
||||
let b = SWWMAnimSprite.SpawnAt("SWWMHalfBubble",level.Vec3Offset(origin,dir*i));
|
||||
b.Scale *= FRandom[Boolet](.1,.3);
|
||||
}
|
||||
foreach ( hit:st.HitList )
|
||||
|
|
|
|||
|
|
@ -608,7 +608,7 @@ Class MisterRifle : SWWMWeapon
|
|||
Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s);
|
||||
FLineTraceData d;
|
||||
LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
|
||||
SWWMBulletTrail.DoTrail(self,origin,dir,10000,2);
|
||||
SWWMBulletTrail.DoTrail(self,origin,dir,10000,4);
|
||||
if ( d.HitType == TRACE_HitActor )
|
||||
{
|
||||
if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT )
|
||||
|
|
@ -956,11 +956,11 @@ Class MisterRifle : SWWMWeapon
|
|||
if ( !Random[ExploS](0,1) ) continue;
|
||||
Vector3 ofs = level.Vec3Offset(start,tdir*d);
|
||||
if ( !level.IsPointInLevel(ofs) ) continue;
|
||||
let b = Spawn("SWWMHalfSmoke",ofs);
|
||||
let b = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",ofs);
|
||||
b.Scale *= FRandom[ExploS](.7,1.4);
|
||||
b.alpha *= .2;
|
||||
b.special1 = Random[ExploS](1,3);
|
||||
b.SetShade(Color(2,3,4)*Random[ExploS](48,63));
|
||||
b.framestep = Random[ExploS](2,4);
|
||||
b.scolor = Color(2,3,4)*Random[ExploS](48,63);
|
||||
}
|
||||
for ( int i=1; i<mrt.WallPenetrateList.Size(); i+=2 )
|
||||
{
|
||||
|
|
@ -991,11 +991,11 @@ Class MisterRifle : SWWMWeapon
|
|||
if ( !Random[ExploS](0,1) ) continue;
|
||||
Vector3 ofs = level.Vec3Offset(start,tdir*d);
|
||||
if ( !level.IsPointInLevel(ofs) ) continue;
|
||||
let b = Spawn("SWWMHalfSmoke",ofs);
|
||||
let b = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",ofs);
|
||||
b.Scale *= FRandom[ExploS](.7,1.4);
|
||||
b.alpha *= .2;
|
||||
b.special1 = Random[ExploS](1,3);
|
||||
b.SetShade(Color(2,3,4)*Random[ExploS](48,63));
|
||||
b.framestep = Random[ExploS](2,4);
|
||||
b.scolor = Color(2,3,4)*Random[ExploS](48,63);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1023,11 +1023,11 @@ Class MisterRifle : SWWMWeapon
|
|||
if ( !Random[ExploS](0,1) ) continue;
|
||||
Vector3 ofs = level.Vec3Offset(origin,startdir*d);
|
||||
if ( !level.IsPointInLevel(ofs) ) continue;
|
||||
let b = Spawn("SWWMHalfSmoke",ofs);
|
||||
let b = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",ofs);
|
||||
b.Scale *= FRandom[ExploS](.7,1.4);
|
||||
b.alpha *= .2;
|
||||
b.special1 = Random[ExploS](1,3);
|
||||
b.SetShade(Color(2,3,4)*Random[ExploS](48,63));
|
||||
b.framestep = Random[ExploS](2,4);
|
||||
b.scolor = Color(2,3,4)*Random[ExploS](48,63);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1017,10 +1017,10 @@ Class MisterGrenade : Actor
|
|||
int numpt = bAMBUSH?1:3;
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
let s = Spawn("SWWMHalfSmoke",Vec3Offset(0,0,Height/2));
|
||||
s.SetShade(Color(1,4,2)*Random[Mister](48,63));
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",Vec3Offset(0,0,Height/2));
|
||||
s.scolor = Color(1,4,2)*Random[Mister](48,63);
|
||||
s.scale *= FRandom[Mister](.5,1.1);
|
||||
s.special1 = Random[Mister](0,2);
|
||||
s.framestep = Random[Mister](1,3);
|
||||
s.alpha *= .25;
|
||||
s.vel += .3*vel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,75 +118,59 @@ Class QuadTrail : SWWMNonInteractiveActor
|
|||
}
|
||||
}
|
||||
|
||||
Class QuadEmber : SWWMNonInteractiveActor
|
||||
Class QuadEmber : SWWMStaticSprite
|
||||
{
|
||||
Vector3 freq, amp, ph;
|
||||
double fact1, fact2;
|
||||
bool bDead;
|
||||
|
||||
Default
|
||||
override void SetupSprite()
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Scale .3;
|
||||
+FORCEXYBILLBOARD;
|
||||
texture = TexMan.CheckForTexture("QEMBA0");
|
||||
scale = (.3,.3);
|
||||
SetRenderStyle(STYLE_Add);
|
||||
bCheckWater = true;
|
||||
Flags |= SPF_FULLBRIGHT;
|
||||
}
|
||||
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Scale *= FRandom[ExploS](.5,1.5);
|
||||
double ang = FRandom[ExploS](0,360),
|
||||
pt = FRandom[ExploS](-90,90);
|
||||
vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](4.,8.);
|
||||
vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](4.,8.);
|
||||
freq = (FRandom[ExploS](.5,3.),FRandom[ExploS](.5,3.),FRandom[ExploS](.5,3.));
|
||||
amp = (FRandom[ExploS](.5,2.),FRandom[ExploS](.5,2.),FRandom[ExploS](.5,2.));
|
||||
ph = (FRandom[ExploS](0.,360.),FRandom[ExploS](0.,360.),FRandom[ExploS](0.,360.));
|
||||
specialf1 = FRandom[ExploS](.98,.99);
|
||||
specialf2 = FRandom[ExploS](.98,.99);
|
||||
fact1 = FRandom[ExploS](.98,.99);
|
||||
fact2 = FRandom[ExploS](.98,.99);
|
||||
}
|
||||
override void Tick()
|
||||
|
||||
override void OnTick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !InStateSequence(CurState,FindState("Death")) )
|
||||
if ( !bDead )
|
||||
{
|
||||
vel *= .95;
|
||||
vel += .2*(sin(ph.x)*amp.x,sin(ph.y)*amp.y,sin(ph.z)*amp.z);
|
||||
vel.z -= .05*clamp(2.-amp.length(),0.,2.);
|
||||
if ( !lastwater ) vel.z -= .05*clamp(2.-amp.length(),0.,2.);
|
||||
ph.x += freq.x*(360./GameTicRate);
|
||||
ph.y += freq.y*(360./GameTicRate);
|
||||
ph.z += freq.z*(360./GameTicRate);
|
||||
freq *= specialf1;
|
||||
amp *= specialf2;
|
||||
freq *= fact1;
|
||||
amp *= fact2;
|
||||
Vector3 newpos = level.Vec3Offset(pos,vel);
|
||||
if ( !level.IsPointInLevel(newpos) )
|
||||
{
|
||||
vel *= 0;
|
||||
SetStateLabel("Death");
|
||||
bDead = true;
|
||||
return;
|
||||
}
|
||||
SetOrigin(newpos,true);
|
||||
UpdateWaterLevel();
|
||||
if ( waterlevel > 0 )
|
||||
{
|
||||
vel *= 0;
|
||||
SetStateLabel("Death");
|
||||
return;
|
||||
}
|
||||
A_FadeOut(FRandom[ExploS](.002,.005));
|
||||
alpha = max(.0,alpha-FRandom[ExploS](.002,.005));
|
||||
}
|
||||
else A_FadeOut(FRandom[ExploS](.02,.05));
|
||||
frame = clamp(int(round(4-alpha*4)),0,4);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
QEMB # -1 Bright;
|
||||
Stop;
|
||||
Death:
|
||||
QEMB # -1 Bright;
|
||||
Stop;
|
||||
else alpha = max(0.,alpha-FRandom[ExploS](.02,.05));
|
||||
int frame = clamp(int(round(4-alpha*4)),0,4);
|
||||
texture = TexMan.CheckForTexture(String.Format("QEMB%c0",0x41+frame));
|
||||
if ( alpha <= 0 ) Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -240,18 +224,18 @@ Class QuadProj : Actor
|
|||
|
||||
virtual void A_QuadTrail()
|
||||
{
|
||||
let s = Spawn("QuadTrail",pos);
|
||||
s.scale *= .6;
|
||||
s.vel = vel*.2;
|
||||
s = Spawn("SWWMHalfSmoke",pos);
|
||||
let t = Spawn("QuadTrail",pos);
|
||||
t.scale *= .6;
|
||||
t.vel = vel*.2;
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = SWWMUtility.Vec3FromAngles(FRandom[Quadravol](0,360),FRandom[Quadravol](-90,90))*.4;
|
||||
s.vel += vel*.3;
|
||||
s.alpha *= .4;
|
||||
int numpt = Random[Quadravol](5,15);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.3;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.3;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -384,16 +368,16 @@ Class QuadExplArm : Actor
|
|||
if ( !(ReactionTime%2) )
|
||||
SWWMUtility.DoExplosion(self,8+reactiontime*3,0,40+5*reactiontime,20,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
|
||||
Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5);
|
||||
let s = Spawn("SWWMHalfSmoke",pos);
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = pvel+vel*.3;
|
||||
s.special1 = Random[ExploS](1,3);
|
||||
s.framestep = Random[ExploS](2,4);
|
||||
s.scale *= 3.;
|
||||
s.alpha *= .1+.4*(ReactionTime/(8.+special1));
|
||||
int numpt = Random[Quadravol](1,4);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.4;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.4;
|
||||
}
|
||||
A_CountDown();
|
||||
}
|
||||
|
|
@ -423,16 +407,16 @@ Class QuadExplArm2 : QuadExplArm
|
|||
SWWMUtility.DoExplosion(self,80+reactiontime*10,0,100+4*reactiontime,50,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
|
||||
}
|
||||
Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](2,5);
|
||||
let s = Spawn("SWWMHalfSmoke",pos);
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = pvel+vel*.6;
|
||||
s.special1 = Random[ExploS](2,4);
|
||||
s.framestep = Random[ExploS](3,5);
|
||||
s.scale *= 3.2;
|
||||
s.alpha *= .1+.4*(ReactionTime/(12.+special1));
|
||||
int numpt = Random[Quadravol](1,5);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.7;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.7;
|
||||
}
|
||||
A_CountDown();
|
||||
}
|
||||
|
|
@ -494,18 +478,18 @@ Class QuadProj2 : QuadProj
|
|||
}
|
||||
override void A_QuadTrail()
|
||||
{
|
||||
let s = Spawn("QuadTrail",pos);
|
||||
s.scale *= .8;
|
||||
s.vel = vel*.3;
|
||||
s = Spawn("SWWMHalfSmoke",pos);
|
||||
let t = Spawn("QuadTrail",pos);
|
||||
t.scale *= .8;
|
||||
t.vel = vel*.3;
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = SWWMUtility.Vec3FromAngles(FRandom[Quadravol](0,360),FRandom[Quadravol](-90,90))*.4;
|
||||
s.vel += vel*.4;
|
||||
s.alpha *= .6;
|
||||
int numpt = Random[Quadravol](5,25);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.4;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.4;
|
||||
}
|
||||
}
|
||||
override void A_QuadExplode()
|
||||
|
|
@ -588,18 +572,18 @@ Class QuadProjSub : QuadProj
|
|||
}
|
||||
override void A_QuadTrail()
|
||||
{
|
||||
let s = Spawn("QuadTrail",pos);
|
||||
s.scale *= .5;
|
||||
s.vel = vel*.3;
|
||||
s = Spawn("SWWMHalfSmoke",pos);
|
||||
let t = Spawn("QuadTrail",pos);
|
||||
t.scale *= .5;
|
||||
t.vel = vel*.3;
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = SWWMUtility.Vec3FromAngles(FRandom[Quadravol](0,360),FRandom[Quadravol](-90,90))*.4;
|
||||
s.vel += vel*.4;
|
||||
s.alpha *= .2;
|
||||
int numpt = Random[Quadravol](1,4);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.4;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.4;
|
||||
}
|
||||
}
|
||||
override void A_QuadExplode()
|
||||
|
|
@ -671,18 +655,18 @@ Class QuadProjSub2 : QuadProj
|
|||
}
|
||||
override void A_QuadTrail()
|
||||
{
|
||||
let s = Spawn("QuadTrail",pos);
|
||||
s.scale *= .3;
|
||||
s.vel = vel*.3;
|
||||
s = Spawn("SWWMHalfSmoke",pos);
|
||||
let t = Spawn("QuadTrail",pos);
|
||||
t.scale *= .3;
|
||||
t.vel = vel*.3;
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = SWWMUtility.Vec3FromAngles(FRandom[Quadravol](0,360),FRandom[Quadravol](-90,90))*.4;
|
||||
s.vel += vel*.4;
|
||||
s.alpha *= .2;
|
||||
int numpt = Random[Quadravol](1,4);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.4;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.4;
|
||||
}
|
||||
}
|
||||
override void A_QuadExplode()
|
||||
|
|
@ -769,19 +753,19 @@ Class QuadProj3 : QuadProj
|
|||
}
|
||||
override void A_QuadTrail()
|
||||
{
|
||||
let s = Spawn("QuadTrail",pos);
|
||||
s.scale *= 1.2;
|
||||
s.vel = vel*.4;
|
||||
s = Spawn("SWWMHalfSmoke",pos);
|
||||
let t = Spawn("QuadTrail",pos);
|
||||
t.scale *= 1.2;
|
||||
t.vel = vel*.4;
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = SWWMUtility.Vec3FromAngles(FRandom[Quadravol](0,360),FRandom[Quadravol](-90,90))*.4;
|
||||
s.vel += vel*.6;
|
||||
s.alpha *= .8;
|
||||
s.special1 = 1;
|
||||
s.framestep = 2;
|
||||
int numpt = Random[Quadravol](5,30);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
s = Spawn("QuadEmber",pos);
|
||||
s.vel += vel*.6;
|
||||
let e = SWWMStaticSprite.SpawnAt("QuadEmber",pos);
|
||||
e.vel += vel*.6;
|
||||
}
|
||||
}
|
||||
override void A_QuadExplode()
|
||||
|
|
@ -1002,12 +986,12 @@ Class OnFire : Inventory
|
|||
double pt = FRandom[FlameT](-90,90);
|
||||
if ( amount > 0 )
|
||||
{
|
||||
let c = Spawn("OnFireTrail",tpos);
|
||||
let c = SWWMAnimSprite.SpawnAt("OnFireTrail",tpos);
|
||||
c.scale *= max(.35,mult*.6);
|
||||
c.vel = Owner.vel*.5+SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[FlameT](.5,2.)*c.scale.x;
|
||||
}
|
||||
if ( Random[FlameT](0,3) ) continue;
|
||||
let s = Spawn("SWWMHalfSmoke",tpos);
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",tpos);
|
||||
s.scale *= max(.35,mult*.5);
|
||||
s.alpha *= min(amount+30,100)*.005;
|
||||
s.vel = Owner.vel*.5+SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[FlameT](.2,.6)*s.scale.x;
|
||||
|
|
@ -1044,54 +1028,51 @@ Class OnFire : Inventory
|
|||
}
|
||||
}
|
||||
|
||||
Class OnFireTrail : SWWMNonInteractiveActor
|
||||
Class OnFireTrail : SWWMAnimSprite
|
||||
{
|
||||
Mixin SWWMMinimalMovingWaterTick;
|
||||
int flametim;
|
||||
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
Scale.x *= RandomPick[ExploS](-1,1);
|
||||
Scale.y *= RandomPick[ExploS](-1,1);
|
||||
bXFlip = Random[ExploS](0,1);
|
||||
bYFlip = Random[ExploS](0,1);
|
||||
roll = FRandom[ExploS](0,360);
|
||||
SetState(SpawnState+Random[ExploS](0,39));
|
||||
}
|
||||
void A_Flame()
|
||||
override void SetupSprite()
|
||||
{
|
||||
special1++;
|
||||
if ( waterlevel > 0 )
|
||||
vel *= .9;
|
||||
Super.SetupSprite();
|
||||
sprname = "XFIR";
|
||||
sprframe = Random[ExploS](0,19);
|
||||
numframes = 20;
|
||||
framestep = 2;
|
||||
bLooping = true;
|
||||
bCheckWater = true;
|
||||
SetRenderStyle(STYLE_Add);
|
||||
Flags |= SPF_FULLBRIGHT|SPF_ROLL;
|
||||
Alpha = .3;
|
||||
Scale = (.6,.6);
|
||||
}
|
||||
|
||||
override void OnTick()
|
||||
{
|
||||
flametim++;
|
||||
if ( lastwater ) vel *= .9;
|
||||
else
|
||||
{
|
||||
vel *= .98;
|
||||
vel.z += .1+.2*abs(scale.x);
|
||||
}
|
||||
if ( !Random[FlameT](0,int(40*(default.alpha-alpha))) )
|
||||
if ( !Random[FlameT](0,int(40*(.3-alpha))) )
|
||||
{
|
||||
let s = Spawn("SWWMHalfSmoke",pos);
|
||||
let s = SWWMAnimSprite.SpawnAt("SWWMHalfSmoke",pos);
|
||||
s.vel = SWWMUtility.Vec3FromAngles(FRandom[FlameT](0,360),FRandom[FlameT](-90,90))*.2;
|
||||
s.vel += vel*.3;
|
||||
s.alpha *= alpha*.5;
|
||||
s.scale *= .5+abs(scale.x*2)*(.5+special1/6.);
|
||||
s.special1 = 1;
|
||||
s.scale *= .5+abs(scale.x*2)*(.5+flametim/6.);
|
||||
s.framestep = 2;
|
||||
}
|
||||
A_SetScale(scale.x*.98,scale.y*.98);
|
||||
A_FadeOut(.01);
|
||||
}
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Speed 2;
|
||||
Alpha .3;
|
||||
Scale .6;
|
||||
+FORCEXYBILLBOARD;
|
||||
+ROLLSPRITE;
|
||||
+ROLLCENTER;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
XFIR AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTT 1 Bright A_Flame();
|
||||
Loop;
|
||||
scale *= .98;
|
||||
alpha = max(0.,alpha-.01);
|
||||
if ( alpha <= 0. ) Destroy();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue