From f04c17bf7f53096824e2fca6834bf87ea31b7a88 Mon Sep 17 00:00:00 2001 From: Ziggy Date: Thu, 14 Jul 2022 01:51:06 +0200 Subject: [PATCH] Holocore-660 Default attack --- pswgcommon | 2 +- .../commands/callbacks/combat/CmdAttack.kt | 19 +++++++++ .../resources/support/npc/ai/NpcCombatMode.kt | 11 +---- .../objects/swg/weapon/WeaponType.java | 41 +++++++++++-------- .../commands/CommandExecutionService.java | 2 + 5 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/projectswg/holocore/resources/support/global/commands/callbacks/combat/CmdAttack.kt diff --git a/pswgcommon b/pswgcommon index 8a516676d..5720b896f 160000 --- a/pswgcommon +++ b/pswgcommon @@ -1 +1 @@ -Subproject commit 8a516676d7e0eaf63368e581b88cbd8d3bc7f9d8 +Subproject commit 5720b896f6e0383b38a3196548dc7301532dc446 diff --git a/src/main/java/com/projectswg/holocore/resources/support/global/commands/callbacks/combat/CmdAttack.kt b/src/main/java/com/projectswg/holocore/resources/support/global/commands/callbacks/combat/CmdAttack.kt new file mode 100644 index 000000000..6ec53a20a --- /dev/null +++ b/src/main/java/com/projectswg/holocore/resources/support/global/commands/callbacks/combat/CmdAttack.kt @@ -0,0 +1,19 @@ +package com.projectswg.holocore.resources.support.global.commands.callbacks.combat + +import com.projectswg.common.network.packets.swg.zone.ExecuteConsoleCommand +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 + +class CmdAttack : ICmdCallback { + override fun execute(player: Player, target: SWGObject?, args: String) { + val creatureObject = player.creatureObject + val equippedWeapon = creatureObject.equippedWeapon + val weaponType = equippedWeapon.type + val defaultAttack = weaponType.defaultAttack + val executeConsoleCommand = ExecuteConsoleCommand() + executeConsoleCommand.addCommand(defaultAttack) + + player.sendPacket(executeConsoleCommand) + } +} \ No newline at end of file diff --git a/src/main/java/com/projectswg/holocore/resources/support/npc/ai/NpcCombatMode.kt b/src/main/java/com/projectswg/holocore/resources/support/npc/ai/NpcCombatMode.kt index 7213608b9..abe43ab94 100644 --- a/src/main/java/com/projectswg/holocore/resources/support/npc/ai/NpcCombatMode.kt +++ b/src/main/java/com/projectswg/holocore/resources/support/npc/ai/NpcCombatMode.kt @@ -19,7 +19,6 @@ import com.projectswg.holocore.resources.support.objects.swg.custom.AIBehavior import com.projectswg.holocore.resources.support.objects.swg.custom.AIObject import com.projectswg.holocore.resources.support.objects.swg.custom.NpcMode import com.projectswg.holocore.resources.support.objects.swg.weapon.WeaponObject -import com.projectswg.holocore.resources.support.objects.swg.weapon.WeaponType import java.util.* import java.util.concurrent.CopyOnWriteArraySet import java.util.concurrent.ThreadLocalRandom @@ -157,15 +156,7 @@ class NpcCombatMode(obj: AIObject) : NpcMode(obj) { return "creatureMeleeAttack" } - return when (weapon.type) { - WeaponType.PISTOL -> "rangedShot" - WeaponType.RIFLE -> "rangedShot" - WeaponType.LIGHT_RIFLE -> "rangedShot" - WeaponType.CARBINE, WeaponType.HEAVY, WeaponType.HEAVY_WEAPON, WeaponType.DIRECTIONAL_TARGET_WEAPON -> "rangedShot" - WeaponType.ONE_HANDED_MELEE, WeaponType.TWO_HANDED_MELEE, WeaponType.UNARMED, WeaponType.POLEARM_MELEE, WeaponType.THROWN -> "meleeHit" - WeaponType.ONE_HANDED_SABER, WeaponType.TWO_HANDED_SABER, WeaponType.POLEARM_SABER -> "saberHit" - else -> "meleeHit" - } + return weapon.type.defaultAttack } } diff --git a/src/main/java/com/projectswg/holocore/resources/support/objects/swg/weapon/WeaponType.java b/src/main/java/com/projectswg/holocore/resources/support/objects/swg/weapon/WeaponType.java index 3c41f90b0..e697b3404 100644 --- a/src/main/java/com/projectswg/holocore/resources/support/objects/swg/weapon/WeaponType.java +++ b/src/main/java/com/projectswg/holocore/resources/support/objects/swg/weapon/WeaponType.java @@ -26,28 +26,30 @@ ***********************************************************************************/ package com.projectswg.holocore.resources.support.objects.swg.weapon; +import org.jetbrains.annotations.NotNull; + import java.util.Arrays; import java.util.Collection; import java.util.HashSet; public enum WeaponType { - RIFLE (0, "rifle_speed", WeaponClass.RANGED, "rifle_defense", "rifle_accuracy"), - CARBINE (1, "carbine_speed", WeaponClass.RANGED, "carbine_defense", "carbine_accuracy"), - PISTOL (2, "pistol_speed", WeaponClass.RANGED, "pistol_defense", "pistol_accuracy"), - HEAVY (3, "heavyweapon_speed", WeaponClass.RANGED, "heavyweapon_defense", "heavyweapon_accuracy"), - ONE_HANDED_MELEE (4, "onehandmelee_speed", WeaponClass.MELEE, "onehandmelee_defense", "onehandmelee_accuracy"), - TWO_HANDED_MELEE (5, "twohandmelee_speed", WeaponClass.MELEE, "twohandmelee_defense", "twohandmelee_accuracy"), - UNARMED (6, "unarmed_speed", WeaponClass.MELEE, "unarmed_defense", "unarmed_accuracy"), - POLEARM_MELEE (7, "polearm_speed", WeaponClass.MELEE, "polearm_defense", "polearm_accuracy"), - THROWN (8, "thrown_speed", WeaponClass.RANGED, null, "thrown_accuracy"), - ONE_HANDED_SABER (9, "onehandlightsaber_speed", WeaponClass.MELEE, null, "onehandlightsaber_accuracy"), - TWO_HANDED_SABER (10, "twohandlightsaber_speed", WeaponClass.MELEE, null, "twohandlightsaber_accuracy"), - POLEARM_SABER (11, "polearmlightsaber_speed", WeaponClass.MELEE, null, "polearmlightsaber_accuracy"), + RIFLE (0, "rifle_speed", WeaponClass.RANGED, "rifle_defense", "rifle_accuracy", "rangedShot"), + CARBINE (1, "carbine_speed", WeaponClass.RANGED, "carbine_defense", "carbine_accuracy", "rangedShot"), + PISTOL (2, "pistol_speed", WeaponClass.RANGED, "pistol_defense", "pistol_accuracy", "rangedShot"), + HEAVY (3, "heavyweapon_speed", WeaponClass.RANGED, "heavyweapon_defense", "heavyweapon_accuracy", "rangedShot"), + ONE_HANDED_MELEE (4, "onehandmelee_speed", WeaponClass.MELEE, "onehandmelee_defense", "onehandmelee_accuracy", "meleeHit"), + TWO_HANDED_MELEE (5, "twohandmelee_speed", WeaponClass.MELEE, "twohandmelee_defense", "twohandmelee_accuracy", "meleeHit"), + UNARMED (6, "unarmed_speed", WeaponClass.MELEE, "unarmed_defense", "unarmed_accuracy", "meleeHit"), + POLEARM_MELEE (7, "polearm_speed", WeaponClass.MELEE, "polearm_defense", "polearm_accuracy", "meleeHit"), + THROWN (8, "thrown_speed", WeaponClass.RANGED, null, "thrown_accuracy", "meleeHit"), + ONE_HANDED_SABER (9, "onehandlightsaber_speed", WeaponClass.MELEE, null, "onehandlightsaber_accuracy", "saberHit"), + TWO_HANDED_SABER (10, "twohandlightsaber_speed", WeaponClass.MELEE, null, "twohandlightsaber_accuracy", "saberHit"), + POLEARM_SABER (11, "polearmlightsaber_speed", WeaponClass.MELEE, null, "polearmlightsaber_accuracy", "saberHit"), // TODO these are NGE weapon types we should remove later - HEAVY_WEAPON (12, "unavailable", WeaponClass.RANGED, null, null), - DIRECTIONAL_TARGET_WEAPON (13, "unavailable", WeaponClass.RANGED, null, null), - LIGHT_RIFLE (14, "unavailable", WeaponClass.RANGED, null, null); + HEAVY_WEAPON (12, "unavailable", WeaponClass.RANGED, null, null, ""), + DIRECTIONAL_TARGET_WEAPON (13, "unavailable", WeaponClass.RANGED, null, null, ""), + LIGHT_RIFLE (14, "unavailable", WeaponClass.RANGED, null, null, ""); private static final WeaponType [] VALUES = values(); @@ -56,13 +58,15 @@ public enum WeaponType { private final WeaponClass weaponClass; private final String defenseSkillMod; private final String accuracySkillMod; + private final String defaultAttack; - WeaponType(int num, String speedSkillMod, WeaponClass weaponClass, String defenseSkillMod, String accuracySkillMod) { + WeaponType(int num, String speedSkillMod, WeaponClass weaponClass, String defenseSkillMod, String accuracySkillMod, String defaultAttack) { this.num = num; this.speedSkillMod = speedSkillMod; this.weaponClass = weaponClass; this.defenseSkillMod = defenseSkillMod; this.accuracySkillMod = accuracySkillMod; + this.defaultAttack = defaultAttack; } public int getNum() { @@ -134,4 +138,9 @@ public enum WeaponType { public boolean isRanged() { return weaponClass == WeaponClass.RANGED; } + + @NotNull + public String getDefaultAttack() { + return defaultAttack; + } } diff --git a/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandExecutionService.java b/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandExecutionService.java index 8a4d01d2c..ad478cfc3 100644 --- a/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandExecutionService.java +++ b/src/main/java/com/projectswg/holocore/services/support/global/commands/CommandExecutionService.java @@ -35,6 +35,7 @@ import com.projectswg.holocore.resources.support.global.commands.callbacks.admin import com.projectswg.holocore.resources.support.global.commands.callbacks.admin.qatool.CmdQaTool; import com.projectswg.holocore.resources.support.global.commands.callbacks.chat.*; import com.projectswg.holocore.resources.support.global.commands.callbacks.chat.friend.*; +import com.projectswg.holocore.resources.support.global.commands.callbacks.combat.CmdAttack; import com.projectswg.holocore.resources.support.global.commands.callbacks.combat.CmdCoupDeGrace; import com.projectswg.holocore.resources.support.global.commands.callbacks.combat.CmdDuel; import com.projectswg.holocore.resources.support.global.commands.callbacks.combat.CmdEndDuel; @@ -185,6 +186,7 @@ public class CommandExecutionService extends Service { registerScriptCallback("cmdCoupDeGrace", CmdCoupDeGrace::new); registerCppCallback("duel", CmdDuel::new); registerCppCallback("endDuel", CmdEndDuel::new); + registerScriptCallback("attack", CmdAttack::new); } private void addLootScripts() {