AI-generated code, untested, but serves as an example.
void CHARACTER::RewardBossParticipants(int iMinPercent, DWORD dwItemVnum, int iItemCount)
{
if (!IsMonster() || !IsAggressive()) // Só boss agressivo
return;
int iMinDamage = GetMaxHP() * iMinPercent / 100;
for (TDamageMap::iterator it = m_map_kDamage.begin(); it != m_map_kDamage.end(); ++it)
{
LPCHARACTER ch = CHARACTER_MANAGER::instance().Find(it->first);
if (!ch || !ch->IsPC())
continue;
if (it->second.iTotalDamage >= iMinDamage)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Você participou da morte do BOSS.");
if (dwItemVnum > 0 && iItemCount > 0)
ch->AutoGiveItem(dwItemVnum, iItemCount);
}
}
}
int pc_reward_boss_participants(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!ch)
return 0;
int minPercent = luaL_checknumber(L, 1);
DWORD itemVnum = luaL_checknumber(L, 2);
int itemCount = luaL_checknumber(L, 3);
ch->RewardBossParticipants(minPercent, itemVnum, itemCount);
return 0;
}
{ "reward_boss_participants", pc_reward_boss_participants },quest boss_reward_example begin
state start begin
when kill with npc.get_race() == 1093 begin -- Exemplo: BOSS Dragão Azul
pc.reward_boss_participants(10, 50011, 1) -- 10% de dano ou mais, recompensa: 1x item 50011
end
end
end