From ddd9fc18a133675db25e0c4372d5671bc4850f3e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 Mar 2023 15:04:22 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/sprint.cc | 29 ----------------------------- server/gameserver/creature.cc | 6 ++++++ server/gameserver/lispenv.cc | 13 +++---------- server/gameserver/mtb/Buff.h | 11 +++++++---- server/gameserver/mtb/mtb.all.cc | 9 +++++---- server/tools/protobuild/mt.proto | 1 + 6 files changed, 22 insertions(+), 47 deletions(-) diff --git a/server/gameserver/buff/sprint.cc b/server/gameserver/buff/sprint.cc index 39a9fe17..dd116fdb 100644 --- a/server/gameserver/buff/sprint.cc +++ b/server/gameserver/buff/sprint.cc @@ -179,32 +179,3 @@ void SprintBuff::OnEnemyHit(Creature* enemy) enemy->TryAddBuff(owner, buff_id, skill_meta); } } - -#if 0 -void SprintBuff::ProcXiongHun() -{ - owner->TryAddBuff(owner, 209016); - owner->GetAbility()->DelSpeedAddition(skill_meta->_number_meta->_float_speed); - owner->room->grid_service->TraverseCreatures - (owner->room->GetRoomIdx(), - owner->GetGridList(), - [this] (Creature* c, bool& stop) - { - if (c->dead) { - return; - } - if (!owner->IsProperTarget(c)) { - return; - } - if (Collision::CheckCC(owner, - skill_meta->_number_meta->_float_range3, - c, - c->GetHitRadius())) { - c->TryAddBuffAndSetTime(owner, - kVertigoEffectBuffId, - skill_meta->_number_meta->_float_time * SERVER_FRAME_RATE); - } - } - ); -} -#endif diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 873222fe..9c8d1d3b 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -261,6 +261,9 @@ int Creature::AddBuff(Creature* caster, if (buff->meta->lock_dir()) { IncDisableAttackDirTimes(); } + if (buff->meta->lock_move_dir()) { + IncDisableMoveDirTimes(); + } if (buff->meta->disable_shot()) { GetAbility()->IncDisableShotTimes(); } @@ -645,6 +648,9 @@ void Creature::OnBuffRemove(Buff& buff) if (buff.meta->lock_dir()) { DecDisableAttackDirTimes(); } + if (buff.meta->lock_move_dir()) { + DecDisableMoveDirTimes(); + } if (buff.meta->disable_shot()) { GetAbility()->DecDisableShotTimes(); } diff --git a/server/gameserver/lispenv.cc b/server/gameserver/lispenv.cc index e42c855d..fce58668 100644 --- a/server/gameserver/lispenv.cc +++ b/server/gameserver/lispenv.cc @@ -30,7 +30,7 @@ public: }); RegisterCProc ( - "!myself.get_hero_atk", + "myself.get_hero_atk", [this] (const a8::lisp::List& params) -> std::shared_ptr { double result = context_.buff->owner->GetBattleContext()->GetHeroTotalAtk(); @@ -38,7 +38,7 @@ public: }); RegisterCProc ( - "!caster.get_hero_atk", + "caster.get_hero_atk", [this] (const a8::lisp::List& params) -> std::shared_ptr { double result = 0.0f; @@ -90,14 +90,7 @@ public: auto&& symbol = std::any_cast(node->value); int idx = mt::SkillNumber::GetAttrIdxByName(symbol.name); if (idx < 0) { - auto cproc = Find("!" + symbol.name); - if (!cproc) { - abort(); - } - if (!cproc->IsType(a8::lisp::ValueType::kCProc)) { - abort(); - } - func_call_exprs->push_back(cproc); + abort(); } else { { auto cproc = Find("!getSkillNumber"); diff --git a/server/gameserver/mtb/Buff.h b/server/gameserver/mtb/Buff.h index da8e3435..d2602ce5 100644 --- a/server/gameserver/mtb/Buff.h +++ b/server/gameserver/mtb/Buff.h @@ -39,6 +39,7 @@ namespace mtb int no_immune() const { return no_immune_; }; int lock_move() const { return lock_move_; }; int lock_dir() const { return lock_dir_; }; + int lock_move_dir() const { return lock_move_dir_; }; int disable_shot() const { return disable_shot_; }; int disable_useskill() const { return disable_useskill_; }; const std::string effect_list() const { return effect_list_; }; @@ -72,9 +73,10 @@ namespace mtb bool has_no_immune() const { return __flags__.test(26);}; bool has_lock_move() const { return __flags__.test(27);}; bool has_lock_dir() const { return __flags__.test(28);}; - bool has_disable_shot() const { return __flags__.test(29);}; - bool has_disable_useskill() const { return __flags__.test(30);}; - bool has_effect_list() const { return __flags__.test(31);}; + bool has_lock_move_dir() const { return __flags__.test(29);}; + bool has_disable_shot() const { return __flags__.test(30);}; + bool has_disable_useskill() const { return __flags__.test(31);}; + bool has_effect_list() const { return __flags__.test(32);}; protected: @@ -107,12 +109,13 @@ namespace mtb int no_immune_ = 0; int lock_move_ = 0; int lock_dir_ = 0; + int lock_move_dir_ = 0; int disable_shot_ = 0; int disable_useskill_ = 0; std::string effect_list_; public: - std::bitset<32> __flags__; + std::bitset<33> __flags__; }; }; diff --git a/server/gameserver/mtb/mtb.all.cc b/server/gameserver/mtb/mtb.all.cc index 5ae9a296..2c5adc35 100644 --- a/server/gameserver/mtb/mtb.all.cc +++ b/server/gameserver/mtb/mtb.all.cc @@ -442,7 +442,7 @@ namespace mtb { a8::reflect::Class* meta_class = nullptr; if (!meta_class) { - meta_class = new a8::reflect::Class("Buff", 32, 0); + meta_class = new a8::reflect::Class("Buff", 33, 0); meta_class->SetSimpleField(0, "buff_id", a8::reflect::ET_INT32, my_offsetof2(Buff, buff_id_)); meta_class->SetSimpleField(1, "name", a8::reflect::ET_STRING, my_offsetof2(Buff, name_)); meta_class->SetSimpleField(2, "buff_target", a8::reflect::ET_INT32, my_offsetof2(Buff, buff_target_)); @@ -472,9 +472,10 @@ namespace mtb meta_class->SetSimpleField(26, "no_immune", a8::reflect::ET_INT32, my_offsetof2(Buff, no_immune_)); meta_class->SetSimpleField(27, "lock_move", a8::reflect::ET_INT32, my_offsetof2(Buff, lock_move_)); meta_class->SetSimpleField(28, "lock_dir", a8::reflect::ET_INT32, my_offsetof2(Buff, lock_dir_)); - meta_class->SetSimpleField(29, "disable_shot", a8::reflect::ET_INT32, my_offsetof2(Buff, disable_shot_)); - meta_class->SetSimpleField(30, "disable_useskill", a8::reflect::ET_INT32, my_offsetof2(Buff, disable_useskill_)); - meta_class->SetSimpleField(31, "effect_list", a8::reflect::ET_STRING, my_offsetof2(Buff, effect_list_)); + meta_class->SetSimpleField(29, "lock_move_dir", a8::reflect::ET_INT32, my_offsetof2(Buff, lock_move_dir_)); + meta_class->SetSimpleField(30, "disable_shot", a8::reflect::ET_INT32, my_offsetof2(Buff, disable_shot_)); + meta_class->SetSimpleField(31, "disable_useskill", a8::reflect::ET_INT32, my_offsetof2(Buff, disable_useskill_)); + meta_class->SetSimpleField(32, "effect_list", a8::reflect::ET_STRING, my_offsetof2(Buff, effect_list_)); } return meta_class; } diff --git a/server/tools/protobuild/mt.proto b/server/tools/protobuild/mt.proto index 70e55fb3..563deee9 100755 --- a/server/tools/protobuild/mt.proto +++ b/server/tools/protobuild/mt.proto @@ -374,6 +374,7 @@ message Buff optional int32 no_immune = 30; optional int32 lock_move = 31; optional int32 lock_dir = 34; + optional int32 lock_move_dir = 36; optional int32 disable_shot = 32; optional int32 disable_useskill = 33; optional string effect_list = 35;