summaryrefslogblamecommitdiff
path: root/npc/015-8/sealedshrine.txt
blob: 038d854be9d5ff0e3f3bbce094e69e6850bd209f (plain) (tree)









































































































































































                                                                                                       
                                               
        

              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               
















































                                                                                 
                                               
        

              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               
















































                                                                                 
                                               
        

              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


              
                                               


























































                                                                                 
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//    SEALED SHRINE submodule - Sagratha's Cave - 015-8
// Uses setq3 - setq1 stage 3

// Check for validity
function	script	SaggySealCheck	{
    .@q=getq(HurnscaldQuest_Sagratha);
    .@q3=getq3(HurnscaldQuest_Sagratha);
    // Cheater Detected
    if (!MAGIC_LVL || .@q < 3) { 
        setq HurnscaldQuest_Sagratha, 0, 0, 0;
        sc_end SC_CASH_PLUSEXP;
        sc_end SC_OVERLAPEXPUP;
        sc_start SC_OVERLAPEXPUP, 300000, -20;
        warp "Save", 0, 0;
        return false;
    }

    // Okay, if it is not stage 3, we don't need to unseal
    if (.@q != 3)
        return false;
    return true;
}

// Main menu
// ( .name$ )
function	script	SaggySealInit	{
    mesc l("Attempt to break the seal?");
    mesc l("Warning: This will drain mana and spawn monsters. You shall not leave this cave section!");
    if (askyesno() == ASK_YES) {
        npctalk3 l("You started the seal break sequence. Please stand by.");
        addtimer(1000, getarg(0)+"::OnBreakSeal01");
    }
    return;
}

// Seal Spawn
// (name, seal x, seal y, stageId, {seal map})
function	script	SaggySealInit	{
    .@n$=getarg(0);
    .@x=getarg(1);
    .@y=getarg(2);
    .@z=getarg(3);
    .@m$=getarg(4, "018-5");

    // Do nothing if @SaggySeal$ is busy - we will NOT begin another unsealing.
    if (@SaggySeal$ != "" && .@z)
        end;
    else
        @SaggySeal$=.@n$;

    // Drain some Mana
    // Max wave is 9... So it should cap at 10%
    .@val=7+(.@z/3);

    if (Sp < MaxSp/100*.@val) {
        npctalk l("You don't have enough mana to continue. The seal remains active.");
        @SaggySeal$="";
        end;
    }
    percentheal 0, -(.@val);

    // BaseLevel: 37
    monster .@m$, .@x, .@y, "Seal Guardian", MagicGoblin, (.@z/2)+1;

    switch (.@z) {
        case 0:
            .@mobId=any(HouseMaggot,SlimeBlast); break;
        case 1:
            .@mobId=AngryScorpion; break;
        case 2:
            .@mobId=AngryBat; break;
        case 3:
            .@mobId=RedSlime; break;
        case 4:
            .@mobId=AngryRedScorpion; break;
        case 5:
            .@mobId=Bandit; break;
        case 6:
            .@mobId=Skeleton; break;
        case 7:
            .@mobId=BlueSlime; break;
        case 8:
            .@mobId=RedMushroom; break;
        case 9:
            .@mobId=BlackSlime; break;
        default:
            Exception("ERROR, INVALID Z VALUE FOR SAGRATHA SEAL: "+.@z, RB_DEFAULT|RB_IRCBROADCAST);
            .@mobId=WickedMushroom; break;
    }

    monster .@m$, .@x, .@y, "Seal Guardian", .@mobId, 1;

    // Schedule next sequence
    if (.@z+1 < 10)
        .@nx$="0"+(.@z+1);
    else
        .@nx$=str(.@z+1);
    // 3.5s each wave, giving you ~1s to kill/endure each "boss"
    .@t=3500+(.@z*980);

    addtimer2(.@t, .@n$+"::OnBreakSeal"+.@nx$);
    return;
}














































