This commit is contained in:
aozhiwei 2023-03-05 11:48:18 +08:00
parent 47b43aca61
commit 19f4c24f97
2 changed files with 54 additions and 7 deletions

View File

@ -105,6 +105,13 @@ namespace mt
_tags.insert(a8::XValue(str).GetInt()); _tags.insert(a8::XValue(str).GetInt());
} }
} }
{
if (a8::lisp::Expr::MaybeExpr(duration_time())) {
_duration_time_expr = LispEnv::Instance()->CompileSkillNumberExpr(duration_time());
} else {
_duration_time = a8::XValue(duration_time()).GetDouble();
}
}
{ {
std::vector<std::string> strings; std::vector<std::string> strings;
a8::Split(post_remove_action(), strings, '|'); a8::Split(post_remove_action(), strings, '|');
@ -331,32 +338,72 @@ namespace mt
skill_meta skill_meta
); );
} }
return 0.0f; return _duration_time;
} }
float Buff::GetBuffParam1(Creature* c, const mt::Skill* skill_meta) const float Buff::GetBuffParam1(Creature* c, const mt::Skill* skill_meta) const
{ {
if (_buff_param1_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param1_expr,
c,
skill_meta
);
}
return _buff_param1;
} }
float Buff::GetBuffParam2(Creature* c, const mt::Skill* skill_meta) const float Buff::GetBuffParam2(Creature* c, const mt::Skill* skill_meta) const
{ {
if (_buff_param2_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param2_expr,
c,
skill_meta
);
}
return _buff_param2;
} }
float Buff::GetBuffParam3(Creature* c, const mt::Skill* skill_meta) const float Buff::GetBuffParam3(Creature* c, const mt::Skill* skill_meta) const
{ {
if (_buff_param3_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param3_expr,
c,
skill_meta
);
}
return _buff_param3;
} }
float Buff::GetBuffParam4(Creature* c, const mt::Skill* skill_meta) const float Buff::GetBuffParam4(Creature* c, const mt::Skill* skill_meta) const
{ {
if (_buff_param4_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param4_expr,
c,
skill_meta
);
}
return _buff_param4;
} }
float Buff::GetBuffParam5(Creature* c, const mt::Skill* skill_meta) const float Buff::GetBuffParam5(Creature* c, const mt::Skill* skill_meta) const
{ {
if (_buff_param5_expr) {
return LispEnv::Instance()->EvalSkillNumberExpr
(
_buff_param5_expr,
c,
skill_meta
);
}
return _buff_param5;
} }
std::string Buff::duration_time() const std::string Buff::duration_time() const

2
third_party/a8 vendored

@ -1 +1 @@
Subproject commit c4610bed765a4b0fea47ef34dc9ecf8fbcaf3e68 Subproject commit abee0bed17773019250dc4ed042fa8fd8763cf23