Swoop is mountable for further tests

This commit is contained in:
CharonInferar
2014-04-13 03:50:45 +02:00
parent 9f72afee01
commit fa00c85290
8 changed files with 104 additions and 24 deletions
@@ -1149,7 +1149,8 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
buffer.putLong(ownerId);
int size = buffer.position();
buffer.flip();
buffer = createDelta("CREO", (byte) 3, (short) 1, (short) 0x0D, buffer, size + 4);
//buffer = createDelta("CREO", (byte) 3, (short) 1, (short) 0x0D, buffer, size + 4); 0F,12 doesnt crash
buffer = createDelta("CREO", (byte) 3, (short) 1, (short) 0x0F, buffer, size + 4); // checked from 0xA up to 0x1F
return buffer;
}
@@ -34,6 +34,7 @@ import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.ObjControllerMessage;
import protocol.swg.PlayMusicMessage;
import protocol.swg.UpdateContainmentMessage;
import protocol.swg.UpdatePostureMessage;
import protocol.swg.UpdatePVPStatusMessage;
import protocol.swg.chat.ChatSystemMessage;
@@ -50,6 +51,7 @@ import main.NGECore;
import engine.clients.Client;
import resources.common.Cooldown;
import resources.common.OutOfBand;
import resources.datatables.Options;
import resources.objects.Buff;
import resources.objects.DamageOverTime;
import resources.objects.SWGList;
@@ -66,7 +68,7 @@ import resources.objects.player.PlayerObject;
import resources.objects.tangible.TangibleObject;
import services.command.BaseSWGCommand;
@Entity(version=6)
@Entity(version=7)
public class CreatureObject extends TangibleObject implements IPersistent {
@NotPersistent
@@ -186,6 +188,9 @@ public class CreatureObject extends TangibleObject implements IPersistent {
@NotPersistent
private ConcurrentHashMap<String, Long> cooldowns = new ConcurrentHashMap<String, Long>();
public boolean mounted = false;
public CreatureObject mountedVehicle;
public CreatureObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) {
super(objectID, planet, Template, position, orientation);
messageBuilder = new CreatureMessageBuilder(this);
@@ -1781,6 +1786,61 @@ public class CreatureObject extends TangibleObject implements IPersistent {
return (PlayerObject) this.getSlottedObject("ghost");
}
public boolean isMounted() {
return mounted;
}
public void setMounted(boolean mounted) {
this.mounted = mounted;
}
public CreatureObject getMountedVehicle() {
return mountedVehicle;
}
public void setMountedVehicle(CreatureObject mountedVehicle) {
this.mountedVehicle = mountedVehicle;
}
public void mount(CreatureObject owner) {
synchronized(objectMutex) {
if ((this.getOptionsBitmask() & Options.MOUNT) == Options.MOUNT){
UpdateContainmentMessage updateContainmentMessage= new UpdateContainmentMessage(owner.getObjectID(), this.getObjectID(), -1);
owner.getClient().getSession().write(updateContainmentMessage.serialize());
owner.setParent(this);
}
}
}
public void unmount(CreatureObject owner) {
synchronized(objectMutex) {
if ((this.getOptionsBitmask() & Options.MOUNT) == Options.MOUNT){
UpdateContainmentMessage updateContainmentMessage= new UpdateContainmentMessage(owner.getObjectID(), this.getObjectID(), -1);
owner.getClient().getSession().write(updateContainmentMessage.serialize());
}
}
}
public void initMount(CreatureObject owner) {
synchronized(objectMutex) {
this.ownerId = owner.getObjectID();
setStateBitmask(0x10000000);
owner.setParent(this);
owner.getClient().getSession().write(messageBuilder.buildOwnerIdDelta(ownerId));
owner.setMountedVehicle(this);
this.setOwnerId(owner.getObjectID());
//this.add(owner); // NPE at engine.resources.objects.SWGObject.getCorrectArrangementId(kd:844)
this.mount(owner);
// setStateBitmask(28);
// owner.setStateBitmask(27);
owner.setStateBitmask(0x8000000);
this.setPosture((byte)10);
//this.sendBaselines(owner.getClient());
}
}
//public float getCooldown(String cooldownGroup) {
//return ((float) getCooldown(cooldownGroup) / (float) 1000);
//}
@@ -82,6 +82,8 @@ public class TangibleObject extends SWGObject {
private boolean looted = false;
private boolean lootLock = false;
private String serialNumber;
@NotPersistent
private TangibleObject killer = null;
@@ -470,6 +472,14 @@ public class TangibleObject extends SWGObject {
this.lootLock = lootLock;
}
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
@Override
public void sendBaselines(Client destination) {