| 4692 | } |
| 4693 | |
| 4694 | bool Game_Interpreter::CommandManiacControlVarArray(lcf::rpg::EventCommand const& com) { |
| 4695 | if (!Player::IsPatchManiac()) { |
| 4696 | return true; |
| 4697 | } |
| 4698 | |
| 4699 | int op = com.parameters[0]; |
| 4700 | int mode = com.parameters[1]; |
| 4701 | |
| 4702 | int target_a = ValueOrVariableBitfield(mode, 0, com.parameters[2]); |
| 4703 | int length = ValueOrVariableBitfield(mode, 1, com.parameters[3]); |
| 4704 | int target_b = ValueOrVariableBitfield(mode, 2, com.parameters[4]); |
| 4705 | int last_target_a = target_a + length - 1; |
| 4706 | |
| 4707 | if (target_a < 1 || length <= 0) { |
| 4708 | return true; |
| 4709 | } |
| 4710 | |
| 4711 | switch (op) { |
| 4712 | case 0: { |
| 4713 | // Copy, assigns left to right, the others apply right to left |
| 4714 | int last_target_b = target_b + length - 1; |
| 4715 | Main_Data::game_variables->SetArray(target_b, last_target_b, target_a); |
| 4716 | break; |
| 4717 | } |
| 4718 | case 1: |
| 4719 | // Swap |
| 4720 | Main_Data::game_variables->SwapArray(target_a, last_target_a, target_b); |
| 4721 | break; |
| 4722 | case 2: |
| 4723 | // Sort asc |
| 4724 | Main_Data::game_variables->SortRange(target_a, last_target_a, true); |
| 4725 | break; |
| 4726 | case 3: |
| 4727 | // Sort desc |
| 4728 | Main_Data::game_variables->SortRange(target_a, last_target_a, false); |
| 4729 | break; |
| 4730 | case 4: |
| 4731 | // Shuffle |
| 4732 | Main_Data::game_variables->ShuffleRange(target_a, last_target_a); |
| 4733 | break; |
| 4734 | case 5: |
| 4735 | // Enumerate (target_b is a single value here, not an array) |
| 4736 | Main_Data::game_variables->EnumerateRange(target_a, last_target_a, target_b); |
| 4737 | break; |
| 4738 | case 6: |
| 4739 | // Add |
| 4740 | Main_Data::game_variables->AddArray(target_a, last_target_a, target_b); |
| 4741 | break; |
| 4742 | case 7: |
| 4743 | // Sub |
| 4744 | Main_Data::game_variables->SubArray(target_a, last_target_a, target_b); |
| 4745 | break; |
| 4746 | case 8: |
| 4747 | // Mul |
| 4748 | Main_Data::game_variables->MultArray(target_a, last_target_a, target_b); |
| 4749 | break; |
| 4750 | case 9: |
| 4751 | // Div |
nothing calls this directly
no test coverage detected