All pastes #926430 Raw Edit

Meins

public text v1 · immutable
·published 2008-03-03 18:29 UTC
rendered paste body
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