018-5,0,0,0	script	#SaggySeal1	NPC_SUMMONING_CIRC,0,0,{
    end;

OnTouch:
    .@q=getq(HurnscaldQuest_Sagratha);
    .@q3=getq3(HurnscaldQuest_Sagratha);
    // Check if it can be operated
    if (!SaggySealCheck())
        end;

    // Check if this seal is ok
    if (.@q3 & .sealId) {
        npctalkonce l("This seal was already broken, proceed to the next seal!");
        end;
    }

    // It is stage 3, so we will write to setq3 that the seal is open... Soon.
    SaggySealInit(.name$, .x, .y, 0, getmap());
    end;

OnBreakSeal01:
    SaggySealInit(.name$, .x, .y, 1, getmap());
    end;

OnBreakSeal02:
    SaggySealInit(.name$, .x, .y, 2, getmap());
    end;

OnBreakSeal03:
    SaggySealInit(.name$, .x, .y, 3, getmap());
    end;

OnBreakSeal04:
    SaggySealInit(.name$, .x, .y, 4, getmap());
    end;

OnBreakSeal05:
    SaggySealInit(.name$, .x, .y, 5, getmap());
    end;

OnBreakSeal06:
    SaggySealInit(.name$, .x, .y, 6, getmap());
    end;

OnBreakSeal07:
    SaggySealInit(.name$, .x, .y, 7, getmap());
    end;

OnBreakSeal08:
    SaggySealInit(.name$, .x, .y, 8, getmap());
    end;

OnBreakSeal09:
    SaggySealInit(.name$, .x, .y, 9, getmap());
    end;

OnBreakSeal10:
    .@q3=getq3(HurnscaldQuest_Sagratha);
    npctalk3 l("The seal was broken!");
    @SaggySeal$="";
    setq3 HurnscaldQuest_Sagratha, .@q3 | .sealId;
    end;

OnInit:
    .sealId=1;

    setarray .xpos, 115, 119, 116, 121, 126, 125, 137, 136, 115;
    setarray .ypos, 117, 117, 119, 122, 125, 115, 117, 123, 118;
    .@z=rand(getarraysize(.xpos));
    movenpc .name$, .xpos[.@z], .ypos[.@z], 0;
    end;
}














018-5,0,0,0	script	#SaggySeal2	NPC_SUMMONING_CIRC,0,0,{
    end;

OnTouch:
    .@q=getq(HurnscaldQuest_Sagratha);
    .@q3=getq3(HurnscaldQuest_Sagratha);
    // Check if it can be operated
    if (!SaggySealCheck())
        end;

    // Check if this seal is ok
    if (.@q3 & .sealId) {
        npctalkonce l("This seal was already broken, proceed to the next seal!");
        end;
    }

    // It is stage 3, so we will write to setq3 that the seal is open... Soon.
    SaggySealInit(.name$, .x, .y, 0, getmap());
    end;

OnBreakSeal01:
    SaggySealInit(.name$, .x, .y, 1, getmap());
    end;

OnBreakSeal02:
    SaggySealInit(.name$, .x, .y, 2, getmap());
    end;

OnBreakSeal03:
    SaggySealInit(.name$, .x, .y, 3, getmap());
    end;

OnBreakSeal04:
    SaggySealInit(.name$, .x, .y, 4, getmap());
    end;

OnBreakSeal05:
    SaggySealInit(.name$, .x, .y, 5, getmap());
    end;

OnBreakSeal06:
    SaggySealInit(.name$, .x, .y, 6, getmap());
    end;

OnBreakSeal07:
    SaggySealInit(.name$, .x, .y, 7, getmap());
    end;

OnBreakSeal08:
    SaggySealInit(.name$, .x, .y, 8, getmap());
    end;

OnBreakSeal09:
    SaggySealInit(.name$, .x, .y, 9, getmap());
    end;

