aozhiwei cce7549812 1
2021-07-08 09:37:14 +00:00

42 lines
1004 B
C++

#pragma once
namespace MetaData
{
struct Buff;
};
class Weapon;
class Creature;
class Skill;
class Buff;
class Trigger
{
public:
Trigger(Creature* owner) { owner_ = owner; };
void Init();
void UnInit();
Creature* GetOwner() { return owner_; };
void TakeonWeapon(Weapon* old_weapon, Weapon* new_weapon);
void Shot(MetaData::Equip* weapon_meta);
void Kill(Creature* target);
void UseItemAction(int slot_id);
void UseSkill(Skill* skill);
void HpChg();
void ReceiveDmg();
void Die();
void ActiveBuff(MetaData::Buff* buff_meta);
void DeactiveBuff(MetaData::Buff* buff_meta);
private:
void TraverseCondBuffs(int cond, std::function<void (Buff*, bool&)> func);
void TriggeCondBuffAll(int cond);
void TryAddBuffs(int cond, std::vector<int>& buffids);
void AddBuffs(int cond, std::vector<int>& buffids);
void RemoveBuffs(int cond, std::vector<int>& buffids);
private:
Creature* owner_ = nullptr;
int kill_num_ = 0;
};