aozhiwei a722f25f52 1
2023-03-17 13:12:04 +08:00

86 lines
2.6 KiB
C++

#pragma once
#include "mt/macro.h"
#include "mtb/Buff.h"
namespace a8
{
namespace lisp
{
struct Value;
}
}
class Buff;
class Creature;
namespace mt
{
DECLARE_ID_TABLE(Buff, mtb::Buff,
"buff@buff.json",
"buff_id")
public:
void Init1();
void Init2();
bool EffectCanStack() const;
bool IsImmuneBuffEffect(int buff_effect) const;
bool Match(EventAddBuff_e cond, int val) const;
float _buff_param1 = 0.0f;
float _buff_param2 = 0.0f;
float _buff_param3 = 0.0f;
float _buff_param4 = 0.0f;
float _buff_param5 = 0.0f;
float _buff_param6 = 0.0f;
int _int_buff_param1 = 0;
int _int_buff_param2 = 0;
int _int_buff_param3 = 0;
int _int_buff_param4 = 0;
int _int_buff_param5 = 0;
int _int_buff_param6 = 0;
std::vector<int> _buff_param1_int_list;
std::vector<int> _buff_param2_int_list;
std::set<int> _buff_param1_int_set;
std::set<int> _buff_param2_int_set;
std::vector<int> _buff_param3_int_list;
std::vector<int> _buff_param4_int_list;
std::vector<std::tuple<int, std::vector<std::tuple<int, int>>>> _batch_add_list;
std::vector<std::tuple<int, std::vector<int>>> _post_remove_action;
std::set<int> _immune_buffeffect;
std::vector<std::tuple<int, float, float, int, int, int>> _hero_infos;
std::set<int> _tags;
long long _only_spec_race = 0;
long long _exclude_spec_race = 0;
std::vector<int> _effect_list;
float _res_scale;
std::vector<int> _child_buff_list;
float GetDurationTime(::Buff* buff) const;
float GetBuffParam1(::Buff* buff) const;
float GetBuffParam2(::Buff* buff) const;
float GetBuffParam3(::Buff* buff) const;
float GetBuffParam4(::Buff* buff) const;
float GetBuffParam5(::Buff* buff) const;
float GetBuffParam6(::Buff* buff) const;
float GetResScale(::Buff* buff) const;
private:
float _duration_time = 0.0f;
std::shared_ptr<a8::lisp::Value> _duration_time_expr;
std::shared_ptr<a8::lisp::Value> _buff_param1_expr;
std::shared_ptr<a8::lisp::Value> _buff_param2_expr;
std::shared_ptr<a8::lisp::Value> _buff_param3_expr;
std::shared_ptr<a8::lisp::Value> _buff_param4_expr;
std::shared_ptr<a8::lisp::Value> _buff_param5_expr;
std::shared_ptr<a8::lisp::Value> _buff_param6_expr;
std::shared_ptr<a8::lisp::Value> _res_scale_expr;
std::string duration_time() const;
};
}