From dcab49cc05f7cb637f4d064e00fd9cf8739cb6cf Mon Sep 17 00:00:00 2001 From: Waverunner Date: Wed, 18 Dec 2013 17:56:48 -0500 Subject: [PATCH] Randomized spawning position for using travel points, no longer able to mediate unless you completed collection --- scripts/commands/meditate.py | 3 +++ src/services/travel/TravelService.java | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/scripts/commands/meditate.py b/scripts/commands/meditate.py index 2bc74a69..9c02f74f 100644 --- a/scripts/commands/meditate.py +++ b/scripts/commands/meditate.py @@ -6,6 +6,9 @@ def setup(): def run(core, actor, target, commandString): ##To do make it reset moodanimations when meditation is cancled. + if core.collectionService.isComplete(actor, 'inv_holocron_collection_02') is False: + return + if actor.getPosture() != 0x08: actor.sendSystemMessage('You need to sit',0) actor.setMoodAnimation('neutral') diff --git a/src/services/travel/TravelService.java b/src/services/travel/TravelService.java index 5165e79c..488ae1e7 100644 --- a/src/services/travel/TravelService.java +++ b/src/services/travel/TravelService.java @@ -25,6 +25,7 @@ import java.nio.ByteOrder; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; @@ -42,6 +43,8 @@ import engine.clients.Client; import engine.resources.container.Traverser; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import main.NGECore; @@ -319,7 +322,23 @@ public class TravelService implements INetworkDispatch { public void doTransport(SWGObject actor, TravelPoint tp) { Planet planet = core.terrainService.getPlanetByName(tp.getPlanetName()); - core.simulationService.transferToPlanet(actor, planet, tp.getSpawnLocation().getPosition(), tp.getSpawnLocation().getOrientation(), null); + + Random ran = new Random(); + + float oY = tp.getShuttle().getOrientation().y; + float dirDg = (float) ((Math.acos(oY) * 180 / Math.PI) * 2); + + ran.setSeed(32); + dirDg = dirDg - 18 + ran.nextFloat(); + float dirRadian = (float) (dirDg * Math.PI / 180); + ran.setSeed(3); + float distance = 13 + ran.nextFloat(); + + float x = (float) (tp.getSpawnLocation().getPosition().x + Math.sin(dirRadian) * distance); + float y = (float) (tp.getSpawnLocation().getPosition().y + Math.cos(dirRadian) * distance); + + Point3D spawnPoint = new Point3D(x, y, tp.getSpawnLocation().getPosition().z); + core.simulationService.transferToPlanet(actor, planet, spawnPoint, new Quaternion(0, 0, 0, 0), null); }