mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-08-27 17:57:22 -04:00
Swoop is mountable for further tests
This commit is contained in:
@@ -1,23 +1,21 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('vehicleId', core.objectService.generateObjectID())
|
||||
#object.setAttachment('vehicleId', core.objectService.generateObjectID())
|
||||
object.setAttachment('radial_filename', 'item')
|
||||
return
|
||||
|
||||
def use(core, actor, object):
|
||||
if object:
|
||||
vehicleId = object.getAttachment('vehicleId')
|
||||
vehicleId = object.getObjectID()
|
||||
#vehicleId = object.getAttachment('vehicleId')
|
||||
|
||||
if not vehicleId:
|
||||
return
|
||||
|
||||
vehicle = core.objectService.getObject(vehicleId)
|
||||
|
||||
if vehicle:
|
||||
core.objectService.destroyObject(vehicle)
|
||||
else:
|
||||
core.objectService.createObject('object/mobile/vehicles/shared_speederbike_swoop.iff', vehicleId, actor.getPlanet(), actor.getPosition(), actor.getOrientation())
|
||||
core.simulationService.add(vehicle, vehicle.getPosition().x, vehicle.getPosition().z, True)
|
||||
|
||||
swoop = core.objectService.createObject('object/mobile/vehicles/shared_speederbike_swoop.iff', vehicleId, actor.getPlanet(), actor.getPosition(), actor.getOrientation())
|
||||
core.simulationService.add(swoop, swoop.getPosition().x, swoop.getPosition().z, True)
|
||||
|
||||
return
|
||||
@@ -8,12 +8,12 @@ def use(core, actor, object):
|
||||
datapad = actor.getSlottedObject('datapad')
|
||||
|
||||
pcd = core.objectService.createObject('object/intangible/vehicle/shared_speederbike_swoop_pcd.iff', actor.getPlanet(), actor.getPosition().x, actor.getPosition().z,actor.getPosition().y)
|
||||
actor.sendSystemMessage('actor.getObjectID() %s' % actor.getObjectID(), 0)
|
||||
#actor.sendSystemMessage('actor.getObjectID() %s' % actor.getObjectID(), 0)
|
||||
if datapad and pcd:
|
||||
datapad.add(pcd)
|
||||
core.objectService.destroyObject(object)
|
||||
vehicle = core.objectService.createObject('object/mobile/vehicle/shared_speederbike_swoop.iff', actor.getPlanet(), actor.getPosition().x, actor.getPosition().z,actor.getPosition().y)
|
||||
vehicle.setOwner(actor)
|
||||
vehicle.setOwnerId(actor.getObjectID())
|
||||
core.simulationService.add(vehicle, vehicle.getPosition().x, vehicle.getPosition().z, True)
|
||||
|
||||
return
|
||||
@@ -1,6 +1,5 @@
|
||||
from resources.common import RadialOptions
|
||||
from resources.common import RadialOptions
|
||||
from services.ai import Vehicles
|
||||
|
||||
import sys
|
||||
|
||||
def createRadial(core, owner, target, radials):
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -332,6 +332,10 @@ public class SimulationService implements INetworkDispatch {
|
||||
}
|
||||
|
||||
CreatureObject object = (CreatureObject) client.getParent();
|
||||
|
||||
if (object.mounted)
|
||||
object=object.getMountedVehicle();
|
||||
|
||||
Point3D newPos;
|
||||
Point3D oldPos;
|
||||
synchronized(object.getMutex()) {
|
||||
|
||||
@@ -428,24 +428,32 @@ public class ObjectService implements INetworkDispatch {
|
||||
if (Template.startsWith("object/creature/") || Template.startsWith("object/mobile/")) {
|
||||
if (Template.startsWith("object/mobile/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.ATTACKABLE);
|
||||
} else if (Template.startsWith("object/mobile/beast_master/")) {
|
||||
}
|
||||
if (Template.startsWith("object/mobile/beast_master/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.NONE);
|
||||
} else if (Template.startsWith("object/mobile/vendor/")) {
|
||||
}
|
||||
if (Template.startsWith("object/mobile/vendor/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.INVULNERABLE | Options.USABLE);
|
||||
} else if (Template.startsWith("object/mobile/vehicle/")) {
|
||||
}
|
||||
if (Template.startsWith("object/mobile/vehicle/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.ATTACKABLE | Options.MOUNT);
|
||||
System.err.println("Options.MOUNT");
|
||||
} else if (Template.startsWith("object/mobile/hologram/")) {
|
||||
}
|
||||
if (Template.startsWith("object/mobile/hologram/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.INVULNERABLE);
|
||||
} else if (Template.startsWith("object/creature/npc/theme_park/")) {
|
||||
}
|
||||
if (Template.startsWith("object/creature/npc/theme_park/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.INVULNERABLE);
|
||||
} else if (Template.startsWith("object/creature/npc/general/")) {
|
||||
}
|
||||
if (Template.startsWith("object/creature/npc/general/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.INVULNERABLE | Options.CONVERSABLE);
|
||||
} else if (Template.startsWith("object/creature/droid/crafted/")) {
|
||||
}
|
||||
if (Template.startsWith("object/creature/droid/crafted/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.NONE);
|
||||
} else if (Template.startsWith("object/creature/droid/")) {
|
||||
}
|
||||
if (Template.startsWith("object/creature/droid/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.ATTACKABLE | Options.INVULNERABLE);
|
||||
} else if (Template.startsWith("object/creature/player/")) {
|
||||
}
|
||||
if (Template.startsWith("object/creature/player/")) {
|
||||
((CreatureObject) object).setOptionsBitmask(Options.ATTACKABLE);
|
||||
}
|
||||
} else if (object instanceof TangibleObject) {
|
||||
|
||||
Reference in New Issue
Block a user