mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-02 17:12:58 -04:00
Added expertise, added AoE/Cone combat, added some commando expertise boxes as an example for expertise scripts
This commit is contained in:
@@ -793,9 +793,80 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
|
||||
return buffer;
|
||||
|
||||
}
|
||||
|
||||
public IoBuffer buildAddSkillDelta(String name) {
|
||||
|
||||
CreatureObject creature = (CreatureObject) object;
|
||||
|
||||
IoBuffer buffer = bufferPool.allocate(11 + name.length(), false).order(ByteOrder.LITTLE_ENDIAN);
|
||||
buffer.putInt(1);
|
||||
buffer.putInt(creature.getSkillsUpdateCounter());
|
||||
buffer.put((byte) 1);
|
||||
buffer.put(getAsciiString(name));
|
||||
|
||||
int size = buffer.position();
|
||||
buffer.flip();
|
||||
buffer = createDelta("CREO", (byte) 1, (short) 1, (short) 3, buffer, size + 4);
|
||||
|
||||
return buffer;
|
||||
|
||||
}
|
||||
|
||||
public IoBuffer buildRemoveSkillDelta(String name) {
|
||||
|
||||
CreatureObject creature = (CreatureObject) object;
|
||||
|
||||
IoBuffer buffer = bufferPool.allocate(11 + name.length(), false).order(ByteOrder.LITTLE_ENDIAN);
|
||||
buffer.putInt(1);
|
||||
buffer.putInt(creature.getSkillsUpdateCounter());
|
||||
buffer.put((byte) 0);
|
||||
buffer.put(getAsciiString(name));
|
||||
|
||||
int size = buffer.position();
|
||||
buffer.flip();
|
||||
buffer = createDelta("CREO", (byte) 1, (short) 1, (short) 3, buffer, size + 4);
|
||||
|
||||
return buffer;
|
||||
|
||||
}
|
||||
|
||||
public IoBuffer buildAddAbilityDelta(String name) {
|
||||
|
||||
CreatureObject creature = (CreatureObject) object;
|
||||
|
||||
IoBuffer buffer = bufferPool.allocate(15 + name.length(), false).order(ByteOrder.LITTLE_ENDIAN);
|
||||
buffer.putInt(1);
|
||||
buffer.putInt(creature.getAbilitiesUpdateCounter());
|
||||
buffer.put((byte) 0);
|
||||
buffer.put(getAsciiString(name));
|
||||
buffer.putInt(1);
|
||||
|
||||
int size = buffer.position();
|
||||
buffer.flip();
|
||||
buffer = createDelta("CREO", (byte) 4, (short) 1, (short) 0x0E, buffer, size + 4);
|
||||
|
||||
return buffer;
|
||||
|
||||
}
|
||||
|
||||
public IoBuffer buildRemoveAbilityDelta(String name) {
|
||||
|
||||
CreatureObject creature = (CreatureObject) object;
|
||||
|
||||
IoBuffer buffer = bufferPool.allocate(15 + name.length(), false).order(ByteOrder.LITTLE_ENDIAN);
|
||||
buffer.putInt(1);
|
||||
buffer.putInt(creature.getAbilitiesUpdateCounter());
|
||||
buffer.put((byte) 1);
|
||||
buffer.put(getAsciiString(name));
|
||||
buffer.putInt(1);
|
||||
|
||||
int size = buffer.position();
|
||||
buffer.flip();
|
||||
buffer = createDelta("CREO", (byte) 4, (short) 1, (short) 0x0E, buffer, size + 4);
|
||||
|
||||
return buffer;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) {
|
||||
|
||||
@@ -205,6 +205,34 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
this.skillsUpdateCounter = skillsUpdateCounter;
|
||||
}
|
||||
}
|
||||
|
||||
public void addSkill(String skill) {
|
||||
|
||||
if(skills.contains(skill))
|
||||
return;
|
||||
|
||||
skills.add(skill);
|
||||
|
||||
if(getClient() != null) {
|
||||
setSkillsUpdateCounter((short) (getSkillsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildAddSkillDelta(skill));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void removeSkill(String skill) {
|
||||
|
||||
if(!skills.contains(skill))
|
||||
return;
|
||||
|
||||
skills.remove(skill);
|
||||
|
||||
if(getClient() != null) {
|
||||
setSkillsUpdateCounter((short) (getSkillsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildRemoveSkillDelta(skill));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOptionsBitmask(int optionBitmask) {
|
||||
@@ -391,8 +419,10 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
if(mod.getBase() <= 0) {
|
||||
removeSkillMod(mod);
|
||||
} else {
|
||||
setSkillModsUpdateCounter((short) (getSkillModsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildAddSkillModDelta(name, mod.getBase()));
|
||||
if(getClient() != null) {
|
||||
setSkillModsUpdateCounter((short) (getSkillModsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildAddSkillModDelta(name, mod.getBase()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -554,9 +584,35 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void addAbility(String abilityName) {
|
||||
|
||||
if(abilities.contains(abilityName))
|
||||
return;
|
||||
|
||||
abilities.add(abilityName);
|
||||
|
||||
if(getClient() != null) {
|
||||
setAbilitiesUpdateCounter((short) (getAbilitiesUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildAddAbilityDelta(abilityName));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void removeAbility(String abilityName) {
|
||||
|
||||
if(!abilities.contains(abilityName))
|
||||
return;
|
||||
|
||||
abilities.remove(abilityName);
|
||||
|
||||
if(getClient() != null) {
|
||||
setAbilitiesUpdateCounter((short) (getAbilitiesUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildRemoveAbilityDelta(abilityName));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public SWGList<MissionCriticalObject> getMissionCriticalObjects() {
|
||||
return missionCriticalObjects;
|
||||
|
||||
Reference in New Issue
Block a user