1
This commit is contained in:
parent
9d617d6970
commit
44da536ac7
@ -462,6 +462,42 @@ void Skill::ProcJSHX()
|
|||||||
|
|
||||||
void Skill::ProcSWZB()
|
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
|
owner->GetTrigger()->AddListener
|
||||||
(
|
(
|
||||||
kPreDieEvent,
|
kPreDieEvent,
|
||||||
@ -478,35 +514,8 @@ void Skill::ProcSWZB()
|
|||||||
(
|
(
|
||||||
[sender, center, skill_meta] (const a8::Args& args) mutable
|
[sender, center, skill_meta] (const a8::Args& args) mutable
|
||||||
{
|
{
|
||||||
if (sender.Get()) {
|
Entity* e = args.Get<Entity*>(0);
|
||||||
Entity* e = args.Get<Entity*>(0);
|
_Nested::cb(sender, e, skill_meta);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
e->EnemyAndObstacleAttack
|
e->EnemyAndObstacleAttack
|
||||||
|
Loading…
x
Reference in New Issue
Block a user