// 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) // KamelotCleanup(guildid) function script KamelotCleanup { .@g=getarg(0); //$KAMELOT_ID[.@g]=0; $KAMELOT_QUEST[.@g]=0; $KAMELOT_KEYMASK[.@g]=0; return; } 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) < 1) { 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); // Quest already started if ($KAMELOT_QUEST[.@g] & 1) { // Quest started but Cooldown expired // Needs to cleanup - wipe all variables if ($KAMELOT_COOLDOWN[.@g] < gettimeparam(GETTIME_WEEKDAY)) { KamelotCleanup(.@g); } else { dispbottom l("The gates are firmly shut by some weird magical power."); end; } } // Build instance if it doesn't exists or has been reallocated if (instanceowner($KAMELOT_ID[.@g]) != .@g) { debugmes "Creating Instance for guild %d", .@g; .@inst=instance_create("Kamelot@"+.@g, .@g, IOT_GUILD); if (.@inst < 0) Exception("Kamelot Instance Error", RB_DEFAULT|RB_ISFATAL); instance_attachmap("042-0", .@inst, .@g, "042-0@"+.@g); instance_attachmap("042-1", .@inst, .@g, "042-1@"+.@g); instance_attachmap("042-2", .@inst, .@g, "042-2@"+.@g); instance_attachmap("042-3", .@inst, .@g, "042-3@"+.@g); instance_attachmap("042-4", .@inst, .@g, "042-4@"+.@g); instance_attachmap("042-5", .@inst, .@g, "042-5@"+.@g); instance_attachmap("042-6", .@inst, .@g, "042-6@"+.@g); instance_attachmap("042-7", .@inst, .@g, "042-7@"+.@g); instance_attachmap("042-8", .@inst, .@g, "042-8@"+.@g); instance_attachmap("042-9", .@inst, .@g, "042-9@"+.@g); instance_attachmap("042-10", .@inst, .@g, "042-10@"+.@g); instance_attachmap("042-11", .@inst, .@g, "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; }