diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 0e9d0ea..0d80cce 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -105,6 +105,7 @@ enum InventorySlot_e IS_SHIELD_WALL = 22, //盾墙 IS_SINGAL_GUN = 23, //信号枪 IS_SHEN_BAO = 24, //肾上腺速 + IS_OIL_BUCKET = 25, //汽油桶 IS_MAX = 30, IS_END diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index f5da7b4..1b21375 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -198,6 +198,10 @@ void MapInstance::CreateTerrain() for (auto idx : terrain->grass()) { grasses.insert(idx + 1); } + std::set mountain_tops; + for (auto idx : terrain->mountain_top()) { + mountain_tops.insert(idx + 1); + } int mask = A8_DEFINE_RANGE_BIT(int, 0, 22); for (auto layer : *layers) { @@ -235,6 +239,9 @@ void MapInstance::CreateTerrain() } else if (grasses.find(grid_val) != grasses.end()) { a8::SetBitFlag(collider_tag, kColliderTag_Grass); assert(collider_tag > 0); + } else if (mountain_tops.find(grid_val) != mountain_tops.end()) { + a8::SetBitFlag(collider_tag, kColliderTag_MountainTop); + assert(collider_tag > 0); } if (collider_tag != 0) { assert(w < 300 && h < 300); diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 4ba55b6..88b184a 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -945,45 +945,3 @@ std::string MetaMgr::GetText(const std::string& textid, const std::string& def_t auto itr = loader_->text_hash.find(textid); return itr != loader_->text_hash.end() ? itr->second : def_text; } - -int MetaMgr::GetSpecMapAreaBuffId(int tag) -{ - switch (tag) { - case kColliderTag_Grass: - return kInGrassBuffId; - case kColliderTag_Water: - return kInWaterBuffId; - case kColliderTag_Ice: - return kInIceBuffId; - default: - return 0; - } -} - -int MetaMgr::GetSpecMapAreaEnterTime(int tag) -{ - switch (tag) { - case kColliderTag_Grass: - return grass_invisible_time; - case kColliderTag_Water: - return water_invisible_time; - case kColliderTag_Ice: - return ice_invisible_time; - default: - return 0; - } -} - -int MetaMgr::GetSpecMapAreaLeaveTime(int tag) -{ - switch (tag) { - case kColliderTag_Grass: - return grass_show_time; - case kColliderTag_Water: - return water_show_time; - case kColliderTag_Ice: - return ice_show_time; - default: - return 0; - } -} diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index 80383ec..d4a12b2 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -56,9 +56,6 @@ class MetaMgr : public a8::Singleton MetaData::Robot* RandRobot(std::set& refreshed_robot_set); MetaData::AI* GetAI(int ai_level, int ai_mode); std::string GetText(const std::string& textid, const std::string& def_text=""); - int GetSpecMapAreaBuffId(int tag); - int GetSpecMapAreaEnterTime(int tag); - int GetSpecMapAreaLeaveTime(int tag); int gas_inactive_time = 10; int newbie_gas_inactive_time = 5; diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 21b1371..0bc6b99 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -88,6 +88,11 @@ void Obstacle::RecalcSelfCollider() permanent_map_service->AddCollider(self_collider2_); } break; + default: + { + abort(); + } + break; } } if (!self_collider_) { @@ -101,6 +106,9 @@ void Obstacle::RecalcSelfCollider() collider->tag = collider_tag; collider->param1 = collider_param1; collider->param2 = collider_param2; + if (meta->i->attack_type() == 3) { + a8::SetBitFlag(collider->tag, kHalfWallTag); + } } } @@ -474,7 +482,7 @@ bool Obstacle::Attackable() bool Obstacle::Throughable() { - return meta->i->attack_type() == 2; + return meta->i->attack_type() == 2 || meta->i->attack_type() == 3; } int Obstacle::GetTeamId(Room* room)