mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Fixed loss of draconic visages if used on an anvil without an anti-dragon shield in the player's inventory
Fixed dragonfire shield and dragon square shield smithing not checking for a hammer in inventory
This commit is contained in:
parent
6c386e6ed2
commit
57f5617fe8
1 changed files with 36 additions and 53 deletions
|
|
@ -1,55 +1,23 @@
|
|||
package content.global.skill.smithing;
|
||||
|
||||
import content.global.skill.skillcapeperks.SkillcapePerks;
|
||||
import core.api.Container;
|
||||
import core.game.dialogue.DialoguePlugin;
|
||||
import core.game.node.entity.skill.Skills;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.item.Item;
|
||||
import core.plugin.Initializable;
|
||||
import core.game.world.update.flag.context.Animation;
|
||||
import org.rs09.consts.Items;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Represents the dialogue plugin used for making a dragon shield.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
* @author Player Name
|
||||
* @version 1.1
|
||||
*/
|
||||
@Initializable
|
||||
public final class DragonShieldDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* Represents the item shield parts.
|
||||
*/
|
||||
private static final Item[] SHIELD_PARTS = new Item[] { new Item(2366), new Item(2368) };
|
||||
|
||||
/**
|
||||
* Represents th edraconic visage item.
|
||||
*/
|
||||
private static final Item DRACONIC_VISAGE = new Item(11286);
|
||||
|
||||
/**
|
||||
* Represents the anti dragon fire shield.
|
||||
*/
|
||||
private static final Item ANTI_DRAGONSHIELD = new Item(1540);
|
||||
|
||||
/**
|
||||
* Represents the dragon fire shield item.
|
||||
*/
|
||||
private static final Item DRAGON_FIRESHIELD = new Item(11284);
|
||||
|
||||
/**
|
||||
* Represents the shield item.
|
||||
*/
|
||||
private static final Item SQ_SHIELD = new Item(1187);
|
||||
|
||||
/**
|
||||
* Represents the hammering animation.
|
||||
*/
|
||||
private static Animation ANIMATION = new Animation(898);
|
||||
|
||||
/**
|
||||
* Represents the shield type.
|
||||
*/
|
||||
private int type;
|
||||
|
||||
/**
|
||||
* Constructs a new {@code DragonShieldDialogue} {@code Object}.
|
||||
*/
|
||||
|
|
@ -74,11 +42,26 @@ public final class DragonShieldDialogue extends DialoguePlugin {
|
|||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
type = (int) args[0];
|
||||
if (!inInventory(player, Items.HAMMER_2347, 1) && !SkillcapePerks.isActive(SkillcapePerks.BAREFISTED_SMITHING, player)) {
|
||||
interpreter.sendDialogue("You need a hammer to work the metal with.");
|
||||
}
|
||||
int type = (int) args[0];
|
||||
if (type == 1) {
|
||||
interpreter.sendDialogue("You set to work trying to fix the ancient shield. It's seen some", "heavy reward and needs some serious work doing to it.");
|
||||
if (!(inInventory(player, Items.SHIELD_RIGHT_HALF_2368, 1) && inInventory(player, Items.SHIELD_LEFT_HALF_2366, 1))) {
|
||||
interpreter.sendDialogue("You need the other half of the shield."); //todo authentic message
|
||||
return false;
|
||||
}
|
||||
interpreter.sendDialogue("You set to work trying to fix the ancient shield. It's seen some", "heavy action and needs some serious work doing to it.");
|
||||
stage = 0;
|
||||
} else {
|
||||
if (!inInventory(player, Items.ANTI_DRAGON_SHIELD_1540, 1)) {
|
||||
interpreter.sendDialogue("You need an anti-dragon shield to attach the visage to."); //todo authentic message
|
||||
return false;
|
||||
}
|
||||
if (!inInventory(player, Items.DRACONIC_VISAGE_11286, 1)) {
|
||||
interpreter.sendDialogue("You don't have anything you could attach to the shield."); //todo authentic message
|
||||
return false;
|
||||
}
|
||||
interpreter.sendDialogue("You set to work, trying to attach the ancient draconic", "visage to your anti-dragonbreath shield. It's not easy to", "work with the ancient artifact and it takes all of your", "skills as a master smith.");
|
||||
stage = 10;
|
||||
}
|
||||
|
|
@ -89,26 +72,26 @@ public final class DragonShieldDialogue extends DialoguePlugin {
|
|||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
player.lock(5);
|
||||
player.animate(ANIMATION);
|
||||
interpreter.sendDialogue("Even for an experienced armourer it is not an easy task, but", "eventually it is ready. You have restored the dragon square shield to", "its former glory.");
|
||||
if (player.getInventory().remove(SHIELD_PARTS)) {
|
||||
player.getInventory().add(SQ_SHIELD);
|
||||
lock(player, 5);
|
||||
animate(player, 898, false);
|
||||
if (removeItem(player, Items.SHIELD_RIGHT_HALF_2368, Container.INVENTORY) && removeItem(player, Items.SHIELD_LEFT_HALF_2366, Container.INVENTORY)) {
|
||||
interpreter.sendDialogue("Even for an experienced armourer it is not an easy task, but", "eventually it is ready. You have restored the dragon square shield to", "its former glory.");
|
||||
addItem(player, Items.DRAGON_SQ_SHIELD_1187, 1, Container.INVENTORY);
|
||||
rewardXP(player, Skills.SMITHING, 75);
|
||||
}
|
||||
player.getSkills().addExperience(Skills.SMITHING, 75, true);
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
end();
|
||||
break;
|
||||
case 10:
|
||||
player.lock(5);
|
||||
player.animate(ANIMATION);
|
||||
interpreter.sendDialogue("Even for an experienced armourer it is not an easy task, but", "eventually it is ready. You have crafted the", "draconic visage and anti-dragonbreath shield into a", "dragonfire shield.");
|
||||
if (player.getInventory().remove(DRACONIC_VISAGE, ANTI_DRAGONSHIELD)) {
|
||||
player.getInventory().add(DRAGON_FIRESHIELD);
|
||||
lock(player, 5);
|
||||
animate(player, 898, false);
|
||||
if (removeItem(player, Items.ANTI_DRAGON_SHIELD_1540, Container.INVENTORY) && removeItem(player, Items.DRACONIC_VISAGE_11286, Container.INVENTORY)) {
|
||||
interpreter.sendDialogue("Even for an experienced armourer it is not an easy task, but", "eventually it is ready. You have crafted the", "draconic visage and anti-dragonbreath shield into a", "dragonfire shield.");
|
||||
addItem(player, Items.DRAGONFIRE_SHIELD_11284, 1, Container.INVENTORY);
|
||||
rewardXP(player, Skills.SMITHING, 2000);
|
||||
}
|
||||
player.getSkills().addExperience(Skills.SMITHING, 2000);
|
||||
stage = 1;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue