call FlushHashInteger(TargetIndex)
//清空哈希表中的TargetIndex整数位
call FlushStoredMission(udg_GC,(MissionKey))
//清空游戏缓存udg_GC中 MissionKey的项目
call DisableTriggerCustom(t)
//关闭触发器t
endif
set t=null
//清空变量t
set U1=null
//清空变量U1
set U=null
//清空变量U
set U2=null
//清空变量U2
set l=null
//清空变量l
return false
//返回 假
endfunction
function TouZhi_ShiLongQiShi_BianShen takes unit u returns boolean
//已完成
return GetUnitTypeId(u)=='H00F' or GetUnitTypeId(u)=='H00E' or GetUnitTypeId(u)=='H00G'
//返回 单位u的单位类型是"龙骑士(绿龙)" 或者 单位u的单位类型是"龙骑士(红龙)" 或者 单位u的单位类型是"龙骑士(蓝龙)"
endfunction
function TouZhi_Acti takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local unit U=TouZhi_PickRandomUnit(U1)
//创建局部单位变量U 并使之= 函数TouZhi_PickRandomUnit(单位U1)的返回值
local unit U2=GetSpellTargetUnit()
//创建局部单位变量U2 并使之=技能施放目标单位
local trigger t=CreateTrigger()
//创建局部触发器变量t 并使之= 执行这个函数的触发器
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
call SetUnitAnimationByIndex(U1,4)
//播放单位U1的#4动画
call PauseUnit(U,true)
//暂停单位U
call SetUnitPathing(U,false)
//关闭单位U的碰撞
if TouZhi_ShiLongQiShi(U)==false then
//如果 单位U的单位类型不是"变身以后的龙骑士" 则
call UnitAddAbility(U,'Amrf')
//给单位U添加"乌鸦形态"技能
call UnitRemoveAbility(U,'Amrf')
//对单位U删除"乌鸦形态"技能
endif
call StoreInteger(udg_GC,((I2S(H2I(((U)))))),("state"+("Tossed")),(1))
//在游戏缓存udg_GC的 将单位U的地址转化为字符串的项目 的"state"+"Tossed"类别中 存入整数:1
call StoreInteger(udg_GC,(MissionKey),("Hero"),H2I((U1)))
//在游戏缓存udg_GC的 MissionKey项目 的"Hero"类别中 存入整数:单位U1的地址
call StoreInteger(udg_GC,(MissionKey),("Source"),H2I((U)))
//在游戏缓存udg_GC的 MissionKey项目 的"Source"类别中 存入整数:单位U的地址
call StoreInteger(udg_GC,(MissionKey),("TargetIndex"),(SaveHashUnit(U2)))
//在游戏缓存udg_GC的 MissionKey项目 的"TargetIndex"类别中 存入整数:单位U2的哈希表整数位
call StoreInteger(udg_GC,(MissionKey),("FX"),H2I((AddSpecialEffectTarget("Abilities\\Spells\\Human\\FlakCann\\FlakTarget.mdl",U1,"origin"))))
//在单位U1的脚下创建<高射炮火(目标)>的特殊效果 并将它的地址存入游戏缓存udg_GC的 MissionKey项目 的"FX"类别中
call StoreReal(udg_GC,(MissionKey),("x0"),((GetUnitX(U2))*1.0))
//在游戏缓存udg_GC的 MissionKey项目 的"x0"类别中 存入实数:单位U2的X坐标
call StoreReal(udg_GC,(MissionKey),("y0"),((GetUnitY(U2))*1.0))
//在游戏缓存udg_GC的 MissionKey项目 的"y0"类别中 存入实数:单位U2的Y坐标
call TriggerRegisterTimerEvent(t,0.02,true)
//为触发器t注册事件:每0.02秒触发一次
call TriggerAddCondition(t,Condition(function TouZhi_Main))
//为触发器t添加条件:TouZhi_Main
set U1=null
//清空变量U1
set U=null
//清空变量U
set U2=null
//清空变量U2
set t=null
//清空变量t
endfunction
function TouZhi_Check takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local unit U=TouZhi_PickRandomUnit(U1)
//创建局部单位变量U 并使之= 函数TouZhi_PickRandomUnit(单位U1)的返回值
local unit U2=GetSpellTargetUnit()
//创建局部单位变量U2 并使之=技能施放目标单位
if U==null then
//如果 单位U是空单位 则
call UnitESCSpell(U1)
//命令单位U1取消使用技能
call DisplayErrorMessage(GetOwningPlayer(U1),(GetObjectName(('n0DA'))))
//对单位U1所属的玩家显示出错信息:"没有可以投掷的单位"
elseif GetOwningPlayer(U2)==GetOwningPlayer(U)then
//否则如果 单位U2所属的玩家=单位U所属的玩家 则
call UnitESCSpell(U1)
//命令单位U1取消使用技能
call DisplayErrorMessage(GetOwningPlayer(U1),(GetObjectName(('n0CY'))))
//对单位U1所属的玩家显示出错信息:"不能投掷你自己的单位"
endif
set U1=null
//清空变量U1
set U=null
//清空变量U
set U2=null
//清空变量U2
endfunction
function TouZhi_Conditi takes nothing returns boolean
//已完成
if GetSpellAbilityId()=='A0BZ' then
//如果 使用的技能是"投掷" 则
if GetTriggerEventId()==EVENT_PLAYER_UNIT_SPELL_CAST then
//如果 触发事件是单位开始施放技能 则
call TouZhi_Check()
//执行函数TouZhi_Check()
else
//否则
call TouZhi_Acti()
//执行函数TouZhi_Acti()
endif
endif
return false
//返回 假
endfunction
function TouZhi_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_CAST)
//为触发器t注册事件:任意单位开始施放技能
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function TouZhi_Conditi))