This commit is contained in:
aozhiwei 2023-03-18 11:10:10 +08:00
parent 77c61027da
commit fea2976b0f
2 changed files with 40 additions and 19 deletions

View File

@ -146,6 +146,8 @@ void CondAddBuff::ProcDisengageBattle()
auto context = A8_MAKE_ANON_STRUCT_SHARED
(
std::vector<std::tuple<int, int>> hold_buff_list;
long long last_check_frameno = 0;
);
a8::XTimerWp timer = owner->room->xtimer.SetIntervalWpEx
@ -155,11 +157,29 @@ void CondAddBuff::ProcDisengageBattle()
{
if (a8::TIMER_EXEC_EVENT == event) {
if (!owner->dead) {
#if 0
if (std::get<0>(*context.get()) == 0) {
std::get<0>(*context.get()) = 1;
for (int buff_id : meta->_buff_param4_int_list) {
int buff_uniid = owner->TryAddBuff
(
GetCaster().Get(),
buff_id,
skill_meta
);
if (!meta->_buff_param5_int_set.empty()) {
context->hold_buff_list.push_back
(
std::make_tuple(buff_uniid, buff_id)
);
}
}
if (owner->room->GetFrameNo() - context->last_check_frameno > SERVER_FRAME_RATE * 10 &&
!meta->_buff_param5_int_set.empty() &&
context->hold_buff_list.size() > 0) {
for (size_t i = context->hold_buff_list.size() - 1; i >= 0; --i) {
if (!owner->GetBuffByUniId(std::get<0>(context->hold_buff_list[i]))) {
context->hold_buff_list.erase(context->hold_buff_list.begin() + i);
}
}
}
#endif
}
}
},
@ -171,23 +191,18 @@ void CondAddBuff::ProcDisengageBattle()
if (timer.expired()) {
return;
}
owner->room->xtimer.ResetTimer(timer);
#if 0
if (std::get<0>(*context.get()) == 1) {
for (int buff_uniid : std::get<1>(*context.get())) {
owner->RemoveBuffByUniId(buff_uniid);
if (!meta->_buff_param5_int_set.empty()) {
for (auto& tuple : context->hold_buff_list) {
if (meta->_buff_param5_int_set.find(std::get<1>(tuple)) !=
meta->_buff_param5_int_set.end()) {
owner->RemoveBuffByUniId(std::get<0>(tuple));
}
}
std::get<0>(*context.get()) = 0;
std::get<1>(*context.get()).clear();
context->hold_buff_list.clear();
}
#endif
owner->room->xtimer.ResetTimer(timer);
};
owner->GetTrigger()->AddListener
(
kDieEvent,
cb
);
owner->GetTrigger()->AddListener
(
kReceiveDmgEvent,

View File

@ -42,10 +42,16 @@ namespace mt
int _int_buff_param6 = 0;
std::vector<int> _buff_param1_int_list;
std::vector<int> _buff_param2_int_list;
std::set<int> _buff_param1_int_set;
std::set<int> _buff_param2_int_set;
std::vector<int> _buff_param3_int_list;
std::vector<int> _buff_param4_int_list;
std::vector<int> _buff_param5_int_list;
std::vector<int> _buff_param6_int_list;
std::set<int> _buff_param1_int_set;
std::set<int> _buff_param2_int_set;
std::set<int> _buff_param3_int_set;
std::set<int> _buff_param4_int_set;
std::set<int> _buff_param5_int_set;
std::set<int> _buff_param6_int_set;
std::vector<std::tuple<int, std::vector<std::tuple<int, int>>>> _batch_add_list;
std::vector<std::tuple<int, std::vector<int>>> _post_remove_action;
std::set<int> _immune_buffeffect;