summaryrefslogblamecommitdiff
path: root/world/map/npc/annuals/2022.txt
blob: 1c8048b9450d07f160d0d78f6b64bda6c9c0cd54 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                
                                                       

                                                         
                           



                      
                                                        

                                                         


                                         
                                                             



                 
                                                        

                                                         
                         























































































































































































































                                                                                                                        
                                 







                             
                                    















                                 
          
                                         
 



                                                                                                              




                             


                                    








                           







                                                                                                                                                                                                                                                    
                                                 


























































                                                                            
                                                                                                      


























                                                                                                                                                             
// 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