summaryrefslogblamecommitdiff
path: root/world/map/npc/mobs/miner_mania.txt
blob: 8cd0582277150b5902efef4f52e8920aea5ab9d1 (plain) (tree)























                                                                                                                                               


                                                                                                                                                                               




                                                                                                                                                                                         



                                                                                                                                                                                         






                                                                                                                                                                                           



                                                                                                                                                                                           






                                                                                                

                                                 
















































































                                                                               

                                                









                                                      
 


































































                                                                                                                                                                                                                                        
///////////////////////////////////////////////////////////////////////////////
// Miner Mania
-|script|Miner_Mania|32767
{
    close;

OnInit:
/*
1 tick = 1 sec
If $@bif/slime_mine_maps_x0/y0/x1/y1 = -1 the matching min/max corner value is taken x0 = 0, y0 = 0, x1 = max x, y1 = max y

$@bifs_big and $@bifs_small must always have the same size as $@bifs

$@bifs/slimes_multi set after how many ticks this map/spot spawns.
For example multi 6 would spawn on 6th tick which is 6 sec on 1 sec tick duration.
For example if you have multiple sqares on a map and to not spawn <num of squares> * 1 tick faster than other maps, use multi = num of squares:
    setarray $@bif_mine_maps$,   "009-1", "009-1", "009-1", "009-2", "008-1", "018-1";
    setarray $@bifs_count,             4,      20,      20,      44,      44,      44;
    setarray $@bifs_multi,             3,       3,       3,       1,       1,       1;
    setarray $@bif_mine_maps_x0,      30,      25,      41,      -1,      -1,      -1;
    setarray $@bif_mine_maps_y0,      34,      39,      39,      -1,      -1,      -1;
    setarray $@bif_mine_maps_x1,      33,      34,      48,      -1,      -1,      -1;
    setarray $@bif_mine_maps_y1,      37,      51,      51,      -1,      -1,      -1;

Note:
    The values used in _mobs.txt are not x0, y0, x1, y1 they are x, y, width, height so they are not compatible since the spawn area extents from x and y in - and + directions
*/

    setarray $@bif_mine_maps$,   "002-4", "002-5", "005-3", "006-3", "009-3", "011-4", "011-6", "012-3", "012-4", "013-3", "018-3", "014-3", "017-3", "032-3", "043-3", "043-4", "055-3";
    setarray $@bifs_count,            15,      15,      25,      25,      25,      25,      30,      30,      40,      20,      30,      10,      10,      20,      20,      25,      20;
    setarray $@bifs_multi,             1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1;
    setarray $@bif_mine_maps_x0,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      30,      -1;
    setarray $@bif_mine_maps_y0,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      23,      -1;
    setarray $@bif_mine_maps_x1,      -1,      -1,     100,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,     173,      -1;
    setarray $@bif_mine_maps_y1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,     170,      -1;
    setarray $@bifs,       Bif,           AmethystBif,      DiamondBif,      EmeraldBif,      RubyBif,     SapphireBif,       TopazBif;
    setarray $@bifs_small, SmallBif, SmallAmethystBif, SmallDiamondBif, SmallEmeraldBif, SmallRubyBif, SmallSapphireBif, SmallTopazBif;
    setarray $@bifs_big,   BigBif,     BigAmethystBif,   BigDiamondBif,   BigEmeraldBif,   BigRubyBif,   BigSapphireBif,   BigTopazBif;

    setarray $@slime_mine_maps$,   "002-4", "002-5", "005-3", "006-3", "009-3", "011-4", "011-6", "012-3", "012-4", "013-3", "018-3", "014-3", "017-3", "032-3", "043-3", "043-4", "055-3";
    setarray $@slimes_count,            15,      15,      25,      25,      25,      25,      30,      30,      40,      20,      30,      10,      10,      20,      20,      25,      20;
    setarray $@slimes_multi,             1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1,       1;
    setarray $@slime_mine_maps_x0,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      30,      -1;
    setarray $@slime_mine_maps_y0,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      23,      -1;
    setarray $@slime_mine_maps_x1,      -1,      -1,     100,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,     173,      -1;
    setarray $@slime_mine_maps_y1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,      -1,     170,      -1;
    setarray $@slimes, CopperSlime, SilverSlime, BromenalSlime, GoldSlime, IronSlime, CoalSlime;

// Bifs -----------------------------

    set .map_count, getarraysize($@bif_mine_maps$[0]);
    set .map_nr, 0;

    freeloop 1; // do not check for infinity loop

    goto L_BifMapInitLoop;

L_BifMapInitLoop:

    if ($@bif_mine_maps_x0[.map_nr] > -1) goto L_BifMapInitLoop_x0Set;

    set $@bif_mine_maps_x0[.map_nr], 0;
    goto L_BifMapInitLoop_x0Set;

L_BifMapInitLoop_x0Set:

    if ($@bif_mine_maps_y0[.map_nr] > -1) goto L_BifMapInitLoop_y0Set;

    set $@bif_mine_maps_y0[.map_nr], 0;
    goto L_BifMapInitLoop_y0Set;

L_BifMapInitLoop_y0Set:

    if ($@bif_mine_maps_x1[.map_nr] > -1) goto L_BifMapInitLoop_x1Set;

    set $@bif_mine_maps_x1[.map_nr], getmapmaxx($@bif_mine_maps$[.map_nr]);
    goto L_BifMapInitLoop_x1Set;

L_BifMapInitLoop_x1Set:

    if ($@bif_mine_maps_y1[.map_nr] > -1) goto L_BifMapInitLoop_y1Set;

    set $@bif_mine_maps_y1[.map_nr], getmapmaxy($@bif_mine_maps$[.map_nr]);
    goto L_BifMapInitLoop_y1Set;

L_BifMapInitLoop_y1Set:

    if ($@bifs_multi[.map_nr] < 1) set $@bifs_multi[.map_nr], 1;
    set $@bifs_multi_count[.map_nr], $@bifs_multi[.map_nr];

    set .map_nr, .map_nr + 1;
    if (.map_nr < .map_count) goto L_BifMapInitLoop;

// Slimes -----------------------------

    set .map_count, getarraysize($@slime_mine_maps$[0]);
    set .map_nr, 0;

    goto L_SlimeMapInitLoop;

L_SlimeMapInitLoop:

    if ($@slime_mine_maps_x0[.map_nr] > -1) goto L_SlimeMapInitLoop_x0Set;

    set $@slime_mine_maps_x0[.map_nr], 0;
    goto L_SlimeMapInitLoop_x0Set;

L_SlimeMapInitLoop_x0Set:

    if ($@slime_mine_maps_y0[.map_nr] > -1) goto L_SlimeMapInitLoop_y0Set;

    set $@slime_mine_maps_y0[.map_nr], 0;
    goto L_SlimeMapInitLoop_y0Set;

L_SlimeMapInitLoop_y0Set:

    if ($@slime_mine_maps_x1[.map_nr] > -1) goto L_SlimeMapInitLoop_x1Set;

    set $@slime_mine_maps_x1[.map_nr], getmapmaxx($@slime_mine_maps$[.map_nr]);
    goto L_SlimeMapInitLoop_x1Set;

L_SlimeMapInitLoop_x1Set:

    if ($@slime_mine_maps_y1[.map_nr] > -1) goto L_SlimeMapInitLoop_y1Set;

    set $@slime_mine_maps_y1[.map_nr], getmapmaxy($@slime_mine_maps$[.map_nr]);
    goto L_SlimeMapInitLoop_y1Set;

L_SlimeMapInitLoop_y1Set:

    if ($@slimes_multi[.map_nr] < 1) set $@slimes_multi[.map_nr], 1;
    set $@slimes_multi_count[.map_nr], $@slimes_multi[.map_nr];

    set .map_nr, .map_nr + 1;
    if (.map_nr < .map_count) goto L_SlimeMapInitLoop;

    freeloop 0; // re-enable infinity loop check

    initnpctimer;

    end;

OnTimer1000:

// Bifs -----------------------------

    set .map_count, getarraysize($@bif_mine_maps$[0]);
    set .map_nr, 0;

    freeloop 1; // do not check for infinity loop

    goto L_BifMapLoop;

L_BifMapLoop:
    set $@bifs_multi_count[.map_nr], $@bifs_multi_count[.map_nr] - 1;
    if ($@bifs_multi_count[.map_nr] >= 1) goto L_BifContinue;

    set $@bifs_multi_count[.map_nr], $@bifs_multi[.map_nr];

    set .bifs_alive, mobcount($@bif_mine_maps$[.map_nr], "Miner_Mania::OnBifMined" + .map_nr)+1;
    set .bifs_respawn_count, $@bifs_count[.map_nr] - .bifs_alive;

    if (.bifs_respawn_count < 1) goto L_BifContinue;

    if (rand(GEM_BIF_CHANCE)<1) set .bif, rand(getarraysize($@bifs[0])-1)+1;
    else set .bif, 0;

    if (rand(BIG_BIF_CHANCE)<1)
        areamonster $@bif_mine_maps$[.map_nr], $@bif_mine_maps_x0[.map_nr], $@bif_mine_maps_y0[.map_nr], $@bif_mine_maps_x1[.map_nr], $@bif_mine_maps_y1[.map_nr], "",   $@bifs_big[.bif], 1, "Miner_Mania::OnBifMined" + .map_nr;
    elif (rand(NORMAL_BIF_CHANCE)<1)
        areamonster $@bif_mine_maps$[.map_nr], $@bif_mine_maps_x0[.map_nr], $@bif_mine_maps_y0[.map_nr], $@bif_mine_maps_x1[.map_nr], $@bif_mine_maps_y1[.map_nr], "",       $@bifs[.bif], 1, "Miner_Mania::OnBifMined" + .map_nr;
    else
        areamonster $@bif_mine_maps$[.map_nr], $@bif_mine_maps_x0[.map_nr], $@bif_mine_maps_y0[.map_nr], $@bif_mine_maps_x1[.map_nr], $@bif_mine_maps_y1[.map_nr], "", $@bifs_small[.bif], 1, "Miner_Mania::OnBifMined" + .map_nr;

    goto L_BifContinue;

L_BifContinue:
    set .map_nr, .map_nr + 1;
    if (.map_nr < .map_count) goto L_BifMapLoop;

// Slimes -----------------------------

    set .map_count, getarraysize($@slime_mine_maps$[0]);
    set .map_nr, 0;

    goto L_SlimeMapLoop;

L_SlimeMapLoop:
    set $@slimes_multi_count[.map_nr], $@slimes_multi_count[.map_nr] - 1;
    if ($@slimes_multi_count[.map_nr] >= 1) goto L_SlimeContinue;

    set $@slimes_multi_count[.map_nr], $@slimes_multi[.map_nr];

    set .slimes_alive, mobcount($@slime_mine_maps$[.map_nr], "Miner_Mania::OnSlimeSlain" + .map_nr)+1;
    set .slimes_respawn_count, $@slimes_count[.map_nr] - .slimes_alive;

    if (.slimes_respawn_count < 1) goto L_SlimeContinue;

    set .slime, rand(getarraysize($@slimes[0]));

    areamonster $@slime_mine_maps$[.map_nr], $@slime_mine_maps_x0[.map_nr], $@slime_mine_maps_y0[.map_nr], $@slime_mine_maps_x1[.map_nr], $@slime_mine_maps_y1[.map_nr], "", $@slimes[.slime], 1, "Miner_Mania::OnSlimeSlain" + .map_nr;

    goto L_SlimeContinue;

L_SlimeContinue:
    set .map_nr, .map_nr + 1;
    if (.map_nr < .map_count) goto L_SlimeMapLoop;

    freeloop 0; // re-enable infinity loop check

    stopnpctimer;
    setnpctimer 0;
    startnpctimer;

    end;
}