mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-09-11 21:45:43 -04:00
Fixed skillMods
This commit is contained in:
@@ -49,6 +49,7 @@ import engine.clients.Client;
|
||||
import resources.objects.Buff;
|
||||
import resources.objects.DamageOverTime;
|
||||
import resources.objects.SWGList;
|
||||
import resources.objects.SWGMap;
|
||||
import resources.objects.SkillMod;
|
||||
import engine.resources.objects.IPersistent;
|
||||
import engine.resources.objects.MissionCriticalObject;
|
||||
@@ -59,7 +60,7 @@ import engine.resources.scene.Quaternion;
|
||||
import resources.objects.tangible.TangibleObject;
|
||||
import resources.objects.weapon.WeaponObject;
|
||||
|
||||
@Entity(version=4)
|
||||
@Entity(version=5)
|
||||
public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
|
||||
@NotPersistent
|
||||
@@ -83,9 +84,7 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
// CREO 4
|
||||
private float accelerationMultiplierBase = 1;
|
||||
private float accelerationMultiplierMod = 1;
|
||||
private SWGList<SkillMod> skillMods;
|
||||
@NotPersistent
|
||||
private int skillModsUpdateCounter = 0;
|
||||
private SWGMap<SkillMod> skillMods;
|
||||
private float speedMultiplierBase = 1;
|
||||
private float speedMultiplierMod = 1;
|
||||
private float runSpeed = (float) 7.3;
|
||||
@@ -184,7 +183,7 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
messageBuilder = new CreatureMessageBuilder(this);
|
||||
loadTemplateData();
|
||||
skills = new SWGList<String>(messageBuilder, 1, 3);
|
||||
skillMods = new SWGList<SkillMod>(messageBuilder, 4, 3);
|
||||
skillMods = new SWGMap<SkillMod>(messageBuilder, 4, 3);
|
||||
abilities = new SWGList<String>(messageBuilder, 4, 14);
|
||||
missionCriticalObjects = new SWGList<MissionCriticalObject>(messageBuilder, 4, 13);
|
||||
equipmentList = new SWGList<SWGObject>(messageBuilder, 6, 0x17);
|
||||
@@ -559,20 +558,13 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
this.accelerationMultiplierMod = accelerationMultiplierMod;
|
||||
}
|
||||
}
|
||||
|
||||
public SWGList<SkillMod> getSkillMods() {
|
||||
|
||||
public SWGMap<SkillMod> getSkillMods() {
|
||||
return skillMods;
|
||||
}
|
||||
|
||||
public SkillMod getSkillMod(String name) {
|
||||
synchronized(skillMods.getMutex()) {
|
||||
for(SkillMod skillMod : skillMods.get()) {
|
||||
if(skillMod.getName().equals(name))
|
||||
return skillMod;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return skillMods.get(name);
|
||||
}
|
||||
|
||||
public int getSkillModBase(String name) {
|
||||
@@ -581,54 +573,40 @@ public class CreatureObject extends TangibleObject implements IPersistent {
|
||||
}
|
||||
|
||||
public void addSkillMod(String name, int base) {
|
||||
if(getSkillMod(name) == null) {
|
||||
// TODO: Send skill mods delta in sendListDelta
|
||||
SkillMod skillMod = new SkillMod();
|
||||
skillMod.setBase(base);
|
||||
skillMod.setName(name);
|
||||
skillMod.setModifier(0);
|
||||
skillMods.add(skillMod);
|
||||
SkillMod mod;
|
||||
|
||||
if (getSkillMod(name) == null) {
|
||||
mod = new SkillMod();
|
||||
mod.setBase(base);
|
||||
mod.setName(name);
|
||||
mod.setModifier(0);
|
||||
} else {
|
||||
|
||||
SkillMod mod = getSkillMod(name);
|
||||
mod = getSkillMod(name);
|
||||
mod.setBase(mod.getBase() + base);
|
||||
|
||||
if(getClient() != null) {
|
||||
setSkillModsUpdateCounter((short) (getSkillModsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildAddSkillModDelta(name, mod.getBase()));
|
||||
}
|
||||
}
|
||||
|
||||
skillMods.put(name, mod);
|
||||
}
|
||||
|
||||
public void deductSkillMod(String name, int base) {
|
||||
|
||||
if(getSkillMod(name) == null)
|
||||
if (getSkillMod(name) == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
SkillMod mod = getSkillMod(name);
|
||||
mod.setBase(mod.getBase() - base);
|
||||
|
||||
if(mod.getBase() <= 0) {
|
||||
if (mod.getBase() <= 0) {
|
||||
removeSkillMod(mod);
|
||||
} else {
|
||||
skillMods.set(skillMods.indexOf(mod), mod);
|
||||
if(getClient() != null) {
|
||||
setSkillModsUpdateCounter((short) (getSkillModsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildAddSkillModDelta(name, mod.getBase()));
|
||||
}
|
||||
skillMods.put(name, mod);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void removeSkillMod(SkillMod mod) {
|
||||
skillMods.remove(mod);
|
||||
|
||||
if(getClient() != null) {
|
||||
setSkillModsUpdateCounter((short) (getSkillModsUpdateCounter() + 1));
|
||||
getClient().getSession().write(messageBuilder.buildRemoveSkillModDelta(mod.getName(), mod.getBase()));
|
||||
}
|
||||
skillMods.remove(mod.getName());
|
||||
}
|
||||
|
||||
|
||||
public short getSkillModsUpdateCounter() {
|
||||
synchronized(objectMutex) {
|
||||
return (short) skillModsUpdateCounter;
|
||||
|
||||
Reference in New Issue
Block a user