From 615936eaa6502ca2b07a48508586c38dbe13e179 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 3 Jun 2021 11:59:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9C=B0=E5=BD=A2=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/creature.cc | 28 +++++++++++++++++++++++++++- third_party/a8engine | 2 +- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 4bfb03c..61c4acb 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1411,10 +1411,10 @@ void Creature::CheckSpecObject() room->map_service->GetSpecColliders(SPEC_MAP_OBJECT_FLAGS, room, GetPos().x, GetPos().y, colliders); #ifdef DEBUG - long long old_cell_flags = cell_flags_; int water_w = 0; int water_h = 0; #endif + long long old_cell_flags = cell_flags_; cell_flags_ = 0; for (const ColliderComponent* collider : colliders) { switch (collider->owner->GetEntityType()) { @@ -1436,6 +1436,32 @@ void Creature::CheckSpecObject() break; } } + if (old_cell_flags != cell_flags_) { + if (!a8::SameBitFlag(old_cell_flags, cell_flags_, kColliderTag_Grass)) { + if (a8::HasBitFlag(cell_flags_, kColliderTag_Grass)) { + TryAddBuff(this, kInGrassBuffId); + } else { + RemoveBuffById(kInGrassBuffId); + } + } + + if (!a8::SameBitFlag(old_cell_flags, cell_flags_, kColliderTag_Water)) { + if (a8::HasBitFlag(cell_flags_, kColliderTag_Water)) { + TryAddBuff(this, kInWaterBuffId); + } else { + RemoveBuffById(kInWaterBuffId); + } + } + + if (!a8::SameBitFlag(old_cell_flags, cell_flags_, kColliderTag_Ice)) { + if (a8::HasBitFlag(cell_flags_, kColliderTag_Ice)) { + TryAddBuff(this, kInIceBuffId); + } else { + RemoveBuffById(kInIceBuffId); + } + } + + } #ifdef DEBUG if (IsPlayer()) { if (old_cell_flags != cell_flags_) { diff --git a/third_party/a8engine b/third_party/a8engine index f32b842..41cb09f 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit f32b842baf3c97def6871a831dd4509842d461ea +Subproject commit 41cb09fe83abc21db2e912117d11feceb4b00a55