mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-06 16:49:07 +00:00
Cleanup part 1 (#213)
* Clean up part 1 - Removed lots of dead code - Removed unncessary files not in use - Cleaned up small bits of code - Removed a few warnings - Server.java ---> GameEngine.java - Constants.java ---> GameConstants.java * Cape Dye Rewrote cape dying * Packaging - redone ----> com.rebotted * PacketSender/clean up - ActionSender ---> PacketSender - Moved many more packets to packetsender - Cleaned up more dead code * Merge Client/Player - Merged Client.java with Player.java (both were doing same thing so redundant to have both) - Removed some more dead code - Tidy a few small things up * Quests/more clean up - Removed more dead code - Made quests static in order to clean them up a bit * More cleanup - Removed some more of the dead quest code - Correcting naming of some of the shop variables
This commit is contained in:
committed by
Daniel Ginovker
parent
3d1ae1b288
commit
d876a923b9
@@ -0,0 +1,518 @@
|
||||
package com.rebotted.game.content.combat.range;
|
||||
|
||||
import com.rebotted.GameConstants;
|
||||
import com.rebotted.GameEngine;
|
||||
import com.rebotted.event.CycleEvent;
|
||||
import com.rebotted.event.CycleEventContainer;
|
||||
import com.rebotted.event.CycleEventHandler;
|
||||
import com.rebotted.game.npcs.Npc;
|
||||
import com.rebotted.game.npcs.NpcHandler;
|
||||
import com.rebotted.game.players.Client;
|
||||
import com.rebotted.game.players.Player;
|
||||
import com.rebotted.game.players.PlayerHandler;
|
||||
import com.rebotted.util.Misc;
|
||||
|
||||
/**
|
||||
* Cannon
|
||||
* @author Andrew (Mr Extremez)
|
||||
*/
|
||||
|
||||
public class DwarfCannon {
|
||||
|
||||
public DwarfCannon(Player player2) {
|
||||
this.player = player2;
|
||||
}
|
||||
|
||||
private Player player;
|
||||
|
||||
public final int[] ITEM_PARTS = {6, 8, 10, 12};
|
||||
|
||||
private final int[] OBJECT_PARTS = {7, 8, 9, 6};
|
||||
|
||||
private final int ballsID = 2;
|
||||
|
||||
public boolean settingUp = false;
|
||||
|
||||
private int setUpStage = 0;
|
||||
|
||||
private int maxBalls = 30;
|
||||
|
||||
public int myBalls = 0;
|
||||
|
||||
private boolean rotating = false;
|
||||
|
||||
private int rotation = 0;
|
||||
|
||||
private int maxHit = 30;
|
||||
|
||||
private final int maxDistance = 20;
|
||||
|
||||
private int totalRotations = 0;
|
||||
|
||||
private boolean justClicked = false;
|
||||
|
||||
public void placeCannon() {
|
||||
if (settingUp == true) {
|
||||
return;
|
||||
}
|
||||
if (noSetUpArea()) {
|
||||
player.getPacketSender().sendMessage("You are not allowed to set up a cannon here!");
|
||||
return;
|
||||
}
|
||||
if (hasCannon()) {
|
||||
player.getPacketSender().sendMessage("You already have a cannon placed!");
|
||||
return;
|
||||
}
|
||||
if (nearCannon()) {
|
||||
player.getPacketSender().sendMessage("You must be farther away from an existing cannon to set a new one up!");
|
||||
return;
|
||||
}
|
||||
if (!canSetUp()) {
|
||||
player.getPacketSender().sendMessage("You need all the parts of the cannon to set a cannon up.");
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < 50; i++) {
|
||||
if (GameEngine.cannonsX[i] == 0 && GameEngine.cannonsY[i] == 0) {
|
||||
GameEngine.cannonsX[i] = player.absX;
|
||||
GameEngine.cannonsY[i] = player.absY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer container) {
|
||||
if (setUpStage >= 4) {
|
||||
container.stop();
|
||||
setUpStage = 0;
|
||||
settingUp = false;
|
||||
return;
|
||||
}
|
||||
if (!canSetUp()) {
|
||||
player.getPacketSender().sendMessage("You need all the parts of the cannon to set a cannon up.");
|
||||
container.stop();
|
||||
return;
|
||||
}
|
||||
settingUp = true;
|
||||
player.startAnimation(827);
|
||||
player.turnPlayerTo(player.absX, player.absY);
|
||||
player.cannonX = player.absX;
|
||||
player.cannonY = player.absY;
|
||||
placeObject(OBJECT_PARTS[setUpStage], player.absX, player.absY);
|
||||
player.getItemAssistant().deleteItem(ITEM_PARTS[setUpStage], 1);
|
||||
setUpStage ++;
|
||||
}
|
||||
@Override
|
||||
public void stop() {
|
||||
/**
|
||||
* Balls
|
||||
*/
|
||||
int cballs = getBalls();
|
||||
int amount = cballs - myBalls;
|
||||
player.getItemAssistant().deleteItem(ballsID, player.getItemAssistant().getItemSlot(ballsID), amount);
|
||||
myBalls = cballs;
|
||||
}
|
||||
}, 2);
|
||||
}
|
||||
|
||||
public boolean needsCannon() {
|
||||
return (player.lostCannon == true);
|
||||
}
|
||||
|
||||
public void loginCheck() {
|
||||
if (needsCannon()) {
|
||||
player.getPacketSender().sendMessage("@red@You can collect your cannon at home from Nulodion.");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean canSetUp() {
|
||||
if (setUpStage == 0) {
|
||||
if (player.getItemAssistant().playerHasItem(ITEM_PARTS[0]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[1]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) {
|
||||
return true;
|
||||
}
|
||||
} else if (setUpStage == 1) {
|
||||
if (player.getItemAssistant().playerHasItem(ITEM_PARTS[1]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) {
|
||||
return true;
|
||||
}
|
||||
} else if (setUpStage == 2) {
|
||||
if (player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) {
|
||||
return true;
|
||||
}
|
||||
} else if (setUpStage == 3) {
|
||||
if (player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean hasCannon() {
|
||||
return (player.cannonX > 0) && (player.cannonY > 0) || (player.cannonX > 0 && player.cannonY > 0);
|
||||
}
|
||||
|
||||
private boolean myCannon(int x, int y) {
|
||||
return (player.cannonX == x) && (player.cannonY == y);
|
||||
}
|
||||
|
||||
public int getBalls() {
|
||||
int cannonBalls = player.getItemAssistant().getItemAmount(ballsID);
|
||||
if (cannonBalls >= maxBalls) {
|
||||
return maxBalls;
|
||||
}
|
||||
return cannonBalls;
|
||||
}
|
||||
|
||||
public boolean nearCannon() {
|
||||
for(int i = 0; i < GameEngine.cannonsX.length; i++) {
|
||||
if ((player.absX >= GameEngine.cannonsX[i] - 1) && (player.absX <= GameEngine.cannonsX[i] + 1) && (player.absY >= GameEngine.cannonsY[i] - 2) && (player.absY <= GameEngine.cannonsY[i] + 1)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void loadCannons() {
|
||||
for(int i = 0; i < GameEngine.cannonsX.length; i++) {
|
||||
if (GameEngine.cannonsX[i] != 0) {
|
||||
player.getPacketSender().checkObjectSpawn(6, GameEngine.cannonsX[i], GameEngine.cannonsY[i], 0, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void loadCannon(int x, int y) {
|
||||
int cballs = getBalls();
|
||||
if (!myCannon(x, y)) {
|
||||
player.getPacketSender().sendMessage("You can't load somebody else's cannon!");
|
||||
return;
|
||||
}
|
||||
if (myBalls <= 29) {
|
||||
int amount = cballs - myBalls;
|
||||
player.getItemAssistant().deleteItem(ballsID, player.getItemAssistant().getItemSlot(ballsID), amount);
|
||||
myBalls = cballs;
|
||||
if (player.getItemAssistant().playerHasItem(ballsID)) {
|
||||
player.getPacketSender().sendMessage(amount > 1 ? "You load the cannon with " + amount + " cannonballs." : "You load the cannon with 1 cannonball.");
|
||||
} else {
|
||||
player.getPacketSender().sendMessage("You have no cannonballs to load into the cannon.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void clickCannon(int x, int y) {
|
||||
if (!myCannon(x, y)) {
|
||||
player.getPacketSender().sendMessage("You can't fire somebody else's cannon!");
|
||||
return;
|
||||
}
|
||||
if (myBalls == 0) {
|
||||
player.getPacketSender().sendMessage("Your cannon has run out of cannonballs.");
|
||||
return;
|
||||
}
|
||||
if (myBalls >= 1 && rotating == false) {
|
||||
shoot();
|
||||
} else if (myBalls >= 1 && rotating == true) {
|
||||
player.getPacketSender().sendMessage("Your cannon is already shooting.");
|
||||
}
|
||||
}
|
||||
|
||||
public void handleDisconnect() {
|
||||
removeObject(player.cannonX, player.cannonY);
|
||||
for(int i = 0; i < GameEngine.cannonsX.length; i++) {
|
||||
if (GameEngine.cannonsX[i] == player.cannonX && GameEngine.cannonsY[i] == player.cannonY) {
|
||||
GameEngine.cannonsX[i] = 0;
|
||||
GameEngine.cannonsY[i] = 0;
|
||||
GameEngine.cannonsO[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void handleDeath() {
|
||||
if (hasCannon()) {
|
||||
player.lostCannon = true;
|
||||
removeObject(player.cannonX, player.cannonY);
|
||||
for(int i = 0; i < GameEngine.cannonsX.length; i++) {
|
||||
if (GameEngine.cannonsX[i] == player.cannonX && GameEngine.cannonsY[i] == player.cannonY) {
|
||||
GameEngine.cannonsX[i] = 0;
|
||||
GameEngine.cannonsY[i] = 0;
|
||||
GameEngine.cannonsO[i] = null;
|
||||
}
|
||||
}
|
||||
player.cannonX = 0;
|
||||
player.cannonY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void shoot() {
|
||||
if (justClicked == true) {
|
||||
return;
|
||||
}
|
||||
rotating = true;
|
||||
justClicked = true;
|
||||
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
|
||||
@Override
|
||||
public void execute(CycleEventContainer e) {
|
||||
totalRotations += 1;
|
||||
if (totalRotations >= 2) {
|
||||
justClicked = false;
|
||||
}
|
||||
if(rotating == false) {
|
||||
e.stop();
|
||||
}
|
||||
if (myBalls < 1) {
|
||||
rotating = false;
|
||||
e.stop();
|
||||
}
|
||||
if (rotating == true) {
|
||||
rotation += 1;
|
||||
rotateCannon();
|
||||
shootNpcs();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void stop() {
|
||||
|
||||
}
|
||||
}, 2);
|
||||
}
|
||||
|
||||
private void rotateCannon() {
|
||||
switch (rotation) {
|
||||
case 1: //north
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 516, 10, -1);
|
||||
break;
|
||||
case 2: //north-east
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 517, 10, -1);
|
||||
break;
|
||||
case 3: //east
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 518, 10, -1);
|
||||
break;
|
||||
case 4: //south-east
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 519, 10, -1);
|
||||
break;
|
||||
case 5: //south
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 520, 10, -1);
|
||||
break;
|
||||
case 6: //south-west
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 521, 10, -1);
|
||||
break;
|
||||
case 7: //west
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 514, 10, -1);
|
||||
break;
|
||||
case 8: //north-west
|
||||
player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 515, 10, -1);
|
||||
rotation = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void removeCannon(int x, int y) {
|
||||
for (int i = 0; i < GameEngine.cannonsX.length; i++) {
|
||||
if (GameEngine.cannonsX[i] == x && GameEngine.cannonsY[i] == y) {
|
||||
GameEngine.cannonsX[i] = 0;
|
||||
GameEngine.cannonsY[i] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void pickup(int x, int y) {
|
||||
if (!myCannon(x, y)) {
|
||||
player.getPacketSender().sendMessage("You can't pick up somebody else's cannon!");
|
||||
return;
|
||||
}
|
||||
if (rotating == true) {
|
||||
rotating = false;
|
||||
}
|
||||
if (player.getItemAssistant().freeSlots() > 3) {
|
||||
player.startAnimation(827);
|
||||
player.getPacketSender().sendMessage("You pick up the cannon. It's really heavy.");
|
||||
removeCannon(player.cannonX, player.cannonY);
|
||||
player.getItemAssistant().addItem(ITEM_PARTS[0], 1);
|
||||
player.getItemAssistant().addItem(ITEM_PARTS[1], 1);
|
||||
player.getItemAssistant().addItem(ITEM_PARTS[2], 1);
|
||||
player.getItemAssistant().addItem(ITEM_PARTS[3], 1);
|
||||
} else {
|
||||
player.getPacketSender().sendMessage("You don't have enough free inventory slots to do that.");
|
||||
}
|
||||
if (myBalls > 0) {
|
||||
player.getItemAssistant().addItem(ballsID, myBalls);
|
||||
myBalls = 0;
|
||||
}
|
||||
removeObject(player.cannonX, player.cannonY);
|
||||
player.cannonX = 0;
|
||||
player.cannonY = 0;
|
||||
player.cannonX = 0;
|
||||
player.cannonY = 0;
|
||||
}
|
||||
|
||||
public void placeObject(int id, int x, int y) {
|
||||
for (int j = 0; j < PlayerHandler.players.length; j++) {
|
||||
if (PlayerHandler.players[j] != null) {
|
||||
Client a = (Client)PlayerHandler.players[j];
|
||||
a.getPacketSender().object(id, x, y, 516, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeObject(int x, int y) {
|
||||
placeObject(-1, x, y);
|
||||
}
|
||||
|
||||
public boolean noSetUpArea() {
|
||||
return player.inBank() || player.inFightCaves();
|
||||
}
|
||||
|
||||
private int getHit() {
|
||||
int hits = Misc.random(2);
|
||||
switch (hits) {
|
||||
case 0:
|
||||
return Misc.random(maxHit);
|
||||
case 1:
|
||||
return 15+Misc.random(maxHit-15);
|
||||
case 2:
|
||||
return 10+Misc.random(maxHit-10);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void shootNpcs() {
|
||||
int damage = getHit();
|
||||
Npc target = targetNpc();
|
||||
if (target != null) {
|
||||
if (damage > target.HP) {
|
||||
damage = target.HP;
|
||||
}
|
||||
if (!player.inMulti()) {
|
||||
if (target.underAttackBy > 0 && target.underAttackBy != player.playerId) {
|
||||
return;
|
||||
}
|
||||
if (player.underAttackBy2 > 0 && player.underAttackBy2 != target.npcId) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
cannonProjectile(target);
|
||||
target.hitDiff2 = damage;
|
||||
target.HP -= damage;
|
||||
player.globalDamageDealt += damage;
|
||||
target.killerId = player.playerId;
|
||||
target.killedBy = player.playerId;
|
||||
target.facePlayer(player.playerId);
|
||||
target.hitUpdateRequired2 = true;
|
||||
target.updateRequired = true;
|
||||
myBalls -= 1;
|
||||
player.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE, player.playerRanged);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Npc targetNpc() {
|
||||
for (int i = 0; i < NpcHandler.MAX_NPCS; i++) {
|
||||
if (NpcHandler.npcs[i] == null) {
|
||||
continue;
|
||||
}
|
||||
Npc npc = NpcHandler.npcs[i];
|
||||
int myX = player.cannonX;
|
||||
int myY = player.cannonY;
|
||||
int theirX = npc.absX;
|
||||
int theirY = npc.absY;
|
||||
if (!npc.isDead && !npc.isDead && npc.HP != 0 && npc.npcType != 1266 && npc.npcType != 1268 && inDistance(theirX, theirY)) {
|
||||
switch (rotation) {
|
||||
case 1:
|
||||
if (theirY > myY && theirX >= myX - 1 && theirX <= myX + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (theirX >= myX + 1 && theirY >= myY + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (theirX > myX && theirY >= myY - 1 && theirY <= myY + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (theirY <= myY - 1 && theirX >= myX + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (theirY < myY && theirX >= myX - 1 && theirX <= myX + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (theirX <= myX - 1 && theirY <= myY - 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (theirX < myX && theirY >= myY - 1 && theirY <= myY + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (theirX <= myX - 1 && theirY >= myY + 1) {
|
||||
return npc;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean inDistance(int npcX, int npcY) {
|
||||
return (npcX >= player.cannonX - maxDistance && npcX <= player.cannonX + maxDistance && npcY >= player.cannonY - maxDistance && npcY <= player.cannonY + maxDistance);
|
||||
}
|
||||
|
||||
private void cannonProjectile(Npc n) {
|
||||
int oX = player.cannonX+getShootXPos();
|
||||
int oY = player.cannonY+getShootYPos();
|
||||
int offX = ((oX - n.absX) * -1);
|
||||
int offY = ((oY - n.absY) * -1);
|
||||
player.getPlayerAssistant().createPlayersProjectile(oX, oY, offY, offX, 50, 60, 53, 20, 20, -player.oldNpcIndex + 1, 30);
|
||||
}
|
||||
|
||||
public int getShootXPos() {
|
||||
switch(rotation) {
|
||||
case 1:
|
||||
return 1;
|
||||
case 2:
|
||||
return 2;
|
||||
case 3:
|
||||
return 2;
|
||||
case 4:
|
||||
return 2;
|
||||
case 5:
|
||||
return 1;
|
||||
case 6:
|
||||
return 0;
|
||||
case 7:
|
||||
return 0;
|
||||
case 8:
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getShootYPos() {
|
||||
switch(rotation) {
|
||||
case 1:
|
||||
return 2;
|
||||
case 2:
|
||||
return 2;
|
||||
case 3:
|
||||
return 1;
|
||||
case 4:
|
||||
return 0;
|
||||
case 5:
|
||||
return 0;
|
||||
case 6:
|
||||
return 0;
|
||||
case 7:
|
||||
return 1;
|
||||
case 8:
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,370 @@
|
||||
package com.rebotted.game.content.combat.range;
|
||||
|
||||
import com.rebotted.game.players.Player;
|
||||
|
||||
public class RangeData {
|
||||
|
||||
public final static int[] BOWS = { 9185, 839, 845, 847, 851, 855, 859, 841,
|
||||
843, 849, 853, 857, 861, 4212, 4214, 4215, 11235, 4216, 4217, 4218,
|
||||
4219, 4220, 4221, 4222, 4223, 6724, 4734, 4934, 4935, 4936, 4937 };
|
||||
public final static int[] ARROWS = { 882, 884, 886, 888, 890, 892, 4740,
|
||||
11212, 9140, 9141, 4142, 9143, 9144, 9240, 9241, 9242, 9243, 9244,
|
||||
9245, 4150, 4160, 4172 };
|
||||
public final static int[] NO_ARROW_DROP = { 4212, 4214, 4215, 4216, 4217,
|
||||
4218, 4219, 4220, 4221, 4222, 4223, 4734, 4934, 4935, 4936, 4937 };
|
||||
public final static int[] OTHER_RANGE_WEAPONS = { 863, 864, 865, 866, 867,
|
||||
868, 869, 806, 807, 808, 809, 810, 811, 825, 826, 827, 828, 829,
|
||||
830, 800, 801, 802, 803, 804, 805, 6522 };
|
||||
|
||||
public static boolean usingDbow(Player c) {
|
||||
return c.playerEquipment[c.playerWeapon] == 11235;
|
||||
}
|
||||
|
||||
public static boolean usingCrystalBow(Player c) {
|
||||
return c.playerEquipment[c.playerWeapon] >= 4212
|
||||
&& c.playerEquipment[c.playerWeapon] <= 4223;
|
||||
}
|
||||
|
||||
public static boolean usingBolts(Player c) {
|
||||
return c.playerEquipment[c.playerArrows] >= 9130
|
||||
&& c.playerEquipment[c.playerArrows] <= 9145
|
||||
|| c.playerEquipment[c.playerArrows] >= 9230
|
||||
&& c.playerEquipment[c.playerArrows] <= 9245;
|
||||
}
|
||||
|
||||
public static boolean properBolts(Player c) {
|
||||
return c.playerEquipment[c.playerArrows] >= 9140
|
||||
&& c.playerEquipment[c.playerArrows] <= 9144
|
||||
|| c.playerEquipment[c.playerArrows] >= 9240
|
||||
&& c.playerEquipment[c.playerArrows] <= 9244;
|
||||
}
|
||||
|
||||
public static boolean usingHally(Player c) {
|
||||
switch (c.playerEquipment[c.playerWeapon]) {
|
||||
case 3190:
|
||||
case 3192:
|
||||
case 3194:
|
||||
case 3196:
|
||||
case 3198:
|
||||
case 3200:
|
||||
case 3202:
|
||||
case 3204:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static int correctBowAndArrows(Player c) {
|
||||
if (usingBolts(c)) {
|
||||
return -1;
|
||||
}
|
||||
switch (c.playerEquipment[c.playerWeapon]) {
|
||||
|
||||
case 839:
|
||||
case 841:
|
||||
return 882;
|
||||
|
||||
case 843:
|
||||
case 845:
|
||||
return 884;
|
||||
|
||||
case 847:
|
||||
case 849:
|
||||
return 886;
|
||||
|
||||
case 851:
|
||||
case 853:
|
||||
return 888;
|
||||
|
||||
case 855:
|
||||
case 857:
|
||||
return 890;
|
||||
|
||||
case 859:
|
||||
case 861:
|
||||
if (c.playerEquipment[c.playerArrows] == 892) {
|
||||
return 892;
|
||||
} else if (c.playerEquipment[c.playerArrows] == 4172) {
|
||||
return 4172;
|
||||
}
|
||||
|
||||
case 4734:
|
||||
case 4935:
|
||||
case 4936:
|
||||
case 4937:
|
||||
return 4740;
|
||||
|
||||
case 11235:
|
||||
return 11212;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int getRangeStartGFX(Player c) {
|
||||
switch (c.rangeItemUsed) {
|
||||
|
||||
case 863:
|
||||
return 220;
|
||||
case 864:
|
||||
return 219;
|
||||
case 865:
|
||||
return 221;
|
||||
case 866: // knives
|
||||
return 223;
|
||||
case 867:
|
||||
return 224;
|
||||
case 868:
|
||||
return 225;
|
||||
case 869:
|
||||
return 222;
|
||||
|
||||
case 806:
|
||||
return 232;
|
||||
case 807:
|
||||
return 233;
|
||||
case 808:
|
||||
return 234;
|
||||
case 809: // darts
|
||||
return 235;
|
||||
case 810:
|
||||
return 236;
|
||||
case 811:
|
||||
return 237;
|
||||
|
||||
case 825:
|
||||
return 206;
|
||||
case 826:
|
||||
return 207;
|
||||
case 827: // javelin
|
||||
return 208;
|
||||
case 828:
|
||||
return 209;
|
||||
case 829:
|
||||
return 210;
|
||||
case 830:
|
||||
return 211;
|
||||
|
||||
case 800:
|
||||
return 42;
|
||||
case 801:
|
||||
return 43;
|
||||
case 802:
|
||||
return 44; // axes
|
||||
case 803:
|
||||
return 45;
|
||||
case 804:
|
||||
return 46;
|
||||
case 805:
|
||||
return 48;
|
||||
|
||||
case 882:
|
||||
return 19;
|
||||
|
||||
case 884:
|
||||
return 18;
|
||||
|
||||
case 886:
|
||||
return 20;
|
||||
|
||||
case 888:
|
||||
return 21;
|
||||
|
||||
case 890:
|
||||
return 22;
|
||||
|
||||
case 892:
|
||||
return 24;
|
||||
|
||||
case 11212:
|
||||
return 26;
|
||||
|
||||
case 4212:
|
||||
case 4214:
|
||||
case 4215:
|
||||
case 4216:
|
||||
case 4217:
|
||||
case 4218:
|
||||
case 4219:
|
||||
case 4220:
|
||||
case 4221:
|
||||
case 4222:
|
||||
case 4223:
|
||||
return 250;
|
||||
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int getRangeProjectileGFX(Player c) {
|
||||
if (c.dbowSpec) {
|
||||
return 672;
|
||||
}
|
||||
if (c.bowSpecShot > 0) {
|
||||
switch (c.rangeItemUsed) {
|
||||
default:
|
||||
return 249;
|
||||
}
|
||||
}
|
||||
if (c.playerEquipment[c.playerWeapon] == 9185) {
|
||||
return 27;
|
||||
}
|
||||
switch (c.rangeItemUsed) {
|
||||
|
||||
case 863:
|
||||
return 213;
|
||||
case 864:
|
||||
return 212;
|
||||
case 865:
|
||||
return 214;
|
||||
case 866: // knives
|
||||
return 216;
|
||||
case 867:
|
||||
return 217;
|
||||
case 868:
|
||||
return 218;
|
||||
case 869:
|
||||
return 215;
|
||||
|
||||
case 806:
|
||||
return 226;
|
||||
case 807:
|
||||
return 227;
|
||||
case 808:
|
||||
return 228;
|
||||
case 809: // darts
|
||||
return 229;
|
||||
case 810:
|
||||
return 230;
|
||||
case 811:
|
||||
return 231;
|
||||
|
||||
case 825:
|
||||
return 200;
|
||||
case 826:
|
||||
return 201;
|
||||
case 827: // javelin
|
||||
return 202;
|
||||
case 828:
|
||||
return 203;
|
||||
case 829:
|
||||
return 204;
|
||||
case 830:
|
||||
return 205;
|
||||
|
||||
case 6522: // Toktz-xil-ul
|
||||
return 442;
|
||||
|
||||
case 800:
|
||||
return 36;
|
||||
case 801:
|
||||
return 35;
|
||||
case 802:
|
||||
return 37; // axes
|
||||
case 803:
|
||||
return 38;
|
||||
case 804:
|
||||
return 39;
|
||||
case 805:
|
||||
return 40;
|
||||
|
||||
case 882:
|
||||
return 10;
|
||||
|
||||
case 884:
|
||||
return 9;
|
||||
|
||||
case 886:
|
||||
return 11;
|
||||
|
||||
case 888:
|
||||
return 12;
|
||||
|
||||
case 890:
|
||||
return 13;
|
||||
|
||||
case 892:
|
||||
return 15;
|
||||
|
||||
case 11212:
|
||||
return 17;
|
||||
|
||||
case 4740: // bolt rack
|
||||
return 27;
|
||||
|
||||
case 4212:
|
||||
case 4214:
|
||||
case 4215:
|
||||
case 4216:
|
||||
case 4217:
|
||||
case 4218:
|
||||
case 4219:
|
||||
case 4220:
|
||||
case 4221:
|
||||
case 4222:
|
||||
case 4223:
|
||||
return 249;
|
||||
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int getProjectileSpeed(Player c) {
|
||||
if (c.dbowSpec) {
|
||||
return 100;
|
||||
}
|
||||
return 70;
|
||||
}
|
||||
|
||||
public static int getProjectileShowDelay(Player c) {
|
||||
switch (c.playerEquipment[c.playerWeapon]) {
|
||||
case 863:
|
||||
case 864:
|
||||
case 865:
|
||||
case 866: // knives
|
||||
case 867:
|
||||
case 868:
|
||||
case 869:
|
||||
|
||||
case 806:
|
||||
case 807:
|
||||
case 808:
|
||||
case 809: // darts
|
||||
case 810:
|
||||
case 811:
|
||||
|
||||
case 825:
|
||||
case 826:
|
||||
case 827: // javelin
|
||||
case 828:
|
||||
case 829:
|
||||
case 830:
|
||||
|
||||
case 800:
|
||||
case 801:
|
||||
case 802:
|
||||
case 803: // axes
|
||||
case 804:
|
||||
case 805:
|
||||
|
||||
case 4734:
|
||||
case 9185:
|
||||
case 4935:
|
||||
case 4936:
|
||||
case 4937:
|
||||
return 15;
|
||||
|
||||
default:
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean fullVoidRange(Player c) {
|
||||
return c.playerEquipment[c.playerHat] == 11664
|
||||
&& c.playerEquipment[c.playerLegs] == 8840
|
||||
&& c.playerEquipment[c.playerChest] == 8839
|
||||
&& c.playerEquipment[c.playerHands] == 8842;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.rebotted.game.content.combat.range;
|
||||
|
||||
import com.rebotted.game.players.Player;
|
||||
|
||||
public class RangeMaxHit {
|
||||
|
||||
public static int calculateRangeDefence(Player c) {
|
||||
int defenceLevel = c.playerLevel[1];
|
||||
if (c.getPrayer().prayerActive[0]) {
|
||||
defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05;
|
||||
} else if (c.getPrayer().prayerActive[5]) {
|
||||
defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1;
|
||||
} else if (c.getPrayer().prayerActive[13]) {
|
||||
defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15;
|
||||
} else if (c.getPrayer().prayerActive[24]) {
|
||||
defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2;
|
||||
} else if (c.getPrayer().prayerActive[25]) {
|
||||
defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25;
|
||||
}
|
||||
return defenceLevel + c.playerBonus[9] + c.playerBonus[9] / 2;
|
||||
}
|
||||
|
||||
public static int calculateRangeAttack(Player c) {
|
||||
int rangeLevel = c.playerLevel[4];
|
||||
rangeLevel *= c.specAccuracy;
|
||||
if (RangeData.fullVoidRange(c)) {
|
||||
rangeLevel += c.getLevelForXP(c.playerXP[c.playerRanged]) * 0.1;
|
||||
}
|
||||
if (c.getPrayer().prayerActive[3]) {
|
||||
rangeLevel *= 1.05;
|
||||
} else if (c.getPrayer().prayerActive[11]) {
|
||||
rangeLevel *= 1.10;
|
||||
} else if (c.getPrayer().prayerActive[19]) {
|
||||
rangeLevel *= 1.15;
|
||||
}
|
||||
// dbow spec
|
||||
if (RangeData.fullVoidRange(c) && c.specAccuracy > 1.15) {
|
||||
rangeLevel *= 1.75;
|
||||
}
|
||||
return (int) (rangeLevel + c.playerBonus[4] * 1.95);
|
||||
}
|
||||
|
||||
public static int rangeMaxHit(Player c) {
|
||||
int rangeLevel = c.playerLevel[4];
|
||||
int itemUsed = getRangeStr(c.usingBow ? c.lastArrowUsed : c.lastWeaponUsed);
|
||||
double modifier = 1.00;
|
||||
if (c.getPrayer().prayerActive[3]) {
|
||||
modifier *= 1.05;
|
||||
} else if (c.getPrayer().prayerActive[11]) {
|
||||
modifier *= 1.10;
|
||||
} else if (c.getPrayer().prayerActive[19]) {
|
||||
modifier *= 1.15;
|
||||
}
|
||||
if (RangeData.fullVoidRange(c)) {
|
||||
modifier *= 1.20;
|
||||
}
|
||||
double e = Math.floor(rangeLevel * modifier);
|
||||
if (c.fightMode == 0) {
|
||||
e = (e + 3.0);
|
||||
}
|
||||
double darkbow = 1.0;
|
||||
if (c.usingSpecial) {
|
||||
if (c.playerEquipment[3] == 11235) {
|
||||
if (c.lastArrowUsed == 11212) {
|
||||
darkbow = 1.5;
|
||||
} else {
|
||||
darkbow = 1.3;
|
||||
}
|
||||
}
|
||||
}
|
||||
double max = (1.3 + e / 10 + itemUsed / 80 + e * itemUsed / 640) * darkbow;
|
||||
return (int) max;
|
||||
}
|
||||
|
||||
public static int getRangeStr(int i) {
|
||||
int str = 0;
|
||||
int[][] data = { { 877, 10 }, { 9140, 46 }, { 9145, 36 }, { 9141, 64 },
|
||||
{ 9142, 82 }, { 9143, 100 }, { 9144, 115 }, { 9236, 14 },
|
||||
{ 9237, 30 }, { 9238, 48 }, { 9239, 66 }, { 9240, 83 },
|
||||
{ 9241, 85 }, { 9242, 103 }, { 9243, 105 }, { 9244, 117 },
|
||||
{ 9245, 120 }, { 882, 7 }, { 884, 10 }, { 886, 16 },
|
||||
{ 888, 22 }, { 890, 31 }, { 892, 49 }, { 4740, 55 },
|
||||
{ 11212, 60 }, { 806, 1 }, { 807, 3 }, { 808, 4 }, { 809, 7 },
|
||||
{ 810, 10 }, { 811, 14 }, { 11230, 20 }, { 864, 3 },
|
||||
{ 863, 4 }, { 865, 7 }, { 866, 10 }, { 867, 14 }, { 868, 24 },
|
||||
{ 825, 6 }, { 826, 10 }, { 827, 12 }, { 828, 18 }, { 829, 28 },
|
||||
{ 830, 42 }, { 800, 5 }, { 801, 7 }, { 802, 11 }, { 803, 16 },
|
||||
{ 804, 23 }, { 805, 36 }, { 9976, 0 }, { 9977, 15 },
|
||||
{ 4212, 70 }, { 4214, 70 }, { 4215, 70 }, { 4216, 70 },
|
||||
{ 4217, 70 }, { 4218, 70 }, { 4219, 70 }, { 4220, 70 },
|
||||
{ 4221, 70 }, { 4222, 70 }, { 4223, 70 }, { 6522, 49 },
|
||||
{ 10034, 15 }, };
|
||||
for (int[] element : data) {
|
||||
if (i == element[0]) {
|
||||
str = element[1];
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user