mirror of
https://github.com/moparisthebest/MoparClassic
synced 2024-11-14 05:05:10 -05:00
379 lines
15 KiB
Java
379 lines
15 KiB
Java
import org.rscdaemon.server.quest.*;
|
|
import org.rscdaemon.server.model.*;
|
|
import org.rscdaemon.server.event.*;
|
|
|
|
/**
|
|
* Quest: Black Knight's Fortress (v1.0)
|
|
* Status: INCOMPLETE
|
|
* Start: 304, 1507
|
|
* Stage1: 269, 441
|
|
* Items: -
|
|
* Rewards: -
|
|
*
|
|
* @author youKnowWho
|
|
*/
|
|
public class BlackKnightFortress extends Quest
|
|
{
|
|
private static final int QUEST_POINTS = 1;
|
|
private static final int NPC_VARZE = 110;
|
|
private static final int WALL_ID = 22;
|
|
private static final int WALL_X = 273;
|
|
private static final int WALL_Y = 435;
|
|
private static final int GRILL_ID = -1;
|
|
private static final int GRILL_X = -1;
|
|
private static final int GRILL_Y = -1;
|
|
private static final int REQUIRED_QPOINTS = 0; // 13
|
|
private static final String[] FIRST_MENU = new String[]{"Well what's the problem?","Well, ah.. good luck with that"};
|
|
private static final String[] SECOND_MENU = new String[]{"Secret weapon? That sounds really scary!","I can take care of that"};
|
|
private static final String[] THIRD_MENU = new String[]{"Sure, but it'll cost you","No, actually, I lied."};
|
|
private static final String[] FOURTH_MENU = new String[]{"I'll get right on it then","Sorry, I can't be bothered"};
|
|
|
|
/**
|
|
* Don't load this quest yet it's incomplete
|
|
*/
|
|
public boolean loadQuest()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public void init()
|
|
{
|
|
associateNpc(NPC_VARZE);
|
|
associateObject(WALL_ID, WALL_X, WALL_Y);
|
|
}
|
|
|
|
public BlackKnightFortress()
|
|
{
|
|
}
|
|
|
|
public String getName()
|
|
{
|
|
return "Black Knight's Fortress";
|
|
}
|
|
|
|
public int getUniqueID()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public void handleAction(QuestAction action, Object[] args, final Player player)
|
|
{
|
|
int stage = player.getQuestStage(this);
|
|
|
|
if(action == action.TALKED_NPC)
|
|
{
|
|
if(!(args[0] instanceof Npc))
|
|
return;
|
|
|
|
final Npc npc = (Npc)args[0];
|
|
|
|
if(npc.getID() != NPC_VARZE)
|
|
return;
|
|
|
|
player.setBusy(true);
|
|
npc.blockedBy(player);
|
|
|
|
// handle quest complete chat?
|
|
|
|
if(stage == -1)
|
|
startQuest(player, npc);
|
|
else
|
|
handleTalk(player, npc);
|
|
} else
|
|
if(action == action.USED_OBJECT)
|
|
{
|
|
if(!(args[0] instanceof GameObject))
|
|
return;
|
|
|
|
final GameObject obj = (GameObject)args[0];
|
|
|
|
if(obj.getID() != WALL_ID && obj.getID() != GRILL_ID)
|
|
return;
|
|
|
|
player.setBusy(true);
|
|
|
|
if(obj.getID() == WALL_ID)
|
|
{
|
|
if(player.getY() < 435 || stage >= 1)
|
|
{
|
|
player.getActionSender().sendMessage("You push on the wall...");
|
|
player.getActionSender().sendSound("secretdoor");
|
|
world.unregisterGameObject(obj);
|
|
world.delayedSpawnObject(obj.getLoc(), 1000);
|
|
|
|
if(player.getY() < 435)
|
|
player.teleport(273, 435, false);
|
|
else
|
|
player.teleport(273, 434, false);
|
|
|
|
addDelayedMessage("It slides out of the way!", player, 1000);
|
|
} else
|
|
player.getActionSender().sendMessage("You see no reason to push on the wall");
|
|
} else
|
|
if(obj.getID() == GRILL_ID)
|
|
{
|
|
// listen
|
|
}
|
|
|
|
player.setBusy(false);
|
|
}
|
|
}
|
|
|
|
private void handleTalk(final Player player, final Npc npc)
|
|
{
|
|
int stage = player.getQuestStage(this);
|
|
|
|
if(stage >= 1 && stage <= 5)
|
|
{
|
|
sendChat("I don't have time to talk right now", npc, player);
|
|
addDelayedChat("Come back when you've destroyed that weapon!", npc, player);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
}
|
|
}
|
|
|
|
private void startQuest(final Player player, final Npc npc)
|
|
{
|
|
sendChat("Good day to you, " + (player.isMale() ? "sir" : "miss"), npc, player);
|
|
|
|
addSingleEvent(new SingleEvent(player, 2000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Hello sir. I've heard rumours that you're going to war with the black knights", player, npc);
|
|
addSingleEvent(new SingleEvent(player, 4000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Is this true?", player, npc);
|
|
addSingleEvent(new SingleEvent(player, 2000)
|
|
{
|
|
public void action()
|
|
{
|
|
if(player.getQuestPoints() >= REQUIRED_QPOINTS) // Confirm rumour
|
|
{
|
|
sendChat("Who told you that?", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 2000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Oh, it makes no difference. Yes, the rumours are true.", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
npc.blockedBy(player);
|
|
player.setBusy(false);
|
|
player.setMenuHandler(new MenuHandler(FIRST_MENU)
|
|
{
|
|
public void handleReply(final int option, final String reply)
|
|
{
|
|
npc.blockedBy(player);
|
|
player.setBusy(true);
|
|
sendChat(reply + (option == 0 ? " Surely you'll defeat them easily?" : ""), player, npc);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
npc.blockedBy(player);
|
|
switch(option)
|
|
{
|
|
case 0:
|
|
sendChat("Yeah, well.. You're lucky you've earned yourself a good reputation", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 4000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Or I wouldn't tell you.", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 4000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("The black knights have a secret weapon, and they say it will destroy us.", npc, player);
|
|
npc.blockedBy(player);
|
|
addSingleEvent(new SingleEvent(player, 4000)
|
|
{
|
|
public void action()
|
|
{
|
|
player.setBusy(false);
|
|
player.setMenuHandler(new MenuHandler(SECOND_MENU)
|
|
{
|
|
public void handleReply(final int option, final String reply)
|
|
{
|
|
npc.blockedBy(player);
|
|
player.setBusy(true);
|
|
|
|
if(option == 1)
|
|
sendChat("Well it just so happens that I'm an expert in secret weapon thwarting.", player, npc);
|
|
else
|
|
sendChat(reply, player, npc);
|
|
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
npc.blockedBy(player);
|
|
switch(option)
|
|
{
|
|
case 0:
|
|
sendChat("What kind of sissy talk is that? Get out of my sight!", npc, player);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
break;
|
|
case 1:
|
|
sendChat("I like your spirit, young warrior!", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Do you think you could help us?", npc, player);
|
|
npc.blockedBy(player);
|
|
addSingleEvent(new SingleEvent(player, 2000)
|
|
{
|
|
public void action()
|
|
{
|
|
player.setBusy(false);
|
|
player.setMenuHandler(new MenuHandler(THIRD_MENU)
|
|
{
|
|
public void handleReply(final int option, final String reply)
|
|
{
|
|
sendChat(reply, player, npc);
|
|
npc.blockedBy(player);
|
|
player.setBusy(true);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
npc.blockedBy(player);
|
|
|
|
switch(option)
|
|
{
|
|
case 0:
|
|
sendChat("Money won't be a problem, assuming you can do the job.", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Well then, what do you want me to do?", player, npc);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("First of all, you'll need to find out what the weapon is... then destroy it!", npc, player);
|
|
addSingleEvent(new SingleEvent(player, 4500)
|
|
{
|
|
public void action()
|
|
{
|
|
sendChat("Head north and search the black knight's castle.", npc, player);
|
|
npc.blockedBy(player);
|
|
player.setBusy(false);
|
|
player.setMenuHandler(new MenuHandler(FOURTH_MENU)
|
|
{
|
|
public void handleReply(final int option, final String reply)
|
|
{
|
|
sendChat(reply, player, npc);
|
|
player.setBusy(true);
|
|
npc.blockedBy(player);
|
|
addSingleEvent(new SingleEvent(player, 3000)
|
|
{
|
|
public void action()
|
|
{
|
|
npc.blockedBy(player);
|
|
|
|
switch(option)
|
|
{
|
|
case 0:
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
addDelayedChat("Good luck, " + player.getUsername() + ".", npc, player);
|
|
player.setQuestStage(getUniqueID(), 1);
|
|
break;
|
|
case 1:
|
|
addDelayedChat("Don't waste my time! Every valuable second, doom draws nearer!", npc, player);
|
|
default:
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
player.getActionSender().sendMenu(FOURTH_MENU);
|
|
player.setBusy(false);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
case 1:
|
|
addDelayedChat("Don't waste my time " + player.getUsername() + "!", npc, player);
|
|
default:
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
player.getActionSender().sendMenu(THIRD_MENU);
|
|
player.setBusy(false);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
default:
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
player.getActionSender().sendMenu(SECOND_MENU);
|
|
player.setBusy(false);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
case 1:
|
|
sendChat("Um, thanks. I guess...", npc, player);
|
|
default:
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
player.getActionSender().sendMenu(FIRST_MENU);
|
|
player.setBusy(false);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
} else // Deny rumour
|
|
{
|
|
sendChat("Most certainly not. The Black Knights are no threat to us!", npc, player);
|
|
player.setBusy(false);
|
|
npc.unblock();
|
|
addDelayedMessage("You need " + REQUIRED_QPOINTS + " quest points before " + npc.getDef().getName() + " will trust you", player);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|