@@ -918,6 +918,49 @@ unsafe fn game_specialhi3(fighter: &mut L2CAgentBase) {
918
918
}
919
919
}
920
920
921
+ #[ acmd_script( agent = "chrom" , scripts = [ "game_speciallw" , "game_specialairlow" ] , category = ACMD_GAME , low_priority ) ]
922
+ unsafe fn game_speciallw ( fighter : & mut L2CAgentBase ) {
923
+ let lua_state = fighter. lua_state_agent ;
924
+ let boma = fighter. boma ( ) ;
925
+ frame ( lua_state, 8.0 ) ;
926
+ if is_excute ( fighter) {
927
+ WorkModule :: on_flag ( boma, * FIGHTER_ROY_STATUS_SPECIAL_LW_FLAG_SHIELD ) ;
928
+ WorkModule :: on_flag ( boma, * FIGHTER_ROY_STATUS_SPECIAL_LW_FLAG_APPLY_POWERUP_MOTION_RATE ) ;
929
+ }
930
+ frame ( lua_state, 21.0 ) ;
931
+ FT_MOTION_RATE_RANGE ( fighter, 21.0 , 68.0 , 39.0 ) ;
932
+ if is_excute ( fighter) {
933
+ WorkModule :: off_flag ( boma, * FIGHTER_ROY_STATUS_SPECIAL_LW_FLAG_SHIELD ) ;
934
+ WorkModule :: off_flag ( boma, * FIGHTER_ROY_STATUS_SPECIAL_LW_FLAG_APPLY_POWERUP_MOTION_RATE ) ;
935
+ }
936
+ }
937
+
938
+ #[ acmd_script( agent = "roy" , scripts = [ "game_speciallwhit" , "game_specialairlwhit" ] , category = ACMD_GAME , low_priority) ]
939
+ unsafe fn game_speciallwhit ( fighter : & mut L2CAgentBase ) {
940
+ let lua_state = fighter. lua_state_agent ;
941
+ let boma = fighter. boma ( ) ;
942
+ frame ( lua_state, 1.0 ) ;
943
+ FT_MOTION_RATE_RANGE ( fighter, 1.0 , 5.0 , 4.0 ) ;
944
+ frame ( lua_state, 5.0 ) ;
945
+ if is_excute ( fighter) {
946
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 8.0 , 35 , 100 , 0 , 40 , 3.0 , 0.0 , 19.0 , 16.5 , Some ( 0.0 ) , Some ( 21.0 ) , Some ( 10.0 ) , 1.2 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , false , 0 , 0.0 , 0 , false , false , false , false , true , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_cutup" ) , * ATTACK_SOUND_LEVEL_L , * COLLISION_SOUND_ATTR_CHROM_HIT , * ATTACK_REGION_SWORD ) ;
947
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top" ) , 8.0 , 35 , 100 , 0 , 40 , 4.0 , 0.0 , 15.0 , 18.5 , Some ( 0.0 ) , Some ( 16.0 ) , Some ( 8.0 ) , 1.2 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , false , 0 , 0.0 , 0 , false , false , false , false , true , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_cutup" ) , * ATTACK_SOUND_LEVEL_L , * COLLISION_SOUND_ATTR_CHROM_HIT , * ATTACK_REGION_SWORD ) ;
948
+ ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "top" ) , 8.0 , 35 , 100 , 0 , 40 , 7.5 , 0.0 , 8.0 , 18.0 , Some ( 0.0 ) , Some ( 8.0 ) , Some ( 3.0 ) , 1.2 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , false , 0 , 0.0 , 0 , false , false , false , false , true , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_cutup" ) , * ATTACK_SOUND_LEVEL_L , * COLLISION_SOUND_ATTR_CHROM_HIT , * ATTACK_REGION_SWORD ) ;
949
+ AttackModule :: set_force_reaction ( boma, 0 , true , false ) ;
950
+ AttackModule :: set_force_reaction ( boma, 1 , true , false ) ;
951
+ AttackModule :: set_force_reaction ( boma, 2 , true , false ) ;
952
+ if WorkModule :: is_flag ( boma, * FIGHTER_ROY_STATUS_SPECIAL_LW_FLAG_SPECIAL_EFFECT ) {
953
+ AttackModule :: set_optional_hit_sound ( boma, 0 , Hash40 :: new ( "se_chrom_criticalhit" ) ) ;
954
+ AttackModule :: set_optional_hit_sound ( boma, 1 , Hash40 :: new ( "se_chrom_criticalhit" ) ) ;
955
+ AttackModule :: set_optional_hit_sound ( boma, 2 , Hash40 :: new ( "se_chrom_criticalhit" ) ) ;
956
+ }
957
+ }
958
+ frame ( lua_state, 7.0 ) ;
959
+ if is_excute ( fighter) {
960
+ AttackModule :: clear_all ( boma) ;
961
+ }
962
+ }
963
+
921
964
pub fn install ( ) {
922
965
install_acmd_scripts ! (
923
966
chrom_special_n_end_game,
@@ -948,7 +991,10 @@ pub fn install() {
948
991
chrom_special_air_s4_lw_effect,
949
992
game_specialhi2,
950
993
game_specialairhi2,
951
- game_specialhi3
994
+ game_specialhi3,
995
+ game_speciallw,
996
+ game_speciallwhit
997
+
952
998
) ;
953
999
}
954
1000
0 commit comments