This commit is contained in:
aozhiwei 2022-12-30 11:38:52 +08:00
parent 9d617d6970
commit 44da536ac7

View File

@ -462,6 +462,42 @@ void Skill::ProcJSHX()
void Skill::ProcSWZB()
{
struct _Nested
{
static void cb(CreatureWeakPtr sender, Entity* e, const mt::Skill* skill_meta)
{
if (sender.Get()) {
if (e->IsCreature(sender.Get()->room)) {
Creature* c = (Creature*)e;
if (c->IsInvincible()) {
return;
}
if (c->dead) {
return;
}
float dmg = SkillHelper::GetSwzbDmg(sender.Get(), skill_meta);
c->DecHP(dmg,
VP_Explosion,
"",
SkillHelper::GetSwzbEffect(skill_meta),
sender.Get()->GetUniId(),
sender.Get()->GetName());
glm::vec3 dir = sender.Get()->GetAttackDir();
if (!GlmHelper::IsZero(dir)) {
// 999
glm::vec3 target_pos = c->GetPos().ToGlmVec3() +
dir * (float)(SkillHelper::GetSwzbPullDistance(skill_meta));
c->PullTarget(target_pos);
}
int buff_id = SkillHelper::GetSwzbBuffId(skill_meta);
float buff_time = SkillHelper::GetSwzbBuffTime(skill_meta);
c->TryAddBuffAndSetTime(sender.Get(), buff_id, buff_time);
}
}
}
};
owner->GetTrigger()->AddListener
(
kPreDieEvent,
@ -478,35 +514,8 @@ void Skill::ProcSWZB()
(
[sender, center, skill_meta] (const a8::Args& args) mutable
{
if (sender.Get()) {
Entity* e = args.Get<Entity*>(0);
if (e->IsCreature(sender.Get()->room)) {
Creature* c = (Creature*)e;
if (c->IsInvincible()) {
return;
}
if (c->dead) {
return;
}
float dmg = SkillHelper::GetSwzbDmg(sender.Get(), skill_meta);
c->DecHP(dmg,
VP_Explosion,
"",
SkillHelper::GetSwzbEffect(skill_meta),
sender.Get()->GetUniId(),
sender.Get()->GetName());
glm::vec3 dir = sender.Get()->GetAttackDir();
if (!GlmHelper::IsZero(dir)) {
// 999
glm::vec3 target_pos = c->GetPos().ToGlmVec3() +
dir * (float)(SkillHelper::GetSwzbPullDistance(skill_meta));
c->PullTarget(target_pos);
}
int buff_id = SkillHelper::GetSwzbBuffId(skill_meta);
float buff_time = SkillHelper::GetSwzbBuffTime(skill_meta);
c->TryAddBuffAndSetTime(sender.Get(), buff_id, buff_time);
}
}
Entity* e = args.Get<Entity*>(0);
_Nested::cb(sender, e, skill_meta);
}
);
e->EnemyAndObstacleAttack