Source is FuckMS.
The skills work, but they don't do anything to the monsters. The numbers show and stuff, but their HP doesn't go down. Does anyone know what's up? And yes, physical attacks and BaM attacks work and kill monsters.
Printable View
Source is FuckMS.
The skills work, but they don't do anything to the monsters. The numbers show and stuff, but their HP doesn't go down. Does anyone know what's up? And yes, physical attacks and BaM attacks work and kill monsters.
You have to update the handler i think.
Hi, i'm a novice when it comes to Private Servers but i'm pretty sure its ur DamageParse.java[srry can't spell]? Check that, it could be coded wrong. I know because i tried fixing some skills from Lithium and the errors were from DamageParse. Hope that helps, if anything u can take the DP from another source and copy and paste.
Please use the search. There's been countless posts about this already and I am pretty sure sunnyboy has already stated enough times that he placed a line wrongly under the magicattack handler
I found maybe 4 or 5 threads, and none were the fix. :/
I downloaded 4 separate sources and replaced the damageparse.java each time.
omg like el oh el, I found it in 1 thread and took me 20 seconds. i love you google
ignore my post, read carefully
http://forum.ragezone.com/f566/help-...orking-901439/
That was the first thread I used. And I tried all the codes in that thread. None of them work. Please give me some direct answers with this. -_-
Here's my code:I used Checkthisuzi's script last. Am I supposed to recompile it first btw?PHP Code:/* */ package handling.channel.handler;/* */ /* */ import client.MapleBuffStat;/* */ import client.MapleCharacter;/* */ import client.MapleClient;/* */ import client.PlayerStats;/* */ import client.Skill;/* */ import client.SkillFactory;/* */ import client.anticheat.CheatTracker;/* */ import client.anticheat.CheatingOffense;/* */ import client.inventory.Item;/* */ import client.inventory.MapleInventory;/* */ import client.inventory.MapleInventoryType;/* */ import client.status.MonsterStatus;/* */ import client.status.MonsterStatusEffect;/* */ import constants.GameConstants;/* */ import handling.channel.ChannelServer;/* */ import java.awt.Point;/* */ import java.util.ArrayList;/* */ import java.util.Collections;/* */ import java.util.List;/* */ import java.util.Map;/* */ import java.util.Map.Entry;/* */ import java.util.concurrent.locks.Lock;/* */ import org.apache.mina.common.IoSession;/* */ import server.MapleStatEffect;/* */ import server.Randomizer;/* */ import server.life.Element;/* */ import server.life.ElementalEffectiveness;/* */ import server.life.MapleMonster;/* */ import server.life.MapleMonsterStats;/* */ import server.maps.Event_PyramidSubway;/* */ import server.maps.MapleMap;/* */ import server.maps.MapleMapItem;/* */ import server.maps.MapleMapObject;/* */ import server.maps.MapleMapObjectType;/* */ import tools.AttackPair;/* */ import tools.Pair;/* */ import tools.data.LittleEndianAccessor;/* */ import tools.packet.CField;/* */ import tools.packet.CWvsContext;/* */ /* */ public class DamageParse/* */ { private static int gages;/* */ public static void applyAttack(AttackInfo attack, Skill theSkill, MapleCharacter player, int attackCount, double maxDamagePerMonster, MapleStatEffect effect, AttackType attack_type)/* */ {/* 59 */ if (!player.isAlive()) {/* 60 */ player.getCheatTracker().registerOffense(CheatingOffense.ATTACKING_WHILE_DEAD);/* 61 */ return;/* */ }/* 63 */ if ((attack.real) && (GameConstants.getAttackDelay(attack.skill, theSkill) >= 100)) {/* 64 */ player.getCheatTracker().checkAttack(attack.skill, attack.lastAttackTickCount);/* */ }/* 66 */ if (attack.skill != 0) {/* 67 */ if (effect == null) {/* 68 */ player.getClient().getSession().write(CWvsContext.enableActions());/* 69 */ return;/* */ }/* 71 */ if (GameConstants.isMulungSkill(attack.skill)) {/* 72 */ if (player.getMapId() / 10000 != 92502)/* */ {/* 74 */ return;/* */ }/* 76 */ if (player.getMulungEnergy() < 10000) {/* 77 */ return;/* */ }/* 79 */ player.mulung_EnergyModify(false);/* */ }/* 81 */ else if (GameConstants.isPyramidSkill(attack.skill)) {/* 82 */ if (player.getMapId() / 1000000 != 926)/* */ {/* 84 */ return;/* */ }/* 86 */ if ((player.getPyramidSubway() == null) || (!player.getPyramidSubway().onSkillUse(player))) {/* 87 */ return;/* */ }/* */ }/* 90 */ else if (GameConstants.isInflationSkill(attack.skill)) {/* 91 */ if (player.getBuffedValue(MapleBuffStat.GIANT_POTION) == null)/* 92 */ return;/* */ }/* 94 */ else if ((attack.targets > effect.getMobCount()) && (attack.skill != 1211002) && (attack.skill != 1220010)) {/* 95 */ player.getCheatTracker().registerOffense(CheatingOffense.MISMATCHING_BULLETCOUNT);/* 96 */ return;/* */ }/* */ }/* 99 */ if (player.getClient().getChannelServer().isAdminOnly()) {/* 100 */ player.dropMessage(-1, new StringBuilder().append("Animation: ").append(Integer.toHexString((attack.display & 0x8000) != 0 ? attack.display - 32768 : attack.display)).toString());/* */ }/* 102 */ boolean useAttackCount = (attack.skill != 4211006) && (attack.skill != 3221007) && (attack.skill != 23121003) && ((attack.skill != 1311001) || (player.getJob() != 132)) && (attack.skill != 3211006);/* */ /* 109 */ if ((attack.hits > 0) && (attack.targets > 0))/* */ {/* 111 */ if (!player.getStat().checkEquipDurabilitys(player, -1)) {/* 112 */ player.dropMessage(5, "An item has run out of durability but has no inventory room to go to.");/* 113 */ return;/* */ }/* */ }/* 116 */ int totDamage = 0;/* 117 */ MapleMap map = player.getMap();/* */ /* 119 */ if (attack.skill == 4211006) {/* 120 */ for (AttackPair oned : attack.allDamage) {/* 121 */ if (oned.attack != null) {/* */ continue;/* */ }/* 124 */ MapleMapObject mapobject = map.getMapObject(oned.objectid, MapleMapObjectType.ITEM);/* */ /* 126 */ if (mapobject != null) {/* 127 */ MapleMapItem mapitem = (MapleMapItem)mapobject;/* 128 */ mapitem.getLock().lock();/* */ try {/* 130 */ if (mapitem.getMeso() > 0) {/* 131 */ if (mapitem.isPickedUp())/* */ return;/* 134 */ map.removeMapObject(mapitem);/* 135 */ map.broadcastMessage(CField.explodeDrop(mapitem.getObjectId()));/* 136 */ mapitem.setPickedUp(true); } else { player.getCheatTracker().registerOffense(CheatingOffense.ETC_EXPLOSION);/* */ return;/* */ }/* */ } finally {/* 142 */ mapitem.getLock().unlock();/* */ }/* */ } else {/* 145 */ player.getCheatTracker().registerOffense(CheatingOffense.EXPLODING_NONEXISTANT);/* 146 */ return;/* */ }/* */ }/* */ }/* 150 */ int totDamageToOneMonster = 0;/* 151 */ long hpMob = 0L;/* 152 */ PlayerStats stats = player.getStat();/* */ /* 154 */ int CriticalDamage = stats.passive_sharpeye_percent();/* 155 */ int ShdowPartnerAttackPercentage = 0;/* 156 */ if ((attack_type == AttackType.RANGED_WITH_SHADOWPARTNER) || (attack_type == AttackType.NON_RANGED_WITH_MIRROR)) {/* 157 */ MapleStatEffect shadowPartnerEffect = player.getStatForBuff(MapleBuffStat.SHADOWPARTNER);/* 158 */ if (shadowPartnerEffect != null) {/* 159 */ ShdowPartnerAttackPercentage += shadowPartnerEffect.getX();/* */ }/* 161 */ attackCount /= 2;/* */ }/* 163 */ ShdowPartnerAttackPercentage *= (CriticalDamage + 100) / 100;/* 164 */ if (attack.skill == 4221001) {/* 165 */ ShdowPartnerAttackPercentage *= 10;/* */ }/* */ /* 168 */ double maxDamagePerHit = 0.0D;/* */ MapleMonster monster;/* 173 */ for (AttackPair oned : attack.allDamage) {/* 174 */ monster = map.getMonsterByOid(oned.objectid);/* */ /* 176 */ if ((monster != null) && (monster.getLinkCID() = 3200) && (player.getJob() 3212)) && (!monster.isBuffed(MonsterStatus.DAMAGE_IMMUNITY)) && (!monster.isBuffed(MonsterStatus.WEAPON_IMMUNITY)) && (!monster.isBuffed(MonsterStatus.WEAPON_DAMAGE_REFLECT))))/* 185 */ maxDamagePerHit = CalculateMaxWeaponDamagePerHit(player, monster, attack, theSkill, effect, maxDamagePerMonster, Integer.valueOf(CriticalDamage));/* */ else {/* 187 */ maxDamagePerHit = 1.0D;/* */ }/* */ }/* 190 */ byte overallAttackCount = 0;/* */ /* 192 */ int criticals = 0;/* 193 */ for (Pair eachde : oned.attack) {/* 194 */ Integer eachd = (Integer)eachde.left;/* 195 */ overallAttackCount = (byte)(overallAttackCount + 1);/* 196 */ if (((Boolean)eachde.right).booleanValue()) {/* 197 */ criticals++;/* */ }/* 199 */ if ((useAttackCount) && (overallAttackCount - 1 == attackCount)) {/* 200 */ maxDamagePerHit = maxDamagePerHit / 100.0D * (ShdowPartnerAttackPercentage * (monsterstats.isBoss() ? stats.bossdam_r : stats.dam_r) / 100.0D);/* */ }/* */ /* 203 */ if (fixeddmg != -1) {/* 204 */ if (monsterstats.getOnlyNoramlAttack())/* 205 */ eachd = Integer.valueOf(attack.skill != 0 ? 0 : fixeddmg);/* */ else {/* 207 */ eachd = Integer.valueOf(fixeddmg);/* */ }/* */ }/* 210 */ else if (monsterstats.getOnlyNoramlAttack())/* 211 */ eachd = Integer.valueOf(attack.skill != 0 ? 0 : Math.min(eachd.intValue(), (int)maxDamagePerHit));/* 212 */ else if (!player.isGM()) {/* 213 */ if (Tempest) {/* 214 */ if (eachd.intValue() > monster.getMobMaxHp()) {/* 215 */ eachd = Integer.valueOf((int)Math.min(monster.getMobMaxHp(), 2147483647L));/* 216 */ player.getCheatTracker().registerOffense(CheatingOffense.HIGH_DAMAGE);/* */ }/* */ }/* 219 */ else if (((player.getJob() >= 3200) && (player.getJob() 3212)) && (!monster.isBuffed(MonsterStatus.DAMAGE_IMMUNITY)) && (!monster.isBuffed(MonsterStatus.WEAPON_IMMUNITY)) && (!monster.isBuffed(MonsterStatus.WEAPON_DAMAGE_REFLECT)))) {/* 220 */ if (eachd.intValue() > maxDamagePerHit) {/* 221 */ player.getCheatTracker().registerOffense(CheatingOffense.HIGH_DAMAGE, new StringBuilder().append("[Damage: ").append(eachd).append(", Expected: ").append(maxDamagePerHit).append(", Mob: ").append(monster.getId()).append("] [Job: ").append(player.getJob()).append(", Level: ").append(player.getLevel()).append(", Skill: ").append(attack.skill).append("]").toString());/* 222 */ if (attack.real) {/* 223 */ player.getCheatTracker().checkSameDamage(eachd.intValue(), maxDamagePerHit);/* */ }/* 225 */ if (eachd.intValue() > maxDamagePerHit * 2.0D) {/* 226 */ player.getCheatTracker().registerOffense(CheatingOffense.HIGH_DAMAGE_2, new StringBuilder().append("[Damage: ").append(eachd).append(", Expected: ").append(maxDamagePerHit).append(", Mob: ").append(monster.getId()).append("] [Job: ").append(player.getJob()).append(", Level: ").append(player.getLevel()).append(", Skill: ").append(attack.skill).append("]").toString());/* 227 */ eachd = Integer.valueOf((int)(maxDamagePerHit * 2.0D));/* 228 */ if (eachd.intValue() >= 2499999) {/* 229 */ player.getClient().getSession().close();/* 230 */ return;/* */ }/* */ }/* */ }/* */ }/* 235 */ else if (eachd.intValue() > maxDamagePerHit) {/* 236 */ eachd = Integer.valueOf((int)maxDamagePerHit);/* */ }/* */ /* */ }/* */ /* 241 */ if (player == null) {/* 242 */ return;/* */ }/* 244 */ totDamageToOneMonster += eachd.intValue();/* */ /* 246 */ if (((eachd.intValue() == 0) || (monster.getId() == 9700021)) && (player.getPyramidSubway() != null)) {/* 247 */ player.getPyramidSubway().onMiss(player);/* */ }/* */ }/* 250 */ totDamage += totDamageToOneMonster;/* 251 */ player.checkMonsterAggro(monster);/* */ /* 253 */ if ((GameConstants.getAttackDelay(attack.skill, theSkill) >= 100) && (!GameConstants.isNoDelaySkill(attack.skill)) && (attack.skill != 3101005) && (!monster.getStats().isBoss()) && (player.getTruePosition().distanceSq(monster.getTruePosition()) > GameConstants.getAttackRange(effect, player.getStat().defRange))) {/* 254 */ player.getCheatTracker().registerOffense(CheatingOffense.ATTACK_FARAWAY_MONSTER, new StringBuilder().append("[Distance: ").append(player.getTruePosition().distanceSq(monster.getTruePosition())).append(", Expected Distance: ").append(GameConstants.getAttackRange(effect, player.getStat().defRange)).append(" Job: ").append(player.getJob()).append("]").toString());/* */ }/* */ /* 257 */ if (player.getBuffedValue(MapleBuffStat.PICKPOCKET) != null) {/* 258 */ switch (attack.skill) {/* */ case 0:/* */ case 4001334:/* */ case 4201005:/* */ case 4211002:/* */ case 4211004:/* */ case 4221003:/* */ case 4221007:/* 266 */ handlePickPocket(player, monster, oned);/* */ }/* */ /* */ }/* */ /* 271 */ if ((totDamageToOneMonster > 0) || (attack.skill == 1221011) || (attack.skill == 21120006)) {/* 272 */ if (GameConstants.isDemon(player.getJob())) {/* 273 */ player.handleForceGain(monster.getObjectId(), attack.skill);/* */ } if ((GameConstants.isPhantom(player.getJob())) && (attack.skill != 24120002) && (attack.skill != 24100003)) { player.handleCardStack(); }/* 275 */ if (attack.skill != 1221011)/* 276 */ monster.damage(player, totDamageToOneMonster, true, attack.skill);/* */ else {/* 278 */ monster.damage(player, monster.getStats().isBoss() ? 500000L : monster.getHp() - 1L, true, attack.skill);/* */ }/* */ /* 281 */ if (monster.isBuffed(MonsterStatus.WEAPON_DAMAGE_REFLECT)) {/* 282 */ player.addHP(-(7000 + Randomizer.nextInt(8000)));/* */ }/* 284 */ player.onAttack(monster.getMobMaxHp(), monster.getMobMaxMp(), attack.skill, monster.getObjectId(), totDamage, 0);/* 285 */ switch (attack.skill)/* */ {/* */ case 4001002:/* */ case 4001334:/* */ case 4001344:/* */ case 4111005:/* */ case 4121007:/* */ case 4201005:/* */ case 4211002:/* */ case 4221001:/* */ case 4221007:/* */ case 4301001:/* */ case 4311002:/* */ case 4311003:/* */ case 4331000:/* */ case 4331004:/* */ case 4331005:/* */ case 4331006:/* */ case 4341002:/* */ case 4341004:/* */ case 4341005:/* */ case 4341009:/* */ case 14001004:/* */ case 14111002:/* */ case 14111005:/* 310 */ int[] skills = { 4120005, 4220005, 4340001, 14110004 };/* 311 */ for (int i : skills) {/* 312 */ Skill skill = SkillFactory.getSkill(i);/* 313 */ if (player.getTotalSkillLevel(skill) > 0) {/* 314 */ MapleStatEffect venomEffect = skill.getEffect(player.getTotalSkillLevel(skill));/* 315 */ if (!venomEffect.makeChanceResult()) break;/* 316 */ monster.applyStatus(player, new MonsterStatusEffect(MonsterStatus.POISON, Integer.valueOf(1), i, null, false), true, venomEffect.getDuration(), true, venomEffect); break;/* */ }/* */ /* */ }/* */ /* 322 */ break;/* */ case 4201004:/* 325 */ monster.handleSteal(player);/* 326 */ break;//aran skills/* */ case 21000002:/* */ case 21100001:/* */ case 21100002:/* */ case 21100004:/* */ case 21110002:/* */ case 21110003:/* */ case 21110004:/* */ case 21110006:/* */ case 21110007:/* */ case 21110008:/* */ case 21120002:/* */ case 21120005:/* */ case 21120006:/* */ case 21120009:/* */ case 21120010:/* 344 */ if ((player.getBuffedValue(MapleBuffStat.WK_CHARGE) != null) && (!monster.getStats().isBoss())) {/* 345 */ MapleStatEffect eff = player.getStatForBuff(MapleBuffStat.WK_CHARGE);/* 346 */ if (eff != null) {/* 347 */ monster.applyStatus(player, new MonsterStatusEffect(MonsterStatus.SPEED, Integer.valueOf(eff.getX()), eff.getSourceId(), null, false), false, eff.getY() * 1000, true, eff);/* */ }/* */ }/* 350 */ if ((player.getBuffedValue(MapleBuffStat.BODY_PRESSURE) == null) || (monster.getStats().isBoss())) break;/* 351 */ MapleStatEffect eff = player.getStatForBuff(MapleBuffStat.BODY_PRESSURE);/* */ /* 353 */ if ((eff != null) && (eff.makeChanceResult()) && (!monster.isBuffed(MonsterStatus.NEUTRALISE))) {/* 354 */ monster.applyStatus(player, new MonsterStatusEffect(MonsterStatus.NEUTRALISE, Integer.valueOf(1), eff.getSourceId(), null, false), false, eff.getX() * 1000, true, eff);/* */ }/* 356 */ break;/* */ }/* */ /* 362 */ if (totDamageToOneMonster > 0) {/* 363 */ Item weapon_ = player.getInventory(MapleInventoryType.EQUIPPED).getItem((byte)-11);/* 364 */ if (weapon_ != null) {/* 365 */ MonsterStatus stat = GameConstants.getStatFromWeapon(weapon_.getItemId());/* 366 */ if ((stat != null) && (Randomizer.nextInt(100) < GameConstants.getStatChance())) {/* 367 */ MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(stat, Integer.valueOf(GameConstants.getXForStat(stat)), GameConstants.getSkillForStat(stat), null, false);/* 368 */ monster.applyStatus(player, monsterStatusEffect, false, 10000L, false, null);/* */ }/* */ }/* 371 */ if (player.getBuffedValue(MapleBuffStat.BLIND) != null) {/* 372 */ MapleStatEffect eff = player.getStatForBuff(MapleBuffStat.BLIND);/* */ /* 374 */ if ((eff != null) && (eff.makeChanceResult())) {/* 375 */ MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(MonsterStatus.ACC, Integer.valueOf(eff.getX()), eff.getSourceId(), null, false);/* 376 */ monster.applyStatus(player, monsterStatusEffect, false, eff.getY() * 1000, true, eff);/* */ }/* */ }/* */ /* 380 */ if (player.getBuffedValue(MapleBuffStat.HAMSTRING) != null) {/* 381 */ MapleStatEffect eff = player.getStatForBuff(MapleBuffStat.HAMSTRING);/* */ /* 383 */ if ((eff != null) && (eff.makeChanceResult())) {/* 384 */ MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(MonsterStatus.SPEED, Integer.valueOf(eff.getX()), 3121007, null, false);/* 385 */ monster.applyStatus(player, monsterStatusEffect, false, eff.getY() * 1000, true, eff);/* */ }/* */ }/* 388 */ if ((player.getJob() == 121) || (player.getJob() == 122)) {/* 389 */ Skill skill = SkillFactory.getSkill(1211006);/* 390 */ if (player.isBuffFrom(MapleBuffStat.WK_CHARGE, skill)) {/* 391 */ MapleStatEffect eff = skill.getEffect(player.getTotalSkillLevel(skill));/* 392 */ MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(MonsterStatus.FREEZE, Integer.valueOf(1), skill.getId(), null, false);/* 393 */ monster.applyStatus(player, monsterStatusEffect, false, eff.getY() * 2000, true, eff);/* */ }/* */ }/* 396 */ /* */ }/* 403 */ if ((effect != null) && (effect.getMonsterStati().size() > 0) && /* 404 */ (effect.makeChanceResult()))/* 405 */ for (Map.Entry z : effect.getMonsterStati().entrySet())/* 406 */ monster.applyStatus(player, new MonsterStatusEffect((MonsterStatus)z.getKey(), (Integer)z.getValue(), theSkill.getId(), null, false), effect.isPoison(), effect.getDuration(), true, effect);/* */ }/* */ }/* */ }/* 413 */ if ((attack.skill == 4331003) && ((hpMob 0L) && (totDamageToOneMonster > 0)) {/* 417 */ player.afterAttack(attack.targets, attack.hits, attack.skill);/* */ }/* 419 */ if ((attack.skill != 0) && ((attack.targets > 0) || ((attack.skill != 4331003) && (attack.skill != 4341002))) && (!GameConstants.isNoDelaySkill(attack.skill))) {/* 420 */ effect.applyTo(player, attack.position);/* */ }/* 422 */ if ((totDamage > 1) && (GameConstants.getAttackDelay(attack.skill, theSkill) >= 100)) {/* 423 */ CheatTracker tracker = player.getCheatTracker();/* */ /* 425 */ tracker.setAttacksWithoutHit(true);/* 426 */ if (tracker.getAttacksWithoutHit() > 1000)/* 427 */ tracker.registerOffense(CheatingOffense.ATTACK_WITHOUT_GETTING_HIT, Integer.toString(tracker.getAttacksWithoutHit()));/* */ }/* */ }/* */ /* */ public static final void applyAttackMagic(AttackInfo attack, Skill theSkill, MapleCharacter player, MapleStatEffect effect, double maxDamagePerHit)/* */ {/* 433 */ if (!player.isAlive()) {/* 434 */ player.getCheatTracker().registerOffense(CheatingOffense.ATTACKING_WHILE_DEAD);/* 435 */ return;/* */ }/* 437 */ if ((attack.real) && (GameConstants.getAttackDelay(attack.skill, theSkill) >= 100)) {/* 438 */ player.getCheatTracker().checkAttack(attack.skill, attack.lastAttackTickCount);/* */ }/* */ /* 443 */ if ((attack.hits > effect.getAttackCount()) || (attack.targets > effect.getMobCount())) {/* 444 */ player.getCheatTracker().registerOffense(CheatingOffense.MISMATCHING_BULLETCOUNT);/* 445 */ return;/* */ }/* 447 */ if ((attack.hits > 0) && (attack.targets > 0) && /* 448 */ (!player.getStat().checkEquipDurabilitys(player, -1))) {/* 449 */ player.dropMessage(5, "An item has run out of durability but has no inventory room to go to.");/* 450 */ return;/* */ }/* */ /* 453 */ if (GameConstants.isMulungSkill(attack.skill)) {/* 454 */ if (player.getMapId() / 10000 != 92502)/* */ {/* 456 */ return;/* */ }/* 458 */ if (player.getMulungEnergy() < 10000) {/* 459 */ return;/* */ }/* 461 */ player.mulung_EnergyModify(false);/* */ }/* 463 */ else if (GameConstants.isPyramidSkill(attack.skill)) {/* 464 */ if (player.getMapId() / 1000000 != 926)/* */ {/* 466 */ return;/* */ }/* 468 */ if ((player.getPyramidSubway() == null) || (!player.getPyramidSubway().onSkillUse(player))) {/* 469 */ return;/* */ }/* */ }/* 472 */ else if ((GameConstants.isInflationSkill(attack.skill)) && /* 473 */ (player.getBuffedValue(MapleBuffStat.GIANT_POTION) == null)) {/* 474 */ return;/* */ }/* */ /* 477 */ if (player.getClient().getChannelServer().isAdminOnly()) {/* 478 */ player.dropMessage(-1, new StringBuilder().append("Animation: ").append(Integer.toHexString((attack.display & 0x8000) != 0 ? attack.display - 32768 : attack.display)).toString());/* */ }/* 480 */ PlayerStats stats = player.getStat();/* 481 */ Element element = player.getBuffedValue(MapleBuffStat.ELEMENT_RESET) != null ? Element.NEUTRAL : theSkill.getElement();/* */ /* 483 */ double MaxDamagePerHit = 0.0D;/* 484 */ int totDamage = 0;/* */ /* 488 */ int CriticalDamage = stats.passive_sharpeye_percent();/* 489 */ Skill eaterSkill = SkillFactory.getSkill(GameConstants.getMPEaterForJob(player.getJob()));/* 490 */ int eaterLevel = player.getTotalSkillLevel(eaterSkill);/* */ /* 492 */ MapleMap map = player.getMap();/* */ /* 494 */ for (AttackPair oned : attack.allDamage) {/* 495 */ MapleMonster monster = map.getMonsterByOid(oned.objectid);/* */ /* 497 */ if ((monster != null) && (monster.getLinkCID() monster.getMobMaxHp()) {/* 525 */ eachd = Integer.valueOf((int)Math.min(monster.getMobMaxHp(), 2147483647L));/* 526 */ player.getCheatTracker().registerOffense(CheatingOffense.HIGH_DAMAGE_MAGIC);/* */ }/* 528 */ } else if ((!monster.isBuffed(MonsterStatus.MAGIC_IMMUNITY)) && (!monster.isBuffed(MonsterStatus.MAGIC_DAMAGE_REFLECT))) {/* 529 */ if (eachd.intValue() > MaxDamagePerHit) {/* 530 */ player.getCheatTracker().registerOffense(CheatingOffense.HIGH_DAMAGE_MAGIC, new StringBuilder().append("[Damage: ").append(eachd).append(", Expected: ").append(MaxDamagePerHit).append(", Mob: ").append(monster.getId()).append("] [Job: ").append(player.getJob()).append(", Level: ").append(player.getLevel()).append(", Skill: ").append(attack.skill).append("]").toString());/* 531 */ if (attack.real) {/* 532 */ player.getCheatTracker().checkSameDamage(eachd.intValue(), MaxDamagePerHit);/* */ }/* 534 */ if (eachd.intValue() > MaxDamagePerHit * 2.0D)/* */ {/* 536 */ player.getCheatTracker().registerOffense(CheatingOffense.HIGH_DAMAGE_MAGIC_2, new StringBuilder().append("[Damage: ").append(eachd).append(", Expected: ").append(MaxDamagePerHit).append(", Mob: ").append(monster.getId()).append("] [Job: ").append(player.getJob()).append(", Level: ").append(player.getLevel()).append(", Skill: ").append(attack.skill).append("]").toString());/* 537 */ eachd = Integer.valueOf((int)(MaxDamagePerHit * 2.0D));/* */ /* 539 */ if (eachd.intValue() >= 2499999) {/* 540 */ player.getClient().getSession().close();/* 541 */ return;/* */ }/* */ }/* */ }/* */ }/* 546 */ else if (eachd.intValue() > MaxDamagePerHit) {/* 547 */ eachd = Integer.valueOf((int)MaxDamagePerHit);/* */ }/* */ /* */ }/* */ /* 552 */ totDamageToOneMonster += eachd.intValue();/* */ }/* 554 */ totDamage += totDamageToOneMonster;/* 555 */ player.checkMonsterAggro(monster);/* */ /* 557 */ if ((GameConstants.getAttackDelay(attack.skill, theSkill) >= 100) && (!GameConstants.isNoDelaySkill(attack.skill)) && (!monster.getStats().isBoss()) && (player.getTruePosition().distanceSq(monster.getTruePosition()) > GameConstants.getAttackRange(effect, player.getStat().defRange))) {/* 558 */ player.getCheatTracker().registerOffense(CheatingOffense.ATTACK_FARAWAY_MONSTER, new StringBuilder().append("[Distance: ").append(player.getTruePosition().distanceSq(monster.getTruePosition())).append(", Expected Distance: ").append(GameConstants.getAttackRange(effect, player.getStat().defRange)).append(" Job: ").append(player.getJob()).append("]").toString());/* */ }/* 560 */ if ((attack.skill == 2301002) && (!monsterstats.getUndead())) {/* 561 */ player.getCheatTracker().registerOffense(CheatingOffense.HEAL_ATTACKING_UNDEAD);/* 562 */ return;/* */ }/* */ /* 565 */ if (totDamageToOneMonster > 0) {/* 566 */ monster.damage(player, totDamageToOneMonster, true, attack.skill);/* 567 */ if (monster.isBuffed(MonsterStatus.MAGIC_DAMAGE_REFLECT)) {/* 568 */ player.addHP(-(7000 + Randomizer.nextInt(8000)));/* */ }/* 570 */ if (player.getBuffedValue(MapleBuffStat.SLOW) != null) {/* 571 */ MapleStatEffect eff = player.getStatForBuff(MapleBuffStat.SLOW);/* */ /* 573 */ if ((eff != null) && (eff.makeChanceResult()) && (!monster.isBuffed(MonsterStatus.SPEED))) {/* 574 */ monster.applyStatus(player, new MonsterStatusEffect(MonsterStatus.SPEED, Integer.valueOf(eff.getX()), eff.getSourceId(), null, false), false, eff.getY() * 1000, true, eff);/* */ }/* */ /* */ }/* */ /* 580 */ player.onAttack(monster.getMobMaxHp(), monster.getMobMaxMp(), attack.skill, monster.getObjectId(), totDamage, 0);/* */ /* 582 */ switch (attack.skill) {/* */ case 2221003:/* 584 */ monster.setTempEffectiveness(Element.ICE, effect.getDuration());/* 585 */ break;/* */ case 2121003:/* 587 */ monster.setTempEffectiveness(Element.FIRE, effect.getDuration());/* */ }/* */ /* 590 */ if ((effect != null) && (effect.getMonsterStati().size() > 0) && /* 591 */ (effect.makeChanceResult())) {/* 592 */ for (Map.Entry z : effect.getMonsterStati().entrySet()) {/* 593 */ monster.applyStatus(player, new MonsterStatusEffect((MonsterStatus)z.getKey(), (Integer)z.getValue(), theSkill.getId(), null, false), effect.isPoison(), effect.getDuration(), true, effect);/* */ }/* */ }/* */ /* 597 */ if (eaterLevel > 0) {/* 598 */ eaterSkill.getEffect(eaterLevel).applyPassive(player, monster);/* */ }/* */ }/* */ }/* */ }/* 603 */ if (attack.skill != 2301002) {/* 604 */ effect.applyTo(player);/* */ }/* */ /* 607 */ if ((totDamage > 1) && (GameConstants.getAttackDelay(attack.skill, theSkill) >= 100)) {/* 608 */ CheatTracker tracker = player.getCheatTracker();/* 609 */ tracker.setAttacksWithoutHit(true);/* */ /* 611 */ if (tracker.getAttacksWithoutHit() > 1000)/* 612 */ tracker.registerOffense(CheatingOffense.ATTACK_WITHOUT_GETTING_HIT, Integer.toString(tracker.getAttacksWithoutHit()));/* */ }/* */ }/* */ /* */ private static final double CalculateMaxMagicDamagePerHit(MapleCharacter chr, Skill skill, MapleMonster monster, MapleMonsterStats mobstats, PlayerStats stats, Element elem, Integer sharpEye, double maxDamagePerMonster, MapleStatEffect attackEffect)/* */ {/* 618 */ int dLevel = Math.max(mobstats.getLevel() - chr.getLevel(), 0) * 2;/* 619 */ int HitRate = Math.min((int)Math.floor(Math.sqrt(stats.getAccuracy())) - (int)Math.floor(Math.sqrt(mobstats.getEva())) + 100, 100);/* 620 */ if (dLevel > HitRate) {/* 621 */ HitRate = dLevel;/* */ }/* 623 */ HitRate -= dLevel;/* 624 */ if ((HitRate 999999.0D)/* 683 */ elemMaxDamagePerMob = 999999.0D;/* 684 */ else if (elemMaxDamagePerMob = 100 || Randomizer.nextInt(99) < player.getStat().pickRate) { player.getMap().spawnMesoDrop(Math.min((int) Math.max(((double) eachd / (double) 20000) * (double) maxmeso, (double) 1), maxmeso), new Point((int) (mob.getTruePosition().getX() + Randomizer.nextInt(100) - 50), (int) (mob.getTruePosition().getY())), mob, player, false, (byte) 0); } } }/* */ private static double CalculateMaxWeaponDamagePerHit(MapleCharacter player, MapleMonster monster, AttackInfo attack, Skill theSkill, MapleStatEffect attackEffect, double maximumDamageToMonster, Integer CriticalDamagePercent)/* */ {/* 718 */ int dLevel = Math.max(monster.getStats().getLevel() - player.getLevel(), 0) * 2;/* 719 */ int HitRate = Math.min((int)Math.floor(Math.sqrt(player.getStat().getAccuracy())) - (int)Math.floor(Math.sqrt(monster.getStats().getEva())) + 100, 100);/* 720 */ if (dLevel > HitRate) {/* 721 */ HitRate = dLevel;/* */ }/* 723 */ HitRate -= dLevel;/* 724 */ if ((HitRate 0) {/* 802 */ MapleStatEffect mort = mortal.getEffect(player.getTotalSkillLevel(mortal));/* 803 */ if ((mort != null) && (monster.getHPPercent() < mort.getX())) {/* 804 */ elementalMaxDamagePerMonster = 999999.0D;/* 805 */ defined = true;/* 806 */ if (mort.getZ() > 0)/* 807 */ player.addHP(player.getStat().getMaxHp() * mort.getZ() / 100);/* */ }/* */ }/* */ }/* 811 */ else if ((player.getJob() == 221) || (player.getJob() == 222))/* */ {/* 813 */ Skill mortal = SkillFactory.getSkill(2210000);/* 814 */ if (player.getTotalSkillLevel(mortal) > 0) {/* 815 */ MapleStatEffect mort = mortal.getEffect(player.getTotalSkillLevel(mortal));/* 816 */ if ((mort != null) && (monster.getHPPercent() < mort.getX())) {/* 817 */ elementalMaxDamagePerMonster = 999999.0D;/* 818 */ defined = true;/* */ }/* */ }/* */ }/* 822 */ if ((!defined) || ((theSkill != null) && ((theSkill.getId() == 33101001) || (theSkill.getId() == 3221001)))) {/* 823 */ if (player.getBuffedValue(MapleBuffStat.WK_CHARGE) != null) {/* 824 */ int chargeSkillId = player.getBuffSource(MapleBuffStat.WK_CHARGE);/* */ /* 826 */ switch (chargeSkillId) {/* */ case 1211003:/* */ case 1211004:/* 829 */ elements.add(Element.FIRE);/* 830 */ break;/* */ case 1211005:/* */ case 1211006:/* */ case 21111005:/* 834 */ elements.add(Element.ICE);/* 835 */ break;/* */ case 1211007:/* */ case 1211008:/* */ case 15101006:/* 839 */ elements.add(Element.LIGHTING);/* 840 */ break;/* */ case 1221003:/* */ case 1221004:/* */ case 11111007:/* 844 */ elements.add(Element.HOLY);/* 845 */ break;/* */ case 12101005:/* */ }/* */ /* */ }/* */ /* 851 */ if (player.getBuffedValue(MapleBuffStat.LIGHTNING_CHARGE) != null) {/* 852 */ elements.add(Element.LIGHTING);/* */ }/* 854 */ if (player.getBuffedValue(MapleBuffStat.ELEMENT_RESET) != null)/* 855 */ elements.clear();/* */ double elementalEffect;/* 857 */ if (elements.size() > 0)/* */ {/* 860 */ switch (attack.skill) {/* */ case 3111003:/* */ case 3211003:/* 863 */ elementalEffect = attackEffect.getX() / 100.0D;/* 864 */ break;/* */ default:/* 866 */ elementalEffect = 0.5D / elements.size();/* */ }/* */ /* 869 */ for (Element element : elements) { switch (monster.getEffectiveness(element)) { case IMMUNE: elementalMaxDamagePerMonster = 1; break; case WEAK: elementalMaxDamagePerMonster *= (1.0 + elementalEffect + player.getStat().getElementBoost(element)); break; case STRONG: elementalMaxDamagePerMonster *= (1.0 - elementalEffect - player.getStat().getElementBoost(element)); break; } } } /* */ /* 884 */ elementalMaxDamagePerMonster -= elementalMaxDamagePerMonster * (Math.max(PDRate - Math.max(player.getStat().ignoreTargetDEF, 0) - Math.max(attackEffect == null ? 0 : attackEffect.getIgnoreMob(), 0), 0) / 100.0D);/* */ /* 887 */ elementalMaxDamagePerMonster += elementalMaxDamagePerMonster / 100.0D * CritPercent;/* */ /* 896 */ MonsterStatusEffect imprint = monster.getBuff(MonsterStatus.IMPRINT);/* 897 */ if (imprint != null) {/* 898 */ elementalMaxDamagePerMonster += elementalMaxDamagePerMonster * imprint.getX().intValue() / 100.0D;/* */ }/* */ /* 901 */ elementalMaxDamagePerMonster += elementalMaxDamagePerMonster * player.getDamageIncrease(monster.getObjectId()) / 100.0D;/* 902 */ elementalMaxDamagePerMonster *= ((monster.getStats().isBoss()) && (attackEffect != null) ? player.getStat().bossdam_r + attackEffect.getBossDamage() : player.getStat().dam_r) / 100.0D;/* */ }/* 904 */ if (elementalMaxDamagePerMonster > 999999.0D) {/* 905 */ if (!defined)/* 906 */ elementalMaxDamagePerMonster = 999999.0D;/* */ }/* 908 */ else if (elementalMaxDamagePerMonster damage.size() - toCrit; i--) {/* 957 */ damages.add(damage.get(i - 1));/* */ }/* 959 */ damage.clear();/* */ }/* 961 */ hit = 0;/* 962 */ for (Pair eachd : p.attack) {/* 963 */ if (!((Boolean)eachd.right).booleanValue()) {/* 964 */ if (attack.skill == 4221001)/* 965 */ eachd.right = Boolean.valueOf(hit == 3);/* 966 */ else if ((attack.skill == 3221007) || (attack.skill == 23121003) || (attack.skill == 21120005) || (attack.skill == 4341005) || (attack.skill == 4331006) || (((Integer)eachd.left).intValue() > 999999))/* 967 */ eachd.right = Boolean.valueOf(true);/* 968 */ else if (hit >= mid_att) {/* 969 */ eachd.right = ((Pair)p.attack.get(hit - mid_att)).right;/* */ }/* */ else {/* 972 */ eachd.right = Boolean.valueOf(damages.contains(eachd.left));/* */ }/* */ }/* 975 */ hit++;/* */ }/* 977 */ damages.clear();/* */ }/* */ }/* */ }/* 981 */ return attack;/* */ }/* */ /* */ public static final AttackInfo parseDmgMa(LittleEndianAccessor lea, MapleCharacter chr)/* */ {/* */ try {/* 987 */ AttackInfo ret = new AttackInfo();/* */ /* 995 */ lea.skip(1);/* 996 */ ret.tbyte = lea.readByte();/* */ /* 998 */ ret.targets = (byte)(ret.tbyte >>> 4 & 0xF);/* 999 */ ret.hits = (byte)(ret.tbyte & 0xF);/* 1000 */ ret.skill = lea.readInt();/* 1001 */ if (ret.skill >= 91000000) {/* 1002 */ return null;/* */ }/* 1004 */ lea.skip(GameConstants.GMS ? 9 : 17);/* 1005 */ if (GameConstants.isMagicChargeSkill(ret.skill))/* 1006 */ ret.charge = lea.readInt();/* */ else {/* 1008 */ ret.charge = -1;/* */ }/* 1010 */ ret.unk = lea.readByte();/* 1011 */ ret.display = lea.readUShort();/* */ /* 1017 */ lea.skip(4);/* 1018 */ lea.skip(1);/* 1019 */ ret.speed = lea.readByte();/* 1020 */ ret.lastAttackTickCount = lea.readInt();/* 1021 */ lea.skip(4);/* */ /* 1032 */ ret.allDamage = new ArrayList();/* */ /* 1034 */ for (int i = 0; i < ret.targets; i++) {/* 1035 */ int oid = lea.readInt();/* */ /* 1042 */ lea.skip(18);/* */ /* 1044 */ List allDamageNumbers = new ArrayList();/* */ /* 1046 */ for (int j = 0; j < ret.hits; j++) {/* 1047 */ int damage = lea.readInt();/* 1048 */ allDamageNumbers.add(new Pair(Integer.valueOf(damage), Boolean.valueOf(false)));/* */ }/* */ /* 1051 */ lea.skip(4);/* 1052 */ ret.allDamage.add(new AttackPair(Integer.valueOf(oid).intValue(), allDamageNumbers));/* */ }/* 1054 */ if (lea.available() >= 4L) {/* 1055 */ ret.position = lea.readPos();/* */ }/* 1057 */ return ret;/* */ } catch (Exception e) {/* 1059 */ e.printStackTrace();/* 1060 */ }return null;/* */ }/* */ /* */ public static final AttackInfo parseDmgM(LittleEndianAccessor lea, MapleCharacter chr)/* */ {/* 1066 */ AttackInfo ret = new AttackInfo();/* 1067 */ lea.skip(1);/* 1068 */ ret.tbyte = lea.readByte();/* */ /* 1070 */ ret.targets = (byte)(ret.tbyte >>> 4 & 0xF);/* 1071 */ ret.hits = (byte)(ret.tbyte & 0xF);/* 1072 */ ret.skill = lea.readInt();/* 1073 */ if (ret.skill >= 91000000) {/* 1074 */ return null;/* */ }/* 1076 */ lea.skip(9); switch (ret.skill) { case 24121000:// mille // case 24121005://tempest //case 5101004: // Corkscrew //case 15101003: // Cygnus corkscrew case 5201002: // Gernard case 14111006: // Poison bomb case 4341002: case 4341003: case 5301001: case 5300007: case 31001000: // grim scythe case 31101000: // soul eater case 31111005: // carrion breath ret.charge = lea.readInt(); break; default: ret.charge = 0; break; }/* */ /* 1096 */ ret.unk = lea.readByte();/* 1097 */ ret.display = lea.readUShort();/* 1098 */ lea.skip(4);/* 1099 */ lea.skip(1);/* 1100 */ if ((ret.skill == 5300007) || (ret.skill == 5101012) || (ret.skill == 5081001) || (ret.skill == 15101010)) {/* 1101 */ lea.readInt();/* */ } if(ret.skill == 24121005){ lea.readInt(); }/* 1103 */ ret.speed = lea.readByte();/* 1104 */ ret.lastAttackTickCount = lea.readInt();/* 1105 */ lea.skip(8);/* */ /* 1107 */ ret.allDamage = new ArrayList();/* */ /* 1109 */ if (ret.skill == 4211006) {/* 1110 */ return parseMesoExplosion(lea, ret, chr);/* */ }/* */ /* 1114 */ /*if (ret.skill == 24121000) {/* 1115 */ // lea.readInt();/* */ // }/* 1117 */ for (int i = 0; i < ret.targets; i++) {/* 1118 */ int oid = lea.readInt();/* */ /* 1125 */ lea.skip(18);/* */ /* 1127 */ List allDamageNumbers = new ArrayList();/* */ /* 1129 */ for (int j = 0; j < ret.hits; j++) {/* 1130 */ int damage = lea.readInt();/* */ /* 1132 */ allDamageNumbers.add(new Pair(Integer.valueOf(damage), Boolean.valueOf(false)));/* */ }/* 1134 */ lea.skip(4);/* 1135 */ ret.allDamage.add(new AttackPair(Integer.valueOf(oid).intValue(), allDamageNumbers));/* */ }/* 1137 */ ret.position = lea.readPos();/* 1138 */ return ret;/* */ }/* */ /* */ public static final AttackInfo parseDmgR(LittleEndianAccessor lea, MapleCharacter chr)/* */ {/* 1143 */ AttackInfo ret = new AttackInfo();/* 1144 */ lea.skip(1);/* 1145 */ ret.tbyte = lea.readByte();/* */ /* 1147 */ ret.targets = (byte)(ret.tbyte >>> 4 & 0xF);/* 1148 */ ret.hits = (byte)(ret.tbyte & 0xF);/* 1149 */ ret.skill = lea.readInt();/* 1150 */ if (ret.skill >= 91000000) {/* 1151 */ return null;/* */ }/* 1153 */ lea.skip(10); switch (ret.skill) { case 3121004: // Hurricane case 3221001: // Pierce case 5221004: // Rapidfire case 5721001: // Rapidfire case 13111002: // Cygnus Hurricane case 33121009: case 35001001: case 5711002: case 35101009: case 23121000: case 5311002: case 24121000: lea.skip(4); // extra 4 bytes break; }/* */ /* 1167 */ ret.charge = -1;/* 1168 */ ret.unk = lea.readByte();/* 1169 */ ret.display = lea.readUShort();/* 1170 */ lea.skip(4);/* 1171 */ lea.skip(1);/* 1172 */ if (ret.skill == 23111001) {/* 1173 */ lea.skip(4);/* 1174 */ lea.skip(4);/* */ /* 1176 */ lea.skip(4);/* */ }/* 1178 */ ret.speed = lea.readByte();/* 1179 */ ret.lastAttackTickCount = lea.readInt();/* 1180 */ lea.skip(4);/* 1181 */ ret.slot = (byte)lea.readShort();/* 1182 */ ret.csstar = (byte)lea.readShort();/* 1183 */ ret.AOE = lea.readByte();/* */ /* 1187 */ ret.allDamage = new ArrayList();/* */ /* 1189 */ for (int i = 0; i < ret.targets; i++) {/* 1190 */ int oid = lea.readInt();/* */ /* 1197 */ lea.skip(18);/* */ /* 1199 */ List allDamageNumbers = new ArrayList();/* 1200 */ for (int j = 0; j < ret.hits; j++) {/* 1201 */ int damage = lea.readInt();/* 1202 */ allDamageNumbers.add(new Pair(Integer.valueOf(damage), Boolean.valueOf(false)));/* */ }/* */ /* 1205 */ lea.skip(4);/* */ /* 1208 */ ret.allDamage.add(new AttackPair(Integer.valueOf(oid).intValue(), allDamageNumbers));/* */ }/* 1210 */ lea.skip(4);/* 1211 */ ret.position = lea.readPos();/* */ /* 1213 */ return ret;/* */ }/* */ /* */ public static final AttackInfo parseMesoExplosion(LittleEndianAccessor lea, AttackInfo ret, MapleCharacter chr)/* */ {/* 1219 */ if (ret.hits == 0) {/* 1220 */ lea.skip(4);/* 1221 */ byte bullets = lea.readByte();/* 1222 */ for (int j = 0; j < bullets; j++) {/* 1223 */ ret.allDamage.add(new AttackPair(Integer.valueOf(lea.readInt()).intValue(), null));/* 1224 */ lea.skip(1);/* */ }/* 1226 */ lea.skip(2);/* 1227 */ return ret;/* */ }/* */ /* 1232 */ for (int i = 0; i < ret.targets; i++) {/* 1233 */ int oid = lea.readInt();/* */ /* 1240 */ lea.skip(12);/* 1241 */ byte bullets = lea.readByte();/* 1242 */ List allDamageNumbers = new ArrayList();/* 1243 */ for (int j = 0; j < bullets; j++) {/* 1244 */ allDamageNumbers.add(new Pair(Integer.valueOf(lea.readInt()), Boolean.valueOf(false)));/* */ }/* 1246 */ ret.allDamage.add(new AttackPair(Integer.valueOf(oid).intValue(), allDamageNumbers));/* 1247 */ lea.skip(4);/* */ }/* 1249 */ lea.skip(4);/* 1250 */ byte bullets = lea.readByte();/* */ /* 1252 */ for (int j = 0; j < bullets; j++) {/* 1253 */ ret.allDamage.add(new AttackPair(Integer.valueOf(lea.readInt()).intValue(), null));/* 1254 */ lea.skip(2);/* */ }/* */ /* 1258 */ return ret;/* */ }/* */ }/* Location: C:\Users\Sjogren\Desktop\lithium.jar * Qualified Name: handling.channel.handler.DamageParse * JD-Core Version: 0.6.0 */