// Evol script
// Year: 2022
//
////////////////////////////////////////////////
// Red Corsair Day
-|script|#CRC2022|32767
{
end;
OnFirst:
if (strcharinfo(0) != "Blanc" && GM < G_SYSOP) end;
wgm "==> CRC Day Phase 1 Started by "+strcharinfo(0);
set $@CRC22, 1;
enablenpc "Red Bearer";
initnpctimer;
goto OnTimer30000;
OnSecond:
if (strcharinfo(0) != "Cerise" && GM < G_SYSOP) end;
wgm "==> CRC Day Phase 2 Started by "+strcharinfo(0);
set $@CRC22, 2;
disablenpc "Red Bearer";
//enablenpc "Zax De'Kagen#CRC";
// set the sprite (implies enablenpc)
fakenpcname "Zax De'Kagen#CRC", "Zax De'Kagen#CRC", 1142;
initnpctimer;
goto L_Extra;
OnThird:
if (strcharinfo(0) != "Cerise" && GM < G_SYSOP) end;
wgm "==> CRC Day Phase 3 Started by "+strcharinfo(0);
set $@CRC22, 3;
disablenpc "Halifax";
stopnpctimer;
end;
OnStatus:
if (!$@CRC22) end;
set $@CRC22Mc, mobcount("007-1", "#CRC2022::OnDie")+
mobcount("008-1", "#CRC2022::OnDie")+
mobcount("009-1", "#CRC2022::OnDie")+
mobcount("011-1", "#CRC2022::OnDie")+
mobcount("031-1", "#CRC2022::OnDie")+
mobcount("018-1", "#CRC2022::OnDie")+
mobcount("018-3", "#CRC2022::OnDie")+
7;
message strcharinfo(0), "Monsters remaining: "+$@CRC22Mc;
if ($@CRC22Mc <= 0)
set $@CRC22, 0;
// TODO: Announce?
set $@CRC22Mc, 0;
end;
OnTimer30000:
// Outskirts
set $@CRC22Mc, mobcount("008-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 32;
set $@CRC22M$, "008-1";
set $@CRC22Xm, 140;
set $@CRC22Ym, 100;
if ($@CRC22Mc >= $@CRC22Gl) goto L_End;
callsub S_Spawn;
end;
L_End:
end;
// Redundant
OnTimer15000:
goto OnTimer30000;
// Redundant
OnTimer45000:
goto OnTimer30000;
// Redundant
OnTimer60000:
goto OnTimer30000;
OnTimer70000:
// Hurnscald [LOCKED DOWN]
set $@CRC22Mc, mobcount("009-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 100;
set $@CRC22M$, "009-1";
set $@CRC22Xm, 100;
set $@CRC22Ym, 60;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer72000:
// Outskirts
set $@CRC22Mc, mobcount("008-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 40;
set $@CRC22M$, "008-1";
set $@CRC22Xm, 140;
set $@CRC22Ym, 100;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
// Duplicate for infinity loop bug
OnTimer74000:
// South Forest (LOCKED DOWN)
set $@CRC22Mc, mobcount("007-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 110;
set $@CRC22M$, "007-1";
set $@CRC22Xm, 130;
set $@CRC22Ym, 90;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer75000:
// South Forest (LOCKED DOWN)
set $@CRC22Mc, mobcount("007-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 220;
set $@CRC22M$, "007-1";
set $@CRC22Xm, 130;
set $@CRC22Ym, 90;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
// Duplicate for infinity loop bug
OnTimer76000:
// West Forest (LOCKED DOWN)
set $@CRC22Mc, mobcount("011-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 120;
set $@CRC22M$, "011-1";
set $@CRC22Xm, 130;
set $@CRC22Ym, 110;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer77000:
// West Forest (LOCKED DOWN)
set $@CRC22Mc, mobcount("011-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 240;
set $@CRC22M$, "011-1";
set $@CRC22Xm, 130;
set $@CRC22Ym, 110;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer78000:
// Nivalis Port (LOCKED DOWN)
set $@CRC22Mc, mobcount("031-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 100;
set $@CRC22M$, "031-1";
set $@CRC22Xm, 110;
set $@CRC22Ym, 130;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer80000:
if ($@CRC22 > 1) goto L_Extra;
// Nothing at mines yet
initnpctimer;
end;
L_Extra:
// Outskirts [LOCKDOWN]
set $@CRC22Mc, mobcount("008-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 80;
set $@CRC22M$, "008-1";
set $@CRC22Xm, 140;
set $@CRC22Ym, 100;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer84000:
// Hurnscald Mines (Outskirt)
set $@CRC22Mc, mobcount("018-1", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 40;
set $@CRC22M$, "018-1";
set $@CRC22Xm, 140;
set $@CRC22Ym, 100;
if ($@CRC22Mc >= $@CRC22Gl) end;
callsub S_Spawn;
end;
// Duplicate for infinity loop bug
OnTimer86000:
// Obelisk Cave & Mines [LOCKED DOWN]
set $@CRC22Mc, mobcount("018-3", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 100;
set $@CRC22M$, "018-3";
set $@CRC22Xm, 180;
set $@CRC22Ym, 180;
if ($@CRC22Mc < $@CRC22Gl) end;
callsub S_Spawn;
end;
// Duplicate for infinity loop bug
OnTimer88000:
// Obelisk Cave & Mines [LOCKED DOWN]
set $@CRC22Mc, mobcount("018-3", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 200;
set $@CRC22M$, "018-3";
set $@CRC22Xm, 180;
set $@CRC22Ym, 180;
if ($@CRC22Mc < $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer89000:
// Obelisk Cave & Mines [LOCKED DOWN]
set $@CRC22Mc, mobcount("018-3", "#CRC2022::OnDie")+1;
set $@CRC22Gl, 300;
set $@CRC22M$, "018-3";
set $@CRC22Xm, 180;
set $@CRC22Ym, 180;
if ($@CRC22Mc < $@CRC22Gl) end;
callsub S_Spawn;
end;
OnTimer90000:
initnpctimer;
end;
// Extra wave control system [0]
S_Spawn:
set $@CRC_IDX, rand(getarraysize($@crc_mobs));
areamonster $@CRC22M$, 20, 20, $@CRC22Xm, $@CRC22Ym, "", $@crc_mobs[$@CRC_IDX], 1, "#CRC2022::OnDie";
set $@CRC22Mc, $@CRC22Mc + 1;
if($@CRC22Mc < $@CRC22Gl) goto S_Spawn;
return;
OnDie:
end;
OnInit:
setarray $@crc_mobs, 1119, 1120, 1121, 1119, 1120, 1121, 1157, 1155, 1163, 1090, 1064, 1119, 1120, 1121, 1119, 1120;
// Register commands
registercmd "#crcstart", strnpcinfo(0)+"::OnFirst";
registercmd "#crcnext", strnpcinfo(0)+"::OnSecond";
registercmd "#crclast", strnpcinfo(0)+"::OnThird";
registercmd "#crcstatus", strnpcinfo(0)+"::OnStatus";
end;
}
// Puppets
008-1,140,74,0|script|Halifax|395
{
end;
OnInit:
disablenpc strnpcinfo(0);
end;
}
// Puppets
018-1,142,75,0|script|Red Bearer|395
{
end;
OnInit:
disablenpc strnpcinfo(0);
end;
}
// Puppets
008-1,140,70,0|script|Tal#CRC|427
{
end;
OnInit:
disablenpc strnpcinfo(0);
end;
}
// Puppets
020-1,76,85,0|script|Zax De'Kagen#CRC|400
{
//mes "[Zax De'Kagen]";
//mes "\"I will not tolerate people trying to defile my world. I'm sealing the lake, and that's final.\"";
//close;
end;
OnInit:
disablenpc strnpcinfo(0);
end;
}
020-1,78,85,0|script|Santa#X2022|200
{
if (gettime(7) <= 2022)
goto L_Start;
if (gettime(6) > 1)
goto L_Scores;
if (gettime(5) > 8)
goto L_Scores;
goto L_Start;
L_Start:
mesn l("Santa Claus");
mesq l("Hey folks! I was using [@@5288|@@] to foil Baltashar attempts to ruin Christmas for the poor kids, but the plan turned against me this time! Hohoho!");
next;
mesn l("Santa Claus");
mesq l("That's because I forgot Jack Frost existed, hohoho! So, if you could collect the [@@5288|@@] back to me... Well, you would get a Christmas gift, that's for sure, hohoho!");
next;
mesn l("Santa Claus");
mesq l("I recovered "+$XMAS2022+" [@@5288|@@]. From these, you gave me "+XMAS2022+" [@@5288|@@]. Grinchboos have them but they only appear every hour in four maps, and the others were lost to time, so... Do you want to give me some more?");
mes l("##1Date limit: January 8th, 2023##0");
next;
menu
"Deliver", L_Deliver,
"Scoreboards", L_Scores,
"I'll get to it.", L_Close;
L_Deliver:
set XMAS2022, XMAS2022 + countitem(Naftalin);
set $XMAS2022, $XMAS2022 + countitem(Naftalin);
delitem Naftalin, countitem(Naftalin);
set @loop, 0;
set @rank, 0;
goto L_MaybeInsertNext;
L_MaybeInsertNext:
if (XMAS2022 > $Record_XXXmas_Kills[@rank])
goto L_InsertScore;
// you already had a better score
if (strcharinfo(0) == $Record_XXXmas_Name$[@rank])
goto L_Scores;
set @rank, @rank + 1;
if (@rank == MAX_HIGH_SCORES)
goto L_Scores;
goto L_MaybeInsertNext;
L_InsertScore:
set @loop, @rank;
goto L_FindLastScore;
L_FindLastScore:
// comment this out to allow the player to be in the list more than once
// though actually, it might be better just to assume the list is full
if (strcharinfo(0) == $Record_XXXmas_Name$[@loop])
goto L_MoveStuff;
set @loop, @loop + 1;
if (@loop == MAX_HIGH_SCORES)
goto L_MoveStuff;
goto L_FindLastScore;
L_MoveStuff:
if (@loop == @rank)
goto L_FinallyInsertMe;
set $Record_XXXmas_Kills[@loop], $Record_XXXmas_Kills[@loop - 1];
set $Record_XXXmas_Name$[@loop], $Record_XXXmas_Name$[@loop - 1];
set $Record_XXXmas_Date$[@loop], $Record_XXXmas_Date$[@loop - 1];
set @loop, @loop - 1;
goto L_MoveStuff;
L_FinallyInsertMe:
set $Record_XXXmas_Kills[@rank], XMAS2022;
set $Record_XXXmas_Name$[@rank], strcharinfo(0);
callfunc "time_stamp";
set $Record_XXXmas_Date$[@rank], @ts_date$ + " " + @ts_time$;
set @ts_date$, "";
set @ts_time$, "";
goto L_Scores;
L_Scores:
mes l("I recovered "+$XMAS2022+" [@@5288|@@]. From these, you gave me "+XMAS2022+" [@@5288|@@].");
set @rank, 0;
set @loop, 0;
goto L_ShowNextRecord;
L_ShowNextRecord:
if ($Record_XXXmas_Kills[@loop] == 0)
goto L_Close;
mes (@loop + 1) + " - " + $Record_XXXmas_Name$[@loop] + " - " + $Record_XXXmas_Kills[@loop] + " [@@5288|@@] delivered at " + $Record_XXXmas_Date$[@loop];
set @loop, @loop + 1;
if (MAX_HIGH_SCORES > 4 && (@loop % 5) == 0 && $Record_XXXmas_Kills[@loop] > 0)
goto L_NextShowNextRecord;
goto L_ShowNextRecord;
L_NextShowNextRecord:
next;
goto L_ShowNextRecord;
L_Close:
close;
}
// Override mapflags for Christmas 2022
033-1|mapflag|town
034-1|mapflag|town
046-1|mapflag|town
047-1|mapflag|town