From 65b324848b02c87af8e47654ecb5d112f16c9a7f Mon Sep 17 00:00:00 2001
From: jugeeya <jugeeya@live.com>
Date: Wed, 19 Jun 2019 14:02:27 -0700
Subject: [PATCH] add mash random option

---
 source/script_replacement.hpp |  1 +
 source/taunt_toggles.h        |  9 +++++----
 source/training_mods.hpp      | 21 +++++++++++++++++++++
 3 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/source/script_replacement.hpp b/source/script_replacement.hpp
index a331a34..4f5f6c8 100644
--- a/source/script_replacement.hpp
+++ b/source/script_replacement.hpp
@@ -48,6 +48,7 @@ u64 appeal_lw_replace(L2CAgent* l2c_agent, void* variadic) {
 				"MASH\nAIRDODGE",
 				"MASH\nJUMP",
 				"MASH\nATTACK",
+				"MASH\nRANDOM",
 				"INFINITE\nSHIELD",
 				"HOLD\nSHIELD",
 				"LEDGE\nOPTION"
diff --git a/source/taunt_toggles.h b/source/taunt_toggles.h
index 3fac09e..75a8647 100644
--- a/source/taunt_toggles.h
+++ b/source/taunt_toggles.h
@@ -44,11 +44,12 @@ int LEDGE_STATE = RANDOM_LEDGE;
 #define MASH_AIRDODGE 1
 #define MASH_JUMP 2
 #define MASH_ATTACK 3
-#define INFINITE_SHIELD 4
-#define HOLD_SHIELD 5
-#define LEDGE_OPTION 6
+#define MASH_RANDOM 4
+#define INFINITE_SHIELD 5
+#define HOLD_SHIELD 6
+#define LEDGE_OPTION 7
 
 int TOGGLE_STATE = NONE;
-#define NUM_TOGGLE_STATES 7
+#define NUM_TOGGLE_STATES 8
 
 #endif // TAUNT_TOGGLES_H
diff --git a/source/training_mods.hpp b/source/training_mods.hpp
index 25ed054..622833b 100644
--- a/source/training_mods.hpp
+++ b/source/training_mods.hpp
@@ -166,6 +166,27 @@ namespace app::lua_bind {
 									flag |= FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_LW; break;
 							}
 						}
+
+					if (TOGGLE_STATE == MASH_RANDOM)
+						if (category == FIGHTER_PAD_COMMAND_CATEGORY1) {
+							int random_commands[] = {
+								FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE,
+								FIGHTER_PAD_CMD_CAT1_FLAG_JUMP_BUTTON,
+								0x80, // FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_AIR_N
+								0x100, // FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_AIR_F
+								0x200, // FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_AIR_B
+								0x400, // FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_AIR_HI
+								0x800, // FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_AIR_LW
+								FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_N,
+								FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_S,
+								FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_HI,
+								FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_LW,
+							};
+
+							int random_cmd_index = app::sv_math::rand(hash40("fighter"), 11);
+
+							flag |= random_commands[random_cmd_index];
+						}
 				}
 			}