More cheat stuff (includes a flag!).

This commit is contained in:
Mari the Deer 2021-04-29 23:26:34 +02:00
commit e6133c8a25
16 changed files with 417 additions and 11 deletions

View file

@ -177,9 +177,19 @@ extend Class SWWMHandler
{
if ( consoleplayer == e.Args[0] )
{
Console.Printf("\cyThere are no flags here.\c-");
S_StartSound("misc/nocheat",CHAN_ITEM,CHANF_UI);
Console.Printf("\cyLet your flag stand proud, Demolitionist.\c-");
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
}
let mo = players[e.Args[0]].mo;
Actor f = Actor(ThinkerIterator.Create("SWWMFlag").Next());
if ( !f ) f = mo.Spawn("SWWMFlag");
Vector2 spos = mo.Vec2Offset(cos(mo.angle)*40.,sin(mo.angle)*40.);
Sector sat = level.PointInSector(spos);
double sz = sat.NextLowestFloorAt(spos.x,spos.y,mo.player.viewz-32.);
f.SetOrigin((spos.x,spos.y,sz),false);
f.A_SetAngle(mo.angle);
f.Spawn("SWWMItemFog",f.pos);
f.A_StartSound("bestsound",CHAN_ITEMEXTRA);
}
else if ( e.Name ~== "swwmballcheat" )
{
@ -231,19 +241,30 @@ extend Class SWWMHandler
}
else if ( e.Name ~== "swwmfartcheat" )
{
let mo = players[e.Args[0]].mo;
if ( consoleplayer == e.Args[0] )
{
Console.Printf("\cyI'd rather not reimplement that one.\c-");
S_StartSound("misc/nocheat",CHAN_ITEM,CHANF_UI);
Console.Printf("\cyI regret implementing this.\c-");
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
S_StartSound("misc/omgfart",CHAN_VOICE,CHANF_UI);
}
else mo.A_StartSound("misc/omgfart",CHAN_VOICE,CHANF_OVERLAP,1.,.5);
let f = mo.Spawn("SWWMGasCloudSpawner",mo.Vec3Angle(mo.radius*.5,mo.angle-180,mo.Height*.4));
f.target = mo;
f.angle = mo.angle+180;
f.pitch = -mo.pitch;
}
else if ( e.Name ~== "swwmsupercheat" )
{
if ( consoleplayer == e.Args[0] )
{
Console.Printf("\cyNo, you're the Demolitionist.\c-");
S_StartSound("misc/nocheat",CHAN_ITEM,CHANF_UI);
Console.Printf("\cyNo, you're the Demolitionist. But with this thing, you'll also be invincible.\c-");
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
S_StartSound("misc/p_pkup",CHAN_VOICE,CHANF_UI);
}
let i = InvinciballPower(players[e.Args[0]].mo.FindInventory("InvinciballPower"));
if ( i ) i.EffectTics += i.default.EffectTics;
else players[e.Args[0]].mo.GiveInventory("InvinciballPower",1);
}
else if ( e.Name ~== "swwmstonecheat" )
{
@ -342,11 +363,11 @@ extend Class SWWMHandler
if ( kstr != cht[i].Left(kstr.length()) ) continue;
matchany = true;
if ( kstr != cht[i] ) continue;
if ( (i > 4) && !nostalgic )
if ( (i > 4) && !swwm_oldcheat )
{
let m = new("SWWMSecretZanavethMessage").Init();
StatusBar.AttachMessage(m,-1232);
nostalgic = true;
CVar.FindCVar('swwm_oldcheat').SetBool(true);
}
if ( SWWMUtility.CheatsDisabled(consoleplayer) )
{

View file

@ -367,7 +367,7 @@ Class SWWMSecretZanavethMessage : HUDMessageBase
int idx = punctuation.IndexOf(ch);
if ( idx >= 0 ) delay += (idx*2)+1;
charcnt++;
if ( charcnt >= TotalLength() ) delay += 90;
if ( charcnt >= TotalLength() ) delay += (seqnum==5)?90:40;
}
override bool Tick()

View file

@ -163,6 +163,134 @@ Class FroggyChair : Actor
}
}
// a flag
Class SWWMFlag : Actor
{
int seq;
override bool Used( Actor user )
{
seq = (seq+1)%4;
switch ( seq )
{
case 0:
SetStateLabel("Spawn");
break;
case 1:
SetStateLabel("FlagPride");
break;
case 2:
SetStateLabel("FlagTrans");
break;
case 3:
SetStateLabel("FlagEnby");
break;
}
A_StartSound("bestsound",CHAN_BODY,CHANF_OVERLAP);
return true;
}
Default
{
+SOLID;
+NOTELEPORT;
+DONTSPLASH;
Radius 2;
Height 104;
}
States
{
Spawn:
XZW1 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2;
XZW2 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2;
XZW3 ABCDEFGH 2;
Loop;
FlagPride:
XZW3 IJKLMNOPQRSTUVWXYZ 2;
XZW4 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2;
XZW5 ABCDEFGHIJKLMNOP 2;
Loop;
FlagTrans:
XZW5 QRSTUVWXYZ 2;
XZW6 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2;
XZW7 ABCDEFGHIJKLMNOPQRSTUVWX 2;
Loop;
FlagEnby:
XZW7 YZ 2;
XZW8 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2;
XZW9 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2;
XZWA ABCDEF 2;
Loop;
}
}
// oof
Class SWWMGasCloudSpawner : Actor
{
Default
{
Radius .1;
Height 0.;
+NOBLOCKMAP;
+NOTELEPORT;
+DONTSPLASH;
+NOINTERACTION;
}
override void Tick()
{
if ( !(special1%5) )
{
Vector3 x, y, z;
[x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll);
let c = Spawn("SWWMGasCloud",level.Vec3Offset(pos,x*(20+special1*12)));
c.target = target;
c.specialf1 = 1+special1/10.;
}
special1++;
if ( special1 > 20 ) Destroy();
}
}
Class SWWMGasCloud : Actor
{
Default
{
Radius .1;
Height 0.;
+NOBLOCKMAP;
+NOTELEPORT;
+DONTSPLASH;
+NOINTERACTION;
}
override void Tick()
{
for ( int i=0; i<2; i++ )
{
let e = Spawn("SWWMFart",level.Vec3Offset(pos,specialf1*(FRandom[ExploS](-20,20),FRandom[ExploS](-20,20),FRandom[ExploS](-20,20))));
e.target = target;
e.scale *= specialf1;
}
SWWMUtility.DoExplosion(self,Random[ExploS](2,6),0,60*specialf1,40,DE_NOBLEED|DE_NOSPLASH|DE_THRUWALLS|DE_HOWL,'Gas',target);
special1++;
if ( special1 >= 90 ) Destroy();
}
}
Class SWWMFart : SWWMHalfSmoke
{
Default
{
RenderStyle "Add";
Alpha .1;
}
States
{
Spawn:
FRT1 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 Bright;
FRT2 ABCDEFGHI 2 Bright;
Stop;
}
}
// yay!
Class FancyConfetti : Actor
{