summaryrefslogblamecommitdiff
path: root/npc/001-3-0/gates.txt
blob: e8accc96b331446517f87eb67a197d5ca021f941 (plain) (tree)








































































































































































































                                                                                                                  
// Evol scripts.
// Author:
//    Micksha
// Description:
//    The Sewer Gates, and Wheels.

001-3-0,90,62,0	script	#ArtisThiefGate_1	NPC_SEWER_GATE,0,0,{
    // Extract the quest ID from name (or fail trying)
    explode(.@ni$, .name$, "_");
    .@id=atoi(.@ni$[1]);

    .@q=getq(ThiefQuests_Artis);
    .@q2=getq2(ThiefQuests_Artis);

    // Check what you can do with the gate
    if (.@q != .@id) {
        mes l("This gate is closed.");
        mesc l("No need to go through here, so lets not bother with it now.");
    } else if (.@q2 != 2) {
        mes l("This gate is closed.");
        mesc l("It seems that it can be open using the mechanism on the side.");
    } else {
        mes l("This gate is open.");
        mesc l("I should still be careful to don't get caught.");
    }
    close;

OnTouch:
    updateSpotlight(true);
    end;

OnOpenSesame:
    // Opening
    if (!.busy) {
        .dir=2;
        .busy=true;
        initnpctimer;
    }
    end;

// Open
OnTimer2200:
    .dir=4;
    end;

// Closing
OnTimer8000:
    .dir=6;
    end;

// Closed
OnTimer10400:
    .dir=0;
    end;

// Don't reply immediately, wait a tiny bit
OnTimer11000:
    .busy = false;
    stopnpctimer;

OnInit:
    .busy = false;
    .distance = 1;
    end;
}



001-3-0,92,61,0	script	#ArtisThiefWheel_1	NPC_SEWER_WHEEL,{
    // Extract the quest ID from name (or fail trying)
    explode(.@ni$, .name$, "_");
    .@id=atoi(.@ni$[1]);

    .@q=getq(ThiefQuests_Artis);
    .@q2=getq2(ThiefQuests_Artis);

    if (.@q != .@id) {
        speech
            l("This wheel seems to be connected to the locked gate on the side."),
            l("Having to reason to tinker with it, you don't.");
        close;
    }
    speech
        l("You try to move this wheel, but it is stuck. Something seems to be missing."),
        l("Maybe some monster ate it, but what would be big enough to do that?!");

    // Switch gearwheel status: 1(looted) 2(unlooted)
    switch (.@q2) {
    case 1:
        // Looted but lost? D:
        if (!countitem(Gearwheel)) {
            mesc l("If we only had a %s.", getitemlink(Gearwheel));
            close;
        }

        // Prompt player
        mesc l("Should we install the %s and move it?", getitemlink(Gearwheel)), 1;
        if (askyesno() == ASK_NO)
            break;

        delitem Gearwheel, 1;
        setq2 ThiefQuests_Artis, 2;
        // FALLTHROUGH
    case 2:
        mesc l("With the %s in place, it only takes a bit more effort to make it budge.", getitemlink(Gearwheel));
        next;
        closeclientdialog;
        // Spin the wheel
        if (!.busy) {
            .dir = 4;
            .busy = true;
            initnpctimer;
        }
        // Open the gate
        addtimer 500, "#ArtisThiefGate_"+.@id+"::OnOpenSesame";
        break;
    default:
    }
    close;

// Done spinning?
OnTimer4000:
    .dir = 0;
    .busy = false;
    stopnpctimer;

OnInit:
    .busy = false;
    .distance = 2;
    end;
}



// We're missing a gate!
001-3-0,56,44,0	duplicate(#ArtisThiefGate_1)	#ArtisThiefGate_4	NPC_SEWER_GATE,2,2
001-3-0,58,43,0	duplicate(#ArtisThiefWheel_1)	#ArtisThiefWheel_4	NPC_SEWER_WHEEL


///////////////////////////
// The controlled warps
001-3-0,90,61,0	script	#001-3-0_90_61	NPC_HIDDEN,0,0,{
    end;

OnTouch:
    // No enter except when q1 and q2 matches
    .@q=getq(ThiefQuests_Artis);
    .@q2=getq2(ThiefQuests_Artis);
    if (.@q != 1 || .@q2 != 2)
        end;

    // Delete previous timers. Makes easier to cheat but more reliable (FIXME)
    deltimer("#ArtisThiefBook_0::OnBust1");
    deltimer("#ArtisThiefBook_0::OnBust2");
    deltimer("#ArtisThiefBook_0::OnBust3");
    deltimer("#ArtisThiefBook_0::OnBust4");

    // Archives: Begin
    addtimer 30000, "#ArtisThiefBook_0::OnBust1";
    warp "001-2-43", 51, 34;
    end;
}

001-3-0,56,43,0	script	#001-3-0_56_43	NPC_HIDDEN,0,0,{
    end;

OnTouch:
    // No enter except when quest state allows you to
    // I thought in letting you use this passage and get busted anytime...
    // ...........Better not. Animation will not like it, anyway.
    .@q=getq(ThiefQuests_Artis);
    .@q2=getq2(ThiefQuests_Artis);
    if (.@q != 4 || .@q2 != 2)
        end;

    warp "001-2-40", 56, 40;
    addtimer2(rand2(3000, 7000), .name$+"::OnBusted");
    end;

// Henry said to you don't use the gate, because you are not discrete enough.
// Poor player, this is what happens for not paying attention to Henry's advise.
OnBusted:
    if (getmap() != "001-2-40")
        end;

    mesn l("Legion Officer");
    mes l("HEY! How you got here!?");
    next;
    // Check if you'll be caught
    if (ArrestedChances()) {
        mesc l("Arrested!");
        mesc l("You'll now spend a few minutes on the jail to reflect on your actions.");
        ArrestPlayer(5);
    } else {
        mesc l("You're almost found out, but manage to make a quick escape!");
        warp "001-1", 41, 36;
    }
    close;
}