Files
2006Scape/2006Redone Server/src/com/rebotted/game/content/consumables/Potions.java
T
Gptaqbc 2790decd44 Added some sound, refactored fletching and arrowmaking a bit... I've … (#314)
* Added some sound, refactored fletching and arrowmaking a bit... I've maybe fixed the issue with fletching.. idk

Added some sound, refactored fletching and arrowmaking a bit... I've maybe fixed the issue with fletching.. idk

* Commented clipping server side check so we can work on it

Commented and brought back the old code so gates works while we work in the clipping check server side.

* Added Canifis bank to the bank boolean
2019-12-22 15:59:32 -05:00

475 lines
13 KiB
Java

package com.rebotted.game.content.consumables;
import com.rebotted.event.CycleEvent;
import com.rebotted.event.CycleEventContainer;
import com.rebotted.event.CycleEventHandler;
import com.rebotted.game.items.Item;
import com.rebotted.game.items.ItemAssistant;
import com.rebotted.game.players.Player;
public class Potions {
private final Player c;
public Potions(Player player) {
this.c = player;
}
public void handlePotion(int itemId, int slot) {
if (c.duelRule[5]) {
c.getPacketSender().sendMessage(
"You may not drink potions in this duel.");
return;
}
if (c.isDead || c.playerLevel[3] <= 0) {
return;
}
if (System.currentTimeMillis() - c.potDelay >= 1200) {
c.potDelay = System.currentTimeMillis();
c.foodDelay = System.currentTimeMillis();
c.getCombatAssistant().resetPlayerAttack();
c.attackTimer++;
c.getPacketSender().sendMessage(
"You drink some of your " + Item.getItemName(itemId) + ".");
c.startAnimation(829);
final String item = Item.getItemName(itemId);
String m = "";
if (item.endsWith("(4)")) {
m = "You have 3 doses of potion left.";
} else if (item.endsWith("(3)")) {
m = "You have 2 doses of potion left.";
} else if (item.endsWith("(2)")) {
m = "You have 1 dose of potion left.";
} else if (item.endsWith("(1)")) {
m = "You have finished your potion.";
}
final String m1 = m;
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
c.getPacketSender().sendSound(1210, 100, 0);
c.getPacketSender().sendMessage(m1);
container.stop();
}
@Override
public void stop() {
}
}, 1);
switch (itemId) {
case 3040:
drinkStatPotion(itemId, 3042, slot, 6, false);
break;
case 3042:
drinkStatPotion(itemId, 3044, slot, 6, false);
break;
case 3044:
drinkStatPotion(itemId, 3046, slot, 6, false);
break;
case 3046:
drinkStatPotion(itemId, 229, slot, 6, false);
break;
case 2450:
doTheBrewzam(itemId, 189, slot);
break;
case 189:
doTheBrewzam(itemId, 191, slot);
break;
case 191:
doTheBrewzam(itemId, 193, slot);
break;
case 193:
doTheBrewzam(itemId, 229, slot);
break;
case 6685: // brews
doTheBrew(itemId, 6687, slot);
break;
case 6687:
doTheBrew(itemId, 6689, slot);
break;
case 6689:
doTheBrew(itemId, 6691, slot);
break;
case 6691:
doTheBrew(itemId, 229, slot);
break;
case 2436:
drinkStatPotion(itemId, 145, slot, 0, true); // sup attack
break;
case 145:
drinkStatPotion(itemId, 147, slot, 0, true);
break;
case 147:
drinkStatPotion(itemId, 149, slot, 0, true);
break;
case 149:
drinkStatPotion(itemId, 229, slot, 0, true);
break;
case 2440:
drinkStatPotion(itemId, 157, slot, 2, true); // sup str
break;
case 157:
drinkStatPotion(itemId, 159, slot, 2, true);
break;
case 159:
drinkStatPotion(itemId, 161, slot, 2, true);
break;
case 161:
drinkStatPotion(itemId, 229, slot, 2, true);
break;
case 2444:
drinkStatPotion(itemId, 169, slot, 4, false); // range pot
break;
case 169:
drinkStatPotion(itemId, 171, slot, 4, false);
break;
case 171:
drinkStatPotion(itemId, 173, slot, 4, false);
break;
case 173:
drinkStatPotion(itemId, 229, slot, 4, false);
break;
case 2432:
drinkStatPotion(itemId, 133, slot, 1, false); // def pot
break;
case 133:
drinkStatPotion(itemId, 135, slot, 1, false);
break;
case 135:
drinkStatPotion(itemId, 137, slot, 1, false);
break;
case 137:
drinkStatPotion(itemId, 229, slot, 1, false);
break;
case 113:
drinkStatPotion(itemId, 115, slot, 2, false); // str pot
break;
case 115:
drinkStatPotion(itemId, 117, slot, 2, false);
break;
case 117:
drinkStatPotion(itemId, 119, slot, 2, false);
break;
case 119:
drinkStatPotion(itemId, 229, slot, 2, false);
break;
case 2428:
drinkStatPotion(itemId, 121, slot, 0, false); // attack
// pot
break;
case 121:
drinkStatPotion(itemId, 123, slot, 0, false);
break;
case 123:
drinkStatPotion(itemId, 125, slot, 0, false);
break;
case 125:
drinkStatPotion(itemId, 229, slot, 0, false);
break;
case 2442:
drinkStatPotion(itemId, 163, slot, 1, true); // super def
// pot
break;
case 163:
drinkStatPotion(itemId, 165, slot, 1, true);
break;
case 165:
drinkStatPotion(itemId, 167, slot, 1, true);
break;
case 167:
drinkStatPotion(itemId, 229, slot, 1, true);
break;
case 3024:
drinkPrayerPot(itemId, 3026, slot, true); // sup restore
break;
case 3026:
drinkPrayerPot(itemId, 3028, slot, true);
break;
case 3028:
drinkPrayerPot(itemId, 3030, slot, true);
break;
case 3030:
drinkPrayerPot(itemId, 229, slot, true);
break;
case 10925:
drinkPrayerPot(itemId, 10927, slot, true); // sanfew
// serums
curePoison(300000);
break;
case 10927:
drinkPrayerPot(itemId, 10929, slot, true);
curePoison(300000);
break;
case 10929:
drinkPrayerPot(itemId, 10931, slot, true);
curePoison(300000);
break;
case 10931:
drinkPrayerPot(itemId, 229, slot, true);
curePoison(300000);
break;
case 2434:
drinkPrayerPot(itemId, 139, slot, false); // pray pot
break;
case 139:
drinkPrayerPot(itemId, 141, slot, false);
break;
case 141:
drinkPrayerPot(itemId, 143, slot, false);
break;
case 143:
drinkPrayerPot(itemId, 229, slot, false);
break;
case 2446:
drinkAntiPoison(itemId, 175, slot, 30000); // anti poisons
break;
case 175:
drinkAntiPoison(itemId, 177, slot, 30000);
break;
case 177:
drinkAntiPoison(itemId, 179, slot, 30000);
break;
case 179:
drinkAntiPoison(itemId, 229, slot, 30000);
break;
case 2448:
drinkAntiPoison(itemId, 181, slot, 300000); // anti
// poisons
break;
case 181:
drinkAntiPoison(itemId, 183, slot, 300000);
break;
case 183:
drinkAntiPoison(itemId, 185, slot, 300000);
break;
case 185:
drinkAntiPoison(itemId, 229, slot, 300000);
break;
/** Energy Potions **/
case 3008:
energyPotion(itemId, 3010, slot);
break;
case 3010:
energyPotion(itemId, 3012, slot);
break;
case 3012:
energyPotion(itemId, 3014, slot);
break;
case 3014:
energyPotion(itemId, 229, slot);
break;
/** Super Energy Potions **/
case 3016:
energyPotion(itemId, 3018, slot);
break;
case 3018:
energyPotion(itemId, 3020, slot);
break;
case 3020:
energyPotion(itemId, 3022, slot);
break;
case 3022:
energyPotion(itemId, 229, slot);
break;
case 2452:
antifirePot(itemId, 2454, slot);
break;
case 2454:
antifirePot(itemId, 2456, slot);
break;
case 2456:
antifirePot(itemId, 2458, slot);
break;
case 2458:
antifirePot(itemId, 229, slot);
break;
}
}
}
private void energyPotion(int itemId, int replaceItem, int slot) {
c.playerItems[slot] = replaceItem + 1;
c.getItemAssistant().resetItems(3214);
if (itemId >= 3008 && itemId <= 3014) {
c.playerEnergy += 20;
} else {
c.playerEnergy += 40;
}
if (c.playerEnergy > 100) {
c.playerEnergy = 100;
}
c.getPacketSender().sendFrame126((int) Math.ceil(c.playerEnergy) + "%", 149);
}
public void drinkAntiPoison(int itemId, int replaceItem, int slot,
long delay) {
// c.startAnimation(829);
c.playerItems[slot] = replaceItem + 1;
c.getItemAssistant().resetItems(3214);
curePoison(delay);
}
public void curePoison(long delay) {
c.poisonDamage = 0;
c.poisonImmune = delay;
c.lastPoisonSip = System.currentTimeMillis();
}
public void drinkStatPotion(int itemId, int replaceItem, int slot,
int stat, boolean sup) {
// c.startAnimation(829);
c.playerItems[slot] = replaceItem + 1;
c.getItemAssistant().resetItems(3214);
enchanceStat(stat, sup);
}
public void drinkPrayerPot(int itemId, int replaceItem, int slot,
boolean rest) {
// c.startAnimation(829);
c.playerItems[slot] = replaceItem + 1;
c.getItemAssistant().resetItems(3214);
c.playerLevel[5] += c.getLevelForXP(c.playerXP[5]) * .33;
if (rest) {
c.playerLevel[5] += 1;
}
if (c.playerLevel[5] > c.getLevelForXP(c.playerXP[5])) {
c.playerLevel[5] = c.getLevelForXP(c.playerXP[5]);
}
c.getPlayerAssistant().refreshSkill(5);
if (rest) {
restoreStats();
}
}
public void restoreStats() {
for (int j = 0; j <= 6; j++) {
if (j == 5 || j == 3) {
continue;
}
if (c.playerLevel[j] < c.getLevelForXP(c.playerXP[j])) {
c.playerLevel[j] += c.getLevelForXP(c.playerXP[j]) * .33;
if (c.playerLevel[j] > c.getLevelForXP(c.playerXP[j])) {
c.playerLevel[j] = c.getLevelForXP(c.playerXP[j]);
}
c.getPlayerAssistant().refreshSkill(j);
c.getPacketSender().setSkillLevel(j, c.playerLevel[j],
c.playerXP[j]);
}
}
}
public void doTheBrewzam(int itemId, int replaceItem, int slot) {
// c.startAnimation(829);
c.playerItems[slot] = replaceItem + 1;
c.getItemAssistant().resetItems(3214);
int[] toDecrease = { 1, 3 };
for (int tD : toDecrease) {
c.playerLevel[tD] -= getBrewStat(tD, .10);
if (c.playerLevel[tD] < 0) {
c.playerLevel[tD] = 1;
}
c.getPlayerAssistant().refreshSkill(tD);
c.getPacketSender().setSkillLevel(tD, c.playerLevel[tD],
c.playerXP[tD]);
}
c.playerLevel[0] += getBrewStat(0, .20);
if (c.playerLevel[0] > c.getLevelForXP(c.playerXP[0]) * 1.2 + 1) {
c.playerLevel[0] = (int) (c.getLevelForXP(c.playerXP[0]) * 1.2);
}
c.playerLevel[2] += getBrewStat(2, .12);
if (c.playerLevel[2] > c.getLevelForXP(c.playerXP[2]) * 1.2 + 1) {
c.playerLevel[2] = (int) (c.getLevelForXP(c.playerXP[2]) * 1.2);
}
c.playerLevel[5] += getBrewStat(5, .10);
if (c.playerLevel[5] > c.getLevelForXP(c.playerXP[5]) * 1.2 + 1) {
c.playerLevel[5] = (int) (c.getLevelForXP(c.playerXP[5]) * 1.2);
}
c.getPlayerAssistant().refreshSkill(0);
c.getPlayerAssistant().refreshSkill(2);
c.getPlayerAssistant().refreshSkill(5);
c.hitUpdateRequired = true;
c.hitDiff = 9;
}
public void doTheBrew(int itemId, int replaceItem, int slot) {
if (c.duelRule[6]) {
c.getPacketSender()
.sendMessage("You may not eat in this duel.");
return;
}
// c.startAnimation(829);
c.playerItems[slot] = replaceItem + 1;
c.getItemAssistant().resetItems(3214);
int[] toDecrease = { 0, 2, 4, 6 };
for (int tD : toDecrease) {
c.playerLevel[tD] -= getBrewStat(tD, .10);
if (c.playerLevel[tD] < 0) {
c.playerLevel[tD] = 1;
}
c.getPlayerAssistant().refreshSkill(tD);
c.getPacketSender().setSkillLevel(tD, c.playerLevel[tD],
c.playerXP[tD]);
}
c.playerLevel[1] += getBrewStat(1, .20);
if (c.playerLevel[1] > c.getLevelForXP(c.playerXP[1]) * 1.2 + 1) {
c.playerLevel[1] = (int) (c.getLevelForXP(c.playerXP[1]) * 1.2);
}
c.getPlayerAssistant().refreshSkill(1);
c.playerLevel[3] += getBrewStat(3, .15);
if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3]) * 1.17 + 1) {
c.playerLevel[3] = (int) (c.getLevelForXP(c.playerXP[3]) * 1.17);
}
c.getPlayerAssistant().refreshSkill(3);
}
public void enchanceStat(int skillID, boolean sup) {
c.playerLevel[skillID] += getBoostedStat(skillID, sup);
c.getPlayerAssistant().refreshSkill(skillID);
}
public void antifirePot(int itemId, int replaceItem, int slot) {
c.startAnimation(829);
c.playerItems[slot] = replaceItem + 1;
c.antiFirePot = true;
c.antiFirePotion();
c.getPacketSender().sendMessage(
"Your immunity against dragon fire has been increased.");
c.getItemAssistant().resetItems(3214);
}
public int getBrewStat(int skill, double amount) {
return (int) (c.getLevelForXP(c.playerXP[skill]) * amount);
}
public int getBoostedStat(int skill, boolean sup) {
int increaseBy;
if (sup) {
increaseBy = (int) (c.getLevelForXP(c.playerXP[skill]) * .20);
} else {
increaseBy = (int) (c.getLevelForXP(c.playerXP[skill]) * .13) + 1;
}
if (c.playerLevel[skill] + increaseBy > c
.getLevelForXP(c.playerXP[skill]) + increaseBy + 1) {
return c.getLevelForXP(c.playerXP[skill]) + increaseBy
- c.playerLevel[skill];
}
return increaseBy;
}
public boolean isPotion(int itemId) {
String name = ItemAssistant.getItemName(itemId);
return name.contains("(4)") || name.contains("(3)")
|| name.contains("(2)") || name.contains("(1)");
}
public boolean potionNames(int itemId) {
String name = ItemAssistant.getItemName(itemId);
return name.endsWith("potion(4)") || name.endsWith("potion(3)")
|| name.endsWith("potion(2)") || name.endsWith("potion(1)")
|| name.contains("saradomin brew")
|| name.contains("zamorak brew");
}
}