75 lines
1.5 KiB
Rust
Executable File
75 lines
1.5 KiB
Rust
Executable File
use pkmn_lib_interface::app_interface::{get_hash, MoveData};
|
|
|
|
macro_rules! non_copyable {
|
|
(
|
|
$mv:ident,
|
|
$($move_name:literal),+
|
|
) => {
|
|
match $mv.name().hash() {
|
|
0
|
|
$(
|
|
| const { get_hash($move_name) }
|
|
)* => false,
|
|
_ => true
|
|
}
|
|
};
|
|
}
|
|
|
|
pub fn can_copy_move(mv: &MoveData) -> bool {
|
|
// A list of all moves that cannot be copied. This expands to a match statement, so is fast on
|
|
// runtime.
|
|
non_copyable!(
|
|
mv,
|
|
"assist",
|
|
"baneful_bunker",
|
|
"beak_blast",
|
|
"belch",
|
|
"bestow",
|
|
"bounce",
|
|
"celebrate",
|
|
"chatter",
|
|
"circle_throw",
|
|
"copycat",
|
|
"counter",
|
|
"covet",
|
|
"destiny_bond",
|
|
"detect",
|
|
"dig",
|
|
"dive",
|
|
"dragon_tail",
|
|
"endure",
|
|
"feint",
|
|
"fly",
|
|
"focus_punch",
|
|
"follow_me",
|
|
"helping_hand",
|
|
"hold_hands",
|
|
"kings_shield",
|
|
"mat_block",
|
|
"me_first",
|
|
"metronome",
|
|
"mimic",
|
|
"mirror_coat",
|
|
"mirror_move",
|
|
"nature_power",
|
|
"phantom_force",
|
|
"protect",
|
|
"rage_powder",
|
|
"roar",
|
|
"shadow_force",
|
|
"shell_trap",
|
|
"sketch",
|
|
"sky_drop",
|
|
"sleep_talk",
|
|
"snatch",
|
|
"spiky_shield",
|
|
"spotlight",
|
|
"struggle",
|
|
"switcheroo",
|
|
"thief",
|
|
"transform",
|
|
"trick",
|
|
"whirlwind"
|
|
)
|
|
}
|