Thread: A bit cleaned up Runecrafting for matrix bases

Results 1 to 2 of 2
  1. #1 A bit cleaned up Runecrafting for matrix bases 
    Registered Member

    Join Date
    Mar 2011
    Age
    24
    Posts
    550
    Thanks given
    158
    Thanks received
    170
    Rep Power
    220


    Just a bit cleaned up and uses enums, you gotta add all runeids, levels and exps, all data by yourself, only air is currently implemented.
    Split up all to 4 classes instead of 1 big class


    Missing, combine rune & creation of talismans
    Includes, crafting runes, enter altar, runecrafting pouches, talisman locate

    Spoiler for Runecrafting.java:
    Code:
    package com.rs.game.player.actions.skills.runecrafting;
    
    import com.rs.cache.loaders.ItemDefinitions;
    import com.rs.game.Animation;
    import com.rs.game.Graphics;
    import com.rs.game.player.Player;
    import com.rs.game.player.Skills;
    import com.rs.game.player.content.tasksystem.TaskManager.Tasks;
    
    public class Runecrafting {
    	
    	public final static int RUNE_ESSENCE = 1436, PURE_ESSENCE = 7936, AIR_TIARA = 5527, MIND_TIARA = 5529,
    			WATER_TIARA = 5531, BODY_TIARA = 5533, EARTH_TIARA = 5535, FIRE_TIARA = 5537, COSMIC_TIARA = 5539,
    			NATURE_TIARA = 5541, CHAOS_TIARA = 5543, LAW_TIARA = 5545, DEATH_TIARA = 5547, BLOOD_TIARA = 5549,
    			SOUL_TIARA = 5551, ASTRAL_TIARA = 9106, OMNI_TIARA = 13655, AIR_TALISMAN = 1438;
    	
    	public static boolean isTiara(int id) {
    		return id == AIR_TIARA || id == MIND_TIARA || id == WATER_TIARA || id == BODY_TIARA || id == EARTH_TIARA
    				|| id == FIRE_TIARA || id == COSMIC_TIARA || id == NATURE_TIARA || id == CHAOS_TIARA || id == LAW_TIARA
    				|| id == DEATH_TIARA || id == BLOOD_TIARA || id == SOUL_TIARA || id == ASTRAL_TIARA || id == OMNI_TIARA;
    	}
    	
    	public static boolean hasRcingSuit(Player player) {
    		if (player.getEquipment().getHatId() == 21485 && player.getEquipment().getChestId() == 21484
    				&& player.getEquipment().getLegsId() == 21486 && player.getEquipment().getBootsId() == 21487)
    			return true;
    		return false;
    	}
    	
    	protected static RunecraftingStore[] storeData = RunecraftingStore.values();
    	protected static MultiRunes[] multiData = MultiRunes.values();
    	
    	
    	/**
    	 *  Store all runecrafting runes, level, exp along with talismans & tiaras
    	 *
    	 */
    
    	public enum RunecraftingStore {
    
    		AIR_RUNE(2478, 556, 1, 5, AIR_TALISMAN, false, AIR_TIARA, OMNI_TIARA);
    
    		int altarId;
    		int runeId;
    		int level;
    		double exp;
    		int inventory;
    		boolean pureEssence;
    		int[] items;
    
    		RunecraftingStore(int altarId, int runeId, int level, double exp, int inventory, boolean pureEssence,
    				int... items) {
    			this.altarId = altarId;
    			this.runeId = runeId;
    			this.level = level;
    			this.exp = exp;
    			this.inventory = inventory;
    			this.pureEssence = pureEssence;
    			this.items = items;
    
    		}
    
    	}
    	
    	/**
    	 * Multiple runes depending on level
    	 *
    	 */
    
    	public enum MultiRunes {
    
    		AIR(556, 11, 2, 22, 3, 33, 4, 44, 5, 55, 6, 66, 7, 77, 8, 88, 9, 99, 10);
    
    		int runeId;
    		/**
    		 * level, amount, level, amount...
    		 */
    		int[] multipliers;
    		
    
    		MultiRunes(int runeId, int... multipliers) {
    			this.runeId = runeId;
    			this.multipliers = multipliers;
    		}
    	}
    
    	public static void craftRune(Player player, int runeId, int level, double exp, boolean pureEssence) {
    		int actualLevel = player.getSkills().getLevel(Skills.RUNECRAFTING);
    		if (actualLevel < level) {
    			player.getPackets().sendGameMessage("You need a runecrafting level of " + level + " to craft this rune.");
    			return;
    		}
    		int runes = player.getInventory().getItems().getNumberOf(PURE_ESSENCE);
    		if (runes > 0)
    			player.getInventory().deleteItem(PURE_ESSENCE, runes);
    		if (!pureEssence) {
    			int normalEss = player.getInventory().getItems().getNumberOf(RUNE_ESSENCE);
    			if (normalEss > 0) {
    				player.getInventory().deleteItem(RUNE_ESSENCE, normalEss);
    				runes += normalEss;
    			}
    		}
    		if (runes == 0) {
    			player.getPackets().sendGameMessage("You don't have " + (pureEssence ? "pure" : "rune") + " essence.");
    			return;
    		}
    		for (MultiRunes multi : multiData) {
    			if (multi != null) {
    				if (multi.runeId == runeId) {
    					for (int i = multi.multipliers.length - 2; i >= 0; i -= 2) {
    						if (actualLevel >= multi.multipliers[i + 1]) {
    							runes *= multi.multipliers[i];
    							break;
    						}
    					}
    				}
    			}
    		}
    		double totalXp = exp * runes;
    		if (hasRcingSuit(player))
    			totalXp *= 1.025;
    		player.getSkills().addXp(Skills.RUNECRAFTING, totalXp);
    		player.setNextGraphics(new Graphics(186));
    		player.setNextAnimation(new Animation(791));
    		player.lock(1);
    		player.getInventory().addItem(runeId, runes);
    		if (!player.getTaskManager().completedTask(Tasks.CRAFT_AIR_RUNE)) {
    			if (runeId == 556)
    				player.getTaskManager().completeTask(Tasks.CRAFT_AIR_RUNE);
    		}
    		if (!player.getTaskManager().completedTask(Tasks.CRAFT_BLOOD_RUNE)) {
    			if (runeId == 565)
    				player.getTaskManager().completeTask(Tasks.CRAFT_BLOOD_RUNE);
    		}
    		player.getPackets().sendGameMessage("You bind the temple's power into "
    				+ ItemDefinitions.getItemDefinitions(runeId).getName().toLowerCase() + "s.");
    	}
    }


    Spoiler for Altars.java:
    Code:
    package com.rs.game.player.actions.skills.runecrafting;
    
    import com.rs.game.WorldTile;
    import com.rs.game.player.Player;
    
    public class Altars extends Runecrafting {
    	
    	/**
    	 *Store all altars,
    	 *Enter objectId, objectId for craft rune, talisman, location for altar, tiaras
    	 */
    	
    	public enum Altar {
    
    		AIR_ALTAR(2452, 2478, AIR_TALISMAN, new WorldTile(2841, 4829, 0), AIR_TIARA, OMNI_TIARA);
    
    		int entranceId;
    		int craftId;
    		WorldTile location;
    		int inventory;
    		int[] items;
    
    		Altar(int entranceId, int craftId, int inventory, WorldTile location, int... items) {
    			this.entranceId = entranceId;
    			this.craftId = craftId;
    			this.location = location;
    			this.inventory = inventory;
    			this.items = items;
    		}
    	}
    	
    	private static Altar[] data = Altar.values();
    	
    	public static void handleAltar(Player player, int objectId) {
    		for (Altar store : data) {
    			if (store != null) {
    				if (store.entranceId == objectId) {
    					if (player.getInventory().containsOneItem(store.inventory)
    							|| player.getEquipment().containsOneItem(store.items))
    						enterAltar(player, new WorldTile(store.location));
    					else
    						player.getPackets()
    								.sendGameMessage("you need an " + store.name().toLowerCase().replace("_altar", "")
    										+ " talisman/tiara to enter this altar.");
    					return;
    				}
    				if (store.craftId == objectId) {
    					for (RunecraftingStore rune : storeData) {
    						if (rune != null) {
    							if (rune.altarId == objectId) {
    								if (player.getInventory().containsOneItem(rune.inventory)
    										|| player.getEquipment().containsOneItem(rune.items)) {
    									craftRune(player, rune.runeId, rune.level, rune.exp, rune.pureEssence);
    								} else {
    									player.getPackets().sendGameMessage(
    											"You need an " + rune.name().toLowerCase().replace("_rune", "")
    													+ " talisman/tiara to craft "
    													+ rune.name().toLowerCase().replace('_', ' ') + "s.");
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	
    	private static void enterAltar(Player player, WorldTile dest) {
    		player.getPackets().sendGameMessage("A mysterious force grabs hold of you.");
    		player.useStairs(-1, dest, 0, 1);
    	}
    
    }


    Spoiler for Talisman.java:
    Code:
    package com.rs.game.player.actions.skills.runecrafting;
    
    import com.rs.game.WorldTile;
    import com.rs.game.player.Player;
    import com.rs.utils.Utils;
    
    public class Talisman extends Runecrafting {
    	
    	public static void locate(Player p, int xPos, int yPos) {
    		String x = "";
    		String y = "";
    		int absX = p.getX();
    		int absY = p.getY();
    		if (absX >= xPos)
    			x = "West";
    		if (absY > yPos)
    			y = "South";
    		if (absX < xPos)
    			x = "East";
    		if (absY <= yPos)
    			y = "North";
    		if (Utils.inCircle(new WorldTile(p.getX(), p.getY(), p.getPlane()), new WorldTile(xPos, yPos, p.getPlane()),
    				5)) {
    			p.getPackets().sendGameMessage("You are right next to the altar.");
    			return;
    		}
    		p.getPackets().sendGameMessage("The talisman pulls towards " + y + "-" + x + ".", false);
    	}
    
    }


    Spoiler for RunecraftingPouches.java:
    Code:
    package com.rs.game.player.actions.skills.runecrafting;
    
    import com.rs.game.player.Player;
    import com.rs.game.player.Skills;
    
    public class RunecraftingPouches extends Runecrafting {
    	
    public static final int[] POUCH_SIZE = { 3, 6, 9, 12 };
    	
    	public final static int[] POUCH_REQ = { 1, 25, 50, 75 };
    
    	public static void fillPouch(Player p, int i) {
    		if (i < 0)
    			return;
    		if (POUCH_REQ[i] > p.getSkills().getLevel(Skills.RUNECRAFTING)) {
    			p.getPackets().sendGameMessage("You need a runecrafting level of " + POUCH_REQ[i] + " to fill this pouch.",
    					false);
    			return;
    		}
    		int essenceToAdd = POUCH_SIZE[i] - p.getPouches()[i];
    		if (essenceToAdd > p.getInventory().getItems().getNumberOf(7936))
    			essenceToAdd = p.getInventory().getItems().getNumberOf(7936);
    		if (essenceToAdd > POUCH_SIZE[i] - p.getPouches()[i])
    			essenceToAdd = POUCH_SIZE[i] - p.getPouches()[i];
    		if (essenceToAdd > 0) {
    			p.getInventory().deleteItem(7936, essenceToAdd);
    			p.getPouches()[i] += essenceToAdd;
    			return;
    		}
    		if (!p.getInventory().containsOneItem(7936)) {
    			p.getPackets().sendGameMessage("You don't have any essence with you.", false);
    			return;
    		}
    		if (essenceToAdd == 0) {
    			p.getPackets().sendGameMessage("Your pouch is full.", false);
    			return;
    		}
    	}
    
    	public static void emptyPouch(Player p, int i) {
    		if (i < 0)
    			return;
    		int toAdd = p.getPouches()[i];
    		if (toAdd > p.getInventory().getFreeSlots())
    			toAdd = p.getInventory().getFreeSlots();
    		if (toAdd > 0) {
    			p.getInventory().addItem(7936, toAdd);
    			p.getPouches()[i] -= toAdd;
    			return;
    		}
    		if (toAdd == 0) {
    			p.getPackets().sendGameMessage("Your pouch has no essence left in it.", false);
    			return;
    		}
    	}
    	
    	public static void checkPouch(Player p, int i) {
    		if (i < 0)
    			return;
    		p.getPackets().sendGameMessage(
    
    				"This pouch has " + p.getPouches()[i] + " essences in it.", false);
    	}
    
    }








    AvalonPK Developer
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Registered Member

    Join Date
    Jul 2013
    Posts
    594
    Thanks given
    260
    Thanks received
    103
    Rep Power
    222
    will be using, thanks
    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. Replies: 6
    Last Post: 07-23-2012, 08:39 PM
  2. [PI] Paying coder to clean up my base
    By CarterInk in forum Buying
    Replies: 5
    Last Post: 09-15-2011, 04:20 AM
  3. Can you Clean up Code? Try for $$$
    By Diverse Reality in forum Help
    Replies: 15
    Last Post: 06-22-2010, 03:29 AM
  4. Replies: 16
    Last Post: 08-07-2009, 02:08 AM
  5. RE: My Background -Cleaned up a bit-
    By 2C-I in forum Graphics
    Replies: 27
    Last Post: 03-21-2008, 08:53 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
  •