|
发表于 2006-5-24 21:55:18
|
显示全部楼层
哟荷 死鱼同志什么时候开始研究技能了
如果没有猜错的话原理应该和我以前做的差不多
function Trig_ShengWuDianChi_2_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetAttacker()) == \'e013\' ) ) then
return false
endif
if ( not ( GetTriggerUnit() == udg_Spell_ShengWuDianChi_Unit_B ) ) then
return false
endif
return true
endfunction
function Trig_ShengWuDianChi_2_Func002001 takes nothing returns boolean
return ( UnitHasBuffBJ(udg_Spell_ShengWuDianChi_Unit_B, \'B00M\') == true )
endfunction
function Trig_ShengWuDianChi_2_Func005C takes nothing returns boolean
if ( not ( IsUnitAlly(udg_Spell_ShengWuDianChi_Unit_B, GetOwningPlayer(udg_Spell_ShengWuDianChi_Unit_A)) == true ) ) then
return false
endif
return true
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MECHANICAL) == false )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002002001 takes nothing returns boolean
return ( IsUnitInGroup(GetFilterUnit(), udg_Spell_ShengWuDianChi_Group) == false )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002002002001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MAGIC_IMMUNE) == false )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002002002002 takes nothing returns boolean
return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002002002 takes nothing returns boolean
return GetBooleanAnd( Trig_ShengWuDianChi_2_Func007Func002002001003002002002001(), Trig_ShengWuDianChi_2_Func007Func002002001003002002002002() )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002002 takes nothing returns boolean
return GetBooleanAnd( Trig_ShengWuDianChi_2_Func007Func002002001003002002001(), Trig_ShengWuDianChi_2_Func007Func002002001003002002002() )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003002 takes nothing returns boolean
return GetBooleanAnd( Trig_ShengWuDianChi_2_Func007Func002002001003002001(), Trig_ShengWuDianChi_2_Func007Func002002001003002002() )
endfunction
function Trig_ShengWuDianChi_2_Func007Func002002001003 takes nothing returns boolean
return GetBooleanAnd( Trig_ShengWuDianChi_2_Func007Func002002001003001(), Trig_ShengWuDianChi_2_Func007Func002002001003002() )
endfunction
function Trig_ShengWuDianChi_2_Func007Func003C takes nothing returns boolean
if ( not ( udg_Spell_ShengWuDianChi_Unit_B == null ) ) then
return false
endif
return true
endfunction
function Trig_ShengWuDianChi_2_Func007C takes nothing returns boolean
if ( not ( udg_Spell_ShengWuDianChi_Integer_A < ( 2 + ( 1 * udg_Spell_ShengWuDianChi_Integer_B ) ) ) ) then
return false
endif
return true
endfunction
function Trig_ShengWuDianChi_2_Actions takes nothing returns nothing
set udg_Spell_ShengWuDianChi_Unit_A = GetAttacker()
loop
exitwhen ( Trig_ShengWuDianChi_2_Func002001() )
call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.10))
endloop
set udg_Spell_ShengWuDianChi_Integer_A = ( udg_Spell_ShengWuDianChi_Integer_A + 1 )
call GroupAddUnitSimple( udg_Spell_ShengWuDianChi_Unit_B, udg_Spell_ShengWuDianChi_Group )
if ( Trig_ShengWuDianChi_2_Func005C() ) then
call SetUnitLifeBJ( udg_Spell_ShengWuDianChi_Unit_B, ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Spell_ShengWuDianChi_Unit_B) + ( 50.00 + ( 100.00 * I2R(udg_Spell_ShengWuDianChi_Integer_B) ) ) ) )
else
call UnitDamageTargetBJ( udg_Spell_ShengWuDianChi_Unit_A, udg_Spell_ShengWuDianChi_Unit_B, ( 50.00 + ( 100.00 * I2R(udg_Spell_ShengWuDianChi_Integer_B) ) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING )
endif
set udg_Spell_ShengWuDianChi_Point = GetUnitLoc(udg_Spell_ShengWuDianChi_Unit_B)
if ( Trig_ShengWuDianChi_2_Func007C() ) then
set udg_Spell_ShengWuDianChi_Unit_B = GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(896.00, udg_Spell_ShengWuDianChi_Point, Condition(function Trig_ShengWuDianChi_2_Func007Func002002001003)))
if ( Trig_ShengWuDianChi_2_Func007Func003C() ) then
call DoNothing( )
else
call CreateNUnitsAtLoc( 1, \'e013\', GetOwningPlayer(udg_Spell_ShengWuDianChi_Unit_A), udg_Spell_ShengWuDianChi_Point, bj_UNIT_FACING )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_Spell_ShengWuDianChi_Group )
call SetUnitPositionLoc( GetLastCreatedUnit(), udg_Spell_ShengWuDianChi_Point )
call SetUnitAbilityLevelSwapped( \'A050\', GetLastCreatedUnit(), udg_Spell_ShengWuDianChi_Integer_B )
call IssueTargetOrderBJ( GetLastCreatedUnit(), \"attackonce\", udg_Spell_ShengWuDianChi_Unit_B )
call UnitApplyTimedLifeBJ( 3.00, \'BTLF\', GetLastCreatedUnit() )
call ShowUnitHide( GetLastCreatedUnit() )
endif
else
call DoNothing( )
endif
call RemoveLocation(udg_Spell_ShengWuDianChi_Point)
endfunction |
|