This commit is contained in:
aozhiwei 2023-11-08 13:46:11 +08:00
parent d559f5cd08
commit f8e24a2c7c

View File

@ -278,6 +278,51 @@ public:
}
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});
RegisterCProc
(
"caster.get_skill_local_var",
[this] (const a8::lisp::List& params) -> std::shared_ptr<a8::lisp::Value>
{
double result = 0.0f;
if (params->size() == 1) {
a8::lisp::Atom atom_idx = std::any_cast<a8::lisp::Atom>(params->at(0)->value);
if (context_.buff->GetCaster().Get() && context_.buff->skill_meta) {
result = context_.buff->GetCaster().Get()->GetSkillLocalVar
(context_.buff->skill_meta->skill_id(),
atom_idx.val);
}
} else {
#ifdef DEBUG
abort();
#endif
}
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});
RegisterCProc
(
"caster.set_skill_local_var",
[this] (const a8::lisp::List& params) -> std::shared_ptr<a8::lisp::Value>
{
double result = 0.0f;
if (params->size() == 2) {
a8::lisp::Atom atom_idx = std::any_cast<a8::lisp::Atom>(params->at(0)->value);
a8::lisp::Atom atom_val = std::any_cast<a8::lisp::Atom>(params->at(1)->value);
if (context_.buff->GetCaster().Get() && context_.buff->skill_meta) {
context_.buff->GetCaster().Get()->SetSkillLocalVar
(context_.buff->skill_meta->skill_id(),
atom_idx.val,
atom_val.val);
}
} else {
#ifdef DEBUG
abort();
#endif
}
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});
}
float Eval(std::shared_ptr<a8::lisp::Value> expr,