Thread: [REL] Tai Bwo Wannai Minigame!

Results 1 to 5 of 5
  1. #1 [REL] Tai Bwo Wannai Minigame! 
    Registered Member PhaseGFX's Avatar
    Join Date
    Oct 2012
    Age
    25
    Posts
    156
    Thanks given
    19
    Thanks received
    41
    Rep Power
    51
    R-S Mod Response  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:


    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);
        	}
    Under public boolean canSpawn() {

    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) {

    Code:
    		else if (TaiBwoWannai.inArea(player))
    			player.getControlerManager().startControler("TaiBwoWannai");
    Under getRegion(regionId).addNPCIndex(entity.getIndex()) ;
    }


    Code:
    entity.checkTaiBwoWannai();

    Spoiler for Woodcutting.java:


    PASTE RANDOMLY

    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;
    		}
    	}
    Under public static enum TreeDefinitions {

    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;


    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 public static int getAxeAnim(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 boolean setAxe(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;
    Under private void addLog(Player player) {

    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 {

    Code:
    		SPIDER_ON_STICK(6297, Utils.random(7, 10), Effect.SPIDER_ON_STICK),
    Under public static enum Effect {

    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)

    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 drop() {

    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();
    				     }
                
    					}
    				}
    Under public void processNPC() {

    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

    Code:
    	public static boolean handleTBWCamp(Player player, WorldObject object) {
    		return handleDoor(player, object, 300);
    	}
    Somewhere under handleOption1

    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");		
    		}
    	}
    Code:
    
    
    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));	
    					/*** 
    					 */
    Somewhere under handleOption2

    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();
    	}
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Registered Member

    Join Date
    Mar 2013
    Posts
    369
    Thanks given
    395
    Thanks received
    67
    Rep Power
    76
    btw i dont have checkInstancesAtMove
    Reply With Quote  
     

  4. #3  
    Registered Member PhaseGFX's Avatar
    Join Date
    Oct 2012
    Age
    25
    Posts
    156
    Thanks given
    19
    Thanks received
    41
    Rep Power
    51
    Quote Originally Posted by deaneo8 View Post
    btw i dont have checkInstancesAtMove
    Yea it's not necessary, it's only for instances supported by RS3, not sure why i'd put it there. As long it is under "checkControlerAtMove"
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  5. #4  
    Registered Member

    Join Date
    Mar 2013
    Posts
    369
    Thanks given
    395
    Thanks received
    67
    Rep Power
    76
    btw good stuff u relased man
    keep it up love it

    if code thanks man
    Reply With Quote  
     

  6. Thankful user:


  7. #5  
    Registered Member PhaseGFX's Avatar
    Join Date
    Oct 2012
    Age
    25
    Posts
    156
    Thanks given
    19
    Thanks received
    41
    Rep Power
    51
    Quote Originally Posted by deaneo8 View Post
    btw good stuff u relased man
    keep it up love it

    if code thanks man
    Thanks! You are welcome
    [Only registered and activated users can see links. ]
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Simple Minigame - Puppet Problems
    By Whitey in forum Tutorials
    Replies: 28
    Last Post: 08-06-2007, 11:55 AM
  2. cool minigame (pics coming soon)
    By s4n3sc4p3 in forum Tutorials
    Replies: 7
    Last Post: 06-11-2007, 02:22 AM
  3. Barrows Minigame
    By n33bscape in forum Tutorials
    Replies: 5
    Last Post: 06-07-2007, 01:31 AM
  4. EasterEgg Hunt [-Anti-Leech-] (MINIGAME)
    By Nwfd1025 in forum Tutorials
    Replies: 2
    Last Post: 05-07-2007, 09:10 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •