Add freezetics support to all actors that need it.
Remove Demoslayer fun option.
This commit is contained in:
parent
098cc0ef89
commit
ab9023d3ee
25 changed files with 312 additions and 291 deletions
|
|
@ -18,6 +18,11 @@ Class SheenPhantom : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(frame?.02:.05);
|
||||
}
|
||||
|
|
@ -45,6 +50,11 @@ Class SheenTrail : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
Vector3 oldpos = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( CurState == SpawnState )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -141,6 +141,11 @@ Class MisterBulletImpactPop : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*.9,scale.y*.9);
|
||||
A_FadeOut(.15);
|
||||
|
|
@ -186,6 +191,11 @@ Class MisterFuzzy : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
int nhit, nkill;
|
||||
[nhit, nkill] = SWWMUtility.DoExplosion(self,(special2<0)?4:44,3000,80,80,DE_EXTRAZTHRUST|DE_COUNTENEMIES);
|
||||
|
|
@ -283,6 +293,11 @@ Class MisterFuzzyTrail : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( vel != (0,0,0) )
|
||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||
|
|
@ -843,6 +858,11 @@ Class MisterRailBeam : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*.85,scale.y);
|
||||
A_FadeOut(.05);
|
||||
|
|
@ -879,6 +899,11 @@ Class MisterRailChildBeam : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*1.05,scale.y);
|
||||
A_FadeOut(.01);
|
||||
|
|
@ -900,6 +925,11 @@ Class MisterGrenadeFlare : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !master || (master.ReactionTime <= 0) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,6 +55,11 @@ Class QuadFlare : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !master || !master.bMISSILE )
|
||||
{
|
||||
|
|
@ -138,6 +143,11 @@ Class QuadEmber : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !InStateSequence(CurState,FindState("Death")) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -225,62 +225,6 @@ extend Class SWWMHandler
|
|||
onehpspree[pnum]++;
|
||||
SWWMUtility.AchievementProgress("onehp",onehpspree[pnum],src.player);
|
||||
}
|
||||
// tasty treats
|
||||
if ( swwm_demoslayer )
|
||||
{
|
||||
if ( src.Health < 100 )
|
||||
{
|
||||
int amt = clamp(e.Thing.SpawnHealth()/20,1,10);
|
||||
if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") ) amt *= 2;
|
||||
if ( e.Thing.Health < (e.Thing.GetGibHealth()*2) ) amt *= 3;
|
||||
else if ( e.Thing.Health < e.Thing.GetGibHealth() ) amt *= 2;
|
||||
for ( int i=0; i<amt; i++ )
|
||||
{
|
||||
if ( !Random[Junk](0,2) ) continue;
|
||||
let a = Actor.Spawn("HealthOrb",e.Thing.Vec3Offset(0,0,e.Thing.Height/2));
|
||||
a.vel.z = FRandom[Junk](4,16);
|
||||
double ang = FRandom[Junk](0,360);
|
||||
a.vel.xy = Actor.AngleToVector(ang,FRandom[Junk](4,8));
|
||||
}
|
||||
}
|
||||
if ( src.CountInv("ArmorNugget") < 100 )
|
||||
{
|
||||
int amt = clamp(e.Thing.SpawnHealth()/30,1,10);
|
||||
if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") ) amt *= 2;
|
||||
if ( e.Thing.Health < (e.Thing.GetGibHealth()*2) ) amt *= 3;
|
||||
else if ( e.Thing.Health < e.Thing.GetGibHealth() ) amt *= 2;
|
||||
for ( int i=0; i<amt; i++ )
|
||||
{
|
||||
if ( Random[Junk](0,1) ) continue;
|
||||
let a = Actor.Spawn("ArmorOrb",e.Thing.Vec3Offset(0,0,e.Thing.Height/2));
|
||||
a.vel.z = FRandom[Junk](4,16);
|
||||
double ang = FRandom[Junk](0,360);
|
||||
a.vel.xy = Actor.AngleToVector(ang,FRandom[Junk](4,8));
|
||||
}
|
||||
}
|
||||
bool needsammo = false;
|
||||
for ( Inventory i=src.Inv; i; i=i.inv )
|
||||
{
|
||||
if ( !(i is 'SWWMAmmo') || (i.Stamina <= 0) || (i.Stamina > 50000) || (i.Amount >= i.MaxAmount) ) continue;
|
||||
needsammo = true;
|
||||
break;
|
||||
}
|
||||
if ( needsammo )
|
||||
{
|
||||
int amt = clamp(e.Thing.SpawnHealth()/40,1,10);
|
||||
if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") ) amt *= 2;
|
||||
if ( e.Thing.Health < (e.Thing.GetGibHealth()*2) ) amt *= 3;
|
||||
else if ( e.Thing.Health < e.Thing.GetGibHealth() ) amt *= 2;
|
||||
for ( int i=0; i<amt; i++ )
|
||||
{
|
||||
if ( Random[Junk](0,1) ) continue;
|
||||
let a = Actor.Spawn("AmmoOrb",e.Thing.Vec3Offset(0,0,e.Thing.Height/2));
|
||||
a.vel.z = FRandom[Junk](4,16);
|
||||
double ang = FRandom[Junk](0,360);
|
||||
a.vel.xy = Actor.AngleToVector(ang,FRandom[Junk](4,8));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// no credits unless it's a counted kill or marine (that isn't friendly) or another player in DM
|
||||
if ( e.Thing.IsFriend(src) || (!e.Thing.default.bCountKill && !(e.Thing is 'ScriptedMarine') && !(deathmatch && e.Thing.player)) )
|
||||
|
|
|
|||
|
|
@ -70,6 +70,11 @@ Class GoldShellSparkle : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
SetOrigin(Vec3Offset(0,0,vel.z),true);
|
||||
alpha -= .02;
|
||||
|
|
|
|||
|
|
@ -144,6 +144,11 @@ Class SWWMRespawnTimer : SWWMNonInteractiveActor
|
|||
return;
|
||||
}
|
||||
special2 = tracer.tics;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
double str = 1.-special2/double(special1);
|
||||
int freq = int(clamp(30*(1.-str),3,30));
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ Class FroggyChair : Actor
|
|||
wasonground = ((pos.z <= floorz) || !TestMobjZ());
|
||||
lastvelz = vel.z;
|
||||
Super.Tick();
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
if ( (pos.z <= floorz) || !TestMobjZ() )
|
||||
{
|
||||
if ( !wasonground && (lastvelz < -1) ) A_StartSound("squeak",CHAN_BODY,CHANF_OVERLAP,clamp(-lastvelz*.05,0.,1.));
|
||||
|
|
@ -287,6 +288,11 @@ Class SWWMGasCloudSpawner : SWWMNonInteractiveActor
|
|||
{
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !(special1%5) )
|
||||
{
|
||||
|
|
@ -309,6 +315,11 @@ Class SWWMGasCloud : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
for ( int i=0; i<2; i++ )
|
||||
{
|
||||
|
|
@ -367,6 +378,11 @@ Class FancyConfetti : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos; // for interpolation
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( dead )
|
||||
{
|
||||
|
|
@ -509,6 +525,11 @@ Class SuperFancyTrail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*.95,scale.y);
|
||||
A_FadeOut(.01);
|
||||
|
|
@ -546,6 +567,11 @@ Class SuperFancySparkle : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*specialf1);
|
||||
A_SetRoll(roll+special1,SPF_INTERPOLATE);
|
||||
|
|
@ -599,7 +625,7 @@ Class SuperPartyLight : PaletteLight
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -290,6 +290,11 @@ Class GhostTarget : Actor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( diedie ) A_FadeOut(.02);
|
||||
let bt = BlockThingsIterator.Create(self,300);
|
||||
|
|
@ -1429,7 +1434,7 @@ Class LampMoth : Actor
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
if ( isEntranced() )
|
||||
{
|
||||
lifespan = 100;
|
||||
|
|
@ -1612,7 +1617,7 @@ Class CompanionLamp : Actor
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
// update trailing position
|
||||
bool foundspot = false;
|
||||
for ( int i=0; i<180; i+=5 )
|
||||
|
|
@ -2346,6 +2351,11 @@ Class MykradvoTendril : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(bMISSILEMORE?.05:bSTANDSTILL?.2:.1);
|
||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||
|
|
@ -2586,6 +2596,11 @@ Class MykradvoBurst : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( (special1++)%3 )
|
||||
{
|
||||
|
|
@ -3746,7 +3761,7 @@ Class TheBall : Actor
|
|||
{
|
||||
oldvel = vel;
|
||||
Super.Tick();
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
if ( InStateSequence(CurState,ResolveState("Death")) )
|
||||
{
|
||||
deadtimer++;
|
||||
|
|
@ -4116,6 +4131,11 @@ Class SaltBeam : SWWMNonInteractiveActor
|
|||
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(.04);
|
||||
if ( Random[Spreadgun](-2,args[2]/10) == 0 )
|
||||
|
|
|
|||
|
|
@ -82,6 +82,11 @@ Class mkBloodSpray : SWWMNonInteractiveActor
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
Vector3 setofs = SWWMUtility.RotateVector3(attachofs,target.angle);
|
||||
SetOrigin(level.Vec3Offset(target.pos,setofs),false);
|
||||
|
|
@ -130,6 +135,11 @@ Class mkBloodDrop : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos; // for interpolation
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( killme ) A_FadeOut(.01);
|
||||
if ( dead )
|
||||
|
|
@ -401,6 +411,11 @@ Class mkBloodSmoke : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
Vector3 newp = level.Vec3Offset(pos,vel);
|
||||
if ( level.IsPointInLevel(newp) ) SetOrigin(newp,true);
|
||||
|
|
@ -471,7 +486,7 @@ Class mkFlyingGib : Actor
|
|||
{
|
||||
oldpos = pos;
|
||||
Super.Tick();
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
if ( killme ) A_FadeOut(.01);
|
||||
if ( CurState == ResolveState("Death2") )
|
||||
{
|
||||
|
|
@ -662,6 +677,11 @@ Class mkGibber : SWWMNonInteractiveActor
|
|||
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !gibbed )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,6 +29,11 @@ Mixin Class SWWMMinimalTick
|
|||
{
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||
if ( tics > 0 ) tics--;
|
||||
|
|
@ -45,6 +50,11 @@ Mixin Class SWWMMinimalMovingTick
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||
|
|
@ -62,6 +72,11 @@ Mixin Class SWWMMinimalMovingWaterTick
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||
UpdateWaterLevel();
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ Class PaletteLight : PointLight
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
ReactionTime--;
|
||||
if ( ReactionTime < 0 )
|
||||
{
|
||||
|
|
@ -96,6 +96,11 @@ Class SWWMSmoke : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos; // for interpolation
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
vel *= .96;
|
||||
vel.z += .01;
|
||||
|
|
@ -206,6 +211,11 @@ Class SWWMHalfSmoke : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos; // for interpolation
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
vel *= 0.96;
|
||||
vel.z += 0.01;
|
||||
|
|
@ -280,6 +290,11 @@ Class SWWMBubble : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
vel *= 0.96;
|
||||
vel.z += 0.05;
|
||||
|
|
@ -363,6 +378,11 @@ Class SWWMSparkTrail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*.9,scale.y);
|
||||
A_FadeOut(.06);
|
||||
|
|
@ -391,6 +411,11 @@ Class SWWMSpark : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( dead )
|
||||
{
|
||||
|
|
@ -566,6 +591,11 @@ Class SWWMChip : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos; // for interpolation
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( dead )
|
||||
{
|
||||
|
|
@ -792,6 +822,11 @@ Class SWWMTeleportSparkle : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*specialf1);
|
||||
A_FadeOut(specialf2);
|
||||
|
|
@ -819,6 +854,11 @@ Class SWWMTeleportDest : SWWMNonInteractiveActor
|
|||
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( (level.maptime+special1)%10 ) return;
|
||||
int numpt = Random[ExploS](0,2);
|
||||
|
|
@ -847,6 +887,11 @@ Class SWWMTeleportLine : SWWMNonInteractiveActor
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( (level.maptime+special1)%5 ) return;
|
||||
Vector3 apos, bpos;
|
||||
|
|
@ -1267,6 +1312,11 @@ Class SWWMShadow : SWWMNonInteractiveActor
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
Update();
|
||||
}
|
||||
default
|
||||
|
|
|
|||
|
|
@ -10,6 +10,11 @@ Class LoveHeartTrail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(.01);
|
||||
scale *= .95;
|
||||
|
|
@ -38,6 +43,11 @@ Class LoveHeartSparkle : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*specialf1);
|
||||
A_FadeOut(specialf2);
|
||||
|
|
|
|||
|
|
@ -1173,7 +1173,7 @@ Class Demolitionist : PlayerPawn
|
|||
PoisonPeriodReceived = 0;
|
||||
PoisonDamageReceived = 0;
|
||||
Super.Tick();
|
||||
if ( (gamestate != GS_LEVEL) || !player || (player.mo != self) ) return;
|
||||
if ( (gamestate != GS_LEVEL) || !player || (player.mo != self) || (freezetics > 0) ) return;
|
||||
UpdateFace();
|
||||
UpdateTags();
|
||||
if ( hasteleported )
|
||||
|
|
|
|||
|
|
@ -1,219 +1,5 @@
|
|||
// player effects
|
||||
|
||||
// drop from monsters when using "Demoslayer" fun option
|
||||
Class SlayerOrb : Actor abstract
|
||||
{
|
||||
Class<Actor> tclass;
|
||||
|
||||
Property TrailClass : tclass;
|
||||
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Radius 4;
|
||||
Height 8;
|
||||
Scale .5;
|
||||
BounceFactor .75;
|
||||
WallBounceFactor .75;
|
||||
Gravity .35;
|
||||
PROJECTILE;
|
||||
+THRUACTORS;
|
||||
-NOGRAVITY;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
+BOUNCEONWALLS;
|
||||
+BOUNCEONFLOORS;
|
||||
+BOUNCEONCEILINGS;
|
||||
+CANBOUNCEWATER;
|
||||
+FORCEXYBILLBOARD;
|
||||
}
|
||||
virtual void PickedUp( int np, PlayerPawn mo )
|
||||
{
|
||||
}
|
||||
override void Tick()
|
||||
{
|
||||
Vector3 oldp = pos;
|
||||
Super.Tick();
|
||||
if ( !isFrozen() )
|
||||
{
|
||||
let t = Spawn(tclass,pos);
|
||||
t.scale *= abs(scale.x);
|
||||
t.alpha *= alpha;
|
||||
scale *= .995;
|
||||
alpha = abs(scale.x)*2.;
|
||||
if ( abs(scale.x) < .1 )
|
||||
{
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
int np = -1;
|
||||
double mdist = 1000.;
|
||||
for ( int i=0; i<MAXPLAYERS; i++ )
|
||||
{
|
||||
if ( !playeringame[i] || (players[i].Health <= 0) || !players[i].mo || !CheckSight(players[i].mo,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue;
|
||||
double dist = Distance3D(players[i].mo);
|
||||
if ( dist > mdist ) continue;
|
||||
mdist = dist;
|
||||
np = i;
|
||||
}
|
||||
if ( np == -1 ) return;
|
||||
let mo = players[np].mo;
|
||||
if ( (GetAge() > 5) && SWWMUtility.BoxIntersect(self,mo,pad:8) )
|
||||
{
|
||||
PickedUp(np,mo);
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
Vector3 dirto = level.Vec3Diff(pos,mo.Vec3Offset(0,0,mo.Height/2));
|
||||
double distto = dirto.length();
|
||||
dirto /= distto;
|
||||
double fact = ((1000.-distto)/1000.)**2.;
|
||||
vel *= 1.-.05*fact;
|
||||
vel += (dirto+(0,0,.1))*fact*2.;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
SpriteOffset = (0,-4);
|
||||
Scale.x *= RandomPick[Junk](-1,-1);
|
||||
Scale.y *= RandomPick[Junk](-1,-1);
|
||||
}
|
||||
}
|
||||
Class HealthOrb : SlayerOrb
|
||||
{
|
||||
Default
|
||||
{
|
||||
SlayerOrb.TrailClass "HealthOrbTrail";
|
||||
}
|
||||
override void PickedUp( int np, PlayerPawn mo )
|
||||
{
|
||||
int flg = CHANF_OVERLAP|CHANF_MAYBE_LOCAL;
|
||||
if ( mo.CheckLocalView() ) flg |= CHANF_NOPAUSE;
|
||||
mo.A_StartSound("misc/health_pkup",CHAN_ITEM,flg);
|
||||
int hp = int(ceil(abs(scale.x*10)));
|
||||
mo.GiveBody(hp,100);
|
||||
SWWMHandler.HealthFlash(np);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPF E -1 Bright;
|
||||
Stop;
|
||||
|
||||
}
|
||||
}
|
||||
Class ArmorOrb : SlayerOrb
|
||||
{
|
||||
Default
|
||||
{
|
||||
SlayerOrb.TrailClass "ArmorOrbTrail";
|
||||
}
|
||||
override void PickedUp( int np, PlayerPawn mo )
|
||||
{
|
||||
int flg = CHANF_OVERLAP|CHANF_MAYBE_LOCAL;
|
||||
if ( mo.CheckLocalView() ) flg |= CHANF_NOPAUSE;
|
||||
mo.A_StartSound("misc/armor_pkup",CHAN_ITEM,flg);
|
||||
int hp = int(ceil(abs(scale.x*10)));
|
||||
let n = mo.FindInventory("ArmorNugget");
|
||||
if ( !n )
|
||||
{
|
||||
n = Inventory(Spawn("ArmorNugget"));
|
||||
n.AttachToOwner(mo);
|
||||
SWWMLoreLibrary.Add(mo.player,"Nugget");
|
||||
n.Amount = 0;
|
||||
}
|
||||
if ( n.Amount < 100 ) n.Amount = min(n.Amount+hp,100);
|
||||
SWWMHandler.ArmorFlash(np);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPF D -1 Bright;
|
||||
Stop;
|
||||
|
||||
}
|
||||
}
|
||||
Class AmmoOrb : SlayerOrb
|
||||
{
|
||||
Default
|
||||
{
|
||||
SlayerOrb.TrailClass "AmmoOrbTrail";
|
||||
}
|
||||
override void PickedUp( int np, PlayerPawn mo )
|
||||
{
|
||||
int flg = CHANF_OVERLAP|CHANF_MAYBE_LOCAL;
|
||||
if ( mo.CheckLocalView() ) flg |= CHANF_NOPAUSE;
|
||||
mo.A_StartSound("misc/ammo_pkup",CHAN_ITEM,flg);
|
||||
int tier = int(ceil(abs(scale.x*10)));
|
||||
Class<Inventory> cls = "FabricatorTier1";
|
||||
if ( tier >= 4 ) cls = "FabricatorTier3";
|
||||
else if ( tier >= 2 ) cls = "FabricatorTier2";
|
||||
let f = Inventory(Spawn(cls));
|
||||
f.bQUIET = true;
|
||||
if ( !f.CallTryPickup(mo) ) f.Destroy();
|
||||
mo.player.bonuscount = Inventory.BONUSADD;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPF A -1 Bright;
|
||||
Stop;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Class SlayerOrbTrail : SWWMNonInteractiveActor abstract
|
||||
{
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Scale .25;
|
||||
Alpha .5;
|
||||
+FORCEXYBILLBOARD;
|
||||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( isFrozen() ) return;
|
||||
alpha *= .9;
|
||||
scale *= 1.05;
|
||||
if ( alpha < .05 ) Destroy();
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
SpriteOffset = (0,-4);
|
||||
}
|
||||
}
|
||||
Class HealthOrbTrail : SlayerOrbTrail
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPS E -1 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class ArmorOrbTrail : SlayerOrbTrail
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPS D -1 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class AmmoOrbTrail : SlayerOrbTrail
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
BLPS A -1 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
// simple object for moving a dropped item towards the player
|
||||
Class SWWMMagItem play
|
||||
{
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ Class SWWMCasing : Actor abstract
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( isFrozen() ) return;
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
if ( killme ) A_FadeOut(.01);
|
||||
if ( waterlevel > 0 )
|
||||
{
|
||||
|
|
@ -152,6 +152,7 @@ Class SWWMWeaponLight : DynamicLight
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
if ( !target )
|
||||
{
|
||||
Destroy();
|
||||
|
|
|
|||
|
|
@ -159,7 +159,6 @@ Class HellblazerFlare : SWWMNonInteractiveActor
|
|||
|
||||
override void Tick()
|
||||
{
|
||||
if ( isFrozen() ) return;
|
||||
if ( !master || !master.bMISSILE )
|
||||
{
|
||||
Destroy();
|
||||
|
|
@ -423,7 +422,7 @@ Class HellblazerMissile2 : HellblazerMissile
|
|||
{
|
||||
oldvel = vel;
|
||||
Super.Tick();
|
||||
if ( isFrozen() || !InStateSequence(CurState,FindState("Spawn")) ) return;
|
||||
if ( isFrozen() || (freezetics > 0) || !InStateSequence(CurState,FindState("Spawn")) ) return;
|
||||
roll += rollvel;
|
||||
angle += anglevel;
|
||||
pitch += pitchvel;
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ Class EvisceratorChunkLight : PointLightAttenuated
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() || (freezetics > 0) ) return;
|
||||
SetOrigin(target.pos,true);
|
||||
if ( isFrozen() ) return;
|
||||
double intst = clamp((.7-EvisceratorChunk(target).lifetime)/.7,0.,1.);
|
||||
args[LIGHT_RED] = int(255*intst);
|
||||
args[LIGHT_GREEN] = int(224*intst);
|
||||
|
|
@ -68,6 +68,11 @@ Class EvisceratorChunkGlow : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !EvisceratorChunk(target) || EvisceratorChunk(target).justdied )
|
||||
{
|
||||
|
|
@ -97,6 +102,11 @@ Class EvisceratorChunkTrail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*(.6+specialf1),scale.y);
|
||||
A_FadeOut(.1+specialf2);
|
||||
|
|
@ -172,7 +182,7 @@ Class EvisceratorChunk : Actor
|
|||
// otherwise there is a single puff of smoke at the LAST tic
|
||||
// of the state, there is no logical explanation for this,
|
||||
// I guess I can blame graf, randi, or whoever else
|
||||
if ( isFrozen() || justdied ) return;
|
||||
if ( isFrozen() || (freezetics > 0) || justdied ) return;
|
||||
lifetime += lifespeed;
|
||||
if ( waterlevel > 0 ) lifetime = max(.7,lifetime);
|
||||
A_SetTranslation(tls[clamp(int(lifetime*10),0,7)]);
|
||||
|
|
@ -386,6 +396,11 @@ Class EvisceratorProjSmoke : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
lifetime += lifespeed;
|
||||
let s = Spawn("SWWMSmoke",pos);
|
||||
|
|
|
|||
|
|
@ -5,9 +5,14 @@ Class AshenRemains : SWWMNonInteractiveActor
|
|||
{
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
double fz = CurSector.floorplane.ZAtPoint(pos.xy);
|
||||
if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true);
|
||||
if ( isFrozen() ) return;
|
||||
special1++;
|
||||
if ( special1 > 350 ) A_FadeOut(0.01);
|
||||
}
|
||||
|
|
@ -280,6 +285,11 @@ Class YnykronDelayedImpact : SWWMNonInteractiveActor
|
|||
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
special1++;
|
||||
if ( special1 < 4 )
|
||||
|
|
@ -820,6 +830,11 @@ Class YnykronBeam : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(FRandom[Ynykron](.01,.02));
|
||||
special2++;
|
||||
|
|
@ -906,6 +921,11 @@ Class DelayedWallBeam : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
special2--;
|
||||
if ( special2 > 0 ) return;
|
||||
|
|
@ -976,6 +996,11 @@ Class YnykronImpactRing : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*(special2?1.06:1.03));
|
||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||
|
|
@ -1048,6 +1073,11 @@ Class YnykronShot : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
// spawn rings
|
||||
special1++;
|
||||
|
|
@ -1130,6 +1160,11 @@ Class YnykronHaloTail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x+.5);
|
||||
A_FadeOut(.2);
|
||||
|
|
@ -1152,6 +1187,11 @@ Class YnykronHalo : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) )
|
||||
{
|
||||
|
|
@ -1232,6 +1272,11 @@ Class YnykronVoidBeamTail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut();
|
||||
}
|
||||
|
|
@ -1786,6 +1831,11 @@ Class YnykronVoidSparkleTrail : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*.95,scale.y);
|
||||
A_FadeOut(.04);
|
||||
|
|
@ -1816,6 +1866,11 @@ Class YnykronVoidSparkle : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_SetScale(scale.x*specialf1);
|
||||
A_FadeOut(specialf2);
|
||||
|
|
@ -2052,6 +2107,11 @@ Class YnykronSingularity : SWWMNonInteractiveActor
|
|||
override void Tick()
|
||||
{
|
||||
prev = pos;
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
Vector3 newpos;
|
||||
if ( !mt ) mt = new("SimpleMoveTracer");
|
||||
|
|
@ -2534,6 +2594,11 @@ Class YnykronAltBeam : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(FRandom[Ynykron](.01,.02));
|
||||
special2++;
|
||||
|
|
@ -2623,6 +2688,11 @@ Class YnykronAltShot : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() || IsActorPlayingSound(CHAN_VOICE) ) return;
|
||||
Destroy();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,6 +91,11 @@ Class BigOrbiter : SWWMNonInteractiveActor
|
|||
Destroy();
|
||||
return;
|
||||
}
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
angle += anglevel;
|
||||
pitch += pitchvel;
|
||||
|
|
@ -1245,6 +1250,11 @@ Class BiosparkChildBeam : SWWMNonInteractiveActor
|
|||
}
|
||||
override void Tick()
|
||||
{
|
||||
if ( freezetics > 0 )
|
||||
{
|
||||
freezetics--;
|
||||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
A_FadeOut(.02);
|
||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||
|
|
|
|||
|
|
@ -301,6 +301,7 @@ Class ExplodiumMagAttach : ExplodiumMagProj
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( freezetics > 0 ) return;
|
||||
if ( isFrozen() ) return;
|
||||
if ( bKILLED ) return;
|
||||
if ( atline ) // attempt to follow the movement of the line
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue