This commit is contained in:
aozhiwei 2021-09-24 08:53:40 +00:00
parent 186336247e
commit 9696086968
3 changed files with 24 additions and 8 deletions

View File

@ -2788,18 +2788,29 @@ Weapon* Creature::ChooseNextSpecWeapon(int curr_weapon_slot_id)
void Creature::OnBattleStart(Room* room) void Creature::OnBattleStart(Room* room)
{ {
std::vector<int> del_buffs; int try_count = 0;
del_buffs.reserve(buff_list_.size()); while (try_count++ < 10) {
for (auto& buff : buff_list_) { std::vector<int> del_buffs;
if (!buff.meta->i->post_battle_valid()) { del_buffs.reserve(buff_list_.size());
if (!buff.skill_meta || buff.skill_meta->i->skill_type() != kPassiveSkill) { for (auto& buff : buff_list_) {
del_buffs.push_back(buff.buff_uniid); if (!buff.meta->i->post_battle_valid()) {
if (!buff.skill_meta || buff.skill_meta->i->skill_type() != kPassiveSkill) {
del_buffs.push_back(buff.buff_uniid);
}
} }
} }
for (auto itr = del_buffs.rbegin(); itr != del_buffs.rend(); ++itr) {
RemoveBuffByUniId(*itr);
}
if (del_buffs.empty()) {
break;
}
} }
for (auto itr = del_buffs.rbegin(); itr != del_buffs.rend(); ++itr) { #ifdef DEBUG
RemoveBuffByUniId(*itr); if (try_count > 5) {
abort();
} }
#endif
} }
bool Creature::CanFollow(Creature* follower) bool Creature::CanFollow(Creature* follower)

View File

@ -3857,6 +3857,7 @@ void Room::ClearPostBattleAutoFreeList()
void Room::OnBattleStart() void Room::OnBattleStart()
{ {
battle_starting_ = true;
std::vector<EntityWeakPtr> entitys; std::vector<EntityWeakPtr> entitys;
entitys.reserve(uniid_hash_.size()); entitys.reserve(uniid_hash_.size());
for (auto& pair : uniid_hash_) { for (auto& pair : uniid_hash_) {
@ -3867,4 +3868,5 @@ void Room::OnBattleStart()
e.Get()->OnBattleStart(this); e.Get()->OnBattleStart(this);
} }
} }
battle_starting_ = false;
} }

View File

@ -110,6 +110,7 @@ public:
#else #else
bool IsWaitingStart() { return waiting_start_; } bool IsWaitingStart() { return waiting_start_; }
#endif #endif
bool IsBattleStarting() { return battle_starting_; };
int GetPlayerNum(); int GetPlayerNum();
int GetHumanNum(); int GetHumanNum();
@ -379,6 +380,8 @@ private:
bool infinite_bullet_mode_ = false; bool infinite_bullet_mode_ = false;
bool battle_starting_ = false;
friend class Incubator; friend class Incubator;
friend class Team; friend class Team;
}; };