| 2332 | } |
| 2333 | |
| 2334 | Scene_Battle_Rpg2k3::BattleActionReturn Scene_Battle_Rpg2k3::ProcessBattleActionStartAnimation(Game_BattleAlgorithm::AlgorithmBase* action) { |
| 2335 | auto* source = action->GetSource(); |
| 2336 | bool ranged_weapon = false; |
| 2337 | |
| 2338 | if (source->GetType() == Game_Battler::Type_Ally) { |
| 2339 | auto* actor = static_cast<Game_Actor*>(source); |
| 2340 | auto* sprite = actor->GetActorBattleSprite(); |
| 2341 | if (sprite) { |
| 2342 | const auto pose = AdjustPoseForDirection(action->GetSource(), action->GetSourcePose()); |
| 2343 | if (pose != lcf::rpg::BattlerAnimation::Pose_Idle) { |
| 2344 | auto action_state = static_cast<Sprite_Actor::AnimationState>(pose + 1); |
| 2345 | |
| 2346 | if (action->GetType() == Game_BattleAlgorithm::Type::Normal) { |
| 2347 | sprite->SetNormalAttacking(true); |
| 2348 | auto* weapon = actor->GetWeaponSprite(); |
| 2349 | int weapon_animation_id = 0; |
| 2350 | if (weapon) { |
| 2351 | auto* weapon_animation_data = action->GetWeaponAnimationData(); |
| 2352 | if (weapon_animation_data) { |
| 2353 | if (weapon_animation_data->type == lcf::rpg::BattlerAnimationItemSkill::AnimType_weapon) { |
| 2354 | if (weapon_animation_data->weapon_animation_id >= 0) { |
| 2355 | weapon->SetWeaponAnimation(weapon_animation_data->weapon_animation_id + 1); |
| 2356 | weapon->StartAttack(action->GetSourcePose() == lcf::rpg::BattlerAnimation::Pose_AttackLeft); |
| 2357 | } |
| 2358 | } else { |
| 2359 | if (weapon_animation_data->type == lcf::rpg::BattlerAnimationItemSkill::AnimType_battle) { |
| 2360 | weapon_animation_id = weapon_animation_data->battle_animation_id; |
| 2361 | } |
| 2362 | } |
| 2363 | if (weapon_animation_data->ranged) { |
| 2364 | ranged_weapon = true; |
| 2365 | } |
| 2366 | } |
| 2367 | } |
| 2368 | sprite->SetAnimationState( |
| 2369 | action_state, |
| 2370 | Sprite_Actor::LoopState_WaitAfterFinish, |
| 2371 | weapon_animation_id); |
| 2372 | } else { |
| 2373 | sprite->SetAnimationState( |
| 2374 | action_state, |
| 2375 | Sprite_Actor::LoopState_WaitAfterFinish); |
| 2376 | } |
| 2377 | } else { |
| 2378 | sprite->SetAnimationLoop(Sprite_Actor::LoopState_DefaultAnimationAfterFinish); |
| 2379 | } |
| 2380 | } |
| 2381 | } |
| 2382 | |
| 2383 | if (ranged_weapon) { |
| 2384 | SetBattleActionState(BattleActionState_CBARangedWeaponInit); |
| 2385 | } else { |
| 2386 | SetBattleActionState(BattleActionState_Animation); |
| 2387 | } |
| 2388 | return BattleActionReturn::eWait; |
| 2389 | } |
| 2390 | |
| 2391 | Scene_Battle_Rpg2k3::BattleActionReturn Scene_Battle_Rpg2k3::ProcessBattleActionCBARangedWeaponInit(Game_BattleAlgorithm::AlgorithmBase* action) { |
nothing calls this directly
no test coverage detected