Repository reorganisation

Unified kotlin and java into just src/main
Unified the rs09 and core packages
Took all content out of the core package, and placed it into the new content package
Reorganised all source code relating to content to be easier to find and explore
This commit is contained in:
Ceikry
2023-01-26 13:59:28 +00:00
committed by Ryan
parent e4b799c44a
commit a100affda2
3156 changed files with 24205 additions and 30585 deletions
@@ -0,0 +1,247 @@
package content.global.skill.prayer;
import core.cache.def.impl.SceneryDefinition;
import core.game.component.Component;
import core.game.node.entity.player.link.prayer.PrayerType;
import core.plugin.Initializable;
import core.game.node.entity.skill.SkillRestoration;
import core.game.node.entity.skill.Skills;
import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.SpellBookManager.SpellBook;
import core.game.node.entity.player.link.diary.DiaryType;
import core.game.node.entity.player.link.quest.Quest;
import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
/**
* Handles the praying at an alter.
* @author Vexia
*/
@Initializable
public class PrayerAltarPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
SceneryDefinition.setOptionHandler("pray-at", this);
SceneryDefinition.setOptionHandler("pray", this);
SceneryDefinition.forId(61).getHandlers().put("option:check", this);
return this;
}
@Override
public boolean handle(Player player, Node node, String option) {
if (option.equalsIgnoreCase("check")) {
final Quest quest = player.getQuestRepository().getQuest("Merlin's Crystal");
if (quest.getStage(player) == 70) {
player.getDialogueInterpreter().sendDialogue("You find a small inscription at the bottom of the altar. It reads:", "'Snarthon Candtrick Termanto'.");
quest.setStage(player, 80);
return true;
}
player.getPacketDispatch().sendMessage("An altar of the evil god Zamorak.");
return true;
}
Altar altar = Altar.forId(node.getId());
if (altar != null) {
altar.pray(player);
visualize(player);
return true;
}
if (player.getSkills().getPrayerPoints() == player.getSkills().getStaticLevel(Skills.PRAYER)) {
player.getPacketDispatch().sendMessage("You already have full prayer points.");
return true;
}
visualize(player);
player.getSkills().rechargePrayerPoints();
player.getPacketDispatch().sendMessage("You recharge your Prayer points.");
if (node.getId() == 2640) {
player.getSkills().setLevel(Skills.PRAYER, player.getSkills().getStaticLevel(Skills.PRAYER) + 2);
}
if (node.getId() == 409
&& player.getLocation().withinDistance(new Location(3209, 3495, 1))
&& player.getPrayer().getActive().contains(PrayerType.SMITE)) {
player.getAchievementDiaryManager().finishTask(player,DiaryType.VARROCK,2, 4);
}
if (node.getId() == 39842
&& player.getLocation().withinDistance(new Location(2995, 3177, 0))) {
player.getAchievementDiaryManager().finishTask(player,DiaryType.FALADOR,0, 13);
}
// Seers task can be completed with either of camelot altar or seers church altar
if (node.getId() == 19145
&& player.getLocation().withinDistance(new Location(2749, 3496, 1))) {
player.getAchievementDiaryManager().finishTask(player,DiaryType.SEERS_VILLAGE,0, 10);
}
if (node.getId() == 409
&& player.getLocation().withinDistance(new Location(2694, 3462, 0))) {
player.getAchievementDiaryManager().finishTask(player,DiaryType.SEERS_VILLAGE,0, 10);
}
if (node.getLocation().equals(new Location(2571, 9499, 0))) {
player.teleport(new Location(2583, 9576, 0));
player.sendMessage("It's a trap!");
return true;
}
return true;
}
/**
* Visualizes the prayer.
* @param player the player.
*/
public void visualize(Player player) {
player.lock(3);
player.getAudioManager().send(2674);
player.animate(Animation.create(645));
}
/**
* An altar.
* @author Vexia
*/
public enum Altar {
ANCIENT(6552, SpellBook.ANCIENT.getInterfaceId(), "You feel a strange wisdom fill your mind...", "You feel a strange drain upon your memory...") {
@Override
public void pray(Player player) {
if (player.getSkills().getStaticLevel(Skills.MAGIC) < 50) {
player.sendMessage("You need a Magic level of at least 50 in order to do this.");
return;
}
drain(player);
if (!isPrayerType(player)) {
switchToBook(player);
player.sendMessage(getMessages()[0]);
} else {
revert(player);
player.sendMessage(getMessages()[1]);
}
}
},
LUNAR(17010, SpellBook.LUNAR.getInterfaceId(), "Lunar spells activated!", "Modern spells activated!") {
@Override
public void pray(Player player) {
if (player.getSkills().getStaticLevel(Skills.MAGIC) < 65) {
player.sendMessage("You need a Magic level of at least 65 in order to do this.");
return;
}
if (!isPrayerType(player)) {
switchToBook(player);
player.sendMessage(getMessages()[0]);
} else {
revert(player);
player.sendMessage(getMessages()[1]);
}
}
};
/**
* The id.
*/
private int id;
/**
* The book.
*/
private int book;
/**
* The messages.
*/
private String[] messages;
/**
* Constructs a new {@Code Altar} {@Code Object}
* @param id the id.
* @param book the book.
* @param messages the messages.
*/
private Altar(int id, int book, String... messages) {
this.id = id;
this.book = book;
this.messages = messages;
}
/**
* Prays at the altar.
* @param player the player.
*/
public void pray(Player player) {
}
/**
* Reverts the book.
* @param player the player.
*/
public void revert(Player player) {
player.getSpellBookManager().setSpellBook(SpellBook.MODERN);
player.getInterfaceManager().openTab(new Component(SpellBook.values()[SpellBook.MODERN.ordinal()].getInterfaceId()));
}
/**
* Drains the player.
* @param player the player.
*/
public void drain(Player player) {
player.getSkills().decrementPrayerPoints(player.getSkills().getPrayerPoints());
}
/**
* Switches to the book.
* @param player the player.
*/
public void switchToBook(Player player) {
player.getSpellBookManager().setSpellBook(SpellBook.forInterface(book));
player.getInterfaceManager().openTab(new Component(book));
}
/**
* Checks if it is the prayer type.
* @param player the player.
* @return true if so.
*/
public boolean isPrayerType(Player player) {
return player.getSpellBookManager().getSpellBook() == book;
}
/**
* Gets an altar.
* @param id the id.
* @return the altar.
*/
public static Altar forId(int id) {
for (Altar altar : values()) {
if (id == altar.getId()) {
return altar;
}
}
return null;
}
/**
* Gets the id.
* @return the id
*/
public int getId() {
return id;
}
/**
* Gets the book.
* @return the book
*/
public int getBook() {
return book;
}
/**
* Gets the messages.
* @return the messages
*/
public String[] getMessages() {
return messages;
}
}
}