From db3dcb8dfaf23f5416567f1ed8c853acdd457534 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 21 May 2019 14:23:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=AD=BB=E4=BA=A1=E6=8E=89?= =?UTF-8?q?=E8=90=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/human.cc | 24 ++++++++++++++++++++++++ server/gameserver/human.h | 1 + 2 files changed, 25 insertions(+) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 978abe4..66049cf 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -605,6 +605,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id) } } } + DeadDrop(); } } @@ -1852,3 +1853,26 @@ void Human::InternalSendGameOver() delete params; sending_gameover_ = true; } + +void Human::DeadDrop() +{ + for (auto& weapon : weapons) { + if (weapon.weapon_id != 0 && weapon.weapon_id != default_weapon.weapon_id) { + Vector2D drop_pos = pos; + room->DropItem(drop_pos, weapon.weapon_id, 1); + } + } + for (size_t slot = 0; slot < inventory_.size(); ++slot) { + if (inventory_[slot] > 0) { + MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquipBySlotId(slot); + if (equip_meta) { + if (equip_meta->i->equip_type() == 2 && + MetaMgr::Instance()->fighting_mode) { + return; + } + Vector2D drop_pos = pos; + room->DropItem(drop_pos, equip_meta->i->id(), inventory_[slot]); + } + } + } +} diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 02d0802..fa82ebe 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -179,6 +179,7 @@ private: void ClearFrameData(); void GenBattleReportData(a8::MutableXObject* params); void InternalSendGameOver(); + void DeadDrop(); protected: long long last_shot_frameno_ = 0;