diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 496d540..968d5c0 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2132,6 +2132,22 @@ void Human::DeadDrop() } } } + { + Skin* old_skin = GetSkinByIdx(kSkinSlot_HAT); + if (old_skin && old_skin->skin_id != 0) { + a8::Vec2 dir = a8::Vec2::UP; + dir.Rotate(a8::RandAngle()); + room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + } + } + { + Skin* old_skin = GetSkinByIdx(kSkinSlot_CLOTH); + if (old_skin && old_skin->skin_id != 0) { + a8::Vec2 dir = a8::Vec2::UP; + dir.Rotate(a8::RandAngle()); + room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + } + } } void Human::SendBattleReport() @@ -2268,9 +2284,11 @@ void Human::ProcLootSkin(Loot* entity, MetaData::Equip* item_meta) //装饰 Skin* old_skin = GetSkinByIdx(kSkinSlot_HAT); if (old_skin) { - a8::Vec2 dir = a8::Vec2::UP; - dir.Rotate(a8::RandAngle()); - room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + if (old_skin->skin_id != 0) { + a8::Vec2 dir = a8::Vec2::UP; + dir.Rotate(a8::RandAngle()); + room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + } *old_skin = Skin(); old_skin->skin_id = item_meta->i->id(); @@ -2284,9 +2302,11 @@ void Human::ProcLootSkin(Loot* entity, MetaData::Equip* item_meta) //衣服 Skin* old_skin = GetSkinByIdx(kSkinSlot_CLOTH); if (old_skin) { - a8::Vec2 dir = a8::Vec2::UP; - dir.Rotate(a8::RandAngle()); - room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + if (old_skin->skin_id != 0) { + a8::Vec2 dir = a8::Vec2::UP; + dir.Rotate(a8::RandAngle()); + room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); + } *old_skin = Skin(); old_skin->skin_id = item_meta->i->id();