54 lines
1.4 KiB
Rust
54 lines
1.4 KiB
Rust
use crate::common_usings::*;
|
|
use crate::pokemon::double_power_user_damaged_by_target_in_turn::DoublePowerUserDamagedByTargetInTurnData;
|
|
use pkmn_lib_interface::PkmnResult;
|
|
|
|
script!(
|
|
DoublePowerUserDamagedByTargetInTurn,
|
|
"double_power_user_damaged_by_target_in_turn"
|
|
);
|
|
|
|
impl Script for DoublePowerUserDamagedByTargetInTurn {
|
|
fn new() -> Self {
|
|
Self {}
|
|
}
|
|
|
|
fn get_name(&self) -> &'static str {
|
|
Self::get_const_name()
|
|
}
|
|
|
|
fn get_capabilities(&self) -> &[ScriptCapabilities] {
|
|
&[
|
|
ScriptCapabilities::OnBeforeTurn,
|
|
ScriptCapabilities::ChangeBasePower,
|
|
]
|
|
}
|
|
|
|
fn on_before_turn(&self, choice: TurnChoice) -> PkmnResult<()> {
|
|
let user = choice.user();
|
|
user.add_volatile(DoublePowerUserDamagedByTargetInTurnData::create())?;
|
|
Ok(())
|
|
}
|
|
|
|
fn change_base_power(
|
|
&self,
|
|
_move: ExecutingMove,
|
|
target: Pokemon,
|
|
_hit: u8,
|
|
base_power: &mut Saturating<u8>,
|
|
) -> PkmnResult<()> {
|
|
if let Some(s) = get_volatile_as::<DoublePowerUserDamagedByTargetInTurnData>(
|
|
target.battle_side()?.as_ref(),
|
|
DoublePowerUserDamagedByTargetInTurnData::get_const_name(),
|
|
)? {
|
|
if s.has_been_hit_by_pokemon(&target) {
|
|
*base_power *= 2;
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|
|
|
|
fn as_any(&self) -> &dyn Any {
|
|
self
|
|
}
|
|
}
|