1
This commit is contained in:
parent
9d617d6970
commit
44da536ac7
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user