Merge remote-tracking branch 'origin/master' into LootSystem

This commit is contained in:
CharonInferar
2014-04-08 00:00:57 +02:00
5 changed files with 135 additions and 79 deletions
+2
View File
@@ -7,6 +7,8 @@ def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_dodge', 35)
core.skillModService.addSkillMod(actor, 'display_only_evasion', 5000)
core.skillModService.addSkillMod(actor, 'combat_evasion_value', 50)
core.combatService.endCombat(actor)
return
def remove(core, actor, buff):
+1 -2
View File
@@ -775,8 +775,7 @@ public class SimulationService implements INetworkDispatch {
core.removeClient(session);
object.setAttachment("disconnectTask", disconnectTask);
for(TangibleObject obj : new Vector<TangibleObject>(object.getDefendersList()))
object.removeDefender(obj); // temp fix for being stuck in combat
core.combatService.endCombat(object); // temp fix for ending combat on disconnect
}
+7
View File
@@ -1381,6 +1381,13 @@ public class CombatService implements INetworkDispatch {
}
public void endCombat(CreatureObject defender) {
Vector<TangibleObject> defenderList = new Vector<TangibleObject>(defender.getDefendersList());
if (defenderList.size() > 0) {
defenderList.stream().forEach(attacker -> defender.removeDefender(attacker));
}
}
public enum HitType{;
public static final byte MISS = 0;
+91 -71
View File
@@ -35,7 +35,7 @@ public class BaseSWGCommand implements Cloneable {
private String clientEffectTarget;
private int commandCRC;
private boolean isGmCommand = false;
private String characterAbility = null;
private String characterAbility;
private int target;
private int targetType;
private boolean callOnTarget = false;
@@ -60,9 +60,11 @@ public class BaseSWGCommand implements Cloneable {
setCommandCRC(CRC.StringtoCRC(commandName));
try {
boolean foundCommand = false;
String[] tableArray = new String[] {
"client_command_table", "client_command_table_ground", "client_command_table_space",
"command_table", "command_table_ground", "command_table_space", "command_table_atmospheric_flight" };
"command_table", "command_table_ground", "command_table_space" };
for (int n = 0; n < tableArray.length; n++) {
List<Long> invalidStates = new ArrayList<Long>();
@@ -73,87 +75,105 @@ public class BaseSWGCommand implements Cloneable {
for (int i = 0; i < visitor2.getRowCount(); i++) {
if (visitor2.getObject(i, 0) != null) {
if (((String) visitor2.getObject(i, 0)).equalsIgnoreCase(commandName)) {
int sub = 0; // Subtract due to command table structures being different
characterAbility = (String) visitor2.getObject(i, 7);
target = (Integer) visitor2.getObject(i, 72);
targetType = (Integer) visitor2.getObject(i, 73);
callOnTarget = (Boolean) visitor2.getObject(i, 76);
commandGroup = (Integer) visitor2.getObject(i, 77);
disabled = (Boolean) visitor2.getObject(i, 78);
maxRangeToTarget = (Float) visitor2.getObject(i, 79);
godLevel = (Integer) visitor2.getObject(i, 80);
displayGroup = (Integer) visitor2.getObject(i, 81);
combatCommand = (Boolean) visitor2.getObject(i, 82);
validWeapon = (Integer) visitor2.getObject(i, 83);
invalidWeapon = (Integer) visitor2.getObject(i, 84);
cooldownGroup = (String) visitor2.getObject(i, 85);
warmupTime = (Float) visitor2.getObject(i, 86);
executeTime = (Float) visitor2.getObject(i, 87);
cooldown = (Float) visitor2.getObject(i, 88);
if (!((Boolean) visitor2.getObject(i, 8))) invalidPostures.add((byte) 0);
if (!((Boolean) visitor2.getObject(i, 9))) invalidPostures.add((byte) 3);
if (!((Boolean) visitor2.getObject(i, 16))) invalidPostures.add((byte) 2);
if (!((Boolean) visitor2.getObject(i, 19))) invalidPostures.add((byte) 5);
if (!((Boolean) visitor2.getObject(i, 21))) invalidPostures.add((byte) 6);
if (!((Boolean) visitor2.getObject(i, 22))) invalidPostures.add((byte) 7);
if (!((Boolean) visitor2.getObject(i, 23))) invalidPostures.add((byte) 8);
if (!((Boolean) visitor2.getObject(i, 24))) invalidPostures.add((byte) 9);
if (!((Boolean) visitor2.getObject(i, 25))) invalidPostures.add((byte) 10);
if (!((Boolean) visitor2.getObject(i, 26))) invalidPostures.add((byte) 11);
if (!((Boolean) visitor2.getObject(i, 27))) invalidPostures.add((byte) 12);
if (!((Boolean) visitor2.getObject(i, 28))) invalidPostures.add((byte) 13);
if (!((Boolean) visitor2.getObject(i, 29))) invalidPostures.add((byte) 14);
if (!((Boolean) visitor2.getObject(i, 30))) invalidPostures.add((byte) 4);
if (!((Boolean) visitor2.getObject(i, 8-sub))) invalidPostures.add((byte) 0);
if (!((Boolean) visitor2.getObject(i, 9-sub))) invalidPostures.add((byte) 3);
if (!((Boolean) visitor2.getObject(i, 15-sub))) invalidPostures.add((byte) 2);
if (!((Boolean) visitor2.getObject(i, 18-sub))) invalidPostures.add((byte) 5);
if (!((Boolean) visitor2.getObject(i, 20-sub))) invalidPostures.add((byte) 6);
if (!((Boolean) visitor2.getObject(i, 21-sub))) invalidPostures.add((byte) 7);
if (!((Boolean) visitor2.getObject(i, 22-sub))) invalidPostures.add((byte) 8);
if (!((Boolean) visitor2.getObject(i, 23-sub))) invalidPostures.add((byte) 9);
if (!((Boolean) visitor2.getObject(i, 24-sub))) invalidPostures.add((byte) 10);
if (!((Boolean) visitor2.getObject(i, 25-sub))) invalidPostures.add((byte) 11);
if (!((Boolean) visitor2.getObject(i, 26-sub))) invalidPostures.add((byte) 12);
if (!((Boolean) visitor2.getObject(i, 27-sub))) invalidPostures.add((byte) 13);
if (!((Boolean) visitor2.getObject(i, 28-sub))) invalidPostures.add((byte) 14);
if (!((Boolean) visitor2.getObject(i, 29-sub))) invalidPostures.add((byte) 4);
if (!((Boolean) visitor2.getObject(i, 32))) invalidStates.add(1L);
if (!((Boolean) visitor2.getObject(i, 33))) invalidStates.add(2L);
if (!((Boolean) visitor2.getObject(i, 34))) invalidStates.add(4L);
if (!((Boolean) visitor2.getObject(i, 35))) invalidStates.add(8L);
if (!((Boolean) visitor2.getObject(i, 36))) invalidStates.add(16L);
if (!((Boolean) visitor2.getObject(i, 37))) invalidStates.add(32L);
if (!((Boolean) visitor2.getObject(i, 38))) invalidStates.add(64L);
if (!((Boolean) visitor2.getObject(i, 39))) invalidStates.add(128L);
if (!((Boolean) visitor2.getObject(i, 40))) invalidStates.add(256L);
if (!((Boolean) visitor2.getObject(i, 41))) invalidStates.add(512L);
if (!((Boolean) visitor2.getObject(i, 42))) invalidStates.add(1024L);
if (!((Boolean) visitor2.getObject(i, 43))) invalidStates.add(2048L);
if (!((Boolean) visitor2.getObject(i, 44))) invalidStates.add(4096L);
if (!((Boolean) visitor2.getObject(i, 45))) invalidStates.add(8192L);
if (!((Boolean) visitor2.getObject(i, 46))) invalidStates.add(16384L);
if (!((Boolean) visitor2.getObject(i, 47))) invalidStates.add(32768L);
if (!((Boolean) visitor2.getObject(i, 48))) invalidStates.add(65536L);
if (!((Boolean) visitor2.getObject(i, 49))) invalidStates.add(131072L);
if (!((Boolean) visitor2.getObject(i, 50))) invalidStates.add(262144L);
if (!((Boolean) visitor2.getObject(i, 51))) invalidStates.add(524288L);
if (!((Boolean) visitor2.getObject(i, 52))) invalidStates.add(1048576L);
if (!((Boolean) visitor2.getObject(i, 53))) invalidStates.add(2097152L);
if (!((Boolean) visitor2.getObject(i, 54))) invalidStates.add(4194304L);
if (!((Boolean) visitor2.getObject(i, 55))) invalidStates.add(8388608L);
if (!((Boolean) visitor2.getObject(i, 56))) invalidStates.add(16777216L);
if (!((Boolean) visitor2.getObject(i, 57))) invalidStates.add(33554432L);
if (!((Boolean) visitor2.getObject(i, 58))) invalidStates.add(67108864L);
if (!((Boolean) visitor2.getObject(i, 59))) invalidStates.add(134217728L);
if (!((Boolean) visitor2.getObject(i, 60))) invalidStates.add(268435456L);
if (!((Boolean) visitor2.getObject(i, 61))) invalidStates.add(536870912L);
if (!((Boolean) visitor2.getObject(i, 62))) invalidStates.add(1073741824L);
if (!((Boolean) visitor2.getObject(i, 63))) invalidStates.add(2147483648L);
if (!((Boolean) visitor2.getObject(i, 64))) invalidStates.add(4294967296L);
if (!((Boolean) visitor2.getObject(i, 65))) invalidStates.add(8589934592L);
if (!((Boolean) visitor2.getObject(i, 66))) invalidStates.add(17179869184L);
if (!((Boolean) visitor2.getObject(i, 67))) invalidStates.add(34359738368L);
if (!((Boolean) visitor2.getObject(i, 68))) invalidStates.add(68719476736L);
if (!((Boolean) visitor2.getObject(i, 69))) invalidStates.add(137438953472L);
if (!((Boolean) visitor2.getObject(i, 70))) invalidStates.add(274877906944L);
if (tableArray[n].startsWith("client_") || tableArray[n].startsWith("command_table_")) {
sub += 1;
}
if (!((Boolean) visitor2.getObject(i, 32-sub))) invalidStates.add(1L);
if (!((Boolean) visitor2.getObject(i, 33-sub))) invalidStates.add(2L);
if (!((Boolean) visitor2.getObject(i, 34-sub))) invalidStates.add(4L);
if (!((Boolean) visitor2.getObject(i, 35-sub))) invalidStates.add(8L);
if (!((Boolean) visitor2.getObject(i, 36-sub))) invalidStates.add(16L);
if (!((Boolean) visitor2.getObject(i, 37-sub))) invalidStates.add(32L);
if (!((Boolean) visitor2.getObject(i, 38-sub))) invalidStates.add(64L);
if (!((Boolean) visitor2.getObject(i, 39-sub))) invalidStates.add(128L);
if (!((Boolean) visitor2.getObject(i, 40-sub))) invalidStates.add(256L);
if (!((Boolean) visitor2.getObject(i, 41-sub))) invalidStates.add(512L);
if (!((Boolean) visitor2.getObject(i, 42-sub))) invalidStates.add(1024L);
if (!((Boolean) visitor2.getObject(i, 43-sub))) invalidStates.add(2048L);
if (!((Boolean) visitor2.getObject(i, 44-sub))) invalidStates.add(4096L);
if (!((Boolean) visitor2.getObject(i, 45-sub))) invalidStates.add(8192L);
if (!((Boolean) visitor2.getObject(i, 46-sub))) invalidStates.add(16384L);
if (!((Boolean) visitor2.getObject(i, 47-sub))) invalidStates.add(32768L);
if (!((Boolean) visitor2.getObject(i, 48-sub))) invalidStates.add(65536L);
if (!((Boolean) visitor2.getObject(i, 49-sub))) invalidStates.add(131072L);
if (!((Boolean) visitor2.getObject(i, 50-sub))) invalidStates.add(262144L);
if (!((Boolean) visitor2.getObject(i, 51-sub))) invalidStates.add(524288L);
if (!((Boolean) visitor2.getObject(i, 52-sub))) invalidStates.add(1048576L);
if (!((Boolean) visitor2.getObject(i, 53-sub))) invalidStates.add(2097152L);
if (!((Boolean) visitor2.getObject(i, 54-sub))) invalidStates.add(4194304L);
if (!((Boolean) visitor2.getObject(i, 55-sub))) invalidStates.add(8388608L);
if (!((Boolean) visitor2.getObject(i, 56-sub))) invalidStates.add(16777216L);
if (!((Boolean) visitor2.getObject(i, 57-sub))) invalidStates.add(33554432L);
if (!((Boolean) visitor2.getObject(i, 58-sub))) invalidStates.add(67108864L);
if (!((Boolean) visitor2.getObject(i, 59-sub))) invalidStates.add(134217728L);
if (!tableArray[n].equals("client_command_table_space")) {
if (!((Boolean) visitor2.getObject(i, 60-sub))) invalidStates.add(268435456L);
if (!((Boolean) visitor2.getObject(i, 61-sub))) invalidStates.add(536870912L);
if (!((Boolean) visitor2.getObject(i, 62-sub))) invalidStates.add(1073741824L);
if (!((Boolean) visitor2.getObject(i, 63-sub))) invalidStates.add(2147483648L);
if (!((Boolean) visitor2.getObject(i, 64-sub))) invalidStates.add(4294967296L);
} else {
sub += 5;
}
if (!tableArray[n].startsWith("client_") && !tableArray[n].startsWith("command_table_")) {
if (!((Boolean) visitor2.getObject(i, 65-sub))) invalidStates.add(8589934592L);
if (!((Boolean) visitor2.getObject(i, 66-sub))) invalidStates.add(17179869184L);
if (!((Boolean) visitor2.getObject(i, 67-sub))) invalidStates.add(34359738368L);
if (!((Boolean) visitor2.getObject(i, 68-sub))) invalidStates.add(68719476736L);
if (!((Boolean) visitor2.getObject(i, 69-sub))) invalidStates.add(137438953472L);
if (!((Boolean) visitor2.getObject(i, 70-sub))) invalidStates.add(274877906944L);
} else {
sub += 6;
}
target = (Integer) visitor2.getObject(i, 72-sub);
targetType = (Integer) visitor2.getObject(i, 73-sub);
callOnTarget = (Boolean) visitor2.getObject(i, 76-sub);
commandGroup = (Integer) visitor2.getObject(i, 77-sub);
disabled = (Boolean) visitor2.getObject(i, 78-sub);
maxRangeToTarget = (Float) visitor2.getObject(i, 79-sub);
godLevel = (Integer) visitor2.getObject(i, 80-sub);
displayGroup = (Integer) visitor2.getObject(i, 81-sub);
combatCommand = (Boolean) visitor2.getObject(i, 82-sub);
validWeapon = (Integer) visitor2.getObject(i, 83-sub);
invalidWeapon = (Integer) visitor2.getObject(i, 84-sub);
cooldownGroup = (String) visitor2.getObject(i, 85-sub);
warmupTime = (Float) visitor2.getObject(i, 86-sub);
executeTime = (Float) visitor2.getObject(i, 87-sub);
cooldown = (Float) visitor2.getObject(i, 88-sub);
this.invalidPostures = invalidPostures.toArray(new Byte[] { });
this.invalidStates = invalidStates.toArray(new Long[] { });
foundCommand = true;
break;
}
}
}
if (characterAbility != null) {
if (foundCommand) {
break;
}
}
+34 -6
View File
@@ -258,7 +258,7 @@ public class CommandService implements INetworkDispatch {
try {
String[] tableArray = new String[] {
"client_command_table", "command_table", "client_command_table_ground", "command_table_ground",
"client_command_table_space", "command_table_space", "command_table_atmospheric_flight" };
"client_command_table_space", "command_table_space" };
for (int n = 0; n < tableArray.length; n++) {
DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class);
@@ -268,8 +268,22 @@ public class CommandService implements INetworkDispatch {
String name = ((String) visitor.getObject(i, 0)).toLowerCase();
if (CRC.StringtoCRC(name) == commandCRC) {
boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0);
boolean isCombatCommand = (Boolean) visitor.getObject(i, 82);
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;
}
boolean isCombatCommand = false;
if(visitor.getObject(i, 82-sub) instanceof Boolean)
isCombatCommand = (Boolean) visitor.getObject(i, 82-sub);
if (hasCharacterAbility || isCombatCommand) {
CombatCommand command = new CombatCommand(name.toLowerCase());
@@ -305,7 +319,7 @@ public class CommandService implements INetworkDispatch {
try {
String[] tableArray = new String[] {
"client_command_table", "command_table", "client_command_table_ground", "command_table_ground",
"client_command_table_space", "command_table_space", "command_table_atmospheric_flight" };
"client_command_table_space", "command_table_space" };
for (int n = 0; n < tableArray.length; n++) {
DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class);
@@ -315,8 +329,22 @@ public class CommandService implements INetworkDispatch {
String commandName = ((String) visitor.getObject(i, 0)).toLowerCase();
if (commandName.equalsIgnoreCase(name)) {
boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0);
boolean isCombatCommand = (Boolean) visitor.getObject(i, 82);
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;
}
boolean isCombatCommand = false;
if(visitor.getObject(i, 82-sub) instanceof Boolean)
isCombatCommand = (Boolean) visitor.getObject(i, 82-sub);
if (hasCharacterAbility || isCombatCommand) {
CombatCommand command = new CombatCommand(commandName);