summaryrefslogblamecommitdiff
path: root/npc/042-10/ctrl.txt
blob: 2915c0b4a4a57a643d1114bdef6ee5d47798e5fd (plain) (tree)





























                                                                                                                      
                                                                                                                  





























                                                                                         


                                                                                        



                  






                                                                                     

                                                       
                                                                                







                                                                    


                                                                   
 


                
 
















                                                                   
 








































































                                                                                               
 
// 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;
}