Добавлен Jusper
В чем суть. Юнит бросает абилку в другого, потом выбирается рандомный юнит в пределах радиуса и, если он враг, в него летит снаряд от dummy. Эдакий bounce спелл.
Так вот, почему-то он не отскакивает. Буду очень благодарен за помощь =)
function Trig_DiskBounce_Func010002001003 takes nothing returns boolean
return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), Player(0)) == true )
endfunction
function Trig_DiskBounce_Func011Func007002001003 takes nothing returns boolean
return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), Player(0)) == true )
endfunction
function Trig_DiskBounce_Actions takes nothing returns nothing
local unit t = GetSpellTargetUnit()
local unit c = GetSpellAbilityUnit()
local unit b
local unit d
local real m
call TriggerSleepAction( ( DistanceBetweenPoints(GetUnitLoc(c), GetUnitLoc(t)) / 1300.00 ) )
set m = 0.00
set m = I2R(GetHeroStatBJ(bj_HEROSTAT_STR, c, true))
set m = ( m * 2.75 )
set m = ( m + ( 8.00 * I2R(GetHeroLevel(c)) ) )
call UnitDamageTargetBJ( c, t, m, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
set b = GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(400.00, GetUnitLoc(t), Condition(function Trig_DiskBounce_Func010002001003)))
if ( b != t ) then
call CreateNUnitsAtLoc( 1, 'h616', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(t), bj_UNIT_FACING )
set d = GetLastCreatedUnit()
call UnitAddAbilityBJ( 'A63J', d )
call IssueTargetOrderBJ( d, "thunderbolt", b )
call TriggerSleepAction( ( DistanceBetweenPoints(GetUnitLoc(d), GetUnitLoc(b)) / 1300.00 ) )
set t = b
call UnitDamageTargetBJ( c, b, m, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call RemoveUnit( d )
set b = GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(400.00, GetUnitLoc(t), Condition(function Trig_DiskBounce_Func011Func007002001003)))
if ( b != t ) then
call CreateNUnitsAtLoc( 1, 'h616', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(b), bj_UNIT_FACING )
set d = GetLastCreatedUnit()
call UnitAddAbilityBJ( 'A63J', d )
call IssueTargetOrderBJ( d, "thunderbolt", b )
call TriggerSleepAction( ( DistanceBetweenPoints(GetUnitLoc(d), GetUnitLoc(b)) / 1300.00 ) )
call UnitDamageTargetBJ( c, b, m, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call RemoveUnit( d )
endif
endif
endfunction
Принятый ответ
Нашел баг сам. В допустимых целях были указаны неправильные данные. Все спасибо.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ты же не так плох, я думал
хотя, если вокруг цели заклинания есть ещё другие враги, то стоило бы перевыбирать юнита b...
а вообще над кодом надо ещё хорошенько поработать...
Отредактирован Jusper
Критики много, а ответа на вопрос нет =)