1
This commit is contained in:
parent
39b88f1bbd
commit
b339893d9f
@ -18,6 +18,7 @@
|
||||
#include "roomobstacle.h"
|
||||
#include "car.h"
|
||||
#include "creature.h"
|
||||
#include "skillhelper.h"
|
||||
|
||||
Bullet::Bullet():MoveableEntity()
|
||||
{
|
||||
@ -845,11 +846,14 @@ void Bullet::TriggerHitBuff(Entity* e)
|
||||
for (int buff_id : gun_meta->hit_buff_list) {
|
||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
||||
if (buff_meta) {
|
||||
c->AddBuff(
|
||||
sender.Get(),
|
||||
buff_meta,
|
||||
skill_meta
|
||||
);
|
||||
int buff_uniid = c->AddBuff(
|
||||
sender.Get(),
|
||||
buff_meta,
|
||||
skill_meta
|
||||
);
|
||||
if (skill_meta && buff_uniid) {
|
||||
SkillHelper::ProcBulletHitBuff(this, c, buff_uniid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2093,7 +2093,7 @@ void Creature::Shot(a8::Vec2& target_dir, bool& shot_ok, float fly_distance, int
|
||||
InternalShot(this,
|
||||
GetCurrWeapon()->meta,
|
||||
GetCurrWeapon()->bullet_meta,
|
||||
nullptr,
|
||||
GetCurrWeapon()->skill_meta,
|
||||
fly_distance,
|
||||
GetCurrWeapon()->weapon_uniid,
|
||||
trace_target_uniid);
|
||||
|
@ -1,6 +1,12 @@
|
||||
#include "precompile.h"
|
||||
|
||||
#include "skillhelper.h"
|
||||
#include "creature.h"
|
||||
#include "buff.h"
|
||||
#include "bullet.h"
|
||||
#include "skill.h"
|
||||
#include "metadata.h"
|
||||
#include "room.h"
|
||||
|
||||
std::map<int, int> SkillHelper::magic_skill_hash_;
|
||||
std::map<int, int> SkillHelper::skill_magic_hash_;
|
||||
@ -190,3 +196,33 @@ int SkillHelper::GetSwzbPullDistance(const MetaData::Skill* skill_meta)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SkillHelper::ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid)
|
||||
{
|
||||
Buff* buff = c->GetBuffByUniId(buff_uniid);
|
||||
if (!buff) {
|
||||
return;
|
||||
}
|
||||
auto skill_meta = bullet->skill_meta;
|
||||
if (!skill_meta) {
|
||||
return;
|
||||
}
|
||||
switch (skill_meta->GetMagicId()) {
|
||||
case MAGIC_AXXF:
|
||||
{
|
||||
if (buff->meta->i->buff_id() == 201011 &&
|
||||
buff->meta->i->buff_effect() == kBET_Vertigo) {
|
||||
c->room->xtimer.ModifyTimer
|
||||
(buff->remover_timer,
|
||||
skill_meta->number_meta->int_time / FRAME_RATE_MS);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,8 @@ namespace MetaData
|
||||
struct Skill;
|
||||
};
|
||||
|
||||
class Bullet;
|
||||
class Creature;
|
||||
class SkillHelper
|
||||
{
|
||||
public:
|
||||
@ -26,6 +28,8 @@ class SkillHelper
|
||||
static int GetSwzbEffect(const MetaData::Skill* skill_meta);
|
||||
static int GetSwzbPullDistance(const MetaData::Skill* skill_meta);
|
||||
|
||||
static void ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid);
|
||||
|
||||
private:
|
||||
|
||||
static std::map<int, int> magic_skill_hash_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user