Added cooldown resets for commands that arent executed

This commit is contained in:
Light2
2013-09-22 18:47:41 +02:00
parent 5ff085adcc
commit 110f8ae237
4 changed files with 33 additions and 11 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ public class BuffService implements INetworkDispatch {
public void addBuffToCreature(final CreatureObject creature, String buffName) {
if(!FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) {
System.out.println("Buff script doesnt exist for: " + buffName);
//System.out.println("Buff script doesnt exist for: " + buffName);
return;
}
+2 -2
View File
@@ -686,7 +686,7 @@ public class SimulationService implements INetworkDispatch {
for(Mesh3DTriangle tri : tris) {
if(ray.intersectsTriangle(tri, distance) != null) {
System.out.println("Collided with " + object.getTemplate() + " X: " + object.getPosition().x + " Y: " + object.getPosition().y + " Z: " + object.getPosition().z);
// System.out.println("Collided with " + object.getTemplate() + " X: " + object.getPosition().x + " Y: " + object.getPosition().y + " Z: " + object.getPosition().z);
return false;
}
@@ -767,7 +767,7 @@ public class SimulationService implements INetworkDispatch {
for(Mesh3DTriangle tri : tris) {
if(ray.intersectsTriangle(tri, distance) != null) {
System.out.println("Collision with: " + cell.name);
// System.out.println("Collision with: " + cell.name);
return false;
}
+27 -4
View File
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import protocol.swg.ObjControllerMessage;
import protocol.swg.PlayClientEffectLocMessage;
@@ -76,12 +77,21 @@ public class CombatService implements INetworkDispatch {
public void doCombat(final CreatureObject attacker, final TangibleObject target, final WeaponObject weapon, final CombatCommand command, final int actionCounter) {
boolean success = true;
if(!applySpecialCost(attacker, weapon, command))
return;
success = false;
if((command.getAttackType() == 0 || command.getAttackType() == 1 || command.getAttackType() == 3) && !attemptCombat(attacker, target))
return;
success = false;
if(!success) {
IoSession session = attacker.getClient().getSession();
CommandEnqueueRemove commandRemove = new CommandEnqueueRemove(attacker.getObjectId(), actionCounter);
session.write(new ObjControllerMessage(0x0B, commandRemove).serialize());
StartTask startTask = new StartTask(actionCounter, attacker.getObjectID(), command.getCommandCRC(), CRC.StringtoCRC(command.getCooldownGroup()), -1);
session.write(new ObjControllerMessage(0x0B, startTask).serialize());
}
/* // use preRun for delayed effects like officer orbital strike, grenades etc.
if(FileUtilities.doesFileExist("scripts/commands/combat" + command.getCommandName() + ".py"))
@@ -744,11 +754,24 @@ public class CombatService implements INetworkDispatch {
public void doHeal(CreatureObject healer, CreatureObject target, WeaponObject weapon, CombatCommand command, int actionCounter) {
boolean success = true;
if(!applySpecialCost(healer, weapon, command))
return;
success = false;
if((command.getAttackType() == 0 || command.getAttackType() == 1 || command.getAttackType() == 3) && !attemptHeal(healer, target))
return;
success = false;
if(command.getAttackType() == 1 && target.getMaxHealth() == target.getHealth())
success = false;
if(!success) {
IoSession session = healer.getClient().getSession();
CommandEnqueueRemove commandRemove = new CommandEnqueueRemove(healer.getObjectId(), actionCounter);
session.write(new ObjControllerMessage(0x0B, commandRemove).serialize());
StartTask startTask = new StartTask(actionCounter, healer.getObjectID(), command.getCommandCRC(), CRC.StringtoCRC(command.getCooldownGroup()), -1);
session.write(new ObjControllerMessage(0x0B, startTask).serialize());
}
if(command.getAttackType() == 1)
doSingleTargetHeal(healer, target, weapon, command, actionCounter);
+3 -4
View File
@@ -205,12 +205,11 @@ public class CommandService implements INetworkDispatch {
}
if(!success) {
IoSession session = attacker.getClient().getSession();
CommandEnqueueRemove commandRemove = new CommandEnqueueRemove(attacker.getObjectId(), actionCounter);
ObjControllerMessage objController = new ObjControllerMessage(0x0B, commandRemove);
attacker.getClient().getSession().write(objController.serialize());
session.write(new ObjControllerMessage(0x0B, commandRemove).serialize());
StartTask startTask = new StartTask(actionCounter, attacker.getObjectID(), command.getCommandCRC(), CRC.StringtoCRC(command.getCooldownGroup()), -1);
ObjControllerMessage objController2 = new ObjControllerMessage(0x0B, startTask);
attacker.getClient().getSession().write(objController2.serialize());
session.write(new ObjControllerMessage(0x0B, startTask).serialize());
} else {
if(command.getHitType() == 5) {