class itemDef {
itemEntry: uint32 = 0
itemCount: uint32 = 0
}
class PlayerItemHolder {
guid: uint32 = 0
gold: uint32 = 0
items: TSArray<itemDef> = [];
}
let arrOfPlayerLoot : TSArray<PlayerItemHolder> = [];
export function onDeath(events: TSEventHandlers) {
events.Player.OnPlayerKilledByCreature((killer,player)=>{
const chestID = 179697
const despawnTime = 30//seconds
let item = player.GetItemByPos(0,0)
const chest = player.SummonGameObject(chestID,player.GetX(),player.GetY(),player.GetZ(),player.GetO(),despawnTime)
let container = new PlayerItemHolder()
container.gold = player.GetMoney()
container.guid = chest.GetGUIDLow()
player.ModifyMoney(-9999999999)
let itemsHolder: TSArray<itemDef> = []
for (let x=19;x<=22;x++){//equipped bags inside slots
for (let i = 0; i <= 35; ++i){
item = player.GetItemByPos(x,i)
if(!item.IsNull()){
let itemP = new itemDef()
itemP.itemCount = item.GetCount()
itemP.itemEntry = item.GetEntry()
itemsHolder.push(itemP)
player.RemoveItem(item,item.GetCount(),item.GetEntry())
}
}
}
for (let x=67;x<=74;x++){//equipped bags inside bank slots
for (let i = 0; i <= 35; ++i){
item = player.GetItemByPos(x,i)
if(!item.IsNull()){
let itemP = new itemDef()
itemP.itemCount = item.GetCount()
itemP.itemEntry = item.GetEntry()
itemsHolder.push(itemP)
player.RemoveItem(item,item.GetCount(),item.GetEntry())
}
}
}
for(let i=0;i<=118;i++){//equip/equip bags/backpack/bank main/bank bags/keyring
item = player.GetItemByPos(255,i)
if(!item.IsNull()){
let itemP = new itemDef()
itemP.itemCount = item.GetCount()
itemP.itemEntry = item.GetEntry()
itemsHolder.push(itemP)
player.RemoveItem(item,item.GetCount(),item.GetEntry())
}
}
container.items = itemsHolder
arrOfPlayerLoot.push(container)
})
events.GameObjects.OnGenerateLoot((obj,player)=>{
if(obj.GetEntry() == 179697){
obj.GetLoot().Clear()
for (let i=0;i<arrOfPlayerLoot.length;i++){
if(obj.GetGUIDLow() == arrOfPlayerLoot.get(i).guid){
obj.GetLoot().SetMoney(arrOfPlayerLoot.get(i).gold)
for (let v=0;v<arrOfPlayerLoot.get(i).items.length;v++){
let item = arrOfPlayerLoot.get(i).items.get(v)
obj.GetLoot().AddItem(item.itemEntry,item.itemCount,item.itemCount)
}
break;
}
}
}
})
}