Fun with dialogues.

This commit is contained in:
Mari the Deer 2021-09-14 18:40:22 +02:00
commit f6f2854bf6
96 changed files with 1565 additions and 161 deletions

View file

@ -76,6 +76,7 @@ extend Class SWWMHandler
if ( !w || (w == 'SWWMWeapon') ) continue;
let def = GetDefaultByType(w);
if ( def.bCHEATNOTWEAPON ) continue;
if ( w is 'Ynykron' ) continue; // traditionally not given, it's a separate cheat
let ow = players[e.Args[0]].mo.FindInventory(w);
if ( ow && (ow.Amount >= ow.MaxAmount) ) continue;
if ( ow ) ow.Amount = ow.MaxAmount;
@ -148,7 +149,7 @@ extend Class SWWMHandler
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
S_StartSound("misc/ammo_pkup",CHAN_VOICE,CHANF_UI);
}
players[e.Args[0]].mo.GiveInventory("HammerspaceEmbiggener",8,true);
players[e.Args[0]].mo.GiveInventory("TradedHammerspaceEmbiggener",8,true);
for ( Inventory i=players[e.Args[0]].mo.inv; i; i=i.inv )
{
if ( !(i is 'Ammo') ) continue;
@ -179,8 +180,27 @@ extend Class SWWMHandler
S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI);
S_StartSound("fabricator/use",CHAN_VOICE,CHANF_UI);
}
players[e.Args[0]].mo.CheatGive("all",0);
players[e.Args[0]].health = players[e.Args[0]].mo.health = 1000;
players[e.Args[0]].mo.GiveInventory("TradedHammerspaceEmbiggener",8,true);
for ( Inventory i=players[e.Args[0]].mo.inv; i; i=i.inv )
{
if ( !(i is 'Ammo') ) continue;
i.Amount = i.MaxAmount;
}
for ( int i=0; i<AllActorClasses.Size(); i++ )
{
let w = (Class<SWWMWeapon>)(AllActorClasses[i]);
if ( !w || (w == 'SWWMWeapon') ) continue;
let def = GetDefaultByType(w);
if ( def.bCHEATNOTWEAPON ) continue;
if ( w is 'Ynykron' ) continue; // traditionally not given, it's a separate cheat
let ow = players[e.Args[0]].mo.FindInventory(w);
if ( ow && (ow.Amount >= ow.MaxAmount) ) continue;
if ( ow ) ow.Amount = ow.MaxAmount;
else players[e.Args[0]].mo.GiveInventory(w,def.MaxAmount);
}
players[e.Args[0]].mo.CheatGive("armor",0);
players[e.Args[0]].mo.CheatGive("artifacts",0);
}
else if ( e.Name ~== "swwmflagcheat" )
{
@ -417,9 +437,15 @@ extend Class SWWMHandler
if ( kstr != cht[i].Left(kstr.length()) ) continue;
matchany = true;
if ( kstr != cht[i] ) continue;
if ( (i > 5) && !swwm_oldcheat )
if ( (i > 5) && !swwm_nomapmsg && !swwm_oldcheat )
{
let m = new("SWWMSecretZanavethMessage").Init();
let m = new("SWWMDirectMessage").Init("\chZanaveth\c-","\chZanaveth Nekuraku III\c-","Znv");
m.seqname = "ZNVTXT";
m.seqcnt = 5;
m.znvspecial = true;
m.delay = 80;
m.enddelay = 90;
m.pausedelay = 40;
StatusBar.AttachMessage(m,-1232);
CVar.FindCVar('swwm_oldcheat').SetBool(true);
}
@ -458,7 +484,7 @@ extend Class SWWMHandler
else
{
kcode++;
if ( kcode > 4 ) return true; // eat keypresses from this point
if ( kcode >= 4 ) return true; // eat keypresses from this point
}
}
return false;

View file

@ -1,5 +1,11 @@
// oneliner handling
Class LastLine
{
String type;
int lineno;
}
extend Class SWWMHandler
{
transient String oneliner, onelinersnd;

View file

@ -623,6 +623,15 @@ extend Class SWWMHandler
if ( e.Args[0] != consoleplayer ) return;
checklist.Clear();
}
else if ( e.Name ~== "swwmstorepuzzlecnt" )
{
let s = SWWMStats.Find(players[e.Args[0]]);
if ( s )
{
s.puzzlecnt = e.Args[1];
s.realpuzzlecnt = e.Args[2];
}
}
// cheats go here
else CheatEvent(e);
}

View file

