function ApplyReciepeOnUnit takes unit uUnit,integer iFirstItemType,integer iSecondItemType,integer iThirdItemType,integer iFourthItemType,integer iResultItemType,integer iReciepeLenght returns boolean local effect eReciepeEffect local item i if(iReciepeLenght==2)then if(UnitHasItemOfTypeBJ(uUnit,iFirstItemType))then if(UnitHasItemOfTypeBJ(uUnit,iSecondItemType))then call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iFirstItemType)) call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iSecondItemType)) set eReciepeEffect=AddSpecialEffectTargetUnitBJ("origin",uUnit,"Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl") set i = UnitAddItemByIdSwapped( iResultItemType, uUnit ) call DestroyEffect(eReciepeEffect) return true endif endif endif if(iReciepeLenght==3)then if(UnitHasItemOfTypeBJ(uUnit,iFirstItemType))then if(UnitHasItemOfTypeBJ(uUnit,iSecondItemType))then if(UnitHasItemOfTypeBJ(uUnit,iThirdItemType))then call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iFirstItemType)) call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iSecondItemType)) call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iThirdItemType)) set eReciepeEffect=AddSpecialEffectTargetUnitBJ("origin",uUnit,"Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl") set i = UnitAddItemByIdSwapped( iResultItemType, uUnit ) call DestroyEffect(eReciepeEffect) return true endif endif endif endif if(iReciepeLenght==4)then if(UnitHasItemOfTypeBJ(uUnit,iFirstItemType))then if(UnitHasItemOfTypeBJ(uUnit,iSecondItemType))then if(UnitHasItemOfTypeBJ(uUnit,iThirdItemType))then if(UnitHasItemOfTypeBJ(uUnit,iFourthItemType))then call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iFirstItemType)) call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iSecondItemType)) call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iThirdItemType)) call RemoveItem(GetItemOfTypeFromUnitBJ(uUnit,iFourthItemType)) set eReciepeEffect=AddSpecialEffectTargetUnitBJ("origin",uUnit,"Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl") set i = UnitAddItemById(uUnit,iResultItemType) call DestroyEffect(eReciepeEffect) return true endif endif endif endif endif return false endfunction function Trig_Item_ApplyReciepe_Actions takes nothing returns nothing local unit uTriggeringUnit=GetTriggerUnit() local integer x=1 local integer y=udg_XXXNumberOfRecipesXXX loop exitwhen x>y if(ApplyReciepeOnUnit(uTriggeringUnit,udg_XXXItem1XXX[x],udg_XXXItem2XXX[x],udg_XXXItem3XXX[x],udg_XXXItem4XXX[x],udg_XXXItem5XXX[x],udg_XXXRequiredItemsXXX[x],x))then set x=x+1 endif set x=x+1 endloop endfunction function InitTrig_XXXTriggerNameXXX takes nothing returns nothing set gg_trg_XXXTriggerNameXXX=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_XXXTriggerNameXXX,EVENT_PLAYER_UNIT_PICKUP_ITEM) call TriggerAddAction(gg_trg_XXXTriggerNameXXX,function Trig_Item_ApplyReciepe_Actions) endfunction