1
This commit is contained in:
parent
e1b944a54d
commit
38864c9bf4
@ -93,10 +93,11 @@ void Buff::InternalTimerAddBuff()
|
|||||||
|
|
||||||
auto caster_state = std::make_shared<SkillCasterState>();
|
auto caster_state = std::make_shared<SkillCasterState>();
|
||||||
caster_.Get()->FillSkillCasterState(caster_state.get());
|
caster_.Get()->FillSkillCasterState(caster_state.get());
|
||||||
|
auto add_buff_id = std::make_shared<int>(0);
|
||||||
|
|
||||||
const mt::Skill* skill = skill_meta;
|
const mt::Skill* skill = skill_meta;
|
||||||
auto timer_func =
|
auto timer_func =
|
||||||
[this, caster_state, skill] (int event, const a8::Args* args)
|
[this, caster_state, skill, add_buff_id] (int event, const a8::Args* args)
|
||||||
{
|
{
|
||||||
if (a8::TIMER_EXEC_EVENT == event) {
|
if (a8::TIMER_EXEC_EVENT == event) {
|
||||||
if (!caster_state->caster.Get()) {
|
if (!caster_state->caster.Get()) {
|
||||||
@ -112,8 +113,8 @@ void Buff::InternalTimerAddBuff()
|
|||||||
receiver->context_pos = receiver->GetPos();
|
receiver->context_pos = receiver->GetPos();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int buff_id = meta->_int_buff_param2;
|
//int buff_id = meta->_int_buff_param2;
|
||||||
const mt::Buff* buff_meta = mt::Buff::GetById(buff_id);
|
const mt::Buff* buff_meta = mt::Buff::GetById(*add_buff_id);
|
||||||
if (buff_meta) {
|
if (buff_meta) {
|
||||||
SkillCasterState old_caster_state;
|
SkillCasterState old_caster_state;
|
||||||
caster.Get()->FillSkillCasterState(&old_caster_state);
|
caster.Get()->FillSkillCasterState(&old_caster_state);
|
||||||
@ -135,6 +136,7 @@ void Buff::InternalTimerAddBuff()
|
|||||||
switch (meta->buff_effect() ) {
|
switch (meta->buff_effect() ) {
|
||||||
case kBET_DelayAddBuff:
|
case kBET_DelayAddBuff:
|
||||||
{
|
{
|
||||||
|
*add_buff_id = meta->_int_buff_param2;
|
||||||
owner->room->xtimer.SetTimeoutEx
|
owner->room->xtimer.SetTimeoutEx
|
||||||
(
|
(
|
||||||
param1 * SERVER_FRAME_RATE,
|
param1 * SERVER_FRAME_RATE,
|
||||||
@ -145,6 +147,7 @@ void Buff::InternalTimerAddBuff()
|
|||||||
break;
|
break;
|
||||||
case kBET_IntervalAddBuff:
|
case kBET_IntervalAddBuff:
|
||||||
{
|
{
|
||||||
|
*add_buff_id = meta->_int_buff_param2;
|
||||||
owner->room->xtimer.SetIntervalEx
|
owner->room->xtimer.SetIntervalEx
|
||||||
(
|
(
|
||||||
param1 * SERVER_FRAME_RATE,
|
param1 * SERVER_FRAME_RATE,
|
||||||
@ -155,10 +158,11 @@ void Buff::InternalTimerAddBuff()
|
|||||||
break;
|
break;
|
||||||
case kBET_PhaseAddBuff:
|
case kBET_PhaseAddBuff:
|
||||||
{
|
{
|
||||||
|
*add_buff_id = meta->_int_buff_param1;
|
||||||
meta->TraverseParams
|
meta->TraverseParams
|
||||||
(
|
(
|
||||||
[this, timer_func] (int idx, const std::string& val) -> bool {
|
[this, timer_func] (int idx, const std::string& val) -> bool {
|
||||||
if (!val.empty()) {
|
if (!val.empty() && idx > 0) {
|
||||||
float param = meta->GetBuffParam(this, idx);
|
float param = meta->GetBuffParam(this, idx);
|
||||||
owner->room->xtimer.SetTimeoutEx
|
owner->room->xtimer.SetTimeoutEx
|
||||||
(
|
(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user