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
|
|
@ -67,7 +67,6 @@ nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation
|
||||||
nosave string swwm_tooltipshown = ""; // which weapons have already had their tooltips displayed
|
nosave string swwm_tooltipshown = ""; // which weapons have already had their tooltips displayed
|
||||||
nosave noarchive bool swwm_tooltipnote = false; // set if the note on how to disable tooltips was already displayed
|
nosave noarchive bool swwm_tooltipnote = false; // set if the note on how to disable tooltips was already displayed
|
||||||
nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them
|
nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them
|
||||||
server bool swwm_demoslayer = false; // if you're below 100hp, enemies drop healing orbs when you kill them
|
|
||||||
nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", "boop" and "bop" when pressing any switch (may get annoying)
|
nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", "boop" and "bop" when pressing any switch (may get annoying)
|
||||||
nosave string swwm_menuposehistory = ""; // stores currently seen poses for the main menu, for shuffling
|
nosave string swwm_menuposehistory = ""; // stores currently seen poses for the main menu, for shuffling
|
||||||
nosave string swwm_titlesubhistory = ""; // stores currently seen subtitles for the title screen, for shuffling
|
nosave string swwm_titlesubhistory = ""; // stores currently seen subtitles for the title screen, for shuffling
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,6 @@ SWWM_RESETTOOLTIPS = "Reset Weapon Tooltips";
|
||||||
SWWM_CRESET = "Reset to Defaults";
|
SWWM_CRESET = "Reset to Defaults";
|
||||||
SWWM_ARESET = "Wipe Achievements";
|
SWWM_ARESET = "Wipe Achievements";
|
||||||
SWWM_NOINTERTIPS = "Hide Intermission Tips";
|
SWWM_NOINTERTIPS = "Hide Intermission Tips";
|
||||||
SWWM_DEMOSLAYER = "Demoslayer Mode";
|
|
||||||
SWWM_BEEPBOOP = "Switch Emoting";
|
SWWM_BEEPBOOP = "Switch Emoting";
|
||||||
SWWM_VOICEAMP = "Voice Amplification";
|
SWWM_VOICEAMP = "Voice Amplification";
|
||||||
SWWM_CLEARFX = "Clear All Effects";
|
SWWM_CLEARFX = "Clear All Effects";
|
||||||
|
|
@ -261,7 +260,6 @@ TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resets weapon tooltips so you can see them al
|
||||||
TOOLTIP_EVENT_SWWMRESETCVARS = "Resets all the mod's settings to their original values.";
|
TOOLTIP_EVENT_SWWMRESETCVARS = "Resets all the mod's settings to their original values.";
|
||||||
TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Erases all your archievement progress.";
|
TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Erases all your archievement progress.";
|
||||||
TOOLTIP_SWWM_NOINTERTIPS = "Hides intermission tips, in case you don't want to see them.";
|
TOOLTIP_SWWM_NOINTERTIPS = "Hides intermission tips, in case you don't want to see them.";
|
||||||
TOOLTIP_SWWM_DEMOSLAYER = "Killed enemies may drop health, armor and ammo orbs.";
|
|
||||||
TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional.";
|
TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional.";
|
||||||
TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds.";
|
TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds.";
|
||||||
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings.";
|
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings.";
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,6 @@ SWWM_RESETTOOLTIPS = "Resetear Ayuda de Armas";
|
||||||
SWWM_CRESET = "Restaurar Predeterminado";
|
SWWM_CRESET = "Restaurar Predeterminado";
|
||||||
SWWM_ARESET = "Borrar Logros";
|
SWWM_ARESET = "Borrar Logros";
|
||||||
SWWM_NOINTERTIPS = "Ocultar Consejos de Intermisión";
|
SWWM_NOINTERTIPS = "Ocultar Consejos de Intermisión";
|
||||||
SWWM_DEMOSLAYER = "Modo Demoslayer";
|
|
||||||
SWWM_BEEPBOOP = "Ruiditos de Activación";
|
SWWM_BEEPBOOP = "Ruiditos de Activación";
|
||||||
SWWM_VOICEAMP = "Amplificación de Voz";
|
SWWM_VOICEAMP = "Amplificación de Voz";
|
||||||
SWWM_CLEARFX = "Limpiar todos los Efectos";
|
SWWM_CLEARFX = "Limpiar todos los Efectos";
|
||||||
|
|
@ -259,7 +258,6 @@ TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resetea la ayuda de armas para que puedas vol
|
||||||
TOOLTIP_EVENT_SWWMRESETCVARS = "Resetea todas las opciones del mod a sus valores originales.";
|
TOOLTIP_EVENT_SWWMRESETCVARS = "Resetea todas las opciones del mod a sus valores originales.";
|
||||||
TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Borra todo tu progreso de logros.";
|
TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Borra todo tu progreso de logros.";
|
||||||
TOOLTIP_SWWM_NOINTERTIPS = "Oculta los consejos de intermisión, por si no quieres verlos.";
|
TOOLTIP_SWWM_NOINTERTIPS = "Oculta los consejos de intermisión, por si no quieres verlos.";
|
||||||
TOOLTIP_SWWM_DEMOSLAYER = "Los enemigos que mates soltarán orbes de salud, armadura y munición.";
|
|
||||||
TOOLTIP_SWWM_BEEPBOOP = "La Demolicionista hará ruiditos adorables cuando pulse cualquier línea utilizable. Esto puede que resulte cansino, así que es opcional.";
|
TOOLTIP_SWWM_BEEPBOOP = "La Demolicionista hará ruiditos adorables cuando pulse cualquier línea utilizable. Esto puede que resulte cansino, así que es opcional.";
|
||||||
TOOLTIP_SWWM_VOICEAMP = "A su volumen normal, las voces de la Demolicionista pueden ser ahogadas por el audio del juego. Con esto se le dá un nivel de amplificación extra para que sean más estridentes que otros sonidos.";
|
TOOLTIP_SWWM_VOICEAMP = "A su volumen normal, las voces de la Demolicionista pueden ser ahogadas por el audio del juego. Con esto se le dá un nivel de amplificación extra para que sean más estridentes que otros sonidos.";
|
||||||
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos.";
|
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos.";
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
[default]
|
[default]
|
||||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r595 \cu(Sun 30 Oct 22:39:32 CET 2022)\c-";
|
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r597 \cu(Mon 31 Oct 15:08:30 CET 2022)\c-";
|
||||||
SWWM_SHORTVER="\cw1.3pre r595 \cu(2022-10-30 22:39:32)\c-";
|
SWWM_SHORTVER="\cw1.3pre r597 \cu(2022-10-31 15:08:30)\c-";
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,6 @@ OptionMenu "SWWMOptionMenu"
|
||||||
Option "$SWWM_OMNIBUST", "swwm_omnibust", "YesNo"
|
Option "$SWWM_OMNIBUST", "swwm_omnibust", "YesNo"
|
||||||
Option "$SWWM_SUPERFUEL", "swwm_superfuel", "YesNo"
|
Option "$SWWM_SUPERFUEL", "swwm_superfuel", "YesNo"
|
||||||
Option "$SWWM_PARTYTIME", "swwm_partytime", "YesNo"
|
Option "$SWWM_PARTYTIME", "swwm_partytime", "YesNo"
|
||||||
Option "$SWWM_DEMOSLAYER", "swwm_demoslayer", "YesNo"
|
|
||||||
Option "$SWWM_FUNTRAILS", "swwm_funtrails", "SWWMFunTrails"
|
Option "$SWWM_FUNTRAILS", "swwm_funtrails", "SWWMFunTrails"
|
||||||
Option "$SWWM_BONKHAMMER", "swwm_bonkhammer", "YesNo"
|
Option "$SWWM_BONKHAMMER", "swwm_bonkhammer", "YesNo"
|
||||||
TrapOption "$SWWM_ENGINE", "swwm_engine"
|
TrapOption "$SWWM_ENGINE", "swwm_engine"
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,11 @@ Class SheenPhantom : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(frame?.02:.05);
|
A_FadeOut(frame?.02:.05);
|
||||||
}
|
}
|
||||||
|
|
@ -45,6 +50,11 @@ Class SheenTrail : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Vector3 oldpos = pos;
|
Vector3 oldpos = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( CurState == SpawnState )
|
if ( CurState == SpawnState )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,11 @@ Class MisterBulletImpactPop : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*.9,scale.y*.9);
|
A_SetScale(scale.x*.9,scale.y*.9);
|
||||||
A_FadeOut(.15);
|
A_FadeOut(.15);
|
||||||
|
|
@ -186,6 +191,11 @@ Class MisterFuzzy : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
int nhit, nkill;
|
int nhit, nkill;
|
||||||
[nhit, nkill] = SWWMUtility.DoExplosion(self,(special2<0)?4:44,3000,80,80,DE_EXTRAZTHRUST|DE_COUNTENEMIES);
|
[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()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( vel != (0,0,0) )
|
if ( vel != (0,0,0) )
|
||||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||||
|
|
@ -843,6 +858,11 @@ Class MisterRailBeam : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*.85,scale.y);
|
A_SetScale(scale.x*.85,scale.y);
|
||||||
A_FadeOut(.05);
|
A_FadeOut(.05);
|
||||||
|
|
@ -879,6 +899,11 @@ Class MisterRailChildBeam : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*1.05,scale.y);
|
A_SetScale(scale.x*1.05,scale.y);
|
||||||
A_FadeOut(.01);
|
A_FadeOut(.01);
|
||||||
|
|
@ -900,6 +925,11 @@ Class MisterGrenadeFlare : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !master || (master.ReactionTime <= 0) )
|
if ( !master || (master.ReactionTime <= 0) )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,11 @@ Class QuadFlare : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !master || !master.bMISSILE )
|
if ( !master || !master.bMISSILE )
|
||||||
{
|
{
|
||||||
|
|
@ -138,6 +143,11 @@ Class QuadEmber : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !InStateSequence(CurState,FindState("Death")) )
|
if ( !InStateSequence(CurState,FindState("Death")) )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -225,62 +225,6 @@ extend Class SWWMHandler
|
||||||
onehpspree[pnum]++;
|
onehpspree[pnum]++;
|
||||||
SWWMUtility.AchievementProgress("onehp",onehpspree[pnum],src.player);
|
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
|
// 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)) )
|
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()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
SetOrigin(Vec3Offset(0,0,vel.z),true);
|
SetOrigin(Vec3Offset(0,0,vel.z),true);
|
||||||
alpha -= .02;
|
alpha -= .02;
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,11 @@ Class SWWMRespawnTimer : SWWMNonInteractiveActor
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
special2 = tracer.tics;
|
special2 = tracer.tics;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
double str = 1.-special2/double(special1);
|
double str = 1.-special2/double(special1);
|
||||||
int freq = int(clamp(30*(1.-str),3,30));
|
int freq = int(clamp(30*(1.-str),3,30));
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,7 @@ Class FroggyChair : Actor
|
||||||
wasonground = ((pos.z <= floorz) || !TestMobjZ());
|
wasonground = ((pos.z <= floorz) || !TestMobjZ());
|
||||||
lastvelz = vel.z;
|
lastvelz = vel.z;
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
if ( (pos.z <= floorz) || !TestMobjZ() )
|
if ( (pos.z <= floorz) || !TestMobjZ() )
|
||||||
{
|
{
|
||||||
if ( !wasonground && (lastvelz < -1) ) A_StartSound("squeak",CHAN_BODY,CHANF_OVERLAP,clamp(-lastvelz*.05,0.,1.));
|
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()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !(special1%5) )
|
if ( !(special1%5) )
|
||||||
{
|
{
|
||||||
|
|
@ -309,6 +315,11 @@ Class SWWMGasCloud : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
for ( int i=0; i<2; i++ )
|
for ( int i=0; i<2; i++ )
|
||||||
{
|
{
|
||||||
|
|
@ -367,6 +378,11 @@ Class FancyConfetti : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos; // for interpolation
|
prev = pos; // for interpolation
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( dead )
|
if ( dead )
|
||||||
{
|
{
|
||||||
|
|
@ -509,6 +525,11 @@ Class SuperFancyTrail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*.95,scale.y);
|
A_SetScale(scale.x*.95,scale.y);
|
||||||
A_FadeOut(.01);
|
A_FadeOut(.01);
|
||||||
|
|
@ -546,6 +567,11 @@ Class SuperFancySparkle : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*specialf1);
|
A_SetScale(scale.x*specialf1);
|
||||||
A_SetRoll(roll+special1,SPF_INTERPOLATE);
|
A_SetRoll(roll+special1,SPF_INTERPOLATE);
|
||||||
|
|
@ -599,7 +625,7 @@ Class SuperPartyLight : PaletteLight
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -290,6 +290,11 @@ Class GhostTarget : Actor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( diedie ) A_FadeOut(.02);
|
if ( diedie ) A_FadeOut(.02);
|
||||||
let bt = BlockThingsIterator.Create(self,300);
|
let bt = BlockThingsIterator.Create(self,300);
|
||||||
|
|
@ -1429,7 +1434,7 @@ Class LampMoth : Actor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
if ( isEntranced() )
|
if ( isEntranced() )
|
||||||
{
|
{
|
||||||
lifespan = 100;
|
lifespan = 100;
|
||||||
|
|
@ -1612,7 +1617,7 @@ Class CompanionLamp : Actor
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
// update trailing position
|
// update trailing position
|
||||||
bool foundspot = false;
|
bool foundspot = false;
|
||||||
for ( int i=0; i<180; i+=5 )
|
for ( int i=0; i<180; i+=5 )
|
||||||
|
|
@ -2346,6 +2351,11 @@ Class MykradvoTendril : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(bMISSILEMORE?.05:bSTANDSTILL?.2:.1);
|
A_FadeOut(bMISSILEMORE?.05:bSTANDSTILL?.2:.1);
|
||||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||||
|
|
@ -2586,6 +2596,11 @@ Class MykradvoBurst : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( (special1++)%3 )
|
if ( (special1++)%3 )
|
||||||
{
|
{
|
||||||
|
|
@ -3746,7 +3761,7 @@ Class TheBall : Actor
|
||||||
{
|
{
|
||||||
oldvel = vel;
|
oldvel = vel;
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
if ( InStateSequence(CurState,ResolveState("Death")) )
|
if ( InStateSequence(CurState,ResolveState("Death")) )
|
||||||
{
|
{
|
||||||
deadtimer++;
|
deadtimer++;
|
||||||
|
|
@ -4116,6 +4131,11 @@ Class SaltBeam : SWWMNonInteractiveActor
|
||||||
|
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(.04);
|
A_FadeOut(.04);
|
||||||
if ( Random[Spreadgun](-2,args[2]/10) == 0 )
|
if ( Random[Spreadgun](-2,args[2]/10) == 0 )
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,11 @@ Class mkBloodSpray : SWWMNonInteractiveActor
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
Vector3 setofs = SWWMUtility.RotateVector3(attachofs,target.angle);
|
Vector3 setofs = SWWMUtility.RotateVector3(attachofs,target.angle);
|
||||||
SetOrigin(level.Vec3Offset(target.pos,setofs),false);
|
SetOrigin(level.Vec3Offset(target.pos,setofs),false);
|
||||||
|
|
@ -130,6 +135,11 @@ Class mkBloodDrop : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos; // for interpolation
|
prev = pos; // for interpolation
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( killme ) A_FadeOut(.01);
|
if ( killme ) A_FadeOut(.01);
|
||||||
if ( dead )
|
if ( dead )
|
||||||
|
|
@ -401,6 +411,11 @@ Class mkBloodSmoke : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
Vector3 newp = level.Vec3Offset(pos,vel);
|
Vector3 newp = level.Vec3Offset(pos,vel);
|
||||||
if ( level.IsPointInLevel(newp) ) SetOrigin(newp,true);
|
if ( level.IsPointInLevel(newp) ) SetOrigin(newp,true);
|
||||||
|
|
@ -471,7 +486,7 @@ Class mkFlyingGib : Actor
|
||||||
{
|
{
|
||||||
oldpos = pos;
|
oldpos = pos;
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
if ( killme ) A_FadeOut(.01);
|
if ( killme ) A_FadeOut(.01);
|
||||||
if ( CurState == ResolveState("Death2") )
|
if ( CurState == ResolveState("Death2") )
|
||||||
{
|
{
|
||||||
|
|
@ -662,6 +677,11 @@ Class mkGibber : SWWMNonInteractiveActor
|
||||||
|
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !gibbed )
|
if ( !gibbed )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,11 @@ Mixin Class SWWMMinimalTick
|
||||||
{
|
{
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||||
if ( tics > 0 ) tics--;
|
if ( tics > 0 ) tics--;
|
||||||
|
|
@ -45,6 +50,11 @@ Mixin Class SWWMMinimalMovingTick
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||||
|
|
@ -62,6 +72,11 @@ Mixin Class SWWMMinimalMovingWaterTick
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
SetOrigin(level.Vec3Offset(pos,vel),true);
|
SetOrigin(level.Vec3Offset(pos,vel),true);
|
||||||
UpdateWaterLevel();
|
UpdateWaterLevel();
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ Class PaletteLight : PointLight
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
ReactionTime--;
|
ReactionTime--;
|
||||||
if ( ReactionTime < 0 )
|
if ( ReactionTime < 0 )
|
||||||
{
|
{
|
||||||
|
|
@ -96,6 +96,11 @@ Class SWWMSmoke : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos; // for interpolation
|
prev = pos; // for interpolation
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
vel *= .96;
|
vel *= .96;
|
||||||
vel.z += .01;
|
vel.z += .01;
|
||||||
|
|
@ -206,6 +211,11 @@ Class SWWMHalfSmoke : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos; // for interpolation
|
prev = pos; // for interpolation
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
vel *= 0.96;
|
vel *= 0.96;
|
||||||
vel.z += 0.01;
|
vel.z += 0.01;
|
||||||
|
|
@ -280,6 +290,11 @@ Class SWWMBubble : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
vel *= 0.96;
|
vel *= 0.96;
|
||||||
vel.z += 0.05;
|
vel.z += 0.05;
|
||||||
|
|
@ -363,6 +378,11 @@ Class SWWMSparkTrail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*.9,scale.y);
|
A_SetScale(scale.x*.9,scale.y);
|
||||||
A_FadeOut(.06);
|
A_FadeOut(.06);
|
||||||
|
|
@ -391,6 +411,11 @@ Class SWWMSpark : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( dead )
|
if ( dead )
|
||||||
{
|
{
|
||||||
|
|
@ -566,6 +591,11 @@ Class SWWMChip : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos; // for interpolation
|
prev = pos; // for interpolation
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( dead )
|
if ( dead )
|
||||||
{
|
{
|
||||||
|
|
@ -792,6 +822,11 @@ Class SWWMTeleportSparkle : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*specialf1);
|
A_SetScale(scale.x*specialf1);
|
||||||
A_FadeOut(specialf2);
|
A_FadeOut(specialf2);
|
||||||
|
|
@ -819,6 +854,11 @@ Class SWWMTeleportDest : SWWMNonInteractiveActor
|
||||||
|
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( (level.maptime+special1)%10 ) return;
|
if ( (level.maptime+special1)%10 ) return;
|
||||||
int numpt = Random[ExploS](0,2);
|
int numpt = Random[ExploS](0,2);
|
||||||
|
|
@ -847,6 +887,11 @@ Class SWWMTeleportLine : SWWMNonInteractiveActor
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( (level.maptime+special1)%5 ) return;
|
if ( (level.maptime+special1)%5 ) return;
|
||||||
Vector3 apos, bpos;
|
Vector3 apos, bpos;
|
||||||
|
|
@ -1267,6 +1312,11 @@ Class SWWMShadow : SWWMNonInteractiveActor
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
default
|
default
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@ Class LoveHeartTrail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(.01);
|
A_FadeOut(.01);
|
||||||
scale *= .95;
|
scale *= .95;
|
||||||
|
|
@ -38,6 +43,11 @@ Class LoveHeartSparkle : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*specialf1);
|
A_SetScale(scale.x*specialf1);
|
||||||
A_FadeOut(specialf2);
|
A_FadeOut(specialf2);
|
||||||
|
|
|
||||||
|
|
@ -1173,7 +1173,7 @@ Class Demolitionist : PlayerPawn
|
||||||
PoisonPeriodReceived = 0;
|
PoisonPeriodReceived = 0;
|
||||||
PoisonDamageReceived = 0;
|
PoisonDamageReceived = 0;
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( (gamestate != GS_LEVEL) || !player || (player.mo != self) ) return;
|
if ( (gamestate != GS_LEVEL) || !player || (player.mo != self) || (freezetics > 0) ) return;
|
||||||
UpdateFace();
|
UpdateFace();
|
||||||
UpdateTags();
|
UpdateTags();
|
||||||
if ( hasteleported )
|
if ( hasteleported )
|
||||||
|
|
|
||||||
|
|
@ -1,219 +1,5 @@
|
||||||
// player effects
|
// 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
|
// simple object for moving a dropped item towards the player
|
||||||
Class SWWMMagItem play
|
Class SWWMMagItem play
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ Class SWWMCasing : Actor abstract
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
if ( killme ) A_FadeOut(.01);
|
if ( killme ) A_FadeOut(.01);
|
||||||
if ( waterlevel > 0 )
|
if ( waterlevel > 0 )
|
||||||
{
|
{
|
||||||
|
|
@ -152,6 +152,7 @@ Class SWWMWeaponLight : DynamicLight
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
if ( !target )
|
if ( !target )
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,6 @@ Class HellblazerFlare : SWWMNonInteractiveActor
|
||||||
|
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
if ( isFrozen() ) return;
|
|
||||||
if ( !master || !master.bMISSILE )
|
if ( !master || !master.bMISSILE )
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
|
|
@ -423,7 +422,7 @@ Class HellblazerMissile2 : HellblazerMissile
|
||||||
{
|
{
|
||||||
oldvel = vel;
|
oldvel = vel;
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( isFrozen() || !InStateSequence(CurState,FindState("Spawn")) ) return;
|
if ( isFrozen() || (freezetics > 0) || !InStateSequence(CurState,FindState("Spawn")) ) return;
|
||||||
roll += rollvel;
|
roll += rollvel;
|
||||||
angle += anglevel;
|
angle += anglevel;
|
||||||
pitch += pitchvel;
|
pitch += pitchvel;
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ Class EvisceratorChunkLight : PointLightAttenuated
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( isFrozen() || (freezetics > 0) ) return;
|
||||||
SetOrigin(target.pos,true);
|
SetOrigin(target.pos,true);
|
||||||
if ( isFrozen() ) return;
|
|
||||||
double intst = clamp((.7-EvisceratorChunk(target).lifetime)/.7,0.,1.);
|
double intst = clamp((.7-EvisceratorChunk(target).lifetime)/.7,0.,1.);
|
||||||
args[LIGHT_RED] = int(255*intst);
|
args[LIGHT_RED] = int(255*intst);
|
||||||
args[LIGHT_GREEN] = int(224*intst);
|
args[LIGHT_GREEN] = int(224*intst);
|
||||||
|
|
@ -68,6 +68,11 @@ Class EvisceratorChunkGlow : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !EvisceratorChunk(target) || EvisceratorChunk(target).justdied )
|
if ( !EvisceratorChunk(target) || EvisceratorChunk(target).justdied )
|
||||||
{
|
{
|
||||||
|
|
@ -97,6 +102,11 @@ Class EvisceratorChunkTrail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*(.6+specialf1),scale.y);
|
A_SetScale(scale.x*(.6+specialf1),scale.y);
|
||||||
A_FadeOut(.1+specialf2);
|
A_FadeOut(.1+specialf2);
|
||||||
|
|
@ -172,7 +182,7 @@ Class EvisceratorChunk : Actor
|
||||||
// otherwise there is a single puff of smoke at the LAST tic
|
// otherwise there is a single puff of smoke at the LAST tic
|
||||||
// of the state, there is no logical explanation for this,
|
// of the state, there is no logical explanation for this,
|
||||||
// I guess I can blame graf, randi, or whoever else
|
// I guess I can blame graf, randi, or whoever else
|
||||||
if ( isFrozen() || justdied ) return;
|
if ( isFrozen() || (freezetics > 0) || justdied ) return;
|
||||||
lifetime += lifespeed;
|
lifetime += lifespeed;
|
||||||
if ( waterlevel > 0 ) lifetime = max(.7,lifetime);
|
if ( waterlevel > 0 ) lifetime = max(.7,lifetime);
|
||||||
A_SetTranslation(tls[clamp(int(lifetime*10),0,7)]);
|
A_SetTranslation(tls[clamp(int(lifetime*10),0,7)]);
|
||||||
|
|
@ -386,6 +396,11 @@ Class EvisceratorProjSmoke : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
lifetime += lifespeed;
|
lifetime += lifespeed;
|
||||||
let s = Spawn("SWWMSmoke",pos);
|
let s = Spawn("SWWMSmoke",pos);
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,14 @@ Class AshenRemains : SWWMNonInteractiveActor
|
||||||
{
|
{
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( isFrozen() ) return;
|
||||||
double fz = CurSector.floorplane.ZAtPoint(pos.xy);
|
double fz = CurSector.floorplane.ZAtPoint(pos.xy);
|
||||||
if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true);
|
if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true);
|
||||||
if ( isFrozen() ) return;
|
|
||||||
special1++;
|
special1++;
|
||||||
if ( special1 > 350 ) A_FadeOut(0.01);
|
if ( special1 > 350 ) A_FadeOut(0.01);
|
||||||
}
|
}
|
||||||
|
|
@ -280,6 +285,11 @@ Class YnykronDelayedImpact : SWWMNonInteractiveActor
|
||||||
|
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
special1++;
|
special1++;
|
||||||
if ( special1 < 4 )
|
if ( special1 < 4 )
|
||||||
|
|
@ -820,6 +830,11 @@ Class YnykronBeam : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(FRandom[Ynykron](.01,.02));
|
A_FadeOut(FRandom[Ynykron](.01,.02));
|
||||||
special2++;
|
special2++;
|
||||||
|
|
@ -906,6 +921,11 @@ Class DelayedWallBeam : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
special2--;
|
special2--;
|
||||||
if ( special2 > 0 ) return;
|
if ( special2 > 0 ) return;
|
||||||
|
|
@ -976,6 +996,11 @@ Class YnykronImpactRing : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*(special2?1.06:1.03));
|
A_SetScale(scale.x*(special2?1.06:1.03));
|
||||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||||
|
|
@ -1048,6 +1073,11 @@ Class YnykronShot : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
// spawn rings
|
// spawn rings
|
||||||
special1++;
|
special1++;
|
||||||
|
|
@ -1130,6 +1160,11 @@ Class YnykronHaloTail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x+.5);
|
A_SetScale(scale.x+.5);
|
||||||
A_FadeOut(.2);
|
A_FadeOut(.2);
|
||||||
|
|
@ -1152,6 +1187,11 @@ Class YnykronHalo : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) )
|
if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) )
|
||||||
{
|
{
|
||||||
|
|
@ -1232,6 +1272,11 @@ Class YnykronVoidBeamTail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut();
|
A_FadeOut();
|
||||||
}
|
}
|
||||||
|
|
@ -1786,6 +1831,11 @@ Class YnykronVoidSparkleTrail : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*.95,scale.y);
|
A_SetScale(scale.x*.95,scale.y);
|
||||||
A_FadeOut(.04);
|
A_FadeOut(.04);
|
||||||
|
|
@ -1816,6 +1866,11 @@ Class YnykronVoidSparkle : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_SetScale(scale.x*specialf1);
|
A_SetScale(scale.x*specialf1);
|
||||||
A_FadeOut(specialf2);
|
A_FadeOut(specialf2);
|
||||||
|
|
@ -2052,6 +2107,11 @@ Class YnykronSingularity : SWWMNonInteractiveActor
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
Vector3 newpos;
|
Vector3 newpos;
|
||||||
if ( !mt ) mt = new("SimpleMoveTracer");
|
if ( !mt ) mt = new("SimpleMoveTracer");
|
||||||
|
|
@ -2534,6 +2594,11 @@ Class YnykronAltBeam : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(FRandom[Ynykron](.01,.02));
|
A_FadeOut(FRandom[Ynykron](.01,.02));
|
||||||
special2++;
|
special2++;
|
||||||
|
|
@ -2623,6 +2688,11 @@ Class YnykronAltShot : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() || IsActorPlayingSound(CHAN_VOICE) ) return;
|
if ( isFrozen() || IsActorPlayingSound(CHAN_VOICE) ) return;
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,11 @@ Class BigOrbiter : SWWMNonInteractiveActor
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
angle += anglevel;
|
angle += anglevel;
|
||||||
pitch += pitchvel;
|
pitch += pitchvel;
|
||||||
|
|
@ -1245,6 +1250,11 @@ Class BiosparkChildBeam : SWWMNonInteractiveActor
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( freezetics > 0 )
|
||||||
|
{
|
||||||
|
freezetics--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
A_FadeOut(.02);
|
A_FadeOut(.02);
|
||||||
if ( !CheckNoDelay() || (tics == -1) ) return;
|
if ( !CheckNoDelay() || (tics == -1) ) return;
|
||||||
|
|
|
||||||
|
|
@ -301,6 +301,7 @@ Class ExplodiumMagAttach : ExplodiumMagProj
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
|
if ( freezetics > 0 ) return;
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( bKILLED ) return;
|
if ( bKILLED ) return;
|
||||||
if ( atline ) // attempt to follow the movement of the line
|
if ( atline ) // attempt to follow the movement of the line
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue