Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.project.model.content.action.ext;
- import com.project.model.Entity;
- import com.project.model.content.Prayer;
- import com.project.model.content.action.Action;
- import com.project.model.content.dialogue.Dialogue;
- import com.project.model.player.HeadIcon;
- import com.project.model.player.Skills;
- /**
- *
- * @author kronn
- *
- */
- public class PrayerButtonAction extends Action {
- /**
- * Prayer instance
- */
- private final Prayer prayer;
- /**
- * PrayerButtonAction constructor
- *
- * @param recipient
- * the recipient.
- * @param prayer
- * the prayer.
- */
- public PrayerButtonAction(Entity recipient, Prayer prayer) {
- super(recipient, AnimationPolicy.RESET_NONE);
- this.prayer = prayer;
- }
- @Override
- public void execute() {
- if (asPlayer().getSkills().getLevel(Skills.PRAYER) <= 0) {
- asPlayer().getPacketSender().sendConfig(prayer.getConfigurationId(), 0);
- asPlayer().getPacketSender().sendMessage("You have run out of prayer points, you can recharge them at an altar.");
- return;
- }
- if (asPlayer().getSkills().getLevelForExperience(Skills.PRAYER) < prayer.getLevelRequirement()) {
- asPlayer().getPacketSender().sendConfig(prayer.getConfigurationId(), 0);
- asPlayer().getDialogueManager().setCurrentDialogue(new Dialogue() {
- @Override
- public void sendNextDialogue() {
- switch (getStage()) {
- case 0:
- asPlayer().getPacketSender().sendTextDialogue("You need a @blu@Prayer@bla@ level of " + prayer.getLevelRequirement() + " to use @blu@" + prayer.getName() + "@bla@.");
- break;
- default:
- asPlayer().getPacketSender().sendRemoveAllWindows();
- break;
- }
- increment();
- }
- });
- return;
- }
- if (asPlayer().getActivePrayers().contains(prayer)) {
- asPlayer().getActivePrayers().remove(prayer);
- prayer.getHeadicon().ifPresent(h -> asPlayer().setHeadIcon(HeadIcon.NONE));
- } else if (!asPlayer().getActivePrayers().contains(prayer)) {
- asPlayer().getActivePrayers().add(prayer);
- prayer.getHeadicon().ifPresent(h -> asPlayer().setHeadIcon(h));
- for (Prayer incompatible : incompatiblePrayers(prayer)) {
- if (asPlayer().getActivePrayers().contains(incompatible)) {
- asPlayer().getPacketSender().sendConfig(incompatible.getConfigurationId(), 0);
- asPlayer().getActivePrayers().remove(incompatible);
- }
- }
- }
- }
- /**
- * An array of incompatible prayers
- *
- * @param prayer
- * the {@link Prayer} we check incompatible's for.
- * @return an array of incompatible prayers.
- */
- private Prayer[] incompatiblePrayers(Prayer prayer) {
- switch (prayer) {
- case CLARITY_OF_THOUGHT:
- return new Prayer[] { Prayer.INCREDIBLE_REFLEXES, Prayer.IMPROVED_REFLXES };
- case IMPROVED_REFLXES:
- return new Prayer[] { Prayer.INCREDIBLE_REFLEXES, Prayer.CLARITY_OF_THOUGHT };
- case INCREDIBLE_REFLEXES:
- return new Prayer[] { Prayer.IMPROVED_REFLXES, Prayer.CLARITY_OF_THOUGHT };
- case PROTECT_FROM_MAGIC:
- return new Prayer[] { Prayer.PROTECT_FROM_MELEE, Prayer.PROTECT_FROM_MISSILES };
- case PROTECT_FROM_MELEE:
- return new Prayer[] { Prayer.PROTECT_FROM_MAGIC, Prayer.PROTECT_FROM_MISSILES };
- case PROTECT_FROM_MISSILES:
- return new Prayer[] { Prayer.PROTECT_FROM_MAGIC, Prayer.PROTECT_FROM_MELEE };
- case PROTECT_ITEM:
- return new Prayer[] {};
- case RAPID_HEAL:
- return new Prayer[] { Prayer.RAPID_RESTORE };
- case RAPID_RESTORE:
- return new Prayer[] { Prayer.RAPID_HEAL };
- case ROCK_SKIN:
- return new Prayer[] { Prayer.THICK_SKIN, Prayer.STEEL_SKIN };
- case THICK_SKIN:
- return new Prayer[] { Prayer.ROCK_SKIN, Prayer.STEEL_SKIN };
- case STEEL_SKIN:
- return new Prayer[] { Prayer.ROCK_SKIN, Prayer.THICK_SKIN };
- case BURST_OF_STRENGTH:
- return new Prayer[] { Prayer.ULTIMATE_STRENGTH, Prayer.SUPERHUMAN_STRENGTH };
- case SUPERHUMAN_STRENGTH:
- return new Prayer[] { Prayer.BURST_OF_STRENGTH, Prayer.ULTIMATE_STRENGTH };
- case ULTIMATE_STRENGTH:
- return new Prayer[] { Prayer.BURST_OF_STRENGTH, Prayer.SUPERHUMAN_STRENGTH };
- }
- return new Prayer[] {};
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement