This commit is contained in:
aozhiwei 2023-01-02 13:52:55 +08:00
parent fc2b19827b
commit ccd5f340e0

View File

@ -1066,57 +1066,60 @@ void Skill::ProcShotPhase(const mt::SkillPhase* phase)
void Skill::ProcForthBackJumpPhase(const mt::SkillPhase* phase) void Skill::ProcForthBackJumpPhase(const mt::SkillPhase* phase)
{ {
if (GetMinorType() != SMT_NONE) {
return;
}
glm::vec3 old_dir = owner->GetMoveDir(); glm::vec3 old_dir = owner->GetMoveDir();
Position old_pos = owner->GetPos(); Position old_pos = owner->GetPos();
if (GetMinorType() == SMT_NONE) {
int buff_id1 = phase->param3_ints.size() > 0 ? phase->param3_ints[0] : 0; 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_id2 = phase->param3_ints.size() > 1 ? phase->param3_ints[1] : 0;
int buff_id3 = phase->param3_ints.size() > 2 ? phase->param3_ints[2] : 0; int buff_id3 = phase->param3_ints.size() > 2 ? phase->param3_ints[2] : 0;
const mt::Skill* skill_meta = meta; const mt::Skill* skill_meta = meta;
owner->TryAddBuff(owner, buff_id1); owner->TryAddBuff(owner, buff_id1);
int land_effect_buff_uniid = owner->TryAddBuffAndSetTime int land_effect_buff_uniid = owner->TryAddBuffAndSetTime
(owner, (owner,
buff_id3, buff_id3,
skill_meta->_number_meta->_float_time * 1000); skill_meta->_number_meta->_float_time * 1000);
#ifdef DEBUG #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 #endif
owner->ForwardMove(SkillHelper::GetSjydhxForthDistance(meta)); owner->ForwardMove(SkillHelper::GetSjydhxForthDistance(meta));
float recover_hp = SkillHelper::GetSjydhxRecoverHp(owner, meta); float recover_hp = SkillHelper::GetSjydhxRecoverHp(owner, meta);
owner->AddHp(recover_hp); owner->AddHp(recover_hp);
glm::vec3 pre_dir = old_dir; glm::vec3 pre_dir = old_dir;
Position pre_pos = old_pos; Position pre_pos = old_pos;
#ifdef DEBUG #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 #endif
AddMinorMode AddMinorMode
( (
SMT_BLINK, SMT_BLINK,
#if 1 #if 1
skill_meta->_number_meta->_float_time * 1000, skill_meta->_number_meta->_float_time * 1000,
#else #else
phase->param2.GetInt() * 1000, phase->param2.GetInt() * 1000,
#endif #endif
[this, pre_pos, pre_dir, buff_id1, buff_id2, buff_id3, land_effect_buff_uniid, [this, pre_pos, pre_dir, buff_id1, buff_id2, buff_id3, land_effect_buff_uniid,
skill_meta] () { skill_meta] () {
glm::vec3 old_dir = owner->GetMoveDir(); glm::vec3 old_dir = owner->GetMoveDir();
Position old_pos = owner->GetPos(); Position old_pos = owner->GetPos();
float distance = owner->GetPos().Distance2D2(pre_pos); float distance = owner->GetPos().Distance2D2(pre_pos);
owner->RemoveBuffByUniId(land_effect_buff_uniid); owner->RemoveBuffByUniId(land_effect_buff_uniid);
if (distance > 0.0001f) { if (distance > 0.0001f) {
glm::vec3 new_dir = owner->GetPos().CalcDir(pre_pos); glm::vec3 new_dir = owner->GetPos().CalcDir(pre_pos);
GlmHelper::Normalize(new_dir); GlmHelper::Normalize(new_dir);
owner->SetMoveDir(new_dir); owner->SetMoveDir(new_dir);
owner->TryAddBuff(owner, buff_id2); owner->TryAddBuff(owner, buff_id2);
owner->ForwardMove(distance); 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);
} owner->TryAddBuffAndSetTime(owner,
skill_meta->_number_meta->buff_id(),
skill_meta->_number_meta->buff_time() * 1000,
skill_meta);
}
);
owner->SetMoveDir(old_dir); owner->SetMoveDir(old_dir);
} }