This commit is contained in:
aozhiwei 2023-06-17 11:16:16 +08:00
parent e1c0fa6612
commit 8095e7c3d7
7 changed files with 88 additions and 24 deletions

View File

@ -167,21 +167,10 @@ void CallFuncBuff::Activate()
owner->room->frame_event.AddHpChg(owner->GetWeakPtrRef());
}
break;
case BuffCallFunc_e::kSummonCarSpecPointAnyOper:
case BuffCallFunc_e::kSummonCarSpecPoint:
{
SummonCarSpecPoint(0);
SummonCarSpecPoint();
}
break;
case BuffCallFunc_e::kSummonCarSpecPointTeamOper:
{
SummonCarSpecPoint(1);
}
break;
case BuffCallFunc_e::kSummonCarSpecPointOnlyOper:
{
SummonCarSpecPoint(2);
}
break;
default:
{
}
@ -886,20 +875,25 @@ void CallFuncBuff::ProcAddMaxHp()
}
}
void CallFuncBuff::SummonCarSpecPoint(int oper_type)
void CallFuncBuff::SummonCarSpecPoint()
{
float delay_time = meta->GetBuffParam2(this);
int oper = meta->GetBuffParam3(this);
float x = meta->GetBuffParam4(this);
float y = meta->GetBuffParam5(this);
float z = meta->GetBuffParam6(this);
int oper_type = meta->GetBuffParam3(this);
int oper = meta->GetBuffParam4(this);
int car_id = meta->GetBuffParam5(this);
float x = meta->GetBuffParam6(this);
float y = meta->GetBuffParam7(this);
float z = meta->GetBuffParam8(this);
owner->room->xtimer.SetTimeoutWpEx
(
delay_time / FRAME_RATE_MS,
[room = owner->room, delay_time, oper_type, oper, x, y, z]
[room = owner->room, delay_time, oper_type, car_id, oper, x, y, z]
(int event, const a8::Args* args) mutable
{
if (a8::TIMER_DELETE_EVENT == event) {
if (!room->IsGameOver()) {
}
}
},
&owner->room->xtimer_attacher_);

View File

@ -27,9 +27,7 @@ A8_DECLARE_CLASS_ENUM(BuffCallFunc_e, int,
kDecSkillCd = 27,
kRefreshHp = 28,
kAddMaxHp = 29,
kSummonCarSpecPointAnyOper = 30,
kSummonCarSpecPointTeamOper = 31,
kSummonCarSpecPointOnlyOper = 32,
kSummonCarSpecPoint = 30,
);
@ -59,7 +57,7 @@ class CallFuncBuff : public Buff
void SummonObstacleSpecDistance();
void ClearSummonObstacle();
void DecSkillCd();
void SummonCarSpecPoint(int oper_type);
void SummonCarSpecPoint();
float hold_param2_ = 0.0;
Weapon* hold_weapon_ = nullptr;

View File

@ -20,12 +20,16 @@ namespace mt
_buff_param4 = a8::XValue(buff_param4()).GetDouble();
_buff_param5 = a8::XValue(buff_param5()).GetDouble();
_buff_param6 = a8::XValue(buff_param6()).GetDouble();
_buff_param7 = a8::XValue(buff_param7()).GetDouble();
_buff_param8 = a8::XValue(buff_param8()).GetDouble();
_int_buff_param1 = a8::XValue(buff_param1());
_int_buff_param2 = a8::XValue(buff_param2());
_int_buff_param3 = a8::XValue(buff_param3());
_int_buff_param4 = a8::XValue(buff_param4());
_int_buff_param5 = a8::XValue(buff_param5());
_int_buff_param6 = a8::XValue(buff_param6());
_int_buff_param7 = a8::XValue(buff_param7());
_int_buff_param8 = a8::XValue(buff_param8());
_res_scale = a8::XValue(res_scale()).GetDouble();
{
std::vector<std::string> strings;
@ -101,6 +105,22 @@ namespace mt
_buff_param6_int_set.insert(a8::XValue(str).GetInt());
}
}
{
std::vector<std::string> strings;
a8::Split(buff_param7(), strings, '|');
for (auto& str : strings) {
_buff_param7_int_list.push_back(a8::XValue(str).GetInt());
_buff_param7_int_set.insert(a8::XValue(str).GetInt());
}
}
{
std::vector<std::string> strings;
a8::Split(buff_param8(), strings, '|');
for (auto& str : strings) {
_buff_param8_int_list.push_back(a8::XValue(str).GetInt());
_buff_param8_int_set.insert(a8::XValue(str).GetInt());
}
}
{
std::vector<std::string> strings;
a8::Split(only_spec_race(), strings, '|');
@ -156,6 +176,12 @@ namespace mt
if (a8::lisp::Expr::MaybeExpr(buff_param6())) {
_buff_param6_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param6());
}
if (a8::lisp::Expr::MaybeExpr(buff_param7())) {
_buff_param7_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param7());
}
if (a8::lisp::Expr::MaybeExpr(buff_param8())) {
_buff_param8_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param8());
}
if (a8::lisp::Expr::MaybeExpr(res_scale())) {
_res_scale_expr = LispEnv::Instance()->CompileSkillNumberExpr(res_scale());
}
@ -491,6 +517,30 @@ namespace mt
return _buff_param6;
}
float Buff::GetBuffParam7(::Buff* buff) const
{
if (_buff_param7_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param7_expr,
buff
);
}
return _buff_param7;
}
float Buff::GetBuffParam8(::Buff* buff) const
{
if (_buff_param8_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param8_expr,
buff
);
}
return _buff_param8;
}
float Buff::GetResScale(::Buff* buff) const
{
if (_res_scale_expr) {

View File

@ -34,24 +34,32 @@ namespace mt
float _buff_param4 = 0.0f;
float _buff_param5 = 0.0f;
float _buff_param6 = 0.0f;
float _buff_param7 = 0.0f;
float _buff_param8 = 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;
int _int_buff_param7 = 0;
int _int_buff_param8 = 0;
std::vector<int> _buff_param1_int_list;
std::vector<int> _buff_param2_int_list;
std::vector<int> _buff_param3_int_list;
std::vector<int> _buff_param4_int_list;
std::vector<int> _buff_param5_int_list;
std::vector<int> _buff_param6_int_list;
std::vector<int> _buff_param7_int_list;
std::vector<int> _buff_param8_int_list;
std::set<int> _buff_param1_int_set;
std::set<int> _buff_param2_int_set;
std::set<int> _buff_param3_int_set;
std::set<int> _buff_param4_int_set;
std::set<int> _buff_param5_int_set;
std::set<int> _buff_param6_int_set;
std::set<int> _buff_param7_int_set;
std::set<int> _buff_param8_int_set;
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;
@ -72,6 +80,8 @@ namespace mt
float GetBuffParam4(::Buff* buff) const;
float GetBuffParam5(::Buff* buff) const;
float GetBuffParam6(::Buff* buff) const;
float GetBuffParam7(::Buff* buff) const;
float GetBuffParam8(::Buff* buff) const;
float GetBuffInterval(::Buff* buff) const;
float GetResScale(::Buff* buff) const;
bool HasBuffInterval() const;
@ -86,6 +96,8 @@ namespace mt
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> _buff_param7_expr;
std::shared_ptr<a8::lisp::Value> _buff_param8_expr;
std::shared_ptr<a8::lisp::Value> _res_scale_expr;
std::shared_ptr<a8::lisp::Value> _buff_interval_expr;

View File

@ -21,6 +21,8 @@ namespace mtb
const std::string buff_param4() const { return buff_param4_; };
const std::string buff_param5() const { return buff_param5_; };
const std::string buff_param6() const { return buff_param6_; };
const std::string buff_param7() const { return buff_param7_; };
const std::string buff_param8() const { return buff_param8_; };
const std::string duration_time() const { return duration_time_; };
float buff_valueup() const { return buff_valueup_; };
const std::string immune_buffeffect_list() const { return immune_buffeffect_list_; };
@ -83,6 +85,8 @@ namespace mtb
bool has_effect_list() const { return __flags__.test(33);};
bool has_res_scale() const { return __flags__.test(34);};
bool has_tenacity() const { return __flags__.test(35);};
bool has_buff_param7() const { return __flags__.test(36);};
bool has_buff_param8() const { return __flags__.test(37);};
protected:
@ -97,6 +101,8 @@ namespace mtb
std::string buff_param4_;
std::string buff_param5_;
std::string buff_param6_;
std::string buff_param7_;
std::string buff_param8_;
std::string duration_time_;
float buff_valueup_ = 0.0f;
std::string immune_buffeffect_list_;
@ -124,7 +130,7 @@ namespace mtb
int tenacity_ = 0;
public:
std::bitset<36> __flags__;
std::bitset<38> __flags__;
};
};

View File

@ -490,6 +490,8 @@ namespace mtb
meta_class->SetSimpleField(33, "effect_list", a8::reflect::ET_STRING, my_offsetof2(Buff, effect_list_));
meta_class->SetSimpleField(34, "res_scale", a8::reflect::ET_STRING, my_offsetof2(Buff, res_scale_));
meta_class->SetSimpleField(35, "tenacity", a8::reflect::ET_INT32, my_offsetof2(Buff, tenacity_));
meta_class->SetSimpleField(36, "buff_param6", a8::reflect::ET_STRING, my_offsetof2(Buff, buff_param7_));
meta_class->SetSimpleField(37, "buff_param6", a8::reflect::ET_STRING, my_offsetof2(Buff, buff_param8_));
}
return meta_class;
}

View File

@ -368,6 +368,8 @@ message Buff
required string buff_param4 = 9;
optional string buff_param5 = 19;
optional string buff_param6 = 37;
optional string buff_param7 = 38;
optional string buff_param8 = 39;
required string duration_time = 10;
optional float buff_valueup = 11;
required string immune_buffeffect_list = 12;