forked from 2009Scape/Server
Merge pull request 'Initial build of Snowscape' (#1) from dev into master
Reviewed-on: #1
This commit is contained in:
commit
3f8828457b
61 changed files with 1000 additions and 460 deletions
|
|
@ -25,4 +25,6 @@
|
|||
<ObjectAction mode="add" id="21301" x="2662" y="3162" z="0" direction="e"/>
|
||||
<ObjectAction mode="add" id="4176" x="2629" y="3661" z="2" type="4" direction="e"/>
|
||||
|
||||
<ObjectAction mode="add" id="2489" x="2839" y="3282" z="0" direction="w"/>
|
||||
|
||||
</parsing>
|
||||
|
|
|
|||
|
|
@ -29532,6 +29532,18 @@
|
|||
"id": "1438",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
"id": "1456",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
"id": "1450",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
|
|
@ -29704,6 +29716,18 @@
|
|||
"id": "1438",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
"id": "1456",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
"id": "1450",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
|
|
@ -29876,6 +29900,18 @@
|
|||
"id": "1438",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
"id": "1456",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
"id": "1450",
|
||||
"maxAmount": "1"
|
||||
},
|
||||
{
|
||||
"minAmount": "1",
|
||||
"weight": "25.0",
|
||||
|
|
|
|||
|
|
@ -38817,7 +38817,7 @@
|
|||
"name": "Crystal bow 9/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4215",
|
||||
"bonuses": "0,0,0,0,96,0,0,0,0,0,0,0,0,0,68"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38838,7 +38838,7 @@
|
|||
"name": "Crystal bow 8/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4216",
|
||||
"bonuses": "0,0,0,0,92,0,0,0,0,0,0,0,0,0,66"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38859,7 +38859,7 @@
|
|||
"name": "Crystal bow 7/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4217",
|
||||
"bonuses": "0,0,0,0,88,0,0,0,0,0,0,0,0,0,64"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38880,7 +38880,7 @@
|
|||
"name": "Crystal bow 6/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4218",
|
||||
"bonuses": "0,0,0,0,84,0,0,0,0,0,0,0,0,0,62"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38901,7 +38901,7 @@
|
|||
"name": "Crystal bow 5/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4219",
|
||||
"bonuses": "0,0,0,0,80,0,0,0,0,0,0,0,0,0,60"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38922,7 +38922,7 @@
|
|||
"name": "Crystal bow 4/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4220",
|
||||
"bonuses": "0,0,0,0,76,0,0,0,0,0,0,0,0,0,58"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38943,7 +38943,7 @@
|
|||
"name": "Crystal bow 3/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4221",
|
||||
"bonuses": "0,0,0,0,72,0,0,0,0,0,0,0,0,0,56"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38964,7 +38964,7 @@
|
|||
"name": "Crystal bow 2/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4222",
|
||||
"bonuses": "0,0,0,0,68,0,0,0,0,0,0,0,0,0,54"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{4,70}-{16,50}",
|
||||
|
|
@ -38985,7 +38985,7 @@
|
|||
"name": "Crystal bow 1/10",
|
||||
"archery_ticket_price": "0",
|
||||
"id": "4223",
|
||||
"bonuses": "0,0,0,0,64,0,0,0,0,0,0,0,0,0,52"
|
||||
"bonuses": "0,0,0,0,100,0,0,0,0,0,0,0,0,0,70"
|
||||
},
|
||||
{
|
||||
"requirements": "{1,70}-{16,50}",
|
||||
|
|
@ -39028,7 +39028,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4226",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,49,52,51,0,78,68,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39042,7 +39042,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4227",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,47,50,49,0,76,66,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39056,7 +39056,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4228",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,45,48,47,0,74,65,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39070,7 +39070,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4229",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,43,46,45,0,72,63,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39084,7 +39084,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4230",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,41,44,43,0,70,61,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39098,7 +39098,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4231",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,39,42,41,0,68,59,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39112,7 +39112,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4232",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,37,40,39,0,66,58,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39126,7 +39126,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4233",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,35,38,37,0,64,56,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
@ -39140,7 +39140,7 @@
|
|||
"archery_ticket_price": "0",
|
||||
"id": "4234",
|
||||
"absorb": "6,0,12",
|
||||
"bonuses": "0,0,0,-10,-10,33,36,35,0,62,54,0,0,0,0",
|
||||
"bonuses": "0,0,0,-10,-10,51,54,53,0,80,70,0,0,0,0",
|
||||
"equipment_slot": "5"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@
|
|||
"general_store": "true",
|
||||
"id": "25",
|
||||
"title": "Lumbridge General Store",
|
||||
"stock": "{1931,30,100}-{1935,30,100}-{1735,10,100}-{1925,10,100}-{1923,10,100}-{1887,10,100}-{590,10,100}-{1755,10,100}-{2347,10,100}-{550,10,100}-{9003,10,100}"
|
||||
"stock": "{1931,30,100}-{1935,30,100}-{1735,10,100}-{1925,10,100}-{1923,10,100}-{1887,10,100}-{590,10,100}-{1755,10,100}-{2347,10,100}-{550,10,100}-{9003,10,100}-{1939,1000,1}"
|
||||
},
|
||||
{
|
||||
"npcs": "4716",
|
||||
|
|
@ -1599,7 +1599,7 @@
|
|||
"general_store": "false",
|
||||
"id": "181",
|
||||
"title": "MoonClan Fine Clothes",
|
||||
"stock": "{9068,10,100}-{9069,10,100}-{9070,10,100}-{9071,10,100}-{9072,10,100}-{9073,10,100}-{9074,10,100}-{1733,50,100}-{1734,500,100}"
|
||||
"stock": "{9068,10,100}-{9069,10,100}-{9070,10,100}-{9071,10,100}-{9072,10,100}-{9073,10,100}-{9074,10,100}-{1733,50,100}-{1734,500,100}-{9084,10,100}-{9096,10,100}-{9097,10,100}-{9098,10,100}-{9099,10,100}-{9100,10,100}-{9101,10,100}-{9102,10,100}-{9104,10,100}"
|
||||
},
|
||||
{
|
||||
"npcs": "",
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class SmeltingInterface extends ComponentPlugin {
|
|||
* @author 'Vexia
|
||||
*/
|
||||
public enum BarButton {
|
||||
BRONZE_1(16, Bar.BRONZE, 1), BRONZE_5(15, Bar.BRONZE, 5), BRONZE_10(14, Bar.BRONZE, 10), BRONZE_X(13, Bar.BRONZE, -1), BLURITE_1(20, Bar.BLURITE, 1), BLURITE_5(19, Bar.BLURITE, 5), BLURITE_10(18, Bar.BLURITE, 10), BLURITE_X(17, Bar.BLURITE, -1), IRON_1(24, Bar.IRON, 1), IRON_5(23, Bar.IRON, 5), IRON_10(22, Bar.IRON, 10), IRON_X(21, Bar.IRON, -1), SILVER_1(28, Bar.SILVER, 1), SILVER_5(27, Bar.SILVER, 5), SILVER_10(26, Bar.SILVER, 10), SILVER_X(25, Bar.SILVER, -1), STEEL_1(32, Bar.STEEL, 1), STEEL_5(31, Bar.STEEL, 5), STEEL_10(30, Bar.STEEL, 10), STEEL_X(29, Bar.STEEL, -1), GOLD_1(36, Bar.GOLD, 1), GOLD_5(35, Bar.GOLD, 5), GOLD_10(34, Bar.GOLD, 10), GOLD_X(33, Bar.GOLD, -1), MITHRIL_1(40, Bar.MITHRIL, 1), MITHRIL_5(39, Bar.MITHRIL, 5), MITHRIL_10(38, Bar.MITHRIL, 10), MITHRIL_X(37, Bar.MITHRIL, -1), ADAMANT_1(44, Bar.ADAMANT, 1), ADAMANT_5(43, Bar.ADAMANT, 5), ADAMANT_10(42, Bar.ADAMANT, 10), ADAMANT_X(41, Bar.ADAMANT, -1), RUNE_1(48, Bar.RUNITE, 1), RUNE_5(47, Bar.RUNITE, 5), RUNE_10(46, Bar.RUNITE, 10), RUNE_X(45, Bar.RUNITE, -1);
|
||||
BRONZE_1(16, Bar.BRONZE, 1), BRONZE_5(15, Bar.BRONZE, 5), BRONZE_10(14, Bar.BRONZE, 30), BRONZE_X(13, Bar.BRONZE, -1), BLURITE_1(20, Bar.BLURITE, 1), BLURITE_5(19, Bar.BLURITE, 5), BLURITE_10(18, Bar.BLURITE, 30), BLURITE_X(17, Bar.BLURITE, -1), IRON_1(24, Bar.IRON, 1), IRON_5(23, Bar.IRON, 5), IRON_10(22, Bar.IRON, 30), IRON_X(21, Bar.IRON, -1), SILVER_1(28, Bar.SILVER, 1), SILVER_5(27, Bar.SILVER, 5), SILVER_10(26, Bar.SILVER, 30), SILVER_X(25, Bar.SILVER, -1), STEEL_1(32, Bar.STEEL, 1), STEEL_5(31, Bar.STEEL, 5), STEEL_10(30, Bar.STEEL, 30), STEEL_X(29, Bar.STEEL, -1), GOLD_1(36, Bar.GOLD, 1), GOLD_5(35, Bar.GOLD, 5), GOLD_10(34, Bar.GOLD, 30), GOLD_X(33, Bar.GOLD, -1), MITHRIL_1(40, Bar.MITHRIL, 1), MITHRIL_5(39, Bar.MITHRIL, 5), MITHRIL_10(38, Bar.MITHRIL, 30), MITHRIL_X(37, Bar.MITHRIL, -1), ADAMANT_1(44, Bar.ADAMANT, 1), ADAMANT_5(43, Bar.ADAMANT, 5), ADAMANT_10(42, Bar.ADAMANT, 30), ADAMANT_X(41, Bar.ADAMANT, -1), RUNE_1(48, Bar.RUNITE, 1), RUNE_5(47, Bar.RUNITE, 5), RUNE_10(46, Bar.RUNITE, 30), RUNE_X(45, Bar.RUNITE, -1);
|
||||
|
||||
/**
|
||||
* Constructs a new {@code BarButton} {@code Object}.
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import core.game.node.item.Item
|
|||
import core.game.world.map.Location
|
||||
import core.api.hasRequirement;
|
||||
|
||||
import core.cache.def.impl.ItemDefinition;
|
||||
|
||||
class TeleTabsListener : InteractionListener {
|
||||
|
||||
enum class TeleTabs(val item: Int, val location: Location, val exp: Double, val requirementCheck: (Player) -> Boolean = { true }) {
|
||||
|
|
@ -18,22 +20,37 @@ class TeleTabsListener : InteractionListener {
|
|||
player -> hasRequirement(player, "Plague City");
|
||||
}),
|
||||
AIR_ALTAR_TELEPORT(13599, Location.create(2978, 3296, 0), 0.0),
|
||||
ASTRAL_ALTAR_TELEPORT(13611, Location.create(2156, 3862, 0), 0.0),
|
||||
BLOOD_ALTAR_TELEPORT(13610, Location.create(3559, 9778, 0), 0.0),
|
||||
ASTRAL_ALTAR_TELEPORT(13611, Location.create(2156, 3862, 0), 0.0, {
|
||||
player -> hasRequirement(player, "Lunar Diplomacy");
|
||||
}),
|
||||
BLOOD_ALTAR_TELEPORT(13610, Location.create(3559, 9778, 0), 0.0, {
|
||||
player -> hasRequirement(player, "Legacy of Seergaze");
|
||||
}),
|
||||
BODY_ALTAR_TELEPORT(13604, Location.create(3055, 3443, 0), 0.0),
|
||||
CAMELOT_TELEPORT(8010, Location.create(2757, 3477, 0), 55.5),
|
||||
CHAOS_ALTAR_TELEPORT(13606, Location.create(3058, 3593, 0), 0.0),
|
||||
COSMIC_ALTAR_TELEPORT(13605, Location.create(2411, 4380, 0), 0.0),
|
||||
DEATH_ALTAR_TELEPORT(13609, Location.create(1863, 4639, 0), 0.0),
|
||||
COSMIC_ALTAR_TELEPORT(13605, Location.create(2411, 4380, 0), 0.0, {
|
||||
player -> hasRequirement(player, "Lost City");
|
||||
}),
|
||||
DEATH_ALTAR_TELEPORT(13609, Location.create(1863, 4639, 0), 0.0, {
|
||||
player -> hasRequirement(player, "Mourning's End Part II");
|
||||
}),
|
||||
EARTH_ALTAR_TELEPORT(13602, Location.create(3304, 3472, 0), 0.0),
|
||||
FALADOR_TELEPORT(8009, Location.create(2966, 3380, 0), 47.0),
|
||||
FIRE_ALTAR_TELEPORT(13603, Location.create(3311, 3252, 0), 0.0),
|
||||
LAW_ALTAR_TELEPORT(13608, Location.create(2857, 3378, 0), 0.0),
|
||||
LAW_ALTAR_TELEPORT(13608, Location.create(2857, 3378, 0), 0.0, {
|
||||
player -> if (!ItemDefinition.canEnterEntrana(player)) (player.sendMessage("The power of Saradomin prevents you from taking armour or weaponry to Entrana.") !is Unit) else true; // ugly way of doing this, but the sendMessage function returns a Unit type, so by using !is Unit it becomes false.
|
||||
}),
|
||||
LUMBRIDGE_TELEPORT(8008, Location.create(3222, 3218, 0), 41.0),
|
||||
MIND_ALTAR_TELEPORT(13600, Location.create(2979, 3510, 0), 0.0),
|
||||
NATURE_ALTAR_TELEPORT(13607, Location.create(2868, 3013, 0), 0.0),
|
||||
TELEKINETIC_GRAB(8022, Location.create(2836, 3285, 0), 0.0, {
|
||||
player -> hasRequirement(player, "Dragon Slayer");
|
||||
}),
|
||||
VARROCK_TELEPORT(8007, Location.create(3212, 3423, 0), 35.00),
|
||||
WATCH_TOWER_TELEPORT(8012, Location.create(2548, 3114, 0), 68.00),
|
||||
WATCH_TOWER_TELEPORT(8012, Location.create(2548, 3114, 0), 68.00, {
|
||||
player -> hasRequirement(player, "Watchtower");
|
||||
}),
|
||||
WATER_ALTAR_TELEPORT(13601, Location.create(3182, 3162, 0), 0.0);
|
||||
|
||||
companion object {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ class CrystalEquipmentRegister : StartupListener {
|
|||
val shield: Array<Int> = arrayOf(Items.NEW_CRYSTAL_SHIELD_4224, Items.CRYSTAL_SHIELD_FULL_4225, Items.CRYSTAL_SHIELD_9_10_4226, Items.CRYSTAL_SHIELD_8_10_4227, Items.CRYSTAL_SHIELD_7_10_4228, Items.CRYSTAL_SHIELD_6_10_4229, Items.CRYSTAL_SHIELD_5_10_4230, Items.CRYSTAL_SHIELD_4_10_4231, Items.CRYSTAL_SHIELD_3_10_4232, Items.CRYSTAL_SHIELD_2_10_4233, Items.CRYSTAL_SHIELD_1_10_4234, Items.CRYSTAL_SEED_4207)
|
||||
val bow: Array<Int> = arrayOf(Items.NEW_CRYSTAL_BOW_4212, Items.CRYSTAL_BOW_FULL_4214, Items.CRYSTAL_BOW_9_10_4215, Items.CRYSTAL_BOW_8_10_4216, Items.CRYSTAL_BOW_7_10_4217, Items.CRYSTAL_BOW_6_10_4218, Items.CRYSTAL_BOW_5_10_4219, Items.CRYSTAL_BOW_4_10_4220, Items.CRYSTAL_BOW_3_10_4221, Items.CRYSTAL_BOW_2_10_4222, Items.CRYSTAL_BOW_1_10_4223, Items.CRYSTAL_SEED_4207)
|
||||
override fun startup() {
|
||||
EquipmentDegrader.registerSet(250, shield)
|
||||
EquipmentDegrader.registerSet(250, bow)
|
||||
EquipmentDegrader.registerSet(1200, shield)
|
||||
EquipmentDegrader.registerSet(1200, bow)
|
||||
}
|
||||
}
|
||||
|
|
@ -350,6 +350,19 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
|
|||
}
|
||||
|
||||
fun clear(){
|
||||
if (isGrown()) {
|
||||
var seedAmount = 1
|
||||
var seedMessage = "a seed"
|
||||
if (patch.type == PatchType.ALLOTMENT || plantable!! == Plantable.JUTE_SEED) {
|
||||
seedAmount = 3
|
||||
seedMessage = "some seeds"
|
||||
} else if (patch.type == PatchType.HOPS_PATCH) {
|
||||
seedAmount = 4
|
||||
seedMessage = "some seeds"
|
||||
}
|
||||
addItemOrDrop(player, plantable!!.itemID, seedAmount)
|
||||
sendMessage(player, "You find $seedMessage in the patch as you clear it.")
|
||||
}
|
||||
isCheckHealth = false
|
||||
isDiseased = false
|
||||
isDead = false
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import org.rs09.consts.Items;
|
|||
import static core.api.ContentAPIKt.inInventory;
|
||||
import static core.api.ContentAPIKt.replaceSlot;
|
||||
|
||||
import static core.api.ContentAPIKt.removeItem;
|
||||
|
||||
/**
|
||||
* Represents the pulse used to light a log.
|
||||
* @author 'Vexia
|
||||
|
|
@ -102,10 +104,12 @@ public final class FireMakingPulse extends SkillPulse<Item> {
|
|||
|
||||
@Override
|
||||
public boolean reward() {
|
||||
/* Snowscape: this section allows making a new fire without an animation if you're fast enough, but since we auto-repeat we don't need that
|
||||
if (getLastFire() >= GameWorld.getTicks()) {
|
||||
createFire();
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
if (ticks == 0) {
|
||||
player.animate(ANIMATION);
|
||||
}
|
||||
|
|
@ -119,7 +123,13 @@ public final class FireMakingPulse extends SkillPulse<Item> {
|
|||
return false;
|
||||
}
|
||||
createFire();
|
||||
return true;
|
||||
// Snowscape: attempt to remove another log. If successful, the pulse continues and the player makes another fire
|
||||
if (removeItem(player, new Item(node.getId(), 1), Container.INVENTORY)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -265,13 +265,13 @@ public class Fletching {
|
|||
}
|
||||
}
|
||||
private enum Items{
|
||||
STANDARD(1511,FletchingItems.ARROW_SHAFT, FletchingItems.SHORT_BOW, FletchingItems.LONG_BOW, FletchingItems.WOODEN_STOCK),
|
||||
STANDARD(1511, FletchingItems.ARROW_SHAFT, FletchingItems.SHORT_BOW, FletchingItems.LONG_BOW, FletchingItems.WOODEN_STOCK),
|
||||
ACHEY(2862, FletchingItems.OGRE_ARROW_SHAFT),
|
||||
OAK(1521, FletchingItems.OAK_SHORTBOW, FletchingItems.OAK_LONGBOW, FletchingItems.OAK_STOCK),
|
||||
WILLOW(1519, FletchingItems.WILLOW_SHORTBOW, FletchingItems.WILLOW_LONGBOW, FletchingItems.WILLOW_STOCK),
|
||||
MAPLE(1517, FletchingItems.MAPLE_SHORTOW, FletchingItems.MAPLE_LONGBOW, FletchingItems.MAPLE_STOCK),
|
||||
YEW(1515, FletchingItems.YEW_SHORTBOW, FletchingItems.YEW_LONGBOW, FletchingItems.YEW_STOCK),
|
||||
MAGIC(1513, FletchingItems.MAGIC_SHORTBOW, FletchingItems.MAGIC_LONGBOW),
|
||||
OAK(1521, FletchingItems.OAK_ARROW_SHAFT, FletchingItems.OAK_SHORTBOW, FletchingItems.OAK_LONGBOW, FletchingItems.OAK_STOCK),
|
||||
WILLOW(1519, FletchingItems.WILLOW_ARROW_SHAFT, FletchingItems.WILLOW_SHORTBOW, FletchingItems.WILLOW_LONGBOW, FletchingItems.WILLOW_STOCK),
|
||||
MAPLE(1517, FletchingItems.MAPLE_ARROW_SHAFT, FletchingItems.MAPLE_SHORTOW, FletchingItems.MAPLE_LONGBOW, FletchingItems.MAPLE_STOCK),
|
||||
YEW(1515, FletchingItems.YEW_ARROW_SHAFT, FletchingItems.YEW_SHORTBOW, FletchingItems.YEW_LONGBOW, FletchingItems.YEW_STOCK),
|
||||
MAGIC(1513, FletchingItems.MAGIC_ARROW_SHAFT, FletchingItems.MAGIC_SHORTBOW, FletchingItems.MAGIC_LONGBOW),
|
||||
TEAK(6333, FletchingItems.TEAK_STOCK),
|
||||
MAHOGANY(6332, FletchingItems.MAHOGANY_STOCK);
|
||||
|
||||
|
|
@ -306,26 +306,31 @@ public class Fletching {
|
|||
OGRE_ARROW_SHAFT(2864, 6.4, 5, 4),
|
||||
|
||||
//Oak logs
|
||||
OAK_ARROW_SHAFT(52, 10, 15, 30),
|
||||
OAK_SHORTBOW(54, 16.5, 20, 1),
|
||||
OAK_LONGBOW(56,25,25,1),
|
||||
OAK_STOCK(9442, 16, 24, 1),
|
||||
|
||||
//Willow logs
|
||||
WILLOW_ARROW_SHAFT(52, 15, 30, 45),
|
||||
WILLOW_SHORTBOW(60, 33.3, 35, 1),
|
||||
WILLOW_LONGBOW(58, 41.5, 40, 1),
|
||||
WILLOW_STOCK(9444, 22, 39, 1),
|
||||
|
||||
//Maple logs
|
||||
MAPLE_ARROW_SHAFT(52, 20, 45, 60),
|
||||
MAPLE_SHORTOW(64, 50, 50, 1),
|
||||
MAPLE_LONGBOW(62, 58.3, 55, 1),
|
||||
MAPLE_STOCK(9448, 32, 54, 1),
|
||||
|
||||
//Yew logs
|
||||
YEW_ARROW_SHAFT(52, 25, 60, 75),
|
||||
YEW_SHORTBOW(68, 67.5, 65, 1),
|
||||
YEW_LONGBOW(66, 75, 70, 1),
|
||||
YEW_STOCK(9452, 50, 69, 1),
|
||||
|
||||
//Magic logs
|
||||
MAGIC_ARROW_SHAFT(52, 30, 75, 90),
|
||||
MAGIC_SHORTBOW(72, 83.3, 80,1),
|
||||
MAGIC_LONGBOW(70, 91.5, 85, 1),
|
||||
|
||||
|
|
|
|||
|
|
@ -110,6 +110,16 @@ public final class FletchingPulse extends SkillPulse<Item> {
|
|||
switch (fletch) {
|
||||
case ARROW_SHAFT:
|
||||
return "You carefully cut the wood into 15 arrow shafts.";
|
||||
case OAK_ARROW_SHAFT:
|
||||
return "You carefully cut the wood into 30 arrow shafts.";
|
||||
case WILLOW_ARROW_SHAFT:
|
||||
return "You carefully cut the wood into 45 arrow shafts.";
|
||||
case MAPLE_ARROW_SHAFT:
|
||||
return "You carefully cut the wood into 60 arrow shafts.";
|
||||
case YEW_ARROW_SHAFT:
|
||||
return "You carefully cut the wood into 75 arrow shafts.";
|
||||
case MAGIC_ARROW_SHAFT:
|
||||
return "You carefully cut the wood into 90 arrow shafts.";
|
||||
default:
|
||||
return "You carefully cut the wood into " + (StringUtils.isPlusN(fletch.getItem().getName()) ? "an" : "a") + " " + fletch.getItem().getName().replace("(u)", "").trim() + ".";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ class MiningListener : InteractionListener {
|
|||
}
|
||||
|
||||
// Transform ore to depleted version
|
||||
if (!isEssence && resource!!.respawnRate != 0) {
|
||||
if (!isEssence && resource!!.respawnRate != 0 && RandomFunction.roll(getDynLevel(player, Skills.MINING)*5/resource!!.respawnDuration + 1)) {
|
||||
SceneryBuilder.replace(node as Scenery, Scenery(resource!!.emptyId, node.getLocation(), node.type, node.rotation), resource!!.respawnDuration)
|
||||
node.setActive(false)
|
||||
return true
|
||||
|
|
|
|||
|
|
@ -522,21 +522,21 @@ public enum MiningNode{
|
|||
experience = 80.0;
|
||||
rate = 0.70;
|
||||
reward = 447;
|
||||
level = 55;
|
||||
level = 50;
|
||||
break;
|
||||
case 11:
|
||||
respawnRate = 400 | 800 << 16;
|
||||
experience = 95.0;
|
||||
rate = 0.85;
|
||||
reward = 449;
|
||||
level = 70;
|
||||
level = 60;
|
||||
break;
|
||||
case 12:
|
||||
respawnRate = 1250 | 2500 << 16;
|
||||
experience = 125.0;
|
||||
rate = 0.95;
|
||||
reward = 451;
|
||||
level = 85;
|
||||
level = 70;
|
||||
break;
|
||||
case 13:
|
||||
respawnRate = 166 | 175 << 16;
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ class WoodcuttingListener : InteractionListener {
|
|||
//OSRS: https://oldschool.runescape.wiki/w/Woodcutting scroll down to the mechanics section
|
||||
//RS3 : https://runescape.wiki/w/Woodcutting scroll down to the mechanics section, and expand the tree felling chances table
|
||||
if (resource.getRespawnRate() > 0) {
|
||||
if (RandomFunction.roll(8) || listOf(1, 2, 3, 4, 6).contains(resource.identifier.toInt())){
|
||||
if (RandomFunction.roll(8) || listOf(2, 3, 4, 6).contains(resource.identifier.toInt())){
|
||||
if (resource.isFarming()) {
|
||||
val fPatch = forObject(node.asScenery())
|
||||
if (fPatch != null) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ import core.game.node.entity.skill.Skills
|
|||
import core.game.node.item.Item
|
||||
import java.util.*
|
||||
|
||||
import core.game.system.task.Pulse
|
||||
|
||||
|
||||
/**
|
||||
* Dirty herb cleaning listener
|
||||
* @author Woah
|
||||
|
|
@ -24,11 +27,30 @@ class HerbCleanListener : InteractionListener {
|
|||
}
|
||||
|
||||
val exp = herb.experience
|
||||
|
||||
player.pulseManager.run(object : Pulse() {
|
||||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
if (amountInInventory(player, node.asItem().id) == 0 )
|
||||
return true
|
||||
if(removeItem(player, node.asItem().id)) {
|
||||
addItem(player, herb.product.id)
|
||||
rewardXP(player, Skills.HERBLORE, exp)
|
||||
playAudio(player, 5153)
|
||||
//sendMessage(player, "You clean the dirt from the " + herb.product.name.lowercase(Locale.getDefault()).replace("clean", "").trim { it <= ' ' } + " leaf.")
|
||||
}
|
||||
return false
|
||||
}
|
||||
})
|
||||
return@on true
|
||||
|
||||
/* Vanilla actions, replaced by pulse above
|
||||
replaceSlot(player, node.asItem().slot, herb.product, node.asItem())
|
||||
rewardXP(player, Skills.HERBLORE, exp)
|
||||
playAudio(player, 5153)
|
||||
sendMessage(player, "You clean the dirt from the " + herb.product.name.lowercase(Locale.getDefault()).replace("clean", "").trim { it <= ' ' } + " leaf.")
|
||||
return@on true
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -25,7 +25,7 @@ public final class HerbTarPulse extends SkillPulse<Item> {
|
|||
/**
|
||||
* Represents the swamp tar item.
|
||||
*/
|
||||
private static final Item SWAMP_TAR = new Item(1939, 15);
|
||||
private static final Item SWAMP_TAR = new Item(1939, 45);
|
||||
|
||||
/**
|
||||
* Represents the tar to make.
|
||||
|
|
@ -65,7 +65,7 @@ public final class HerbTarPulse extends SkillPulse<Item> {
|
|||
return false;
|
||||
}
|
||||
if (!player.getInventory().containsItem(SWAMP_TAR)) {
|
||||
player.getPacketDispatch().sendMessage("You need at least 15 swamp tar in order to do this.");
|
||||
player.getPacketDispatch().sendMessage("You need at least 45 swamp tar in order to do this.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
@ -83,7 +83,7 @@ public final class HerbTarPulse extends SkillPulse<Item> {
|
|||
return false;
|
||||
}
|
||||
if (player.getInventory().containsItem(SWAMP_TAR) && player.getInventory().containsItem(tar.getIngredient()) && player.getInventory().remove(SWAMP_TAR) && player.getInventory().remove(tar.getIngredient())) {
|
||||
final Item item = new Item(tar.getTar().getId(), 15);
|
||||
final Item item = new Item(tar.getTar().getId(), 45);
|
||||
player.getInventory().add(item);
|
||||
player.getSkills().addExperience(Skills.HERBLORE, tar.getExperience(), true);
|
||||
player.getPacketDispatch().sendMessage("You add the " + tar.getIngredient().getName().toLowerCase().replace("clean", "").trim() + " to the swamp tar.");
|
||||
|
|
|
|||
|
|
@ -46,10 +46,16 @@ public class ImpBoxPlugin extends OptionHandler {
|
|||
public boolean handle(Player player, Node node, String option) {
|
||||
switch (option) {
|
||||
case "bank":
|
||||
int boxSlot = node.asItem().getSlot();
|
||||
player.getInventory().replace(new Item(10025), boxSlot);
|
||||
player.sendMessage("You free the imp in exchange for it taking some items to your bank.");
|
||||
player.getBank().openDepositBox();
|
||||
/* Snowscape Custom: the normal imp interface is broken, so we fixed/buffed it by making it act as a one-time-use deposit box instead.
|
||||
Component component = new Component(478);
|
||||
component.setPlugin(new ImpInterfaceHandler((Item) node));
|
||||
player.getInterfaceManager().open(component);
|
||||
PacketRepository.send(ContainerPacket.class, new ContainerContext(player, 478, 61, 91, player.getInventory(), true));
|
||||
*/
|
||||
break;
|
||||
case "talk-to":
|
||||
player.getDialogueInterpreter().open("imp-box");
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public final class TrapWrapper {
|
|||
this.type = type;
|
||||
this.object = object;
|
||||
this.originalId = object.getId();
|
||||
this.ticks = GameWorld.getTicks() + (100);
|
||||
this.ticks = GameWorld.getTicks() + (1000);
|
||||
this.instance = HunterManager.getInstance(player);
|
||||
this.object.getAttributes().setAttribute("trap-uid", instance.getUid());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@ import static core.api.ContentAPIKt.log;
|
|||
*/
|
||||
public enum Traps {
|
||||
BIRD_SNARE(new TrapSetting(10006, new int[] { 19175 }, new int[] {}, "lay", 19174, Animation.create(5208), Animation.create(5207), 1),
|
||||
new TrapNode(new int[] { 5073 }, 1, 34, new int[] { 19179, 19180 }, new Item[] { new Item(10088, 8), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5075 }, 5, 48, new int[] { 19183, 19184 }, new Item[] { new Item(10090, 8), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5076 }, 9, 61, new int[] { 19185, 19186 }, new Item[] { new Item(10091, 8), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5074 }, 11, 64.7, new int[] { 19181, 19182 }, new Item[] { new Item(10089, 8), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5072 }, 19, 95.2, new int[] { 19177, 19178 }, new Item[] { new Item(10087, 8), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 7031 }, 39, 167, new int[] { 28931, 28930 }, new Item[] { new Item(11525, 8), new Item(9978), new Item(526) }) {
|
||||
new TrapNode(new int[] { 5073 }, 1, 34, new int[] { 19179, 19180 }, new Item[] { new Item(10088, 60), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5075 }, 5, 48, new int[] { 19183, 19184 }, new Item[] { new Item(10090, 60), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5076 }, 9, 61, new int[] { 19185, 19186 }, new Item[] { new Item(10091, 60), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5074 }, 11, 64.7, new int[] { 19181, 19182 }, new Item[] { new Item(10089, 60), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 5072 }, 19, 95.2, new int[] { 19177, 19178 }, new Item[] { new Item(10087, 60), new Item(9978), new Item(526) }),
|
||||
new TrapNode(new int[] { 7031 }, 39, 167, new int[] { 28931, 28930 }, new Item[] { new Item(11525, 60), new Item(9978), new Item(526) }) {
|
||||
@Override
|
||||
public boolean canCatch(TrapWrapper wrapper, final NPC npc) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -51,10 +51,12 @@ public final class AncientTeleportPlugin extends MagicSpell {
|
|||
|
||||
@Override
|
||||
public boolean cast(Entity entity, Node target) {
|
||||
/* Snowscape Custom to allow teleporting in wilderness. The teleport limitations are still checked later by the send() function, so this is not
|
||||
if (entity.isTeleBlocked() || !super.meetsRequirements(entity, true, false)) {
|
||||
entity.asPlayer().sendMessage("A magical force has stopped you from teleporting.");
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
if (entity.getTeleporter().send(location.transform(0, RandomFunction.random(3), 0), getSpellId() == 28 ? TeleportType.HOME : TeleportType.ANCIENT)) {
|
||||
if (!super.meetsRequirements(entity, true, true)) {
|
||||
entity.getTeleporter().getCurrentTeleport().stop();
|
||||
|
|
|
|||
|
|
@ -374,16 +374,26 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
|||
|
||||
setDelay(player, false)
|
||||
openSingleTab(player, Components.DREAM_MONSTER_STAT_522)
|
||||
setInterfaceText(player, "Monster name : ${npc.definition.name}", Components.DREAM_MONSTER_STAT_522, 0)
|
||||
setInterfaceText(player, "Combat Level : ${npc.definition.combatLevel}", Components.DREAM_MONSTER_STAT_522, 1)
|
||||
setInterfaceText(player, "Hitpoints : ${npc.definition.handlers[NPCConfigParser.LIFEPOINTS] ?: 0}", Components.DREAM_MONSTER_STAT_522, 2)
|
||||
setInterfaceText(player, "Max hit : ${npc.getSwingHandler(false).calculateHit(npc, player, 1.0)}", Components.DREAM_MONSTER_STAT_522, 3)
|
||||
var bonuses = npc.properties.bonuses
|
||||
setInterfaceText(player, "Monster name: ${npc.definition.name} (${npc.definition.combatLevel})", Components.DREAM_MONSTER_STAT_522, 0)
|
||||
setInterfaceText(player, """
|
||||
Att:${npc.definition.handlers[NPCConfigParser.ATTACK_LEVEL] ?: 0}
|
||||
Str:${npc.definition.handlers[NPCConfigParser.STRENGTH_LEVEL] ?: 0}
|
||||
Ranged:${npc.definition.handlers[NPCConfigParser.RANGE_LEVEL] ?: 0}
|
||||
Magic:${npc.definition.handlers[NPCConfigParser.MAGIC_LEVEL] ?: 0}""", Components.DREAM_MONSTER_STAT_522, 1)
|
||||
setInterfaceText(player, """
|
||||
Defence:${npc.definition.handlers[NPCConfigParser.DEFENCE_LEVEL] ?: 0}
|
||||
HP:${npc.definition.handlers[NPCConfigParser.LIFEPOINTS] ?: 0}
|
||||
Max-hit:${npc.getSwingHandler(false).calculateHit(npc, player, 1.0)}""", Components.DREAM_MONSTER_STAT_522, 2)
|
||||
setInterfaceText(player, "${bonuses[0]},${bonuses[1]},${bonuses[2]},${bonuses[3]},${bonuses[4]}, ${bonuses[5]},${bonuses[6]},${bonuses[7]},${bonuses[8]},${bonuses[9]}", Components.DREAM_MONSTER_STAT_522, 3)
|
||||
|
||||
val poisonStatus = if(npc.definition.handlers.getOrDefault(NPCConfigParser.POISON_IMMUNE,false) == true){
|
||||
"This creature is immune to poison."
|
||||
} else "This creature is not immune to poison."
|
||||
|
||||
setInterfaceText(player, poisonStatus, Components.DREAM_MONSTER_STAT_522, 4)
|
||||
"Immune to poison. "
|
||||
} else ""
|
||||
val poisonStatus2 = if(npc.definition.handlers.getOrDefault(NPCConfigParser.POISONOUS,false) == true){
|
||||
"Poisonous."
|
||||
} else ""
|
||||
setInterfaceText(player, poisonStatus + poisonStatus2, Components.DREAM_MONSTER_STAT_522, 4)
|
||||
}
|
||||
|
||||
// Level 67
|
||||
|
|
@ -698,6 +708,24 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
|||
sendMessage(player, "You need to use this spell on logs.")
|
||||
return
|
||||
}
|
||||
player.pulseManager.run(object : Pulse() {
|
||||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
removeAttribute(player, "spell:runes")
|
||||
if (amountInInventory(player, item.id) == 0 )
|
||||
return true
|
||||
requires(player, 86, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.NATURE_RUNE_561, 1), Item(Items.EARTH_RUNE_557, 15)))
|
||||
if(removeItem(player, item.id) && addItem(player, plankType.plank.id)) {
|
||||
removeRunes(player, false)
|
||||
if (counter % 6 == 0)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_PLANK_MAKE_6298, Graphics.LUNAR_SPELLBOOK_PLANK_MAKE_1063, 120, Sounds.LUNAR_MAKE_PLANK_3617)
|
||||
addXP(player, 90.0)
|
||||
}
|
||||
counter++
|
||||
return false
|
||||
}
|
||||
})
|
||||
/* Vanilla Spell
|
||||
if (amountInInventory(player, Items.COINS_995) < plankType.price || !removeItem(player, Item(Items.COINS_995, plankType.price))) {
|
||||
sendMessage(player, "You need ${plankType.price} coins to convert that log into a plank.")
|
||||
return
|
||||
|
|
@ -709,6 +737,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
|||
replaceSlot(player, item.slot, plankType.plank)
|
||||
addXP(player, 90.0)
|
||||
showMagicTab(player)
|
||||
*/
|
||||
}
|
||||
|
||||
// Level 91
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ import org.rs09.consts.Items
|
|||
import org.rs09.consts.Scenery
|
||||
import org.rs09.consts.Sounds
|
||||
|
||||
import core.game.system.task.Pulse
|
||||
|
||||
class ModernListeners : SpellListener("modern"){
|
||||
override fun defineListeners() {
|
||||
onCast(Modern.HOME_TELEPORT, NONE){ player, _ ->
|
||||
|
|
@ -228,29 +230,66 @@ class ModernListeners : SpellListener("modern"){
|
|||
return false
|
||||
}
|
||||
|
||||
var loop = true
|
||||
|
||||
val ringOfWealth = intArrayOf(14646,14644,14642,14640,14638)
|
||||
if(high && ringOfWealth.contains(item.id)){
|
||||
if (getAttribute(player, "ringofwealth:unlocked", false)) {
|
||||
player.sendMessage("You have already unlocked the permanent Wealth effect and can no longer ")
|
||||
player.sendMessage("alchemize this ring.")
|
||||
return false
|
||||
} else {
|
||||
player.setAttribute("/save:ringofwealth:unlocked", true)
|
||||
player.sendMessage("Combining the Alchemy spell with the Wealth enchantment causes a strange ")
|
||||
player.sendMessage("interaction. You are now permanently enchanted with the Wealth effect and ")
|
||||
player.sendMessage("no longer need to wear the ring to get the benefit of increased rare drops.")
|
||||
loop = false
|
||||
}
|
||||
}
|
||||
|
||||
if (player.pulseManager.current !is MovementPulse) {
|
||||
player.pulseManager.clear()
|
||||
}
|
||||
|
||||
if (explorersRing) {
|
||||
visualize(player, LOW_ALCH_ANIM, EXPLORERS_RING_GFX)
|
||||
} else {
|
||||
val weapon = getItemFromEquipment(player, EquipmentSlot.WEAPON)
|
||||
if (weapon != null && weapon.id in MagicStaff.FIRE_RUNE.staves) {
|
||||
visualize(player, if (high) HIGH_ALCH_STAFF_ANIM else LOW_ALCH_STAFF_ANIM, if (high) HIGH_ALCH_STAFF_GFX else LOW_ALCH_STAFF_GFX)
|
||||
} else {
|
||||
visualize(player, if (high) HIGH_ALCH_ANIM else LOW_ALCH_ANIM, if (high) HIGH_ALCH_GFX else LOW_ALCH_GFX)
|
||||
player.pulseManager.run(object : Pulse(){
|
||||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
if (amountInInventory(player, item.id) == 0 || counter >= 150)
|
||||
return true
|
||||
removeAttribute(player, "spell:runes")
|
||||
if (counter % 5 == 0) {
|
||||
if (explorersRing) {
|
||||
visualize(player, LOW_ALCH_ANIM, EXPLORERS_RING_GFX)
|
||||
} else {
|
||||
val weapon = getItemFromEquipment(player, EquipmentSlot.WEAPON)
|
||||
if (weapon != null && weapon.id in MagicStaff.FIRE_RUNE.staves) {
|
||||
visualize(player, if (high) HIGH_ALCH_STAFF_ANIM else LOW_ALCH_STAFF_ANIM, if (high) HIGH_ALCH_STAFF_GFX else LOW_ALCH_STAFF_GFX)
|
||||
} else {
|
||||
visualize(player, if (high) HIGH_ALCH_ANIM else LOW_ALCH_ANIM, if (high) HIGH_ALCH_GFX else LOW_ALCH_GFX)
|
||||
}
|
||||
}
|
||||
playAudio(player, if (high) Sounds.HIGH_ALCHEMY_97 else Sounds.LOW_ALCHEMY_98)
|
||||
player.dispatch(ItemAlchemizationEvent(item.id, high))
|
||||
if (high)
|
||||
requires(player,55, arrayOf(Item(Items.FIRE_RUNE_554,5),Item(Items.NATURE_RUNE_561,1)))
|
||||
else
|
||||
requires(player,21, arrayOf(Item(Items.FIRE_RUNE_554,3),Item(Items.NATURE_RUNE_561)))
|
||||
removeRunes(player, false)
|
||||
addXP(player, if (high) 65.0 else 31.0)
|
||||
if (player.inventory.remove(Item(item.id, 1)) && coins.amount > 0) {
|
||||
player.inventory.add(coins)
|
||||
}
|
||||
//showMagicTab(player)
|
||||
setDelay(player, 5)
|
||||
}
|
||||
if (loop) {
|
||||
counter++
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
playAudio(player, if (high) Sounds.HIGH_ALCHEMY_97 else Sounds.LOW_ALCHEMY_98)
|
||||
player.dispatch(ItemAlchemizationEvent(item.id, high))
|
||||
if (player.inventory.remove(Item(item.id, 1)) && coins.amount > 0) {
|
||||
player.inventory.add(coins)
|
||||
}
|
||||
removeRunes(player)
|
||||
addXP(player, if (high) 65.0 else 31.0)
|
||||
showMagicTab(player)
|
||||
setDelay(player, 5)
|
||||
})
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ import core.game.node.scenery.Scenery;
|
|||
|
||||
import static core.api.ContentAPIKt.hasRequirement;
|
||||
|
||||
import core.game.world.map.Location;
|
||||
|
||||
/**
|
||||
* Represents an altar an it's relative information(corresponding ruin, etc)
|
||||
* @author 'Vexia
|
||||
|
|
@ -82,6 +84,14 @@ public enum Altar {
|
|||
if (this == BLOOD) {
|
||||
if (!hasRequirement(player, "Legacy of Seergaze"))
|
||||
return;
|
||||
}
|
||||
if (this == SOUL) {
|
||||
if (player.getQuestRepository().isComplete("Dragon Slayer")) {
|
||||
player.getProperties().setTeleportLocation(Location.create(2836, 3285, 0));
|
||||
} else {
|
||||
player.sendMessage("You need to have completed the Dragon Slayer quest in order to do that.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (this == LAW) {
|
||||
if (!ItemDefinition.canEnterEntrana(player)) {
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
* Represents the pure essence item.
|
||||
*/
|
||||
private static final Item PURE_ESSENCE = new Item(7936);
|
||||
private static final Item SOFT_CLAY = new Item(1761);
|
||||
|
||||
/**
|
||||
* Represents the binding necklace item.
|
||||
|
|
@ -119,12 +120,12 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
player.getPacketDispatch().sendMessage("You need pure essence to craft this rune.");
|
||||
return false;
|
||||
}
|
||||
if (!altar.isOurania() && !rune.isNormal() && !player.getInventory().containsItem(PURE_ESSENCE)) {
|
||||
player.getPacketDispatch().sendMessage("You need pure essence to craft this rune.");
|
||||
if (!altar.isOurania() && !rune.isNormal() && !player.getInventory().containsItem(PURE_ESSENCE) && !player.getInventory().containsItem(SOFT_CLAY)) {
|
||||
player.getPacketDispatch().sendMessage("You need pure essence to craft this rune, or soft clay to craft teleport tablets.");
|
||||
return false;
|
||||
}
|
||||
if (!altar.isOurania() && rune.isNormal() && !player.getInventory().containsItem(PURE_ESSENCE) && !player.getInventory().containsItem(RUNE_ESSENCE)) {
|
||||
player.getPacketDispatch().sendMessage("You need rune essence or pure essence in order to craft this rune.");
|
||||
if (!altar.isOurania() && rune.isNormal() && !player.getInventory().containsItem(PURE_ESSENCE) && !player.getInventory().containsItem(RUNE_ESSENCE) && !player.getInventory().containsItem(SOFT_CLAY)) {
|
||||
player.getPacketDispatch().sendMessage("You need rune essence or pure essence in order to craft this rune, or soft clay to craft teleport tablets.");
|
||||
return false;
|
||||
}
|
||||
if (altar.isOurania() && !player.getInventory().containsItem(PURE_ESSENCE)) {
|
||||
|
|
@ -160,6 +161,7 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
@Override
|
||||
public boolean reward() {
|
||||
if (!combination) {
|
||||
craftTablet();
|
||||
craft();
|
||||
} else {
|
||||
combine();
|
||||
|
|
@ -177,7 +179,7 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
int total = 0;
|
||||
for(int j = 0; j < amount; j++) {
|
||||
// since getMultiplier is stochastic, roll `amount` independent copies
|
||||
total += getMultiplier();
|
||||
total += getMultiplier(rune);
|
||||
}
|
||||
Item i = new Item(rune.getRune().getId(), total);
|
||||
|
||||
|
|
@ -215,7 +217,9 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
player.getPacketDispatch().sendMessage("You bind the temple's power into runes.");
|
||||
player.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_RC, amount);
|
||||
for (int i = 0; i < amount; i++) {
|
||||
Rune rune = null;
|
||||
Rune rune = getOuraniaRune(player.getSkills().getLevel(Skills.RUNECRAFTING));
|
||||
/* Snowscape: removed this placeholder formula and implemented the real ourania probabilities. The multiplier on Orania runes is also a custom feature.
|
||||
Rune rune = null;
|
||||
while (rune == null) {
|
||||
final Rune temp = Rune.values()[RandomFunction.random(Rune.values().length)];
|
||||
if (player.getSkills().getLevel(Skills.RUNECRAFTING) >= temp.getLevel()) {
|
||||
|
|
@ -226,17 +230,48 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
player.getSkills().addExperience(Skills.RUNECRAFTING, rune.getExperience() * 2, true);
|
||||
Item runeItem = rune.getRune();
|
||||
Item runeItem = new Item(rune.getRune().getId(),getMultiplier(rune));
|
||||
player.getInventory().add(runeItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to combine runes.
|
||||
*/
|
||||
/**
|
||||
* Method used to combine runes. Snowscape custom: you get multiple combination runes per essence (the opposite rune cost scales to match the multiplier)
|
||||
*/
|
||||
private final void combine() {
|
||||
final Item remove = node.getName().contains("talisman") ? node : talisman != null ? talisman.getTalisman() : Talisman.forName(Rune.forItem(node).name()).getTalisman();
|
||||
boolean imbued = hasSpellImbue();
|
||||
if (!imbued ? player.getInventory().remove(remove) : imbued) {
|
||||
int essenceAmt = player.getInventory().getAmount(PURE_ESSENCE);
|
||||
int multiplier = getMultiplier(altar.getRune());
|
||||
final Item rune = node.getName().contains("rune") ? Rune.forItem(node).getRune() : Rune.forName(Talisman.forItem(node).name()).getRune();
|
||||
for (int i = 0; i < essenceAmt; i++) {
|
||||
int runeAmt = player.getInventory().getAmount(rune);
|
||||
if (runeAmt > 0 && player.getInventory().remove(new Item(PURE_ESSENCE.getId(),1))) {
|
||||
if (runeAmt < multiplier) {
|
||||
multiplier = runeAmt;
|
||||
}
|
||||
player.getInventory().remove(new Item(rune.getId(), multiplier));
|
||||
if (RandomFunction.random(2) == 1 || hasBindingNecklace()) {
|
||||
player.getInventory().add(new Item(combo.getRune().getId(), multiplier));
|
||||
player.getSkills().addExperience(Skills.RUNECRAFTING, combo.getExperience(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hasBindingNecklace()) {
|
||||
player.getEquipment().get(EquipmentContainer.SLOT_AMULET).setCharge(player.getEquipment().get(EquipmentContainer.SLOT_AMULET).getCharge() - 1);
|
||||
if (1000 - player.getEquipment().get(EquipmentContainer.SLOT_AMULET).getCharge() > 14) {
|
||||
player.getEquipment().remove(BINDING_NECKLACE, true);
|
||||
player.getPacketDispatch().sendMessage("Your binding necklace crumbles into dust.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Original function, replaced by snowscape custom above
|
||||
private final void combine() {
|
||||
final Item remove = node.getName().contains("talisman") ? node : talisman != null ? talisman.getTalisman() : Talisman.forName(Rune.forItem(node).name()).getTalisman();
|
||||
boolean imbued = hasSpellImbue();
|
||||
|
|
@ -267,6 +302,33 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* Method used to craft tablets. Custom for Snowscape
|
||||
*/
|
||||
private final void craftTablet() {
|
||||
int amount = player.getInventory().getAmount(new Item(1761));
|
||||
Item clay = new Item(1761, amount);
|
||||
Item tablet = null;
|
||||
if (altar == Altar.AIR) { tablet = new Item(13599, amount); }
|
||||
if (altar == Altar.MIND) { tablet = new Item(13600, amount); }
|
||||
if (altar == Altar.WATER) { tablet = new Item(13601, amount); }
|
||||
if (altar == Altar.EARTH) { tablet = new Item(13602, amount); }
|
||||
if (altar == Altar.FIRE) { tablet = new Item(13603, amount); }
|
||||
if (altar == Altar.BODY) { tablet = new Item(13604, amount); }
|
||||
if (altar == Altar.COSMIC) { tablet = new Item(13605, amount); }
|
||||
if (altar == Altar.CHAOS) { tablet = new Item(13606, amount); }
|
||||
if (altar == Altar.ASTRAL) { tablet = new Item(13611, amount); }
|
||||
if (altar == Altar.NATURE) { tablet = new Item(13607, amount); }
|
||||
if (altar == Altar.LAW) { tablet = new Item(13608, amount); }
|
||||
if (altar == Altar.DEATH) { tablet = new Item(13609, amount); }
|
||||
if (altar == Altar.BLOOD) { tablet = new Item(13610, amount); }
|
||||
if (altar == Altar.SOUL) { tablet = new Item(8022, amount); }
|
||||
if (tablet != null && player.getInventory().remove(clay)) {
|
||||
player.getInventory().add(tablet);
|
||||
player.getPacketDispatch().sendMessage("You bind the temple's power into teleport tablets.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the player has the spell imbue.
|
||||
|
|
@ -318,10 +380,12 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
*
|
||||
* @return the amount.
|
||||
*/
|
||||
public int getMultiplier() {
|
||||
public int getMultiplier(Rune rune) {
|
||||
/*
|
||||
if (altar.isOurania()) {
|
||||
return 1;
|
||||
}
|
||||
*/
|
||||
int rcLevel = player.getSkills().getLevel(Skills.RUNECRAFTING);
|
||||
int runecraftingFormulaRevision = ServerConstants.RUNECRAFTING_FORMULA_REVISION;
|
||||
boolean lumbridgeDiary = player.getAchievementDiaryManager().getDiary(DiaryType.LUMBRIDGE).isComplete(1);
|
||||
|
|
@ -365,6 +429,38 @@ public final class RuneCraftPulse extends SkillPulse<Item> {
|
|||
public boolean hasBindingNecklace() {
|
||||
return player.getEquipment().containsItem(BINDING_NECKLACE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to get a random rune for the Ourania altar based on runecrafting level.
|
||||
* Todo: This should probably use a weighted table but I couldn't figure them out.
|
||||
* @return the randomly selected rune.
|
||||
*/
|
||||
public static Rune getOuraniaRune(int rcLevel) {
|
||||
int random = RandomFunction.random(10000);
|
||||
if (rcLevel >= 99) {
|
||||
if (random > 9100) { return Rune.SOUL; } else if (random > 7800) { return Rune.BLOOD; } else if (random > 6250) { return Rune.DEATH; } else if (random > 4800) { return Rune.LAW; } else if (random > 3450) { return Rune.NATURE; } else if (random > 2500) { return Rune.ASTRAL; } else if (random > 1900) { return Rune.CHAOS; } else if (random > 1400) { return Rune.COSMIC; } else if (random > 1000) { return Rune.BODY; } else if (random > 700) { return Rune.FIRE; } else if (random > 400) { return Rune.EARTH; } else if (random > 200) { return Rune.WATER; } else if (random > 100) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 90) {
|
||||
if (random > 9350) { return Rune.SOUL; } else if (random > 8350) { return Rune.BLOOD; } else if (random > 6700) { return Rune.DEATH; } else if (random > 5250) { return Rune.LAW; } else if (random > 3900) { return Rune.NATURE; } else if (random > 2900) { return Rune.ASTRAL; } else if (random > 2200) { return Rune.CHAOS; } else if (random > 1600) { return Rune.COSMIC; } else if (random > 1100) { return Rune.BODY; } else if (random > 700) { return Rune.FIRE; } else if (random > 400) { return Rune.EARTH; } else if (random > 200) { return Rune.WATER; } else if (random > 100) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 80) {
|
||||
if (random > 9600) { return Rune.SOUL; } else if (random > 9000) { return Rune.BLOOD; } else if (random > 7550) { return Rune.DEATH; } else if (random > 6100) { return Rune.LAW; } else if (random > 4750) { return Rune.NATURE; } else if (random > 3700) { return Rune.ASTRAL; } else if (random > 2900) { return Rune.CHAOS; } else if (random > 2200) { return Rune.COSMIC; } else if (random > 1600) { return Rune.BODY; } else if (random > 700) { return Rune.FIRE; } else if (random > 400) { return Rune.EARTH; } else if (random > 200) { return Rune.WATER; } else if (random > 100) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 70) {
|
||||
if (random > 9800) { return Rune.SOUL; } else if (random > 9300) { return Rune.BLOOD; } else if (random > 8300) { return Rune.DEATH; } else if (random > 6500) { return Rune.LAW; } else if (random > 5000) { return Rune.NATURE; } else if (random > 3800) { return Rune.ASTRAL; } else if (random > 2900) { return Rune.CHAOS; } else if (random > 2200) { return Rune.COSMIC; } else if (random > 1700) { return Rune.BODY; } else if (random > 1300) { return Rune.FIRE; } else if (random > 900) { return Rune.EARTH; } else if (random > 600) { return Rune.WATER; } else if (random > 300) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 60) {
|
||||
if (random > 9900) { return Rune.SOUL; } else if (random > 9700) { return Rune.BLOOD; } else if (random > 9300) { return Rune.DEATH; } else if (random > 8500) { return Rune.LAW; } else if (random > 6950) { return Rune.NATURE; } else if (random > 5550) { return Rune.ASTRAL; } else if (random > 4500) { return Rune.CHAOS; } else if (random > 3550) { return Rune.COSMIC; } else if (random > 2800) { return Rune.BODY; } else if (random > 2100) { return Rune.FIRE; } else if (random > 1500) { return Rune.EARTH; } else if (random > 950) { return Rune.WATER; } else if (random > 450) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 50) {
|
||||
if (random > 9920) { return Rune.SOUL; } else if (random > 9750) { return Rune.BLOOD; } else if (random > 9400) { return Rune.DEATH; } else if (random > 8700) { return Rune.LAW; } else if (random > 7350) { return Rune.NATURE; } else if (random > 5850) { return Rune.ASTRAL; } else if (random > 4750) { return Rune.CHAOS; } else if (random > 3750) { return Rune.COSMIC; } else if (random > 3000) { return Rune.BODY; } else if (random > 2300) { return Rune.FIRE; } else if (random > 1650) { return Rune.EARTH; } else if (random > 1050) { return Rune.WATER; } else if (random > 500) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 40) {
|
||||
if (random > 9960) { return Rune.SOUL; } else if (random > 9880) { return Rune.BLOOD; } else if (random > 9760) { return Rune.DEATH; } else if (random > 9500) { return Rune.LAW; } else if (random > 9000) { return Rune.NATURE; } else if (random > 8000) { return Rune.ASTRAL; } else if (random > 6000) { return Rune.CHAOS; } else if (random > 4500) { return Rune.COSMIC; } else if (random > 3500) { return Rune.BODY; } else if (random > 2700) { return Rune.FIRE; } else if (random > 1950) { return Rune.EARTH; } else if (random > 1250) { return Rune.WATER; } else if (random > 600) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 30) {
|
||||
if (random > 9980) { return Rune.SOUL; } else if (random > 9940) { return Rune.BLOOD; } else if (random > 9880) { return Rune.DEATH; } else if (random > 9750) { return Rune.LAW; } else if (random > 9500) { return Rune.NATURE; } else if (random > 9000) { return Rune.ASTRAL; } else if (random > 8000) { return Rune.CHAOS; } else if (random > 6000) { return Rune.COSMIC; } else if (random > 4700) { return Rune.BODY; } else if (random > 3500) { return Rune.FIRE; } else if (random > 2400) { return Rune.EARTH; } else if (random > 1500) { return Rune.WATER; } else if (random > 700) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 20) {
|
||||
if (random > 9992) { return Rune.SOUL; } else if (random > 9977) { return Rune.BLOOD; } else if (random > 9945) { return Rune.DEATH; } else if (random > 9890) { return Rune.LAW; } else if (random > 9780) { return Rune.NATURE; } else if (random > 9570) { return Rune.ASTRAL; } else if (random > 9150) { return Rune.CHAOS; } else if (random > 8350) { return Rune.COSMIC; } else if (random > 6750) { return Rune.BODY; } else if (random > 5250) { return Rune.FIRE; } else if (random > 3850) { return Rune.EARTH; } else if (random > 2500) { return Rune.WATER; } else if (random > 1200) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else if (rcLevel >= 10) {
|
||||
if (random > 9997) { return Rune.SOUL; } else if (random > 9991) { return Rune.BLOOD; } else if (random > 9979) { return Rune.DEATH; } else if (random > 9955) { return Rune.LAW; } else if (random > 9915) { return Rune.NATURE; } else if (random > 9855) { return Rune.ASTRAL; } else if (random > 9775) { return Rune.CHAOS; } else if (random > 9600) { return Rune.COSMIC; } else if (random > 9000) { return Rune.BODY; } else if (random > 7800) { return Rune.FIRE; } else if (random > 5400) { return Rune.EARTH; } else if (random > 3300) { return Rune.WATER; } else if (random > 1500) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
} else {
|
||||
if (random > 9998) { return Rune.SOUL; } else if (random > 9993) { return Rune.BLOOD; } else if (random > 9985) { return Rune.DEATH; } else if (random > 9970) { return Rune.LAW; } else if (random > 9940) { return Rune.NATURE; } else if (random > 9895) { return Rune.ASTRAL; } else if (random > 9835) { return Rune.CHAOS; } else if (random > 9750) { return Rune.COSMIC; } else if (random > 9600) { return Rune.BODY; } else if (random > 9300) { return Rune.FIRE; } else if (random > 8700) { return Rune.EARTH; } else if (random > 7500) { return Rune.WATER; } else if (random > 5000) { return Rune.MIND; } else { return Rune.AIR; }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the altar.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import org.json.simple.JSONObject
|
|||
import java.util.*
|
||||
import org.rs09.consts.Items
|
||||
|
||||
import content.global.skill.hunter.HunterNPC
|
||||
|
||||
/**
|
||||
* Manages the players slayer data.
|
||||
* @author Ceikry
|
||||
|
|
@ -101,9 +103,13 @@ class SlayerManager(val player: Player? = null) : LoginListener, PersistPlayer,
|
|||
val player = entity as? Player ?: return
|
||||
val slayer = getInstance(player)
|
||||
val flags = slayer.flags
|
||||
var xp = npc.skills.maximumLifepoints.toDouble()
|
||||
//Snowscape custom: grant a third of the normal slayer exp on all kills (this stacks with the exp from on-task kills)
|
||||
if (npc !is HunterNPC)
|
||||
rewardXP(player, Skills.SLAYER, xp/3)
|
||||
|
||||
if (slayer.hasTask() && npc.id in slayer.task!!.npcs) {
|
||||
var xp = npc.skills.maximumLifepoints.toDouble()
|
||||
|
||||
if (slayer.task!!.dragon && inEquipment(player, Items.DRAGON_SLAYER_GLOVES_12862)) {
|
||||
xp *= 1.15
|
||||
FOGGlovesManager.updateCharges(player)
|
||||
|
|
|
|||
|
|
@ -26,122 +26,122 @@ public enum Bars {
|
|||
/**
|
||||
* Bronze Mace
|
||||
*/
|
||||
BRONZE_MACE(BarType.BRONZE, SmithingType.TYPE_MACE, 1422, 2),
|
||||
BRONZE_MACE(BarType.BRONZE, SmithingType.TYPE_MACE, 1422, 1),
|
||||
|
||||
/**
|
||||
* Bronze Medium helm
|
||||
*/
|
||||
BRONZE_MED_HELM(BarType.BRONZE, SmithingType.TYPE_MEDIUM_HELM, 1139, 3),
|
||||
BRONZE_MED_HELM(BarType.BRONZE, SmithingType.TYPE_MEDIUM_HELM, 1139, 1),
|
||||
|
||||
/**
|
||||
* Bronze Crossbow Bolt
|
||||
*/
|
||||
BRONZE_CROSSBOW_BOLT(BarType.BRONZE, SmithingType.TYPE_CROSSBOW_BOLT, 9375, 3),
|
||||
BRONZE_CROSSBOW_BOLT(BarType.BRONZE, SmithingType.TYPE_CROSSBOW_BOLT, 9375, 1),
|
||||
|
||||
/**
|
||||
* Bronze Sword
|
||||
*/
|
||||
BRONZE_SWORD(BarType.BRONZE, SmithingType.TYPE_SWORD, 1277, 4),
|
||||
BRONZE_SWORD(BarType.BRONZE, SmithingType.TYPE_SWORD, 1277, 1),
|
||||
|
||||
/**
|
||||
* Bronze Dart Tips
|
||||
*/
|
||||
BRONZE_DART_TIPS(BarType.BRONZE, SmithingType.TYPE_DART_TIP, 819, 4),
|
||||
BRONZE_DART_TIPS(BarType.BRONZE, SmithingType.TYPE_DART_TIP, 819, 1),
|
||||
|
||||
/**
|
||||
* Bronze Nails
|
||||
*/
|
||||
BRONZE_NAILS(BarType.BRONZE, SmithingType.TYPE_NAIL, 4819, 4),
|
||||
BRONZE_NAILS(BarType.BRONZE, SmithingType.TYPE_NAIL, 4819, 1),
|
||||
|
||||
/**
|
||||
* Bronze Wire
|
||||
*/
|
||||
BRONZE_WIRE(BarType.BRONZE, SmithingType.TYPE_WIRE, 1794, 4),
|
||||
BRONZE_WIRE(BarType.BRONZE, SmithingType.TYPE_WIRE, 1794, 1),
|
||||
|
||||
/**
|
||||
* Bronze Arrow Tips
|
||||
*/
|
||||
BRONZE_ARROW_TIPS(BarType.BRONZE, SmithingType.TYPE_ARROW_TIP, 39, 5),
|
||||
BRONZE_ARROW_TIPS(BarType.BRONZE, SmithingType.TYPE_ARROW_TIP, 39, 1),
|
||||
|
||||
/**
|
||||
* Bronze Scimitar
|
||||
*/
|
||||
BRONZE_SCIMITAR(BarType.BRONZE, SmithingType.TYPE_SCIMITAR, 1321, 5),
|
||||
BRONZE_SCIMITAR(BarType.BRONZE, SmithingType.TYPE_SCIMITAR, 1321, 1),
|
||||
|
||||
/**
|
||||
* Bronze Crossbow Limbs
|
||||
*/
|
||||
BRONZE_CROSSBOW_LIMBS(BarType.BRONZE, SmithingType.TYPE_CROSSBOW_LIMB, 9420, 6),
|
||||
BRONZE_CROSSBOW_LIMBS(BarType.BRONZE, SmithingType.TYPE_CROSSBOW_LIMB, 9420, 1),
|
||||
|
||||
/**
|
||||
* Bronze longsword
|
||||
*/
|
||||
BRONZE_LONGSWORD(BarType.BRONZE, SmithingType.TYPE_LONGSWORD, 1291, 6),
|
||||
BRONZE_LONGSWORD(BarType.BRONZE, SmithingType.TYPE_LONGSWORD, 1291, 1),
|
||||
|
||||
/**
|
||||
* Bronze ThrowingKnife
|
||||
*/
|
||||
BRONZE_THROWINGKNFIE(BarType.BRONZE, SmithingType.TYPE_THROWING_KNIFE, 864, 7),
|
||||
BRONZE_THROWINGKNFIE(BarType.BRONZE, SmithingType.TYPE_THROWING_KNIFE, 864, 1),
|
||||
|
||||
/**
|
||||
* Bronze Full helmet
|
||||
*/
|
||||
BRONZE_FULL_HELM(BarType.BRONZE, SmithingType.TYPE_FULL_HELM, 1155, 7),
|
||||
BRONZE_FULL_HELM(BarType.BRONZE, SmithingType.TYPE_FULL_HELM, 1155, 1),
|
||||
|
||||
/**
|
||||
* Bronze Square Shield
|
||||
*/
|
||||
BRONZE_SQUARE_SHIELD(BarType.BRONZE, SmithingType.TYPE_SQUARE_SHIELD, 1173, 8),
|
||||
BRONZE_SQUARE_SHIELD(BarType.BRONZE, SmithingType.TYPE_SQUARE_SHIELD, 1173, 1),
|
||||
|
||||
/**
|
||||
* Bronze Warhammer
|
||||
*/
|
||||
BRONZE_WAR_HAMMER(BarType.BRONZE, SmithingType.TYPE_WARHAMMER, 1337, 9),
|
||||
BRONZE_WAR_HAMMER(BarType.BRONZE, SmithingType.TYPE_WARHAMMER, 1337, 1),
|
||||
|
||||
/**
|
||||
* Bronze BattleAxe
|
||||
*/
|
||||
BRONZE_BATTLEAXE(BarType.BRONZE, SmithingType.TYPE_BATTLE_AXE, 1375, 10),
|
||||
BRONZE_BATTLEAXE(BarType.BRONZE, SmithingType.TYPE_BATTLE_AXE, 1375, 1),
|
||||
|
||||
/**
|
||||
* Bronze ChainBody
|
||||
*/
|
||||
BRONZE_CHAINBODY(BarType.BRONZE, SmithingType.TYPE_CHAINBODY, 1103, 11),
|
||||
BRONZE_CHAINBODY(BarType.BRONZE, SmithingType.TYPE_CHAINBODY, 1103, 1),
|
||||
|
||||
/**
|
||||
* Bronze KitShield
|
||||
*/
|
||||
BRONZE_KITESHIELD(BarType.BRONZE, SmithingType.TYPE_KITE_SHIELD, 1189, 12),
|
||||
BRONZE_KITESHIELD(BarType.BRONZE, SmithingType.TYPE_KITE_SHIELD, 1189, 1),
|
||||
|
||||
/**
|
||||
* Bronze Claws
|
||||
*/
|
||||
BRONZE_CLAWS(BarType.BRONZE, SmithingType.TYPE_CLAWS, 3095, 13),
|
||||
BRONZE_CLAWS(BarType.BRONZE, SmithingType.TYPE_CLAWS, 3095, 1),
|
||||
|
||||
/**
|
||||
* Bronze 2h
|
||||
*/
|
||||
BRONZE_TWO_HANDED(BarType.BRONZE, SmithingType.TYPE_TWO_HAND_SWORD, 1307, 14),
|
||||
BRONZE_TWO_HANDED(BarType.BRONZE, SmithingType.TYPE_TWO_HAND_SWORD, 1307, 1),
|
||||
|
||||
/**
|
||||
* Bronze PlateSkirt
|
||||
*/
|
||||
BRONZE_PLATE_SKIRT(BarType.BRONZE, SmithingType.TYPE_PLATE_SKIRT, 1087, 16),
|
||||
BRONZE_PLATE_SKIRT(BarType.BRONZE, SmithingType.TYPE_PLATE_SKIRT, 1087, 1),
|
||||
|
||||
/**
|
||||
* Bronze PlateLegs
|
||||
*/
|
||||
BRONZE_PLATELEGS(BarType.BRONZE, SmithingType.TYPE_PLATELEG, 1075, 16),
|
||||
BRONZE_PLATELEGS(BarType.BRONZE, SmithingType.TYPE_PLATELEG, 1075, 1),
|
||||
|
||||
/**
|
||||
* Bronze PlateBody
|
||||
*/
|
||||
BRONZE_PLATEBODY(BarType.BRONZE, SmithingType.TYPE_PLATEBODY, 1117, 18),
|
||||
BRONZE_PLATEBODY(BarType.BRONZE, SmithingType.TYPE_PLATEBODY, 1117, 1),
|
||||
|
||||
/**
|
||||
* Bronze Pickaxe
|
||||
*/
|
||||
BRONZE_PICKAXE(BarType.BRONZE, SmithingType.TYPE_PICKAXE, 1265, 5),
|
||||
BRONZE_PICKAXE(BarType.BRONZE, SmithingType.TYPE_PICKAXE, 1265, 1),
|
||||
|
||||
/**
|
||||
* Iron Dagger
|
||||
|
|
@ -151,131 +151,131 @@ public enum Bars {
|
|||
/**
|
||||
* Iron Hatchet
|
||||
*/
|
||||
IRON_AXE(BarType.IRON, SmithingType.TYPE_AXE, 1349, 16),
|
||||
IRON_AXE(BarType.IRON, SmithingType.TYPE_AXE, 1349, 15),
|
||||
|
||||
/**
|
||||
* Iron Mace
|
||||
*/
|
||||
IRON_MACE(BarType.IRON, SmithingType.TYPE_MACE, 1420, 17),
|
||||
IRON_MACE(BarType.IRON, SmithingType.TYPE_MACE, 1420, 15),
|
||||
|
||||
/**
|
||||
* Iron Med Helm
|
||||
*/
|
||||
IRON_MED_HELM(BarType.IRON, SmithingType.TYPE_MEDIUM_HELM, 1137, 18),
|
||||
IRON_MED_HELM(BarType.IRON, SmithingType.TYPE_MEDIUM_HELM, 1137, 15),
|
||||
|
||||
/**
|
||||
* Iron Bolt
|
||||
*/
|
||||
IRON_BOLT(BarType.IRON, SmithingType.TYPE_CROSSBOW_BOLT, 9377, 18),
|
||||
IRON_BOLT(BarType.IRON, SmithingType.TYPE_CROSSBOW_BOLT, 9377, 15),
|
||||
|
||||
/**
|
||||
* Iron Sword
|
||||
*/
|
||||
IRON_SWORD(BarType.IRON, SmithingType.TYPE_SWORD, 1279, 19),
|
||||
IRON_SWORD(BarType.IRON, SmithingType.TYPE_SWORD, 1279, 15),
|
||||
|
||||
/**
|
||||
* Iron Dart Tips
|
||||
*/
|
||||
IRON_DART_TIPS(BarType.IRON, SmithingType.TYPE_DART_TIP, 820, 19),
|
||||
IRON_DART_TIPS(BarType.IRON, SmithingType.TYPE_DART_TIP, 820, 15),
|
||||
|
||||
/**
|
||||
* Iron Nails
|
||||
*/
|
||||
IRON_NAILS(BarType.IRON, SmithingType.TYPE_NAIL, 4820, 19),
|
||||
IRON_NAILS(BarType.IRON, SmithingType.TYPE_NAIL, 4820, 15),
|
||||
|
||||
/**
|
||||
* Iron Split
|
||||
*/
|
||||
IRON_SPIT(BarType.IRON, SmithingType.TYPE_SPIT_IRON, 7225, 16),
|
||||
IRON_SPIT(BarType.IRON, SmithingType.TYPE_SPIT_IRON, 7225, 15),
|
||||
|
||||
/**
|
||||
* Iron Arrow Tips
|
||||
*/
|
||||
IRON_ARROW_TIPS(BarType.IRON, SmithingType.TYPE_ARROW_TIP, 40, 20),
|
||||
IRON_ARROW_TIPS(BarType.IRON, SmithingType.TYPE_ARROW_TIP, 40, 15),
|
||||
|
||||
/**
|
||||
* Iron Scimitar
|
||||
*/
|
||||
IRON_SCIMITAR(BarType.IRON, SmithingType.TYPE_SCIMITAR, 1323, 20),
|
||||
IRON_SCIMITAR(BarType.IRON, SmithingType.TYPE_SCIMITAR, 1323, 15),
|
||||
|
||||
/**
|
||||
* Iron Crossbow Limbs
|
||||
*/
|
||||
IRON_CROSSBOW_LimbS(BarType.IRON, SmithingType.TYPE_CROSSBOW_LIMB, 9423, 23),
|
||||
IRON_CROSSBOW_LimbS(BarType.IRON, SmithingType.TYPE_CROSSBOW_LIMB, 9423, 15),
|
||||
|
||||
/**
|
||||
* Iron LongSword
|
||||
*/
|
||||
IRON_LONGSWORD(BarType.IRON, SmithingType.TYPE_LONGSWORD, 1293, 21),
|
||||
IRON_LONGSWORD(BarType.IRON, SmithingType.TYPE_LONGSWORD, 1293, 15),
|
||||
|
||||
/**
|
||||
* Iron Knife
|
||||
*/
|
||||
IRON_KNIFE(BarType.IRON, SmithingType.TYPE_THROWING_KNIFE, 863, 22),
|
||||
IRON_KNIFE(BarType.IRON, SmithingType.TYPE_THROWING_KNIFE, 863, 15),
|
||||
|
||||
/**
|
||||
* Iron Full Helm
|
||||
*/
|
||||
IRON_FULL_HELM(BarType.IRON, SmithingType.TYPE_FULL_HELM, 1153, 22),
|
||||
IRON_FULL_HELM(BarType.IRON, SmithingType.TYPE_FULL_HELM, 1153, 15),
|
||||
|
||||
/**
|
||||
* Iron Square Shield
|
||||
*/
|
||||
IRON_SQUARE_SHIELD(BarType.IRON, SmithingType.TYPE_SQUARE_SHIELD, 1175, 23),
|
||||
IRON_SQUARE_SHIELD(BarType.IRON, SmithingType.TYPE_SQUARE_SHIELD, 1175, 15),
|
||||
|
||||
/**
|
||||
* Oil Lantern Frame
|
||||
*/
|
||||
OIL_LANTERN_FRAME(BarType.IRON, SmithingType.TYPE_OIL_LANTERN, 4540, 26),
|
||||
OIL_LANTERN_FRAME(BarType.IRON, SmithingType.TYPE_OIL_LANTERN, 4540, 15),
|
||||
/**
|
||||
* Iron WarHammer
|
||||
*/
|
||||
IRON_WARHAMMER(BarType.IRON, SmithingType.TYPE_WARHAMMER, 1335, 24),
|
||||
IRON_WARHAMMER(BarType.IRON, SmithingType.TYPE_WARHAMMER, 1335, 15),
|
||||
|
||||
/**
|
||||
* Iron Battleaxe
|
||||
*/
|
||||
IRON_BATTLEAXE(BarType.IRON, SmithingType.TYPE_BATTLE_AXE, 1363, 25),
|
||||
IRON_BATTLEAXE(BarType.IRON, SmithingType.TYPE_BATTLE_AXE, 1363, 15),
|
||||
|
||||
/**
|
||||
* Iron ChainBody
|
||||
*/
|
||||
IRON_CHAINBODY(BarType.IRON, SmithingType.TYPE_CHAINBODY, 1101, 26),
|
||||
IRON_CHAINBODY(BarType.IRON, SmithingType.TYPE_CHAINBODY, 1101, 15),
|
||||
|
||||
/**
|
||||
* Iron Kite Shield
|
||||
*/
|
||||
IRON_KITE_SHIELD(BarType.IRON, SmithingType.TYPE_KITE_SHIELD, 1191, 27),
|
||||
IRON_KITE_SHIELD(BarType.IRON, SmithingType.TYPE_KITE_SHIELD, 1191, 15),
|
||||
|
||||
/**
|
||||
* Iron Claws
|
||||
*/
|
||||
IRON_CLAWS(BarType.IRON, SmithingType.TYPE_CLAWS, 3096, 28),
|
||||
IRON_CLAWS(BarType.IRON, SmithingType.TYPE_CLAWS, 3096, 15),
|
||||
|
||||
/**
|
||||
* Iron 2H
|
||||
*/
|
||||
IRON_TWO_HANDED_SWORD(BarType.IRON, SmithingType.TYPE_TWO_HAND_SWORD, 1309, 29),
|
||||
IRON_TWO_HANDED_SWORD(BarType.IRON, SmithingType.TYPE_TWO_HAND_SWORD, 1309, 15),
|
||||
|
||||
/**
|
||||
* Iron PlateSkirt
|
||||
*/
|
||||
IRON_PLATESKIRT(BarType.IRON, SmithingType.TYPE_PLATE_SKIRT, 1081, 31),
|
||||
IRON_PLATESKIRT(BarType.IRON, SmithingType.TYPE_PLATE_SKIRT, 1081, 15),
|
||||
|
||||
/**
|
||||
* Iron PlateLegs
|
||||
*/
|
||||
IRON_PLATELEGS(BarType.IRON, SmithingType.TYPE_PLATELEG, 1067, 31),
|
||||
IRON_PLATELEGS(BarType.IRON, SmithingType.TYPE_PLATELEG, 1067, 15),
|
||||
|
||||
/**
|
||||
* Iron PlateBody
|
||||
*/
|
||||
IRON_PLATEBODY(BarType.IRON, SmithingType.TYPE_PLATEBODY, 1115, 33),
|
||||
IRON_PLATEBODY(BarType.IRON, SmithingType.TYPE_PLATEBODY, 1115, 15),
|
||||
|
||||
/**
|
||||
* Iron PickAxe
|
||||
*/
|
||||
IRON_PICKAXE(BarType.IRON, SmithingType.TYPE_PICKAXE, 1267, 20),
|
||||
IRON_PICKAXE(BarType.IRON, SmithingType.TYPE_PICKAXE, 1267, 15),
|
||||
|
||||
/**
|
||||
* Steel Dagger
|
||||
|
|
@ -285,132 +285,132 @@ public enum Bars {
|
|||
/**
|
||||
* Steel Axe
|
||||
*/
|
||||
STEEL_AXE(BarType.STEEL, SmithingType.TYPE_AXE, 1353, 31),
|
||||
STEEL_AXE(BarType.STEEL, SmithingType.TYPE_AXE, 1353, 30),
|
||||
|
||||
/**
|
||||
* Steel Mace
|
||||
*/
|
||||
STEEL_MACE(BarType.STEEL, SmithingType.TYPE_MACE, 1424, 32),
|
||||
STEEL_MACE(BarType.STEEL, SmithingType.TYPE_MACE, 1424, 30),
|
||||
|
||||
/**
|
||||
* Steel Medium Helm
|
||||
*/
|
||||
STEEL_MED_HELM(BarType.STEEL, SmithingType.TYPE_MEDIUM_HELM, 1141, 33),
|
||||
STEEL_MED_HELM(BarType.STEEL, SmithingType.TYPE_MEDIUM_HELM, 1141, 30),
|
||||
|
||||
/**
|
||||
* Steel CrossBow bolts
|
||||
*/
|
||||
STEEL_CROSSBOW_BOLT(BarType.STEEL, SmithingType.TYPE_CROSSBOW_BOLT, 9378, 33),
|
||||
STEEL_CROSSBOW_BOLT(BarType.STEEL, SmithingType.TYPE_CROSSBOW_BOLT, 9378, 30),
|
||||
|
||||
/**
|
||||
* Steel Sword
|
||||
*/
|
||||
STEEL_SWORD(BarType.STEEL, SmithingType.TYPE_SWORD, 1281, 34),
|
||||
STEEL_SWORD(BarType.STEEL, SmithingType.TYPE_SWORD, 1281, 30),
|
||||
|
||||
/**
|
||||
* Steel Dart Tips
|
||||
*/
|
||||
STEEL_DART_TIPS(BarType.STEEL, SmithingType.TYPE_DART_TIP, 821, 34),
|
||||
STEEL_DART_TIPS(BarType.STEEL, SmithingType.TYPE_DART_TIP, 821, 30),
|
||||
|
||||
/**
|
||||
* Steel Nails
|
||||
*/
|
||||
STEEL_NAILS(BarType.STEEL, SmithingType.TYPE_NAIL, 1539, 34),
|
||||
STEEL_NAILS(BarType.STEEL, SmithingType.TYPE_NAIL, 1539, 30),
|
||||
|
||||
/**
|
||||
* Steel ArrowTips
|
||||
*/
|
||||
STEEL_ARROW_TIPS(BarType.STEEL, SmithingType.TYPE_ARROW_TIP, 41, 35),
|
||||
STEEL_ARROW_TIPS(BarType.STEEL, SmithingType.TYPE_ARROW_TIP, 41, 30),
|
||||
|
||||
/**
|
||||
* Steel Scimitar
|
||||
*/
|
||||
STEEL_SCIMITAR(BarType.STEEL, SmithingType.TYPE_SCIMITAR, 1325, 35),
|
||||
STEEL_SCIMITAR(BarType.STEEL, SmithingType.TYPE_SCIMITAR, 1325, 30),
|
||||
|
||||
/**
|
||||
* Steel Crossbow Limbs
|
||||
*/
|
||||
STEEL_CROSSBOW_LIMBS(BarType.STEEL, SmithingType.TYPE_CROSSBOW_LIMB, 9425, 36),
|
||||
STEEL_CROSSBOW_LIMBS(BarType.STEEL, SmithingType.TYPE_CROSSBOW_LIMB, 9425, 30),
|
||||
|
||||
/**
|
||||
* Steel LongSword
|
||||
*/
|
||||
STEEL_LONGSWORD(BarType.STEEL, SmithingType.TYPE_LONGSWORD, 1295, 36),
|
||||
STEEL_LONGSWORD(BarType.STEEL, SmithingType.TYPE_LONGSWORD, 1295, 30),
|
||||
|
||||
/**
|
||||
* Steel Knife
|
||||
*/
|
||||
STEEL_THROWING_KNIFE(BarType.STEEL, SmithingType.TYPE_THROWING_KNIFE, 865, 37),
|
||||
STEEL_THROWING_KNIFE(BarType.STEEL, SmithingType.TYPE_THROWING_KNIFE, 865, 30),
|
||||
|
||||
/**
|
||||
* Steel Full Helm
|
||||
*/
|
||||
STEEL_FULL_HELM(BarType.STEEL, SmithingType.TYPE_FULL_HELM, 1157, 37),
|
||||
STEEL_FULL_HELM(BarType.STEEL, SmithingType.TYPE_FULL_HELM, 1157, 30),
|
||||
|
||||
/**
|
||||
* Steel Studs
|
||||
*/
|
||||
STEEL_STUDS(BarType.STEEL, SmithingType.TYPE_STUDS, 2370, 36),
|
||||
STEEL_STUDS(BarType.STEEL, SmithingType.TYPE_STUDS, 2370, 30),
|
||||
|
||||
/**
|
||||
* Steel Square Shield
|
||||
*/
|
||||
STEEL_SQUARE_SHIELD(BarType.STEEL, SmithingType.TYPE_SQUARE_SHIELD, 1177, 38),
|
||||
STEEL_SQUARE_SHIELD(BarType.STEEL, SmithingType.TYPE_SQUARE_SHIELD, 1177, 30),
|
||||
|
||||
/**
|
||||
* Steel Lantern
|
||||
*/
|
||||
STEEL_BULLSEYE(BarType.STEEL, SmithingType.TYPE_BULLSEYE, 4544, 49),
|
||||
STEEL_BULLSEYE(BarType.STEEL, SmithingType.TYPE_BULLSEYE, 4544, 30),
|
||||
|
||||
/**
|
||||
* Steel WarHammer
|
||||
*/
|
||||
STEEL_WARHAMMER(BarType.STEEL, SmithingType.TYPE_WARHAMMER, 1339, 39),
|
||||
STEEL_WARHAMMER(BarType.STEEL, SmithingType.TYPE_WARHAMMER, 1339, 30),
|
||||
|
||||
/**
|
||||
* Steel battle axe
|
||||
*/
|
||||
STEEL_BATTLE_AXE(BarType.STEEL, SmithingType.TYPE_BATTLE_AXE, 1365, 40),
|
||||
STEEL_BATTLE_AXE(BarType.STEEL, SmithingType.TYPE_BATTLE_AXE, 1365, 30),
|
||||
|
||||
/**
|
||||
* Steel ChainBody
|
||||
*/
|
||||
STEEL_CHAINBODY(BarType.STEEL, SmithingType.TYPE_CHAINBODY, 1105, 41),
|
||||
STEEL_CHAINBODY(BarType.STEEL, SmithingType.TYPE_CHAINBODY, 1105, 30),
|
||||
|
||||
/**
|
||||
* Steel Kite Shield
|
||||
*/
|
||||
STEEL_KITE_SHIELD(BarType.STEEL, SmithingType.TYPE_KITE_SHIELD, 1193, 42),
|
||||
STEEL_KITE_SHIELD(BarType.STEEL, SmithingType.TYPE_KITE_SHIELD, 1193, 30),
|
||||
|
||||
/**
|
||||
* Steel Claws
|
||||
*/
|
||||
STEEL_CLAWS(BarType.STEEL, SmithingType.TYPE_CLAWS, 3097, 43),
|
||||
STEEL_CLAWS(BarType.STEEL, SmithingType.TYPE_CLAWS, 3097, 30),
|
||||
|
||||
/**
|
||||
* Steel 2h
|
||||
*/
|
||||
STEEL_TWO_HANDED_SWORD(BarType.STEEL, SmithingType.TYPE_TWO_HAND_SWORD, 1311, 44),
|
||||
STEEL_TWO_HANDED_SWORD(BarType.STEEL, SmithingType.TYPE_TWO_HAND_SWORD, 1311, 30),
|
||||
|
||||
/**
|
||||
* Steel plate skirt
|
||||
*/
|
||||
STEEL_PLATE_SKIRT(BarType.STEEL, SmithingType.TYPE_PLATE_SKIRT, 1083, 46),
|
||||
STEEL_PLATE_SKIRT(BarType.STEEL, SmithingType.TYPE_PLATE_SKIRT, 1083, 30),
|
||||
|
||||
/**
|
||||
* Steel platelegs
|
||||
*/
|
||||
STEEL_PLATELEGS(BarType.STEEL, SmithingType.TYPE_PLATELEG, 1069, 46),
|
||||
STEEL_PLATELEGS(BarType.STEEL, SmithingType.TYPE_PLATELEG, 1069, 30),
|
||||
|
||||
/**
|
||||
* Steel platebody
|
||||
*/
|
||||
STEEL_PLATEBODY(BarType.STEEL, SmithingType.TYPE_PLATEBODY, 1119, 48),
|
||||
STEEL_PLATEBODY(BarType.STEEL, SmithingType.TYPE_PLATEBODY, 1119, 30),
|
||||
|
||||
/**
|
||||
* Steel pickaxe
|
||||
*/
|
||||
STEEL_PICKAXE(BarType.STEEL, SmithingType.TYPE_PICKAXE, 1269, 35),
|
||||
STEEL_PICKAXE(BarType.STEEL, SmithingType.TYPE_PICKAXE, 1269, 30),
|
||||
|
||||
/**
|
||||
* Mithril Dagger
|
||||
|
|
@ -420,377 +420,377 @@ public enum Bars {
|
|||
/**
|
||||
* Mithril Hatchet
|
||||
*/
|
||||
MITHRIL_HATCHET(BarType.MITHRIL, SmithingType.TYPE_AXE, 1355, 51),
|
||||
MITHRIL_HATCHET(BarType.MITHRIL, SmithingType.TYPE_AXE, 1355, 50),
|
||||
|
||||
/**
|
||||
* Mithril Mace
|
||||
*/
|
||||
MITHRIL_MACE(BarType.MITHRIL, SmithingType.TYPE_MACE, 1428, 52),
|
||||
MITHRIL_MACE(BarType.MITHRIL, SmithingType.TYPE_MACE, 1428, 50),
|
||||
|
||||
/**
|
||||
* Mithril Med Helm
|
||||
*/
|
||||
MITHRIL_MED_HELM(BarType.MITHRIL, SmithingType.TYPE_MEDIUM_HELM, 1143, 53),
|
||||
MITHRIL_MED_HELM(BarType.MITHRIL, SmithingType.TYPE_MEDIUM_HELM, 1143, 50),
|
||||
|
||||
/**
|
||||
* Mithril Crossbow Bolt
|
||||
*/
|
||||
MITHRIL_CROSSBOW_BOLT(BarType.MITHRIL, SmithingType.TYPE_CROSSBOW_BOLT, 9379, 53),
|
||||
MITHRIL_CROSSBOW_BOLT(BarType.MITHRIL, SmithingType.TYPE_CROSSBOW_BOLT, 9379, 50),
|
||||
|
||||
/**
|
||||
* Mithril Sword
|
||||
*/
|
||||
MITHRIL_SWORD(BarType.MITHRIL, SmithingType.TYPE_SWORD, 1285, 54),
|
||||
MITHRIL_SWORD(BarType.MITHRIL, SmithingType.TYPE_SWORD, 1285, 50),
|
||||
|
||||
/**
|
||||
* Mithril Dart Tips
|
||||
*/
|
||||
MITHRIL_DART_TIPS(BarType.MITHRIL, SmithingType.TYPE_DART_TIP, 822, 54),
|
||||
MITHRIL_DART_TIPS(BarType.MITHRIL, SmithingType.TYPE_DART_TIP, 822, 50),
|
||||
|
||||
/**
|
||||
* Mithril Nails
|
||||
*/
|
||||
MITHRIL_NAILS(BarType.MITHRIL, SmithingType.TYPE_NAIL, 4822, 54),
|
||||
MITHRIL_NAILS(BarType.MITHRIL, SmithingType.TYPE_NAIL, 4822, 50),
|
||||
|
||||
/**
|
||||
* Mithril Arrow Tips
|
||||
*/
|
||||
MITHRIL_ARROW_TIPS(BarType.MITHRIL, SmithingType.TYPE_ARROW_TIP, 42, 55),
|
||||
MITHRIL_ARROW_TIPS(BarType.MITHRIL, SmithingType.TYPE_ARROW_TIP, 42, 50),
|
||||
|
||||
/**
|
||||
* Mithril Scimitar
|
||||
*/
|
||||
MITHRIL_SCIMITAR(BarType.MITHRIL, SmithingType.TYPE_SCIMITAR, 1329, 55),
|
||||
MITHRIL_SCIMITAR(BarType.MITHRIL, SmithingType.TYPE_SCIMITAR, 1329, 50),
|
||||
|
||||
/**
|
||||
* Mithril Crossbow Limbs
|
||||
*/
|
||||
MITHRIL_CROSSBOW_LIMBS(BarType.MITHRIL, SmithingType.TYPE_CROSSBOW_LIMB, 9427, 56),
|
||||
MITHRIL_CROSSBOW_LIMBS(BarType.MITHRIL, SmithingType.TYPE_CROSSBOW_LIMB, 9427, 50),
|
||||
|
||||
/**
|
||||
* Mithril LongSword
|
||||
*/
|
||||
MITHRIL_LONGSWORD(BarType.MITHRIL, SmithingType.TYPE_LONGSWORD, 1299, 56),
|
||||
MITHRIL_LONGSWORD(BarType.MITHRIL, SmithingType.TYPE_LONGSWORD, 1299, 50),
|
||||
|
||||
/**
|
||||
* Mithril Knife
|
||||
*/
|
||||
MITHRIL_KNIFE(BarType.MITHRIL, SmithingType.TYPE_THROWING_KNIFE, 866, 57),
|
||||
MITHRIL_KNIFE(BarType.MITHRIL, SmithingType.TYPE_THROWING_KNIFE, 866, 50),
|
||||
|
||||
/**
|
||||
* Mithril Full Helm
|
||||
*/
|
||||
MITHRIL_FULL_HELM(BarType.MITHRIL, SmithingType.TYPE_FULL_HELM, 1159, 57),
|
||||
MITHRIL_FULL_HELM(BarType.MITHRIL, SmithingType.TYPE_FULL_HELM, 1159, 50),
|
||||
|
||||
/**
|
||||
* Mithril SquareShield
|
||||
*/
|
||||
MITHRIL_SQUARE_SHIELD(BarType.MITHRIL, SmithingType.TYPE_SQUARE_SHIELD, 1181, 58),
|
||||
MITHRIL_SQUARE_SHIELD(BarType.MITHRIL, SmithingType.TYPE_SQUARE_SHIELD, 1181, 50),
|
||||
|
||||
/**
|
||||
* Mithril Grapple Tips
|
||||
*/
|
||||
MITHRIL_GRAPPLE_TIPS(BarType.MITHRIL, SmithingType.TYPE_GRAPPLE_TIP, 9416, 59),
|
||||
MITHRIL_GRAPPLE_TIPS(BarType.MITHRIL, SmithingType.TYPE_GRAPPLE_TIP, 9416, 50),
|
||||
|
||||
/**
|
||||
* Mithril Warhammer
|
||||
*/
|
||||
MITHRIL_WARHAMMER(BarType.MITHRIL, SmithingType.TYPE_WARHAMMER, 1343, 59),
|
||||
MITHRIL_WARHAMMER(BarType.MITHRIL, SmithingType.TYPE_WARHAMMER, 1343, 50),
|
||||
|
||||
/**
|
||||
* Mithril BattleAxe
|
||||
*/
|
||||
MITHRIL_BATTLEAXE(BarType.MITHRIL, SmithingType.TYPE_BATTLE_AXE, 1369, 60),
|
||||
MITHRIL_BATTLEAXE(BarType.MITHRIL, SmithingType.TYPE_BATTLE_AXE, 1369, 50),
|
||||
|
||||
/**
|
||||
* Mithril ChainBody
|
||||
*/
|
||||
MITHRIL_CHAINBODY(BarType.MITHRIL, SmithingType.TYPE_CHAINBODY, 1109, 61),
|
||||
MITHRIL_CHAINBODY(BarType.MITHRIL, SmithingType.TYPE_CHAINBODY, 1109, 50),
|
||||
|
||||
/**
|
||||
* Mithril KiteShield
|
||||
*/
|
||||
MITHRIL_KITE_SHIELD(BarType.MITHRIL, SmithingType.TYPE_KITE_SHIELD, 1197, 62),
|
||||
MITHRIL_KITE_SHIELD(BarType.MITHRIL, SmithingType.TYPE_KITE_SHIELD, 1197, 50),
|
||||
|
||||
/**
|
||||
* Mithril Claws
|
||||
*/
|
||||
MITHRIL_CLAWS(BarType.MITHRIL, SmithingType.TYPE_CLAWS, 3099, 63),
|
||||
MITHRIL_CLAWS(BarType.MITHRIL, SmithingType.TYPE_CLAWS, 3099, 50),
|
||||
|
||||
/**
|
||||
* Mithril 2H
|
||||
*/
|
||||
MITHRIL_TWO_HANDED_SWORD(BarType.MITHRIL, SmithingType.TYPE_TWO_HAND_SWORD, 1315, 64),
|
||||
MITHRIL_TWO_HANDED_SWORD(BarType.MITHRIL, SmithingType.TYPE_TWO_HAND_SWORD, 1315, 50),
|
||||
|
||||
/**
|
||||
* Mithril PlateSkirt
|
||||
*/
|
||||
MITHRIL_PLATESKIRT(BarType.MITHRIL, SmithingType.TYPE_PLATE_SKIRT, 1085, 66),
|
||||
MITHRIL_PLATESKIRT(BarType.MITHRIL, SmithingType.TYPE_PLATE_SKIRT, 1085, 50),
|
||||
|
||||
/**
|
||||
* Mithril PlateLegs
|
||||
*/
|
||||
MITHRIL_PLATELEGS(BarType.MITHRIL, SmithingType.TYPE_PLATELEG, 1071, 66),
|
||||
MITHRIL_PLATELEGS(BarType.MITHRIL, SmithingType.TYPE_PLATELEG, 1071, 50),
|
||||
|
||||
/**
|
||||
* Mithril PlateBody
|
||||
*/
|
||||
MITHRIL_PLATEBODY(BarType.MITHRIL, SmithingType.TYPE_PLATEBODY, 1121, 68),
|
||||
MITHRIL_PLATEBODY(BarType.MITHRIL, SmithingType.TYPE_PLATEBODY, 1121, 50),
|
||||
|
||||
/**
|
||||
* Mithril PickAxe
|
||||
*/
|
||||
MITHRIL_PICKAXE(BarType.MITHRIL, SmithingType.TYPE_PICKAXE, 1273, 55),
|
||||
MITHRIL_PICKAXE(BarType.MITHRIL, SmithingType.TYPE_PICKAXE, 1273, 50),
|
||||
|
||||
/**
|
||||
* Adamant Dagger
|
||||
*/
|
||||
ADAMANT_DAGGER(BarType.ADAMANT, SmithingType.TYPE_DAGGER, 1211, 70),
|
||||
ADAMANT_DAGGER(BarType.ADAMANT, SmithingType.TYPE_DAGGER, 1211, 60),
|
||||
|
||||
/**
|
||||
* Adamant Hatchet
|
||||
*/
|
||||
ADAMANT_AXE(BarType.ADAMANT, SmithingType.TYPE_AXE, 1357, 71),
|
||||
ADAMANT_AXE(BarType.ADAMANT, SmithingType.TYPE_AXE, 1357, 60),
|
||||
|
||||
/**
|
||||
* Adamant Mace
|
||||
*/
|
||||
ADAMANT_MACE(BarType.ADAMANT, SmithingType.TYPE_MACE, 1430, 72),
|
||||
ADAMANT_MACE(BarType.ADAMANT, SmithingType.TYPE_MACE, 1430, 60),
|
||||
|
||||
/**
|
||||
* Adamant Med Helm
|
||||
*/
|
||||
ADAMANT_MEDIUM_HELM(BarType.ADAMANT, SmithingType.TYPE_MEDIUM_HELM, 1145, 73),
|
||||
ADAMANT_MEDIUM_HELM(BarType.ADAMANT, SmithingType.TYPE_MEDIUM_HELM, 1145, 60),
|
||||
|
||||
/**
|
||||
* Adamant Crossbow Bolt
|
||||
*/
|
||||
ADAMANT_BOLT(BarType.ADAMANT, SmithingType.TYPE_CROSSBOW_BOLT, 9380, 73),
|
||||
ADAMANT_BOLT(BarType.ADAMANT, SmithingType.TYPE_CROSSBOW_BOLT, 9380, 60),
|
||||
|
||||
/**
|
||||
* Adamant Sword
|
||||
*/
|
||||
ADAMANT_SWORD(BarType.ADAMANT, SmithingType.TYPE_SWORD, 1287, 74),
|
||||
ADAMANT_SWORD(BarType.ADAMANT, SmithingType.TYPE_SWORD, 1287, 60),
|
||||
|
||||
/**
|
||||
* Adamant Dart Tips
|
||||
*/
|
||||
ADAMANT_DART_TIPS(BarType.ADAMANT, SmithingType.TYPE_DART_TIP, 823, 74),
|
||||
ADAMANT_DART_TIPS(BarType.ADAMANT, SmithingType.TYPE_DART_TIP, 823, 60),
|
||||
|
||||
/**
|
||||
* Adamant Nails
|
||||
*/
|
||||
ADAMANT_NAILS(BarType.ADAMANT, SmithingType.TYPE_NAIL, 4823, 74),
|
||||
ADAMANT_NAILS(BarType.ADAMANT, SmithingType.TYPE_NAIL, 4823, 60),
|
||||
|
||||
/**
|
||||
* Adamant Arrow Tips
|
||||
*/
|
||||
ADAMANT_ARROW_TIPS(BarType.ADAMANT, SmithingType.TYPE_ARROW_TIP, 43, 75),
|
||||
ADAMANT_ARROW_TIPS(BarType.ADAMANT, SmithingType.TYPE_ARROW_TIP, 43, 60),
|
||||
|
||||
/**
|
||||
* Adamant Scmitar
|
||||
*/
|
||||
ADAMANT_SCIMITAR(BarType.ADAMANT, SmithingType.TYPE_SCIMITAR, 1331, 75),
|
||||
ADAMANT_SCIMITAR(BarType.ADAMANT, SmithingType.TYPE_SCIMITAR, 1331, 60),
|
||||
|
||||
/**
|
||||
* Adamant Crossbow Limbs
|
||||
*/
|
||||
ADAMANT_LIMBS(BarType.ADAMANT, SmithingType.TYPE_CROSSBOW_LIMB, 9429, 76),
|
||||
ADAMANT_LIMBS(BarType.ADAMANT, SmithingType.TYPE_CROSSBOW_LIMB, 9429, 60),
|
||||
|
||||
/**
|
||||
* Adamant LongSword
|
||||
*/
|
||||
ADAMANT_LONGSWORD(BarType.ADAMANT, SmithingType.TYPE_LONGSWORD, 1301, 76),
|
||||
ADAMANT_LONGSWORD(BarType.ADAMANT, SmithingType.TYPE_LONGSWORD, 1301, 60),
|
||||
|
||||
/**
|
||||
* Adamant Knife
|
||||
*/
|
||||
ADAMANT_KNIFE(BarType.ADAMANT, SmithingType.TYPE_THROWING_KNIFE, 867, 77),
|
||||
ADAMANT_KNIFE(BarType.ADAMANT, SmithingType.TYPE_THROWING_KNIFE, 867, 60),
|
||||
|
||||
/**
|
||||
* Adamant Full Helm
|
||||
*/
|
||||
ADAMANT_FULL_HELM(BarType.ADAMANT, SmithingType.TYPE_FULL_HELM, 1161, 77),
|
||||
ADAMANT_FULL_HELM(BarType.ADAMANT, SmithingType.TYPE_FULL_HELM, 1161, 60),
|
||||
|
||||
/**
|
||||
* Adamant Square Shield
|
||||
*/
|
||||
ADAMANT_SQUARE_SHIELD(BarType.ADAMANT, SmithingType.TYPE_SQUARE_SHIELD, 1183, 78),
|
||||
ADAMANT_SQUARE_SHIELD(BarType.ADAMANT, SmithingType.TYPE_SQUARE_SHIELD, 1183, 60),
|
||||
|
||||
/**
|
||||
* Adamant Warhammer
|
||||
*/
|
||||
ADAMANT_WARHAMMER(BarType.ADAMANT, SmithingType.TYPE_WARHAMMER, 1345, 79),
|
||||
ADAMANT_WARHAMMER(BarType.ADAMANT, SmithingType.TYPE_WARHAMMER, 1345, 60),
|
||||
|
||||
/**
|
||||
* Adamant BattleAxe
|
||||
*/
|
||||
ADAMANT_BATTLEAXE(BarType.ADAMANT, SmithingType.TYPE_BATTLE_AXE, 1371, 80),
|
||||
ADAMANT_BATTLEAXE(BarType.ADAMANT, SmithingType.TYPE_BATTLE_AXE, 1371, 60),
|
||||
|
||||
/**
|
||||
* Adamant ChainBody
|
||||
*/
|
||||
ADAMANT_CHAINBODY(BarType.ADAMANT, SmithingType.TYPE_CHAINBODY, 1111, 81),
|
||||
ADAMANT_CHAINBODY(BarType.ADAMANT, SmithingType.TYPE_CHAINBODY, 1111, 60),
|
||||
|
||||
/**
|
||||
* Adamant KiteShield
|
||||
*/
|
||||
ADAMANT_KITESHIELD(BarType.ADAMANT, SmithingType.TYPE_KITE_SHIELD, 1199, 82),
|
||||
ADAMANT_KITESHIELD(BarType.ADAMANT, SmithingType.TYPE_KITE_SHIELD, 1199, 60),
|
||||
|
||||
/**
|
||||
* Adamant Claws
|
||||
*/
|
||||
ADAMANT_CLAWS(BarType.ADAMANT, SmithingType.TYPE_CLAWS, 3100, 83),
|
||||
ADAMANT_CLAWS(BarType.ADAMANT, SmithingType.TYPE_CLAWS, 3100, 60),
|
||||
|
||||
/**
|
||||
* Adamant 2H
|
||||
*/
|
||||
ADAMANT_TWO_HANDED_SWORD(BarType.ADAMANT, SmithingType.TYPE_TWO_HAND_SWORD, 1317, 84),
|
||||
ADAMANT_TWO_HANDED_SWORD(BarType.ADAMANT, SmithingType.TYPE_TWO_HAND_SWORD, 1317, 60),
|
||||
|
||||
/**
|
||||
* Adamant PlateSkirt
|
||||
*/
|
||||
ADAMANT_PLATE_SKIRT(BarType.ADAMANT, SmithingType.TYPE_PLATE_SKIRT, 1091, 86),
|
||||
ADAMANT_PLATE_SKIRT(BarType.ADAMANT, SmithingType.TYPE_PLATE_SKIRT, 1091, 60),
|
||||
|
||||
/**
|
||||
* Adamant PlateLegs
|
||||
*/
|
||||
ADAMANT_PLATE_LEGS(BarType.ADAMANT, SmithingType.TYPE_PLATELEG, 1073, 86),
|
||||
ADAMANT_PLATE_LEGS(BarType.ADAMANT, SmithingType.TYPE_PLATELEG, 1073, 60),
|
||||
|
||||
/**
|
||||
* Adamant PlateBody
|
||||
*/
|
||||
ADAMANT_PLATE_BODY(BarType.ADAMANT, SmithingType.TYPE_PLATEBODY, 1123, 88),
|
||||
ADAMANT_PLATE_BODY(BarType.ADAMANT, SmithingType.TYPE_PLATEBODY, 1123, 60),
|
||||
|
||||
/**
|
||||
* Adamant PickAxe
|
||||
*/
|
||||
ADAMANT_PICKAXE(BarType.ADAMANT, SmithingType.TYPE_PICKAXE, 1271, 75),
|
||||
ADAMANT_PICKAXE(BarType.ADAMANT, SmithingType.TYPE_PICKAXE, 1271, 60),
|
||||
|
||||
/**
|
||||
* Rune Dagger
|
||||
*/
|
||||
RUNE_DAGGER(BarType.RUNITE, SmithingType.TYPE_DAGGER, 1213, 85),
|
||||
RUNE_DAGGER(BarType.RUNITE, SmithingType.TYPE_DAGGER, 1213, 70),
|
||||
|
||||
/**
|
||||
* Rune Hatchet
|
||||
*/
|
||||
RUNITE_AXE(BarType.RUNITE, SmithingType.TYPE_AXE, 1359, 86),
|
||||
RUNITE_AXE(BarType.RUNITE, SmithingType.TYPE_AXE, 1359, 70),
|
||||
|
||||
/**
|
||||
* Rune Mace
|
||||
*/
|
||||
RUNITE_MACE(BarType.RUNITE, SmithingType.TYPE_MACE, 1432, 87),
|
||||
RUNITE_MACE(BarType.RUNITE, SmithingType.TYPE_MACE, 1432, 70),
|
||||
|
||||
/**
|
||||
* Rune Med Helm
|
||||
*/
|
||||
RUNITE_MEDIUM_HELM(BarType.RUNITE, SmithingType.TYPE_MEDIUM_HELM, 1147, 88),
|
||||
RUNITE_MEDIUM_HELM(BarType.RUNITE, SmithingType.TYPE_MEDIUM_HELM, 1147, 70),
|
||||
|
||||
/**
|
||||
* Rune Crossbow Bolt
|
||||
*/
|
||||
RUNITE_BOLT(BarType.RUNITE, SmithingType.TYPE_CROSSBOW_BOLT, 9381, 88),
|
||||
RUNITE_BOLT(BarType.RUNITE, SmithingType.TYPE_CROSSBOW_BOLT, 9381, 70),
|
||||
|
||||
/**
|
||||
* Rune Sword
|
||||
*/
|
||||
RUNITE_SWORD(BarType.RUNITE, SmithingType.TYPE_SWORD, 1289, 89),
|
||||
RUNITE_SWORD(BarType.RUNITE, SmithingType.TYPE_SWORD, 1289, 70),
|
||||
|
||||
/**
|
||||
* Rune Dart Tips
|
||||
*/
|
||||
RUNITE_DART_TIPS(BarType.RUNITE, SmithingType.TYPE_DART_TIP, 824, 89),
|
||||
RUNITE_DART_TIPS(BarType.RUNITE, SmithingType.TYPE_DART_TIP, 824, 70),
|
||||
|
||||
/**
|
||||
* Rune Nails
|
||||
*/
|
||||
RUNITE_NAILS(BarType.RUNITE, SmithingType.TYPE_NAIL, 4824, 89),
|
||||
RUNITE_NAILS(BarType.RUNITE, SmithingType.TYPE_NAIL, 4824, 70),
|
||||
|
||||
/**
|
||||
* Rune Arrow Tips
|
||||
*/
|
||||
RUNITE_ARROW_TIPS(BarType.RUNITE, SmithingType.TYPE_ARROW_TIP, 44, 90),
|
||||
RUNITE_ARROW_TIPS(BarType.RUNITE, SmithingType.TYPE_ARROW_TIP, 44, 70),
|
||||
|
||||
/**
|
||||
* Rune Scmitar
|
||||
*/
|
||||
RUNITE_SCIMITAR(BarType.RUNITE, SmithingType.TYPE_SCIMITAR, 1333, 90),
|
||||
RUNITE_SCIMITAR(BarType.RUNITE, SmithingType.TYPE_SCIMITAR, 1333, 70),
|
||||
|
||||
/**
|
||||
* Rune Crossbow Limbs
|
||||
*/
|
||||
RUNITE_LIMBS(BarType.RUNITE, SmithingType.TYPE_CROSSBOW_LIMB, 9431, 91),
|
||||
RUNITE_LIMBS(BarType.RUNITE, SmithingType.TYPE_CROSSBOW_LIMB, 9431, 70),
|
||||
|
||||
/**
|
||||
* Rune LongSword
|
||||
*/
|
||||
RUNITE_LONGSWORD(BarType.RUNITE, SmithingType.TYPE_LONGSWORD, 1303, 91),
|
||||
RUNITE_LONGSWORD(BarType.RUNITE, SmithingType.TYPE_LONGSWORD, 1303, 70),
|
||||
|
||||
/**
|
||||
* Rune Knife
|
||||
*/
|
||||
RUNITE_KNIFE(BarType.RUNITE, SmithingType.TYPE_THROWING_KNIFE, 868, 92),
|
||||
RUNITE_KNIFE(BarType.RUNITE, SmithingType.TYPE_THROWING_KNIFE, 868, 70),
|
||||
|
||||
/**
|
||||
* Rune Full Helm
|
||||
*/
|
||||
RUNITE_FULL_HELM(BarType.RUNITE, SmithingType.TYPE_FULL_HELM, 1163, 92),
|
||||
RUNITE_FULL_HELM(BarType.RUNITE, SmithingType.TYPE_FULL_HELM, 1163, 70),
|
||||
|
||||
/**
|
||||
* Rune Square Shield
|
||||
*/
|
||||
RUNITE_SQUARE_SHIELD(BarType.RUNITE, SmithingType.TYPE_SQUARE_SHIELD, 1185, 93),
|
||||
RUNITE_SQUARE_SHIELD(BarType.RUNITE, SmithingType.TYPE_SQUARE_SHIELD, 1185, 70),
|
||||
|
||||
/**
|
||||
* Rune Warhammer
|
||||
*/
|
||||
RUNITE_WARHAMMER(BarType.RUNITE, SmithingType.TYPE_WARHAMMER, 1347, 94),
|
||||
RUNITE_WARHAMMER(BarType.RUNITE, SmithingType.TYPE_WARHAMMER, 1347, 70),
|
||||
|
||||
/**
|
||||
* Rune BattleAxe
|
||||
*/
|
||||
RUNITE_BATTLEAXE(BarType.RUNITE, SmithingType.TYPE_BATTLE_AXE, 1373, 95),
|
||||
RUNITE_BATTLEAXE(BarType.RUNITE, SmithingType.TYPE_BATTLE_AXE, 1373, 70),
|
||||
|
||||
/**
|
||||
* Rune ChainBody
|
||||
*/
|
||||
RUNITE_CHAINBODY(BarType.RUNITE, SmithingType.TYPE_CHAINBODY, 1113, 96),
|
||||
RUNITE_CHAINBODY(BarType.RUNITE, SmithingType.TYPE_CHAINBODY, 1113, 70),
|
||||
|
||||
/**
|
||||
* Rune KiteShield
|
||||
*/
|
||||
RUNITE_KITESHIELD(BarType.RUNITE, SmithingType.TYPE_KITE_SHIELD, 1201, 97),
|
||||
RUNITE_KITESHIELD(BarType.RUNITE, SmithingType.TYPE_KITE_SHIELD, 1201, 70),
|
||||
|
||||
/**
|
||||
* Rune Claws
|
||||
*/
|
||||
RUNITE_CLAWS(BarType.RUNITE, SmithingType.TYPE_CLAWS, 3101, 98),
|
||||
RUNITE_CLAWS(BarType.RUNITE, SmithingType.TYPE_CLAWS, 3101, 70),
|
||||
|
||||
/**
|
||||
* Rune 2H
|
||||
*/
|
||||
RUNITE_TWO_HANDED_SWORD(BarType.RUNITE, SmithingType.TYPE_TWO_HAND_SWORD, 1319, 99),
|
||||
RUNITE_TWO_HANDED_SWORD(BarType.RUNITE, SmithingType.TYPE_TWO_HAND_SWORD, 1319, 70),
|
||||
|
||||
/**
|
||||
* Rune PlateSkirt
|
||||
*/
|
||||
RUNITE_PLATE_SKIRT(BarType.RUNITE, SmithingType.TYPE_PLATE_SKIRT, 1093, 99),
|
||||
RUNITE_PLATE_SKIRT(BarType.RUNITE, SmithingType.TYPE_PLATE_SKIRT, 1093, 70),
|
||||
|
||||
/**
|
||||
* Rune PlateLegs
|
||||
*/
|
||||
RUNITE_PLATE_LEGS(BarType.RUNITE, SmithingType.TYPE_PLATELEG, 1079, 99),
|
||||
RUNITE_PLATE_LEGS(BarType.RUNITE, SmithingType.TYPE_PLATELEG, 1079, 70),
|
||||
|
||||
/**
|
||||
* Rune PlateBody
|
||||
*/
|
||||
RUNITE_PLATE_BODY(BarType.RUNITE, SmithingType.TYPE_PLATEBODY, 1127, 99),
|
||||
RUNITE_PLATE_BODY(BarType.RUNITE, SmithingType.TYPE_PLATEBODY, 1127, 70),
|
||||
|
||||
/**
|
||||
* Rune PickAxe
|
||||
*/
|
||||
RUNITE_PICKAXE(BarType.RUNITE, SmithingType.TYPE_PICKAXE, 1275, 90),
|
||||
RUNITE_PICKAXE(BarType.RUNITE, SmithingType.TYPE_PICKAXE, 1275, 70),
|
||||
|
||||
/**
|
||||
* Blurite CrossBow bolts
|
||||
|
|
@ -800,7 +800,7 @@ public enum Bars {
|
|||
/**
|
||||
* Blurite Crossbow Limbs
|
||||
*/
|
||||
BLURITE_CROSSBOW_LIMBS(BarType.BLURITE, SmithingType.TYPE_CROSSBOW_LIMB, 9422, 13);
|
||||
BLURITE_CROSSBOW_LIMBS(BarType.BLURITE, SmithingType.TYPE_CROSSBOW_LIMB, 9422, 8);
|
||||
|
||||
/**
|
||||
* A map of object ids to primary ingredients.
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public enum SmithingType {
|
|||
/**
|
||||
* Crossbow bolt
|
||||
*/
|
||||
TYPE_CROSSBOW_BOLT(1, 50, 51, new int[] { 56, 55, 54, 53 }, 10),
|
||||
TYPE_CROSSBOW_BOLT(1, 50, 51, new int[] { 56, 55, 54, 53 }, 30),
|
||||
|
||||
/**
|
||||
* Sword
|
||||
|
|
@ -42,7 +42,7 @@ public enum SmithingType {
|
|||
/**
|
||||
* Dart tips
|
||||
*/
|
||||
TYPE_DART_TIP(1, 66, 67, new int[] { 72, 71, 70, 69 }, 10),
|
||||
TYPE_DART_TIP(1, 66, 67, new int[] { 72, 71, 70, 69 }, 30),
|
||||
|
||||
/**
|
||||
* Nails
|
||||
|
|
@ -66,7 +66,7 @@ public enum SmithingType {
|
|||
/**
|
||||
* Arrow Tips
|
||||
*/
|
||||
TYPE_ARROW_TIP(1, 106, 107, new int[] { 112, 111, 110, 109 }, 15),
|
||||
TYPE_ARROW_TIP(1, 106, 107, new int[] { 112, 111, 110, 109 }, 45),
|
||||
|
||||
/**
|
||||
* Scimitar
|
||||
|
|
@ -86,7 +86,7 @@ public enum SmithingType {
|
|||
/**
|
||||
* Throwing Knife
|
||||
*/
|
||||
TYPE_THROWING_KNIFE(1, 138, 139, new int[] { 144, 143, 142, 141 }, 5),
|
||||
TYPE_THROWING_KNIFE(1, 138, 139, new int[] { 144, 143, 142, 141 }, 15),
|
||||
|
||||
/**
|
||||
* Full helm
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ public enum Bar {
|
|||
STEEL(30, 17.5, new Item(2353, 1), new Item(453, 2), new Item(440, 1)),
|
||||
GOLD(40, 22.5, new Item(2357, 1), new Item(444, 1)),
|
||||
MITHRIL(50, 30, new Item(2359, 1), new Item(447, 1), new Item(453, 4)),
|
||||
ADAMANT(70, 37.5, new Item(2361, 1), new Item(449, 1), new Item(453, 6)),
|
||||
RUNITE(85, 50, new Item(2363, 1), new Item(451, 1), new Item(453, 8));
|
||||
ADAMANT(60, 37.5, new Item(2361, 1), new Item(449, 1), new Item(453, 6)),
|
||||
RUNITE(70, 50, new Item(2363, 1), new Item(451, 1), new Item(453, 8));
|
||||
|
||||
/**
|
||||
* The ore required.
|
||||
|
|
|
|||
|
|
@ -14,27 +14,27 @@ public enum SummoningPouch {
|
|||
/**
|
||||
* Represents a spirit wolf pouch.
|
||||
*/
|
||||
SPIRIT_WOLF_POUCH(0, 12047, 1, 4.8, 6829, 0.1, 1, false, new Item(12158), new Item(12155), new Item(2859), new Item(12183, 7)),
|
||||
SPIRIT_WOLF_POUCH(0, 12047, 1, 4.8, 6829, 0.1, 1, false, new Item(12158), new Item(12155), new Item(2859), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a dreadfowl pouch.
|
||||
*/
|
||||
DREADFOWL_POUCH(1, 12043, 4, 9.3, 6825, 0.1, 1, false, new Item(12158), new Item(12155), new Item(2138), new Item(12183, 8)),
|
||||
DREADFOWL_POUCH(1, 12043, 4, 9.3, 6825, 0.1, 1, false, new Item(12158), new Item(12155), new Item(2138), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit spider pouch.
|
||||
*/
|
||||
SPIRIT_SPIDER_POUCH(2, 12059, 10, 12.6, 6841, 0.2, 2, false, new Item(12158), new Item(12155), new Item(6291), new Item(12183, 8)),
|
||||
SPIRIT_SPIDER_POUCH(2, 12059, 10, 12.6, 6841, 0.2, 2, false, new Item(12158), new Item(12155), new Item(6291), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a thorny snail pouch.
|
||||
*/
|
||||
THORNY_SNAIL_POUCH(3, 12019, 13, 12.6, 6806, 0.2, 2, false, new Item(12158), new Item(12155), new Item(3363), new Item(12183, 9)),
|
||||
THORNY_SNAIL_POUCH(3, 12019, 13, 12.6, 6806, 0.2, 2, false, new Item(12158), new Item(12155), new Item(3363), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a granite crab pouch.
|
||||
*/
|
||||
GRANITE_CRAB_POUCH(4, 12009, 16, 21.6, 6796, 0.2, 2, false, new Item(12158), new Item(12155), new Item(440), new Item(12183, 7)),
|
||||
GRANITE_CRAB_POUCH(4, 12009, 16, 21.6, 6796, 0.2, 2, false, new Item(12158), new Item(12155), new Item(440), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit mosquito pouch.
|
||||
|
|
@ -44,97 +44,97 @@ public enum SummoningPouch {
|
|||
/**
|
||||
* Represents a desrrt wyrm pouch.
|
||||
*/
|
||||
DESERT_WYRM_POUCH(6, 12049, 18, 31.2, 6831, 0.4, 1, false, new Item(12159), new Item(12155), new Item(1783), new Item(12183, 45)),
|
||||
DESERT_WYRM_POUCH(6, 12049, 18, 31.2, 6831, 0.4, 1, false, new Item(12159), new Item(12155), new Item(1783), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit scorpion pouch.
|
||||
*/
|
||||
SPIRIT_SCORPION_POUCH(7, 12055, 19, 83.2, 6837, 0.9, 2, false, new Item(12160), new Item(12155), new Item(3095), new Item(12183, 57)),
|
||||
SPIRIT_SCORPION_POUCH(7, 12055, 19, 83.2, 6837, 0.9, 2, false, new Item(12160), new Item(12155), new Item(3095), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit tz-kih pouch.
|
||||
*/
|
||||
SPIRIT_TZ_KIH_POUCH(8, 12808, 22, 96.8, 7361, 1.1, 3, false, new Item(12160), new Item(12168), new Item(12155), new Item(12183, 64)),
|
||||
SPIRIT_TZ_KIH_POUCH(8, 12808, 22, 96.8, 7361, 1.1, 3, false, new Item(12160), new Item(12168), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an albino rat pouch.
|
||||
*/
|
||||
ALBINO_RAT_POUCH(9, 12067, 23, 202.4, 6847, 2.3, 1, false, new Item(12163), new Item(12155), new Item(2134), new Item(12183, 75)),
|
||||
ALBINO_RAT_POUCH(9, 12067, 23, 202.4, 6847, 2.3, 1, false, new Item(12163), new Item(12155), new Item(2134), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit kalphite pouch.
|
||||
*/
|
||||
SPIRIT_KALPHITE_POUCH(10, 12063, 25, 220, 6994, 2.5, 3,false, new Item(12163), new Item(12155), new Item(3138), new Item(12183, 51)),
|
||||
SPIRIT_KALPHITE_POUCH(10, 12063, 25, 220, 6994, 2.5, 3,false, new Item(12163), new Item(12155), new Item(3138), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a compost mound pouch.
|
||||
*/
|
||||
COMPOST_MOUND_POUCH(11, 12091, 28, 49.8, 6871, 0.6, 6, false, new Item(12159), new Item(12155), new Item(6032), new Item(12183, 47)),
|
||||
COMPOST_MOUND_POUCH(11, 12091, 28, 49.8, 6871, 0.6, 6, false, new Item(12159), new Item(12155), new Item(6032), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a giant chinchompa pouch.
|
||||
*/
|
||||
GIANT_CHINCHOMPA_POUCH(12, 12800, 29, 255.2, 7353, 2.9, 1, false, new Item(12163), new Item(12155), new Item(10033), new Item(12183, 84)),
|
||||
GIANT_CHINCHOMPA_POUCH(12, 12800, 29, 255.2, 7353, 2.9, 1, false, new Item(12163), new Item(12155), new Item(10033), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a vampire bat pouch.
|
||||
*/
|
||||
VAMPIRE_BAT_POUCH(13, 12053, 31, 136, 6835, 1.5, 4, false, new Item(12160), new Item(12155), new Item(3325), new Item(12183, 81)),
|
||||
VAMPIRE_BAT_POUCH(13, 12053, 31, 136, 6835, 1.5, 4, false, new Item(12160), new Item(12155), new Item(3325), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a honey badger pouch.
|
||||
*/
|
||||
HONEY_BADGER_POUCH(14, 12065, 32, 140.8, 6845, 1.6, 4, false, new Item(12160), new Item(12155), new Item(12156), new Item(12183, 84)),
|
||||
HONEY_BADGER_POUCH(14, 12065, 32, 140.8, 6845, 1.6, 4, false, new Item(12160), new Item(12155), new Item(12156), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a beaver pouch.
|
||||
*/
|
||||
BEAVER_POUCH(15, 12021, 33, 57.6, 6808, 0.7, 4, true, new Item(12159), new Item(12155), new Item(1519), new Item(12183, 72)),
|
||||
BEAVER_POUCH(15, 12021, 33, 57.6, 6808, 0.7, 4, true, new Item(12159), new Item(12155), new Item(1519), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a void ravager pouch.
|
||||
*/
|
||||
VOID_RAVAGER_POUCH(16, 12818, 34, 59.6, 7370, 0.7, 4, false, new Item(12159), new Item(12164), new Item(12155), new Item(12183, 74)),
|
||||
VOID_RAVAGER_POUCH(16, 12818, 34, 59.6, 7370, 0.7, 4, false, new Item(12159), new Item(12164), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a void spinner pouch.
|
||||
*/
|
||||
VOID_SPINNER_POUCH(17, 12780, 34, 59.6, 7333, 0.7, 4, true, new Item(12163), new Item(12166), new Item(12155), new Item(12183, 74)),
|
||||
VOID_SPINNER_POUCH(17, 12780, 34, 59.6, 7333, 0.7, 4, true, new Item(12163), new Item(12166), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a void torcher pouch.
|
||||
*/
|
||||
VOID_TORCHER_POUCH(18, 12798, 34, 59.6, 7351, 0.7, 4, false, new Item(12163), new Item(12167), new Item(12155), new Item(12183, 74)),
|
||||
VOID_TORCHER_POUCH(18, 12798, 34, 59.6, 7351, 0.7, 4, false, new Item(12163), new Item(12167), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a void shifter pouch.
|
||||
*/
|
||||
VOID_SHIFTER_POUCH(19, 12814, 34, 59.6, 7367, 0.7, 4, false, new Item(12163), new Item(12165), new Item(12155), new Item(12183, 74)),
|
||||
VOID_SHIFTER_POUCH(19, 12814, 34, 59.6, 7367, 0.7, 4, false, new Item(12163), new Item(12165), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a bronze minotaur pouch.
|
||||
*/
|
||||
BRONZE_MINOTAUR_POUCH(64, 12073, 36, 316.8, 6853, 3.6, 3, false, new Item(12163), new Item(12155), new Item(2349), new Item(12183, 102)),
|
||||
BRONZE_MINOTAUR_POUCH(64, 12073, 36, 316.8, 6853, 3.6, 3, false, new Item(12163), new Item(12155), new Item(2349), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an iron minotaur pouch.
|
||||
*/
|
||||
IRON_MINOTAUR_POUCH(65, 12075, 46, 404.8, 6855, 4.6, 9, false, new Item(12163), new Item(12155), new Item(2351), new Item(12183, 125)),
|
||||
IRON_MINOTAUR_POUCH(65, 12075, 46, 404.8, 6855, 4.6, 9, false, new Item(12163), new Item(12155), new Item(2351), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a steel minotaur pouch.
|
||||
*/
|
||||
STEEL_MINOTAUR_POUCH(66, 12077, 56, 492.8, 6857, 5.6, 9, false, new Item(12163), new Item(12155), new Item(2353), new Item(12183, 141)),
|
||||
STEEL_MINOTAUR_POUCH(66, 12077, 56, 492.8, 6857, 5.6, 9, false, new Item(12163), new Item(12155), new Item(2353), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a mithril minotaur pouch.
|
||||
*/
|
||||
MITHRIL_MINOTAUR_POUCH(67, 12079, 66, 580.8, 6859, 6.6, 9,false, new Item(12163), new Item(12155), new Item(2359), new Item(12183, 152)),
|
||||
MITHRIL_MINOTAUR_POUCH(67, 12079, 66, 580.8, 6859, 6.6, 9,false, new Item(12163), new Item(12155), new Item(2359), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an adamant minotaur pouch.
|
||||
*/
|
||||
ADAMANT_MINOTAUR_POUCH(68, 12081, 76, 668.8, 6861, 7.6, 9, false, new Item(12163), new Item(12155), new Item(2361), new Item(12183, 144)),
|
||||
ADAMANT_MINOTAUR_POUCH(68, 12081, 76, 668.8, 6861, 7.6, 9, false, new Item(12163), new Item(12155), new Item(2361), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a rune minotaur pouch.
|
||||
|
|
@ -144,132 +144,132 @@ public enum SummoningPouch {
|
|||
/**
|
||||
* Represents a bull ant pouch.
|
||||
*/
|
||||
BULL_ANT_POUCH(20, 12087, 40, 52.8, 6867, 0.6, 5, false, new Item(12158), new Item(12155), new Item(6010), new Item(12183, 11)),
|
||||
BULL_ANT_POUCH(20, 12087, 40, 52.8, 6867, 0.6, 5, false, new Item(12158), new Item(12155), new Item(6010), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a macaw pouch.
|
||||
*/
|
||||
MACAW_POUCH(21, 12071, 41, 72.4, 6851, 0.8, 5, true, new Item(12159), new Item(12155), new Item(249), new Item(12183, 78)),
|
||||
MACAW_POUCH(21, 12071, 41, 72.4, 6851, 0.8, 5, true, new Item(12159), new Item(12155), new Item(249), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an evil turnip pouch.
|
||||
*/
|
||||
EVIL_TURNIP_POUCH(22, 12051, 42, 184.8, 6833, 2.1, 5, false, new Item(12160), new Item(12155), new Item(12153), new Item(12183, 104)),
|
||||
EVIL_TURNIP_POUCH(22, 12051, 42, 184.8, 6833, 2.1, 5, false, new Item(12160), new Item(12155), new Item(12153), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit cockatrice pouch.
|
||||
*/
|
||||
SPIRIT_COCKATRICE_POUCH(23, 12095, 43, 75.2, 6875, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12109), new Item(12183, 88)),
|
||||
SPIRIT_COCKATRICE_POUCH(23, 12095, 43, 75.2, 6875, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12109), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit guthatrice pouch.
|
||||
*/
|
||||
SPIRIT_GUTHATRICE_POUCH(24, 12097, 43, 75.2, 6877, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12111), new Item(12183, 88)),
|
||||
SPIRIT_GUTHATRICE_POUCH(24, 12097, 43, 75.2, 6877, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12111), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit saratrice pouch.
|
||||
*/
|
||||
SPIRIT_SARATRICE_POUCH(25, 12099, 43, 75.2, 6879, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12113), new Item(12183, 88)),
|
||||
SPIRIT_SARATRICE_POUCH(25, 12099, 43, 75.2, 6879, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12113), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit zamatrice pouch.
|
||||
*/
|
||||
SPIRIT_ZAMATRICE_POUCH(26, 12101, 43, 75.2, 6881, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12115), new Item(12183, 88)),
|
||||
SPIRIT_ZAMATRICE_POUCH(26, 12101, 43, 75.2, 6881, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12115), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit pengatrice pouch.
|
||||
*/
|
||||
SPIRIT_PENGATRICE_POUCH(27, 12103, 43, 75.2, 6883, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12117), new Item(12183, 88)),
|
||||
SPIRIT_PENGATRICE_POUCH(27, 12103, 43, 75.2, 6883, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12117), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a coraxatrice pouch.
|
||||
*/
|
||||
SPIRIT_CORAXATRICE_POUCH(28, 12105, 43, 75.2, 6885, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12119), new Item(12183, 88)),
|
||||
SPIRIT_CORAXATRICE_POUCH(28, 12105, 43, 75.2, 6885, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12119), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a vulatrice pouch.
|
||||
*/
|
||||
SPIRIT_VULATRICE(29, 12107, 43, 75.2, 6887, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12121), new Item(12183, 88)),
|
||||
SPIRIT_VULATRICE(29, 12107, 43, 75.2, 6887, 0.9, 5, false, new Item(12159), new Item(12155), new Item(12121), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a pyrelord pouch.
|
||||
*/
|
||||
PYRELORD_POUCH(30, 12816, 46, 202.4, 7377, 2.3, 5, false, new Item(12160), new Item(12155), new Item(590), new Item(12183, 111)),
|
||||
PYRELORD_POUCH(30, 12816, 46, 202.4, 7377, 2.3, 5, false, new Item(12160), new Item(12155), new Item(590), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a magpie pouch.
|
||||
*/
|
||||
MAGPIE_POUCH(31, 12041, 47, 83.2, 6824, 0.9, 5, true, new Item(12159), new Item(12155), new Item(1635), new Item(12183, 88)),
|
||||
MAGPIE_POUCH(31, 12041, 47, 83.2, 6824, 0.9, 5, true, new Item(12159), new Item(12155), new Item(1635), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a bloated leech pouch.
|
||||
*/
|
||||
BLOATED_LEECH_POUCH(32, 12061, 49, 215.2, 6843, 2.4, 5, false, new Item(12160), new Item(12155), new Item(2132), new Item(12183, 117)),
|
||||
BLOATED_LEECH_POUCH(32, 12061, 49, 215.2, 6843, 2.4, 5, false, new Item(12160), new Item(12155), new Item(2132), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit terrorbird pouch.
|
||||
*/
|
||||
SPIRIT_TERRORBIRD_POUCH(33, 12007, 52, 68.4, 6794, 0.8, 6, true, new Item(12158), new Item(12155), new Item(9978), new Item(12183, 12)),
|
||||
SPIRIT_TERRORBIRD_POUCH(33, 12007, 52, 68.4, 6794, 0.8, 6, true, new Item(12158), new Item(12155), new Item(9978), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an abyssal parasite pouch.
|
||||
*/
|
||||
ABYSSAL_PARASITE_POUCH(34, true,12035, 54, 94.8, 6818, 1.1, 6, false, new Item(12159), new Item(12155), new Item(12161), new Item(12183, 106)),
|
||||
ABYSSAL_PARASITE_POUCH(34, true,12035, 54, 94.8, 6818, 1.1, 6, false, new Item(12159), new Item(12155), new Item(12161), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit jelly pouch.
|
||||
*/
|
||||
SPIRIT_JELLY_POUCH(35, 12027, 55, 484, 6992, 5.5, 6, false, new Item(12163), new Item(12155), new Item(1937), new Item(12183, 151)),
|
||||
SPIRIT_JELLY_POUCH(35, 12027, 55, 484, 6992, 5.5, 6, false, new Item(12163), new Item(12155), new Item(1937), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an ibis pouch.
|
||||
*/
|
||||
IBIS_POUCH(36, 12531, 56, 98.8, 6991, 1.1, 6, true, new Item(12159), new Item(12155), new Item(311), new Item(12183, 109)),
|
||||
IBIS_POUCH(36, 12531, 56, 98.8, 6991, 1.1, 6, true, new Item(12159), new Item(12155), new Item(311), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit kyatt pouch.
|
||||
*/
|
||||
SPIRIT_KYATT_POUCH(37, 12812, 57, 501.6, 7365, 5.7, 6, false, new Item(12163), new Item(12155), new Item(10103), new Item(12183, 153)),
|
||||
SPIRIT_KYATT_POUCH(37, 12812, 57, 501.6, 7365, 5.7, 6, false, new Item(12163), new Item(12155), new Item(10103), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit larupia pouch.
|
||||
*/
|
||||
SPIRIT_LARUPIA_POUCH(38, 12784, 57, 501.6, 7337, 5.7, 6, false, new Item(12163), new Item(12155), new Item(10095), new Item(12183, 155)),
|
||||
SPIRIT_LARUPIA_POUCH(38, 12784, 57, 501.6, 7337, 5.7, 6, false, new Item(12163), new Item(12155), new Item(10095), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit graahk pouch.
|
||||
*/
|
||||
SPIRIT_GRAAHK_POUCH(39, 12810, 57, 501.6, 7363, 5.7, 6, false, new Item(12163), new Item(12155), new Item(10099), new Item(12183, 154)),
|
||||
SPIRIT_GRAAHK_POUCH(39, 12810, 57, 501.6, 7363, 5.7, 6, false, new Item(12163), new Item(12155), new Item(10099), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a karamthulhu overlord pouch.
|
||||
*/
|
||||
KARAMTHULHU_POUCH(40, 12023, 58, 510.4, 6809, 5.8, 6, false, new Item(12163), new Item(12155), new Item(6667), new Item(12183, 144)),
|
||||
KARAMTHULHU_POUCH(40, 12023, 58, 510.4, 6809, 5.8, 6, false, new Item(12163), new Item(12155), new Item(6667), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a smoke devil pouch.
|
||||
*/
|
||||
SMOKE_DEVIL_POUCH(41, 12085, 61, 268, 6865, 3, 7, false, new Item(12160), new Item(12155), new Item(9736), new Item(12183, 141)),
|
||||
SMOKE_DEVIL_POUCH(41, 12085, 61, 268, 6865, 3, 7, false, new Item(12160), new Item(12155), new Item(9736), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an abyssal lurker pouch.
|
||||
*/
|
||||
ABYSSAL_LUKRER(42, true,12037, 62, 109.6, 6820, 1.9, 9, false, new Item(12159), new Item(12155), new Item(12161), new Item(12183, 119)),
|
||||
ABYSSAL_LUKRER(42, true,12037, 62, 109.6, 6820, 1.9, 9, false, new Item(12159), new Item(12155), new Item(12161), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit cobra pouch.
|
||||
*/
|
||||
SPIRIT_COBRA_POUCH(43, 12015, 63, 276.8, 6802, 3.1, 6, false, new Item(12160), new Item(12155), new Item(6287), new Item(12183, 116)),
|
||||
SPIRIT_COBRA_POUCH(43, 12015, 63, 276.8, 6802, 3.1, 6, false, new Item(12160), new Item(12155), new Item(6287), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a stranger plant pouch.
|
||||
*/
|
||||
STRANGER_PLANT_POUCH(44, 12045, 64, 281.6, 6827, 3.2, 6, false, new Item(12160), new Item(12155), new Item(8431), new Item(12183, 128)),
|
||||
STRANGER_PLANT_POUCH(44, 12045, 64, 281.6, 6827, 3.2, 6, false, new Item(12160), new Item(12155), new Item(8431), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a barker toad pouch.
|
||||
*/
|
||||
BARKER_TOAD_POUCH(45, 12123, 66, 87, 6889, 1, 7, false, new Item(12158), new Item(12155), new Item(2150), new Item(12183, 11)),
|
||||
BARKER_TOAD_POUCH(45, 12123, 66, 87, 6889, 1, 7, false, new Item(12158), new Item(12155), new Item(2150), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a war tortoise pouch.
|
||||
|
|
@ -279,62 +279,62 @@ public enum SummoningPouch {
|
|||
/**
|
||||
* Represents a bunyip pouch.
|
||||
*/
|
||||
BUNYIP_POUCH(47, 12029, 68, 119.2, 6813, 1.4, 7, true, new Item(12159), new Item(12155), new Item(383), new Item(12183, 110)),
|
||||
BUNYIP_POUCH(47, 12029, 68, 119.2, 6813, 1.4, 7, true, new Item(12159), new Item(12155), new Item(383), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a fruit bat pouch.
|
||||
*/
|
||||
FRUIT_BAT_POUCH(48, 12033, 69, 121.2, 6817, 1.4, 8, true, new Item(12159), new Item(12155), new Item(1963), new Item(12183, 130)),
|
||||
FRUIT_BAT_POUCH(48, 12033, 69, 121.2, 6817, 1.4, 8, true, new Item(12159), new Item(12155), new Item(1963), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a ravenous locust pouch.
|
||||
*/
|
||||
RAVENOUS_LOCUST_POUCH(49, 12820, 70, 132, 7372, 1.5, 4, false, new Item(12160), new Item(12155), new Item(1933), new Item(12183, 79)),
|
||||
RAVENOUS_LOCUST_POUCH(49, 12820, 70, 132, 7372, 1.5, 4, false, new Item(12160), new Item(12155), new Item(1933), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an arctic bear pouch.
|
||||
*/
|
||||
ARCTIC_BEAR_POUCH(50, 12057, 71, 93.2, 6839, 1.1, 8, false, new Item(12158), new Item(12155), new Item(10117), new Item(12183, 14)),
|
||||
ARCTIC_BEAR_POUCH(50, 12057, 71, 93.2, 6839, 1.1, 8, false, new Item(12158), new Item(12155), new Item(10117), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a Phoenix
|
||||
*/
|
||||
PHOENIX_POUCH(50, 14623, 72, 93.2, 8575, 1.1, 8, false, new Item(12160, 1), new Item(12183, 165), new Item(12155, 1), new Item(14616, 1)),
|
||||
PHOENIX_POUCH(50, 14623, 72, 93.2, 8575, 1.1, 8, false, new Item(12160, 1), new Item(12183, 1), new Item(12155, 1), new Item(14616, 1)),
|
||||
|
||||
/**
|
||||
* Represents an obsidian golem pouch.
|
||||
*/
|
||||
OBSIDIAN_GOLEM_POUCH(51, 12792, 73, 642.4, 7345, 7.3, 8, false, new Item(12163), new Item(12155), new Item(12168), new Item(12183, 195)),
|
||||
OBSIDIAN_GOLEM_POUCH(51, 12792, 73, 642.4, 7345, 7.3, 8, false, new Item(12163), new Item(12155), new Item(12168), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a granite lobster pouch.
|
||||
*/
|
||||
GRANITE_LOBSTER_POUCH(52, 12069, 74, 325.6, 6849, 3.7, 8, false, new Item(12160), new Item(12155), new Item(6979), new Item(12183, 166)),
|
||||
GRANITE_LOBSTER_POUCH(52, 12069, 74, 325.6, 6849, 3.7, 8, false, new Item(12160), new Item(12155), new Item(6979), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a praying mantis pouch.
|
||||
*/
|
||||
PRAYING_MANTIS_POUCH(53, 12011, 75, 329.6, 6798, 3.6, 8, false, new Item(12160), new Item(12155), new Item(2460), new Item(12183, 168)),
|
||||
PRAYING_MANTIS_POUCH(53, 12011, 75, 329.6, 6798, 3.6, 8, false, new Item(12160), new Item(12155), new Item(2460), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a forge regent pouch.
|
||||
*/
|
||||
FORGE_REGENT_BEAST(54, 12782, 76, 134, 7335, 1.5, 9, false, new Item(12159), new Item(12155), new Item(10020), new Item(12183, 141)),
|
||||
FORGE_REGENT_BEAST(54, 12782, 76, 134, 7335, 1.5, 9, false, new Item(12159), new Item(12155), new Item(10020), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a talon beast pouch.
|
||||
*/
|
||||
TALON_BEAST_POUCH(55, 12794, 77, 1015.2, 7347, 3.8, 9, false, new Item(12160), new Item(12155), new Item(12162), new Item(12183, 174)),
|
||||
TALON_BEAST_POUCH(55, 12794, 77, 1015.2, 7347, 3.8, 9, false, new Item(12160), new Item(12155), new Item(12162), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a giant ent pouch.
|
||||
*/
|
||||
GIANT_ENT_POUCH(56, 12013, 78, 136.8, 6800, 1.6, 8, false, new Item(12159), new Item(5933), new Item(12155), new Item(12183, 124)),
|
||||
GIANT_ENT_POUCH(56, 12013, 78, 136.8, 6800, 1.6, 8, false, new Item(12159), new Item(5933), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a hydra pouch.
|
||||
*/
|
||||
HYDRA_POUCH(60, 12025, 80, 140.8, 6811, 1.6, 9, false, new Item(12159), new Item(571), new Item(12155), new Item(12183, 128)),
|
||||
HYDRA_POUCH(60, 12025, 80, 140.8, 6811, 1.6, 9, false, new Item(12159), new Item(571), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a spirit dagannoth pouch.
|
||||
|
|
@ -344,62 +344,62 @@ public enum SummoningPouch {
|
|||
/**
|
||||
* Represents a unicorn stallion pouch.
|
||||
*/
|
||||
UNICORN_STALLION_POUCH(70, 12039, 88, 154.4, 6822, 1.8, 9, true, new Item(12159), new Item(237), new Item(12155), new Item(12183, 140)),
|
||||
UNICORN_STALLION_POUCH(70, 12039, 88, 154.4, 6822, 1.8, 9, true, new Item(12159), new Item(237), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a wolpertinger pouch.
|
||||
*/
|
||||
WOLPERTINGER_POUCH(72, 12089, 92, 404.8, 6869, 4.5, 10, false, new Item(12160), new Item(2859), new Item(3226), new Item(12155), new Item(12183, 203)),
|
||||
WOLPERTINGER_POUCH(72, 12089, 92, 404.8, 6869, 4.5, 10, false, new Item(12160), new Item(2859), new Item(3226), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a pack yak pouch.
|
||||
*/
|
||||
PACK_YAK_POUCH(75, 12093, 96, 422.4, 6873, 4.8, 10, true, new Item(12160), new Item(10818), new Item(12155), new Item(12183, 211)),
|
||||
PACK_YAK_POUCH(75, 12093, 96, 422.4, 6873, 4.8, 10, true, new Item(12160), new Item(10818), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a fire titan pouch.
|
||||
*/
|
||||
FIRE_TITAN_POUCH(57, 12802, 79, 695.2, 7355, 7.9, 9, false, new Item(12163), new Item(1442), new Item(12155), new Item(12183, 198)),
|
||||
FIRE_TITAN_POUCH(57, 12802, 79, 695.2, 7355, 7.9, 9, false, new Item(12163), new Item(1442), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a moss titan pouch.
|
||||
*/
|
||||
MOSS_TITAN_POUCH(58, 12804, 79, 695.2, 7357, 7.9, 9, false, new Item(12163), new Item(1440), new Item(12155), new Item(12183, 198)),
|
||||
MOSS_TITAN_POUCH(58, 12804, 79, 695.2, 7357, 7.9, 9, false, new Item(12163), new Item(1440), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an ice titan pouch.
|
||||
*/
|
||||
ICE_TITAN_POUCH(59, 12806, 79, 695.2, 7359, 7.9, 9, false, new Item(12163), new Item(1438), new Item(1444), new Item(12155), new Item(12183, 198)),
|
||||
ICE_TITAN_POUCH(59, 12806, 79, 695.2, 7359, 7.9, 9, false, new Item(12163), new Item(1438), new Item(1444), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a lava titan pouch.
|
||||
*/
|
||||
LAVA_TITAN_POUCH(62, 12788, 83, 730.4, 7341, 8.3, 9, false, new Item(12163), new Item(12168), new Item(12155), new Item(12183, 219)),
|
||||
LAVA_TITAN_POUCH(62, 12788, 83, 730.4, 7341, 8.3, 9, false, new Item(12163), new Item(12168), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a swamp titan pouch.
|
||||
*/
|
||||
SWAMP_TITAN_POUCH(63, 12776, 85, 373.6, 7329, 4.2, 9, false, new Item(12160), new Item(10149), new Item(12155), new Item(12183, 150)),
|
||||
SWAMP_TITAN_POUCH(63, 12776, 85, 373.6, 7329, 4.2, 9, false, new Item(12160), new Item(10149), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a geyser titan pouch.
|
||||
*/
|
||||
GEYSER_TITAN_POUCH(71, 12786, 89, 783.2, 7339, 8.9, 9, false, new Item(12163), new Item(1444), new Item(12155), new Item(12183, 222)),
|
||||
GEYSER_TITAN_POUCH(71, 12786, 89, 783.2, 7339, 8.9, 9, false, new Item(12163), new Item(1444), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an abyssal titan pouch.
|
||||
*/
|
||||
ABYSSAL_TITAN_POUCH(73, true,12796, 93, 163.2, 7349, 1.9, 10, false, new Item(12159), new Item(12161), new Item(12155), new Item(12183, 113)),
|
||||
ABYSSAL_TITAN_POUCH(73, true,12796, 93, 163.2, 7349, 1.9, 10, false, new Item(12159), new Item(12161), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents an iron titan pouch.
|
||||
*/
|
||||
IRON_TITAN_POUCH(74, 12822, 95, 417.6, 7375, 4.7, 10, false, new Item(12160), new Item(1115), new Item(12155), new Item(12183, 198)),
|
||||
IRON_TITAN_POUCH(74, 12822, 95, 417.6, 7375, 4.7, 10, false, new Item(12160), new Item(1115), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
/**
|
||||
* Represents a steel titan pouch.
|
||||
*/
|
||||
STEEL_TITAN_POUCH(76, 12790, 99, 435.2, 7343, 4.9, 10, false, new Item(12160), new Item(1119), new Item(12155), new Item(12183, 178)),
|
||||
STEEL_TITAN_POUCH(76, 12790, 99, 435.2, 7343, 4.9, 10, false, new Item(12160), new Item(1119), new Item(12155), new Item(12183, 1)),
|
||||
|
||||
SACRED_CLAY_POUCH_1(-1, 14422, 1, 0, 8240, 0, 1, false, new Item(14182)),
|
||||
SACRED_CLAY_POUCH_2(-1, 14424, 20, 0, 8242, 0, 3, false, new Item(14184)),
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class AbyssalLurkerNPC extends BurdenBeast {
|
|||
* @param id The id.
|
||||
*/
|
||||
public AbyssalLurkerNPC(Player owner, int id) {
|
||||
super(owner, id, 4100, 12037, 3, 7, WeaponInterface.STYLE_CAST);
|
||||
super(owner, id, 4100, 12037, 3, 24, WeaponInterface.STYLE_CAST);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public class AbyssalParasiteNPC extends BurdenBeast {
|
|||
* @param id The id.
|
||||
*/
|
||||
public AbyssalParasiteNPC(Player owner, int id) {
|
||||
super(owner, id, 3000, 12035, 1, 7);
|
||||
super(owner, id, 3000, 12035, 1, 18);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import org.rs09.consts.NPCs
|
|||
@Initializable
|
||||
class AbyssalTitanNPC
|
||||
constructor(owner: Player? = null, id: Int = NPCs.ABYSSAL_TITAN_7349) :
|
||||
BurdenBeast(owner, id, 3200, Items.ABYSSAL_TITAN_POUCH_12796, 6, 7, WeaponInterface.STYLE_ACCURATE) {
|
||||
BurdenBeast(owner, id, 3200, Items.ABYSSAL_TITAN_POUCH_12796, 6, 30, WeaponInterface.STYLE_ACCURATE) {
|
||||
override fun construct(owner: Player, id: Int): Familiar {
|
||||
return AbyssalTitanNPC(owner, id)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ public abstract class BurdenBeast extends Familiar {
|
|||
* @return {@code True} if so.
|
||||
*/
|
||||
public boolean isAllowed(Player owner, Item item) {
|
||||
/*
|
||||
if (item.getValue() > 50000) {
|
||||
owner.getPacketDispatch().sendMessage("This item is too valuable to trust to this familiar.");
|
||||
return false;
|
||||
|
|
@ -95,6 +96,7 @@ public abstract class BurdenBeast extends Familiar {
|
|||
owner.getPacketDispatch().sendMessage("You can't store " + item.getName().toLowerCase() + " in this familiar.");
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
if(SummoningPouch.get(this.getPouchId()).abyssal){
|
||||
if(!item.getName().toLowerCase().contains("essence")) {
|
||||
owner.getPacketDispatch().sendMessage("You can only give unnoted essence to this familiar.");
|
||||
|
|
|
|||
|
|
@ -177,7 +177,9 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
|||
if (pouchId == -1) {
|
||||
this.pointsPerTick = 0.0;
|
||||
} else {
|
||||
int drain = pouch.getLevelRequired() - pouch.getSummonCost() + 1;
|
||||
//int drain = pouch.getLevelRequired() - pouch.getSummonCost() + 1;
|
||||
// Snowscape: removing the initial drain and making it drain over the life of the familiar. Removing the +1 makes the final drain happen on the last tick of the familiar's life. That works for our new system, as the familiar timer won't start until that final tick happens.
|
||||
int drain = pouch.getLevelRequired();
|
||||
this.pointsPerTick = (double) drain / maximumTicks;
|
||||
}
|
||||
}
|
||||
|
|
@ -223,7 +225,10 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
|||
|
||||
@Override
|
||||
public void handleTickActions() {
|
||||
ticks--;
|
||||
//Snowscape: only count down the familiar timer if summoning points are zero
|
||||
if (owner.getSkills().getLevel(Skills.SUMMONING) == 0) {
|
||||
ticks--;
|
||||
}
|
||||
fracDrain += pointsPerTick;
|
||||
if (fracDrain > 1.0 && ticks > 0) {
|
||||
fracDrain -= 1.0;
|
||||
|
|
|
|||
|
|
@ -187,10 +187,12 @@ public final class FamiliarManager {
|
|||
player.getPacketDispatch().sendMessage("You need a Summoning level of " + pouch.getLevelRequired() + " to summon this familiar.");
|
||||
return;
|
||||
}
|
||||
/* Snowscape: removing the drain on summon. This drain will instead be added to the gradual drain over the familiar's life.
|
||||
if (player.getSkills().getLevel(Skills.SUMMONING) < pouch.getSummonCost()) {
|
||||
player.getPacketDispatch().sendMessage("You need at least " + pouch.getSummonCost() + " Summoning points to summon this familiar.");
|
||||
return;
|
||||
}
|
||||
*/
|
||||
final int npcId = pouch.getNpcId();
|
||||
Familiar fam = !renew ? FAMILIARS.get(npcId) : familiar;
|
||||
if (fam == null) {
|
||||
|
|
@ -208,7 +210,7 @@ public final class FamiliarManager {
|
|||
if (!player.getInventory().remove(item)) {
|
||||
return;
|
||||
}
|
||||
player.getSkills().updateLevel(Skills.SUMMONING, -pouch.getSummonCost(), 0);
|
||||
//player.getSkills().updateLevel(Skills.SUMMONING, -pouch.getSummonCost(), 0);
|
||||
player.getSkills().addExperience(Skills.SUMMONING, pouch.getSummonExperience());
|
||||
if (!renew) {
|
||||
familiar = fam;
|
||||
|
|
|
|||
|
|
@ -195,8 +195,9 @@ public final class VoidFamiliarNPC implements Plugin<Object> {
|
|||
public void handleFamiliarTick() {
|
||||
super.handleFamiliarTick();
|
||||
if (healDelay < GameWorld.getTicks()) {
|
||||
getSkills().heal(1);
|
||||
owner.getSkills().heal(1);
|
||||
healDelay = GameWorld.getTicks() + 25;
|
||||
owner.graphics(Graphics.create(1507), 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@ import core.game.node.entity.player.Player
|
|||
import core.game.node.item.Item
|
||||
import org.rs09.consts.Sounds
|
||||
|
||||
import core.game.interaction.InteractionListeners
|
||||
import core.game.world.GameWorld
|
||||
|
||||
class ThievingListeners : InteractionListener {
|
||||
|
||||
companion object {
|
||||
|
|
@ -64,6 +67,9 @@ class ThievingListeners : InteractionListener {
|
|||
player.sendMessage("You don't have enough inventory space to do that.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
//Custom portion. Repeat pickpocket, only proceed if it has been long enough since the last pickpocket action
|
||||
if (getAttribute(player, "pickpockettick", 0) <= GameWorld.ticks) {
|
||||
|
||||
player.animator.animate(PICKPOCKET_ANIM)
|
||||
val lootTable = pickpocketRoll(player, pickpocketData.low, pickpocketData.high, pickpocketData.table)
|
||||
|
|
@ -73,18 +79,24 @@ class ThievingListeners : InteractionListener {
|
|||
|
||||
playHurtAudio(player, 20)
|
||||
|
||||
stun(player, pickpocketData.stunTime)
|
||||
//stun(player, pickpocketData.stunTime)
|
||||
stun(player, 0)
|
||||
setAttribute(player, "pickpockettick", GameWorld.ticks + pickpocketData.stunTime)
|
||||
|
||||
player.impactHandler.manualHit(node.asNpc(),RandomFunction.random(pickpocketData.stunDamageMin,pickpocketData.stunDamageMax),ImpactHandler.HitsplatType.NORMAL)
|
||||
|
||||
node.asNpc().face(null)
|
||||
} else {
|
||||
playAudio(player, Sounds.PICK_2581)
|
||||
player.lock(2)
|
||||
//player.lock(2)
|
||||
setAttribute(player, "pickpockettick", GameWorld.ticks + 2)
|
||||
lootTable.forEach { player.inventory.add(it) }
|
||||
player.skills.addExperience(Skills.THIEVING,pickpocketData.experience)
|
||||
}
|
||||
|
||||
}
|
||||
//pickpocket again.
|
||||
InteractionListeners.run(node.id, IntType.NPC,"Pickpocket",player,node)
|
||||
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ public class MTAShop {
|
|||
/**
|
||||
* The prices.
|
||||
*/
|
||||
private static final int[][] PRICES = new int[][] { { 30, 30, 300, 30 }, { 60, 60, 600, 60 }, { 150, 200, 1500, 150 }, { 240, 240, 2400, 240 }, { 400, 450, 4000, 400 }, { 350, 400, 3000, 350 }, { 120, 120, 1200, 120 }, { 175, 225, 1500, 175 }, { 450, 500, 5000, 450 }, { 500, 550, 6000, 500 }, { 200, 300, 2000, 200 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 0, 0, 5, 0 }, { 0, 1, 5, 1 }, { 0, 1, 0, 1 }, { 2, 1, 20, 1 }, { 2, 0, 0, 0 }, { 2, 2, 25, 2 }, { 2, 2, 25, 2 } };
|
||||
|
||||
private static final int[][] PRICES = new int[][] { { 6, 6, 60, 6 }, { 12, 12, 120, 12 }, { 30, 40, 300, 30 }, { 48, 48, 480, 48 }, { 80, 90, 800, 80 }, { 70, 80, 600, 70 }, { 24, 24, 240, 24 }, { 35, 45, 300, 35 }, { 90, 100, 1000, 90 }, { 100, 110, 1200, 100 }, { 40, 60, 400, 40 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 1, 1, 15, 1 }, { 0, 0, 5, 0 }, { 0, 1, 5, 1 }, { 0, 1, 0, 1 }, { 2, 1, 20, 1 }, { 2, 0, 0, 0 }, { 2, 2, 25, 2 }, { 2, 2, 25, 2 } };
|
||||
|
||||
/**
|
||||
* The container.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -133,14 +133,14 @@ public final class PestControlActivityPlugin extends ActivityPlugin {
|
|||
// type,
|
||||
// default
|
||||
} else if (success && p.getAttribute("pc_zeal", 0) >= 50) {
|
||||
int amount = type.ordinal() + 2;
|
||||
int amount = type.ordinal() == 0 ? 10 : type.ordinal() == 1 ? 15 : 25;
|
||||
p.getSavedData().getActivityData().increasePestPoints(amount);
|
||||
Item coins = new Item(995, p.getProperties().getCurrentCombatLevel() * 10);
|
||||
if (!p.getInventory().add(coins)) {
|
||||
GroundItemManager.create(coins, p);
|
||||
}
|
||||
// default, type, name
|
||||
p.getDialogueInterpreter().open(3781, true, 1, type.ordinal() == 0 ? "two" : type.ordinal() == 1 ? "three" : "four");
|
||||
p.getDialogueInterpreter().open(3781, true, 1, type.ordinal() == 0 ? "ten" : type.ordinal() == 1 ? "fifteen" : "twenty-five");
|
||||
} else {
|
||||
// default type, default
|
||||
p.getDialogueInterpreter().open(3781, true, 2, true);
|
||||
|
|
|
|||
|
|
@ -192,13 +192,13 @@ public final class PCRewardInterface extends ComponentPlugin {
|
|||
*/
|
||||
public static double calculateExperience(final Player player, final int skillId) {
|
||||
int level = player.getSkills().getStaticLevel(skillId);
|
||||
double divideBy = 30;//17.5-33 ideal range
|
||||
double multiplier = 35;
|
||||
if (skillId == Skills.PRAYER) {
|
||||
divideBy = 67;// 34-75 ideal range
|
||||
multiplier = 18;
|
||||
} else if (skillId == Skills.MAGIC || skillId == Skills.RANGE) {
|
||||
divideBy = 29;//19.1-31 ideal range
|
||||
multiplier = 32;
|
||||
}
|
||||
return (int) ((level * level) / divideBy) * (player.getSkills().experienceMultiplier / 2);
|
||||
return (int) ((level * level) / 600) * (multiplier) / 5;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ import kotlin.collections.HashMap
|
|||
class CulinomancerShop : LoginListener {
|
||||
//Enable the chest if the player has 18 quest points or more
|
||||
override fun login(player: Player) {
|
||||
if(player.questRepository.points >= 18){
|
||||
if(player.questRepository.points >= 10){
|
||||
setVarbit(player, 1850, 5)
|
||||
setAttribute(player, "culino-tier", player.questRepository.points / 18) //Set this, so we can check if the player has gained a tier during server runtime
|
||||
setAttribute(player, "culino-tier", player.questRepository.points / 10) //Set this, so we can check if the player has gained a tier during server runtime
|
||||
|
||||
//Restock pulse for this player (yes, this means the chest will only restock if the player has logged in. Shop system needs work in order to do otherwise.)
|
||||
val restockPulse = object : Pulse(100){ //Run once a minute
|
||||
|
|
@ -49,7 +49,7 @@ class CulinomancerShop : LoginListener {
|
|||
fun getShop(player: Player, food: Boolean): Shop {
|
||||
val uid = player.details.uid
|
||||
val points = player.questRepository.points
|
||||
val tier = (points / 18)
|
||||
val tier = (points / 10)
|
||||
if (tier != getAttribute(player, "culino-tier", 0)) //If player tier has changed
|
||||
{
|
||||
foodShops.remove(uid) //Clear the previous shops, so they can regenerate with the new tier
|
||||
|
|
@ -69,7 +69,7 @@ class CulinomancerShop : LoginListener {
|
|||
//Generate default food stock based on an amount of total QP.
|
||||
private fun generateFoodStock(points: Int): Array<ShopItem> {
|
||||
val stock = Array(foodStock.size) { ShopItem(0, 0) }
|
||||
val maxQty = when (val qpTier = (points / 18) - 1) {
|
||||
val maxQty = when (val qpTier = (points / 10) - 1) {
|
||||
0, 1, 2, 3, 4 -> 1 + qpTier
|
||||
else -> qpTier + (qpTier + (qpTier - 5)) //5 = 10, 6 = 13, 7 = 15, etc
|
||||
}
|
||||
|
|
@ -83,14 +83,14 @@ class CulinomancerShop : LoginListener {
|
|||
//Generate default gear stock based on an amount of total QP.
|
||||
private fun generateGearStock(points: Int): Array<ShopItem> {
|
||||
val stock = Array(gearStock.size) { ShopItem(0, 0) }
|
||||
val qpTier = (points / 18)
|
||||
val qpTier = (points / 10)
|
||||
for ((index, item) in stock.withIndex()) item.itemId = gearStock[index]
|
||||
|
||||
for (i in 0 until min(qpTier, 10)) {
|
||||
stock[i].amount = 30
|
||||
stock[i + 10].amount = 5
|
||||
}
|
||||
stock[9].amount = 1
|
||||
//stock[9].amount = 1
|
||||
return stock
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,10 +85,12 @@ object NSUtils {
|
|||
fun castBloom(player: Player): Boolean{
|
||||
var success = false
|
||||
val region = forId(player.location.regionId)
|
||||
/*
|
||||
if (player.skills.prayerPoints < 1) {
|
||||
player.packetDispatch.sendMessage("You don't have enough prayer points to do this.")
|
||||
return false
|
||||
}
|
||||
*/
|
||||
handleVisuals(player)
|
||||
val locs = player.location.surroundingTiles
|
||||
for (o in locs) {
|
||||
|
|
@ -114,6 +116,17 @@ object NSUtils {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (success) {
|
||||
player.skills.decrementPrayerPoints(RandomFunction.random(1, 3).toDouble())
|
||||
} else {
|
||||
if (getAttribute(player, "bonecrusher:enabled", false)) {
|
||||
setAttribute(player, "/save:bonecrusher:enabled",false)
|
||||
player.packetDispatch.sendMessage("Automatic Bone Burial: Disabled.")
|
||||
} else {
|
||||
setAttribute(player, "/save:bonecrusher:enabled",true)
|
||||
player.packetDispatch.sendMessage("Automatic Bone Burial: Enabled.")
|
||||
}
|
||||
}
|
||||
return success
|
||||
}
|
||||
|
||||
|
|
@ -122,7 +135,6 @@ object NSUtils {
|
|||
* animation.
|
||||
*/
|
||||
private fun handleVisuals(player: Player) {
|
||||
player.skills.decrementPrayerPoints(RandomFunction.random(1, 3).toDouble())
|
||||
playAudio(player, Sounds.CAST_BLOOM_1493)
|
||||
val AROUND_YOU = player.location.surroundingTiles
|
||||
for (location in AROUND_YOU) {
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
case 33:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
interpreter.sendDialogues(1680, FacialExpression.HALF_GUILTY, "Ah, very well.", "I will sell you a new bow or shield for 900,000 coins.");
|
||||
interpreter.sendDialogues(1680, FacialExpression.HALF_GUILTY, "Ah, very well.", "I will make you a new bow from 3,600 Rune Arrows", "or a shield from 24 Rune Kiteshields.");
|
||||
stage = 37;
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -245,7 +245,7 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
}
|
||||
break;
|
||||
case 34:
|
||||
interpreter.sendOptions("Select an Option", "Recharge seed into bow", "Recharge seed into shield");
|
||||
interpreter.sendOptions("Select an Option", "Recharge seed into bow with 3000 Rune Arrows", "Recharge seed into shield with 20 Rune Kiteshields");
|
||||
stage = 35;
|
||||
break;
|
||||
case 35:
|
||||
|
|
@ -266,13 +266,13 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
stage = 500;
|
||||
}
|
||||
int timesRecharged = player.getAttribute("rovingelves:crystal-equip-recharges", 0);
|
||||
int price = crystalWeaponPrice(timesRecharged);
|
||||
if (!player.getInventory().contains(995, price)) {
|
||||
interpreter.sendDialogue(String.format("You don't have enough coins, you need %d.", price));
|
||||
int price = crystalBowPrice(false);
|
||||
if (!player.getInventory().contains(892, price)) {
|
||||
interpreter.sendDialogue(String.format("You don't have enough Rune Arrows, you need %d.", price));
|
||||
stage = 500;
|
||||
}
|
||||
if (player.getInventory().contains(995, price) && player.getInventory().contains(RovingElves.CRYSTAL_SEED.getId(), 1)) {
|
||||
if (player.getInventory().remove(RovingElves.CRYSTAL_SEED) && player.getInventory().remove(new Item(995, price))) {
|
||||
if (player.getInventory().contains(892, price) && player.getInventory().contains(RovingElves.CRYSTAL_SEED.getId(), 1)) {
|
||||
if (player.getInventory().remove(RovingElves.CRYSTAL_SEED) && player.getInventory().remove(new Item(892, price))) {
|
||||
player.getInventory().add(new Item(4214, 1));
|
||||
player.incrementAttribute("/save:rovingelves:crystal-equip-recharges", 1);
|
||||
end();
|
||||
|
|
@ -285,13 +285,13 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
stage = 500;
|
||||
}
|
||||
timesRecharged = player.getAttribute("rovingelves:crystal-equip-recharges", 0);
|
||||
price = crystalWeaponPrice(timesRecharged);
|
||||
if (!player.getInventory().contains(995, price)) {
|
||||
interpreter.sendDialogue("You don't have enough coins.");
|
||||
price = crystalShieldPrice(false);
|
||||
if (!player.getInventory().contains(1201, price)) {
|
||||
interpreter.sendDialogue(String.format("You don't have enough Rune Kiteshields, you need %d.", price));
|
||||
stage = 500;
|
||||
}
|
||||
if (player.getInventory().contains(995, price) && player.getInventory().contains(RovingElves.CRYSTAL_SEED.getId(), 1)) {
|
||||
if (player.getInventory().remove(RovingElves.CRYSTAL_SEED) && player.getInventory().remove(new Item(995, price))) {
|
||||
if (player.getInventory().contains(1201, price) && player.getInventory().contains(RovingElves.CRYSTAL_SEED.getId(), 1)) {
|
||||
if (player.getInventory().remove(RovingElves.CRYSTAL_SEED) && player.getInventory().remove(new Item(1201, price))) {
|
||||
player.getInventory().add(new Item(4225, 1));
|
||||
player.incrementAttribute("/save:rovingelves:crystal-equip-recharges", 1);
|
||||
end();
|
||||
|
|
@ -315,13 +315,13 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
}
|
||||
break;
|
||||
case 39:
|
||||
price = crystalWeaponPrice(0);
|
||||
if (!player.getInventory().contains(995, price)) {
|
||||
interpreter.sendDialogue("You don't have enough coins.");
|
||||
price = crystalBowPrice(true);
|
||||
if (!player.getInventory().contains(892, price)) {
|
||||
interpreter.sendDialogue(String.format("You don't have enough Rune Arrows, you need %d.", price));
|
||||
stage = 500;
|
||||
}
|
||||
if (player.getInventory().contains(995, price)) {
|
||||
if (player.getInventory().remove(new Item(995, price))) {
|
||||
if (player.getInventory().contains(892, price)) {
|
||||
if (player.getInventory().remove(new Item(892, price))) {
|
||||
if (!player.getInventory().add(new Item(4212, 1))) {
|
||||
GroundItemManager.create(new Item(4212, 1), player);
|
||||
}
|
||||
|
|
@ -330,13 +330,13 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
}
|
||||
break;
|
||||
case 40:
|
||||
price = crystalWeaponPrice(0);
|
||||
if (!player.getInventory().contains(995, price)) {
|
||||
interpreter.sendDialogue("You don't have enough coins.");
|
||||
price = crystalShieldPrice(true);
|
||||
if (!player.getInventory().contains(1201, price)) {
|
||||
interpreter.sendDialogue(String.format("You don't have enough Rune Kiteshields, you need %d.", price));
|
||||
stage = 500;
|
||||
}
|
||||
if (player.getInventory().contains(995, price)) {
|
||||
if (player.getInventory().remove(new Item(995, price))) {
|
||||
if (player.getInventory().contains(1201, price)) {
|
||||
if (player.getInventory().remove(new Item(1201, price))) {
|
||||
if (!player.getInventory().add(new Item(4224, 1))) {
|
||||
GroundItemManager.create(new Item(4224, 1), player);
|
||||
}
|
||||
|
|
@ -377,7 +377,21 @@ public class IslwynDialogue extends DialoguePlugin {
|
|||
}
|
||||
|
||||
// 900k for the 0th recharge (or for new bows), decreasing by 180k per recharge down to 180k
|
||||
public int crystalWeaponPrice(int timesRecharged) {
|
||||
return Math.max(900000 - 180000 * timesRecharged, 180000);
|
||||
//public int crystalWeaponPrice(int timesRecharged) {
|
||||
// return Math.max(900000 - 180000 * timesRecharged, 180000);
|
||||
//}
|
||||
public int crystalBowPrice(boolean isNew) {
|
||||
if (isNew) {
|
||||
return 3600;
|
||||
} else {
|
||||
return 3000;
|
||||
}
|
||||
}
|
||||
public int crystalShieldPrice(boolean isNew) {
|
||||
if (isNew) {
|
||||
return 24;
|
||||
} else {
|
||||
return 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -305,7 +305,16 @@ fun hasGodItem(player: Player, god: God): Boolean {
|
|||
*/
|
||||
fun shouldRemoveNothings(player: Player) : Boolean {
|
||||
val ring = getItemFromEquipment(player, EquipmentSlot.RING)
|
||||
return ring != null && ring.id in Items.RING_OF_WEALTH_14638..Items.RING_OF_WEALTH4_14646
|
||||
if (getAttribute(player, "ringofwealth:unlocked", false)){
|
||||
player.sendMessage("<col=ffd700>Your Wealth enchantment coaxes a rare drop from your opponent.</col>")
|
||||
return true
|
||||
} else if (ring != null && ring.id in Items.RING_OF_WEALTH_14638..Items.RING_OF_WEALTH4_14646) {
|
||||
player.sendMessage("<col=ffd700>Your Ring of Wealth coaxes a rare drop from your opponent.</col>")
|
||||
player.sendMessage("The magic in the ring reminds you of the High Level Alchemy spell for some reason.")
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -154,8 +154,8 @@ open class SkillDialogueHandler(
|
|||
// "Make 5 sets" Option
|
||||
3 -> 5
|
||||
// "Make 10 sets" Option
|
||||
2 -> 10
|
||||
else -> 10
|
||||
2 -> 30
|
||||
else -> 30
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -182,7 +182,7 @@ open class SkillDialogueHandler(
|
|||
when (buttonId) {
|
||||
6, 10 -> return 1
|
||||
5, 9 -> return 5
|
||||
4, 8 -> return 10
|
||||
4, 8 -> return 30
|
||||
3, 7 -> return -1
|
||||
}
|
||||
return 1
|
||||
|
|
@ -211,7 +211,7 @@ open class SkillDialogueHandler(
|
|||
when (buttonId) {
|
||||
7, 11, 15 -> return 1
|
||||
6, 10, 14 -> return 5
|
||||
5, 9, 13 -> return 10
|
||||
5, 9, 13 -> return 30
|
||||
4, 8, 12 -> return -1
|
||||
}
|
||||
return 1
|
||||
|
|
@ -241,7 +241,7 @@ open class SkillDialogueHandler(
|
|||
when (buttonId) {
|
||||
8, 12, 16, 20 -> return 1
|
||||
7, 11, 15, 19 -> return 5
|
||||
6, 10, 14, 18 -> return 10
|
||||
6, 10, 14, 18 -> return 30
|
||||
5, 9, 13, 17 -> return -1
|
||||
}
|
||||
return 1
|
||||
|
|
@ -278,7 +278,7 @@ open class SkillDialogueHandler(
|
|||
when (buttonId) {
|
||||
9, 13, 17, 21, 25 -> return 1
|
||||
8, 12, 16, 20, 24 -> return 5
|
||||
7, 11, 15, 19, 23 -> return 10
|
||||
7, 11, 15, 19, 23 -> return 30
|
||||
6, 10, 14, 18, 22 -> return -1
|
||||
}
|
||||
return 1
|
||||
|
|
|
|||
|
|
@ -46,10 +46,20 @@ public final class WeaponInterface extends Component {
|
|||
private static final int[] SLAYER_STAFF_SPELL_IDS = { 22, 31, 45, 48, 52, 55 };
|
||||
|
||||
/**
|
||||
* The void staff spell ids
|
||||
* The void and guthix staff spell ids
|
||||
*/
|
||||
private static final int[] VOID_STAFF_SPELL_IDS = { 22, 42, 45, 48, 52, 55 };
|
||||
|
||||
/**
|
||||
* The saradomin staff spell ids
|
||||
*/
|
||||
private static final int[] SARADOMIN_STAFF_SPELL_IDS = { 22, 41, 45, 48, 52, 55 };
|
||||
|
||||
/**
|
||||
* The zamorak staff spell ids
|
||||
*/
|
||||
private static final int[] ZAMORAK_STAFF_SPELL_IDS = { 22, 43, 45, 48, 52, 55 };
|
||||
|
||||
/**
|
||||
* The default attack animations.
|
||||
*/
|
||||
|
|
@ -333,13 +343,23 @@ public final class WeaponInterface extends Component {
|
|||
* @return The component id for the autocast select tab.
|
||||
*/
|
||||
public int getAutospellId(int spellId) {
|
||||
boolean modern = player.getSpellBookManager().getSpellBook() == Components.MAGIC_192;
|
||||
int[] data = modern ? MODERN_SPELL_IDS : ANCIENT_SPELL_IDS;
|
||||
if (modern && player.getEquipment().getNew(3).getName().equalsIgnoreCase("Slayer's staff")) {
|
||||
//boolean modern = player.getSpellBookManager().getSpellBook() == Components.MAGIC_192;
|
||||
boolean modern = !player.getEquipment().getNew(3).getName().equalsIgnoreCase("Ancient Staff") && !player.getEquipment().getNew(3).getName().contains("uriel's staff");
|
||||
int[] data = MODERN_SPELL_IDS;
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Ancient Staff") || player.getEquipment().getNew(3).getName().contains("uriel's staff")) {
|
||||
data = ANCIENT_SPELL_IDS;
|
||||
}
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Slayer's staff")) {
|
||||
data = SLAYER_STAFF_SPELL_IDS;
|
||||
}
|
||||
if (modern && player.getEquipment().getNew(3).getName().equalsIgnoreCase("Void knight mace")) {
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Void knight mace") || player.getEquipment().getNew(3).getName().equalsIgnoreCase("Guthix Staff")) {
|
||||
data = VOID_STAFF_SPELL_IDS;
|
||||
}
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Saradomin Staff")) {
|
||||
data = SARADOMIN_STAFF_SPELL_IDS;
|
||||
}
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Zamorak Staff")) {
|
||||
data = ZAMORAK_STAFF_SPELL_IDS;
|
||||
}
|
||||
for (int i = 0; i < data.length; i++) {
|
||||
if (data[i] == spellId) {
|
||||
|
|
@ -355,14 +375,24 @@ public final class WeaponInterface extends Component {
|
|||
* @param adjustAttackStyle If the attack style should be adjusted.
|
||||
*/
|
||||
public void selectAutoSpell(int buttonId, boolean adjustAttackStyle) {
|
||||
boolean modern = player.getSpellBookManager().getSpellBook() == Components.MAGIC_192;
|
||||
int[] data = modern ? MODERN_SPELL_IDS : ANCIENT_SPELL_IDS;
|
||||
if (modern && player.getEquipment().getNew(3).getName().equalsIgnoreCase("Slayer's staff")) {
|
||||
//boolean modern = player.getSpellBookManager().getSpellBook() == Components.MAGIC_192;
|
||||
boolean modern = !player.getEquipment().getNew(3).getName().equalsIgnoreCase("Ancient Staff") && !player.getEquipment().getNew(3).getName().contains("uriel's staff");
|
||||
int[] data = MODERN_SPELL_IDS;
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Ancient staff") || player.getEquipment().getNew(3).getName().contains("uriel's staff")) {
|
||||
data = ANCIENT_SPELL_IDS;
|
||||
}
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Slayer's staff")) {
|
||||
data = SLAYER_STAFF_SPELL_IDS;
|
||||
}
|
||||
if (modern && player.getEquipment().getNew(3).getName().equalsIgnoreCase("Void knight mace")) {
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Void knight mace") || modern && player.getEquipment().getNew(3).getName().equalsIgnoreCase("Guthix Staff")) {
|
||||
data = VOID_STAFF_SPELL_IDS;
|
||||
}
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Saradomin Staff")) {
|
||||
data = SARADOMIN_STAFF_SPELL_IDS;
|
||||
}
|
||||
if (player.getEquipment().getNew(3).getName().equalsIgnoreCase("Zamorak Staff")) {
|
||||
data = ZAMORAK_STAFF_SPELL_IDS;
|
||||
}
|
||||
CombatSpell current = player.getProperties().getAutocastSpell();
|
||||
if (buttonId >= data.length) {
|
||||
return;
|
||||
|
|
@ -455,15 +485,20 @@ public final class WeaponInterface extends Component {
|
|||
return;
|
||||
}
|
||||
player.setAttribute("autocast_select", true);
|
||||
int id = player.getSpellBookManager().getSpellBook() == 193 ? 797 : 319;
|
||||
//int id = player.getSpellBookManager().getSpellBook() == 193 ? 797 : 319;
|
||||
int id = 319;
|
||||
boolean ancient = player.getEquipment().getNew(3).getName().equalsIgnoreCase("Ancient staff") || player.getEquipment().getNew(3).getName().contains("uriel's staff");
|
||||
boolean slayer = player.getEquipment().getNew(3).getName().equalsIgnoreCase("Slayer's staff");
|
||||
boolean mace = player.getEquipment().getNew(3).getName().equalsIgnoreCase("Void knight mace");
|
||||
boolean mace = player.getEquipment().getNew(3).getName().equalsIgnoreCase("Void knight mace") || player.getEquipment().getNew(3).getName().equalsIgnoreCase("Guthix Staff") || player.getEquipment().getNew(3).getName().equalsIgnoreCase("Saradomin Staff") || player.getEquipment().getNew(3).getName().equalsIgnoreCase("Zamorak Staff");
|
||||
if (slayer) {
|
||||
id = 310;
|
||||
}
|
||||
if (mace) {
|
||||
id = 406;
|
||||
}
|
||||
if (ancient) {
|
||||
id = 797;
|
||||
}
|
||||
Component component = new Component(id);
|
||||
component.getDefinition().setTabIndex(0);
|
||||
component.getDefinition().setType(InterfaceType.TAB);
|
||||
|
|
@ -480,7 +515,7 @@ public final class WeaponInterface extends Component {
|
|||
if (current != WeaponInterfaces.STAFF) {
|
||||
return false;
|
||||
}
|
||||
if (player.getSpellBookManager().getSpellBook() == SpellBookManager.SpellBook.LUNAR.getInterfaceId()) {
|
||||
/* if (player.getSpellBookManager().getSpellBook() == SpellBookManager.SpellBook.LUNAR.getInterfaceId()) {
|
||||
if (message) {
|
||||
player.getPacketDispatch().sendMessage("You can't autocast Lunar magic.");
|
||||
}
|
||||
|
|
@ -492,7 +527,7 @@ public final class WeaponInterface extends Component {
|
|||
player.getPacketDispatch().sendMessage("You can only autocast ancient magicks with an Ancient or Zuriel's staff.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} */
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,19 +3,19 @@ package core.game.node.entity.combat.graves
|
|||
import org.rs09.consts.NPCs
|
||||
|
||||
enum class GraveType(val npcId: Int, val cost: Int, val durationMinutes: Int, val isMembers: Boolean, val requiredQuest: String = "", val text: String) {
|
||||
MEM_PLAQUE(NPCs.GRAVE_MARKER_6565, 0, 2, false, text = "In memory of @name,<br>who died here."),
|
||||
FLAG(NPCs.GRAVE_MARKER_6568, 50, 2, false, text = MEM_PLAQUE.text),
|
||||
SMALL_GS(NPCs.GRAVESTONE_6571, 500, 2, false, text = "In loving memory of our dear friend @name,<br>who died in this place @mins ago."),
|
||||
ORNATE_GS(NPCs.GRAVESTONE_6574, 5000, 3, false, text = SMALL_GS.text),
|
||||
FONT_OF_LIFE(NPCs.GRAVESTONE_6577, 50000, 4, true, text = "In your travels,<br>pause awhile to remember @name,<br>who passed away at this spot."),
|
||||
STELE(NPCs.STELE_6580, 50000, 4, true, text = FONT_OF_LIFE.text),
|
||||
SARA_SYMBOL(NPCs.SARADOMIN_SYMBOL_6583, 50000, 4, true, text = "@name,<br>an enlightened servant of Saradomin,<br>perished in this place."),
|
||||
ZAM_SYMBOL(NPCs.ZAMORAK_SYMBOL_6586, 50000, 4, true, text = "@name,<br>a most bloodthirsty follower of Zamorak,<br>perished in this place."),
|
||||
GUTH_SYMBOL(NPCs.GUTHIX_SYMBOL_6589, 50000, 4, true, text = "@name,<br>who walked with the Balance of Guthix,<br>perished in this place."),
|
||||
BAND_SYMBOL(NPCs.BANDOS_SYMBOL_6592, 50000, 4, true, requiredQuest = "Land of the Goblins", text = "@name,<br>a vicious warrior dedicated to Bandos,<br>perished in this place. "),
|
||||
ARMA_SYMBOL(NPCs.ARMADYL_SYMBOL_6595, 50000, 4, true, requiredQuest = "Temple of Ikov", text = "@name,<br>a follower of the Law of Armadyl,<br>perished in this place."),
|
||||
ZARO_SYMBOL(NPCs.MEMORIAL_STONE_6598, 50000, 4, true, requiredQuest = "Desert Treasure", text = "@name,<br>servant of the Unknown Power,<br>perished in this place."),
|
||||
ANGEL_DEATH(NPCs.MEMORIAL_STONE_6601, 500000, 5, true, text = "Ye frail mortals who gaze upon this sight,<br>forget not the fate of @name, once mighty, now<br>surrendered to the inescapable grasp of destiny.<br><i>Requiescat in pace.</i>");
|
||||
MEM_PLAQUE(NPCs.GRAVE_MARKER_6565, 0, 5, false, text = "In memory of @name,<br>who died here."),
|
||||
FLAG(NPCs.GRAVE_MARKER_6568, 50, 10, false, text = MEM_PLAQUE.text),
|
||||
SMALL_GS(NPCs.GRAVESTONE_6571, 500, 15, false, text = "In loving memory of our dear friend @name,<br>who died in this place @mins ago."),
|
||||
ORNATE_GS(NPCs.GRAVESTONE_6574, 5000, 30, false, text = SMALL_GS.text),
|
||||
FONT_OF_LIFE(NPCs.GRAVESTONE_6577, 50000, 45, true, text = "In your travels,<br>pause awhile to remember @name,<br>who passed away at this spot."),
|
||||
STELE(NPCs.STELE_6580, 50000, 45, true, text = FONT_OF_LIFE.text),
|
||||
SARA_SYMBOL(NPCs.SARADOMIN_SYMBOL_6583, 50000, 45, true, text = "@name,<br>an enlightened servant of Saradomin,<br>perished in this place."),
|
||||
ZAM_SYMBOL(NPCs.ZAMORAK_SYMBOL_6586, 50000, 45, true, text = "@name,<br>a most bloodthirsty follower of Zamorak,<br>perished in this place."),
|
||||
GUTH_SYMBOL(NPCs.GUTHIX_SYMBOL_6589, 50000, 45, true, text = "@name,<br>who walked with the Balance of Guthix,<br>perished in this place."),
|
||||
BAND_SYMBOL(NPCs.BANDOS_SYMBOL_6592, 50000, 45, true, requiredQuest = "Land of the Goblins", text = "@name,<br>a vicious warrior dedicated to Bandos,<br>perished in this place. "),
|
||||
ARMA_SYMBOL(NPCs.ARMADYL_SYMBOL_6595, 50000, 45, true, requiredQuest = "Temple of Ikov", text = "@name,<br>a follower of the Law of Armadyl,<br>perished in this place."),
|
||||
ZARO_SYMBOL(NPCs.MEMORIAL_STONE_6598, 50000, 45, true, requiredQuest = "Desert Treasure", text = "@name,<br>servant of the Unknown Power,<br>perished in this place."),
|
||||
ANGEL_DEATH(NPCs.MEMORIAL_STONE_6601, 500000, 60, true, text = "Ye frail mortals who gaze upon this sight,<br>forget not the fate of @name, once mighty, now<br>surrendered to the inescapable grasp of destiny.<br><i>Requiescat in pace.</i>");
|
||||
|
||||
companion object {
|
||||
val ids = values().fold(ArrayList<Int>()) {list, type ->
|
||||
|
|
|
|||
|
|
@ -156,10 +156,20 @@ public abstract class CombatSpell extends MagicSpell {
|
|||
}
|
||||
if (entity.getProperties().getAutocastSpell() == this && (entity instanceof Player || animation == null)) {
|
||||
Player p = entity.asPlayer();
|
||||
if (p.getProperties().getAutocastSpell().getSpellId() == 31) {
|
||||
entity.animate(new Animation(1576));
|
||||
} else {
|
||||
entity.animate(AUTOCAST_ANIMATION);
|
||||
switch(p.getProperties().getAutocastSpell().getSpellId()) {
|
||||
case 31:
|
||||
entity.animate(new Animation(1576, Priority.HIGH));
|
||||
break;
|
||||
case 41:
|
||||
case 42:
|
||||
case 43:
|
||||
entity.animate(new Animation(811, Priority.HIGH));
|
||||
break;
|
||||
case 29:
|
||||
entity.animate(new Animation(708, Priority.HIGH));
|
||||
break;
|
||||
default:
|
||||
entity.animate(AUTOCAST_ANIMATION);
|
||||
}
|
||||
} else {
|
||||
if (entity instanceof NPC) {
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ public abstract class MagicSpell implements Plugin<SpellType> {
|
|||
if (!checkLevelRequirement(caster, message)) {
|
||||
return false;
|
||||
}
|
||||
/* Snowscape custom. Removing this allows guthix staff to autocast claws of guthix.
|
||||
if (caster instanceof Player) {
|
||||
CombatSpell spell = ((Player) caster).getProperties().getAutocastSpell();
|
||||
if (spell != null) {
|
||||
|
|
@ -212,6 +213,7 @@ public abstract class MagicSpell implements Plugin<SpellType> {
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
if((spellId == 12 || spellId == 30 || spellId == 56) && caster instanceof Player){
|
||||
if (caster.getAttribute("entangleDelay", 0) > GameWorld.getTicks()) {
|
||||
caster.asPlayer().sendMessage("You have recently cast a binding spell.");
|
||||
|
|
@ -220,12 +222,12 @@ public abstract class MagicSpell implements Plugin<SpellType> {
|
|||
}
|
||||
if (caster instanceof Player) {
|
||||
Player p = (Player) caster;
|
||||
if(p.getEquipment().get(3) != null && p.getEquipment().get(3).getId() == 14726){
|
||||
if(RandomFunction.getRandom(100) < 13){
|
||||
p.sendMessage("Your staff negates the rune requirement of the spell.");
|
||||
//if(p.getEquipment().get(3) != null && p.getEquipment().get(3).getId() == 14726){
|
||||
if(this instanceof CombatSpell && RandomFunction.getRandom(100) > 33){
|
||||
//p.sendMessage("Your staff negates the rune requirement of the spell.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//}
|
||||
if (runes == null) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,11 @@ public enum SpellType {
|
|||
CRUMBLE_UNDEAD(1.2) {
|
||||
@Override
|
||||
public int getImpactAmount(Entity e, Entity victim, int base) {
|
||||
return 15; // Hits as high as Earth blast
|
||||
if (((NPC) victim).getTask() != null && ((NPC) victim).getTask().undead) {
|
||||
return 12 + (e.getSkills().getLevel(Skills.MAGIC) / 10);
|
||||
}
|
||||
((Player) e).sendMessage("Your spell does almost no damage, as your target is not undead.");
|
||||
return 1;
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -193,6 +193,9 @@ public final class WalkingQueue {
|
|||
if (hasTimerActive(player, "hamstrung")) {
|
||||
rate *= 4;
|
||||
}
|
||||
//Snowscape custom: gain agility exp when running. getLevel returns int so we convert to double for the math
|
||||
double experience = (Double.valueOf(player.getSkills().getLevel(Skills.AGILITY)) + 10)/50;
|
||||
player.getSkills().addExperience(Skills.AGILITY, experience);
|
||||
return rate;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import core.game.node.entity.player.info.Rights;
|
|||
import core.game.world.GameWorld;
|
||||
import core.tools.RandomFunction;
|
||||
|
||||
import core.game.node.entity.player.link.prayer.PrayerType;
|
||||
|
||||
/**
|
||||
* Used to handle entity aggressiveness.
|
||||
* @author Emperor
|
||||
|
|
@ -81,6 +83,9 @@ public final class AggressiveHandler {
|
|||
}
|
||||
Entity target = behavior.getLogicalTarget(entity, behavior.getPossibleTargets(entity, radius));
|
||||
if (target instanceof Player) {
|
||||
if (((Player) target).getPrayer().get(PrayerType.PROTECT_FROM_SUMMONING)) {
|
||||
return false;
|
||||
}
|
||||
if (target.getAttribute("ignore_aggression", false)) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,11 @@ import core.api.utils.NPCDropTable;
|
|||
import core.game.ge.GrandExchange;
|
||||
import core.game.world.repository.Repository;
|
||||
|
||||
import content.global.skill.summoning.familiar.BurdenBeast;
|
||||
import content.global.skill.summoning.familiar.Forager;
|
||||
import content.global.skill.summoning.SummoningPouch;
|
||||
import content.global.skill.summoning.familiar.PackYakNPC;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -99,6 +104,9 @@ public final class NPCDropTables {
|
|||
if (handleBoneCrusher(player, item)) {
|
||||
return;
|
||||
}
|
||||
if (handleCurrency(player, item)) {
|
||||
return;
|
||||
}
|
||||
if (item.hasItemPlugin() && player != null) {
|
||||
if (!item.getPlugin().createDrop(item, player, npc, l)) {
|
||||
return;
|
||||
|
|
@ -106,9 +114,17 @@ public final class NPCDropTables {
|
|||
item = item.getPlugin().getItem(item, npc);
|
||||
}
|
||||
if (!item.getDefinition().isStackable() && item.getAmount() > 1) {
|
||||
if (hasValidFamiliar(player)) {
|
||||
for (int i = 0; i < item.getAmount(); i++) {
|
||||
if (!addItemFamiliar(player, new Item(item.getId()))) {
|
||||
GroundItemManager.create(new Item(item.getId()), l, player);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < item.getAmount(); i++) {
|
||||
GroundItemManager.create(new Item(item.getId()), l, player);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
announceIfRare(player, item);
|
||||
|
|
@ -121,7 +137,11 @@ public final class NPCDropTables {
|
|||
GroundItemManager.create(item, l);
|
||||
}
|
||||
} else {
|
||||
GroundItem groundItem = GroundItemManager.create(item, l, getLooter(player, npc, item));
|
||||
Player looter = getLooter(player, npc, item);
|
||||
if (hasValidFamiliar(looter) && addItemFamiliar(looter, item)) {
|
||||
return;
|
||||
}
|
||||
GroundItem groundItem = GroundItemManager.create(item, l, looter);
|
||||
if(player instanceof AIPlayer) {
|
||||
AIRepository.addItem(groundItem);
|
||||
}
|
||||
|
|
@ -134,6 +154,37 @@ public final class NPCDropTables {
|
|||
}
|
||||
}
|
||||
|
||||
/** Snowlab custom looting
|
||||
* Check if the player has a valid familiar that can loot.
|
||||
* @param player The player
|
||||
* @return true if they have a valid familiar.
|
||||
*/
|
||||
private boolean hasValidFamiliar(Player player) {
|
||||
if (!(player instanceof AIPlayer) && player.getFamiliarManager().hasFamiliar() && player.getFamiliarManager().getFamiliar().isBurdenBeast() && !(player.getFamiliarManager().getFamiliar() instanceof Forager) && !SummoningPouch.get(player.getFamiliarManager().getFamiliar().getPouchId()).abyssal){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/** Snowlab custom looting
|
||||
* Attempt adding item to familiar inventory.
|
||||
* @param player The player
|
||||
* @return true if item was successfully added.
|
||||
*/
|
||||
private boolean addItemFamiliar(Player player, Item item) {
|
||||
if ((player.getFamiliarManager().getFamiliar() instanceof PackYakNPC) && ((BurdenBeast) player.getFamiliarManager().getFamiliar()).getContainer().contains(12435, 1) && player.getBank().add(item)) {
|
||||
((BurdenBeast) player.getFamiliarManager().getFamiliar()).getContainer().remove(new Item(12435, 1));
|
||||
player.sendMessage("Your familiar picked up and banked " + item.getAmount() + " " + item.getName() + ".");
|
||||
return true;
|
||||
}
|
||||
if (((BurdenBeast) player.getFamiliarManager().getFamiliar()).getContainer().add(item)) {
|
||||
player.sendMessage("Your familiar picked up " + item.getAmount() + " " + item.getName() + ".");
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the looting player.
|
||||
* @param player the player.
|
||||
|
|
@ -206,12 +257,31 @@ public final class NPCDropTables {
|
|||
if (bone == null) {
|
||||
return false;
|
||||
}
|
||||
if (!player.getGlobalData().isEnableBoneCrusher()) {
|
||||
if (!player.getInventory().containsItem(new Item(2963, 1)) || !player.getAttribute("bonecrusher:enabled", false)) {
|
||||
return false;
|
||||
}
|
||||
player.getSkills().addExperience(Skills.PRAYER, item.getAmount() * bone.getExperience());
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Snowscape custom: Automatically loot coins and tokkul if wearing a ring of wealth.
|
||||
* @param player The player
|
||||
* @param item The item
|
||||
* @return true if successfully added items to player.
|
||||
*/
|
||||
private boolean handleCurrency(Player player, Item item) {
|
||||
if (item.getId() == 995 || item.getId() == 6529) {
|
||||
Item ring = player.getEquipment().get(12);
|
||||
if (ring != null && ring.getId() >= 14638 && ring.getId() <=14646) {
|
||||
if (player.getInventory().add(item)) {
|
||||
player.sendMessage("Your Ring collected " + item.getAmount() + " " + item.getName() + ".");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the ratio for stabilizing NPC combat difficulty & drop rates.
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ public class TeleportManager {
|
|||
if (!entity.getZoneMonitor().teleport(teleportType, null)) {
|
||||
return false;
|
||||
}
|
||||
if (teleportType != -1 && entity.isTeleBlocked()) {
|
||||
if (teleportType != -1 && type != TeleportType.ANCIENT && entity.isTeleBlocked()) {
|
||||
if (entity.isPlayer())
|
||||
entity.asPlayer().sendMessage("A magical force has stopped you from teleporting.");
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -22,33 +22,33 @@ import static core.api.ContentAPIKt.*;
|
|||
* @author jamix77
|
||||
*/
|
||||
public enum PrayerType {
|
||||
THICK_SKIN(1, 12, 83, 5, PrayerCategory.BABY_BLUE, Sounds.THICK_SKIN_2690, new SkillBonus(Skills.DEFENCE, 0.05)),
|
||||
BURST_OF_STRENGTH(4, 12, 84, 7, PrayerCategory.GREEN, Sounds.STRENGTH_BURST_2688, new SkillBonus(Skills.STRENGTH, 0.05)),
|
||||
CLARITY_OF_THOUGHT(7, 12, 85, 9, PrayerCategory.PINK, Sounds.CLARITY_2664, new SkillBonus(Skills.ATTACK, 0.05)),
|
||||
SHARP_EYE(8, 12, 862, 11, PrayerCategory.LIME_GREEN, Sounds.SHARP_EYE_2685, new SkillBonus(Skills.RANGE, 0.05)),
|
||||
MYSTIC_WILL(9, 12, 863, 13, PrayerCategory.LIME_GREEN, Sounds.MYSTIC_WILL_2670, new SkillBonus(Skills.MAGIC, 0.05)),
|
||||
ROCK_SKIN(10, 6, 86, 15, PrayerCategory.BABY_BLUE, Sounds.ROCK_SKIN_2684, new SkillBonus(Skills.DEFENCE, 0.1)),
|
||||
SUPERHUMAN_STRENGTH(13, 6, 87, 17, PrayerCategory.GREEN, Sounds.SUPERHUMAN_STRENGTH_2689, new SkillBonus(Skills.STRENGTH, 0.1)),
|
||||
IMPROVED_REFLEXES(16, 6, 88, 19, PrayerCategory.PINK, Sounds.IMPROVED_REFLEXES_2662, new SkillBonus(Skills.ATTACK, 0.1)),
|
||||
RAPID_RESTORE(19, 26, 89, 21, PrayerCategory.PURPLE, Sounds.RAPID_RESTORE_2679),
|
||||
RAPID_HEAL(22, 18, 90, 23, PrayerCategory.PURPLE, Sounds.RAPID_HEAL_2678),
|
||||
PROTECT_ITEMS(25, 18, 91, 25, PrayerCategory.DARK_GREEN, Sounds.PROTECT_ITEMS_1982),
|
||||
HAWK_EYE(26, 6, 864, 27, PrayerCategory.LIME_GREEN, Sounds.HAWK_EYE_2666, new SkillBonus(Skills.RANGE, 0.1)),
|
||||
MYSTIC_LORE(27, 6, 865, 29, PrayerCategory.LIME_GREEN, Sounds.MYSTIC_2668, new SkillBonus(Skills.MAGIC, 0.1)),
|
||||
STEEL_SKIN(28, 3, 92, 31, PrayerCategory.BABY_BLUE, Sounds.STEEL_SKIN_2687, new SkillBonus(Skills.DEFENCE, 0.15)),
|
||||
ULTIMATE_STRENGTH(31, 3, 93, 33, PrayerCategory.GREEN, Sounds.ULTIMATE_STRENGTH_2691, new SkillBonus(Skills.STRENGTH, 0.15)),
|
||||
INCREDIBLE_REFLEXES(34, 3, 94, 35, PrayerCategory.PINK, Sounds.INCREDIBLE_REFLEXES_2667, new SkillBonus(Skills.ATTACK, 0.15)),
|
||||
PROTECT_FROM_SUMMONING(35, 2, 1168, 53, PrayerCategory.DARK_BROWN, PrayerCategory.MAGENTA, new Audio(4262)),
|
||||
THICK_SKIN(1, 30, 83, 5, PrayerCategory.BABY_BLUE, Sounds.THICK_SKIN_2690, new SkillBonus(Skills.DEFENCE, 0.05)),
|
||||
BURST_OF_STRENGTH(4, 60, 84, 7, PrayerCategory.GREEN, Sounds.STRENGTH_BURST_2688, new SkillBonus(Skills.STRENGTH, 0.05)),
|
||||
CLARITY_OF_THOUGHT(7, 60, 85, 9, PrayerCategory.PINK, Sounds.CLARITY_2664, new SkillBonus(Skills.ATTACK, 0.05)),
|
||||
SHARP_EYE(8, 30, 862, 11, PrayerCategory.LIME_GREEN, Sounds.SHARP_EYE_2685, new SkillBonus(Skills.RANGE, 0.05)),
|
||||
MYSTIC_WILL(9, 30, 863, 13, PrayerCategory.LIME_GREEN, Sounds.MYSTIC_WILL_2670, new SkillBonus(Skills.MAGIC, 0.05)),
|
||||
ROCK_SKIN(10, 15, 86, 15, PrayerCategory.BABY_BLUE, Sounds.ROCK_SKIN_2684, new SkillBonus(Skills.DEFENCE, 0.1)),
|
||||
SUPERHUMAN_STRENGTH(13, 30, 87, 17, PrayerCategory.GREEN, Sounds.SUPERHUMAN_STRENGTH_2689, new SkillBonus(Skills.STRENGTH, 0.1)),
|
||||
IMPROVED_REFLEXES(16, 30, 88, 19, PrayerCategory.PINK, Sounds.IMPROVED_REFLEXES_2662, new SkillBonus(Skills.ATTACK, 0.1)),
|
||||
RAPID_RESTORE(19, 30, 89, 21, PrayerCategory.PURPLE, Sounds.RAPID_RESTORE_2679),
|
||||
RAPID_HEAL(22, 20, 90, 23, PrayerCategory.PURPLE, Sounds.RAPID_HEAL_2678),
|
||||
PROTECT_ITEMS(25, 20, 91, 25, PrayerCategory.DARK_GREEN, Sounds.PROTECT_ITEMS_1982),
|
||||
HAWK_EYE(26, 15, 864, 27, PrayerCategory.LIME_GREEN, Sounds.HAWK_EYE_2666, new SkillBonus(Skills.RANGE, 0.1)),
|
||||
MYSTIC_LORE(27, 15, 865, 29, PrayerCategory.LIME_GREEN, Sounds.MYSTIC_2668, new SkillBonus(Skills.MAGIC, 0.1)),
|
||||
STEEL_SKIN(28, 10, 92, 31, PrayerCategory.BABY_BLUE, Sounds.STEEL_SKIN_2687, new SkillBonus(Skills.DEFENCE, 0.15)),
|
||||
ULTIMATE_STRENGTH(31, 20, 93, 33, PrayerCategory.GREEN, Sounds.ULTIMATE_STRENGTH_2691, new SkillBonus(Skills.STRENGTH, 0.15)),
|
||||
INCREDIBLE_REFLEXES(34, 20, 94, 35, PrayerCategory.PINK, Sounds.INCREDIBLE_REFLEXES_2667, new SkillBonus(Skills.ATTACK, 0.15)),
|
||||
PROTECT_FROM_SUMMONING(35, 3, 1168, 53, PrayerCategory.DARK_BROWN, PrayerCategory.MAGENTA, new Audio(4262)),
|
||||
PROTECT_FROM_MAGIC(37, 3, 95, 37, PrayerCategory.LIGHT_BROWN, Sounds.PROTECT_FROM_MAGIC_2675),
|
||||
PROTECT_FROM_MISSILES(40, 3, 96, 39, PrayerCategory.LIGHT_BROWN, Sounds.PROTECT_FROM_MISSILES_2677),
|
||||
PROTECT_FROM_MELEE(43, 4, 97, 41, PrayerCategory.LIGHT_BROWN, Sounds.PROTECT_FROM_MELEE_2676),
|
||||
EAGLE_EYE(44, 3, 866, 43, PrayerCategory.LIME_GREEN, Sounds.EAGLE_EYE_2665, new SkillBonus(Skills.RANGE, 0.15)),
|
||||
MYSTIC_MIGHT(45, 3, 867, 45, PrayerCategory.LIME_GREEN, Sounds.MYSTIC_MIGHT_2669, new SkillBonus(Skills.MAGIC, 0.15)),
|
||||
PROTECT_FROM_MELEE(43, 3, 97, 41, PrayerCategory.LIGHT_BROWN, Sounds.PROTECT_FROM_MELEE_2676),
|
||||
EAGLE_EYE(44, 10, 866, 43, PrayerCategory.LIME_GREEN, Sounds.EAGLE_EYE_2665, new SkillBonus(Skills.RANGE, 0.15)),
|
||||
MYSTIC_MIGHT(45, 10, 867, 45, PrayerCategory.LIME_GREEN, Sounds.MYSTIC_MIGHT_2669, new SkillBonus(Skills.MAGIC, 0.15)),
|
||||
RETRIBUTION(46, 12, 98, 47, PrayerCategory.LIGHT_BROWN, PrayerCategory.MAGENTA, new Audio(2682)),
|
||||
REDEMPTION(49, 6, 99, 49, PrayerCategory.LIGHT_BROWN, PrayerCategory.MAGENTA, new Audio(2680)),
|
||||
SMITE(52, 2, 100, 51, PrayerCategory.LIGHT_BROWN, PrayerCategory.MAGENTA, new Audio(2686)),
|
||||
CHIVALRY(60, 2, 1052, 55, PrayerCategory.PINK, Sounds.KR_CHIVALRY_3826, 65, new SkillBonus(Skills.DEFENCE, 0.2), new SkillBonus(Skills.STRENGTH, 0.18), new SkillBonus(Skills.ATTACK, 0.15)),
|
||||
PIETY(70, 2, 1053, 57, PrayerCategory.PINK, Sounds.KR_PIETY_3825, 70, new SkillBonus(Skills.DEFENCE, 0.25), new SkillBonus(Skills.STRENGTH, 0.23), new SkillBonus(Skills.ATTACK, 0.2));
|
||||
CHIVALRY(60, 4, 1052, 55, PrayerCategory.PINK, Sounds.KR_CHIVALRY_3826, 65, new SkillBonus(Skills.DEFENCE, 0.2), new SkillBonus(Skills.STRENGTH, 0.18), new SkillBonus(Skills.ATTACK, 0.15), new SkillBonus(Skills.MAGIC, 0.15), new SkillBonus(Skills.RANGE, 0.15)),
|
||||
PIETY(70, 3, 1053, 57, PrayerCategory.PINK, Sounds.KR_PIETY_3825, 70, new SkillBonus(Skills.DEFENCE, 0.25), new SkillBonus(Skills.STRENGTH, 0.23), new SkillBonus(Skills.ATTACK, 0.2), new SkillBonus(Skills.MAGIC, 0.2), new SkillBonus(Skills.RANGE, 0.2));
|
||||
|
||||
/**
|
||||
* Represents the a cache of objects related to prayers in order to decide
|
||||
|
|
@ -63,6 +63,7 @@ public enum PrayerType {
|
|||
|
||||
/**
|
||||
* The drain rate.
|
||||
* The drain rate X 2 is the number of seconds (not ticks) that it takes to drain 1 point at 0 prayer bonus
|
||||
*/
|
||||
private final int drain;
|
||||
|
||||
|
|
|
|||
|
|
@ -290,7 +290,13 @@ public final class Skills {
|
|||
private double getExperienceMod(int slot, double experience, boolean playerMod, boolean multiplyer) {
|
||||
//Keywords for people ctrl + Fing the project
|
||||
//xprate xp rate xp multiplier skilling rate
|
||||
return experienceMultiplier;
|
||||
|
||||
//Snowscape Custom: experience multiplier starts at 1x and scales to the selected multiplier as level incrceases
|
||||
double perLevel = (experienceMultiplier-1)/100;
|
||||
double finalMult = staticLevels[slot]*perLevel+1;
|
||||
return finalMult;
|
||||
//return experienceMultiplier;
|
||||
|
||||
/*if (!(entity instanceof Player)) {
|
||||
return 1.0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import core.tools.colorize
|
|||
import org.json.simple.JSONObject
|
||||
|
||||
class AntiMacro : PersistTimer(0, "antimacro", isAuto = true), Commands {
|
||||
var paused = false
|
||||
var paused = true
|
||||
var nextRandom: RandomEvents? = null
|
||||
|
||||
override fun run(entity: Entity): Boolean {
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ public final class ZoneMonitor {
|
|||
* @return {@code True} if so.
|
||||
*/
|
||||
public boolean teleport(int type, Node node) {
|
||||
if (type != -1 && entity.isTeleBlocked() && !canTeleportByJewellery(type, node)) {
|
||||
if (type != -1 && entity.isTeleBlocked() && !canTeleportByJewellery(type, node)&& !canTeleportByAncient(type)) {
|
||||
if (entity.isPlayer()) {
|
||||
entity.asPlayer().sendMessage("A magical force has stopped you from teleporting.");
|
||||
}
|
||||
|
|
@ -278,6 +278,32 @@ public final class ZoneMonitor {
|
|||
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Snowscape custom allowing teleports with Ancient Magicks in >= 1 <= 30 wilderness level
|
||||
* @return {@code True} if so.
|
||||
*/
|
||||
private boolean canTeleportByAncient(int type) {
|
||||
if (type != 0) {
|
||||
return false;
|
||||
}
|
||||
if (entity.timers.getTimer("teleblock") != null)
|
||||
return false;
|
||||
|
||||
if (entity.getZoneMonitor().isRestricted(ZoneRestriction.TELEPORT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (entity.getLocks().isTeleportLocked()) {
|
||||
if (entity.isPlayer()) {
|
||||
Player p = entity.asPlayer();
|
||||
if (p.getSpellBookManager().getSpellBook() == 193 && p.getSkullManager().getLevel() >= 1 && p.getSkullManager().getLevel() <= 48) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the death should start for an entity.
|
||||
|
|
|
|||
|
|
@ -307,8 +307,24 @@ object PacketProcessor {
|
|||
pkt.player.interfaceManager.switchWindowMode(pkt.windowMode)
|
||||
}
|
||||
is Packet.TrackingAfkTimeout -> {
|
||||
if (pkt.player.details.rights != Rights.ADMINISTRATOR)
|
||||
pkt.player.packetDispatch.sendLogout()
|
||||
/* After 5 minutes idle, the client sends an afk packet every 10 seconds.
|
||||
*This code counts the number of afk packets recieved, resetting the count if they are more than 100 ticks apart.
|
||||
*This allows us to customize the afk logout timer
|
||||
*/
|
||||
if (pkt.player.details.rights != Rights.ADMINISTRATOR) {
|
||||
if (GameWorld.ticks - pkt.player.getAttribute("afk:lasttick", 0) > 100) {
|
||||
pkt.player.setAttribute("afk:count", 0)
|
||||
} else {
|
||||
pkt.player.setAttribute("afk:count", pkt.player.getAttribute("afk:count", 0) + 1)
|
||||
}
|
||||
pkt.player.setAttribute("afk:lasttick", GameWorld.ticks)
|
||||
if (pkt.player.getAttribute("afk:count", 0) == 300) {
|
||||
pkt.player.sendMessage("<col=990000>You have been idle for 55 minutes and will be logged out soon.</col>")
|
||||
}
|
||||
if (pkt.player.getAttribute("afk:count", 0) >= 330) {
|
||||
pkt.player.packetDispatch.sendLogout()
|
||||
}
|
||||
}
|
||||
}
|
||||
is Packet.TrackingCameraPos -> {
|
||||
//TODO Refactor the player monitor to be actually useful and log this
|
||||
|
|
|
|||
|
|
@ -11,18 +11,18 @@ secret_key = "2009scape_development"
|
|||
write_logs = true
|
||||
msip = "127.0.0.1"
|
||||
#preload the map (Increases memory usage by 2GB but makes game ticks smoother)
|
||||
preload_map = false
|
||||
preload_map = true
|
||||
#--------Note: If both of the below are false, no database is required to run the server.--------------
|
||||
#true = login requires password to be correct, passwords are hashed before stored. false = login does not care about the correctness of a password.
|
||||
use_auth = false #NOTE: THIS MUST BE SET TO TRUE IN PRODUCTION!
|
||||
use_auth = true #NOTE: THIS MUST BE SET TO TRUE IN PRODUCTION!
|
||||
#true - account data (credits, playtime, etc) is persisted, false - account data is purely temporary
|
||||
#NOTE: this does not affect actual save data, like stats, inventory, etc.
|
||||
persist_accounts = false #NOTE: THIS MUST BE SET TO TRUE IN PRODUCTION!
|
||||
persist_accounts = true #NOTE: THIS MUST BE SET TO TRUE IN PRODUCTION!
|
||||
noauth_default_admin = true #NOTE: If we are not using auth, this determines whether or not players are admins by default.
|
||||
#------------------------------------------------------------------------------------------------------
|
||||
#The limit on how many different accounts a player can log into per day.
|
||||
daily_accounts_per_ip = 3
|
||||
watchdog_enabled = true
|
||||
daily_accounts_per_ip = 30
|
||||
watchdog_enabled = false
|
||||
connectivity_check_url = "https://google.com,https://2009scape.org"
|
||||
connectivity_timeout = 500
|
||||
|
||||
|
|
@ -44,21 +44,21 @@ grafana_log_ttl_days = 7
|
|||
|
||||
|
||||
[world]
|
||||
name = "2009Scape"
|
||||
name = "SnowScape"
|
||||
#name used for announcements of bots selling items on the GE
|
||||
name_ge = "2009Scape"
|
||||
debug = true
|
||||
dev = true
|
||||
name_ge = "SnowScape"
|
||||
debug = false
|
||||
dev = false
|
||||
start_gui = false
|
||||
daily_restart = false
|
||||
daily_restart = true
|
||||
#world number
|
||||
world_id = "1"
|
||||
country_id = "0"
|
||||
members = true
|
||||
#activity as displayed on the world list
|
||||
activity = "2009Scape Classic."
|
||||
activity = "SnowScape"
|
||||
pvp = false
|
||||
default_xp_rate = 5.0
|
||||
default_xp_rate = 1.0
|
||||
allow_slayer_reroll = false
|
||||
#enables a default clan for players to join automatically. Should be an account with the same name as @name, with a clan set up already.
|
||||
enable_default_clan = true
|
||||
|
|
@ -81,14 +81,14 @@ enable_doubling_money_scammers = true
|
|||
wild_pvp_enabled = true
|
||||
jad_practice_enabled = true
|
||||
#minimum HA value for announcements of bots selling on ge
|
||||
ge_announcement_limit = 500
|
||||
enable_castle_wars = false
|
||||
ge_announcement_limit = 500000
|
||||
enable_castle_wars = true
|
||||
personalized_shops = true
|
||||
bots_influence_ge_price = true
|
||||
bots_influence_ge_price = false
|
||||
#verbose cutscene logging (for cutscenes in the new system)
|
||||
verbose_cutscene = false
|
||||
#show the rules the first time a player logs in
|
||||
show_rules = true
|
||||
show_rules = false
|
||||
#the number of revenants active at a time
|
||||
revenant_population = 30
|
||||
#enable auto-buy/auto-sell on the GE.
|
||||
|
|
@ -100,7 +100,7 @@ better_dfs = true
|
|||
#new player announcement
|
||||
new_player_announcement = true
|
||||
#enables holiday random events (no effect on normal random events)
|
||||
holiday_event_randoms = true
|
||||
holiday_event_randoms = false
|
||||
#force holiday randoms (can only force one at a time)
|
||||
force_halloween_randoms = false
|
||||
force_christmas_randoms = false
|
||||
|
|
@ -108,6 +108,8 @@ force_christmas_randoms = false
|
|||
runecrafting_formula_revision = 581
|
||||
#enable the enhanced deep wilderness, where the area past the members' fence applies a red skull that boosts brawler/pvp drop rates
|
||||
enhanced_deep_wilderness = true
|
||||
#enable opening the bank on left-clicking the booth, instead of starting dialogue with the banker
|
||||
bank_booth_quick_open = true
|
||||
|
||||
[paths]
|
||||
#path to the data folder, which contains the cache subfolder and such
|
||||
|
|
|
|||
2
run
2
run
|
|
@ -10,7 +10,7 @@ REFRESH_BUILD=1
|
|||
|
||||
GAMESERVER_ONLY=1
|
||||
|
||||
GS_EXEC="cd $GS_SRC && java -Dnashorn.args=--no-deprecation-warning -jar $BUILD_DIR/server.jar"
|
||||
GS_EXEC="cd $GS_SRC && java -Xmx7g -Dnashorn.args=--no-deprecation-warning -jar $BUILD_DIR/server.jar"
|
||||
MS_EXEC="cd $MS_SRC && java -Dnashorn.args=--no-deprecation-warning -jar $BUILD_DIR/ms.jar"
|
||||
|
||||
# 0: parallel
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue