Index: C:/eclipse/workspace/L2J/java/net/sf/l2j/gameserver/clientpackets/RequestActionUse.java =================================================================== --- C:/eclipse/workspace/L2J/java/net/sf/l2j/gameserver/clientpackets/RequestActionUse.java (revision 1063) +++ C:/eclipse/workspace/L2J/java/net/sf/l2j/gameserver/clientpackets/RequestActionUse.java (working copy) @@ -19,7 +19,6 @@ package net.sf.l2j.gameserver.clientpackets; import java.nio.ByteBuffer; -import java.util.HashMap; import java.util.logging.Logger; import net.sf.l2j.Config; @@ -29,6 +28,7 @@ import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2PcInstance; import net.sf.l2j.gameserver.model.L2Skill; +import net.sf.l2j.gameserver.SkillTable; import net.sf.l2j.gameserver.model.L2Summon; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.serverpackets.ActionFailed; @@ -172,77 +172,119 @@ if (pet != null && pet.isMountable() && !activeChar.isMounted()) { if (activeChar.isDead()) - { + { //A strider cannot be ridden when dead SystemMessage msg = new SystemMessage(1009); activeChar.sendPacket(msg); - } - else if (pet.isDead()) - { + } + else if (pet.isDead()) + { //A dead strider cannot be ridden. SystemMessage msg = new SystemMessage(1010); activeChar.sendPacket(msg); - } - else if (pet.isInCombat()) - { + } + else if (pet.isInCombat()) + { //A strider in battle cannot be ridden SystemMessage msg = new SystemMessage(1011); activeChar.sendPacket(msg); - } - else if (activeChar.isInCombat()) - { + } + else if (activeChar.isInCombat()) + { //A strider cannot be ridden while in battle SystemMessage msg = new SystemMessage(1012); activeChar.sendPacket(msg); - } - else if (activeChar.isSitting() || activeChar.isMoving()) - { + } + else if (activeChar.isSitting() || activeChar.isMoving()) + { //A strider can be ridden only when standing SystemMessage msg = new SystemMessage(1013); activeChar.sendPacket(msg); - } - else if (!pet.isDead() && !activeChar.isMounted()) - { + } + else if (!pet.isDead() && !activeChar.isMounted()) + { Ride mount = new Ride(activeChar.getObjectId(), Ride.ACTION_MOUNT, pet.getTemplate().npcId); activeChar.sendPacket(mount); activeChar.broadcastPacket(mount); activeChar.setMountType(mount.getMountType()); pet.unSummon(activeChar); - } + } } else if (activeChar.isMounted()) { - Ride dismount = new Ride(activeChar.getObjectId(), Ride.ACTION_DISMOUNT, 0); - activeChar.sendPacket(dismount); - activeChar.broadcastPacket(dismount); - activeChar.setMountType(0); + Ride dismount = new Ride(activeChar.getObjectId(), Ride.ACTION_DISMOUNT, 0); + activeChar.sendPacket(dismount); + activeChar.broadcastPacket(dismount); + activeChar.setMountType(0); } break; - } - case 43: + } + case 32: //Wild Hog Cannon - Mode Change { - L2Object target = activeChar.getTarget(); + /*L2Object target = activeChar.getTarget(); L2Summon pet = activeChar.getPet(); if (target != null && pet != null && pet != target && activeChar != target) { - if ((pet.withinZones(L2World.zones) || target.withinZones(L2World.zones)) && (activeChar.getAccessLevel() < Config.GM_PEACEATTACK)) - { - activeChar.sendPacket(new SystemMessage(SystemMessage.TARGET_IN_PEACEZONE)); - return; - } - - if (target.isAutoAttackable(activeChar) || _ctrlPressed) - { - HashMap skills = pet.getTemplate().getSkills(); - if(skills.size() != 0) - { - pet.setTarget(activeChar.getTarget()); - pet.useMagic((L2Skill)skills.values().toArray()[0]); - } - } - } + L2Skill skill = SkillTable.getInstance().getInfo(1259,1); + UseSkill(activeChar, pet, target, skill); + }*/ break; } + case 36: //Toxic Smoke + { + UseSkill(4036); + break; + } + case 39: //Parasite Burst + { + UseSkill(4138); + break; + } + case 41: //Wild Hog Cannon - Attack + { + UseSkill(4230); + break; + } + case 42: //Self Damage Shield + { + UseSkill(4378); + break; + } + case 43: //Whirpool + { + UseSkill(4137); + break; + } + case 44: //Boom Attack + { + UseSkill(4139); + break; + } + case 45: //Master Recharge + { + UseSkill(4025); + break; + } + case 46: //Mega Storm Strike + { + UseSkill(4001); + break; + } + case 47: //Steal Blood + { + UseSkill(4002); + break; + } + case 48: //Mech. Cannon + { + UseSkill(4068); + break; + } + case 1000: //Siege Hammer + { + UseSkill(4079); + break; + } default: { _log.warning("unhandled action type "+_actionId); @@ -253,6 +295,49 @@ /* (non-Javadoc) * @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType() */ + + private void UseSkill(int skillId) + { + L2PcInstance activeChar = getClient().getActiveChar(); + L2Object target = activeChar.getTarget(); + L2Summon pet = activeChar.getPet(); + if (target != null && pet != null && pet != target && activeChar != target) + { + int skillLvl = activeChar.getPet().getSkillLevel(skillId); + L2Skill skill = SkillTable.getInstance().getInfo(skillId,skillLvl); + if ((pet.withinZones(L2World.zones) || target.withinZones(L2World.zones)) && (activeChar.getAccessLevel() < Config.GM_PEACEATTACK)) + { + activeChar.sendPacket(new SystemMessage(SystemMessage.TARGET_IN_PEACEZONE)); + return; + } + if (target.isAutoAttackable(activeChar) || _ctrlPressed) + { + if(skill != null) + { + pet.setTarget(target); + pet.useMagic(skill); + } + } + } + } + +/* private void UseSkill(L2PcInstance activeChar, L2Summon pet, L2Object target, L2Skill skill) + { + if ((pet.withinZones(L2World.zones) || target.withinZones(L2World.zones)) && (activeChar.getAccessLevel() < Config.GM_PEACEATTACK)) + { + activeChar.sendPacket(new SystemMessage(SystemMessage.TARGET_IN_PEACEZONE)); + return; + } + if (target.isAutoAttackable(activeChar) || _ctrlPressed) + { + if(skill != null) + { + pet.setTarget(target); + pet.useMagic(skill); + } + } + }*/ + public String getType() { return _C__45_REQUESTACTIONUSE;