86 lines
2.6 KiB
C++
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;
|
|
|
|
};
|
|
|
|
}
|