From 2be0891fafac31f2d0035deb173b995fa3ab877e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 Mar 2023 14:02:26 +0800 Subject: [PATCH] 1 --- server/gameserver/lispenv.cc | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/server/gameserver/lispenv.cc b/server/gameserver/lispenv.cc index b5fb10bc..c6544cc2 100644 --- a/server/gameserver/lispenv.cc +++ b/server/gameserver/lispenv.cc @@ -84,23 +84,29 @@ public: void Transform(std::shared_ptr parent_node, std::shared_ptr node) { if (node->IsType(a8::lisp::ValueType::kSymbol)) { + auto func_call_exprs = std::make_shared(); + auto&& symbol = std::any_cast(node->value); int idx = mt::SkillNumber::GetAttrIdxByName(symbol.name); if (idx < 0) { - abort(); - } - auto func_call_exprs = std::make_shared(); - { - auto cproc = Find("!getSkillNumber"); + auto cproc = Find(symbol.name); if (!cproc) { abort(); } - if (!cproc->IsType(a8::lisp::ValueType::kCProc)) { - abort(); - } func_call_exprs->push_back(cproc); - func_call_exprs->push_back - (std::make_shared(a8::lisp::Atom(idx))); + } else { + { + auto cproc = Find("!getSkillNumber"); + if (!cproc) { + abort(); + } + if (!cproc->IsType(a8::lisp::ValueType::kCProc)) { + abort(); + } + func_call_exprs->push_back(cproc); + func_call_exprs->push_back + (std::make_shared(a8::lisp::Atom(idx))); + } } if (parent_node && parent_node->IsType(a8::lisp::ValueType::kList) &&