// TMW 2 Script
// Author:
// Jesusalva
// Micksha
// Description:
// Controls the great hall
// None of the exits work
042-10,86,139,0 script #KDoor04210a NPC_HIDDEN,3,0,{
end;
OnTouch:
.@g=getcharid(2);
if (.@g < 1) percentheal -100, -100;
dispbottom l("OH NOES! The ceiling seems to have collapsed. I hope we got the key, or the quest is over for us!");
end;
}
042-10,149,136,0 duplicate(#KDoor04210a) #KDoor04210b NPC_HIDDEN,0,0
042-10,21,139,0 duplicate(#KDoor04210a) #KDoor04210c NPC_HIDDEN,2,0
042-10,20,80,0 duplicate(#KDoor04210a) #KDoor04210d NPC_HIDDEN,0,6
// Boss Room control
042-10,142,20,0 script #KDoor04210e NPC_HIDDEN,4,0,{
end;
OnTouch:
.@g=getcharid(2);
if (.@g < 1) percentheal -100, -100;
if (!($KAMELOT_QUEST[.@g] & 8) || !($KAMELOT_QUEST[.@g] & 16) || !($KAMELOT_QUEST[.@g] & 32)) goto L_NoAccess;
warp "042-11@"+.@g, 41, 56;
// TODO Fire Events
end;
L_NoAccess:
dispbottom l("This door is locked, if we only had a %s...", getitemlink(KamelotKey));
end;
}
// Boss Room Warning
042-10,150,25,0 script Warning#Kamelot NPC_HIDDEN,{
mesc ".:: "+l("DANGER!")+" ::.", 1;
mes "";
mesc l("I've sealed a massive amount of dark magic here."), 1;
mesc l("Do not break my seal to prevent the curse from reaching Kamelot."), 1;
mes "";
mes l("-- Merlin");
end;
OnInit:
.distance=4;
end;
}
// Magic Seal Main
042-10,135,42,0 script #KamelotSeal NPC_HIDDEN,0,4,{
end;
OnTouch:
.@g=getcharid(2);
if (.@g < 1) percentheal -100, -100;
if (!($KAMELOT_QUEST[.@g] & 16) && !($KAMELOT_QUEST[.@g] & 8)) goto L_NoAccessBlock;
if (!($KAMELOT_QUEST[.@g] & 16) || !($KAMELOT_QUEST[.@g] & 8)) goto L_NoAccess;
// You can pass freely, so we do nothing
end;
L_NoAccess:
slide 127, 36;
percentheal -5, -5;
dispbottom l("A powerful magic seal repeals you!");
dispbottom l("It's weaker than before, probably only one is working right now.");
end;
L_NoAccessBlock:
slide 127, 36;
percentheal -10, -10;
dispbottom l("A powerful magic seal repeals you!");
dispbottom l("We need to find what powers these two seals and disable it.");
end;
}
////////////////////////////////////////////////////////////////////
// TODO: Catazuli spots
// TODO: Door Mechanism
// TODO: Spawn monsters
042-10,128,85,0 script #Katazuli01 NPC_SUMMONING_CIRC,0,0,{
dispbottom l("This is probably related to the magical seals.");
end;
OnInit:
.distance=2;
end;
OnTouch:
npctalk l("TODO FIXME"); // TODO FIXME
end;
}
042-10,32,108,0 script #Katazuli02 NPC_SUMMONING_CIRC,0,0,{
dispbottom l("This is probably related to the magical seals.");
end;
OnInit:
.distance=2;
end;
OnTouch:
npctalk l("TODO FIXME"); // TODO FIXME
end;
}
////////////////////////////////////////////////////////////////////
// TODO: Catazuli spots
// TODO: Door Mechanism
// TODO: Spawn monsters
// KamelotSwitch( SWITCH ID )
function script KamelotSwitch {
.@id=getarg(0);
.@g=getcharid(2);
if (!($KAMELOT_KEYMASK[.@g] & $KAMELOT_KEY[.@g])) end; // Don't care
.@st=($KAMELOT_PASSMASK[.@g] & .@id);
mes l("Status: %s", (.@st ? l("Active") : l("Inactive") ));
if (!countitem(KamelotKey))
close;
mes "Change switch status?";
next;
if (askyesno() == ASK_YES) {
$KAMELOT_PASSMASK[.@g]=$KAMELOT_PASSMASK[.@g]^.@id;
// The meaning of st is now mixed
if (.@st)
setnpcdisplay instance_npcname(.name$), NPC_SWITCH_OFFLINE;
else
setnpcdisplay instance_npcname(.name$), NPC_SWITCH_ONLINE;
}
// Check password and delete key
if ($KAMELOT_PASSMASK[.@g] == $KAMELOT_PASSCODE[.@g]) {
delitem KamelotKey, 1;
$KAMELOT_QUEST=$KAMELOT_QUEST|32;
mesc l("Your hear a clink, and the key breaks."), 2;
// Player Reward for completing this stage
getitem GuildCoin, 1;
getexp $KAMELOT_MX[.@g]*50, $KAMELOT_MX[.@g]*10;
// Guild Reward for completing this stage
.@ggp=1200+$KAMELOT_MX[.@g]*5;
.@gxp=$KAMELOT_MX[.@g]*25;
$GUILD_BANK[.@g]+=.@ggp;
guildgetexp(.@gxp); // 25xp per player average level (max 2500/3750)
// Announce
mapannounce getmap(), strcharinfo(0)+" has opened the gate!", 0;
// Guild Master Notification
.@gm$=getguildmaster(.@g);
if (!getcharid(3, .@gm$)) return;
.@gma=getcharid(3, .@gm$);
.@gmb=getcharid(0, .@gm$);
if (!isloggedin(.@gma, .@gmb)) return;
message .@gm$, strcharinfo(0)+" opened the gate: Guild GP +"+.@ggp+" Guild XP +"+.@gxp;
}
return;
}
042-10,128,85,0 script #K4210Note01 NPC_NO_SPRITE,{
.@g=getcharid(2);
if (!($KAMELOT_KEYMASK[.@g] & $KAMELOT_KEY[.@g])) end; // Don't care
if ($KAMELOT_PASSCODE[.@g] & 1)
dispbottom l("Active");
else
dispbottom l("Inactive");
end;
OnInit:
.distance=2;
end;
}
042-10,128,85,0 script #K4210Switch01 NPC_SWITCH_OFFLINE,{
KamelotSwitch(1);
close;
OnInit:
.distance=2;
.id=1;
end;
}