MoparClassic/GameServer/conf/server/queststmp/VampireSlayer.java

321 lines
9.2 KiB
Java

import org.rscdaemon.server.quest.*;
import org.rscdaemon.server.model.*;
import org.rscdaemon.server.event.*;
import org.rscdaemon.server.entityhandling.EntityHandler;
/**
* Quest: Vampire Slayer (v1.0) 6/1/2009
* Status: INCOMPLETE
* Start: Morgan (id 97), 215,615
* NPCs: Harlow (id 98), 82,444
* Items:
* Reward: 3 quest points, 1000 attack xp
*
* @author punKrockeR
*/
public class VampireSlayer extends Quest
{
private static final int MORGAN_ID = 97;
private static final int HARLOW_ID = 98;
private static final int REWARD_XP = 1000;
private static final int DEFAULT_EVENT_DELAY = 3200;
private static final int QUEST_POINTS = 3;
private static final String[] FIRST_MENU = new String[] { "No. Vampires are scary", "Ok I'm up for an adventure", "I tried fighting him. He wouldn't die" };
private static final String[] SECOND_MENU = new String[] { "No, you've had enough", "Ok mate", "Morgan needs your help" };
/**
* Don't load this quest yet it's incomplete
*/
public boolean loadQuest()
{
return false;
}
/**
* @return the quest's name
*/
public String getName()
{
return "Vampire Slayer";
}
/**
* @return this quest's unique id
*/
public int getUniqueID()
{
return 4;
}
/**
* Initialises the quest
*/
public void init()
{
associateNpc(MORGAN_ID);
associateNpc(HARLOW_ID);
}
/**
* Handles the given quest action
*/
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];
player.setBusy(true);
npc.blockedBy(player);
if(npc.getID() == MORGAN_ID)
{
if(stage == -1)
startQuest(player, npc);
else
handleMorganTalk(player, npc);
} else
if(npc.getID() == HARLOW_ID)
{
handleHarlowTalk(player, npc);
}
}
}
/**
* Handles npc chat if the quest hasn't been started yet
*/
private void startQuest(final Player player, final Npc npc)
{
sendChat("Please, please help us bold hero!", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
sendChat("What's the problem?", player, npc);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
sendChat("Our little village has been dreadfully ravaged by an evil vampire!", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
sendChat("There's hardly any of us left", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
sendChat("We need someone to get rid of him once and for good", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
player.setBusy(false);
player.setMenuHandler(new MenuHandler(FIRST_MENU)
{
public void handleReply(final int option, final String reply)
{
player.setBusy(true);
npc.blockedBy(player);
sendChat(reply, player, npc);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
if(option == 0) // No
{
sendChat("I don't blame you", npc, player);
player.setBusy(false);
npc.unblock();
} else // Yes
{
npc.blockedBy(player);
sendChat("I think first you should seek help", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("I have a friend who is a retired vampire hunter called Dr Harlow", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("He may be able to give you some tips", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("He's usually found in the Jolly Bar Inn these days", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("He's a bit of an old soak", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("Mention his old friend Morgan", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("I'm sure he wouldn't want me to be killed by a vampire", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
sendChat("I'll look him up then", player, npc);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
player.setQuestStage(getUniqueID(), 1); // Start quest
player.setBusy(false);
npc.unblock();
}
});
}
});
}
});
}
});
}
});
}
});
}
});
}
});
}
}
});
}
});
player.getActionSender().sendMenu(FIRST_MENU);
}
});
}
});
}
});
}
});
}
});
}
/**
* Handles Morgan's chat if the quest is started but not finished
*/
private void handleMorganTalk(final Player player, final Npc npc)
{
player.setBusy(true);
npc.blockedBy(player);
sendChat("How are you doing with your quest?", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
if(player.getQuestStage(getUniqueID()) == 1)
{
npc.blockedBy(player);
sendChat("I'm working on it still", player, npc);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("Please hurry", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
npc.blockedBy(player);
sendChat("Every day we live in fear of our lives", npc, player);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
sendChat("Afraid that we will be the vampire's next victim", npc, player);
player.setBusy(false);
npc.unblock();
}
});
}
});
}
});
} else
{
}
}
});
}
/**
* Handles Harlow's chat if the quest is started but not finished
*/
private void handleHarlowTalk(final Player player, final Npc npc)
{
player.setBusy(true);
npc.blockedBy(player);
sendChat("Buy me a drrink pleassh", npc, player);
player.setBusy(false);
player.setMenuHandler(new MenuHandler(SECOND_MENU)
{
public void handleReply(final int option, final String reply)
{
player.setBusy(true);
npc.blockedBy(player);
sendChat(reply, player, npc);
addSingleEvent(new SingleEvent(player, DEFAULT_EVENT_DELAY)
{
public void action()
{
player.setBusy(false);
npc.unblock();
if(option == 0)
{
sendChat("Fuck you", npc, player);
player.setBusy(false);
npc.unblock();
}
}
});
}
});
player.getActionSender().sendMenu(SECOND_MENU);
}
/**
* Finishes the quest
*/
private void finishQuest(final Player player, final Npc npc)
{
}
/**
* Construct the quest (empty)
*/
public VampireSlayer()
{
}
}