1
This commit is contained in:
parent
d779c11d0f
commit
6080b7fa0a
@ -9,6 +9,7 @@
|
||||
#include "entityfactory.h"
|
||||
#include "explosion.h"
|
||||
#include "buff.h"
|
||||
#include "human.h"
|
||||
|
||||
void Skill::Initialzie()
|
||||
{
|
||||
@ -364,20 +365,40 @@ void Skill::ProcSWZB()
|
||||
[this] (const std::vector<std::any>& params)
|
||||
{
|
||||
CreatureWeakPtr sender = owner->GetWeakPtrRef();
|
||||
MetaData::Skill* skill_meta = meta;
|
||||
a8::Vec2 center = owner->GetPos();
|
||||
std::shared_ptr<Explosion> e = EntityFactory::Instance()->MakeExplosion();
|
||||
e->SetThrough(true);
|
||||
e->SetHitCb
|
||||
(
|
||||
[sender, center] (const std::vector<std::any>& params) mutable
|
||||
[sender, center, skill_meta] (const std::vector<std::any>& params) mutable
|
||||
{
|
||||
#if 0
|
||||
if (sender.Get()) {
|
||||
Entity* e = std::any_cast<Entity*>(params.at(0));
|
||||
if (e->IsCreature()) {
|
||||
|
||||
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));
|
||||
a8::Vec2 dir = sender.Get()->GetAttackDir();
|
||||
if (!dir.IsZero()) {
|
||||
a8::Vec2 target_pos = c->GetPos() +
|
||||
dir * 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);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
);
|
||||
e->EnemyAndObstacleAttack
|
||||
@ -386,7 +407,7 @@ void Skill::ProcSWZB()
|
||||
owner->GetPos(),
|
||||
SkillHelper::GetSwzbRadius(meta),
|
||||
SkillHelper::GetSwzbEffect(meta),
|
||||
SkillHelper::GetSwzbDmg(meta)
|
||||
0
|
||||
);
|
||||
}
|
||||
);
|
||||
@ -465,12 +486,19 @@ void Skill::ProcJYFH()
|
||||
kStartRescueEvent,
|
||||
[this] (const std::vector<std::any>& params)
|
||||
{
|
||||
Human* target = std::any_cast<Human*>(params.at(0));
|
||||
int buff_id = SkillHelper::GetJyfhBuffId(meta);
|
||||
float buff_time = SkillHelper::GetJyfhBuffTime(meta);
|
||||
owner->TryAddBuffAndSetTime(owner, buff_id, buff_time, meta);
|
||||
target->TryAddBuffAndSetTime(owner, buff_id, buff_time, meta);
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kEndRescueEvent,
|
||||
[this] (const std::vector<std::any>& params)
|
||||
[this, buff_id] (const std::vector<std::any>& params)
|
||||
{
|
||||
|
||||
Human* target = std::any_cast<Human*>(params.at(0));
|
||||
owner->RemoveBuffById(buff_id);
|
||||
target->RemoveBuffById(buff_id);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -192,12 +192,15 @@ int SkillHelper::GetJshxHp(Creature* c, const MetaData::Skill* skill_meta)
|
||||
|
||||
int SkillHelper::GetSwzbRadius(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return 0;
|
||||
return skill_meta->number_meta->float_range;
|
||||
}
|
||||
|
||||
int SkillHelper::GetSwzbDmg(const MetaData::Skill* skill_meta)
|
||||
int SkillHelper::GetSwzbDmg(Creature* c, const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return 0;
|
||||
float finaly_dmg =
|
||||
(skill_meta->number_meta->float_ratio +
|
||||
skill_meta->number_meta->float_ratio2 * c->GetBattleContext()->GetHeroTotalAtk());
|
||||
return finaly_dmg;
|
||||
}
|
||||
|
||||
int SkillHelper::GetSwzbEffect(const MetaData::Skill* skill_meta)
|
||||
@ -207,7 +210,17 @@ int SkillHelper::GetSwzbEffect(const MetaData::Skill* skill_meta)
|
||||
|
||||
int SkillHelper::GetSwzbPullDistance(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return 0;
|
||||
return skill_meta->number_meta->float_range2;
|
||||
}
|
||||
|
||||
int SkillHelper::GetSwzbBuffId(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return kVertigoBuffId;
|
||||
}
|
||||
|
||||
float SkillHelper::GetSwzbBuffTime(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return skill_meta->number_meta->float_time;
|
||||
}
|
||||
|
||||
void SkillHelper::ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid)
|
||||
@ -343,12 +356,12 @@ int SkillHelper::GetJyfhBuffId(const MetaData::Skill* skill_meta)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SkillHelper::GetJyfhBuffTime(const MetaData::Skill* skill_meta)
|
||||
float SkillHelper::GetJyfhBuffTime(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SkillHelper::GetJyfhDmgRuduce(const MetaData::Skill* skill_meta)
|
||||
float SkillHelper::GetJyfhDmgRuduce(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -29,9 +29,11 @@ class SkillHelper
|
||||
static int GetJshxHp(Creature* c, const MetaData::Skill* skill_meta);
|
||||
//死亡自爆
|
||||
static int GetSwzbRadius(const MetaData::Skill* skill_meta);
|
||||
static int GetSwzbDmg(const MetaData::Skill* skill_meta);
|
||||
static int GetSwzbDmg(Creature* c, const MetaData::Skill* skill_meta);
|
||||
static int GetSwzbEffect(const MetaData::Skill* skill_meta);
|
||||
static int GetSwzbPullDistance(const MetaData::Skill* skill_meta);
|
||||
static int GetSwzbBuffId(const MetaData::Skill* skill_meta);
|
||||
static float GetSwzbBuffTime(const MetaData::Skill* skill_meta);
|
||||
//野蛮冲撞
|
||||
static int GetYmczBuffTime(const MetaData::Skill* skill_meta);
|
||||
static int GetYmczReserveDistance(const MetaData::Skill* skill_meta);
|
||||
@ -41,8 +43,8 @@ class SkillHelper
|
||||
static int GetYlzRecoverHp(Creature* sender, Creature* target, const MetaData::Skill* skill_meta);
|
||||
//救援防护
|
||||
static int GetJyfhBuffId(const MetaData::Skill* skill_meta);
|
||||
static int GetJyfhBuffTime(const MetaData::Skill* skill_meta);
|
||||
static int GetJyfhDmgRuduce(const MetaData::Skill* skill_meta);
|
||||
static float GetJyfhBuffTime(const MetaData::Skill* skill_meta);
|
||||
static float GetJyfhDmgRuduce(const MetaData::Skill* skill_meta);
|
||||
|
||||
static void ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid);
|
||||
static bool ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_dmg);
|
||||
|
Loading…
x
Reference in New Issue
Block a user