summaryrefslogblamecommitdiff
path: root/npc/014-4/kamelot.txt
blob: a3036d1259896a61342da55325b723806cbb3d71 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                  
                                                                      














                                                                    
                                                        


        
                              

                    









































                                                                                                           
                                                            
                   
                                           
        

 
// TMW 2 Script
// Author:
//  Jesusalva
//  Micksha
// Description:
//  This NPC is a work on progress. It measures all players equal.
//  Controls the weekly guild dungeon feature.
// Variable structure:

// $KAMELOT_ID [ guild_id ] = instance id
// $KAMELOT_QUEST [ guild_id ] = quest status (bitmask)
    // 0 - Not started
    // 1 - Quest Assigned by Arthur (new players cannot enter anymore)
    // 2 - Guinevere dialog clear
    // 4 - Weapon Room cutscene seen
    // 8 - Sewer Gate open
    // 16 - Magic Seal Broken
    // 32 - Boss cutscene seen (presumably, victory)
// $KAMELOT_KEY [ guild_id ] = (bitmask) Keys and Lockpicks
    // 1 - Treasure A (Boss Room key)
    // 2 - Treasure B
    // 4 - Treasure C
    // 8 - Treasure D
    // 16 - Weapon Room Key

// $KAMELOT_KEYMASK [ guild_id ] = Which bit was assigned as the key
// $KAMELOT_COOLDOWN [ guild_id ] = Last attempt (weekly attempts)

014-4,67,26,0	script	#KamelotEnter	NPC_HIDDEN,0,0,{
    end;

OnTouch:
    // XXX STATUS: STAGING XXX
    if (!is_staff())
        end;

    // Not in a guild: Gate is sealed (MK might be excluded as well)
    if (getcharid(2) <= 0) {
        dispbottom l("The gates are firmly shut. A warning is on the door, \"DO NOT ENTER. Guild Only.\"");
        end;
    }

    // Save your GID for reference
    .@g=getcharid(2);

    // TODO: Cooldown expired? Defeat artifact?

    // Quest already started
    if ($KAMELOT_QUEST[.@g] & 1) {
        dispbottom l("The gates are firmly shut by some weird magical power.");
        end;
    }

    // Build instance if it doesn't exists
    if (!isinstance($KAMELOT_ID[.@g])) {
        debugmes "Creating Instance";
        .@inst=instance_create("Kamelot@"+.@g, 0, IOT_GUILD);
        if (.@inst < 0)
            Exception("Kamelot Instance Error", RB_DEFAULT|RB_ISFATAL);
        instance_attachmap("042-0", .@inst, 0, "042-0@"+.@g);
        instance_attachmap("042-1", .@inst, 0, "042-1@"+.@g);
        instance_attachmap("042-2", .@inst, 0, "042-2@"+.@g);
        instance_attachmap("042-3", .@inst, 0, "042-3@"+.@g);
        instance_attachmap("042-4", .@inst, 0, "042-4@"+.@g);
        instance_attachmap("042-5", .@inst, 0, "042-5@"+.@g);
        instance_attachmap("042-6", .@inst, 0, "042-6@"+.@g);
        instance_attachmap("042-7", .@inst, 0, "042-7@"+.@g);
        instance_attachmap("042-8", .@inst, 0, "042-8@"+.@g);
        instance_attachmap("042-9", .@inst, 0, "042-9@"+.@g);
        instance_attachmap("042-10", .@inst, 0, "042-10@"+.@g);
        instance_attachmap("042-11", .@inst, 0, "042-11@"+.@g);
        instance_set_timeout(0, 0, .@inst);
        instance_init(.@inst);
        $KAMELOT_ID[.@g] = .@inst;
    }

    // You can enter in every other stage
    dispbottom l("Advised Raid Party: One Thief, one Mage");
    if (is_admin())
        warp "042-0@"+.@g, any(59, 60), 80;
    end;
}