4.10 support update (unfinished and untested).

This commit is contained in:
Mari the Deer 2022-12-05 02:10:56 +01:00
commit 8e952f412f
80 changed files with 2343 additions and 2356 deletions

View file

@ -0,0 +1,994 @@
// dialogue sequences
enum SWWMDialogue
{
SWWMDLG_None = 0, // dummy
SWWMDLG_PHOBOS,
SWWMDLG_DEIMOS,
SWWMDLG_DIS,
SWWMDLG_THY,
SWWMDLG_SIGIL,
SWWMDLG_DIMPLE,
SWWMDLG_CIRCLE,
SWWMDLG_GOTCHA,
SWWMDLG_GOTCHAEND,
SWWMDLG_IOS,
SWWMDLG_RAMPANCY,
SWWMDLG_NERVE,
SWWMDLG_DMN,
SWWMDLG_CRE,
SWWMDLG_CRY,
SWWMDLG_CON,
SWWMDLG_SLA,
SWWMDLG_EVIA,
SWWMDLG_EVIB,
SWWMDLG_MAW,
SWWMDLG_PORTALS,
SWWMDLG_DSPARIL,
SWWMDLG_HEADS,
SWWMDLG_BULLS,
SWWMDLG_GREET,
SWWMDLG_BLOOD,
SWWMDLG_HYPO,
SWWMDLG_WORSHIP,
SWWMDLG_GAME,
SWWMDLG_MASTERS,
SWWMDLG_FIGHTER,
SWWMDLG_CLERIC,
SWWMDLG_MAGE,
SWWMDLG_KORAX,
SWWMDLG_BLIGHT,
SWWMDLG_CONSTABLE,
SWWMDLG_NAVE,
SWWMDLG_DEATHKINGS,
SWWMDLG_PUZZLE1,
SWWMDLG_PUZZLE2,
SWWMDLG_PUZZLE3,
SWWMDLG_PUZZLE4,
SWWMDLG_PUZZLE5,
SWWMDLG_PUZZLE6,
SWWMDLG_PUZZLE7,
SWWMDLG_PUZZLE8,
SWWMDLG_PUZZLE9,
SWWMDLG_CHEATS,
SWWMDLG_WASTE1,
SWWMDLG_WASTE2,
SWWMDLG_WASTE3,
SWWMDLG_WASTE4,
SWWMDLG_WASTE5,
SWWMDLG_WASTE6,
SWWMDLG_LEVER1,
SWWMDLG_LEVER2,
SWWMDLG_LEVER3,
SWWMDLG_LEVER4,
SWWMDLG_LEVER5,
SWWMDLG_LEVER6,
SWWMDLG_LEVER7,
SWWMDLG_FOOL,
SWWMDLG_CC,
SWWMDLG_LILITH,
SWWMDLG_ROMERO,
NUM_SWWMDLG
};
// this immense string of spaghetti code should be proof enough of the fact I did not think things through when writing the message system
Class SWWMDialogues abstract
{
// try to work around "too many registers" by splitting the pasta into chunks
private static ui void StartSeq_SubA( int dlg )
{
SWWMDirectMessage msg, msg2;
switch ( dlg )
{
case SWWMDLG_PHOBOS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAPHOBOS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_DEIMOS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYADEIMOS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_DIS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYADIS";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_THY:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYATHY";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_SIGIL:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHOSIGIL";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_DIMPLE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYADIMPLE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_CIRCLE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYACIRCLE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_GOTCHA:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAGOTCHA";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_GOTCHAEND:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAGOTCHAEND";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_IOS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAIOS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_RAMPANCY:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYARAMPANCY";
msg.seqcnt = 4;
msg.delay = 250;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_NERVE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHONERVE";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_DMN:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYADMN";
msg.seqcnt = 8;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_CRE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYACRE";
msg.seqcnt = 4;
msg.delay = 50;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_CRY:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYACRY";
msg.seqcnt = 5;
msg.delay = 30;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_CON:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYACON";
msg.seqcnt = 5;
msg.delay = 50;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_SLA:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYASLA";
msg.seqcnt = 1;
msg.delay = 120;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_EVIA:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAEVIA";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_EVIB:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAEVIB";
msg.seqcnt = 2;
msg.delay = 20;
StatusBar.AttachMessage(msg,-1232);
break;
}
}
private static ui void StartSeq_SubB( int dlg )
{
SWWMDirectMessage msg, msg2;
switch ( dlg )
{
case SWWMDLG_MAW:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAMAW";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PORTALS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAPORTALS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_DSPARIL:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYADSPARIL";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_HEADS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAHEADS";
msg.seqcnt = 6;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_BULLS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYABULLS";
msg.seqcnt = 5;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_GREET:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAGREETA";
msg.seqcnt = 3;
msg.delay = 150;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYAGREETB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAGREETC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYAGREETD";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAGREETE";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYAGREETF";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_BLOOD:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYABLOODA";
msg.seqcnt = 2;
msg.delay = 220;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYABLOODB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYABLOODC";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYABLOODD";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_HYPO:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAHYPO";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WORSHIP:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINWORSHIPA";
msg.seqcnt = 1;
msg.delay = 150;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINWORSHIPB";
msg2.seqcnt = 1;
msg2.delay = 40;
msg2.enddelay = 10;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "KIRINWORSHIPC";
msg2.seqcnt = 1;
msg2.delay = 10;
msg2.enddelay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINWORSHIPD";
msg2.seqcnt = 2;
msg2.delay = 10;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "KIRINWORSHIPE";
msg2.seqcnt = 1;
msg2.delay = 20;
msg2.enddelay = 10;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINWORSHIPF";
msg2.seqcnt = 1;
msg2.delay = 10;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_GAME:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAGAMEA";
msg.seqcnt = 2;
msg.delay = 200;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYAGAMEB";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAGAMEC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_MASTERS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAMASTERSA";
msg.seqcnt = 2;
msg.delay = 150;
msg.enddelay = 60;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYAMASTERSB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAMASTERSC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYAMASTERSD";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYAMASTERSE";
msg2.seqcnt = 1;
msg2.delay = 40;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAMASTERSF";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_FIGHTER:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAFIGHTER";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_CLERIC:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYACLERICA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYACLERICB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYACLERICC";
msg2.seqcnt = 2;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_MAGE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAMAGE";
msg.seqcnt = 4;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_KORAX:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAKORAXA";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYAKORAXB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYAKORAXC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAKORAXD";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "SAYAKORAXE";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_BLIGHT:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYABLIGHTA";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"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(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYABLIGHTC";
msg2.seqcnt = 2;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_CONSTABLE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYACONSTABLEA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYACONSTABLEB";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYACONSTABLEC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYACONSTABLED";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_NAVE:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYANAVEA";
msg.seqcnt = 2;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYANAVEB";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"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(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYANAVED";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "SAYANAVEE";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYANAVEF";
msg2.seqcnt = 1;
msg2.delay = 40;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_DEATHKINGS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYADEATHKINGS";
msg.seqcnt = 1;
msg.delay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
}
}
private static ui void StartSeq_SubC( int dlg )
{
SWWMDirectMessage msg, msg2;
switch ( dlg )
{
case SWWMDLG_PUZZLE1:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEA";
msg.seqcnt = 2;
msg.delay = 90;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PUZZLE2:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEB";
msg.seqcnt = 1;
msg.delay = 80;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PUZZLE3:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEC";
msg.seqcnt = 2;
msg.delay = 70;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PUZZLE4:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLED";
msg.seqcnt = 2;
msg.delay = 70;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PUZZLE5:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEE";
msg.seqcnt = 2;
msg.delay = 60;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PUZZLE6:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEF";
msg.seqcnt = 3;
msg.delay = 60;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINPUZZLEG";
msg2.seqcnt = 1;
msg.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "KIRINPUZZLEH";
msg2.seqcnt = 1;
msg.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINPUZZLEI";
msg2.seqcnt = 2;
msg.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_PUZZLE7:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEJ";
msg.seqcnt = 2;
msg.delay = 80;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_PUZZLE8:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLEK";
msg.seqcnt = 1;
msg.delay = 60;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "KIRINPUZZLEL";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "KIRINPUZZLEM";
msg2.seqcnt = 1;
msg2.delay = 10;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINPUZZLEN";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "KIRINPUZZLEO";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINPUZZLEP";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
msg2.seqname = "KIRINPUZZLEQ";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_PUZZLE9:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg.seqname = "KIRINPUZZLER";
msg.seqcnt = 3;
msg.delay = 60;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINPUZZLES";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
msg2.seqname = "KIRINPUZZLET";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "KIRINPUZZLEU";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_CHEATS:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_ZNVSNAME"),StringTable.Localize("$SWWM_ZNVNAME"),"Znv");
msg.seqname = "ZNVTXT";
msg.seqcnt = 5;
msg.znvspecial = true;
msg.delay = 80;
msg.enddelay = 90;
msg.pausedelay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WASTE1:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAWASTEA";
msg.seqcnt = 1;
msg.delay = 5;
msg.startdelay = 10;
msg.enddelay = 25;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WASTE2:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAWASTEB";
msg.seqcnt = 1;
msg.delay = 10;
msg.startdelay = 20;
msg.enddelay = 30;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WASTE3:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAWASTEC";
msg.seqcnt = 1;
msg.delay = 30;
msg.startdelay = 15;
msg.enddelay = 25;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WASTE4:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAWASTED";
msg.seqcnt = 2;
msg.delay = 40;
msg.startdelay = 10;
msg.enddelay = 20;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WASTE5:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAWASTEE";
msg.seqcnt = 1;
msg.delay = 20;
msg.startdelay = 10;
msg.enddelay = 30;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_WASTE6:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAWASTEF";
msg.seqcnt = 1;
msg.delay = 50;
msg.startdelay = 20;
msg.enddelay = 30;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER1:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERA";
msg.seqcnt = 1;
msg.delay = 5;
msg.startdelay = 20;
msg.enddelay = 50;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER2:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERB";
msg.seqcnt = 1;
msg.delay = 10;
msg.startdelay = 30;
msg.enddelay = 40;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER3:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERC";
msg.seqcnt = 1;
msg.delay = 30;
msg.startdelay = 10;
msg.enddelay = 25;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER4:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERD";
msg.seqcnt = 1;
msg.delay = 40;
msg.startdelay = 10;
msg.enddelay = 20;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER5:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERE";
msg.seqcnt = 1;
msg.delay = 20;
msg.startdelay = 10;
msg.enddelay = 30;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER6:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERF";
msg.seqcnt = 1;
msg.delay = 50;
msg.startdelay = 20;
msg.enddelay = 30;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_LEVER7:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALEVERG";
msg.seqcnt = 2;
msg.delay = 50;
msg.startdelay = 30;
msg.enddelay = 50;
StatusBar.AttachMessage(msg,-1232);
break;
}
}
private static ui void StartSeq_SubD( int dlg )
{
SWWMDirectMessage msg, msg2;
switch ( dlg )
{
case SWWMDLG_FOOL:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAFOOL";
msg.seqcnt = 5;
msg.delay = 120;
StatusBar.AttachMessage(msg,-1232);
break;
case SWWMDLG_CC:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg.seqname = "CYTHOCCA";
msg.seqcnt = 4;
msg.delay = 120;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "CYTHOCCB";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg2.seqname = "CYTHOCCC";
msg2.seqcnt = 1;
msg2.delay = 45;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_LILITH:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYALILITHA";
msg.seqcnt = 2;
msg.delay = 1050; // give it about 15 seconds for it to happen
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg2.seqname = "SAYALILITHB";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYALILITHC";
msg2.seqcnt = 1;
msg2.delay = 20;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg2.seqname = "SAYALILITHD";
msg2.seqcnt = 1;
msg2.delay = 40;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYALILITHE";
msg2.seqcnt = 1;
msg2.delay = 50;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
case SWWMDLG_ROMERO:
msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg.seqname = "SAYAROMEROA";
msg.seqcnt = 1;
msg.delay = 50;
StatusBar.AttachMessage(msg,-1232);
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg2.seqname = "SAYAROMEROB";
msg2.seqcnt = 1;
msg2.delay = 40;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAROMEROC";
msg2.seqcnt = 1;
msg2.delay = 30;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_CYTHOSNAME"),StringTable.Localize("$SWWM_CYTHONAME"),"Cytho");
msg2.seqname = "SAYAROMEROD";
msg2.seqcnt = 2;
msg2.delay = 50;
msg.nextmsg = msg2;
msg.nextdirect = true;
msg = msg2;
msg2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
msg2.seqname = "SAYAROMEROE";
msg2.seqcnt = 1;
msg2.delay = 70;
msg.nextmsg = msg2;
msg.nextdirect = true;
break;
}
}
static ui void StartSeq( int dlg )
{
if ( swwm_nomapmsg ) return;
if ( dlg < SWWMDLG_MAW ) StartSeq_SubA(dlg);
else if ( dlg < SWWMDLG_PUZZLE1 ) StartSeq_SubB(dlg);
else if ( dlg < SWWMDLG_FOOL ) StartSeq_SubC(dlg);
else StartSeq_SubD(dlg);
}
}

View file

@ -234,167 +234,6 @@ Class SWWMStatusBar : BaseStatusBar
override bool ProcessMidPrint( Font fnt, String msg, bool bold )
{
// hack lol
if ( msg.Left(15) ~== "swwmwpntooltip." )
{
String wname = msg.Mid(15);
Class<SWWMWeapon> w = wname;
if ( w )
{
let tt = new("SWWMWeaponTooltip").Init(w);
bool appended = false;
for ( SWWMWeaponTooltip t=ctip; t; t=t.next )
{
if ( t.next ) continue;
appended = true;
t.next = tt;
break;
}
if ( !appended )
{
ctip = tt;
AttachMessage(tt,-2910);
}
}
return true;
}
else if ( msg.Left(11) ~== "swwmkeyget." )
{
String kname = msg.Mid(11);
Class<Key> k = kname;
if ( k )
{
let kg = new("KeyGet");
kg.got = k;
kg.flashtime = gametic+25;
keyflash.Push(kg);
}
return true;
}
SWWMDirectMessage m, m2;
// more hack
if ( msg ~== "swwmultdoom2map20dlg" )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m.seqname = "SAYAGOTCHAEND";
m.seqcnt = 5;
m.delay = 40;
AttachMessage(m,-1232);
return true;
}
else if ( msg.Left(25) ~== "swwmsilverbulleteasteregg" )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
let num = msg.Mid(25).ToInt();
switch ( num )
{
case 1:
default:
m.seqname = "SAYAWASTEA";
m.seqcnt = 1;
m.delay = 5;
m.startdelay = 10;
m.enddelay = 25;
break;
case 2:
m.seqname = "SAYAWASTEB";
m.seqcnt = 1;
m.delay = 10;
m.startdelay = 20;
m.enddelay = 30;
break;
case 3:
m.seqname = "SAYAWASTEC";
m.seqcnt = 1;
m.delay = 30;
m.startdelay = 15;
m.enddelay = 25;
break;
case 4:
m.seqname = "SAYAWASTED";
m.seqcnt = 2;
m.delay = 40;
m.startdelay = 10;
m.enddelay = 20;
break;
case 5:
m.seqname = "SAYAWASTEE";
m.seqcnt = 1;
m.delay = 20;
m.startdelay = 10;
m.enddelay = 30;
break;
case 6:
m.seqname = "SAYAWASTEF";
m.seqcnt = 1;
m.delay = 50;
m.startdelay = 20;
m.enddelay = 30;
break;
}
AttachMessage(m,-1232);
return true;
}
else if ( msg.Left(22) ~== "swwmquadravoleasteregg" )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
let num = msg.Mid(22).ToInt();
switch ( num )
{
case 1:
default:
m.seqname = "SAYALEVERA";
m.seqcnt = 1;
m.delay = 5;
m.startdelay = 20;
m.enddelay = 50;
break;
case 2:
m.seqname = "SAYALEVERB";
m.seqcnt = 1;
m.delay = 10;
m.startdelay = 30;
m.enddelay = 40;
break;
case 3:
m.seqname = "SAYALEVERC";
m.seqcnt = 1;
m.delay = 30;
m.startdelay = 10;
m.enddelay = 25;
break;
case 4:
m.seqname = "SAYALEVERD";
m.seqcnt = 1;
m.delay = 40;
m.startdelay = 10;
m.enddelay = 20;
break;
case 5:
m.seqname = "SAYALEVERE";
m.seqcnt = 1;
m.delay = 20;
m.startdelay = 10;
m.enddelay = 30;
break;
case 6:
m.seqname = "SAYALEVERF";
m.seqcnt = 1;
m.delay = 50;
m.startdelay = 20;
m.enddelay = 30;
break;
case 7:
m.seqname = "SAYALEVERG";
m.seqcnt = 2;
m.delay = 50;
m.startdelay = 30;
m.enddelay = 50;
break;
}
AttachMessage(m,-1232);
return true;
}
// check for Korax lines, add them to chat (and reply to some of them)
bool koraxline = false;
if ( msg == StringTable.Localize("$TXT_ACS_MAP02_9_GREET") )
@ -403,81 +242,13 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",0,consoleplayer);
koraxline = true;
if ( !swwm_nomapmsg )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m.seqname = "SAYAGREETA";
m.seqcnt = 3;
m.delay = 150;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "SAYAGREETB";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "SAYAGREETC";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "SAYAGREETD";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "SAYAGREETE";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "SAYAGREETF";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
}
SWWMDialogues.StartSeq(SWWMDLG_GREET);
}
else if ( msg == StringTable.Localize("$TXT_ACS_MAP13_11_MYSER") )
{
EventHandler.SendNetworkEvent("swwmkoraxline",1,consoleplayer);
koraxline = true;
if ( !swwm_nomapmsg )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m.seqname = "SAYABLOODA";
m.seqcnt = 2;
m.delay = 220;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "SAYABLOODB";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "SAYABLOODC";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "SAYABLOODD";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
}
SWWMDialogues.StartSeq(SWWMDLG_BLOOD);
}
else if ( msg == StringTable.Localize("$TXT_ACS_MAP22_27_YOUHA") )
koraxline = true;
@ -485,27 +256,7 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",2,consoleplayer);
koraxline = true;
if ( !swwm_nomapmsg )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m.seqname = "SAYAGAMEA";
m.seqcnt = 2;
m.delay = 200;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "SAYAGAMEB";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "SAYAGAMEC";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
}
SWWMDialogues.StartSeq(SWWMDLG_GAME);
}
else if ( msg == StringTable.Localize("$TXT_ACS_MAP27_8_WORSH") )
koraxline = true;
@ -513,51 +264,7 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",3,consoleplayer);
koraxline = true;
if ( !swwm_nomapmsg )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINWORSHIPA";
m.seqcnt = 1;
m.delay = 150;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINWORSHIPB";
m2.seqcnt = 1;
m2.delay = 40;
m2.enddelay = 10;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "KIRINWORSHIPC";
m2.seqcnt = 1;
m2.delay = 10;
m2.enddelay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINWORSHIPD";
m2.seqcnt = 2;
m2.delay = 10;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "KIRINWORSHIPE";
m2.seqcnt = 1;
m2.delay = 20;
m2.enddelay = 10;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINWORSHIPF";
m2.seqcnt = 1;
m2.delay = 10;
m.nextmsg = m2;
m.nextdirect = true;
}
SWWMDialogues.StartSeq(SWWMDLG_WORSHIP);
}
else if ( msg == StringTable.Localize("$TXT_ACS_MAP35_12_AREYO") )
koraxline = true;
@ -565,49 +272,7 @@ Class SWWMStatusBar : BaseStatusBar
{
EventHandler.SendNetworkEvent("swwmkoraxline",4,consoleplayer);
koraxline = true;
if ( !swwm_nomapmsg )
{
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m.seqname = "SAYAMASTERSA";
m.seqcnt = 2;
m.delay = 150;
m.enddelay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "SAYAMASTERSB";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "SAYAMASTERSC";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "SAYAMASTERSD";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "SAYAMASTERSE";
m2.seqcnt = 1;
m2.delay = 40;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "SAYAMASTERSF";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
}
SWWMDialogues.StartSeq(SWWMDLG_MASTERS);
}
if ( koraxline )
{
@ -687,148 +352,31 @@ Class SWWMStatusBar : BaseStatusBar
switch ( puzzlecnt )
{
case 1:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEA";
m.seqcnt = 2;
m.delay = 90;
AttachMessage(m,-1232);
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE1);
break;
case 2:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEB";
m.seqcnt = 1;
m.delay = 80;
AttachMessage(m,-1232);
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE2);
break;
case 3:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEC";
m.seqcnt = 2;
m.delay = 70;
AttachMessage(m,-1232);
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE3);
break;
case 5:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLED";
m.seqcnt = 2;
m.delay = 70;
AttachMessage(m,-1232);
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE4);
break;
case 8:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEE";
m.seqcnt = 2;
m.delay = 60;
AttachMessage(m,-1232);
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE5);
break;
case 11:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEF";
m.seqcnt = 3;
m.delay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINPUZZLEG";
m2.seqcnt = 1;
m.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "KIRINPUZZLEH";
m2.seqcnt = 1;
m.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINPUZZLEI";
m2.seqcnt = 2;
m.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE6);
break;
case 20:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEJ";
m.seqcnt = 2;
m.delay = 80;
AttachMessage(m,-1232);
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE7);
break;
case 30:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLEK";
m.seqcnt = 1;
m.delay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "KIRINPUZZLEL";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "KIRINPUZZLEM";
m2.seqcnt = 1;
m2.delay = 10;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINPUZZLEN";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "KIRINPUZZLEO";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINPUZZLEP";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki");
m2.seqname = "KIRINPUZZLEQ";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE8);
break;
case 31:
m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m.seqname = "KIRINPUZZLER";
m.seqcnt = 3;
m.delay = 60;
AttachMessage(m,-1232);
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINPUZZLES";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin");
m2.seqname = "KIRINPUZZLET";
m2.seqcnt = 1;
m2.delay = 30;
m.nextmsg = m2;
m.nextdirect = true;
m = m2;
m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya");
m2.seqname = "KIRINPUZZLEU";
m2.seqcnt = 1;
m2.delay = 20;
m.nextmsg = m2;
m.nextdirect = true;
SWWMDialogues.StartSeq(SWWMDLG_PUZZLE9);
break;
}
}
@ -1120,22 +668,8 @@ Class SWWMStatusBar : BaseStatusBar
}
}
lastwep = CPlayer.PendingWeapon;
// make sure vanilla nametags don't display
DetachMessageID(0x5745504e); // WEPN
DetachMessageID(0x53494e56); // SINV
// also try with different endianness, just in case
DetachMessageID(0x4e504557); // WEPN
DetachMessageID(0x564e4953); // SINV
// deathmatch stuff
if ( !deathmatch ) return;
// forcibly strip these messages
// (I decided to drop MP support, so even though there are no
// actual spree/multikill announcements in this mod, keeping
// the vanilla ones out is important for graphical consistency)
DetachMessageID(0x4b535052); // KSPR
DetachMessageID(0x5250534b);
DetachMessageID(0x4d4b494c); // MKIL
DetachMessageID(0x4c494b4d);
if ( teamplay )
{
if ( teamactive.Size() != Teams.Size() ) teamactive.Resize(Teams.Size());
@ -2008,13 +1542,48 @@ Class SWWMStatusBar : BaseStatusBar
}
private bool CheckFFBoundary( Line l )
{
if ( !hnd || !hnd.ffsectors.Size() ) return false;
int frontidx = hnd.ffsectors.Find(l.frontsector.Index());
int backidx = hnd.ffsectors.Find(l.backsector.Index());
int fcount = l.frontsector.Get3DFloorCount(),
bcount = l.backsector.Get3DFloorCount();
// no 3D floors, no boundary
if ( (frontidx == hnd.ffsectors.Size()) && (backidx == frontidx) )
return false;
return true;
if ( !fcount && !bcount ) return false;
int fvalid = 0, bvalid = 0;
for ( int i=0; i<fcount; i++ )
{
F3DFloor ff = l.frontsector.Get3DFloor(i);
if ( (ff.flags&F3DFloor.FF_THISINSIDE) || !(ff.flags&F3DFloor.FF_EXISTS) || (ff.alpha == 0) )
continue;
fvalid++;
}
for ( int i=0; i<bcount; i++ )
{
F3DFloor ff = l.backsector.Get3DFloor(i);
if ( (ff.flags&F3DFloor.FF_THISINSIDE) || !(ff.flags&F3DFloor.FF_EXISTS) || (ff.alpha == 0) )
continue;
bvalid++;
}
// unmatched counts, there's definitely a boundary
if ( fvalid != bvalid ) return true;
for ( int i=0; i<fcount; i++ )
{
F3DFloor ff = l.frontsector.Get3DFloor(i);
if ( (ff.flags&F3DFloor.FF_THISINSIDE) || !(ff.flags&F3DFloor.FF_EXISTS) || (ff.alpha == 0) )
continue;
bool found = false;
for ( int j=0; j<bcount; j++ )
{
F3DFloor ff2 = l.frontsector.Get3DFloor(i);
if ( (ff2.flags&F3DFloor.FF_THISINSIDE) || !(ff2.flags&F3DFloor.FF_EXISTS) || (ff2.alpha == 0) )
continue;
if ( (ff.model != ff2.model) || (ff.flags != ff2.flags) )
continue;
found = true;
break;
}
// at least one mismatch between sectors, there's a boundary for sure
if ( !found ) return true;
}
// no boundary here
return false;
}
private void DrawMapLines( Vector2 basepos )
@ -2023,102 +1592,109 @@ Class SWWMStatusBar : BaseStatusBar
double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel;
Vector2 cpos = SWWMUtility.LerpVector2(players[consoleplayer].Camera.prev.xy,players[consoleplayer].Camera.pos.xy,FracTic);
Sector csec = players[consoleplayer].Camera.CurSector;
for ( int i=0; i<level.lines.Size(); i++ )
int thisgroup = csec.portalgroup;
int numgroups = level.GetPortalGroupCount();
// draw overlays first
for ( int p=numgroups-1; p >= -1; p-- )
{
Line l = level.lines[i];
if ( !(l.flags&Line.ML_MAPPED) && !level.allmap && !am_cheat ) continue;
if ( (l.flags&Line.ML_DONTDRAW) && ((am_cheat == 0) || (am_cheat >= 4)) )
continue;
Vector2 rv1 = l.v1.p-cpos, rv2 = l.v2.p-cpos;
bool isportal = false;
Sector linesector;
if ( l.sidedef[0].flags&Side.WALLF_POLYOBJ ) linesector = level.PointInSector(l.v1.p+l.delta/2.);
else linesector = l.frontsector;
isportal = (linesector.portalgroup!=csec.portalgroup);
if ( isportal )
if ( p == thisgroup ) continue;
foreach ( l : level.lines )
{
// portal displacement
Vector2 pofs = SWWMUtility.PortalDisplacement(csec,linesector);
rv1 -= pofs;
rv2 -= pofs;
}
Vector2 mid = (rv1+rv2)/2.;
Vector2 siz = (abs(rv1.x-rv2.x),abs(rv1.y-rv2.y))/2.;
if ( (((siz.x+zoomview)-abs(mid.x)) <= 0) || (((siz.y+zoomview)-abs(mid.y)) <= 0) )
continue;
// flip Y
rv1.y *= -1;
rv2.y *= -1;
// rotate by view
rv1 = Actor.RotateVector(rv1,ViewRot.x-90);
rv2 = Actor.RotateVector(rv2,ViewRot.x-90);
// clip to frame
bool visible;
[visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2);
if ( !visible ) continue;
// scale to minimap frame
rv1 *= (HALFMAPSIZE/zoomclip)*hs;
rv2 *= (HALFMAPSIZE/zoomclip)*hs;
// offset to minimap center
rv1 += basepos;
rv2 += basepos;
// get the line color
Color col = mm_wallcolor;
if ( (l.flags&Line.ML_MAPPED) || am_cheat )
{
int secwit = CheckSecret(l);
int lock = SWWMUtility.GetLineLock(l);
if ( secwit == 1 ) col = mm_secretsectorcolor;
else if ( secwit == 2 ) col = mm_unexploredsecretcolor;
else if ( l.flags&Line.ML_SECRET )
if ( !(l.flags&Line.ML_MAPPED) && !level.allmap && !am_cheat ) continue;
if ( (l.flags&Line.ML_DONTDRAW) && ((am_cheat == 0) || (am_cheat >= 4)) )
continue;
Vector2 rv1 = l.v1.p-cpos, rv2 = l.v2.p-cpos;
int lgroup;
if ( l.sidedef[0].flags&Side.WALLF_POLYOBJ ) lgroup = level.PointInSector(l.v1.p+l.delta/2.).portalgroup;
else lgroup = l.frontsector.portalgroup;
bool isportal = ((numgroups>0)&&(lgroup!=thisgroup));
if ( lgroup == p )
{
if ( am_cheat && l.backsector && mm_secretwallcolor )
col = mm_secretwallcolor;
else col = mm_wallcolor;
// portal displacement
Vector2 pofs = level.GetDisplacement(lgroup,thisgroup);
rv1 += pofs;
rv2 += pofs;
}
else if ( mm_interlevelcolor
&& ((l.special == Exit_Normal)
|| (l.special == Exit_Secret)
|| (l.special == Teleport_NewMap)
|| (l.special == Teleport_EndGame)) )
col = mm_interlevelcolor;
else if ( mm_intralevelcolor &&
(l.activation&SPAC_PlayerActivate)
&& ((l.special == Teleport)
|| (l.special == Teleport_NoFog)
|| (l.special == Teleport_ZombieChanger)
|| (l.special == Teleport_Line)) )
col = mm_intralevelcolor;
else if ( mm_displaylocks
&& (lock > 0) && (lock < 256) )
else if ( (p != -1) || (lgroup != thisgroup) )
continue;
Vector2 mid = (rv1+rv2)/2.;
Vector2 siz = (abs(rv1.x-rv2.x),abs(rv1.y-rv2.y))/2.;
if ( (((siz.x+zoomview)-abs(mid.x)) <= 0) || (((siz.y+zoomview)-abs(mid.y)) <= 0) )
continue;
// flip Y
rv1.y *= -1;
rv2.y *= -1;
// rotate by view
rv1 = Actor.RotateVector(rv1,ViewRot.x-90);
rv2 = Actor.RotateVector(rv2,ViewRot.x-90);
// clip to frame
bool visible;
[visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2);
if ( !visible ) continue;
// scale to minimap frame
rv1 *= (HALFMAPSIZE/zoomclip)*hs;
rv2 *= (HALFMAPSIZE/zoomclip)*hs;
// offset to minimap center
rv1 += basepos;
rv2 += basepos;
// get the line color
Color col = mm_wallcolor;
if ( (l.flags&Line.ML_MAPPED) || am_cheat )
{
let lcol = SWWMUtility.GetLockColor(lock);
if ( lcol ) col = lcol;
else col = mm_lockedcolor;
}
else if ( mm_specialwallcolor && ShowTriggerLine(l) )
col = mm_specialwallcolor;
else if ( l.frontsector && l.backsector )
{
if ( !CmpFloorPlanes(l) ) col = mm_fdwallcolor;
else if ( !CmpCeilingPlanes(l) ) col = mm_cdwallcolor;
else if ( CheckFFBoundary(l) ) col = mm_efwallcolor;
else
int secwit = CheckSecret(l);
int lock = SWWMUtility.GetLineLock(l);
if ( secwit == 1 ) col = mm_secretsectorcolor;
else if ( secwit == 2 ) col = mm_unexploredsecretcolor;
else if ( l.flags&Line.ML_SECRET )
{
if ( (am_cheat == 0) || (am_cheat >= 4) )
continue;
col = mm_tswallcolor;
if ( am_cheat && l.backsector && mm_secretwallcolor )
col = mm_secretwallcolor;
else col = mm_wallcolor;
}
else if ( mm_interlevelcolor
&& ((l.special == Exit_Normal)
|| (l.special == Exit_Secret)
|| (l.special == Teleport_NewMap)
|| (l.special == Teleport_EndGame)) )
col = mm_interlevelcolor;
else if ( mm_intralevelcolor &&
(l.activation&SPAC_PlayerActivate)
&& ((l.special == Teleport)
|| (l.special == Teleport_NoFog)
|| (l.special == Teleport_ZombieChanger)
|| (l.special == Teleport_Line)) )
col = mm_intralevelcolor;
else if ( mm_displaylocks
&& (lock > 0) && (lock < 256) )
{
let lcol = SWWMUtility.GetLockColor(lock);
if ( lcol ) col = lcol;
else col = mm_lockedcolor;
}
else if ( mm_specialwallcolor && ShowTriggerLine(l) )
col = mm_specialwallcolor;
else if ( l.frontsector && l.backsector )
{
if ( !CmpFloorPlanes(l) ) col = mm_fdwallcolor;
else if ( !CmpCeilingPlanes(l) ) col = mm_cdwallcolor;
else if ( CheckFFBoundary(l) ) col = mm_efwallcolor;
else
{
if ( (am_cheat == 0) || (am_cheat >= 4) )
continue;
col = mm_tswallcolor;
}
}
}
else col = mm_notseencolor;
// draw the line
if ( isportal )
{
col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8);
Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),col);
}
else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.5),col);
}
else col = mm_notseencolor;
// draw the line
if ( isportal )
{
col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8);
Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),col);
}
else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.5),col);
}
}
private void DrawMapMarkers( Vector2 basepos )
@ -2159,7 +1735,7 @@ Class SWWMStatusBar : BaseStatusBar
{
isportal = true;
// portal displacement
rv -= SWWMUtility.PortalDisplacement(csec,sec);
rv += level.GetDisplacement(sec.portalgroup,csec.portalgroup);
}
if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) )
continue;
@ -2184,7 +1760,7 @@ Class SWWMStatusBar : BaseStatusBar
{
isportal = true;
// portal displacement
rv -= SWWMUtility.PortalDisplacement(csec,sec);
rv += level.GetDisplacement(sec.portalgroup,csec.portalgroup);
}
if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) )
continue;
@ -2256,7 +1832,7 @@ Class SWWMStatusBar : BaseStatusBar
{
isportal = true;
// portal displacement
rv -= SWWMUtility.PortalDisplacement(csec,sec);
rv += level.GetDisplacement(sec.portalgroup,csec.portalgroup);
// and blend in the color too
col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8);
}
@ -2509,18 +2085,17 @@ Class SWWMStatusBar : BaseStatusBar
klist.Push(k);
}
int maxcolc = (gameinfo.gametype&GAME_DOOMCHEX)?6:4;
for ( int i=0; i<klist.Size(); i++ )
foreach ( k:klist )
{
let k = klist[i];
// Hexen key icons aren't meant for this kind of HUD
TextureID icon = (k is 'HexenKey')?k.SpawnState.GetSpriteTexture(0):k.Icon;
Vector2 siz = TexMan.GetScaledSize(icon);
Screen.DrawTexture(icon,false,keypos.x-siz.x,keypos.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_TopLeft,true);
for ( int j=0; j<keyflash.Size(); j++ )
foreach ( f:keyflash )
{
if ( !(k is keyflash[j].got) ) continue;
if ( !keyflash[j].flashtime || (gametic >= keyflash[j].flashtime) ) continue;
double alph = max((keyflash[j].flashtime-(gametic+FracTic))/25.,0.)**1.5;
if ( !(k is f.got) ) continue;
if ( !f.flashtime || (gametic >= f.flashtime) ) continue;
double alph = max((f.flashtime-(gametic+FracTic))/25.,0.)**1.5;
Screen.DrawTexture(icon,false,keypos.x-siz.x,keypos.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_TopLeft,true,DTA_ColorOverlay,0xFFFFC040,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph);
break;
}
@ -2738,9 +2313,9 @@ Class SWWMStatusBar : BaseStatusBar
if ( checkowned )
{
bool owned = false;
for ( int j=0; j<OwnedWeapons.Size(); j++ )
foreach ( w:OwnedWeapons )
{
if ( OwnedWeapons[j].UsesAmmo(a) )
if ( w.UsesAmmo(a) )
owned = true;
}
if ( !owned ) continue;
@ -3311,8 +2886,25 @@ Class SWWMStatusBar : BaseStatusBar
override void Draw( int state, double TicFrac )
{
Super.Draw(state,TicFrac);
double CurFrame = MSTimeF();
// make sure vanilla nametags don't display
DetachMessageID(0x5745504e); // WEPN
DetachMessageID(0x53494e56); // SINV
// also try with different endianness, just in case
DetachMessageID(0x4e504557); // WEPN
DetachMessageID(0x564e4953); // SINV
if ( deathmatch )
{
// forcibly strip these messages
// (I decided to drop MP support, so even though there are no
// actual spree/multikill announcements in this mod, keeping
// the vanilla ones out is important for graphical consistency)
DetachMessageID(0x4b535052); // KSPR
DetachMessageID(0x5250534b);
DetachMessageID(0x4d4b494c); // MKIL
DetachMessageID(0x4c494b4d);
}
Super.Draw(state,TicFrac);
FrameTime = (CurFrame-PrevFrame)/1000.;
if ( !hnd ) hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.);

View file

@ -339,11 +339,11 @@ Class SWWMDirectMessage : HUDMessageBase
// some messages may have newlines in them, split them
Array<String> storemsg;
txt.Split(storemsg,"\n");
for ( int i=0; i<storemsg.Size(); i++ )
foreach ( msg:storemsg )
{
EventHandler.SendNetworkEvent("swwmstoremessage."..chrname..": "..storemsg[i],level.totaltime,PRINT_CHAT,consoleplayer);
EventHandler.SendNetworkEvent("swwmstoremessage."..chrname..": "..msg,level.totaltime,PRINT_CHAT,consoleplayer);
// stick it into the console as well
Console.PrintfEx(PRINT_CHAT|PRINT_NONOTIFY,chrname..": "..storemsg[i]);
Console.PrintfEx(PRINT_CHAT|PRINT_NONOTIFY,chrname..": "..msg);
}
}
@ -537,24 +537,14 @@ Class SWWMDirectMessage : HUDMessageBase
}
}
// used to manually trigger dialogues through a hacky method in the hud
// because zscript is fucking stupid with its handling of names, we can't
// pass the dialogue name to arguments, so it'll have to be hardcoded
Class SWWMDialogueTrigger : Actor
// used to manually trigger dialogues
// the AMBUSH flag means the dialogue only shows for the activator
Class SWWMDialogueTrigger : SWWMNonInteractiveActor
{
default
{
+NOBLOCKMAP;
+NOINTERACTION;
}
override void Activate( Actor activator )
{
static const String dlglist[] =
{
"swwmultdoom2map20dlg"
};
if ( !swwm_nomapmsg )
Console.MidPrint(null,dlglist[args[0]]);
if ( !bAMBUSH || (activator && (activator.player == players[consoleplayer])) )
EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue",args[0]);
Destroy();
}
override void Tick() {}