call SaveUnitHandle(HT,pk,1,GetTriggerUnit())
call TimerStart(t,0,false,function ssA2)
//物理移动,竖直运动采用模拟的重力加速度,因此动画不会因为夸悬崖而表现生硬
set t=CreateTimer()
set pk=GetHandleId(t)
set p=GetUnitLoc(GetTriggerUnit())
call SaveUnitHandle(HT,pk,1,GetTriggerUnit())
//这里的20表示水平移动速率,本技能固定了设置,但预留了参数方便其它需要的调整
call SaveReal(HT,pk,2,20)
call SaveReal(HT,pk,3,GetUnitFacing(GetTriggerUnit())-180)
call SaveReal(HT,pk,4,GetLocationZ(p))
call SaveReal(HT,pk,5,GetUnitMoveSpeed(GetTriggerUnit())/10)
call SaveReal(HT,pk,6,GetUnitFlyHeight(GetTriggerUnit())+GetLocationZ(p))
call SaveEffectHandle(HT,pk,7,AddSpecialEffectTarget("Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile_mini.mdl",GetTriggerUnit(),"foot left"))
call SaveEffectHandle(HT,pk,8,AddSpecialEffectTarget("Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile_mini.mdl",GetTriggerUnit(),"foot right"))
call SaveReal(HT,pk,9,GetUnitMoveSpeed(GetTriggerUnit())/10)
call SaveUnitHandle(HT,pk,10,CreateUnit(GetTriggerPlayer(),'u002',0,0,0))
call TimerStart(t,0.02,true,function ssA4)
call RemoveLocation(p)
set p=null
set t=null
endif
endfunction
//死循环需注意
function ssA1 takes nothing returns nothing
if GetIssuedOrderId()==852100 and LoadBoolean(HT,GetHandleId(GetTriggerUnit()),1111)==false then
call SaveBoolean(HT,GetHandleId(GetTriggerUnit()),1111,true)
call UnitRemoveBuffs(GetTriggerUnit(),false,true)
call IssueImmediateOrder(GetTriggerUnit(),"berserk")
endif
endfunction
function ssT takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterPlayerUnitEvent(t,Player(0),EVENT_PLAYER_UNIT_ISSUED_ORDER,null)
call TriggerAddCondition(t,Condition(function ssA1))
set t=CreateTrigger()
call TriggerRegisterPlayerUnitEvent(t,Player(0),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
call TriggerAddCondition(t,Condition(function ssA6))
set t=null
endfunction
endlibrary
2012年08月01日 08点08分
5