function ApplyReciepeOnUnit takes unit uUnit,integer iFirstItemType,integer iSecondItemType,integer iThirdItemType,integer iFourthItemType,integer iResultItemType,integer iReciepeLenght,integer x 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 SetItemUserData( i, x ) 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 ) if (iResultItemType == 'I01E')then call SetPlayerTechResearchedSwap( 'R00G', 1, GetOwningPlayer(GetManipulatingUnit()) ) endif call SetItemUserData( i, x ) 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 SetItemUserData( i, x ) 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_Rezept_menge loop exitwhen x>y if(ApplyReciepeOnUnit(uTriggeringUnit,udg_Rezept_Item1[x],udg_Rezept_Item2[x],udg_Rezept_Item3[x],udg_Rezept_Item4[x],udg_Rezept_Item5[x],udg_Rezept_lange[x],x))then set x=x+1 endif set x=x+1 endloop endfunction function InitTrig_Aufheben takes nothing returns nothing set gg_trg_Aufheben=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_Aufheben,EVENT_PLAYER_UNIT_PICKUP_ITEM) call TriggerAddAction(gg_trg_Aufheben,function Trig_Item_ApplyReciepe_Actions) endfunction