library Looting
// Configurables
globals
// The number of items:
private constant integer EPIC_COUNT = 2 // Epic Unit Items
private constant integer BIG_COUNT = 2 // Big Unit Items
private constant integer MED_COUNT = 3 // Medium Unit Items
private constant integer WEAK_COUNT = 4 // Weak Unit Items
private constant integer CIVI_COUNT = 3 // Civilian Items
private constant integer HWEAK_COUNT = 3 // Human Weak Items
private constant integer HMED_COUNT = 3 // Human Medium Items
private constant integer HBIG_COUNT = 3 // Human Big Items
private constant integer UNDD_COUNT = 2 // Undead Items
private constant integer WVDM_COUNT = 2 // WaveDemon Items
// The chances to get each item:
private constant real EPIC_CH = 15.0
private constant real BIG_CH = 20.0
private constant real MED_CH = 25.0
private constant real WEAK_CH = 30.0
private constant real CIVI_CH = 20.0
private constant real HWEAK_CH = 25.0
private constant real HMED_CH = 20.0
private constant real HBIG_CH = 10.0
private constant real UNDD_CH = 15.0
private constant real WVDM_CH = 20.0
endglobals
// Your item lists
globals
private integer array EPIC_ITEMS
private integer array BIG_ITEMS
private integer array MED_ITEMS
private integer array WEAK_ITEMS
private integer array CIVI_ITEMS
private integer array HWEAK_ITEMS
private integer array HMED_ITEMS
private integer array HBIG_ITEMS
private integer array UNDD_ITEMS
private integer array WVDM_ITEMS
endglobals
private function Config takes nothing returns nothing
set EPIC_ITEMS[1] = 'I000'
set EPIC_ITEMS[2] = 'I001'
set BIG_ITEMS[1] = 'I002'
set BIG_ITEMS[2] = 'I003'
set MED_ITEMS[1] = 'I004'
set MED_ITEMS[2] = 'I005'
set MED_ITEMS[3] = 'I006'
set WEAK_ITEMS[1] = 'I007'
set WEAK_ITEMS[2] = 'I008'
set WEAK_ITEMS[3] = 'I009'
set WEAK_ITEMS[4] = 'I00A'
set CIVI_ITEMS[1] = 'I00B'
set CIVI_ITEMS[2] = 'I00C'
set CIVI_ITEMS[3] = 'I00D'
set HWEAK_ITEMS[1] = 'I00E'
set HWEAK_ITEMS[2] = 'I00F'
set HWEAK_ITEMS[3] = 'I00G'
set HMED_ITEMS[1] = 'I00H'
set HMED_ITEMS[2] = 'I00I'
set HMED_ITEMS[3] = 'I00J'
set HBIG_ITEMS[1] = 'I00K'
set HBIG_ITEMS[2] = 'I00L'
set HBIG_ITEMS[3] = 'I00M'
set UNDD_ITEMS[1] = 'I00N'
set UNDD_ITEMS[2] = 'I00O'
set WVDM_ITEMS[1] = 'I00P'
set WVDM_ITEMS[2] = 'I00Q'
endfunction
private function Actions takes nothing returns boolean
local unit u = GetTriggerUnit()
local real r = GetRandomReal(0,100.0)
if IsUnitInGroup(u,udg_WeakUnits) and r<=WEAK_CH then
call CreateItem(WEAK_ITEMS[GetRandomInt(1,WEAK_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_MediumUnits) and r<=MED_CH then
call CreateItem(MED_ITEMS[GetRandomInt(1,MED_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_BigUnits) and r<=BIG_CH then
call CreateItem(BIG_ITEMS[GetRandomInt(1,BIG_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_EpicUnits) and r<=EPIC_CH then
call CreateItem(EPIC_ITEMS[GetRandomInt(1,EPIC_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_Civilians) and r<=CIVI_CH then
call CreateItem(CIVI_ITEMS[GetRandomInt(1,CIVI_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_HumanWeak) and r<=HWEAK_CH then
call CreateItem(HWEAK_ITEMS[GetRandomInt(1,HWEAK_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_HumanMedium) and r<=HMED_CH then
call CreateItem(HMED_ITEMS[GetRandomInt(1,HMED_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_HumanBig) and r<=HBIG_CH then
call CreateItem(HBIG_ITEMS[GetRandomInt(1,HBIG_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_Undead) and r<=UNDD_CH then
call CreateItem(UNDD_ITEMS[GetRandomInt(1,UNDD_COUNT)],GetUnitX(u),GetUnitY(u))
elseif IsUnitInGroup(u,udg_WaveDemons) and r<=WVDM_CH then
call CreateItem(WVDM_ITEMS[GetRandomInt(1,WVDM_COUNT)],GetUnitX(u),GetUnitY(u))
endif
set u = null
return false
endfunction
private module Init
private static method onInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t,Condition(function Actions))
call Config()
set t = null
endmethod
endmodule
private struct Inits extends array
implement Init
endstruct
endlibrary