mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Barbarian potion refactor
Fixed barbarian potions that can take either a roe or caviar from consuming both Corrected level requirement and product potion id for hunter and antifire mixes Corrected input potion id for fishing mix Implemented antidote+ mix Fixed level requirement for super energy mix Fixed duration of antipoison mix (now 90 seconds)
This commit is contained in:
parent
708d5bb507
commit
94a55190ee
5 changed files with 170 additions and 166 deletions
|
|
@ -350,7 +350,7 @@ public enum Consumables {
|
||||||
PRAYERMIX(new BarbarianMix(new int[] {11465, 11467}, new MultiEffect(new PrayerEffect(7, 0.25), new HealingEffect(6)))),
|
PRAYERMIX(new BarbarianMix(new int[] {11465, 11467}, new MultiEffect(new PrayerEffect(7, 0.25), new HealingEffect(6)))),
|
||||||
ZAMMY_MIX(new BarbarianMix(new int[] {11521, 11523}, new MultiEffect(new DamageEffect(10, true), new SkillEffect(Skills.ATTACK, 0, 0.15), new SkillEffect(Skills.STRENGTH, 0, 0.25), new SkillEffect(Skills.DEFENCE, 0, -0.1), new RandomPrayerEffect(0, 10)))),
|
ZAMMY_MIX(new BarbarianMix(new int[] {11521, 11523}, new MultiEffect(new DamageEffect(10, true), new SkillEffect(Skills.ATTACK, 0, 0.15), new SkillEffect(Skills.STRENGTH, 0, 0.25), new SkillEffect(Skills.DEFENCE, 0, -0.1), new RandomPrayerEffect(0, 10)))),
|
||||||
ATT_MIX(new BarbarianMix(new int[] {11429, 11431}, new MultiEffect(new SkillEffect(Skills.ATTACK, 3, 0.1), new HealingEffect(3)))),
|
ATT_MIX(new BarbarianMix(new int[] {11429, 11431}, new MultiEffect(new SkillEffect(Skills.ATTACK, 3, 0.1), new HealingEffect(3)))),
|
||||||
ANTIP_MIX(new BarbarianMix(new int[] {11433, 11435}, new MultiEffect(new AddTimerEffect("poison:immunity", 143), new HealingEffect(3)))),
|
ANTIP_MIX(new BarbarianMix(new int[] {11433, 11435}, new MultiEffect(new AddTimerEffect("poison:immunity", secondsToTicks(90)), new HealingEffect(3)))),
|
||||||
RELIC_MIX(new BarbarianMix(new int[] {11437, 11439}, new MultiEffect(new RemoveTimerEffect("disease"), new SetAttributeEffect("disease:immunity", 300), new HealingEffect(3)))),
|
RELIC_MIX(new BarbarianMix(new int[] {11437, 11439}, new MultiEffect(new RemoveTimerEffect("disease"), new SetAttributeEffect("disease:immunity", 300), new HealingEffect(3)))),
|
||||||
STR_MIX(new BarbarianMix(new int[] {11443, 11441}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 3, 0.1), new HealingEffect(3)))),
|
STR_MIX(new BarbarianMix(new int[] {11443, 11441}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 3, 0.1), new HealingEffect(3)))),
|
||||||
RESTO_MIX(new BarbarianMix(new int[] {11449, 11451}, new MultiEffect(new RestoreEffect(10, 0.3), new HealingEffect(3)))),
|
RESTO_MIX(new BarbarianMix(new int[] {11449, 11451}, new MultiEffect(new RestoreEffect(10, 0.3), new HealingEffect(3)))),
|
||||||
|
|
@ -364,6 +364,8 @@ public enum Consumables {
|
||||||
SUPER_ENERGY_MIX(new BarbarianMix(new int[] {11481, 11483}, new MultiEffect(new EnergyEffect(20), new HealingEffect(6)))),
|
SUPER_ENERGY_MIX(new BarbarianMix(new int[] {11481, 11483}, new MultiEffect(new EnergyEffect(20), new HealingEffect(6)))),
|
||||||
HUNTING_MIX(new BarbarianMix(new int[] {11517, 11519}, new MultiEffect(new SkillEffect(Skills.HUNTER, 3, 0), new HealingEffect(6)))),
|
HUNTING_MIX(new BarbarianMix(new int[] {11517, 11519}, new MultiEffect(new SkillEffect(Skills.HUNTER, 3, 0), new HealingEffect(6)))),
|
||||||
SUPER_STR_MIX(new BarbarianMix(new int[] {11485, 11487}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 5, 0.15), new HealingEffect(6)))),
|
SUPER_STR_MIX(new BarbarianMix(new int[] {11485, 11487}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 5, 0.15), new HealingEffect(6)))),
|
||||||
|
ANTIDOTE_PLUS_MIX(new BarbarianMix(new int[] {11501, 11503}, new MultiEffect(new AddTimerEffect("poison:immunity", minutesToTicks(9)), new RandomHealthEffect(3, 7)))),
|
||||||
|
ANTIP_SUPERMIX(new BarbarianMix(new int[] {11473, 11475}, new MultiEffect(new AddTimerEffect("poison:immunity", minutesToTicks(6)), new RandomHealthEffect(3, 7)))),
|
||||||
|
|
||||||
/** Stealing creation potions */
|
/** Stealing creation potions */
|
||||||
SC_PRAYER(new Potion(new int[] {14207, 14209, 14211, 14213, 14215}, new PrayerEffect(7, 0.25))),
|
SC_PRAYER(new Potion(new int[] {14207, 14209, 14211, 14213, 14215}, new PrayerEffect(7, 0.25))),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
package content.global.skill.herblore
|
||||||
|
|
||||||
|
import content.global.skill.herblore.BarbarianPotion
|
||||||
|
import core.game.node.entity.skill.Skills
|
||||||
|
import core.game.node.entity.player.Player
|
||||||
|
import core.game.node.item.Item
|
||||||
|
import core.game.node.Node
|
||||||
|
import core.game.interaction.InteractionListener
|
||||||
|
import core.game.interaction.IntType
|
||||||
|
import core.api.hasLevelStat
|
||||||
|
import core.api.sendMessage
|
||||||
|
import core.api.removeItem
|
||||||
|
import core.api.addItem
|
||||||
|
import core.api.rewardXP
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the barbarian mixing listener.
|
||||||
|
* @author 'Vexia
|
||||||
|
* @author treevar
|
||||||
|
* @version 2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
class BarbarianMixListener : InteractionListener {
|
||||||
|
override fun defineListeners(){
|
||||||
|
for (potion in BarbarianPotion.values()) {
|
||||||
|
if (potion.isBoth()) {
|
||||||
|
onUseWith(IntType.ITEM, potion.getItem(), 11324) { player, used, with -> //Roe
|
||||||
|
handle(player, used, with);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onUseWith(IntType.ITEM, potion.getItem(), 11326) { player, used, with -> //Caviar
|
||||||
|
handle(player, used, with);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun handle(player: Player, inputPotion: Node, egg: Node): Boolean {
|
||||||
|
val potion: BarbarianPotion? = BarbarianPotion.forId(inputPotion.getId())
|
||||||
|
if(potion == null){
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasLevelStat(player, Skills.HERBLORE, potion.getLevel())) {
|
||||||
|
sendMessage(player, "You need a herblore level of " + potion.getLevel().toString() + " to make this mix.")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!removeItem(player, potion.getItem())) { //Remove input potion
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if(!removeItem(player, egg.getId())) { //Remove egg used
|
||||||
|
addItem(player, potion.getItem()) //Add potion back to inventory if we can't remove the egg
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
addItem(player, potion.getProduct()) //Add output potion
|
||||||
|
rewardXP(player, Skills.HERBLORE, potion.getExp()) //Add exp
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
package content.global.skill.herblore;
|
|
||||||
|
|
||||||
import core.game.node.entity.skill.Skills;
|
|
||||||
import core.game.interaction.NodeUsageEvent;
|
|
||||||
import core.game.interaction.UseWithHandler;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.game.node.item.Item;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import core.plugin.Plugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the barbarian mixing plugin.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public final class BarbarianMixPlugin extends UseWithHandler {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code BarbarianMixPlugin} {@Code Object}.
|
|
||||||
*/
|
|
||||||
public BarbarianMixPlugin() {
|
|
||||||
super(123, 177, 4846, 117, 129, 3012, 135, 3036, 9743, 141, 147, 183, 143, 3020, 10002, 159, 3028, 165, 2456, 171, 3044, 191);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
|
||||||
addHandler(11324, ITEM_TYPE, this);
|
|
||||||
addHandler(11326, ITEM_TYPE, this);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(NodeUsageEvent event) {
|
|
||||||
final Player player = event.getPlayer();
|
|
||||||
if (player == null) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
final BarbarianPotion potion = BarbarianPotion.forId(((Item) event.getUsedWith()).getId());
|
|
||||||
if (potion == null) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!potion.isBoth() && event.getUsedItem().getId() == 11324 || ((Item) event.getUsedWith()).getId() == 11324) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (player.getSkills().getLevel(Skills.HERBLORE) < potion.getLevel()) {
|
|
||||||
player.getPacketDispatch().sendMessage("You need a herblore level of " + potion.getLevel() + " to make this mix.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (potion.getItem() == event.getUsedItem().getId() || potion.getItem() == ((Item) event.getUsedWith()).getId()) {
|
|
||||||
player.getInventory().remove(new Item(potion.getItem(), 1));
|
|
||||||
player.getInventory().add(new Item(potion.getProduct(), 1));
|
|
||||||
player.getSkills().addExperience(Skills.HERBLORE, potion.getExp(), true);
|
|
||||||
if (potion.isBoth()) {
|
|
||||||
player.getInventory().remove(new Item(11324, 1));
|
|
||||||
}
|
|
||||||
player.getInventory().remove(new Item(11326, 1));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
package content.global.skill.herblore;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the barbarian potion.
|
|
||||||
* @author 'Vexia
|
|
||||||
*/
|
|
||||||
public enum BarbarianPotion {
|
|
||||||
ATTACK_POTION(123, 4, 11429, 8, true), ANTI_POISION_POTION(177, 6, 11433, 12, true), RELIC(4846, 9, 11437, 14, true), STRENGTH_POTION(117, 14, 11443, 17, true), RESTORE_POTION(129, 24, 11449, 21, true), ENERGY_POTION(3012, 29, 11453, 23, false), DEFENCE_POTION(135, 33, 11457, 25, false), AGILITY_POTION(3036, 37, 11461, 27, false), COMBAT_POTION(9743, 40, 11445, 28, false), PRAYER_POTION(141, 42, 11465, 29, false), SUPER_ATTACK_POTION(147, 47, 11469, 33, false), SUPER_ANTIPOISION_POTION(183, 51, 11473, 35, false), FISHING_POTION(143, 53, 11477, 38, false), SUPER_ENERGY_POTION(3020, 59, 11481, 42, false), HUNTER_POTION(10002, 11517, 58, 40, false), SUPER_STRENGTH_POTION(159, 59, 11485, 42, false), SUPER_RESTORE(3028, 67, 11493, 48, false), SUPER_DEFENCE_POTION(165, 71, 11497, 50, false), ANTIFIRE_POTION(2456, 11505, 75, 53, false), RANGING_POTION(171, 80, 11509, 54, false), MAGIC_POTION(3044, 83, 11513, 57, false), ZAMORAK_BREW(191, 85, 11521, 58, false);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code BarbarianPotion} {@Code Object}.
|
|
||||||
* @param item the item.
|
|
||||||
* @param product the product.
|
|
||||||
* @param exp the exp.
|
|
||||||
* @param both if both can be added(roe, cavier).
|
|
||||||
*/
|
|
||||||
BarbarianPotion(int item, int level, int product, double exp, boolean both) {
|
|
||||||
this.item = item;
|
|
||||||
this.level = level;
|
|
||||||
this.product = product;
|
|
||||||
this.exp = exp;
|
|
||||||
this.both = both;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The item id.
|
|
||||||
*/
|
|
||||||
private int item;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The product item id.
|
|
||||||
*/
|
|
||||||
private int product;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The level required.
|
|
||||||
*/
|
|
||||||
private int level;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* the exp gained.
|
|
||||||
*/
|
|
||||||
private double exp;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents if both <b>Roe</b> & <b>Cavier</b> can be added.
|
|
||||||
*/
|
|
||||||
private boolean both;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the item.
|
|
||||||
* @return The item.
|
|
||||||
*/
|
|
||||||
public int getItem() {
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the product.
|
|
||||||
* @return The product.
|
|
||||||
*/
|
|
||||||
public int getProduct() {
|
|
||||||
return product;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the level.
|
|
||||||
* @return The level.
|
|
||||||
*/
|
|
||||||
public int getLevel() {
|
|
||||||
return level;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the exp.
|
|
||||||
* @return The exp.
|
|
||||||
*/
|
|
||||||
public double getExp() {
|
|
||||||
return exp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the both.
|
|
||||||
* @return The both.
|
|
||||||
*/
|
|
||||||
public boolean isBoth() {
|
|
||||||
return both;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the value from the id.
|
|
||||||
* @param id the id.
|
|
||||||
* @return the value.
|
|
||||||
*/
|
|
||||||
public static BarbarianPotion forId(int id) {
|
|
||||||
for (BarbarianPotion pot : BarbarianPotion.values()) {
|
|
||||||
if (pot.getItem() == id) {
|
|
||||||
return pot;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
108
Server/src/main/content/global/skill/herblore/BarbarianPotion.kt
Normal file
108
Server/src/main/content/global/skill/herblore/BarbarianPotion.kt
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
package content.global.skill.herblore;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the barbarian potion.
|
||||||
|
* @author 'Vexia
|
||||||
|
* @author treevar
|
||||||
|
*/
|
||||||
|
public enum class BarbarianPotion {
|
||||||
|
ATTACK_POTION(123, 4, 11429, 8.0, true), ANTI_POISION_POTION(177, 6, 11433, 12.0, true), RELIC(4846, 9, 11437, 14.0, true), STRENGTH_POTION(117, 14, 11443, 17.0, true), RESTORE_POTION(129, 24, 11449, 21.0, true), ENERGY_POTION(3012, 29, 11453, 23.0, false), DEFENCE_POTION(135, 33, 11457, 25.0, false), AGILITY_POTION(3036, 37, 11461, 27.0, false), COMBAT_POTION(9743, 40, 11445, 28.0, false), PRAYER_POTION(141, 42, 11465, 29.0, false), SUPER_ATTACK_POTION(147, 47, 11469, 33.0, false), SUPER_ANTIPOISION_POTION(183, 51, 11473, 35.0, false), FISHING_POTION(153, 53, 11477, 38.0, false), SUPER_ENERGY_POTION(3020, 56, 11481, 42.0, false), HUNTER_POTION(10002, 58, 11517, 40.0, false), SUPER_STRENGTH_POTION(159, 59, 11485, 42.0, false), SUPER_RESTORE(3028, 67, 11493, 48.0, false), SUPER_DEFENCE_POTION(165, 71, 11497, 50.0, false), ANTIDOTE_PLUS(5947, 74, 11501, 52.0, false), ANTIFIRE_POTION(2456, 75, 11505, 53.0, false), RANGING_POTION(171, 80, 11509, 54.0, false), MAGIC_POTION(3044, 83, 11513, 57.0, false), ZAMORAK_BREW(191, 85, 11521, 58.0, false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new {@code BarbarianPotion} {@Code Object}.
|
||||||
|
* @param item the input potion id.
|
||||||
|
* @param level the level requirement to make.
|
||||||
|
* @param product the product potion id.
|
||||||
|
* @param exp the exp rewarded.
|
||||||
|
* @param both if both can be added(roe, cavier).
|
||||||
|
*/
|
||||||
|
constructor(item: Int, level: Int, product: Int, exp: Double, both: Boolean) {
|
||||||
|
this.item = item;
|
||||||
|
this.level = level;
|
||||||
|
this.product = product;
|
||||||
|
this.exp = exp;
|
||||||
|
this.both = both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item id.
|
||||||
|
*/
|
||||||
|
private val item: Int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The product item id.
|
||||||
|
*/
|
||||||
|
private val product: Int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The level required.
|
||||||
|
*/
|
||||||
|
private val level: Int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the exp gained.
|
||||||
|
*/
|
||||||
|
private val exp: Double;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents if both <b>Roe</b> & <b>Cavier</b> can be added.
|
||||||
|
*/
|
||||||
|
private val both: Boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the item.
|
||||||
|
* @return The item.
|
||||||
|
*/
|
||||||
|
fun getItem(): Int {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the product.
|
||||||
|
* @return The product.
|
||||||
|
*/
|
||||||
|
fun getProduct(): Int {
|
||||||
|
return product;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the level.
|
||||||
|
* @return The level.
|
||||||
|
*/
|
||||||
|
fun getLevel(): Int {
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the exp.
|
||||||
|
* @return The exp.
|
||||||
|
*/
|
||||||
|
fun getExp(): Double {
|
||||||
|
return exp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether roe and caviar can be used.
|
||||||
|
* @return true if both, false if only caviar.
|
||||||
|
*/
|
||||||
|
fun isBoth(): Boolean {
|
||||||
|
return both;
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
/**
|
||||||
|
* Gets the barbarian potion from the input potion id
|
||||||
|
* @param id the id of the input potion.
|
||||||
|
* @return the barbarian potion that takes the id as input.
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
fun forId(id: Int): BarbarianPotion? {
|
||||||
|
for (pot in BarbarianPotion.values()) {
|
||||||
|
if (pot.getItem() == id) {
|
||||||
|
return pot;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue