mirror of
https://github.com/jugeeya/UltimateTrainingModpack.git
synced 2025-06-08 04:20:36 +00:00
parent
8feab4cf17
commit
12807258be
3 changed files with 24 additions and 26 deletions
|
@ -129,6 +129,25 @@ macro_rules! to_vec_impl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! get_random_impl {
|
||||||
|
($e:ty) => {
|
||||||
|
pub fn get_random(&self) -> $e {
|
||||||
|
let options = self.to_vec();
|
||||||
|
match options.len() {
|
||||||
|
0 => {
|
||||||
|
return <$e>::empty();
|
||||||
|
}
|
||||||
|
1 => {
|
||||||
|
return options[0];
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
return *random_option(&options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Ledge Option
|
// Ledge Option
|
||||||
bitflags! {
|
bitflags! {
|
||||||
pub struct LedgeOption : u32
|
pub struct LedgeOption : u32
|
||||||
|
@ -140,7 +159,7 @@ bitflags! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn random_option<T>(arg: &Vec<T>) -> &T {
|
pub fn random_option<T>(arg: &Vec<T>) -> &T {
|
||||||
return &arg[get_random_int(arg.len() as i32) as usize];
|
return &arg[get_random_int(arg.len() as i32) as usize];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,6 +174,7 @@ impl LedgeOption {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
to_vec_impl! {LedgeOption}
|
to_vec_impl! {LedgeOption}
|
||||||
|
get_random_impl! {LedgeOption}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tech options
|
// Tech options
|
||||||
|
@ -169,6 +189,7 @@ bitflags! {
|
||||||
|
|
||||||
impl TechFlags {
|
impl TechFlags {
|
||||||
to_vec_impl! {TechFlags}
|
to_vec_impl! {TechFlags}
|
||||||
|
get_random_impl! {TechFlags}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Mash States
|
/// Mash States
|
||||||
|
|
|
@ -24,20 +24,7 @@ pub unsafe fn force_option(module_accessor: &mut app::BattleObjectModuleAccessor
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut status = 0;
|
let mut status = 0;
|
||||||
let ledge_case: LedgeOption;
|
let ledge_case: LedgeOption = MENU.ledge_state.get_random();
|
||||||
|
|
||||||
let ledge_options = MENU.ledge_state.to_vec();
|
|
||||||
match ledge_options.len() {
|
|
||||||
0 => {
|
|
||||||
ledge_case = LedgeOption::empty();
|
|
||||||
}
|
|
||||||
1 => {
|
|
||||||
ledge_case = ledge_options[0];
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
ledge_case = *random_option(&ledge_options);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(new_status) = ledge_case.into_status() {
|
if let Some(new_status) = ledge_case.into_status() {
|
||||||
status = new_status;
|
status = new_status;
|
||||||
|
|
|
@ -45,17 +45,7 @@ unsafe fn mod_handle_change_status(
|
||||||
if status_kind_int == FIGHTER_STATUS_KIND_DOWN
|
if status_kind_int == FIGHTER_STATUS_KIND_DOWN
|
||||||
|| status_kind_int == FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_D
|
|| status_kind_int == FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_D
|
||||||
{
|
{
|
||||||
let states = MENU.tech_state.to_vec();
|
let state: TechFlags = MENU.tech_state.get_random();
|
||||||
let mut state = if states.is_empty() {
|
|
||||||
TechFlags::empty()
|
|
||||||
} else {
|
|
||||||
states[0]
|
|
||||||
};
|
|
||||||
|
|
||||||
if states.len() > 1 {
|
|
||||||
let idx = get_random_int(states.len() as i32) as usize;
|
|
||||||
state = states[idx];
|
|
||||||
}
|
|
||||||
|
|
||||||
match state {
|
match state {
|
||||||
TechFlags::IN_PLACE => {
|
TechFlags::IN_PLACE => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue