1
This commit is contained in:
parent
1c94dc6148
commit
147bff1082
@ -5,6 +5,7 @@
|
||||
#include "battledatacontext.h"
|
||||
#include "trigger.h"
|
||||
#include "room.h"
|
||||
#include "effect.h"
|
||||
|
||||
#include "mt/GraspBuff.h"
|
||||
#include "mt/Grasp.h"
|
||||
@ -21,7 +22,7 @@ struct GraspBuff
|
||||
std::tuple<const mt::GraspBuff*, const mt::GraspBuff*> buffs;
|
||||
std::function<void()> on_remove;
|
||||
a8::Attacher xtimer_attacher;
|
||||
std::vector<std::tuple<CreatureWeakPtr, std::weak_ptr<Effect>>> effect_list;
|
||||
std::vector<std::weak_ptr<Effect>> effect_list;
|
||||
|
||||
void ProcSignet(GunGrasp* gun_grasp, int count, Creature* enemy)
|
||||
{
|
||||
@ -92,15 +93,16 @@ private:
|
||||
void ProcEffectList(Creature* target, const mt::GraspBuff* buff, int buff_time, int attr_num)
|
||||
{
|
||||
for (int effect_id : buff->_effect_list) {
|
||||
effect_list.push_back(std::make_tuple(target->GetWeakPtrRef(), target->AddEffect(effect_id)));
|
||||
effect_list.push_back(target->AddEffect(effect_id));
|
||||
}
|
||||
}
|
||||
|
||||
void ClearEffectList()
|
||||
{
|
||||
for (auto& tuple : effect_list) {
|
||||
if (std::get<0>(tuple).Get()) {
|
||||
std::get<0>(tuple).Get()->RemoveEffect(std::get<1>(tuple));
|
||||
for (auto& effect : effect_list) {
|
||||
if (!effect.expired()) {
|
||||
auto p = effect.lock();
|
||||
p->owner->RemoveEffect(effect);
|
||||
}
|
||||
}
|
||||
effect_list.clear();
|
||||
|
Loading…
x
Reference in New Issue
Block a user