Boss Rewards¶
The OnMonsterDie hook fires when any monster dies. Use it to add custom rewards and announcements for boss kills.
Server-Wide Boss Kill Announcement¶
local BOSS_CLASSES = {
[275] = "Kundun",
[149] = "Golden Budge Dragon",
[43] = "Red Dragon",
}
local function OnMonsterDie(aIndex, bIndex)
local monster = GetUser(aIndex)
local killer = GetUser(bIndex)
if monster == nil or killer == nil then return 0 end
local bossName = BOSS_CLASSES[monster.Class]
if bossName then
GCNoticeSendToAll(0, killer.Name .. " has defeated " .. bossName .. "!")
LogAdd(LOG_GREEN, "[Boss] " .. bossName .. " killed by " .. killer.Name)
end
return 0 -- Allow normal loot processing
end
BridgeFunctionAttach("OnMonsterDie", OnMonsterDie)
Boss Kill with Extra Rewards¶
local BOSS_REWARDS = {
[275] = { zen = 1000000, item = GET_ITEM(14, 13), qty = 3 }, -- Kundun: 1M zen + 3 JoB
[43] = { zen = 500000, item = GET_ITEM(14, 14), qty = 1 }, -- Red Dragon: 500k + 1 JoS
}
local function OnMonsterDie(aIndex, bIndex)
local monster = GetUser(aIndex)
local killer = GetUser(bIndex)
if monster == nil or killer == nil then return 0 end
local reward = BOSS_REWARDS[monster.Class]
if reward == nil then return 0 end
-- Give Zen reward
gObjCharacterAddZen(killer, reward.zen, true)
-- Give item rewards
for i = 1, reward.qty do
ItemGiveEx(bIndex, reward.item, 0, 0, 0, 0, 0, 0)
end
GCNoticeSend(bIndex, 1, "Boss reward: " .. reward.zen .. " Zen + " .. reward.qty .. " item(s)!")
return 0
end
BridgeFunctionAttach("OnMonsterDie", OnMonsterDie)
Party Boss Rewards¶
local PARTY_BOSS_CLASS = 275 -- Kundun
local function OnMonsterDie(aIndex, bIndex)
local monster = GetUser(aIndex)
local killer = GetUser(bIndex)
if monster == nil or killer == nil then return 0 end
if monster.Class ~= PARTY_BOSS_CLASS then return 0 end
-- If killer is in a party, reward all members
if IsParty(killer) then
for i = 0, 4 do
local memberIdx = GetMemberIndex(killer, i)
if memberIdx ~= -1 and gObjIsConnectedGP(memberIdx) then
gObjCharacterAddZen(GetUser(memberIdx), 500000, true)
GCNoticeSend(memberIdx, 1, "Party boss reward: 500,000 Zen!")
end
end
else
-- Solo kill: bigger reward
gObjCharacterAddZen(killer, 1000000, true)
GCNoticeSend(bIndex, 1, "Solo boss reward: 1,000,000 Zen!")
end
GCNoticeSendToAll(0, killer.Name .. " has defeated Kundun!")
return 0
end
BridgeFunctionAttach("OnMonsterDie", OnMonsterDie)