function Trig_CreateItemWeaponsOnJass_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A009' ) ) then
return false
endif
return true
endfunction // Сборка предмета найденным юнитам
function FCreateItem takes integer Item1, integer Item2, integer NewItem returns nothing
// Принятие перемеременных
local unit CurrentUnit = GetEnumUnit() // Выбранный юнит
local item array Items // Массив слотов и предметов
local integer A
local integer B
local effect CurrEffect
local location loc = GetUnitLoc(CurrentUnit)
// Проверка и сборка
set A = 0
loop
exitwhen A > 6
set B = 0
loop
exitwhen B > 6
set Items[1] = UnitItemInSlot(CurrentUnit, A)
set Items[2] = UnitItemInSlot(CurrentUnit, B)
// call DisplayTextToForce( GetPlayersAll(), "Name 1: " + GetItemName(Items[1]) )
// call DisplayTextToForce( GetPlayersAll(), "TypeId 1: " + I2S(GetItemTypeId(Items[1])) )
// call DisplayTextToForce( GetPlayersAll(), "Name 2: " + GetItemName(Items[2]) )
// call DisplayTextToForce( GetPlayersAll(), "TypeId 2: " + I2S(GetItemTypeId(Items[2])))
if (GetItemTypeId(Items[1]) == Item1) and (GetItemTypeId(Items[2]) == Item2) and (Items[1] != Items[2] ) then
call RemoveItem(UnitItemInSlot(CurrentUnit, A))
call RemoveItem(UnitItemInSlot(CurrentUnit, B))
call UnitAddItemByIdSwapped(NewItem, CurrentUnit)
// Создаем анимацию сборки на юните
set CurrEffect = AddSpecialEffectLoc("Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl",loc)
call PolledWait(2)
call ResetUnitAnimation( GetTriggerUnit() )
call DestroyEffect(CurrEffect)
set CurrEffect = null
call RemoveLocation(loc)
set loc = null
endif
set B = B + 1
endloop
set A = A + 1
endloop
set CurrentUnit = null
set Items[1] = null
set Items[2] = null
set A = 0
set B = 0
endfunction
function CheckItem takes nothing returns nothing
//Сборка простых мечей
call FCreateItem('I00G', 'I00F', 'I00H') //10 уровень
call FCreateItem('I00F', 'I00E', 'I00G') //9 уровень
call FCreateItem('I00E', 'I00D', 'I00F') //8 уровень
call FCreateItem('I00D', 'I00C', 'I00E') //7 уровень
call FCreateItem('I00C', 'I00B', 'I00D') //6 уровень
call FCreateItem('I00B', 'I00A', 'I00C') //5 уровень
call FCreateItem('I00A', 'I009', 'I00B') //4 уровень
call FCreateItem('I009', 'I008', 'I00A') //3 уровень
call FCreateItem('I008', 'I008', 'I009') //2 уровень
//Сборка отравленных мечей на основе мечей
call FCreateItem('I013', 'I013', 'I015') //10 уровень
call FCreateItem('I012', 'I012', 'I014') //9 уровень
call FCreateItem('I00G', 'I011', 'I013') //8 уровень
call FCreateItem('I011', 'I010', 'I012') //7 уровень
call FCreateItem('I010', 'I00Z', 'I011') //6 уровень
call FCreateItem('I00Z', 'I00Y', 'I010') //5 уровень
call FCreateItem('I00Y', 'I00X', 'I00Z') //4 уровень
call FCreateItem('I00X', 'I00W', 'I00Y') //3 уровень
call FCreateItem('I00W', 'I00W', 'I00X') //2 уровень
//Сборка отравленных мечей с помощью сферы
call FCreateItem('I00H', 'I00V', 'I015') //10 уровень
call FCreateItem('I00G', 'I00U', 'I014') //9 уровень
call FCreateItem('I00F', 'I00T', 'I013') //8 уровень
call FCreateItem('I00E', 'I00S', 'I012') //7 уровень
call FCreateItem('I00D', 'I00R', 'I011') //6 уровень
call FCreateItem('I00C', 'I00Q', 'I010') //5 уровень
call FCreateItem('I00B', 'I00P', 'I00Z') //4 уровень
call FCreateItem('I00A', 'I00O', 'I00Y') //3 уровень
call FCreateItem('I009', 'I00N', 'I00X') //2 уровень
call FCreateItem('I008', 'I00I', 'I00W') //1 уровень
//Сборка огненных мечей на основе мечей
call FCreateItem('I03D', 'I03F', 'I03G') //10 уровень
call FCreateItem('I02C', 'I03D', 'I03F') //9 уровень
call FCreateItem('I02J', 'I02C', 'I03D') //8 уровень
call FCreateItem('I02I', 'I02J', 'I02C') //7 уровень
call FCreateItem('I02H', 'I02I', 'I02J') //6 уровень
call FCreateItem('I02F', 'I02H', 'I02I') //5 уровень
call FCreateItem('I03E', 'I02F', 'I02H') //4 уровень
call FCreateItem('I029', 'I03E', 'I02F') //3 уровень
call FCreateItem('I029', 'I029', 'I03E') //2 уровень
//Сборка огненных мечей на основе сфер
call FCreateItem('I00H', 'I01O', 'I03G') //10 уровень
call FCreateItem('I00G', 'I01Q', 'I03F') //9 уровень
call FCreateItem('I00F', 'I01P', 'I03D') //8 уровень
call FCreateItem('I00E', 'I01N', 'I02C') //7 уровень
call FCreateItem('I00D', 'I01M', 'I02J') //6 уровень
call FCreateItem('I00C', 'I01L', 'I02I') //5 уровень
call FCreateItem('I00B', 'I01K', 'I02H') //4 уровень
call FCreateItem('I00A', 'I01J', 'I02F') //3 уровень
call FCreateItem('I009', 'I01I', 'I03E') //2 уровень
call FCreateItem('I008', 'I00J', 'I029') //1 уровень
//Сборка молота
call FCreateItem('I041', 'I03U', 'I03T') //10 уровень
call FCreateItem('I03V', 'I041', 'I03U') //9 уровень
call FCreateItem('I03W', 'I03V', 'I041') //8 уровень
call FCreateItem('I03X', 'I03W', 'I03V') //7 уровень
call FCreateItem('I03Y', 'I03X', 'I03W') //6 уровень
call FCreateItem('I03Z', 'I03Y', 'I03X') //5 уровень
call FCreateItem('I03Z', 'I03H', 'I03Y') //4 уровень
call FCreateItem('I040', 'I03Z', 'I03H') //3 уровень
call FCreateItem('I040', 'I040', 'I03Z') //2 уровень
//Сборка топора
call FCreateItem('I041', 'I03U', 'I03P') //10 уровень
call FCreateItem('I03V', 'I041', 'I03O') //9 уровень
call FCreateItem('I03W', 'I03V', 'I04N') //8 уровень
call FCreateItem('I03X', 'I03W', 'I03R') //7 уровень
call FCreateItem('I03J', 'I03X', 'I03L') //6 уровень
call FCreateItem('I03I', 'I03J', 'I03K') //5 уровень
call FCreateItem('I03Q', 'I03I', 'I03J') //4 уровень
call FCreateItem('I03M', 'I03Q', 'I03I') //3 уровень
call FCreateItem('I03M', 'I03M', 'I03Q') //2 уровень
endfunction
function CheckCondition takes nothing returns boolean
if IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true or GetUnitTypeId(GetFilterUnit()) == 'h01E' and DistanceBetweenPoints(GetUnitLoc(GetTriggerUnit()), GetUnitLoc(GetFilterUnit())) <= udg_RangeSmith[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] and GetOwningPlayer(GetFilterUnit()) == GetOwningPlayer(GetTriggerUnit()) then
return true
else
return false
endif
endfunction
// Выбрать каждого игрока и сделать действие
function Trig_CreateItemWeaponsOnJass_Actions takes nothing returns nothing
call ForGroupBJ(GetUnitsInRectMatching(GetPlayableMapRect(), Condition(function CheckCondition)), function CheckItem )
endfunction
//===========================================================================
function InitTrig_CreateItemWeaponsOnJass takes nothing returns nothing
set gg_trg_CreateItemWeaponsOnJass = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_CreateItemWeaponsOnJass, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_CreateItemWeaponsOnJass, Condition( function Trig_CreateItemWeaponsOnJass_Conditions ) )
call TriggerAddAction( gg_trg_CreateItemWeaponsOnJass, function Trig_CreateItemWeaponsOnJass_Actions)
endfunction