Adds attract
This commit is contained in:
		
							
								
								
									
										40
									
								
								gen_7_scripts/src/moves/attract.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								gen_7_scripts/src/moves/attract.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| use crate::pokemon::infatuated::Infatuated; | ||||
| use crate::script; | ||||
| use core::any::Any; | ||||
| use pkmn_lib_interface::app_interface::{ExecutingMove, Gender, Pokemon}; | ||||
| use pkmn_lib_interface::handling::{Script, ScriptCapabilities}; | ||||
|  | ||||
| script!(Attract, "attract"); | ||||
|  | ||||
| impl Script for Attract { | ||||
|     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, mv: ExecutingMove, target: Pokemon, hit: u8) { | ||||
|         let user_gender = mv.user().gender(); | ||||
|         let target_gender = target.gender(); | ||||
|         // If the move is used on a Pokémon that is the same gender as the user, it will fail | ||||
|         if target_gender == user_gender { | ||||
|             return mv.get_hit_data(&target, hit).fail(); | ||||
|         } | ||||
|         // It will also fail if used by or on a gender-unknown Pokémon | ||||
|         if user_gender == Gender::Genderless || target_gender == Gender::Genderless { | ||||
|             return mv.get_hit_data(&target, hit).fail(); | ||||
|         } | ||||
|         // If the target is the opposite gender of the Pokémon who launched the move, the target becomes infatuated | ||||
|         target.add_volatile_by_name(Infatuated::get_const_name()); | ||||
|     } | ||||
|  | ||||
|     fn as_any(&self) -> &dyn Any { | ||||
|         self | ||||
|     } | ||||
| } | ||||
| @@ -1,6 +1,7 @@ | ||||
| pub mod acrobatics; | ||||
| pub mod acupressure; | ||||
| pub mod after_you; | ||||
| pub mod multi_hit_move; | ||||
| pub mod assist; | ||||
| pub mod assurance; | ||||
| pub mod attract; | ||||
| pub mod multi_hit_move; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user