Tai Bwo Wannai Cleanup D&D
TaibwoWannai is a dangerous open world mini-game,
players can earn favors by: repairing fence, cutting jungle vines and killing threats (npcs).
anti poison and good gear are required for survival, along with a pickaxe and machete
which might come in handy.
It was a project that has been sitting idle quite some time now, i tried to mimic it as close to the official D&D. It did took quite some effort. So i hope you like it, happy valentines mfs
Supports all correct animations, gfx and configs.
For more info: [Only registered and activated users can see links. ]
features/update log:
- jungle vines can now be cutted
- machetes added along with emote ids
- gives a % chance of spawning a npc depending of the vines
- 8 > 13% probability of spawning npcs in light vines
- 14 > 19% npc spawns on medium vines
- 28 > 36% npc spawn on dense vines
- added interface when within area
- added fence repairing (requires 1 of any spar, the better spar,the faster repair speed.)
- added favor % point system
- added point drain (0.5% every 46 seconds, just like rs, keeps player active)
- added NPC combatdefs & poison npcs
- added NPC start dialogue (must complete short intro of info)
- players may create skewer sticks from spars (+skill dialogue)
- players can create spider on stick from skewer sticks and spider carcass(dropped within npc vine list) and cook them healing random amount of 70 to 100 HP.
- added mahogany and teak tree encampment *cost 100 trading sticks (Best place in world to cut mahogany/teaks in official play)
-**partly finished broodoo combat. weakens player cb stats by 3, magic protection resolves this but has a 50% chance of still draining 1 point when engaged. (this is custom and not 100% accurate, change it how you want it)
-broodoo victims randomly spawn at 5-12% chance over the area every 2-3 minutes.
-small chance for a gem rock when cutting final piece of a jungle vine.
-gout tubers can be found when cutting jungles.
-gabootys exchange (trading sticks) was added.
Cutting Jungles
You can make Skewer sticks to make/cook spider on sticks.
Help the villagers repair their fence.
Random chances to obtain a mining gem or gout tuber after a vine is cut out completely.
Neutralize mobs that may appear from vines!
and alot more! Enjoy!
//todo
-add broodoo antipoison/food and relicym balm for broodoo dmg effect
-add parcel service + inter
-add all villagers and dialogues
-add npc bonuses
-create your own store using trading sticks
-find a way to deal with broodoos if a player exits or leaves the mini game. (perhaps on a timer?)
-add villager robes (costume) to increase points while playing, every part should give +1% more or so.
Spoiler for TaiBwoWannai.java:
CREATE CLASS
Code:package com.rs.game.minigames.taibwowannai; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.stream.Collectors; import com.rs.Settings; import com.rs.game.Animation; import com.rs.game.ForceTalk; import com.rs.game.Graphics; import com.rs.game.World; import com.rs.game.WorldObject; import com.rs.game.WorldTile; import com.rs.game.item.Item; import com.rs.game.npc.NPC; import com.rs.game.player.Player; import com.rs.game.player.Skills; import com.rs.game.player.controlers.Controler; import com.rs.game.player.dialogues.karamja.Gabooty; import com.rs.game.tasks.WorldTask; import com.rs.game.tasks.WorldTasksManager; import com.rs.utils.Utils; public class TaiBwoWannai extends Controler { /** * * @Tai bwo wannai minigame * @author PhaseGFX * * Minigame Extends: * Player class * World class * Woodcutting class * Food class * Dialogues * Cooking class * NPC class * */ public static final boolean inArea(WorldTile tile) { int destX = tile.getX(); int destY = tile.getY(); return ((tile.getX() <= 2817 && tile.getX() >= 2770 && tile.getY() <= 3052 && tile.getY() >= 3075)); // } private static List<NPC> npcs; public static void loadNPCs() { npcs = World.getNPCs().stream().filter(npc -> npc.withinArea(2817, 3052, 2770, 3075)).collect(Collectors.toList()); } public void startTimer() { WorldTasksManager.schedule(new WorldTask() { int ticks = 0; @Override public void run() { loadNPCs(); int pick = new Random().nextInt(Locations.values().length); final Locations spawns = Locations.values()[pick]; ticks++; if (player.startedTaiBwoWannai == false) { return; } else if (ticks == 20) { TaiBwoWannai.sendStartI(player); } else if (ticks == 110) { if (Utils.random(14) < 1) { World.spawnNPC(Utils.random(2501), new WorldTile(spawns.getTile().getX(), spawns.getTile().getY(), 0), -1, true, true, true); player.sm("A <col=ff0000>broodoo victim</col> has emerged somewhere around the village!"); } } else if (ticks == 200) { if (Utils.random(12) < 1) { World.spawnNPC(2499, new WorldTile(spawns.getTile().getX(), spawns.getTile().getY(), 0), -1, true, true, true); player.sm("A <col=ff0000>broodoo victim</col> has emerged somewhere around the village!"); ticks = 21; } } } }, 0, 0); } public static boolean drainPoints = false; public boolean drainPoints() { WorldTasksManager.schedule(new WorldTask() { private int ticks; @Override public void run() { ticks++; if (player.getTBWPoints() < 0) { player.setTBWPoins(0); return; } else if (ticks == 60) { drainPoints = true; player.setTBWPoins(player.getTBWPoints() - 1); ticks = 1; return; } } }, 0, 0); return true; } @Override public void start() { Check(player); } @Override public boolean sendDeath() { player.getInterfaceManager().closeOverlay(true); player.getInterfaceManager().closeTaiBwoWannai(); removeControler(); player.setForceMultiArea(false); return true; } public void Check(Player player) { boolean isAtTaiBwoWannai = player.isForceTaiBwoWannai() ? true : World.isTaiBwoWannai(player); if (isAtTaiBwoWannai && (player.startedTaiBwoWannai == true)) { player.setAtTaiBwoWannai(isAtTaiBwoWannai); player.refreshTBW(); startTimer(); drainPoints(); } else player.startedTaiBwoWannai = false; player.getInterfaceManager().closeOverlay(true); player.setForceMultiArea(false); player.getInterfaceManager().closeTaiBwoWannai(); } /** * broodoo victims locations spawns */ public enum Locations { VILLAGE(new WorldTile(2829, 3060, 0)), VILLAGE2(new WorldTile(2810, 3050, 0)), VILLAGE3(new WorldTile(2775, 3046, 0)), VILLAGE4(new WorldTile(2765, 3062, 0)), VILLAGE5(new WorldTile(2774, 3100, 0)), VILLAGE6(new WorldTile(2818, 3104, 0)); private WorldTile tile; private Locations(WorldTile tile) { this.tile = tile; } public WorldTile getTile() { return tile; } } public void sendInterfaces() { WorldTasksManager.schedule(new WorldTask() { private int ticks; @Override public void run() { ticks++; if (ticks == 1) { player.refreshTBW(); ticks = 1; return; } } }, 0, 0); } public static void prayTribalStatue(Player player) { Long pray = (Long) player.getTemporaryAttributtes().get("PRAY"); if (pray != null && pray + 60000 > Utils.currentTimeMillis() && (player.startedTaiBwoWannai == true)) { //10min player.getDialogueManager().startDialogue("SimpleMessage", "Players may only pray once every 10 minutes during the mini-game!"); return; } else { final int maxPrayer = player.getSkills() .getLevelForXp(Skills.PRAYER) * 10; if (player.getPrayer().getPrayerpoints() < maxPrayer) { player.lock(5); player.getPackets().sendGameMessage( "You pray to the tribal god...", true); player.setNextAnimation(new Animation(645)); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.getPrayer().restorePrayer( maxPrayer); player.getPackets() .sendGameMessage( "...and recharged your prayer.", true); player.getTemporaryAttributtes().put("PRAY", Utils.currentTimeMillis()); } }, 2); } else player.getPackets().sendGameMessage( "You already have full prayer."); } } public static void sendPrepare (final Player player) { player.getInterfaceManager().sendInterface(327); player.getPackets().sendIComponentText(327, 14, "<col=ff0000>Antipoison</col> for jungle insects.</br><br>" + "<col=ff0000>Food</col> for health and recovery</br><br>" + "<col=ff0000>Decent gear</col> for protection</br><br>" + "<col=ff0000>Knife & chisel</col> to craft encountered items</br><br>" + "<col=ff0000>Pickaxe & machete</col> might be usefull</br><br>"); } public static void sendStartI (final Player player) { player.stopAll(); player.lock(5); player.getInterfaceManager().sendInterface(327); player.getPackets().sendIComponentText(327, 14, "Be advised, You may encounter jungle species</br><br>" + "including<col=ff0000> broodoo victims</col>, they weaken;</br><br>" + "combat stats if not switching prayers correctly.</br><br> " + "Players should also know that favour is drained,</br><br>" + "by 1% approx; every minute. Remaining inactive</br><br>" + "results to quite significant <col=ff0000>favour loss.</col></br><br>" + "</br><br><col=ff0000>Note:</col> player's favour will never drain beneath 0.</br><br>" + "</br><br><col=ff0000>No items are safe upon death but gravestones.</br><br>" + "If intentions to quit, talk to Tutrifitus or leave area."); } public static void CheckSpar(final Player player,WorldObject object) { if (player.getAttackedBy() != null && player.getAttackedByDelay() > Utils.currentTimeMillis()) { player.getPackets().sendGameMessage( "You can't do this while you're under combat."); return; } if (player.withinDistance(object, 1)) { player.faceObject(object); if (player.startedTaiBwoWannai == false) { player.getDialogueManager().startDialogue("SimpleMessage", "This activity requieres to play the minigame: Tai-Bwo Wannai."); return; } else if (player.getInventory().containsItem(6281, 1)) { // light spar repair speed 18s RepairFenceLight(player, object); return; } if (player.getInventory().containsItem(6283, 1)) { // medium spar 12s RepairFenceMedium(player, object); return; } if (player.getInventory().containsItem(6285, 1)) { // dense spar 6s RepairFenceDense(player, object); return; } if (player.getTBWPoints() > 400) { player.refreshTBW(); player.sm("You already obtained the maximum %precentage in favour, exchange for sticks!"); return; } else player.getDialogueManager().startDialogue("SimpleMessage", "You need: (1) light, medium or dense spar to partially repair the villager's fence."); return; } } //light = 14s public static void RepairFenceLight(final Player player, WorldObject object) { player.refreshTBW(); player.lock(14); player.setNextAnimation(new Animation(2384)); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.setNextAnimation(new Animation(2385)); } }, 1); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { World.spawnTemporaryObject(new WorldObject(object.getId() + 1, object.getType(), object.getRotation(), object.getX(), object.getY(), object.getPlane()), 900000, true); player.setNextAnimation(new Animation(2386)); player.stopAll(); player.getInventory().deleteItem(6281, 1); if (object.getId() == 9028 && (player.startedTaiBwoWannai == true)) { player.sm("You use your light spar to complete reinforcements. (+ 0.25% bonus)"); player.setTBWPoins(player.getTBWPoints() + 1); } else if (object.getId() == 9029 && (player.startedTaiBwoWannai == true)) { player.sm("You already reinforced this fence completely!"); } else player.sm("You repaired and reinforced the villager's fence partly with light spars."); player.setTBWPoins(player.getTBWPoints() + 2); player.refreshTBW(); } }, 14); } //medium = 10s public static void RepairFenceMedium(final Player player, WorldObject object) { if (player.getAttackedBy() != null && player.getAttackedByDelay() > Utils.currentTimeMillis()) { player.getPackets().sendGameMessage( "You can't do this while you're under combat."); return; } else player.refreshTBW(); player.lock(10); player.setNextAnimation(new Animation(2384)); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.setNextAnimation(new Animation(2385)); } }, 1); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { World.spawnTemporaryObject(new WorldObject(object.getId() + 1, object.getType(), object.getRotation(), object.getX(), object.getY(), object.getPlane()), 900000, true); player.setNextAnimation(new Animation(2386)); player.stopAll(); player.getInventory().deleteItem(6283, 1); if (object.getId() == 9028 && (player.startedTaiBwoWannai == true)) { player.sm("You use your medium spar to complete reinforcements. (+0.50% bonus)"); player.setTBWPoins(player.getTBWPoints() + 2); } else if (object.getId() == 9029 && (player.startedTaiBwoWannai == true)) { player.sm("You already reinforced this fence completely!"); } player.sm("You repaired and reinforced the villager's fence with medium spars."); player.setTBWPoins(player.getTBWPoints() + 2); player.refreshTBW(); } }, 10); } //dense = 7sec public static void RepairFenceDense(final Player player, WorldObject object) { if (player.getAttackedBy() != null && player.getAttackedByDelay() > Utils.currentTimeMillis()) { player.getPackets().sendGameMessage( "You can't do this while you're under combat."); return; } else player.refreshTBW(); player.lock(6); player.setNextAnimation(new Animation(2384)); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.setNextAnimation(new Animation(2385)); } }, 1); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { World.spawnTemporaryObject(new WorldObject(object.getId() + 1, object.getType(), object.getRotation(), object.getX(), object.getY(), object.getPlane()), 900000, true); player.setNextAnimation(new Animation(2386)); player.stopAll(); player.getInventory().deleteItem(6285, 1); if (object.getId() == 9028 && (player.startedTaiBwoWannai == true)) { player.sm("You use your dense spar to complete reinforcements. (+ 0.50% bonus)"); player.setTBWPoins(player.getTBWPoints() + 2); } else if (object.getId() == 9029 && (player.startedTaiBwoWannai == true)) { player.sm("You already reinforced this fence completely!"); } player.sm("You repaired and reinforced the villager's fence with some dense spars."); player.setTBWPoins(player.getTBWPoints() + 3); player.refreshTBW(); } }, 7); } }
Spoiler for ThatchSpars.java:
CREATE CLASS
Code:package com.rs.game.player.actions; import com.rs.cache.loaders.ItemDefinitions; import com.rs.game.Animation; import com.rs.game.item.Item; import com.rs.game.minigames.taibwowannai.TaiBwoWannai; import com.rs.game.player.Player; import com.rs.game.player.Skills; import com.rs.game.player.achievements.impl.DiamondCrafterAchievement; import com.rs.net.decoders.handlers.InventoryOptionsHandler; import com.rs.utils.Utils; public class ThatchSpars extends Action { /** * */ public enum Spar { LIGHT(6281, 6305, 5, 10, 2429), MEDIUM(6283, 6305, 10, 25, 2429), DENSE(6285, 6305, 15, 35, 2431); private double experience; private int levelRequired; private int uncut, cut; private int emote; private Spar(int uncut, int cut, double experience, int levelRequired, int emote) { this.uncut = uncut; this.cut = cut; this.experience = experience; this.levelRequired = levelRequired; this.emote = emote; } public int getLevelRequired() { return levelRequired; } public double getExperience() { return experience; } public int getUncut() { return uncut; } public int getCut() { return cut; } public int getEmote() { return emote; } } public static void cut(Player player, Spar spar) { if (player.getInventory().getItems() .getNumberOf(new Item(spar.getUncut(), 1)) <= 1) player.getActionManager().setAction(new ThatchSpars(spar, 1)); else player.getDialogueManager().startDialogue("SparCuttingD", spar); } public static Spar spar; private int quantity; public ThatchSpars(Spar spar, int quantity) { this.spar = spar; this.quantity = quantity; } public boolean checkAll(Player player) { if (!player.getInventory().containsItemToolBelt(946, 1)){ player.getDialogueManager().startDialogue("ItemMessage", "You need a knife to complete the action.", 946); return false; } if (player.getSkills().getLevel(Skills.CRAFTING) < spar .getLevelRequired()) { player.getDialogueManager().startDialogue( "SimpleMessage", "You need a crafting level of " + spar.getLevelRequired() + "to cut a "+ItemDefinitions .getItemDefinitions(spar.getUncut()) .getName().toLowerCase()); return false; } if (!player.getInventory().containsOneItem(spar.getUncut())) { player.getDialogueManager().startDialogue( "SimpleMessage", "You don't have any " + ItemDefinitions .getItemDefinitions(spar.getUncut()) .getName().toLowerCase() + " to cut."); return false; } return true; } @Override public boolean start(Player player) { if (checkAll(player)) { setActionDelay(player, 3); player.sm("You process the " + ItemDefinitions .getItemDefinitions(spar.getUncut()) .getName().toLowerCase() + " to skewer sticks."); player.setNextAnimation(new Animation(spar.getEmote())); return true; } return false; } @Override public boolean process(Player player) { return checkAll(player); } @Override public int processWithDelay(Player player) { player.getInventory().deleteItem(spar.getUncut(), 1); player.getInventory().addItem(spar.getCut(), Utils.random(3, 6)); quantity--; if (quantity <= 0) return -1; player.setNextAnimation(new Animation(spar.getEmote())); // start the // emote and add // 2 delay return 3; } @Override public void stop(final Player player) { setActionDelay(player, 3); } public static boolean isCutting(Player player, Item item1, Item item2) { Item gem = InventoryOptionsHandler.contains(946, item1, item2); if (gem == null) return false; return isCutting(player, spar.getCut()); } public static boolean isCutting(Player player, int sparId) { for (Spar spar : Spar.values()) { if (spar.uncut == sparId) { cut(player, spar); return true; } } return false; } }
Spoiler for BroodooCombat.java:
CREATE CLASS
Code:package com.rs.game.npc.combat.impl; import com.rs.game.Animation; import com.rs.game.Entity; import com.rs.game.ForceTalk; import com.rs.game.Graphics; import com.rs.game.World; import com.rs.game.minigames.taibwowannai.TaiBwoWannai; import com.rs.game.npc.NPC; import com.rs.game.npc.combat.CombatScript; import com.rs.game.npc.combat.NPCCombatDefinitions; import com.rs.game.player.Player; import com.rs.game.player.Skills; import com.rs.game.player.content.Slayer; import com.rs.game.tasks.WorldTask; import com.rs.game.tasks.WorldTasksManager; import com.rs.utils.Utils; public class BroodooCombat extends CombatScript { @Override public Object[] getKeys() { TaiBwoWannai.drainPoints = true; return new Object[] { 2499, 2501, 2503 }; } private String[] randomMessages = {"Vu da Voodoo! Weekah yu!", "Yu can sey i wek u!", "be di templu, ikke kurse u", "Mambooo, dooo, Voodoo!!"}; private String getRandomMessage() { return randomMessages[Utils.random(randomMessages.length - 1)]; } @Override public int attack(NPC npc, Entity target) { final NPCCombatDefinitions defs = npc.getCombatDefinitions(); int damage = 0; npc.setCapDamage(target.getHitpoints() / 4); if (npc.withinDistance(target, 1)) { damage = getRandomMaxHit(npc, defs.getMaxHit(), NPCCombatDefinitions.MELEE, target); npc.setNextAnimation(new Animation(422)); delayHit(npc, 0, target, getMeleeHit(npc, damage)); if (Utils.getRandom(4) == 0) { if (target instanceof Player) { Player player = (Player) target; Player targetPlayer = (Player) target; player.resetReceivedDamage(); int magicskill = 6; int attack = targetPlayer.getSkills().getLevel(Skills.ATTACK); int defence = targetPlayer.getSkills().getLevel(Skills.DEFENCE); int strength = targetPlayer.getSkills().getLevel(Skills.STRENGTH); int ranged = targetPlayer.getSkills().getLevel(Skills.MAGIC); int magic = targetPlayer.getSkills().getLevel(magicskill); npc.setNextAnimation(new Animation(716)); npc.setNextGraphics(new Graphics(105)); npc.setNextForceTalk(new ForceTalk(getRandomMessage())); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { World.sendProjectile(npc, target, 106, 2, 5, 50, 50, 16, 0); } }, 1); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { target.setNextGraphics(new Graphics(107)); if (player.getPrayer().usingPrayer(0, 17) || player.getPrayer().usingPrayer(1, 7)) { player.sm("You 'protected from magic' prayer recoils the weakening effect of the voodoo's..."); stop(); return; } target.setNextGraphics(new Graphics(107)); targetPlayer.getSkills().set(0, attack < 3 ? 0 : attack - (3)); targetPlayer.getSkills().set(1, defence < 3 ? 0 : defence - (3)); targetPlayer.getSkills().set(2, strength < 3 ? 0 : strength - (3)); targetPlayer.getSkills().set(4, ranged < 3 ? 0 : ranged - (3)); targetPlayer.getSkills().set(6, magic < 3 ? 0 : magic - (3)); targetPlayer.getPackets().sendGameMessage("The broodoo victim significantly drains your combat skills."); stop(); } }, 2); } } return 4; } else delayHit(npc, 2, target, getMagicHit(npc, getRandomMaxHit(npc, npc.getMaxHit(), defs.getAttackStyle(), target))); npc.setNextAnimation(new Animation(defs.getAttackEmote())); if (Utils.getRandom(4) == 0) { if (target instanceof Player) { Player player = (Player) target; Player targetPlayer = (Player) target; int attack = targetPlayer.getSkills().getLevel(Skills.ATTACK); int defence = targetPlayer.getSkills().getLevel(Skills.DEFENCE); int strength = targetPlayer.getSkills().getLevel(Skills.STRENGTH); int ranged = targetPlayer.getSkills().getLevel(Skills.RANGE); int magic = targetPlayer.getSkills().getLevel(Skills.MAGIC); npc.setNextAnimation(new Animation(716)); npc.setNextGraphics(new Graphics(105)); npc.setNextForceTalk(new ForceTalk(getRandomMessage())); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { World.sendProjectile(npc, target, 106, 5, 5, 50, 50, 16, 0); } }, 1); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { target.setNextGraphics(new Graphics(107)); if (player.getPrayer().usingPrayer(0, 17) || player.getPrayer().usingPrayer(1, 7)) { player.sm("You 'protected from magic' prayer recoils the weakening effect of the voodoo's."); stop(); if (Utils.getRandom(2) == 0) { target.setNextGraphics(new Graphics(107)); targetPlayer.getSkills().set(0, attack < 1 ? 0 : attack - (1)); targetPlayer.getSkills().set(1, defence < 1 ? 0 : defence - (1)); targetPlayer.getSkills().set(2, strength < 1 ? 0 : strength - (1)); targetPlayer.getSkills().set(4, ranged < 1 ? 0 : ranged - (1)); targetPlayer.getSkills().set(6, magic < 1 ? 0 : magic - (1)); player.sm("...But the voodoo's spell was powerfull! it managed to drain 1 point/stat"); stop(); return; } stop(); return; } target.setNextGraphics(new Graphics(107)); targetPlayer.getSkills().set(0, attack < 3 ? 0 : attack - (3)); targetPlayer.getSkills().set(1, defence < 3 ? 0 : defence - (3)); targetPlayer.getSkills().set(2, strength < 3 ? 0 : strength - (3)); targetPlayer.getSkills().set(4, ranged < 3 ? 0 : ranged - (3)); targetPlayer.getSkills().set(6, magic < 3 ? 0 : magic - (3)); targetPlayer.getPackets().sendGameMessage("The broodoo victim significantly drains your combat skills."); stop(); } }, 5); } } return 4; } public int usingProtectFromMagic(Player player) { if (player != null) { boolean prot = player.getPrayer().usingPrayer(0, 17) || player.getPrayer().usingPrayer(1, 7); if (prot) { player.sm("You 'protected from magic' prayer recoils the weakening effect of the voodoo's."); return 1; } } return 0; } }
Spoiler for Player.java:
Under public boolean canSpawn() {Code:public boolean introducedTaiBwoWannai = false; //minigame introduction public boolean startedTaiBwoWannai = false; //minigame public boolean finishedTaiBwoWannai = false; //end public long pointsDegeneration; //Tai Bwo Wannai minigame @Override public void checkTaiBwoWannai() { if (!started) return; boolean isAtTaiBwoWannai = isForceTaiBwoWannai() ? true : World.isTaiBwoWannai(this); if (isAtTaiBwoWannai && startedTaiBwoWannai == true && !isAtTaiBwoWannai()) { getControlerManager().startControler("TaiBwoWannai"); refreshTBW(); } else if (!isAtTaiBwoWannai) { startedTaiBwoWannai = false; getInterfaceManager().closeTaiBwoWannai(); } } public int setTBWFavourPoints ; int TBW = 0; public int getTBWPoints() { return TBW; } public void setTBWPoins(int TBW) { this.TBW = TBW; } public boolean touchedDoor; public long EXCHANGED; private int ticks; public void refreshTBW() { WorldTasksManager.schedule(new WorldTask() { private int ticks; @Override public void run() { ticks++; if (ticks == 1) { if (getTBWPoints() > 400) { getInterfaceManager().sendTab(getInterfaceManager().hasRezizableScreen() ? 11 : 0, 377); getPackets().sendIComponentText(377, 4, "<col=00ff37>100%"); } getInterfaceManager().sendTab(getInterfaceManager().hasRezizableScreen() ? 11 : 0, 377); getPackets().sendConfig(535, +getTBWPoints()); } else if (ticks == 2) { getPackets().sendConfig(535, +getTBWPoints()); ticks = 1; } } }, 0, 0); }
Code:|| getControlerManager().getControler() instanceof TaiBwoWannai
Spoiler for World.java:
PASTE RANDOMLY
Code:public static final boolean isTaiBwoWannai(WorldTile tile) { int destX = tile.getX(); int destY = tile.getY(); return (tile.getX() >= 2750 && tile.getY() >= 3026 && tile.getX() <= 2848 && tile.getY() <= 3113); }
Under private static void checkControlersAtMove(Player player) {
Under getRegion(regionId).addNPCIndex(entity.getIndex()) ;Code:else if (TaiBwoWannai.inArea(player)) player.getControlerManager().startControler("TaiBwoWannai");
}
Code:entity.checkTaiBwoWannai();
Spoiler for Woodcutting.java:
PASTE RANDOMLY
Under public static enum TreeDefinitions {Code:public static boolean hasMachete(Player player) { if (player.getInventory().containsItemToolBelt(975) || player.getInventory().containsItemToolBelt(6313) || player.getInventory().containsItemToolBelt(6315) || player.getInventory().containsItemToolBelt(6317)) { return true; } if (player.getInventory().containsOneItem(975, 6313, 6315, 6317)) return true; int weaponId = player.getEquipment().getWeaponId(); if (weaponId == -1) return false; switch (weaponId) { case 975:// normal Machete case 6313:// Opal Machete case 6315:// Jade Machete case 6317:// Topal Machete return true; default: return false; } }
Code:/** * TaiBwoWannai mini-game */ LIGHT_JUNGLE_3(10, 10, 6281, 24, 10, 9011, 120, 0), LIGHT_JUNGLE_2(10, 10, 6281, 22, 10, 9012, 180, 0), LIGHT_JUNGLE_1(10, 10, 6281, 20, 10, 9013, 240, 0), LIGHT_JUNGLE_OUT(10, 10, 6281, 20, 10, 9014, 360, 0), MEDIUM_JUNGLE_3(20, 18, 6283, 32, 16, 9016, 180, 0), MEDIUM_JUNGLE_2(20, 18, 6283, 30, 16, 9017, 240, 0), MEDIUM_JUNGLE_1(20, 18, 6283, 28, 16, 9018, 360, 0), MEDIUM_JUNGLE_OUT(20, 18, 6283, 28, 16, 9019, 480, 0), DENSE_JUNGLE_3(35, 40, 6285, 52, 20, 9021, 240, 0), DENSE_JUNGLE_2(35, 40, 6285, 50, 20, 9022, 360, 0), DENSE_JUNGLE_1(35, 40, 6285, 48, 20, 9023, 480, 0), DENSE_JUNGLE_OUT(35, 40, 6285, 46, 20, 9024, 560, 0);
Under private boolean checkAll(Player player) {
if (!hasWoodcuttingLevel(player))
return false;
Under public static int getAxeAnim(Player player) {Code:if (!hasMachete(player) && (definitions == TreeDefinitions.LIGHT_JUNGLE_1 || definitions == TreeDefinitions.LIGHT_JUNGLE_OUT || definitions == TreeDefinitions.LIGHT_JUNGLE_3 || definitions == TreeDefinitions.LIGHT_JUNGLE_2 || (definitions == TreeDefinitions.MEDIUM_JUNGLE_1 || definitions == TreeDefinitions.MEDIUM_JUNGLE_OUT || definitions == TreeDefinitions.MEDIUM_JUNGLE_3 || definitions == TreeDefinitions.MEDIUM_JUNGLE_2 || definitions == TreeDefinitions.DENSE_JUNGLE_1 || definitions == TreeDefinitions.DENSE_JUNGLE_OUT || definitions == TreeDefinitions.DENSE_JUNGLE_3 || definitions == TreeDefinitions.DENSE_JUNGLE_2))) { player.getPackets().sendGameMessage( "You need a machete to cut these jungles vines."); return false; }
Under private boolean setAxe(Player player) {Code:case 6317: // red topaz machete return 6087; case 6315: // jade machete return 6086; case 6313: // opal machete return 6085; case 975: // machete return 2382;
Under private void addLog(Player player) {Code:case 6317: // red topaz machete emoteId = 6087; axeTime = 6; return true; case 6315: // jade machete emoteId = 6086; axeTime = 5; return true; case 6313: // opal machete emoteId = 6085; axeTime = 3; return true; case 975: // machete emoteId = 2382; axeTime = 1; return true;
Code:if (definitions == TreeDefinitions.DENSE_JUNGLE_1 || definitions == TreeDefinitions.DENSE_JUNGLE_2 || definitions == TreeDefinitions.DENSE_JUNGLE_3) { if (Utils.random(6) < 1) { if (player.startedTaiBwoWannai == true) { player.setTBWPoins(player.getTBWPoints() + 1); if (player.getTBWPoints() > 400) { player.sm("Maximum favour limit, nothing is gained from cutting more."); return; } } player.lock(2); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.stopAll(); player.lock(1); World.spawnNPC(Utils.random(2489, 2503), new WorldTile(player.getX(), player.getY() - 1, 0), -1, true); player.sm("You have encountered a dense vine mob!"); player.setNextAnimation(new Animation(2612)); } }, 1); return; } else { WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.lock(1); player.setNextAnimation(new Animation(2387)); stop(); } }, 1); } } if (definitions == TreeDefinitions.MEDIUM_JUNGLE_1 || definitions == TreeDefinitions.MEDIUM_JUNGLE_2 || definitions == TreeDefinitions.MEDIUM_JUNGLE_3) { if (Utils.random(7) < 1) { if (player.startedTaiBwoWannai == true) { player.setTBWPoins(player.getTBWPoints() + 1); if (player.getTBWPoints() > 400) { player.sm("Maximum favour limit, nothing is gained from cutting more."); return; } } player.lock(2); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.stopAll(); player.lock(1); World.spawnNPC(Utils.random(2489, 2497), new WorldTile(player.getX(), player.getY() - 1, 0), -1, true); player.sm("You have encountered a vine mob!"); player.setNextAnimation(new Animation(2612)); } }, 1); return; } else { WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.lock(1); player.setNextAnimation(new Animation(2387)); stop(); } }, 1); } } if (definitions == TreeDefinitions.LIGHT_JUNGLE_1 || definitions == TreeDefinitions.LIGHT_JUNGLE_3 || definitions == TreeDefinitions.LIGHT_JUNGLE_2) { if (Utils.random(3) < 1) { if (player.startedTaiBwoWannai == true) { player.setTBWPoins(player.getTBWPoints() + 1); if (player.getTBWPoints() > 400) { player.sm("Maximum favour limit, nothing is gained from cutting more."); return; } } player.lock(2); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.stopAll(); player.lock(1); World.spawnNPC(Utils.random(2489, 2495), new WorldTile(player.getX(), player.getY() - 1, 0), -1, true); player.sm("You have encountered a insect!"); player.setNextAnimation(new Animation(2612)); } }, 1); return; } else { WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.lock(1); player.setNextAnimation(new Animation(2387)); stop(); } }, 1); } } if (definitions == TreeDefinitions.LIGHT_JUNGLE_OUT || definitions == TreeDefinitions.MEDIUM_JUNGLE_OUT) { if (Utils.random(8) < 1) { if (player.startedTaiBwoWannai == true) { player.setTBWPoins(player.getTBWPoints() + 1); if (player.getTBWPoints() > 400) { player.sm("Maximum favour limit, nothing is gained from cutting more."); return; } } player.lock(4); player.setNextAnimation(new Animation(27246)); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.sm("You found a small gem rock while cutting jungles!"); World.spawnTemporaryObject(new WorldObject(9030, tree.getType(), tree.getRotation(), tree.getX(), tree.getY(), tree.getPlane()), definitions.respawnDelay * 600, false); player.setNextAnimation(new Animation(27247)); stop(); } }, 2); } else if (Utils.random(7) < 1) { player.sm("You found a gout tuber between the bush!"); World.addGroundItem(new Item(6311, 1), new WorldTile(tree.getX(), tree.getY(), tree.getPlane()), player, false, 60, true); player.setNextAnimation(new Animation(6840)); } } if (definitions == TreeDefinitions.DENSE_JUNGLE_OUT && Utils.random(7) < 1) { if (player.startedTaiBwoWannai == true) { player.setTBWPoins(player.getTBWPoints() + 1); if (player.getTBWPoints() > 400) { player.sm("Maximum favour limit, nothing is gained from cutting more."); return; } } player.lock(4); player.setNextAnimation(new Animation(27246)); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { player.sm("You found a small gem rock while cutting jungles!"); World.spawnTemporaryObject(new WorldObject(9030, tree.getType(), tree.getRotation(), tree.getX(), tree.getY(), tree.getPlane()), definitions.respawnDelay * 600, false); player.setNextAnimation(new Animation(27247)); stop(); } }, 2); }
Spoiler for Food.java:
Under public static enum Food {
Under public static enum Effect {Code:SPIDER_ON_STICK(6297, Utils.random(7, 10), Effect.SPIDER_ON_STICK),
Code:SPIDER_ON_STICK { @Override public void effect(Object object) { Player player = (Player) object; player.getInventory().addItem(6305, 1); player.getPackets().sendGameMessage( "Yaikess.. Full of protein, you removed the spider and re-use the skewer stick.", true); } },
Spoiler for Cooking.java:
Under public enum Cookables {
Code:/** * Spider on stick */ SPIDER_ON_STICK(new Item(6293, 1), 16, 40, 48, new Item(6301, 1), new Item(6297, 1), false, false);
Spoiler for NPC.java:
PASTE RANDOMLY (spawn a NPC guard next to the tree encampment, and force talk if player tries to enter. or right click > quick-pay)
Under public void drop() {Code:public static void TBWdoorWarning(Player player, NPC npc) { if (player.touchedDoor == true) { npc.faceEntity(player); String[] warning = {"Hey! Stop right there.", "What do you think your doing?", "Stand ground adventurer!", "Show tickets before entering!"}; int i = Misc.random(1, 4); if (npc.getName().equalsIgnoreCase("Guard")) { npc.setNextForceTalk(new ForceTalk(warning[i])); } } }
Under public void processNPC() {Code:if (this.getId() >= 2489 && this.getId() <= 2497) { //TaiBwoWannai jungle species int loop = 0; NPCDefinitions defs = NPCDefinitions.getNPCDefinitions(id); String name = defs.getName().toLowerCase(); if (killer1.startedTaiBwoWannai == true) { if (killer1.getTBWPoints() > 401) { killer.sm("You achieved maximum favour and nothing is gained from killing more."); return; } loop++; if (loop == 1) { killer.sm("You slayed a "+name+" and gained some favour in return."); killer1.setTBWPoins(killer1.getTBWPoints() + 2); } else if (loop == 4) { killer1.refreshTBW(); killer.refreshTBW(); } } } if (this.getId() >= 2499 && this.getId() <= 2503) { //TaiBwoWannai jungle broodoos int loop = 0; if (killer1.startedTaiBwoWannai == true) { if (killer1.getTBWPoints() > 401) { killer.sm("You achieved maximum favour and nothing is gained from killing more."); return; } loop++; if (loop == 1) { killer.sm("You neutralized the village greatest threat, +2.0% favour gained."); killer1.setTBWPoins(killer1.getTBWPoints() + 8); } else if (loop == 4) { killer1.refreshTBW(); killer.refreshTBW(); } } }
Code://broodoos if (id >= 2489 && id <= 2503) { setRandomWalk(true); setForceAgressive(true); }
Spoiler for ObjectHandler.java:
(Should've handled it in controller class)
you should know where to add them.
PASTE RANDOMLY
Somewhere under handleOption1Code:public static boolean handleTBWCamp(Player player, WorldObject object) { return handleDoor(player, object, 300); }
Code://TBW tree encampment else if (id == 9038 || id == 9039) { if (player.withinDistance(object, 1)) { if (player.getX() == 2817) { player.lock(3); handleTBWCamp(player, object); player.addWalkSteps(player.getX() == 2817 ? 2816 : 2817, player.getY() == 3083 ? 3083 : 3083, 0, false); player.setRun(false); return; } else player.getDialogueManager().startDialogue("TBWTreeCamp"); } }
Somewhere under handleOption2Code:case "tribal statue": TaiBwoWannai.prayTribalStatue(player); break; if (id == 9025 || id == 9026 || id == 9027 || id == 9028) { TaiBwoWannai.CheckSpar(player, object); } if (id == 9029 && (player.startedTaiBwoWannai == true)) { player.getDialogueManager().startDialogue("SimpleMessage", "You already reinforced this fence completely!"); } /* Jungle Light Vines */ }else if (id == 9010) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.LIGHT_JUNGLE_3)); }else if (id == 9011) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.LIGHT_JUNGLE_2)); }else if (id == 9012) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.LIGHT_JUNGLE_1)); }else if (id == 9013) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.LIGHT_JUNGLE_OUT)); /** Jungle Medium Vines */ }else if (id == 9015) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.MEDIUM_JUNGLE_3)); }else if (id == 9016) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.MEDIUM_JUNGLE_2)); }else if (id == 9017) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.MEDIUM_JUNGLE_1)); }else if (id == 9018) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.MEDIUM_JUNGLE_OUT)); /*** Jungle Dense Vines */ }else if (id == 9020) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.DENSE_JUNGLE_3)); }else if (id == 9021) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.DENSE_JUNGLE_2)); }else if (id == 9022) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.DENSE_JUNGLE_1)); }else if (id == 9023) { player.getActionManager().setAction(new Woodcutting(object, TreeDefinitions.DENSE_JUNGLE_OUT)); /*** */
Code://TBW tree encampment else if (id == 9038 || id == 9039) { if (player.getX() == 2817) { handleTBWCamp(player, object); player.addWalkSteps(player.getX() == 2817 ? 2816 : 2817, player.getY() == 3083 ? 3083 : 3083, 0, false); player.setRun(false); return; } if (player.getInventory().containsItem(6306, 100)) { player.getInventory().deleteItem(6306, 100); player.lock(3); handleTBWCamp(player, object); player.addWalkSteps(player.getX() == 2816 ? 2817 : 2816, player.getY() == 3083 ? 3083 : 3083, 0, false); player.setRun(false); } else { player.getDialogueManager().startDialogue("SimpleMessage", "100 trading sticks are requiered to enter this Tree encampment."); } }
Spoiler for TBWTreeCamp.java dialogue:
CREATE CLASS
Code:package com.rs.game.player.dialogues.karamja; import com.rs.game.World; import com.rs.game.WorldObject; import com.rs.game.WorldTile; import com.rs.game.item.Item; import com.rs.game.npc.NPC; import com.rs.game.player.Player; import com.rs.game.player.actions.objects.Lumbridge; import com.rs.game.player.dialogues.Dialogue; import com.rs.net.decoders.handlers.ObjectHandler; public class TBWTreeCamp extends Dialogue { int npcId = 344; public WorldObject object; @Override public void start() { player.touchedDoor = true; for (NPC n : World.getNPCs()) if (n.getName().equalsIgnoreCase("Guard")) { player.setNextFaceEntity(n); NPC.TBWdoorWarning(player, n); sendNPCDialogue(npcId, 9827, "What do you think you'r doing? This area is restricted."); } player.cancelFaceEntityNoCheck(); } @Override public void run(int interfaceId, int componentId) { switch (stage) { case -1: player.cancelFaceEntityNoCheck(); sendPlayerDialogue(9827, "Why restricted? Is there another way to enter this 'camp'?"); player.touchedDoor = false; stage = 0; break; case 0: sendNPCDialogue(npcId, 9827, "Yes; Players may enter this tree encampment by paying 100-trading sticks."); stage = 1; break; case 1: if (player.getInventory().containsItem(6306, 100)) { sendOptionsDialogue("Choose an Option", "Yes, i'll pay.", "No, that's too expensive."); stage = 12; break; } else sendOptionsDialogue("Choose an Option", "What are trading sticks?", "How can i obtain these sticks?", "Nevermind."); stage = 2; break; case 2: if(componentId == OPTION_1) { sendPlayerDialogue(9827, "So what are these 'trading sticks'?, explain please."); stage = 3; break; } else if(componentId == OPTION_2) { sendPlayerDialogue(9827, "And how i obtain these trading-sticks?"); stage = 7; break; } else if(componentId == OPTION_3) { sendPlayerDialogue(9827, "Nevermind, im good."); stage = 22; break; } break; case 3: sendNPCDialogue(npcId, 9827, "Trading sticks is a currency in the Tai Bwo Wannai minigame, and is mostly used to buy several items."); stage = 4; break; case 4: sendNPCDialogue(npcId, 9827, "There are several villagers that accept these sticks for machetes, villager's robes and other goodies."); stage = 5; break; case 5: sendOptionsDialogue("Choose an Option", "How can i obtain these sticks?", "Got it, thanks!."); stage = 6; break; case 6: //inter q_dialogue if(componentId == OPTION_1) { sendPlayerDialogue(9827, "And how can i obtain these then?"); stage = 7; break; } else if(componentId == OPTION_2) { sendPlayerDialogue(9827, "I guess i know enough, thanks!"); stage = 22; break; } break; case 7: sendNPCDialogue(npcId, 9827, "These can be obtain by playing the minigame itself, " + " favour will be gained by doing various activities. " + " Once obtained, talk to a villager for a exchange."); stage = 8; break; case 8: sendNPCDialogue(npcId, 9827, "Players may not exchange their favour for tickets if they haven't repaired a fence part," + " though you can earn more favour by cutting jungles, and slaying monsters."); stage = 9; break; case 9: sendPlayerDialogue(9827, "Is there more to it?"); stage = 10; break; case 10: sendNPCDialogue(npcId, 9827, "If you want a more detailed explination about the minigame, talk to Tutrifitus. He can guide and inform you."); stage = 11; break; case 11: sendPlayerDialogue(9827, "Thanks!"); stage = 22; break; case 12: if(componentId == OPTION_1) { if (player.getInventory().containsItem(6306, 100)) { player.getInventory().deleteItem(6306, 100); player.lock(3); // player.getDialogueManager().startDialogue(6306, "You hand over the trading-sticks..."); end(); player.addWalkSteps(player.getX() == 2816 ? 2817 : 2816, player.getY() == 3083 ? 3083 : 3083, 0, false); player.setRun(false); stage = 22; break; } else if(componentId == OPTION_2) { sendPlayerDialogue(9827, "Nah, that's too expensive..."); stage = 14; break; } break; } case 14: sendNPCDialogue(npcId, 9827, "Not even for the best teak tree area in the whole world...?"); stage = 22; break; case 22: default: end(); break; } } @Override public void finish() { } }
Spoiler for Gabooty.java dialogue :
CREATE CLASS
Code:package com.rs.game.player.dialogues.karamja; import com.rs.game.minigames.taibwowannai.TaiBwoWannai; import com.rs.game.player.dialogues.Dialogue; import com.rs.utils.ShopsHandler; import com.rs.utils.Utils; public class Gabooty extends Dialogue { private int npcId = 2521; private boolean amount10 = false; private boolean amount25 = false; private boolean amount50 = false; private boolean amount100 = false; @Override public void start() { sendNPCDialogue(npcId, 9827, "My name's Gabooty, how can i be of service "+player.getDisplayName()+"?" ); } @Override public void run(int interfaceId, int componentId) { switch(stage) { case -1: stage = 0; sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "<col=42d9f4>[EXC]</col> I want to exchange my favour to trading sticks.", "I would like to see one of your commercial stores.", "I'd like to know who are you and what you'r doing here.", "Just wanted to start a conversation."); break; case 0: if(componentId == OPTION_1) { stage = 1; sendPlayerDialogue(9827, "I'm here to exchange my favour points to trading sticks."); break; } else if (componentId == OPTION_2) { stage = 3; sendPlayerDialogue(9827, "Who are you exactly?"); break; } else if (componentId == OPTION_3) end(); break; case 1: if (player.EXCHANGED >= Utils.currentTimeMillis ()) { sendNPCDialogue(npcId, 9827, "You've recently traded in your favour points, come back later."); player.getPackets().sendGameMessage("Villager's will be able to trade again after 30 minutes from the trade before."); stage = 15; return; } sendNPCDialogue(npcId, 9827, "Sure thing, how many points would you like to trade in for trading sticks?"); stage = 2; break; case 2: sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "<col=42d9f4>[EXC]</col> 10% Favour > 100 Trading-sticks.", "<col=42d9f4>[EXC]</col> 25% Favour > 250 Trading-sticks.", "<col=42d9f4>[EXC]</col> 50% Favour > 500 Trading-sticks.", "<col=42d9f4>[EXC]</col> 100% Favour > 1000 Trading-sticks."); stage = 3; break; case 3: if(componentId == OPTION_1) { stage = 4; sendNPCDialogue(npcId, 9827, "You are about to trade in 10% favour for 100 trading stick. Confirm?"); amount10 = true; break; } else if (componentId == OPTION_2) { stage = 4; sendNPCDialogue(npcId, 9827, "You are about to trade in 25% favour for 250 trading stick. Confirm?"); amount25 = true; break; } else if (componentId == OPTION_3) { stage = 4; sendNPCDialogue(npcId, 9827, "You are about to trade in 50% favour for 500 trading stick. Confirm?"); amount50 = true; break; } else if (componentId == OPTION_4) { stage = 4; sendNPCDialogue(npcId, 9827, "You are about to trade in 100% favour for 1000 trading stick. Confirm?"); amount100 = true; break; } break; case 4: sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "Confirm.", "Cancel"); stage = 5; break; case 5: if(componentId == OPTION_1) { if (amount10 == true) { sendPlayerDialogue(9827, "Yes, i'd like to exchange."); stage = 9; } else if (amount25 == true) { sendPlayerDialogue(9827, "Yes, i'd like to exchange."); stage = 16; } else if (amount50 == true) { sendPlayerDialogue(9827, "Yes, i'd like to exchange."); stage = 17; } else if (amount100 == true) { sendPlayerDialogue(9827, "Yes, i'd like to exchange."); stage = 18; } break; } else if (componentId == OPTION_2) { stage = -2; sendPlayerDialogue(9827, "I changed up my mind."); end(); break; } break; case 6: sendNPCDialogue(npcId, 9827, "Thanks for helping around the village!"); stage = 7; break; case 7: sendPlayerDialogue(9827, "Pleasure is mine!"); stage = -2; end(); break; case 77: stage = 8; sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "Yea, i'd like to have a look please.", "I'm alright, thanks."); break; case 8: if(componentId == OPTION_1) { stage = -2; ShopsHandler.openShop(player, 100); end(); break; } else if (componentId == OPTION_2) { stage = -2; sendPlayerDialogue(9827, "No thank you."); end(); break; } break; case 9: //10% if (player.getTBWPoints() < 40) { sendNPCDialogue(npcId, 9827, "It seems you have not accumulated sufficient favour points, please come back when you have some "); stage = -2; return; } sendItemDialogue(6306, "Gabooty hands you over some trading sticks > (100)."); player.getInventory().addItem(6306, 100); player.setTBWPoins(player.getTBWPoints() - 40); player.EXCHANGED = 1800000 + Utils.currentTimeMillis(); // 30min amount10 = false; stage = 13; break; case 16: //25% if (player.getTBWPoints() < 100) { sendNPCDialogue(npcId, 9827, "It seems you have not accumulated sufficient favour points, please come back when you have some."); stage = -2; return; } sendItemDialogue(6306, "Gabooty hands you over some trading sticks > (250)."); player.getInventory().addItem(6306, 250); player.setTBWPoins(player.getTBWPoints() - 100); player.EXCHANGED = 1800000 + Utils.currentTimeMillis(); // 30min amount25 = false; stage = 13; break; case 17: //50% if (player.getTBWPoints() < 200) { sendNPCDialogue(npcId, 9827, "It seems you have not accumulated sufficient favour points, please come back when you have some."); stage = -2; return; } sendItemDialogue(6306, "Gabooty hands you over some trading sticks > (500)."); player.getInventory().addItem(6306, 500); player.setTBWPoins(player.getTBWPoints() - 200); player.EXCHANGED = 1800000 + Utils.currentTimeMillis(); // 30min amount50 = false; stage = 13; break; case 18: //100% if (!(player.getTBWPoints() > 400)) { sendNPCDialogue(npcId, 9827, "It seems you have not accumulated sufficient favour points, please come back when you have some."); stage = -2; return; } sendItemDialogue(6306, "Gabooty hands you over some trading sticks > (1000)."); player.getInventory().addItem(6306, 1000); player.setTBWPoins(player.getTBWPoints() - 400); player.EXCHANGED = 1800000 + Utils.currentTimeMillis(); // 30min amount100 = false; stage = 13; break; case 10: sendPlayerDialogue(9827, "That's fairly true..."); stage = -1; break; case 13: sendNPCDialogue(npcId, 9827, "It's a pleasure doing these exchanges! Thanks for helping out the village."); stage = 14; break; case 14: sendPlayerDialogue(9827, "Pleasure is mine!"); stage = 15; break; case 15: end(); stage = -2; break; default: end(); break; } } @Override public void finish() { // TODO Auto-generated method stub } }
Spoiler for Trufitus.java dialogue:
CREATE CLASS
Code:package com.rs.game.player.dialogues.karamja; import com.rs.cache.loaders.NPCDefinitions; import com.rs.game.Animation; import com.rs.game.Graphics; import com.rs.game.World; import com.rs.game.minigames.taibwowannai.TaiBwoWannai; import com.rs.game.player.dialogues.Dialogue; import com.rs.game.player.quest.AdrougneEasyDiary; import com.rs.utils.ShopsHandler; import com.rs.utils.Utils; public class Trufitus extends Dialogue { private int npcId; @Override public void start() { npcId = 740; sendEntityDialogue( SEND_2_TEXT_CHAT, new String[] { NPCDefinitions.getNPCDefinitions(npcId).name, "Salutions, "+player.getUsername()+"! What brings you to this small village?" }, IS_NPC, npcId, 9827); stage = 0; } @Override public void run(int interfaceId, int componentId) { switch (stage) { case 0: sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "<img=7>Ask about Tai-Bwo-Wannai minigame", "What is this tree encampment?", "Who are you?"); stage = 1; break; case 1: switch (componentId) { case OPTION_1: sendNPCDialogue(npcId, 9850, "Alright, the following minigame is called Tai Bwo Wannai and can be a dangerous minigame."); stage = 25; break; case OPTION_2: sendPlayerDialogue(9827, "What is this tree-encampent?"); stage = 20; break; case OPTION_3: stage = -2; sendPlayerDialogue(9827, "Nevermind."); break; } break; case 25: sendNPCDialogue(npcId, 9827, "The villagers who start to return are only overrun by jungle envoirment and other nasty suprises making it for most inaccessible."); stage = 4; break; case 4: sendNPCDialogue(npcId, 9827, "In order to help out, you must cut your way through jungles; repair fences, and slay monsters."); stage = 5; break; case 5: sendPlayerDialogue(9827, "Where was the fence for?"); stage = 6; break; case 6: sendNPCDialogue(npcId, 9827, "It was to keep monsters away from the village, especially the scary broodoo victims. they attacked citizens with frightening vodoo magic. "); stage = 7; break; case 7: sendNPCDialogue(npcId, 9827, "At all cost, the player MUST repair atleast 3 pieces of the fence in order to exchange the points into trading sticks."); stage = 8; break; case 8: stage = 11; sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "What if i don't?", "Is there more?", player.startedTaiBwoWannai == true ? "I want to quit please." : "I'd like to start." ); break; case 11: switch (componentId) { case OPTION_1: sendPlayerDialogue(9827, "So if it happens i forgot to repair a fence, and like to trade in the points, can i?"); stage = 12; break; case OPTION_2: stage = 26; sendPlayerDialogue(9827, "Roger!"); break; case OPTION_3: stage = 29; sendPlayerDialogue(9827, "I'd like to start! Let's go!"); break; } break; case 12: sendNPCDialogue(npcId, 9850, "If one forgets to repair the fence, the villagers will be angry and not trade in the points you earned for 30 minutes."); stage = 13; break; case 13: sendNPCDialogue(npcId, 9850, "That is so, because the citizens of the village don't feel protected enough. Eitherway, you'll have to wait 30 minutes after a successfull exchange."); stage = 14; break; case 14: sendPlayerDialogue(9850, "Guess it comes down to the same thing..."); stage = 0; break; case 20: sendNPCDialogue(npcId, 9850, "This encampment contains; 4 Mahogany trees, and 9 teak trees, and can only be accessed by paying 100-Trading sticks."); stage = 21; break; case 21: sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE, "How do i earn these Trading sticks?", "Thanks!"); stage = 22; break; case 22: switch (componentId) { case OPTION_1: sendPlayerDialogue(9827, "How do i earn these Trading sticks?"); stage = 23; break; case OPTION_2: stage = -2; sendPlayerDialogue(9827, "Thanks!"); break; } break; case 23: sendNPCDialogue(npcId, 9850, "Trading sticks can be earned by playing the Tai-Bwo-Wannai minigame!"); stage = 24; break; case 24: sendPlayerDialogue(9827, "Awesome, Thanks!"); stage = -2; break; case 26: sendNPCDialogue(npcId, 9850, "as mentioned earlier; this can be quite dangerous, many obstacles and monsters lurk within these areas. It is advised the player brings the following:"); stage = 27; break; case 27: TaiBwoWannai.sendPrepare(player); player.introducedTaiBwoWannai = true; stage = -2; end(); break; case 28: sendPlayerDialogue(9827, "Thanks!"); stage = -2; break; case 29: if (player.startedTaiBwoWannai == true) { sendNPCDialogue(npcId, 9850, "You have already started the mini-game! get back to it."); stage = -2; return; } if (player.introducedTaiBwoWannai == true && player.startedTaiBwoWannai == false) { sendNPCDialogue(npcId, 9850, "Best of luck, Adventurer!"); player.sm("You have started the <img=7> <col=ff0000>Tai-Bwo-Wannai</col> mini-game, good luck!"); player.startedTaiBwoWannai = true; stage = -2; return; } else sendNPCDialogue(npcId, 9850, "It'd be wise to let me finish the essential requirements for survival"); player.sm("Let Trufitus explain what you might need before starting."); stage = -2; break; default: end(); break; } } @Override public void finish() { } }
Spoiler for DialogueHandler.java:Trufitus
Code:handledDialogues.put("Gabooty", (Class<Dialogue>) Class.forName(Gabooty.class.getCanonicalName())); handledDialogues.put("Trufitus", (Class<Dialogue>) Class.forName(Trufitus.class.getCanonicalName())); handledDialogues.put("TBWTreeCamp", (Class<Dialogue>) Class.forName(TBWTreeCamp.class.getCanonicalName()));
Spoiler for SparCuttingD.java:
CREATE CLASS
Code:package com.rs.game.player.dialogues.impl.skilling; import com.rs.game.player.actions.GemCutting; import com.rs.game.player.actions.GemCutting.Gem; import com.rs.game.player.actions.ThatchSpars; import com.rs.game.player.actions.ThatchSpars.Spar; import com.rs.game.player.content.SkillsDialogue; import com.rs.game.player.dialogues.Dialogue; public class SparCuttingD extends Dialogue { private Spar spar; @Override public void start() { this.spar = (Spar) parameters[0]; SkillsDialogue .sendSkillsDialogue( player, SkillsDialogue.CUT, "Choose how many you wish to cut,<br>then click on the item to begin.", player.getInventory().getItems() .getNumberOf(spar.getUncut()), new int[] { spar.getUncut() }, null); } @Override public void run(int interfaceId, int componentId) { player.getActionManager().setAction( new ThatchSpars(spar, SkillsDialogue.getQuantity(player))); end(); } @Override public void finish() { } }
Spoiler for InterfaceManager.java:
PASTE RANDOMLY
Code:public void closeTaiBwoWannai() { player.closeInterfaces(); player.getInterfaceManager().removeWindowInterface(player.getInterfaceManager().hasRezizableScreen() ? 0 : 11); player.getInterfaceManager().closeScreenInterface(); player.startedTaiBwoWannai = false; return; }
Spoiler for Entity.java:
PASTE RANDOMLY
Code:public transient boolean TaiBwoWannai; public transient boolean forceTaiBwoWannai; public static boolean TaiBwoWannai(WorldTile tile) { return (tile.getX() >= 3249 && tile.getY() >= 3441 && tile.getX() <= 3268 && tile.getY() <= 3456); } public void checkTaiBwoWannai() { TaiBwoWannai = forceTaiBwoWannai ? true : World.isTaiBwoWannai(this); } public boolean isAtTaiBwoWannai() { return TaiBwoWannai; } public void setAtTaiBwoWannai(boolean TaiBwoWannai) { this.TaiBwoWannai = TaiBwoWannai; } public boolean isForceTaiBwoWannai() { return forceTaiBwoWannai; } public void setForceTaiBwoWannai(boolean forceTaiBwoWannai) { this.forceTaiBwoWannai = forceTaiBwoWannai; checkTaiBwoWannai(); }
btw i dont have checkInstancesAtMove
btw good stuff u relased man
keep it up love it
if code thanks man
« Trollheim Expansion | [NEW] Highscores ~ Built with Bootstrap ~ Easy to Setup » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |
Posting Permissions |
|