| 792 | } |
| 793 | |
| 794 | void Game_Actor::ChangeLevel(int new_level, PendingMessage* pm) { |
| 795 | int old_level = GetLevel(); |
| 796 | SetLevel(new_level); |
| 797 | new_level = GetLevel(); // Level adjusted to max |
| 798 | |
| 799 | if (new_level > old_level) { |
| 800 | if (pm) { |
| 801 | pm->PushLine(ActorMessage::GetLevelUpMessage(*this, new_level)); |
| 802 | } |
| 803 | |
| 804 | // Learn new skills |
| 805 | LearnLevelSkills(old_level + 1, new_level, pm); |
| 806 | |
| 807 | if (pm) { |
| 808 | pm->PushPageEnd(); |
| 809 | } |
| 810 | |
| 811 | // Experience adjustment: |
| 812 | // At least level minimum |
| 813 | SetExp(max(GetBaseExp(), GetExp())); |
| 814 | } else if (new_level < old_level) { |
| 815 | // Experience adjustment: |
| 816 | // Level minimum if higher then Level maximum |
| 817 | if (GetExp() >= GetNextExp()) { |
| 818 | SetExp(GetBaseExp()); |
| 819 | } |
| 820 | } |
| 821 | } |
| 822 | |
| 823 | bool Game_Actor::IsEquippable(int item_id) const { |
| 824 | const lcf::rpg::Item* item = lcf::ReaderUtil::GetElement(lcf::Data::items, item_id); |
no test coverage detected