From 5f1022543e9c05e8d32ca134ee7e9937febe2788 Mon Sep 17 00:00:00 2001 From: Treeku Date: Sun, 13 Apr 2014 13:17:23 +0100 Subject: [PATCH] godLevel is now set and used --- scripts/commands/setgodmode.py | 11 ++ scripts/conversation/demo.py | 18 +- src/main/NGECore.java | 7 +- .../objects/harvester/HarvesterObject.java | 14 -- .../objects/player/PlayerMessageBuilder.java | 18 +- .../objects/player/PlayerObject.java | 17 +- src/services/combat/CombatService.java | 5 +- src/services/command/BaseSWGCommand.java | 184 +----------------- src/services/command/CombatCommand.java | 183 ++++++++++++++++- src/services/command/CommandService.java | 84 ++++---- 10 files changed, 279 insertions(+), 262 deletions(-) diff --git a/scripts/commands/setgodmode.py b/scripts/commands/setgodmode.py index 18c5f4f2..84f981c7 100644 --- a/scripts/commands/setgodmode.py +++ b/scripts/commands/setgodmode.py @@ -29,6 +29,13 @@ def run(core, actor, target, commandString): if not command: return + if actor.getClient().isGM() is False: + return + + if playerObject.getGodLevel() == 0: + actor.addAbility("admin") + playerObject.setGodLevel(50) + if command == 'giveExperience' and arg1: core.playerService.giveExperience(actor, int(arg1)) @@ -103,4 +110,8 @@ def run(core, actor, target, commandString): playerObject.setHoloEmote('holoemote_' + arg1) playerObject.setHoloEmoteUses(20) actor.sendSystemMessage('Holo-Emote Generator set to ' + 'holoemote_' + arg1, 0) + elif command == 'off': + if playerObject.getGodLevel > 0: + actor.removeAbility("admin") + playerObject.setGodLevel(0) return diff --git a/scripts/conversation/demo.py b/scripts/conversation/demo.py index 802329db..35ab97b6 100644 --- a/scripts/conversation/demo.py +++ b/scripts/conversation/demo.py @@ -7,11 +7,11 @@ import sys def startConversation(core, actor, npc): convSvc = core.conversationService - convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_31'))) + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller:s_31'))) options = Vector() - options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_32')), 0)) - options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_33')), 1)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_32')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_33')), 1)) convSvc.sendConversationOptions(actor, npc, options, handleFirstScreen) return @@ -22,19 +22,19 @@ def handleFirstScreen(core, actor, npc, selection): # TODO: check for prices if selection == 0: # respec - convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_58'))) + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller:s_58'))) options = Vector() - options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_60')), 0)) - options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_64')), 1)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_60')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_64')), 1)) convSvc.sendConversationOptions(actor, npc, options, handleRespecScreen) if selection == 1: # expertise reset - convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_35'))) + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller:s_35'))) options = Vector() - options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_71')), 0)) - options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_72')), 1)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_71')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_72')), 1)) convSvc.sendConversationOptions(actor, npc, options, handleResetScreen) return diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 56f33e88..ee431544 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -355,7 +355,12 @@ public class NGECore { zoneDispatch.addService(entertainmentService); //zoneDispatch.addService(missionService); zoneDispatch.addService(bazaarService); - + + if (optionsConfigLoaded && options.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + zoneDispatch.addService(surveyService); + zoneDispatch.addService(resourceService); + } + zoneServer = new MINAServer(zoneDispatch, config.getInt("ZONE.PORT")); zoneServer.start(); staticService = new StaticService(this); diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index 7fe12cbb..8964d7e1 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -21,35 +21,21 @@ ******************************************************************************/ package resources.objects.harvester; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; import java.util.Vector; import main.NGECore; -import protocol.swg.SceneCreateObjectByCrc; -import protocol.swg.SceneDestroyObject; -import protocol.swg.SceneEndBaselines; -import protocol.swg.UpdatePVPStatusMessage; import com.sleepycat.persist.model.Persistent; -import services.chat.WaypointAttachment; import engine.clients.Client; -import engine.resources.common.CRC; -import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; import resources.objects.creature.CreatureObject; import resources.objects.installation.InstallationMessageBuilder; import resources.objects.installation.InstallationObject; -import resources.objects.player.PlayerObject; import resources.objects.resource.GalacticResource; import resources.objects.resource.ResourceContainerObject; -import resources.objects.waypoint.WaypointObject; -import services.chat.Mail; - /** * @author Charon diff --git a/src/resources/objects/player/PlayerMessageBuilder.java b/src/resources/objects/player/PlayerMessageBuilder.java index aae6f5c3..7e518a32 100644 --- a/src/resources/objects/player/PlayerMessageBuilder.java +++ b/src/resources/objects/player/PlayerMessageBuilder.java @@ -107,12 +107,10 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder { buffer.setAutoExpand(true); buffer.putShort((short) 0x11); buffer.putInt((short) 0x43); - buffer.put(getAsciiString("string_id_table")); - - buffer.put((byte) 0); // unk - buffer.putShort((short) 0); // unk - buffer.putInt(0); // unk + buffer.putInt(0); // probably stringId + buffer.putShort((short) 0); // detailedDescription + buffer.put(player.getGodLevel()); buffer.putInt(0); // unk buffer.putInt(0); // unk buffer.putInt(0); // unk @@ -654,6 +652,16 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder { buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 19, buffer, size + 4); return buffer; } + + public IoBuffer buildGodLevelDelta(byte godLevel) { + IoBuffer buffer = bufferPool.allocate(1, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.put(godLevel); + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("PLAY", (byte) 6, (short) 1, (short) 0x02, buffer, size + 4); + return buffer; + + } @Override public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index d1c23985..7c956d6f 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -44,7 +44,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=10) +@Persistent(version=11) public class PlayerObject extends IntangibleObject { // PLAY 3 @@ -140,6 +140,8 @@ public class PlayerObject extends IntangibleObject { private SurveyTool lastUsedSurveyTool; private ResourceContainerObject recentContainer; + private byte godLevel = 0; + public PlayerObject() { super(); messageBuilder = new PlayerMessageBuilder(this); @@ -849,4 +851,17 @@ public class PlayerObject extends IntangibleObject { { return this.lotsRemaining; } + + public byte getGodLevel() { + return godLevel; + } + + public void setGodLevel(int godLevel) { + this.godLevel = (byte) godLevel; + + if (getContainer() != null) { + getContainer().getClient().getSession().write(messageBuilder.buildGodLevelDelta((byte) godLevel)); + } + } + } diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index f8cbb7fc..87bfcd31 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -51,7 +51,6 @@ import resources.objects.waypoint.WaypointObject; import resources.objects.weapon.WeaponObject; import services.ai.AIActor; import services.combat.CombatEvents.DamageTaken; -import services.command.BaseSWGCommand; import services.command.CombatCommand; import services.sui.SUIService.MessageBoxType; import services.sui.SUIWindow; @@ -402,7 +401,7 @@ public class CombatService implements INetworkDispatch { } - private void sendCombatPackets(CreatureObject attacker, TangibleObject target, WeaponObject weapon, BaseSWGCommand command, int actionCounter, float damage, int armorAbsorbed, int hitType) { + private void sendCombatPackets(CreatureObject attacker, TangibleObject target, WeaponObject weapon, CombatCommand command, int actionCounter, float damage, int armorAbsorbed, int hitType) { String animationStr = command.getRandomAnimation(weapon); CombatAction combatAction = new CombatAction(CRC.StringtoCRC(animationStr), attacker.getObjectID(), weapon.getObjectID(), target.getObjectID(), command.getCommandCRC()); @@ -431,7 +430,7 @@ public class CombatService implements INetworkDispatch { } - private void sendHealPackets(CreatureObject attacker, CreatureObject target, WeaponObject weapon, BaseSWGCommand command, int actionCounter) { + private void sendHealPackets(CreatureObject attacker, CreatureObject target, WeaponObject weapon, CombatCommand command, int actionCounter) { CombatAction combatAction = new CombatAction(CRC.StringtoCRC(command.getDefaultAnimations()[0]), attacker.getObjectID(), weapon.getObjectID(), target.getObjectID(), command.getCommandCRC()); ObjControllerMessage objController = new ObjControllerMessage(0x1B, combatAction); diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 3205bd5e..9c2d639f 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -27,9 +27,6 @@ import engine.resources.common.CRC; import java.util.ArrayList; import java.util.List; -import java.util.Random; - -import resources.objects.weapon.WeaponObject; public class BaseSWGCommand implements Cloneable { @@ -57,22 +54,8 @@ public class BaseSWGCommand implements Cloneable { private Byte[] invalidPostures; private Long[] invalidStates; - private String[] defaultAnimations = new String[]{}; - private String[] oneHandedAnimations = new String[]{}; - private String[] twoHandedAnimations = new String[]{}; - private String[] polearmAnimations = new String[]{}; - private String[] unarmedAnimations = new String[]{}; - private String[] pistolAnimations = new String[]{}; - private String[] carbineAnimations = new String[]{}; - private String[] lightRifleAnimations = new String[]{}; - private String[] rifleAnimations = new String[]{}; - private String[] heavyWpnAnimations = new String[]{}; - private String[] oneHandedLSAnimations = new String[]{}; - private String[] twoHandedLSAnimations = new String[]{}; - private String[] polearmLSAnimations = new String[]{}; - private String[] thrownAnimations = new String[]{}; - public BaseSWGCommand(String commandName) { + commandName.toLowerCase(); setCommandName(commandName); setCommandCRC(CRC.StringtoCRC(commandName)); @@ -375,169 +358,4 @@ public class BaseSWGCommand implements Cloneable { this.warmupTime = warmupTime; } - public String[] getDefaultAnimations() { - return defaultAnimations; - } - - public void setDefaultAnimations(String[] defaultAnimations) { - this.defaultAnimations = defaultAnimations; - } - - public String[] getOneHandedAnimations() { - return oneHandedAnimations; - } - - public void setOneHandedAnimations(String[] oneHandedAnimations) { - this.oneHandedAnimations = oneHandedAnimations; - } - - public String[] getTwoHandedAnimations() { - return twoHandedAnimations; - } - - public void setTwoHandedAnimations(String[] twoHandedAnimations) { - this.twoHandedAnimations = twoHandedAnimations; - } - - public String[] getPolearmAnimations() { - return polearmAnimations; - } - - public void setPolearmAnimations(String[] polearmAnimations) { - this.polearmAnimations = polearmAnimations; - } - - public String[] getUnarmedAnimations() { - return unarmedAnimations; - } - - public void setUnarmedAnimations(String[] unarmedAnimations) { - this.unarmedAnimations = unarmedAnimations; - } - - public String[] getPistolAnimations() { - return pistolAnimations; - } - - public void setPistolAnimations(String[] pistolAnimations) { - this.pistolAnimations = pistolAnimations; - } - - public String[] getCarbineAnimations() { - return carbineAnimations; - } - - public void setCarbineAnimations(String[] carbineAnimations) { - this.carbineAnimations = carbineAnimations; - } - - public String[] getLightRifleAnimations() { - return lightRifleAnimations; - } - - public void setLightRifleAnimations(String[] lightRifleAnimations) { - this.lightRifleAnimations = lightRifleAnimations; - } - - public String[] getRifleAnimations() { - return rifleAnimations; - } - - public void setRifleAnimations(String[] rifleAnimations) { - this.rifleAnimations = rifleAnimations; - } - - public String[] getHeavyWpnAnimations() { - return heavyWpnAnimations; - } - - public void setHeavyWpnAnimations(String[] heavyWpnAnimations) { - this.heavyWpnAnimations = heavyWpnAnimations; - } - - public String[] getOneHandedLSAnimations() { - return oneHandedLSAnimations; - } - - public void setOneHandedLSAnimations(String[] oneHandedLSAnimations) { - this.oneHandedLSAnimations = oneHandedLSAnimations; - } - - public String[] getTwoHandedLSAnimations() { - return twoHandedLSAnimations; - } - - public void setTwoHandedLSAnimations(String[] twoHandedLSAnimations) { - this.twoHandedLSAnimations = twoHandedLSAnimations; - } - - public String[] getPolearmLSAnimations() { - return polearmLSAnimations; - } - - public void setPolearmLSAnimations(String[] polearmLSAnimations) { - this.polearmLSAnimations = polearmLSAnimations; - } - - public String[] getThrownAnimations() { - return thrownAnimations; - } - - public void setThrownAnimations(String[] thrownAnimations) { - this.thrownAnimations = thrownAnimations; - } - - public String getRandomAnimation(WeaponObject weapon) { - int weaponType = weapon.getWeaponType(); - String[] animations; - - switch (weaponType) { - case 0: - animations = rifleAnimations; - break; - case 1: - animations = carbineAnimations; - break; - case 2: - animations = pistolAnimations; - break; - case 3: - animations = heavyWpnAnimations; - break; - case 4: - animations = oneHandedAnimations; - break; - case 5: - animations = twoHandedAnimations; - break; - case 6: - animations = defaultAnimations; - break; - case 7: - animations = polearmAnimations; - break; - case 8: - animations = thrownAnimations; - break; - case 9: - animations = oneHandedLSAnimations; - break; - case 10: - animations = twoHandedLSAnimations; - break; - case 11: - animations = polearmLSAnimations; - break; - default: - animations = defaultAnimations; - break; - } - - if (animations.length == 0) { - animations = defaultAnimations; - } - - return animations[new Random().nextInt(animations.length)]; - } - } diff --git a/src/services/command/CombatCommand.java b/src/services/command/CombatCommand.java index 77ecde00..dd761b02 100644 --- a/src/services/command/CombatCommand.java +++ b/src/services/command/CombatCommand.java @@ -21,6 +21,9 @@ ******************************************************************************/ package services.command; +import java.util.Random; + +import resources.objects.weapon.WeaponObject; import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.DatatableVisitor; @@ -60,6 +63,21 @@ public class CombatCommand extends BaseSWGCommand { private float criticalChance; private int attack_rolls; + private String[] defaultAnimations = new String[]{}; + private String[] oneHandedAnimations = new String[]{}; + private String[] twoHandedAnimations = new String[]{}; + private String[] polearmAnimations = new String[]{}; + private String[] unarmedAnimations = new String[]{}; + private String[] pistolAnimations = new String[]{}; + private String[] carbineAnimations = new String[]{}; + private String[] lightRifleAnimations = new String[]{}; + private String[] rifleAnimations = new String[]{}; + private String[] heavyWpnAnimations = new String[]{}; + private String[] oneHandedLSAnimations = new String[]{}; + private String[] twoHandedLSAnimations = new String[]{}; + private String[] polearmLSAnimations = new String[]{}; + private String[] thrownAnimations = new String[]{}; + public CombatCommand(String commandName) { super(commandName); try { @@ -490,6 +508,169 @@ public class CombatCommand extends BaseSWGCommand { this.attack_rolls = attack_rolls; } + public String[] getDefaultAnimations() { + return defaultAnimations; + } + + public void setDefaultAnimations(String[] defaultAnimations) { + this.defaultAnimations = defaultAnimations; + } + + public String[] getOneHandedAnimations() { + return oneHandedAnimations; + } + + public void setOneHandedAnimations(String[] oneHandedAnimations) { + this.oneHandedAnimations = oneHandedAnimations; + } + + public String[] getTwoHandedAnimations() { + return twoHandedAnimations; + } + + public void setTwoHandedAnimations(String[] twoHandedAnimations) { + this.twoHandedAnimations = twoHandedAnimations; + } + + public String[] getPolearmAnimations() { + return polearmAnimations; + } + + public void setPolearmAnimations(String[] polearmAnimations) { + this.polearmAnimations = polearmAnimations; + } + + public String[] getUnarmedAnimations() { + return unarmedAnimations; + } + + public void setUnarmedAnimations(String[] unarmedAnimations) { + this.unarmedAnimations = unarmedAnimations; + } + + public String[] getPistolAnimations() { + return pistolAnimations; + } + + public void setPistolAnimations(String[] pistolAnimations) { + this.pistolAnimations = pistolAnimations; + } + + public String[] getCarbineAnimations() { + return carbineAnimations; + } + + public void setCarbineAnimations(String[] carbineAnimations) { + this.carbineAnimations = carbineAnimations; + } + + public String[] getLightRifleAnimations() { + return lightRifleAnimations; + } + + public void setLightRifleAnimations(String[] lightRifleAnimations) { + this.lightRifleAnimations = lightRifleAnimations; + } + + public String[] getRifleAnimations() { + return rifleAnimations; + } + + public void setRifleAnimations(String[] rifleAnimations) { + this.rifleAnimations = rifleAnimations; + } + + public String[] getHeavyWpnAnimations() { + return heavyWpnAnimations; + } + + public void setHeavyWpnAnimations(String[] heavyWpnAnimations) { + this.heavyWpnAnimations = heavyWpnAnimations; + } + + public String[] getOneHandedLSAnimations() { + return oneHandedLSAnimations; + } + + public void setOneHandedLSAnimations(String[] oneHandedLSAnimations) { + this.oneHandedLSAnimations = oneHandedLSAnimations; + } + + public String[] getTwoHandedLSAnimations() { + return twoHandedLSAnimations; + } + + public void setTwoHandedLSAnimations(String[] twoHandedLSAnimations) { + this.twoHandedLSAnimations = twoHandedLSAnimations; + } + + public String[] getPolearmLSAnimations() { + return polearmLSAnimations; + } + + public void setPolearmLSAnimations(String[] polearmLSAnimations) { + this.polearmLSAnimations = polearmLSAnimations; + } + + public String[] getThrownAnimations() { + return thrownAnimations; + } + + public void setThrownAnimations(String[] thrownAnimations) { + this.thrownAnimations = thrownAnimations; + } + + public String getRandomAnimation(WeaponObject weapon) { + int weaponType = weapon.getWeaponType(); + String[] animations; + + switch (weaponType) { + case 0: + animations = rifleAnimations; + break; + case 1: + animations = carbineAnimations; + break; + case 2: + animations = pistolAnimations; + break; + case 3: + animations = heavyWpnAnimations; + break; + case 4: + animations = oneHandedAnimations; + break; + case 5: + animations = twoHandedAnimations; + break; + case 6: + animations = defaultAnimations; + break; + case 7: + animations = polearmAnimations; + break; + case 8: + animations = thrownAnimations; + break; + case 9: + animations = oneHandedLSAnimations; + break; + case 10: + animations = twoHandedLSAnimations; + break; + case 11: + animations = polearmLSAnimations; + break; + default: + animations = defaultAnimations; + break; + } + + if (animations.length == 0) { + animations = defaultAnimations; + } + + return animations[new Random().nextInt(animations.length)]; + } - } diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index b7fb6c04..809570bb 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -47,7 +47,6 @@ import protocol.swg.objectControllerObjects.CommandEnqueue; import protocol.swg.objectControllerObjects.CommandEnqueueRemove; import protocol.swg.objectControllerObjects.StartTask; import resources.objects.creature.CreatureObject; -import resources.objects.harvester.HarvesterObject; import resources.objects.tangible.TangibleObject; import resources.objects.weapon.WeaponObject; @@ -75,7 +74,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && !command.getCharacterAbility().equals("admin") && actor.getClient() != null) { + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && actor.getClient() != null) { return false; } @@ -83,7 +82,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getGodLevel() > 0 && (actor.getClient() == null || !actor.getClient().isGM())) { + if (actor.getClient() != null && command.getGodLevel() > actor.getPlayerObject().getGodLevel()) { return false; } @@ -148,15 +147,15 @@ public class CommandService implements INetworkDispatch { break; case 2: // Anyone (objectId/targetName) - if (actor.getClient() == null) { - break; - } - if (target == null) { if (commandArgs != null && !commandArgs.equals("")) { String name = commandArgs.split(" ")[0]; target = core.objectService.getObjectByFirstName(name); + + if (target == actor) { + target = null; + } } break; @@ -240,14 +239,20 @@ public class CommandService implements INetworkDispatch { TangibleObject object = (TangibleObject) target; - if(object instanceof CreatureObject && actor.getFactionStatus() < ((CreatureObject) object).getFactionStatus()) + if (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction())) { return false; + } - if (object.isAttackableBy(actor) || (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction()))) { + if (actor.getFactionStatus() < object.getFactionStatus()) { + return false; + } + + if (object.isAttackableBy(actor)) { return false; } // Without this we could be buffing ally NPCs and such + // Think this is checked later on if (actor.getSlottedObject("ghost") != null && object.getSlottedObject("ghost") == null) { return false; } @@ -270,7 +275,7 @@ public class CommandService implements INetworkDispatch { default: break; } - + if (command.shouldCallOnTarget()) { if (target == null || !(target instanceof CreatureObject)) { return false; @@ -279,7 +284,7 @@ public class CommandService implements INetworkDispatch { actor = (CreatureObject) target; } - long warmupTime = (long) (command.getWarmupTime() * 1000F); + long warmupTime = (long) (command.getWarmupTime() * 1000f); if(warmupTime > 0) { try { @@ -320,19 +325,7 @@ public class CommandService implements INetworkDispatch { String name = ((String) visitor.getObject(i, 0)).toLowerCase(); if (CRC.StringtoCRC(name) == commandCRC) { - int sub = 0; - - boolean hasCharacterAbility = (((String) visitor.getObject(i, 7-sub)).length() > 0); - - if (tableArray[n].startsWith("client_") || tableArray[n].startsWith("command_table_")) { - sub += 7; - } - - if (tableArray[n].equals("client_command_table_space")) { - sub += 5; - } - - if (hasCharacterAbility || isCombatCommand(name)) { + if (isCombatCommand(name)) { CombatCommand command = new CombatCommand(name.toLowerCase()); commandLookup.add(command); return command; @@ -376,19 +369,7 @@ public class CommandService implements INetworkDispatch { String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); if (commandName.equalsIgnoreCase(name)) { - int sub = 0; - - boolean hasCharacterAbility = (((String) visitor.getObject(i, 7-sub)).length() > 0); - - if (tableArray[n].startsWith("client_") || tableArray[n].startsWith("command_table_")) { - sub += 7; - } - - if (tableArray[n].equals("client_command_table_space")) { - sub += 5; - } - - if (/*hasCharacterAbility ||*/ isCombatCommand(commandName)) { + if (isCombatCommand(commandName)) { CombatCommand command = new CombatCommand(commandName); commandLookup.add(command); return command; @@ -425,9 +406,10 @@ public class CommandService implements INetworkDispatch { } public void processCommand(CreatureObject actor, SWGObject target, BaseSWGCommand command, int actionCounter, String commandArgs) { - if(command.getCooldown() > 0) + if (command.getCooldown() > 0f) { actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); - + } + if (command instanceof CombatCommand) { processCombatCommand(actor, target, (CombatCommand) command, actionCounter, commandArgs); } else { @@ -608,13 +590,25 @@ public class CommandService implements INetworkDispatch { } - public BaseSWGCommand registerCombatCommand(String name) { return getCommandByName(name); } - public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } - public BaseSWGCommand registerGmCommand(String name) { + public BaseSWGCommand registerCommand(String name) { + return getCommandByName(name); + } + + public CombatCommand registerCombatCommand(String name) { BaseSWGCommand command = getCommandByName(name); - if(command != null) - command.setGodLevel(5); - return command; + + if (command instanceof CombatCommand) { + return (CombatCommand) command; + } + + return null; + } + + public BaseSWGCommand registerGmCommand(String name) { + BaseSWGCommand command = getCommandByName(name); + //if(command != null) + //command.setGodLevel(5); // not sure if still needed after more recent commits + return command; } }