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