1
This commit is contained in:
parent
186336247e
commit
9696086968
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user