Stopped posture updates when riding a mount, and prevented non-group from mounting each others' vehicles

This commit is contained in:
Obique
2018-08-24 12:58:56 -05:00
parent b044ba95aa
commit c16d82df16
6 changed files with 19 additions and 2 deletions
@@ -33,6 +33,7 @@ import com.projectswg.holocore.resources.support.global.commands.ICmdCallback;
import com.projectswg.holocore.resources.support.global.player.Player;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureState;
import org.jetbrains.annotations.NotNull;
public class KneelCmdCallback implements ICmdCallback {
@@ -40,6 +41,8 @@ public class KneelCmdCallback implements ICmdCallback {
@Override
public void execute(@NotNull Player player, SWGObject target, @NotNull String args) {
CreatureObject creature = player.getCreatureObject();
if (creature.isStatesBitmask(CreatureState.RIDING_MOUNT))
return;
if (creature.isPerforming()) {
new DanceIntent(player.getCreatureObject()).broadcast();
} else {
@@ -36,6 +36,7 @@ import com.projectswg.holocore.resources.support.global.player.Player;
import com.projectswg.holocore.resources.support.global.player.PlayerState;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureState;
import com.projectswg.holocore.utilities.ScheduledUtilities;
import me.joshlarson.jlcommon.control.IntentChain;
import me.joshlarson.jlcommon.log.Log;
@@ -48,6 +49,8 @@ public class LogoutCmdCallback implements ICmdCallback {
@Override
public void execute(@NotNull Player player, SWGObject target, @NotNull String args) {
CreatureObject creature = player.getCreatureObject();
if (creature.isStatesBitmask(CreatureState.RIDING_MOUNT))
return;
creature.setPosture(Posture.SITTING);
Log.i("Logout command called for %s - 30s timer started", creature.getObjectName());
updateLogout(player, creature, 30);
@@ -33,6 +33,7 @@ import com.projectswg.holocore.resources.support.global.commands.ICmdCallback;
import com.projectswg.holocore.resources.support.global.player.Player;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureState;
import org.jetbrains.annotations.NotNull;
public class ProneCmdCallback implements ICmdCallback {
@@ -40,7 +41,8 @@ public class ProneCmdCallback implements ICmdCallback {
@Override
public void execute(@NotNull Player player, SWGObject target, @NotNull String args) {
CreatureObject creature = player.getCreatureObject();
if (creature.isStatesBitmask(CreatureState.RIDING_MOUNT))
return;
if (creature.isPerforming()) {
new DanceIntent(player.getCreatureObject()).broadcast();
} else {
@@ -42,7 +42,7 @@ public class SitOnObjectCmdCallback implements ICmdCallback {
public void execute(@NotNull Player player,SWGObject target, @NotNull String args) {
CreatureObject creature = player.getCreatureObject();
if (creature.getPosture() == Posture.DEAD || creature.getPosture() == Posture.INCAPACITATED)
if (creature.getPosture() == Posture.DEAD || creature.getPosture() == Posture.INCAPACITATED || creature.isStatesBitmask(CreatureState.RIDING_MOUNT))
return;
long objectID = creature.getObjectId();
SitOnObject sot;
@@ -42,6 +42,8 @@ public class StandCmdCallback implements ICmdCallback {
public void execute(@NotNull Player player, SWGObject target, @NotNull String args) {
CreatureObject creature = player.getCreatureObject();
if (creature.isStatesBitmask(CreatureState.RIDING_MOUNT))
return;
if(creature.isPerforming()) {
// Ziggy: When you move while dancing, the client wants to execute /stand instead of /stopDance. Blame SOE.
new DanceIntent(player.getCreatureObject()).broadcast();
@@ -42,8 +42,10 @@ import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.ServerAttribute;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureState;
import com.projectswg.holocore.resources.support.objects.swg.group.GroupObject;
import com.projectswg.holocore.resources.support.objects.swg.intangible.IntangibleObject;
import com.projectswg.holocore.resources.support.objects.swg.tangible.OptionFlag;
import com.projectswg.holocore.services.support.objects.ObjectStorageService.ObjectLookup;
import me.joshlarson.jlcommon.control.IntentHandler;
import me.joshlarson.jlcommon.control.Service;
import me.joshlarson.jlcommon.log.Log;
@@ -247,6 +249,11 @@ public class PlayerMountService extends Service {
requester.setLocation(Location.zero());
requester.moveToSlot(vehicle, "rider", vehicle.getArrangementId(requester));
} else if (vehicle.getSlottedObject("rider") != null) {
GroupObject group = (GroupObject) ObjectLookup.getObjectById(requester.getGroupId());
if (group == null || !group.getGroupMembers().values().contains(vehicle.getOwnerId())) {
Log.d("%s attempted to mount a vehicle when not in the same group as the owner!", requester);
return;
}
boolean added = false;
for (int i = 1; i <= 7; i++) {
if (!vehicle.hasSlot("rider" + i)) {