1
This commit is contained in:
parent
6f05e7b3ee
commit
95268cba51
@ -2452,6 +2452,9 @@ void Creature::SummonObstacle(Buff* buff, int id, const a8::Vec2& target_pos)
|
||||
}
|
||||
obstacle->context_ability = context_ability;
|
||||
slave_things_.push_back(std::make_tuple(buff->meta->i->buff_id(), obstacle));
|
||||
if (buff->skill_meta) {
|
||||
SkillHelper::ProcSummonObstacle(buff->skill_meta, obstacle);
|
||||
}
|
||||
#ifdef DEBUG
|
||||
SendDebugMsg(a8::Format("召唤物件 buff_id:%d thing_id:%d pos:%f,%f target_pos:%f,%f",
|
||||
{buff->meta->i->buff_id(),
|
||||
|
@ -1053,12 +1053,12 @@ namespace MetaData
|
||||
}
|
||||
}
|
||||
|
||||
int Skill::GetMagicId()
|
||||
int Skill::GetMagicId() const
|
||||
{
|
||||
return magic_id;
|
||||
}
|
||||
|
||||
bool Skill::IsTurnOverSkill()
|
||||
bool Skill::IsTurnOverSkill() const
|
||||
{
|
||||
return !phases.empty() && phases[0].func_id == kSkill_TurnOver;
|
||||
}
|
||||
|
@ -318,8 +318,8 @@ namespace MetaData
|
||||
std::set<int> buff_list;
|
||||
std::map<int, std::set<MetaData::Buff*>> trigger_type_buffs;
|
||||
std::vector<MetaData::SkillPhase> phases;
|
||||
bool IsTurnOverSkill();
|
||||
int GetMagicId();
|
||||
bool IsTurnOverSkill() const;
|
||||
int GetMagicId() const;
|
||||
private:
|
||||
int magic_id = 0;
|
||||
int base_skill_id = 0;
|
||||
|
@ -362,7 +362,7 @@ void RoomObstacle::Active()
|
||||
break;
|
||||
}
|
||||
if (meta->i->life_time() > 0) {
|
||||
room->xtimer.AddDeadLineTimerAndAttach
|
||||
xtimer_list* timer = room->xtimer.AddDeadLineTimerAndAttach
|
||||
(
|
||||
meta->i->life_time() / FRAME_RATE_MS,
|
||||
a8::XParams()
|
||||
@ -374,6 +374,7 @@ void RoomObstacle::Active()
|
||||
},
|
||||
&xtimer_attacher.timer_list_
|
||||
);
|
||||
life_time_timer = room->xtimer.GetTimerPtr(timer);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,7 @@ class RoomObstacle : public Obstacle
|
||||
MetaData::Buff* buff_meta = nullptr;
|
||||
MetaData::Skill* skill_meta = nullptr;
|
||||
long long born_frameno = 0;
|
||||
std::weak_ptr<a8::XTimerPtr> life_time_timer;
|
||||
|
||||
virtual ~RoomObstacle() override;
|
||||
virtual void Initialize() override;
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "skill.h"
|
||||
#include "metadata.h"
|
||||
#include "room.h"
|
||||
#include "roomobstacle.h"
|
||||
|
||||
std::map<int, int> SkillHelper::magic_skill_hash_;
|
||||
std::map<int, int> SkillHelper::skill_magic_hash_;
|
||||
@ -282,3 +283,26 @@ bool SkillHelper::ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void SkillHelper::ProcSummonObstacle(const MetaData::Skill* skill_meta, RoomObstacle* ob)
|
||||
{
|
||||
if (!skill_meta || skill_meta->number_meta) {
|
||||
return;
|
||||
}
|
||||
switch (skill_meta->GetMagicId()) {
|
||||
case MAGIC_WLFB:
|
||||
case MAGIC_YLZ:
|
||||
{
|
||||
if (!ob->life_time_timer.expired()) {
|
||||
ob->room->xtimer.ModifyTimer(ob->life_time_timer,
|
||||
skill_meta->number_meta->float_time * 1000 / FRAME_RATE_MS);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ namespace MetaData
|
||||
|
||||
class Bullet;
|
||||
class Creature;
|
||||
class RoomObstacle;
|
||||
class SkillHelper
|
||||
{
|
||||
public:
|
||||
@ -36,6 +37,7 @@ class SkillHelper
|
||||
|
||||
static void ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid);
|
||||
static bool ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_dmg);
|
||||
static void ProcSummonObstacle(const MetaData::Skill* skill_meta, RoomObstacle* ob);
|
||||
|
||||
private:
|
||||
|
||||
|
2
third_party/a8engine
vendored
2
third_party/a8engine
vendored
@ -1 +1 @@
|
||||
Subproject commit cf4607dd902bcca2ec8e849b51a1968ffb2dc0ca
|
||||
Subproject commit 9d9efccd69f5a81ac2905617d2fe4d197394f27c
|
Loading…
x
Reference in New Issue
Block a user