From 3a94591ec44da1e00227074c2b2535faffcaf362 Mon Sep 17 00:00:00 2001 From: Ziggy Date: Sun, 26 Jun 2022 01:24:05 +0200 Subject: [PATCH] Added support for more locomotions to prevent a lot of game-breaking issues Right now you can simply stand up even though you're incapacitated or dead. After this you can't. --- .../support/global/commands/Locomotion.kt | 20 ++++++++++++++++--- .../global/commands/CommandQueueService.java | 7 ++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/projectswg/holocore/resources/support/global/commands/Locomotion.kt b/src/main/java/com/projectswg/holocore/resources/support/global/commands/Locomotion.kt index d3870a879..cab35fc3a 100644 --- a/src/main/java/com/projectswg/holocore/resources/support/global/commands/Locomotion.kt +++ b/src/main/java/com/projectswg/holocore/resources/support/global/commands/Locomotion.kt @@ -1,7 +1,21 @@ package com.projectswg.holocore.resources.support.global.commands +import com.projectswg.common.data.encodables.tangible.Posture import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject -enum class Locomotion(val locomotionTableId: Int, val commandSdbColumnName: String, val check: (CreatureObject) -> Boolean) { - KNOCKED_DOWN(18, "L:knockedDown", {creatureObject -> creatureObject.posture == com.projectswg.common.data.encodables.tangible.Posture.KNOCKED_DOWN}) -} \ No newline at end of file +enum class Locomotion(val locomotionTableId: Int, val commandSdbColumnName: String, val posture: Posture) { + STANDING(0, "L:standing", Posture.UPRIGHT), + KNEELING(4, "L:kneeling", Posture.CROUCHED), + PRONE(7, "L:prone", Posture.PRONE), + SITTING(14, "L:sitting", Posture.SITTING), + SKILL_ANIMATING(15, "L:skillAnimating", Posture.SKILL_ANIMATING), + DRIVING_VEHICLE(16, "L:drivingVehicle", Posture.DRIVING_VEHICLE), + RIDING_CREATURE(17, "L:ridingCreature", Posture.RIDING_CREATURE), + KNOCKED_DOWN(18, "L:knockedDown", Posture.KNOCKED_DOWN), + INCAPACITATED(19, "L:incapacitated", Posture.INCAPACITATED), + DEAD(20, "L:dead", Posture.DEAD); + + fun isActive(creatureObject: CreatureObject): Boolean { + return creatureObject.posture == posture + } +} diff --git a/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandQueueService.java b/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandQueueService.java index 51fe37a7d..dcdf9e236 100644 --- a/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandQueueService.java +++ b/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandQueueService.java @@ -23,7 +23,6 @@ import com.projectswg.holocore.resources.support.global.player.PlayerEvent; import com.projectswg.holocore.resources.support.objects.swg.SWGObject; import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject; import com.projectswg.holocore.services.support.objects.ObjectStorageService.ObjectLookup; -import kotlin.jvm.functions.Function1; import me.joshlarson.jlcommon.concurrency.ScheduledThreadPool; import me.joshlarson.jlcommon.control.IntentHandler; import me.joshlarson.jlcommon.control.Service; @@ -188,11 +187,9 @@ public class CommandQueueService extends Service { @NotNull Locomotion[] locomotions = Locomotion.values(); for (Locomotion locomotion : locomotions) { - Function1 check = locomotion.getCheck(); + boolean active = locomotion.isActive(source); - Boolean result = check.invoke(source); - - if (Boolean.TRUE.equals(result)) { + if (active) { sourceLocomotions.add(locomotion); } }