1
0
Fork 0
mirror of https://github.com/jugeeya/UltimateTrainingModpack.git synced 2025-01-31 22:47:25 +00:00

add random tech option toggle

This commit is contained in:
jugeeya 2019-08-01 13:27:29 -07:00
parent d2b6750632
commit e4bf2e548d
4 changed files with 54 additions and 7 deletions

View file

@ -59,8 +59,9 @@ int MASH_STATE = NONE;
// Escape States
#define ESCAPE_LEDGE 1
#define ESCAPE_TECH 2
int ESCAPE_STATE = ESCAPE_LEDGE;
#define NUM_ESCAPE_STATES 2
#define NUM_ESCAPE_STATES 3
// Shield States
#define SHIELD_INFINITE 1

View file

@ -54,7 +54,7 @@ void menu_replace() {
SaltySDCore_ReplaceImport("vsnprintf", (void*)vsnprintf_intercept);
}
void change_motion(u64 module_accessor, u64 motion_kind) {
void clear_command(u64 module_accessor, u64 motion_kind) {
if (motion_kind == hash40("appeal_lw_l") || motion_kind == hash40("appeal_lw_r")) {
if (is_training_mode()) {
if (TOGGLE_STATE == MASH_TOGGLES) {
@ -68,7 +68,7 @@ if (motion_kind == hash40("appeal_lw_l") || motion_kind == hash40("appeal_lw_r")
if (TOGGLE_STATE == ESCAPE_TOGGLES) {
ESCAPE_STATE = (ESCAPE_STATE + 1) % NUM_ESCAPE_STATES;
const char* toggle_strings[NUM_ESCAPE_STATES] =
{"NONE", "LEDGE"};
{"NONE", "LEDGE", "TECH"};
print_string(module_accessor, toggle_strings[ESCAPE_STATE]);
}

31
source/training/tech.h Normal file
View file

@ -0,0 +1,31 @@
#include "common.hpp"
namespace Tech {
void init_settings(u64 module_accessor, int status_kind) {
if (ESCAPE_STATE == ESCAPE_TECH && is_training_mode() && is_operation_cpu(module_accessor)) {
if (status_kind == FIGHTER_STATUS_KIND_DOWN) {
const int NUM_TECH_STATUSES = 4;
int random_statuses[NUM_TECH_STATUSES] = {
FIGHTER_STATUS_KIND_DOWN,
FIGHTER_STATUS_KIND_PASSIVE,
FIGHTER_STATUS_KIND_PASSIVE_FB,
FIGHTER_STATUS_KIND_PASSIVE_FB
};
int random_status_index = app::sv_math::rand(hash40("fighter"), NUM_TECH_STATUSES);
StatusModule::change_status_request_from_script(module_accessor, random_statuses[random_status_index], 1);
}
else if (status_kind == FIGHTER_STATUS_KIND_PASSIVE) {
const int NUM_TECH_STATUSES = 2;
int random_statuses[NUM_TECH_STATUSES] = {
FIGHTER_STATUS_KIND_PASSIVE,
FIGHTER_STATUS_KIND_PASSIVE_FB
};
int random_status_index = app::sv_math::rand(hash40("fighter"), NUM_TECH_STATUSES);
StatusModule::change_status_request_from_script(module_accessor, random_statuses[random_status_index], 1);
}
}
}
}

View file

@ -21,6 +21,7 @@
#include "training/mash.hpp"
#include "training/selection.hpp"
#include "training/shield.hpp"
#include "training/tech.h"
#include "training/input_recorder.hpp"
using namespace lib;
@ -29,7 +30,6 @@ using namespace app::sv_animcmd;
namespace app::lua_bind {
namespace WorkModule {
// Force DI
float get_float_replace(u64 module_accessor, int var) {
bool replace;
float ret = DirectionalInfluence::get_float(module_accessor, var, replace);
@ -148,7 +148,7 @@ bool check_button_off_replace(u64 module_accessor, int button) {
}
void clear_command_replace(u64 module_accessor, bool unk1) {
Selection::change_motion(module_accessor, MotionModule::motion_kind(module_accessor));
Selection::clear_command(module_accessor, MotionModule::motion_kind(module_accessor));
u64 control_module = load_module(module_accessor, 0x48);
void (*clear_command)(u64, bool) =
@ -157,10 +157,20 @@ void clear_command_replace(u64 module_accessor, bool unk1) {
clear_command(control_module, unk1);
}
} // namespace ControlModule
namespace StatusModule {
void init_settings_replace(u64 module_accessor, int situationKind, int unk1, u64 unk2,int groundCliffCheckKind, bool unk3, int unk4, int unk5, int unk6, int unk7) {
Tech::init_settings(module_accessor, StatusModule::status_kind(module_accessor));
u64 status_module = load_module(module_accessor, STATUS_MODULE_OFFSET);
void (*init_settings)(u64,int,int,u64,int,bool,int,int,int,int) =
(void (*)(u64,int,int,u64,int,bool,int,int,int,int)) load_module_impl(status_module, INIT_SETTINGS_OFFSET);
init_settings(status_module, situationKind, unk1, unk2, groundCliffCheckKind, unk3, unk4, unk5, unk6, unk7);
}
} // namespace StatusModule
} // namespace app::lua_bind
void training_mods_main() {
fighter_manager_addr = SaltySDCore_FindSymbol(
"_ZN3lib9SingletonIN3app14FighterManagerEE9instance_E");
@ -203,6 +213,11 @@ void training_mods_main() {
"_ZN3app8lua_bind31ControlModule__get_stick_y_implEPNS_26BattleObjectModuleAccessorE",
(u64)&ControlModule::get_stick_y_replace);
// Tech options
SaltySD_function_replace_sym(
"_ZN3app8lua_bind32StatusModule__init_settings_implEPNS_26BattleObjectModuleAccessorENS_13SituationKindEijNS_20GroundCliffCheckKindEbiiii",
(u64)&StatusModule::init_settings_replace);
Selection::menu_replace();
}