1
This commit is contained in:
parent
fc2b19827b
commit
ccd5f340e0
@ -1066,57 +1066,60 @@ void Skill::ProcShotPhase(const mt::SkillPhase* phase)
|
||||
|
||||
void Skill::ProcForthBackJumpPhase(const mt::SkillPhase* phase)
|
||||
{
|
||||
if (GetMinorType() != SMT_NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
glm::vec3 old_dir = owner->GetMoveDir();
|
||||
Position old_pos = owner->GetPos();
|
||||
if (GetMinorType() == SMT_NONE) {
|
||||
int buff_id1 = phase->param3_ints.size() > 0 ? phase->param3_ints[0] : 0;
|
||||
int buff_id2 = phase->param3_ints.size() > 1 ? phase->param3_ints[1] : 0;
|
||||
int buff_id3 = phase->param3_ints.size() > 2 ? phase->param3_ints[2] : 0;
|
||||
const mt::Skill* skill_meta = meta;
|
||||
owner->TryAddBuff(owner, buff_id1);
|
||||
int land_effect_buff_uniid = owner->TryAddBuffAndSetTime
|
||||
(owner,
|
||||
buff_id3,
|
||||
skill_meta->_number_meta->_float_time * 1000);
|
||||
|
||||
int buff_id1 = phase->param3_ints.size() > 0 ? phase->param3_ints[0] : 0;
|
||||
int buff_id2 = phase->param3_ints.size() > 1 ? phase->param3_ints[1] : 0;
|
||||
int buff_id3 = phase->param3_ints.size() > 2 ? phase->param3_ints[2] : 0;
|
||||
const mt::Skill* skill_meta = meta;
|
||||
owner->TryAddBuff(owner, buff_id1);
|
||||
int land_effect_buff_uniid = owner->TryAddBuffAndSetTime
|
||||
(owner,
|
||||
buff_id3,
|
||||
skill_meta->_number_meta->_float_time * 1000);
|
||||
#ifdef DEBUG
|
||||
a8::XPrintf("old_pos:%f,%f\n", {owner->GetPos().x, owner->GetPos().y});
|
||||
a8::XPrintf("old_pos:%f,%f\n", {owner->GetPos().x, owner->GetPos().y});
|
||||
#endif
|
||||
owner->ForwardMove(SkillHelper::GetSjydhxForthDistance(meta));
|
||||
float recover_hp = SkillHelper::GetSjydhxRecoverHp(owner, meta);
|
||||
owner->AddHp(recover_hp);
|
||||
glm::vec3 pre_dir = old_dir;
|
||||
Position pre_pos = old_pos;
|
||||
owner->ForwardMove(SkillHelper::GetSjydhxForthDistance(meta));
|
||||
float recover_hp = SkillHelper::GetSjydhxRecoverHp(owner, meta);
|
||||
owner->AddHp(recover_hp);
|
||||
glm::vec3 pre_dir = old_dir;
|
||||
Position pre_pos = old_pos;
|
||||
#ifdef DEBUG
|
||||
a8::XPrintf("new_pos:%f,%f", {owner->GetPos().x, owner->GetPos().y});
|
||||
a8::XPrintf("new_pos:%f,%f", {owner->GetPos().x, owner->GetPos().y});
|
||||
#endif
|
||||
AddMinorMode
|
||||
(
|
||||
SMT_BLINK,
|
||||
AddMinorMode
|
||||
(
|
||||
SMT_BLINK,
|
||||
#if 1
|
||||
skill_meta->_number_meta->_float_time * 1000,
|
||||
skill_meta->_number_meta->_float_time * 1000,
|
||||
#else
|
||||
phase->param2.GetInt() * 1000,
|
||||
phase->param2.GetInt() * 1000,
|
||||
#endif
|
||||
[this, pre_pos, pre_dir, buff_id1, buff_id2, buff_id3, land_effect_buff_uniid,
|
||||
skill_meta] () {
|
||||
glm::vec3 old_dir = owner->GetMoveDir();
|
||||
Position old_pos = owner->GetPos();
|
||||
float distance = owner->GetPos().Distance2D2(pre_pos);
|
||||
owner->RemoveBuffByUniId(land_effect_buff_uniid);
|
||||
if (distance > 0.0001f) {
|
||||
glm::vec3 new_dir = owner->GetPos().CalcDir(pre_pos);
|
||||
GlmHelper::Normalize(new_dir);
|
||||
owner->SetMoveDir(new_dir);
|
||||
owner->TryAddBuff(owner, buff_id2);
|
||||
owner->ForwardMove(distance);
|
||||
}
|
||||
owner->SetMoveDir(old_dir);
|
||||
owner->TryAddBuffAndSetTime(owner,
|
||||
skill_meta->_number_meta->buff_id(),
|
||||
skill_meta->_number_meta->buff_time() * 1000,
|
||||
skill_meta);
|
||||
[this, pre_pos, pre_dir, buff_id1, buff_id2, buff_id3, land_effect_buff_uniid,
|
||||
skill_meta] () {
|
||||
glm::vec3 old_dir = owner->GetMoveDir();
|
||||
Position old_pos = owner->GetPos();
|
||||
float distance = owner->GetPos().Distance2D2(pre_pos);
|
||||
owner->RemoveBuffByUniId(land_effect_buff_uniid);
|
||||
if (distance > 0.0001f) {
|
||||
glm::vec3 new_dir = owner->GetPos().CalcDir(pre_pos);
|
||||
GlmHelper::Normalize(new_dir);
|
||||
owner->SetMoveDir(new_dir);
|
||||
owner->TryAddBuff(owner, buff_id2);
|
||||
owner->ForwardMove(distance);
|
||||
}
|
||||
);
|
||||
}
|
||||
owner->SetMoveDir(old_dir);
|
||||
owner->TryAddBuffAndSetTime(owner,
|
||||
skill_meta->_number_meta->buff_id(),
|
||||
skill_meta->_number_meta->buff_time() * 1000,
|
||||
skill_meta);
|
||||
}
|
||||
);
|
||||
owner->SetMoveDir(old_dir);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user