Using HikariCP + Pet issues + Dojo skills

As Suggested by Alex-0000, migrated from DBCP to HikariCP (uses less
external JARs and got a cleaner code overall). Fixed some issues
regarding pets, such as evolving or hatching from egg. Added dojo skills
and fixed energy bar. Added missing upgrade books on drop data.
This commit is contained in:
ronancpl
2017-08-25 21:20:19 -03:00
parent 99062b1bb3
commit 001125ccdb
106 changed files with 3719 additions and 1455 deletions

View File

@@ -68,6 +68,14 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
}
}
if (c.getPlayer().getDojoEnergy() < 10000 && (attack.skill == 1009 || attack.skill == 10001009 || attack.skill == 20001009)) // PE hacking or maybe just lagging
return;
if (player.getMap().isDojoMap() && attack.numAttacked > 0) {
player.setDojoEnergy(player.getDojoEnergy() + ServerConstants.DOJO_ENERGY_ATK);
c.announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy()));
System.out.println("gauge " + player.getDojoEnergy());
}
player.getMap().broadcastMessage(player, MaplePacketCreator.closeRangeAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.speed, attack.direction, attack.display), false, true);
int numFinisherOrbs = 0;
Integer comboBuff = player.getBuffedValue(MapleBuffStat.COMBO);
@@ -152,7 +160,16 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
if (numFinisherOrbs == 0 && GameConstants.isFinisherSkill(attack.skill)) {
return;
}
if (attack.skill > 0) {
if (attack.skill % 10000000 == 1009) { // bamboo
if (c.getPlayer().getDojoEnergy() < 10000) { // PE hacking or maybe just lagging
return;
}
player.setDojoEnergy(0);
c.announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy()));
c.announce(MaplePacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset."));
System.out.println("gauge " + player.getDojoEnergy());
} else if (attack.skill > 0) {
Skill skill = SkillFactory.getSkill(attack.skill);
MapleStatEffect effect_ = skill.getEffect(player.getSkillLevel(skill));
if (effect_.getCooldown() > 0) {

View File

@@ -31,6 +31,7 @@ import client.MapleCharacter.CancelCooldownAction;
import client.MapleClient;
import client.Skill;
import client.SkillFactory;
import constants.ServerConstants;
import constants.skills.Bishop;
import constants.skills.Evan;
import constants.skills.FPArchMage;
@@ -49,7 +50,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler {
player.getAutobanManager().spam(8);*/
AttackInfo attack = parseDamage(slea, player, false, true);
if (player.getBuffEffect(MapleBuffStat.MORPH) != null) {
if(player.getBuffEffect(MapleBuffStat.MORPH).isMorphWithoutAttack()) {
// How are they attacking when the client won't let them?
@@ -57,6 +58,12 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler {
return;
}
}
if (player.getMap().isDojoMap() && attack.numAttacked > 0) {
player.setDojoEnergy(player.getDojoEnergy() + + ServerConstants.DOJO_ENERGY_ATK);
c.announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy()));
System.out.println("gauge " + player.getDojoEnergy());
}
int charge = (attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG) ? attack.charge : -1;
byte[] packet = MaplePacketCreator.magicAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display);

View File

@@ -60,6 +60,7 @@ public final class PetCommandHandler extends AbstractMaplePacketHandler {
}
else {
chr.getMap().broadcastMessage(MaplePacketCreator.commandResponse(chr.getId(), petIndex, command, false));
if(chr.getMount() != null) chr.getMap().broadcastMessage(MaplePacketCreator.updateMount(chr.getId(), chr.getMount(), false));
}
}
}

View File

@@ -39,6 +39,7 @@ import client.inventory.MapleInventory;
import client.inventory.MapleInventoryType;
import client.inventory.MapleWeaponType;
import constants.ItemConstants;
import constants.ServerConstants;
import constants.skills.Aran;
import constants.skills.Buccaneer;
import constants.skills.NightLord;
@@ -70,6 +71,12 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
}
}
if (player.getMap().isDojoMap() && attack.numAttacked > 0) {
player.setDojoEnergy(player.getDojoEnergy() + ServerConstants.DOJO_ENERGY_ATK);
c.announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy()));
System.out.println("gauge " + player.getDojoEnergy());
}
if (attack.skill == Buccaneer.ENERGY_ORB || attack.skill == ThunderBreaker.SPARK || attack.skill == Shadower.TAUNT || attack.skill == NightLord.TAUNT) {
player.getMap().broadcastMessage(player, MaplePacketCreator.rangedAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, 0, attack.allDamage, attack.speed, attack.direction, attack.display), false);
applyAttack(attack, player, 1);

View File

@@ -66,19 +66,11 @@ public final class SpawnPetHandler extends AbstractMaplePacketHandler {
if (petId == -1) {
return;
}
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM pets WHERE `petid` = ?");
ps.setInt(1, pet.getUniqueId());
ps.executeUpdate();
ps.close();
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
long expiration = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getExpiration();
MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false);
MapleInventoryManipulator.addById(c, evolveid, (short) 1, null, petId, expiration);
pet.deleteFromDb();
c.announce(MaplePacketCreator.enableActions());
return;
}

View File

@@ -69,9 +69,13 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
Skill skill = SkillFactory.getSkill(skillid);
int skillLevel = chr.getSkillLevel(skill);
if (skillid % 10000000 == 1010 || skillid % 10000000 == 1011) {
if (c.getPlayer().getDojoEnergy() < 10000) { // PE hacking or maybe just lagging
return;
}
skillLevel = 1;
chr.setDojoEnergy(0);
c.announce(MaplePacketCreator.getEnergy("energy", 0));
c.getPlayer().setDojoEnergy(0);
c.announce(MaplePacketCreator.getEnergy("energy", c.getPlayer().getDojoEnergy()));
c.announce(MaplePacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset."));
}
if (skillLevel == 0 || skillLevel != __skillLevel) return;

View File

@@ -30,6 +30,7 @@ import client.inventory.Item;
import client.inventory.MapleInventoryType;
import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import constants.GameConstants;
import constants.ServerConstants;
import constants.skills.Aran;
import constants.skills.Corsair;
@@ -232,9 +233,10 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler {
map.broadcastGMMessage(player, MaplePacketCreator.damagePlayer(damagefrom, monsteridfrom, player.getId(), damage, fake, direction, is_pgmr, pgmr, is_pg, oid, pos_x, pos_y), false);
player.checkBerserk(false);
}
if (map.getId() >= 925020000 && map.getId() < 925030000) {
player.setDojoEnergy(player.isGM() ? 300 : player.getDojoEnergy() < 300 ? player.getDojoEnergy() + 1 : 0); //Fking gm's
player.getClient().announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy()));
if (GameConstants.isDojo(map.getId())) {
player.setDojoEnergy(player.getDojoEnergy() + ServerConstants.DOJO_ENERGY_DMG);
c.announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy()));
System.out.println("gauge " + player.getDojoEnergy());
}
for (MapleCharacter chr : banishPlayers) { // chill, if this list ever gets non-empty an attacker does exist, trust me :)