OnBreakSeal10:
    .@q3=getq3(HurnscaldQuest_Sagratha);
    npctalk3 l("The seal was broken!");
    @SaggySeal$="";
    setq3 HurnscaldQuest_Sagratha, .@q3 | .sealId;
    end;

OnInit:
    .sealId=2;

    setarray .xpos,  39,  33,  43,  53,  51,  55,  60,  68,  63,  56;
    setarray .ypos, 120, 130, 134, 132, 119, 121, 122, 120, 129, 124;
    .@z=rand(getarraysize(.xpos));
    movenpc .name$, .xpos[.@z], .ypos[.@z], 0;
    end;
}














018-5,0,0,0	script	#SaggySeal3	NPC_SUMMONING_CIRC,0,0,{
    end;

OnTouch:
    .@q=getq(HurnscaldQuest_Sagratha);
    .@q3=getq3(HurnscaldQuest_Sagratha);
    // Check if it can be operated
    if (!SaggySealCheck())
        end;

    // Check if this seal is ok
    if (.@q3 & .sealId) {
        npctalkonce l("This seal was already broken, proceed to the next seal!");
        end;
    }

    // It is stage 3, so we will write to setq3 that the seal is open... Soon.
    SaggySealInit(.name$, .x, .y, 0, getmap());
    end;

OnBreakSeal01:
    SaggySealInit(.name$, .x, .y, 1, getmap());
    end;

OnBreakSeal02:
    SaggySealInit(.name$, .x, .y, 2, getmap());
    end;

OnBreakSeal03:
    SaggySealInit(.name$, .x, .y, 3, getmap());
    end;

OnBreakSeal04:
    SaggySealInit(.name$, .x, .y, 4, getmap());
    end;

OnBreakSeal05:
    SaggySealInit(.name$, .x, .y, 5, getmap());
    end;

OnBreakSeal06:
    SaggySealInit(.name$, .x, .y, 6, getmap());
    end;

OnBreakSeal07:
    SaggySealInit(.name$, .x, .y, 7, getmap());
    end;

OnBreakSeal08:
    SaggySealInit(.name$, .x, .y, 8, getmap());
    end;

OnBreakSeal09:
    SaggySealInit(.name$, .x, .y, 9, getmap());
    end;

OnBreakSeal10:
    .@q3=getq3(HurnscaldQuest_Sagratha);
    npctalk3 l("The seal was broken!");
    @SaggySeal$="";
    setq3 HurnscaldQuest_Sagratha, .@q3 | .sealId;
    end;

OnInit:
    .sealId=4;

    setarray .xpos, 140, 143, 146, 147, 145, 143;
    setarray .ypos, 140, 141, 139, 144, 147, 143;
    .@z=rand(getarraysize(.xpos));
    movenpc .name$, .xpos[.@z], .ypos[.@z], 0;
    end;
}







// Sagratha Seals Eletronic Barriers
018-5,120,130,0	script	#SaggySealBarrier1	NPC_HIDDEN,0,4,{
OnTouch:
    if (@SaggySeal$ != "") {
        npctalk3 l("The seal retaliates! It was super effective. You are dead!");
        @SaggySeal$="";
        percentheal -100, -100;
        end;
    }
    end;
}

018-5,74,142,0	script	#SaggySealBarrier2	NPC_HIDDEN,0,4,{
OnTouch:
    if (@SaggySeal$ != "") {
        npctalk3 l("The seal retaliates! It was super effective. You are dead!");
        @SaggySeal$="";
        percentheal -100, -100;
        end;
    }
    end;
}

018-5,137,154,0	script	#SaggySealBarrier3	NPC_HIDDEN,0,5,{
OnTouch:
    if (@SaggySeal$ != "") {
        npctalk3 l("The seal retaliates! It was super effective. You are dead!");
        @SaggySeal$="";
        percentheal -100, -100;
        end;
    }
    end;
}