@ -0,0 +1,361 @@
// misc. UI Tick stuff
extend Class SWWMHandler
{
ui bool didstartmsg;
bool doextramsg;
ui bool didextramsg;
private ui void MapstartUITick()
{
if ( !didextramsg && doextramsg )
{
if ( !swwm_nomapmsg )
{
// angry about phase two
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAEVIB";
msg.seqcnt = 2;
msg.delay = 20;
StatusBar.AttachMessage(msg,-1232);
}
didextramsg = true;
}
if ( didstartmsg ) return;
if ( swwm_nomapmsg )
{
didstartmsg = true;
return;
}
int whichboss = WhichVanillaBossMap();
if ( bossmap == MAP_DE1M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAPHOBOS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DE2M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADEIMOS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DE3M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADIS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DE4M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYATHY";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DMAP07 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADIMPLE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_DMAP30 )
{
// rampancy check
bool rampancy = false;
for ( int i=0; i<AllActorClasses.Size(); i++ )
{
if ( AllActorClasses[i].GetClassName() != "Robot_BossBrain" ) continue;
rampancy = true;
break;
}
if ( rampancy )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYARAMPANCY";
msg.seqcnt = 4;
msg.delay = 250;
StatusBar.AttachMessage(msg,-1232);
}
else
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAIOS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
}
else if ( bossmap == MAP_DLVL08 )
{
let msg = new("SWWMDirectMessage").Init("\cvCytho\c-",StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHONERVE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_EVMAP30 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAEVIA";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HE1M8_HE4M8 )
{
if ( level.mapname ~== "E1M8" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAMAW";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAHEADS";
msg.seqcnt = 6;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
}
else if ( bossmap == MAP_HE2M8_HE5M8 )
{
if ( level.mapname ~== "E2M8" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAMASTERS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYABULLS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
}
else if ( bossmap == MAP_HE3M8 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADSPARIL";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP38 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYACLERICA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYACLERICB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYACLERICC";
msg2.seqcnt = 2;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
else if ( bossmap == MAP_HMAP36 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAFIGHTER";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP37 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAMAGE";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP12 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAHYPO";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_HMAP40 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYAKORAXA";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYAKORAXB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYAKORAXC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYAKORAXD";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYAKORAXE";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
else if ( (bossmap == MAP_HMAP23_HMAP27_HMAP48_HMAP55) && (level.mapname ~== "MAP48") )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYACONSTABLEA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYACONSTABLEB";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYACONSTABLEC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYACONSTABLED";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
else if ( bossmap == MAP_HMAP60 )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYADEATHKINGS";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
else if ( bossmap == MAP_NONE ) // gotta get checksums here
{
String csum = level.GetChecksum();
// SIGIL E5M8
if ( (csum ~== "3D72FD17F36D2D43FD9A21E6E57EE357")
|| (csum ~== "09B30C9DA9D73D3D5A709502FBB947AA")
|| (csum ~== "6EAD80DA1F30B4B3546FA294EEF9F87C") )
{
let msg = new("SWWMDirectMessage").Init("\cvCytho\c-",StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHOSIGIL";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
}
// Deathkings
// Blight
else if ( csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYABLIGHTA";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYABLIGHTB";
msg2.seqcnt = 1;
msg2.delay = 5;
msg2.enddelay = 15;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYABLIGHTC";
msg2.seqcnt = 2;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
// Nave
else if ( csum ~== "E2B5D1400279335811C1C1C0B437D9C8" )
{
let msg = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg.seqname = "SAYANAVEA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
let msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYANAVEB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cxKirin\c-","\cxKirin Xanai\c-","Kirin");
msg2.seqname = "SAYANAVEC";
msg2.seqcnt = 1;
msg2.delay = 5;
msg2.enddelay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYANAVED";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\crIbuki\c-","\crIbuki Miyamoto\c-","Ibuki");
msg2.seqname = "SAYANAVEE";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init("\cgSaya\c-","\cgSaya Miyamoto\c-","Saya");
msg2.seqname = "SAYANAVEF";
msg2.seqcnt = 1;
msg2.delay = 40;
msg.nextmsg = msg2;
msg.nextdirect = true;
}
}
didstartmsg = true;
}
}

View file

@ -43,7 +43,7 @@ extend Class SWWMHandler
MAP_EVMAP30 // eviternity
};
private int WhichVanillaBossMap()
private clearscope int WhichVanillaBossMap() const
{
String mapsum = level.GetChecksum();
if ( (mapsum ~== "94500F4B006B316FE03AC46865AEABF8")
@ -319,6 +319,7 @@ extend Class SWWMHandler
if ( trk ) trk.bBOSS = true;
bosstag = "$BT_ARCHANGELUS";
e.Thing.GiveInventory('EndgameBossMarker',1);
doextramsg = true;
}
}
}

View file

@ -1,5 +1,22 @@
// WorldLoaded/WorldUnloaded events
Class RampancyLogonDummy : Actor
{
States
{
Spawn:
TNT1 A 7;
TNT1 AAAAAAAAAAAAAAAA 1
{
for ( int i=0; i<16; i++ )
A_Log("Remote login failed.");
}
TNT1 A 7;
TNT1 A 1 A_Log("\cgWARNING:\cj 256 failed remote login attempts have been reported in the last second.\c-");
Stop;
}
}
extend Class SWWMHandler
{
// list contains a sector that belongs to each portal group
@ -215,6 +232,24 @@ extend Class SWWMHandler
if ( (level.GetChecksum() ~== "F286BABF0D152259CD6B996E8920CA70")
|| (level.GetChecksum() ~== "A52BD2038CF814101AAB7D9C78F9ACE2") )
level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DVACATION_UNFUCK'));
// rampancy boss brain fix (repeatedly triggering "map clear")
let ti = ThinkerIterator.Create("Actor");
Actor a, brain;
bool haseye = false;
while ( a = Actor(ti.Next()) )
{
if ( a.GetClassName() == "Robot_BossEye" )
haseye = true;
if ( a.GetClassName() == "Robot_BossBrain" )
brain = a;
}
if ( haseye && brain )
{
brain.bCOUNTKILL = true;
level.total_monsters++;
// while we're at it
Actor.Spawn("RampancyLogonDummy");
}
// setup cached lockdefs data
let cli = SWWMCachedLockInfo.GetInstance();
if ( cli.ent.Size() == 0 ) SetupLockdefsCache(cli);
@ -327,7 +362,7 @@ extend Class SWWMHandler
// spawn loot
if ( !deathmatch ) Chancebox.SpawnChanceboxes();
// list map keys
let ti = ThinkerIterator.Create("Key");
ti = ThinkerIterator.Create("Key");
Key k;
while ( k = Key(ti.Next()) )
{