Implements flinch effect
This commit is contained in:
		
							
								
								
									
										54
									
								
								gen_7_scripts/src/moves/flinch.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								gen_7_scripts/src/moves/flinch.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| use crate::script; | ||||
| use alloc::boxed::Box; | ||||
| use core::any::Any; | ||||
| use pkmn_lib_interface::app_interface::{ExecutingMove, Pokemon}; | ||||
| use pkmn_lib_interface::handling::{Script, ScriptCapabilities}; | ||||
|  | ||||
| script!(Flinch, "flinch"); | ||||
|  | ||||
| impl Script for Flinch { | ||||
|     fn new() -> Self { | ||||
|         Self {} | ||||
|     } | ||||
|  | ||||
|     fn get_name(&self) -> &'static str { | ||||
|         Self::get_const_name() | ||||
|     } | ||||
|  | ||||
|     fn get_capabilities(&self) -> &[ScriptCapabilities] { | ||||
|         &[ScriptCapabilities::OnSecondaryEffect] | ||||
|     } | ||||
|  | ||||
|     fn on_secondary_effect(&self, _move: ExecutingMove, target: Pokemon, _hit: u8) { | ||||
|         target.add_volatile(Box::new(FlinchEffect::new())); | ||||
|     } | ||||
|  | ||||
|     fn as_any(&self) -> &dyn Any { | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| script!(FlinchEffect, "flinch_effect"); | ||||
|  | ||||
| impl Script for FlinchEffect { | ||||
|     fn new() -> Self { | ||||
|         Self {} | ||||
|     } | ||||
|  | ||||
|     fn get_name(&self) -> &'static str { | ||||
|         Self::get_const_name() | ||||
|     } | ||||
|  | ||||
|     fn get_capabilities(&self) -> &[ScriptCapabilities] { | ||||
|         &[ScriptCapabilities::PreventMove] | ||||
|     } | ||||
|  | ||||
|     fn prevent_move(&self, mv: ExecutingMove, prevent: &mut bool) { | ||||
|         *prevent = true; | ||||
|         mv.user().remove_volatile(self); | ||||
|     } | ||||
|  | ||||
|     fn as_any(&self) -> &dyn Any { | ||||
|         self | ||||
|     } | ||||
| } | ||||
| @@ -10,6 +10,7 @@ pub mod change_all_target_stats; | ||||
| pub mod change_target_stats; | ||||
| pub mod cure_party_status; | ||||
| pub mod drain; | ||||
| pub mod flinch; | ||||
| pub mod light_screen; | ||||
| pub mod multi_hit_move; | ||||
| pub mod reflect; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user