文档库 最新最全的文档下载
当前位置:文档库 › dota曙光酒馆英雄技能jass源码

dota曙光酒馆英雄技能jass源码

=====<近卫>=========曙光酒馆====
<月之骑士> E005
月光 A042
月之骑士聚集月亮的能量将它导向地面,对一个敌方单位造成伤害和短时间的晕眩。

月刃 A041
使月之骑士通过弹射可以攻击多个目标,受到弹射攻击的单位所受伤害依次衰减35%。

function YueRen_Conditions takes nothing returns boolean
//已完成
if(not(GetLearnedSkill()=='A041'))then
//如果 学习的技能不是"月刃" 则
return false
//返回 假
endif
return true
//返回 真
endfunction

function YueRen_Actions takes nothing returns nothing
//已完成
local unit u=GetTriggerUnit()
//创建局部单位变量u 并使之=触发单位
local player p=GetOwningPlayer(u)
//创建局部玩家变量p 并使之=单位u所属的玩家
local integer Level=GetUnitAbilityLevelSwapped('A041',GetTriggerUnit())
//定义局部整数变量Level 并使之= 单位u的"月刃"的技能等级
call SetPlayerTechResearchedSwap('Remg',Level,p)
//设置玩家p的"月刃"的科技等级为Level
endfunction

function YueRen_Init takes nothing returns nothing
//已完成
set gg_trg_YueRen=CreateTrigger()
//为全局触发器变量gg_trg_YueRen创建新的触发器
call TriggerRegisterAllUnitEvent(gg_trg_YueRen,EVENT_PLAYER_HERO_SKILL)
//为触发器gg_trg_YueRen注册事件:任意单位学习技能
call TriggerAddCondition(gg_trg_YueRen,Condition(function YueRen_Conditions))
//为触发器gg_trg_YueRen添加条件:YueRen_Conditions
call TriggerAddAction(gg_trg_YueRen,function YueRen_Actions)
//为触发器gg_trg_YueRen添加动作:YueRen_Actions
endfunction


月之祝福 A062
周围300范围内的友方单位因为受到了月之祝福而增加了基础远程攻击力。

月蚀 A054 A杖:A00U
以月亮之名,将月光随机洒向附近700范围内的敌方单位,造成的伤害和当前月光技能等级相当,无晕眩效果。

function YueShi_Filter takes nothing returns boolean
//已完成
if(GetUnitTypeId((GetFilterUnit()))=='u009')or(IsUnitMagicImmue(GetFilterUnit())==false and IsUnitVisible(GetFilterUnit(),GetOwningPlayer(udg_Globals_Unit_1))and IsUnitEnemy(udg_Globals_Unit_1,GetOwningPlayer(GetFilterUnit()))and(GetUnitAbilityLevel(GetFilterUnit(),'A04R')==0 and IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE)==false and IsUnitDead(GetFilterUnit())==false and(GetUnitAbilityLevel((GetFilterUnit()),'Bcyc')>0)==false)and(IsUnitType(GetFilterUnit(),UNIT_TYPE_ANCIENT)==false or JingLingXiongHuozheHuanHuo(GetFilterUnit())))then
//如果 匹配单位是"怨灵" 或者 匹配单位不是魔法免疫的 以及 匹配单位可以被单位udg_Globals_Unit_1所属的玩家看见 以及 单位udg_Globals_Unit_1和匹配单位所属的玩家处于敌对关系 以及 匹配单位不是特殊单位 以及匹配单位不是建筑物 以及 匹配单位是活着的 以及 匹配单位没有被龙卷风/风杖吹到空中 以及 匹配单位不是远古生物 或者 匹配单位是

精灵熊或者幻火 则
if(GetStoredInteger(udg_GC,(udg_Global_String_1),((I2S(H2I((GetFilterUnit())))))))//如果 从游戏缓存udg_GC udg_Global_String_1项目 的将匹配单位的地址转化为字符串的类别中 读取的整数 < udg_Global_Integer_1 则
return true
//返回 真
endif
endif
return false
//返回 假
endfunction

function YueShi_Main takes nothing returns boolean
//已完成
local trigger t=GetTriggeringTrigger()
//创建局部触发器变量t 并使之= 执行这个函数的触发器
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local unit U1=GetUnit(MissionKey,"Hero")
//创建局部单位变量U1 并使之=从游戏缓存udg_GC MissionKey项目 的"Hero"类别中 读取的单位
local integer LucentLevel=(GetStoredInteger(udg_GC,(MissionKey),("LucentLevel")))
//定义局部整数变量LucentLevel 并使之=从游戏缓存udg_GC MissionKey项目 的"LucentLevel"类别中 读取的整数
local integer Limit=(GetStoredInteger(udg_GC,(MissionKey),("Limit")))
//定义局部整数变量Limit 并使之=从游戏缓存udg_GC MissionKey项目 的"Limit"类别中 读取的整数
local integer TargetLimit=(GetStoredInteger(udg_GC,(MissionKey),("TargetLimit")))
//定义局部整数变量TargetLimit 并使之=从游戏缓存udg_GC MissionKey项目 的"TargetLimit"类别中 读取的整数
local group g=CreateGroupCustom()
//创建局部单位组变量g
local real x=GetUnitX(U1)
//定义局部实数变量x 并使之= 单位U1的X坐标
local real y=GetUnitY(U1)
//定义局部实数变量y 并使之= 单位U1的Y坐标
local unit U2
//定义局部单位变量U2
set udg_Globals_Unit_1=U1
//设置 全局单位变量udg_Globals_Unit_1= 单位U1
set udg_Global_Integer_1=TargetLimit
//设置 udg_Global_Integer_1=TargetLimit
set udg_Global_String_1=(I2S(H2I((t))))
//设置 全局字符串变量udg_Global_String_1 =将触发器t的地址转化为字符串
call GroupEnumUnitsInRange(g,x,y,700,Condition(function YueShi_Filter))
//添加点(x,y)周围700范围满足条件YueShi_Filter的所有单位到单位组g
set U2=GroupPickRandomUnit(g)
//设置 单位U2= 单位组g中的随机单位
call ClearGroupCustom(g)
//清空单位组g
if IsUnitDead(U1)==false and U2!=null and(GetUnitTypeId((U2))=='u009')==false then
//如果 单位U1是活着的 以及 单位U2不是空单位 以及 单位U2的类型不是"怨灵" 则
//楼主留言:"怨灵"是死灵飞龙的大招召唤的生物
call StoreInteger(udg_GC,(udg_Global_String_1),((I2S(H2I((U2))))),((GetStoredInteger(udg_GC,(udg_Global_String_1),((I2S(H2I((U2)))))))+1))
//从游戏缓存udg_GC udg_Global_String_1项目 的将单位U2的地址转化为字符串的类别中 读取整数
//将这个值自身增加1后 存入原来的地方
call AddSpecialEffectTargetUnitTimedCustom("effects\\Eclipse.mdx",U2,"origin",3)
//在单位U2的脚

下创建"effects\\Eclipse.mdx"的特殊效果 并在3秒或者单位死亡后删除
call UnitDamageTargetCustom(U1,U2,1,LucentLevel*75)
//使单位U1对单位U2造成LucentLevel*75点伤害 攻击类型:法术 伤害类型:火焰
endif
if(GetTriggerEvalCount(t)+1)==Limit or IsUnitDead(U1)==true then
//如果 触发器t的条件的执行次数+1=Limit 或者 单位U1死亡 则
call FlushStoredMission(udg_GC,(MissionKey))
//清空游戏缓存udg_GC中 MissionKey的项目
call DisableTriggerCustom(t)
//关闭触发器t
endif
set t=null
//清空变量t
set U1=null
//清空变量U1
set g=null
//清空变量g
set U2=null
//清空变量U2
return false
//返回 假
endfunction

function YueShi_Actions takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local trigger t=CreateTrigger()
//创建局部触发器变量t
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local integer Limit
//定义局部整数变量Limit
local integer LucentLevel=GetUnitAbilityLevel(U1,'A042')
//定义局部整数变量LucentLevel 并使之= 单位U1的"月光"的技能等级
local integer TargetLimit
//定义局部整数变量TargetLimit
if GetSpellAbilityId()=='A054' then
//如果 使用的技能是"月蚀" 则
set Limit=1+3*GetUnitAbilityLevel(U1,'A054')
//设置 Limit= 单位U1的"月蚀"的技能等级*3 + 1
set TargetLimit=4
//设置 TargetLimit=4
else
//否则
set Limit=4*GetUnitAbilityLevel(U1,'A00U')
//设置 Limit= 单位U1的"月蚀(A杖)"的技能等级*4
set TargetLimit=5
//设置 TargetLimit=5
endif
call StoreInteger(udg_GC,(MissionKey),("LucentLevel"),(LucentLevel))
//在游戏缓存udg_GC的 MissionKey项目 的"LucentLevel"类别中 存入整数:LucentLevel
call StoreInteger(udg_GC,(MissionKey),("Limit"),(Limit))
//在游戏缓存udg_GC的 MissionKey项目 的"Limit"类别中 存入整数:Limit
call StoreInteger(udg_GC,(MissionKey),("TargetLimit"),(TargetLimit))
//在游戏缓存udg_GC的 MissionKey项目 的"TargetLimit"类别中 存入整数:TargetLimit
call StoreInteger(udg_GC,(MissionKey),("Hero"),H2I((U1)))
//在游戏缓存udg_GC的 MissionKey项目 的"Hero"类别中 存入整数:单位U1的地址
call TriggerRegisterTimerEvent(t,0.6,true)
//为触发器t注册事件:每0.6秒触发一次
call TriggerAddCondition(t,Condition(function YueShi_Main))
//为触发器t添加条件:YueShi_Main
call TriggerEvaluate(t)
//立刻执行一次触发器t的条件函数
set t=null
//清空变量t
set U1=null
//清空变量U1
endfunction

function YueShi_Conditions takes nothing returns boolean
//已完成
if GetSpellAbilityId()=='A054' or GetSpellAbilityId()=='A00U' then
//如果 使用的技能是"月蚀" 或者 使用的技能是"月蚀(A杖)" 则
call YueShi_Actions()
//执行函数YueShi_Actions()
endif
return false
//返

回 假
endfunction

function YueShi_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function YueShi_Conditions))
//为触发器t添加条件:YueShi_Conditions
set t=null
//清空变量t
endfunction


<矮人狙击手> Usyl
散弹 A064
往空中发射一发榴弹,随机向目标区域撒播爆炸性的弹片,每个弹片造成20-35点的穿刺物理伤害。

function SanDan_Conditions takes nothing returns boolean
//已完成
return GetSpellAbilityId()=='A064'
//返回 使用的技能是否="散弹"
endfunction

function SanDan_Actions takes nothing returns nothing
//已完成
local location l=GetSpellTargetLoc()
//创建局部点变量l 并使之=技能施放目标点
local location m
//定义局部点变量m
local location u=GetUnitLoc(GetTriggerUnit())
//创建局部点变量u 并使之= 触发单位的位置
local integer Level=GetUnitAbilityLevel(GetTriggerUnit(),'A064')
//定义局部整数变量Level 并使之= 单位U1的"散弹"的技能等级
local integer c=4+4*Level
//定义局部整数变量c 并使之=4+4*Level
local unit t=GetTriggerUnit()
//创建局部单位变量t 并使之=触发单位
local unit p
//定义局部单位变量p
call CreateFogModifier_Custom(GetOwningPlayer(t),1+0.5*Level,GetLocationX(l),GetLocationY(l),400)
//为单位t的所属的玩家创建持续(1+0.5*Level)秒的可见度修正器 效果作用于点l的400范围
loop
//循环
exitwhen c<=0
//当 c<0时 退出循环
set p=CreateUnit(GetOwningPlayer(t),'e00J',GetUnitX(t),GetUnitY(t),90)
//设置单位p= 为单位t所属的玩家 在单位t的位置上 创建的辅助单位 面向90度
set m=LocationFromLocationByDistanceAndAngle(l,GetRandomReal(0,360),GetRandomReal(0,360))
//设置点m= 距离点l 1~360之间的随机距离 1~360之间的随机角度 的点
call IssuePointOrderLoc(p,"attackground",m)
//使单位p对点m发布"攻击地面"命令
call UnitApplyTimedLifeBJ(0.50,'BTLF',p)
//设置单位p的生命时限为0.5秒
call RemoveLocation(m)
//清除点m
set c=c-1
//使c自身减少1
endloop
//循环结束
call RemoveLocation(u)
//清除点u
call RemoveLocation(l)
//清除点l
endfunction

function SanDan_Init takes nothing returns nothing
//已完成
set gg_trg_SanDan=CreateTrigger()
//为全局触发器变量gg_trg_SanDan创建新的触发器
call TriggerRegisterAllUnitEvent(gg_trg_SanDan,EVENT_PLAYER_UNIT_SPELL_EFFECT)
//为触发器gg_trg_SanDan注册事件:任意单位发动技能效果
call TriggerAddCondition(gg_trg_SanDan,Condition(function SanDan_Conditions))
//为触发器gg_trg_SanDan添加条件:SanDan_Conditions
call TriggerAddAction(gg_trg_SanDan,function SanDan_Actions)
//为触发器gg_trg_SanDan添加动作:SanDan_Actions
endf

unction


爆头 A03S
一枪爆头造成额外的伤害,并造成极短时间的晕眩。

瞄准 A03U
狙击手运用矮人卓越的机械技术对他的火枪进行现代化改装,被动地提升火枪的射程。

function MiaoZhun_Conditions takes nothing returns boolean
//已完成
return GetLearnedSkill()=='A03U'
//返回 学习的技能是否="瞄准"
endfunction

function MiaoZhun_Actions takes nothing returns nothing
//已完成
call SetPlayerTechResearchedSwap('R005',GetUnitAbilityLevelSwapped('A03U',GetTriggerUnit()),GetOwningPlayer(GetLearningUnit()))
//设置学习技能的单位所属的玩家的"增加射程"的科技等级为:触发单位的"瞄准"的技能等级
endfunction

function MiaoZhun_Init takes nothing returns nothing
//已完成
set gg_trg_MiaoZhun=CreateTrigger()
//为全局触发器变量gg_trg_MiaoZhun创建新的触发器
call TriggerRegisterAllUnitEvent(gg_trg_MiaoZhun,EVENT_PLAYER_HERO_SKILL)
//为触发器gg_trg_MiaoZhun注册事件:任意单位学习技能
call TriggerAddCondition(gg_trg_MiaoZhun,Condition(function MiaoZhun_Conditions))
//为触发器gg_trg_MiaoZhun添加条件:MiaoZhun_Conditions
call TriggerAddAction(gg_trg_MiaoZhun,function MiaoZhun_Actions)
//为触发器gg_trg_MiaoZhun添加动作:MiaoZhun_Actions
endfunction


暗杀 A04P
在花费一定的时间瞄准,在极远的距离对目标造成非常大的伤害。

function AnSha_Damage takes nothing returns boolean
//已完成
local trigger t=GetTriggeringTrigger()
//创建局部触发器变量t 并使之= 执行这个函数的触发器
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local unit U1=GetUnit(MissionKey,"Hero")
//创建局部单位变量U1 并使之=从游戏缓存udg_GC MissionKey项目 的"Hero"类别中 读取的单位
local unit Caster=GetUnit(MissionKey,"Caster")
//创建局部单位变量Caster 并使之=从游戏缓存udg_GC MissionKey项目 的"Caster"类别中 读取的单位
local unit U2=GetUnit(MissionKey,"Target")
//创建局部单位变量U2 并使之=从游戏缓存udg_GC MissionKey项目 的"Target"类别中 读取的单位
local effect FX=GetEffect(MissionKey,"FX")
//创建局部特殊效果变量FX 并使之=从游戏缓存udg_GC MissionKey项目 的"FX"类别中 读取的特殊效果
local player p=GetOwningPlayer(U1)
//创建局部玩家变量p 并使之= 单位U1所属的玩家
call UnitShareVision(U2,p,false)
//使单位U2不再和玩家p共享视野
call DestroyEffect(FX)
//删除特殊效果FX
call RemoveUnit(Caster)
//删除单位Caster
call UnitRemoveAbility(U2,'B06H')
//对触发单位删除"暗杀"的魔法效果
call FlushStoredMission(udg_GC,(MissionKey))
//清空游戏缓存udg_GC中 MissionKey的项目
call DisableTriggerCustom(t)
//关闭触发器t
set t=null
//清空变量t
set U1=null
//清空变量U1
set Caster=null
//清空变量Cas

ter
set U2=null
//清空变量U2
set FX=null
//清空变量FX
set p=null
//清空变量p
return false
//返回 假
endfunction

function AnSha_Actions takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local unit U2=GetSpellTargetUnit()
//创建局部单位变量U2 并使之=技能施放目标单位
local player p=GetOwningPlayer(U1)
//创建局部玩家变量p 并使之= 单位U1所属的玩家
local unit Caster
//定义局部单位变量Caster
local trigger t=CreateTrigger()
//创建局部触发器变量t
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local string s="effects\\Snipe Target.mdx"
//创建局部字符串变量s 并使之="effects\\Snipe Target.mdx"
if IsPlayerAlly(GetLocalPlayer(),p)==false then
//如果 本地玩家和玩家p处于同盟关系 则
set s=""
//设置 s=""
endif
call UnitShareVision(U2,p,true)
//使单位U2和玩家p共享视野
set Caster=CreateUnit(GetOwningPlayer(U2),'e01R',0,0,0)
//设置单位Caster= 为单位U2所属的玩家 在点(0,0)上 创建的辅助单位 面向0度
call UnitAddAbility(Caster,'A0NI')
//给单位Caster添加"命令光环"技能
call StoreInteger(udg_GC,(MissionKey),("Target"),H2I((U2)))
//在游戏缓存udg_GC的 MissionKey项目 的"Target"类别中 存入整数:单位U2的地址
call StoreInteger(udg_GC,(MissionKey),("Hero"),H2I((U1)))
//在游戏缓存udg_GC的 MissionKey项目 的"Hero"类别中 存入整数:单位U1的地址
call StoreInteger(udg_GC,(MissionKey),("Caster"),H2I((Caster)))
//在游戏缓存udg_GC的 MissionKey项目 的"Caster"类别中 存入整数:单位Caster的地址
call StoreInteger(udg_GC,(MissionKey),("FX"),H2I((AddSpecialEffectTarget(s,U2,"overhead"))))
//在单位U2的头顶创建s的特殊效果 并将它的地址存入游戏缓存udg_GC的 MissionKey项目 的"FX"类别中
call TriggerRegisterTimerEvent(t,4,false)
//为触发器t注册事件:在4秒后触发一次
call TriggerRegisterUnitEvent(t,U1,EVENT_UNIT_SPELL_ENDCAST)
//为触发器t注册事件:单位U1施放技能结束
call TriggerAddCondition(t,Condition(function AnSha_Damage))
//为触发器t添加条件:AnSha_Damage
set t=null
//清空变量t
set U1=null
//清空变量U1
set U2=null
//清空变量U2
set Caster=null
//清空变量Caster
set p=null
//清空变量p
endfunction

function AnSha_Conditions takes nothing returns boolean
//已完成
if GetSpellAbilityId()=='A04P' then
//如果 使用的技能是"暗杀" 则
call AnSha_Actions()
//执行函数AnSha_Actions()
endif
return false
//返回 假
endfunction

function AnSha_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_CHANNEL)
//为触发器t注册事件:任意单位准备施

放技能
call TriggerAddCondition(t,Condition(function AnSha_Conditions))
//为触发器t添加条件:AnSha_Conditions
set t=null
//清空变量t
endfunction


<巨魔战将> N016

狂战士之怒 A0BE
巨魔战将化身为近战单位,不再丢掷斧头而将它们作为近战武器。他将获得额外15点攻击力、100点生命值和3点护甲,基础攻击速度提升至1.55秒。移动速度提升20点(4级时提升30点)。有一定几率通过重击造成额外伤害并晕眩2秒。

function KuangZhanShiZhiNu_Conditions takes nothing returns boolean
//已完成
return GetLearnedSkill()=='A0BE' and IsUnitIllusion(GetTriggerUnit())==false
//返回 学习的技能是"狂战士之怒" 以及 触发单位不是幻象
endfunction

function KuangZhanShiZhiNu_Actions takes nothing returns nothing
//已完成
call SetUnitAbilityLevel(GetTriggerUnit(),'A09E',GetUnitAbilityLevel(GetTriggerUnit(),'A0BE'))
//设置触发单位的"击晕"的技能等级为:触发单位的"狂战士之怒"的技能等级
endfunction

function KuangZhanShiZhiNu_Init takes nothing returns nothing
//已完成
set gg_trg_KuangZhanShiZhiNu=CreateTrigger()
//为全局触发器变量gg_trg_KuangZhanShiZhiNu创建新的触发器
call TriggerRegisterAllUnitEvent(gg_trg_KuangZhanShiZhiNu,EVENT_PLAYER_HERO_SKILL)
//为触发器gg_trg_KuangZhanShiZhiNu注册事件:任意单位学习技能
call TriggerAddCondition(gg_trg_KuangZhanShiZhiNu,Condition(function KuangZhanShiZhiNu_Conditions))
//为触发器gg_trg_KuangZhanShiZhiNu添加条件:KuangZhanShiZhiNu_Conditions
call TriggerAddAction(gg_trg_KuangZhanShiZhiNu,function KuangZhanShiZhiNu_Actions)
//为触发器gg_trg_KuangZhanShiZhiNu添加动作:KuangZhanShiZhiNu_Actions
endfunction


在每次使用切换形态时再设置一次等级
以避免在远程状态时学习这个技能
而导致"击晕"技能等级不符的BUG

function KuangZhanShiZhiNu_SetLevel_Conditions takes nothing returns boolean
//已完成
return GetSpellAbilityId()=='A0BE'
//返回 使用的技能是否="狂战士之怒"
endfunction

function KuangZhanShiZhiNu_SetLevel_Actions takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
call SetUnitAbilityLevel(U1,'A09E',GetUnitAbilityLevel(U1,'A0BE'))
//设置单位U1的"击晕"的技能等级为:单位U1的"狂战士之怒"的技能等级
set U1=null
//清空变量U1
endfunction

function KuangZhanShiZhiNu_SetLevel_Init takes nothing returns nothing
//已完成
set gg_trg_KuangZhanShiZhiNu_SetLevel=CreateTrigger()
//为全局触发器变量gg_trg_KuangZhanShiZhiNu_SetLevel创建新的触发器
call TriggerRegisterAllUnitEvent(gg_trg_KuangZhanShiZhiNu_SetLevel,EVENT_PLAYER_UNIT_SPELL_FINISH)
//为触发器gg_trg_KuangZhanShiZhiNu_SetLevel注册事件:任意单位施放技能结束
call TriggerRegisterAllUnitEvent(gg_trg_KuangZhanShiZhiNu_SetLevel,EVENT_PLAYER

_UNIT_SPELL_EFFECT)
//为触发器gg_trg_KuangZhanShiZhiNu_SetLevel注册事件:任意单位发动技能效果
call TriggerAddCondition(gg_trg_KuangZhanShiZhiNu_SetLevel,Condition(function KuangZhanShiZhiNu_SetLevel_Conditions))
//为触发器gg_trg_KuangZhanShiZhiNu_SetLevel添加条件:KuangZhanShiZhiNu_SetLevel_Conditions
call TriggerAddAction(gg_trg_KuangZhanShiZhiNu_SetLevel,function KuangZhanShiZhiNu_SetLevel_Actions)
//为触发器gg_trg_KuangZhanShiZhiNu_SetLevel添加动作:KuangZhanShiZhiNu_SetLevel_Actions
endfunction


致盲 A0BC
通过一束灼热的光线将目标致盲,使他的攻击有一定的几率落空。

狂热光环 A0BD
被动地提升周围500范围内的友方单位的攻击速度。

暴走 A0BB
巨魔战将变得蛮横狂暴,提升他的攻击速度和移动速度。


<暗影萨满> Orkn
叉形闪电 A010
对前方锥面上(第一目标200范围内)的多个目标施放闪电,造成伤害。

妖术 A0RX
将敌方单位变成小动物,他将不能攻击、使用技能或物品,只拥有部分被动技能以及缓慢的移动速度。

枷锁 A00P
使用魔法绑住一个敌方单位,造成40点/秒的伤害,目标不能移动、攻击、使用技能和物品。

群蛇守卫 A00H
召唤8(12)支固定的蛇形守卫来攻击攻击周围的敌方单位与建筑。守卫对魔法免疫,持续40 秒。


<刚背兽> H008
粘稠鼻液 A0FW
用鼻涕包裹一个敌方单位,降低他的移动速度,减少他的护甲。

//楼主留言
//'A0FW' = 粘稠鼻液
//'B02U' = 粘稠鼻液的魔法效果
//'A0FZ' = 酸性炸弹

function NianChouBiYe_Conditions takes nothing returns boolean
//已完成
if(not(GetSpellAbilityId()=='A0FW'))then
//如果 使用的技能不是"粘稠鼻液" 则
return false
//返回 假
endif
return true
//返回 真
endfunction

function NianChouBiYe_KillAllUnitsInGroup takes nothing returns nothing
//已完成
call KillUnit(GetEnumUnit())
//杀死选取单位
endfunction

function NianChouBiYe_GetSpellCasters takes nothing returns boolean
//已完成
return(GetUnitTypeId(GetFilterUnit())=='e00E')
//返回 匹配单位的类型为带有"酸性炸弹"技能的辅助单位
endfunction

function NianChouBiYe_UserData4 takes nothing returns boolean
//已完成
if(not(GetUnitUserData(GetEnumUnit())==4))then
//如果 选取单位的单位自定义值 不等于4 则
return false
//返回假
endif
return true
//返回 真
endfunction

function NianChouBiYe_DieJiaEffect takes nothing returns nothing
//已完成
local location loc=GetUnitLoc(GetTriggerUnit())
//创建局部点变量loc 并使之=触发单位所在的点
call SetUnitPositionLoc(GetEnumUnit(),loc)
//设置选取单位的位置为loc
if(NianChouBiYe_UserData4())then
//如果函数NianChouBiYe_UserData4()值为真 则
call IssueTargetOrder(GetEnumUnit(),"acidbomb",GetSpellTargetUnit())
//使选取单位对技能施放目标单

位使用"酸性炸弹"
else
//否则
call IncUnitAbilityLevel(GetEnumUnit(),'A0FZ')
//提升选取单位的"酸性炸弹"的技能等级1级
call IssueTargetOrder(GetEnumUnit(),"acidbomb",GetSpellTargetUnit())
//使选取单位对技能施放目标单位使用"酸性炸弹"
call SetUnitUserData(GetEnumUnit(),(GetUnitUserData(GetEnumUnit())+1))
//使选取单位的单位自定义值增加1
endif
call RemoveLocation(loc)
//删除点loc
endfunction

function NianChouBiYe_Actions takes nothing returns nothing
//已完成
local location loc=GetUnitLoc(GetTriggerUnit())
//创建局部点变量loc 并使之=触发单位所在的点
local location targetloc=GetUnitLoc(GetSpellTargetUnit())
//创建局部点变量targetloc 并使之=技能施放目标单位所在的点
local group g=CreateGroupCustom()
//创建局部单位组变量g
if(UnitHasBuffBJ(GetSpellTargetUnit(),'B02U')==true)then
//如果 技能施放目标单位带有"粘稠鼻液"的魔法效果 则
call GroupEnumUnitsOfPlayer(g,GetOwningPlayer(GetSpellTargetUnit()),Condition(function NianChouBiYe_GetSpellCasters))
//添加技能施放目标单位所属玩家 并满足条件NianChouBiYe_GetSpellCasters的单位到单位组g
call ForGroupBJ(g,function NianChouBiYe_DieJiaEffect)
//选取单位组g中的所有单位执行函数NianChouBiYe_DieJiaEffect()
else
//否则
call GroupEnumUnitsOfPlayer(g,GetOwningPlayer(GetSpellTargetUnit()),Condition(function NianChouBiYe_GetSpellCasters))
//添加技能施放目标单位所属玩家 并满足条件NianChouBiYe_GetSpellCasters的单位到单位组g
call ForGroupBJ(g,function NianChouBiYe_KillAllUnitsInGroup)
//杀死单位组g中的所有单位
call DisableTrigger(gg_trg_Dummy_Control)
//暂停触发器gg_trg_Dummy_Control
call CreateNUnitsAtLocFacingLocBJ(1,'e00E',GetOwningPlayer(GetSpellTargetUnit()),loc,targetloc)
//为技能施放目标单位所属的玩家 在点loc上 创建一个辅助单位
call EnableTrigger(gg_trg_Dummy_Control)
//恢复触发器gg_trg_Dummy_Control
call UnitAddAbility(bj_lastCreatedUnit,'A0FZ')
//为最后创建的单位添加"酸性炸弹"技能
call SetUnitAbilityLevelSwapped('A0FZ',bj_lastCreatedUnit,((GetUnitAbilityLevelSwapped('A0FW',GetTriggerUnit())*4)-3))
//设置最后创建的单位的"酸性炸弹"的技能等级为:触发单位的"粘稠鼻液"的技能等级*4-3
call IssueTargetOrder(bj_lastCreatedUnit,"acidbomb",GetSpellTargetUnit())
//使最后创建的单位对技能施放目标单位使用"酸性炸弹"
call SetUnitUserData(bj_lastCreatedUnit,1)
//设置最后创建的单位的单位自定义值为1
endif
call ClearGroupCustom(g)
//清空单位组g
call RemoveLocation(loc)
//删除点loc
call RemoveLocation(targetloc)
//删除点targetloc
endfunction

function NianChouBiYe_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)

//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function NianChouBiYe_Conditions))
//为触发器t添加条件:NianChouBiYe_Conditions
call TriggerAddAction(t,function NianChouBiYe_Actions)
//为触发器t添加动作:NianChouBiYe_Actions
endfunction


针刺扫射 A0GP
将身上的尖刺发射出去,对650范围内的敌方单位造成伤害。10秒再次受到刺针扫射的打击会叠加30点额外的伤害,最高可叠加到180点伤害。

function ZhenCiSaoShe_Conditions takes nothing returns boolean
//已完成
return GetSpellAbilityId()=='A0GP'
//返回 使用的技能是否"针刺扫射"
endfunction

function ZhenCiSaoShe_Filter takes nothing returns boolean
//已完成
return IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE)==false and IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(GetTriggerUnit()))and GetUnitAbilityLevel(GetFilterUnit(),'A04R')!=1
//返回 匹配单位不是建筑物 以及 匹配单位和触发单位的所属玩家处于敌对状态 以及 匹配单位不是特殊单位
endfunction

function ZhenCiSaoShe_Damage takes nothing returns nothing
//已完成
local string MissionKey=(I2S(H2I((GetEnumUnit()))))
//创建局部字符串变量MissionKey 并使之=将选取单位的地址转化为字符串
local integer DieJiaCiShu=(GetStoredInteger(udg_GC,(udg_AX),(MissionKey)))
//定义局部整数变量DieJiaCiShu 并使之= 从游戏缓存udg_GC udg_AX项目 的MissionKey类别中 读取的整数
local real Damage=GetMinReal(udg_Globals_Real_1+DieJiaCiShu*30,180)
//设置Damage= udg_Globals_Real_1+DieJiaCiShu*30 这个值不会超过180
call UnitDamageTarget(udg_Globals_Unit_1,GetEnumUnit(),Damage,false,true,ATTACK_TYPE_HERO,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
//使单位udg_Globals_Unit_1对选取单位造成Damage伤害 攻击类型:英雄 伤害类型:普通
call StoreInteger(udg_GC,(udg_AX),(MissionKey),(DieJiaCiShu+1))
//在游戏缓存udg_GC的 udg_AX项目 的MissionKey类别中 存入整数:DieJiaCiShu+1
endfunction

function ZhenCiSaoShe_DropLevel takes nothing returns nothing
//已完成
local string MissionKey=(I2S(H2I((GetEnumUnit()))))
//创建局部字符串变量MissionKey 并使之= 将选取单位的地址转化为字符串
local integer DieJiaCiShu=(GetStoredInteger(udg_GC,(udg_AX),(MissionKey)))
//定义局部整数变量 并使之= 从游戏缓存udg_GC udg_AX项目 的MissionKey类别中 读取的整数
call StoreInteger(udg_GC,(udg_AX),(MissionKey),(DieJiaCiShu-1))
//在游戏缓存udg_GC的 udg_AX项目 的MissionKey类别中 存入整数:DieJiaCiShu-1
endfunction

function ZhenCiSaoShe_DropDamageMod takes nothing returns boolean
//已完成
local trigger t=GetTriggeringTrigger()
//创建局部触发器变量t 并使之= 执行这个函数的触发器
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
loca

l unit U1=GetUnit(MissionKey,"UnitVar")
//定义局部整数变量U1 并使之=从游戏缓存udg_GC MissionKey项目 的"UnitVar"类别中 读取的单位
local group G=GetGroup(MissionKey,"GroupVar")
//创建局部单位组变量G 并使之=从游戏缓存udg_GC MissionKey项目 的"GroupVar"类别中 读取的单位组
set udg_AX=(I2S(H2I((U1))))
//设置全局字符串变量udg_AX= 将单位U1的地址转化为字符串
call ForGroup(G,function ZhenCiSaoShe_DropLevel)
//选取单位组G中的所有单位 执行函数ZhenCiSaoShe_DropLevel()
call ClearGroupCustom(G)
//清空单位组G
call FlushStoredMission(udg_GC,(MissionKey))
//清空游戏缓存udg_GC中 MissionKey的项目
call DisableTriggerCustom(t)
//关闭触发器t
set t=null
//清空变量t
return false
//返回 假
endfunction

function ZhenCiSaoShe_Actions takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local group G=CreateGroupCustom()
//创建局部单位组G
local trigger t=CreateTrigger()
//创建局部触发器变量t
if IsUnitType(U1,UNIT_TYPE_HERO)==false then
//如果单位U1不是英雄 则
set U1=PlayerHero[GetPlayerId(GetOwningPlayer(U1))]
//设置U1= 单位U1的所属玩家所控制的英雄
endif
call GroupEnumUnitsInRange(G,GetUnitX(U1),GetUnitY(U1),650,Condition(function ZhenCiSaoShe_Filter))
//添加单位U1周围650范围 满足条件ZhenCiSaoShe_Filter 的单位到单位组G
set udg_Globals_Unit_1=U1
//设置全局单位变量udg_Globals_Unit_1= 单位U1
set udg_Globals_Real_1=GetUnitAbilityLevel(U1,'A0GP')*20
//设置udg_Globals_Real_1= 单位U1的"针刺扫射"的技能等级*20
set udg_AX=(I2S(H2I((U1))))
//设置全局字符串变量udg_AX= 将单位U1的地址转化为字符串
call ForGroup(G,function ZhenCiSaoShe_Damage)
//选取单位组G中的所有单位 执行函数ZhenCiSaoShe_Damage()
call StoreInteger(udg_GC,((I2S(H2I((t))))),("UnitVar"),H2I((U1)))
//在游戏缓存udg_GC的 将触发器t的地址转化为字符串的项目 的"UnitVar"类别中 存入整数:单位U1的地址
call StoreInteger(udg_GC,((I2S(H2I((t))))),("GroupVar"),H2I((G)))
//在游戏缓存udg_GC的 将触发器t的地址转化为字符串的项目 的"GroupVar"类别中 存入整数:单位组G的地址
call TriggerRegisterTimerEvent(t,10,false)
//为触发器t注册事件:在10秒后触发一次
call TriggerAddCondition(t,Condition(function ZhenCiSaoShe_DropDamageMod))
//为触发器t添加条件:ZhenCiSaoShe_DropDamageMod
set t=null
//清空变量t
endfunction

function ZhenCiSaoShe_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function ZhenCiSaoShe_Conditions))
//为触发器t添加条件:ZhenCiSaoShe_Condit

ions
call TriggerAddAction(t,function ZhenCiSaoShe_Actions)
//为触发器t添加动作:ZhenCiSaoShe_Actions
endfunction


刚毛后背 A0M3
刚背兽的后背有刚毛覆盖,减少他所受到的伤害。

function GangMaoHouBei_Conditions takes nothing returns boolean
//已完成
return GetLearnedSkill()=='A0M3' and IsUnitIllusion(GetTriggerUnit())==false
//返回 学习的技能是"刚毛后背" 以及 触发单位不是幻象
endfunction

function GangMaoHouBei_Filter takes nothing returns boolean
//已完成
if(IsUnitType(GetEventDamageSource(),UNIT_TYPE_STRUCTURE)==true)then
//如果 伤害来源单位是建筑物 则
return false
//返回 假
endif
return true
//返回 真
endfunction

function GangMaoHouBei_Spray takes unit U1 returns nothing
//已完成
local unit Caster=CreateUnit(GetOwningPlayer(U1),'e00E',GetUnitX(U1),GetUnitY(U1),0)
//创建局部单位变量Caster 并使之= 为单位U1所属的玩家 在单位U1的位置上 创建的辅助单位
call UnitAddAbility(Caster,'A0GP')
//给单位Caster添加"针刺扫射"技能
call SetUnitAbilityLevel(Caster,'A0GP',GetUnitAbilityLevel(U1,'A0GP'))
//设置单位Caster的"针刺扫射"的技能等级为单位U1的"针刺扫射"的技能等级
call IssueImmediateOrder(Caster,"fanofknives")
//使单位Caster使用"针刺扫射"技能
endfunction

function GangMaoHouBei_DamageGet takes unit U1,real Damage returns nothing
//已完成
local string MissionKey=(I2S(H2I((U1))))
//创建局部字符串变量MissionKey 并使之=将单位U1的地址转化为字符串
local real DamageStack=(GetStoredReal(udg_GC,(MissionKey),("Bristleback_DamageStack")))
//创建局部实数变量DamageStack 并使之=从游戏缓存udg_GC MissionKey项目 的"Bristleback_DamageStack"类别中 读取的实数
if DamageStack>300 then
//如果DamageStack>300 则
call StoreReal(udg_GC,(MissionKey),("Bristleback_DamageStack"),((0)*1.0))
//在游戏缓存udg_GC的 MissionKey项目 的"Bristleback_DamageStack"类别中 存入实数:0
call GangMaoHouBei_Spray(U1)
//执行函数GangMaoHouBei_Spray(U1)
else
//否则
call StoreReal(udg_GC,(MissionKey),("Bristleback_DamageStack"),((DamageStack+Damage)*1.0))
//在游戏缓存udg_GC的 MissionKey项目 的"Bristleback_DamageStack"类别中 存入实数:DamageStack+Damage
endif
endfunction

function GangMaoHouBei_Main takes nothing returns nothing
//已完成
local unit U2=GetTriggerUnit()
//创建局部单位变量U2 并使之=触发单位
local unit U1=GetEventDamageSource()
//创建局部单位变量U1 并使之=伤害来源单位
local real Angle=AngleBetweenUnits(U1,U2)
//创建局部实数变量Angle 并使之=单位U1和单位U2之间的角度
local real Angle2=GetUnitFacing(U2)
//创建局部实数变量Angle2 并使之=单位U2的面向角度
local real AngleTemp
//创建局部实数变量AngleTemp
local real Damage=GetEventDamage()
//创建局部实数变量Damage 并使之=伤害事件中的

伤害值
local real DamageTemp
//定义局部实数变量DamageTemp
local real AngleSide
//定义局部实数变量AngleSide
if(Damage>10)and GetUnitState(U2,UNIT_STATE_LIFE)>1 then
//如果Damage>10 以及 单位U2是活着的 则
if((Angle2-Angle)<(-180.00))then
//如果Angle2-Angle<-180.00 则
set AngleTemp=(Angle2-Angle1+360)
//设置AngleTemp=Angle2-Angle1+360
else
//否则
if((Angle2-Angle)>180.00)then
//如果Angle2-Angle>-180.00 则
set AngleTemp=(Angle2-Angle1-360)
//设置AngleTemp=Angle2-Angle1-360
else
//否则
set AngleTemp=(Angle2-Angle1)
//设置AngleTemp=Angle2-Angle1
endif
endif
set AngleSide=RAbsBJ(AngleTemp)
//设置AngleSide=AngleTemp的绝对值
if AngleSide<=70 then
//如果AngleSide<70 则
set DamageTemp=GetUnitAbilityLevel(U2,'A0M3')*0.10*Damage
//设置DamageTemp= 单位U2的"刚毛后背"的技能等级*0.1*伤害值
call GangMaoHouBei_DamageGet(U2,Damage-DamageTemp)
//执行函数GangMaoHouBei_DamageGet(U2,Damage-DamageTemp)
call SetUnitState(U2,UNIT_STATE_LIFE,GetUnitState(U2,UNIT_STATE_LIFE)+DamageTemp)
//增加DamageTemp到单位U2的生命值
elseif Angle<=90 then
//否则如果 Angle<90 则
set DamageTemp=GetUnitAbilityLevel(U2,'A0M3')*0.05*Damage
//设置DamageTemp= 单位U2的"刚毛后背"的技能等级*0.05*伤害值
call SetUnitState(U2,UNIT_STATE_LIFE,GetUnitState(U2,UNIT_STATE_LIFE)+DamageTemp)
//增加DamageTemp到单位U2的生命值
endif
endif
endfunction

function GangMaoHouBei_Actions takes nothing returns nothing
//已完成
local trigger t
//定义局部触发器变量t
if GetUnitAbilityLevel(GetTriggerUnit(),'A0M3')==1 then
//如果触发单位的"刚毛后背"的技能等级是1 则
set t=CreateTrigger()
//为触发器t创建新的触发器
call TriggerRegisterUnitEvent(t,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
//为触发器t注册事件:触发单位接受伤害
call TriggerAddCondition(t,Condition(function GangMaoHouBei_Filter))
//为触发器t添加条件:GangMaoHouBei_Filter
call TriggerAddAction(t,function GangMaoHouBei_Main)
//为触发器t添加动作:GangMaoHouBei_Main
endif
endfunction

function GangMaoHouBei_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_HERO_SKILL)
//为触发器t注册事件:任意单位学习技能
call TriggerAddCondition(t,Condition(function GangMaoHouBei_Conditions))
//为触发器t添加条件:GangMaoHouBei_Conditions
call TriggerAddAction(t,function GangMaoHouBei_Actions)
//为触发器t添加动作:GangMaoHouBei_Actions
endfunction


战意 A0FV
刚背兽在使用技能的时候会进入狂暴的状态,大幅提升攻击速度和移动速度,持续10秒,效果最多可以叠加4次。

//楼主留言
//'A0FV' = 战意
//'A0GP' = 针刺扫射
//'A0FW' = 粘稠鼻液
//'A0EF' = 增加攻击速度和移动速度的光环技能 简称"战意加速光环"技能

function ZhanYi_Spell takes nothing returns boolean
//已完成
return GetSpellAbilityId()==('A0GP')or GetSpellAbilityId()==('A0FW')
//返回 使用的技能是"针刺扫射" 或者 使用的技能是"粘稠鼻液"
endfunction

function ZhanYi_Level2Level takes integer Level,integer a returns integer
//已完成
if a==0 then
//如果a=0 则
return 1
//返回 1
else
//否则
return(Level-1)*4+1+a
//返回 (Level-1)*4+1+a
endif
endfunction

function ZhanYi_AssistUnit_Filter takes nothing returns boolean
//已完成
return GetUnitTypeId(GetFilterUnit())=='e00X'
//返回 检查的单位的类型为带有战意加速光环辅助单位
endfunction

function ZhanYi_AssistUnit_Remove takes nothing returns nothing
//已完成
call RemoveUnit(GetEnumUnit())
//删除选取单位
endfunction

function ZhanYi_AssistUnit_Pick takes player p returns nothing
//已完成
local group g=CreateGroupCustom()
//创建单位组变量g
call GroupEnumUnitsOfPlayer(g,p,Condition(function ZhanYi_AssistUnit_Filter))
//添加所有属于p并满足条件ZhanYi_AssistUnit_Filter的单位到单位组g
call ForGroup(g,function ZhanYi_AssistUnit_Remove)
//选取单位组g中的所有单位执行函数ZhanYi_AssistUnit_Remove()
call ClearGroupCustom(g)
//请空单位组g
set g=null
//清空变量g
endfunction

function ZhanYi_Level_Decrease takes nothing returns boolean
//已完成
local trigger t=GetTriggeringTrigger()
//创建局部触发器变量t 并使之=执行这个函数的触发器
local unit U1=GetUnit((I2S(H2I((t)))),"Hero")
//定义局部整数变量U1 并使之=从游戏缓存udg_GC 将触发器t的地址转化为字符串的项目 的"Hero"类别中 读取的单位
local string MissionKey=(I2S(H2I((U1))))
//创建局部字符串变量MissionKey 并使之=将单位U1的地址转化为字符串
local integer Level=GetUnitAbilityLevel(U1,('A0FV'))
//定义局部整数变量Level 并使之=单位U1的"战意"的技能等级
local integer TempInt=ComplexMax((GetStoredInteger(udg_GC,(MissionKey),("Warpath|Level")))-1,0,4)
//创建整数变量TempInt 并使之= 从游戏缓存udg_GC MissionKey项目 的"Warpath|Level"类别中 读取的整数-1 和4之间的最小值 但这个值不会小于0
local unit Caster=GetUnit(MissionKey,"Warpath|Caster")
//创建局部单位变量Caster 并使之=从游戏缓存udg_GC MissionKey项目 的"Warpath|Caster"类别中 读取的单位
if GetUnitTypeId(Caster)=='e00X' then
//如果 单位Caster的类型=带有战意加速光环的辅助单位 则
call SetUnitAbilityLevel(Caster,('A0EF'),ZhanYi_Level2Level(Level,TempInt))
//设置单位Caster的"战意加速光环"的技能等级为:计算"战意加速光环"等级的函数ZhanYi_Level2Level(Level,TempInt)
call StoreInteger(udg_GC,(MissionKey),("Warpath|Level"),(TempInt))
//在游戏缓存udg_GC的 MissionKey项目 的"Warpath|Level"类别中 存入整数:TempInt
else
call ZhanYi_AssistUnit_Pick(GetPlayer((I2S(H2I((t)))

),"p"))
//从游戏缓存udg_GC 将触发器t的地址转化为字符串的项目 的"p"类别中 读取玩家
//选取属于此玩家的所有带有战意加速光环辅助单位 删除这些单位
endif
call FlushStoredMission(udg_GC,((I2S(H2I((t))))))
//清空游戏缓存udg_GC中 将触发器t的地址转化为字符串的项目的类别
call DisableTriggerCustom(t)
//关闭触发器t
set t=null
//清空变量t
set U1=null
//清空变量U1
set Caster=null
//清空变量Caster
return false
//返回 假
endfunction

function ZhanYi_Main takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local string MissionKey=(I2S(H2I((U1))))
//创建局部字符串变量MissionKey 并使之=将单位U1的地址转化为字符串
local unit Caster=GetUnit(MissionKey,"Warpath|Caster")
//创建局部单位变量Caster 并使之=从游戏缓存udg_GC MissionKey项目 的"Warpath|Caster"类别中 读取的单位
local integer Level=GetUnitAbilityLevel(U1,('A0FV'))
//定义局部整数变量Level 并使之=单位U1的"战意"的技能等级
local integer TempInt=ComplexMax((GetStoredInteger(udg_GC,(MissionKey),("Warpath|Level")))+1,0,4)
//创建整数变量TempInt 并使之= 从游戏缓存udg_GC MissionKey项目 的"Warpath|Level"类别中 读取的整数 和4之间的最小值 但这个值不会小于0
local integer TempInt2=ZhanYi_Level2Level(Level,TempInt)
//定义局部整数变量TempInt2 并使之= 计算"战意加速光环"技能等级的函数ZhanYi_Level2Level(Level,TempInt)
local trigger t=CreateTrigger()
//创建局部触发器变量t
call SetUnitAbilityLevel(Caster,('A0EF'),TempInt2)
//设置单位Caster的"战意加速光环"的技能等级为TempInt2
call StoreInteger(udg_GC,(MissionKey),("Warpath|Level"),(TempInt))
//在游戏缓存udg_GC的 MissionKey项目 的"Warpath|Level"类别中 存入整数:TempInt
call StoreInteger(udg_GC,((I2S(H2I((t))))),("Hero"),H2I((U1)))
//在游戏缓存udg_GC的 将触发器t的地址转化为字符串的项目 的"Hero"类别中 存入整数:单位U1的地址
call StoreInteger(udg_GC,((I2S(H2I((t))))),("p"),H2I((GetOwningPlayer(U1))))
//在游戏缓存udg_GC的 将触发器t的地址转化为字符串的项目 的"p"类别中 存入整数:单位U1的所属玩家
call TriggerRegisterTimerEvent(t,10,false)
//为触发器t注册事件:在10秒后触发一次
call TriggerAddCondition(t,Condition(function ZhanYi_Level_Decrease))
//为触发器t添加条件:ZhanYi_Level_Decrease
set t=null
//清空变量t
endfunction

function ZhanYi_Conditions takes nothing returns boolean
//已完成
return GetLearnedSkill()==('A0FV')and GetUnitAbilityLevel(GetTriggerUnit(),('A0FV'))==1 and IsUnitIllusion(GetTriggerUnit())==false
//返回 学习的技能="战意" 以及 触发单位的"战意"的技能等级为1 以及 触发单位不是幻象
endfunction

function ZhanYi_Actions takes nothing retur

ns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local integer Level=GetUnitAbilityLevel(U1,('A0FV'))
//创建单位整数变量Level 并使之=单位U1的"战意"的技能等级
local unit Caster=CreateUnit(GetOwningPlayer(U1),'e00X',0,0,0)
//创建局部单位变量Caster 并使之= 为单位U1所属的玩家 在点(0,0)上 创建的辅助单位
local trigger t=CreateTrigger()
//创建局部触发器变量t
call UnitAddAbility(Caster,('A0EF'))
//给单位Caster添加"战意加速光环"技能
call StoreInteger(udg_GC,((I2S(H2I((U1))))),("Warpath|Caster"),H2I((Caster)))
//在游戏缓存udg_GC的 将单位U1的地址转化为字符串的项目 的"Warpath|Caster"类别中 存入整数:单位Caster的地址
call SetUnitInvulnerable(Caster,true)
//设置单位Caster无敌的
call UnitAddAbility(Caster,'Aloc')
//给单位Caster添加"蝗虫"技能
call TriggerRegisterUnitEvent(t,U1,EVENT_UNIT_SPELL_EFFECT)
//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function ZhanYi_Spell))
//为触发器t添加条件:ZhanYi_Spell
call TriggerAddAction(t,function ZhanYi_Main)
//为触发器t添加动作:ZhanYi_Main
endfunction

function ZhanYi_Init takes nothing returns nothing
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_HERO_SKILL)
//为触发器t注册事件:任意单位学习技能
call TriggerAddCondition(t,Condition(function ZhanYi_Conditions))
//为触发器t添加条件:ZhanYi_Conditions
call TriggerAddAction(t,function ZhanYi_Actions)
//为触发器t添加动作:ZhanYi_Actions
call SpellPreload(('A0EF'))
//预读技能"战意加速光环"
endfunction


<熊猫酒仙> Npbm
雷霆一击 A06M
重击地面,对周围的敌方地面单位造成伤害,降低他们的攻击速度和移动速度,持续4.25(8)秒。

醉酒云雾 Acdh
用酒精迷醉敌方单位,降低其移动速度,并使攻击有一定几率落空,持续7(12)秒。

醉拳 A0MX
以一定的几率闪避攻击,同时也能以一定的几率造成1.8倍伤害的致命一击。

元素分离 A0MQ
熊猫酒仙分身为3个具有特殊能力的元素战士。在分身期间,只要任意一个元素战士还存活,熊猫酒仙就能从中复生(复生顺序:大地---->风暴---->火焰)。


<半人马酋长> H000
马蹄践踏 A00S
猛击地面,对周围的敌方地面单位造成伤害,并使他们晕眩。

双刃剑 A00L
半人马酋长聚集起内在的力量进行一次威力巨大的攻击,同时对自己和目标造成伤害,并造成目标0.01秒的晕眩。

function ShuangRenJian_Actions takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local unit U2=GetSpellTargetUnit()
//创建局部单位变量U2 并使之=技能施放目标单位
loca

l integer Level=GetUnitAbilityLevel(U1,'A00L')
//定义局部整数变量Level 并使之= 单位U1的"双刃剑"的技能等级
call UnitDamageTargetCustom(U1,U2,1,100+Level*75)
//使单位U1对单位U2造成 100+Level*75 的伤害 攻击类型:法术 伤害类型:火焰
call UnitDamageTargetCustom(U1,U1,1,100+Level*75)
//使单位U2对单位U1造成 100+Level*75 的伤害 攻击类型:法术 伤害类型:火焰
set U1=null
//清空变量U1
set U2=null
//清空变量U2
endfunction

function ShuangRenJian_Conditions takes nothing returns boolean
//已完成
if GetSpellAbilityId()=='A00L' then
//如果 使用的技能是"双刃剑" 则
call ShuangRenJian_Actions()
//执行函数ShuangRenJian_Actions()
endif
return false
//返回 假
endfunction

function ShuangRenJian_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function ShuangRenJian_Conditions))
//为触发器t添加条件:ShuangRenJian_Conditions
set t=null
//清空变量t
endfunction


反击 A00V
半人马酋长能迅速回敬任何攻击他的敌人。

function FanJi_Conditions takes nothing returns boolean
//已完成
return GetUnitAbilityLevel(GetTriggerUnit(),'A00V')>0 and GetUnitAbilityLevel(GetAttacker(),'A04R')!=1 and IsUnitAlly(GetTriggerUnit(),GetOwningPlayer(GetAttacker()))==false and GetUnitTypeId(GetAttacker())!='n0F5'
//返回 触发单位的"反击"的技能等级>0 以及 攻击单位不是特殊单位 以及触发单位和攻击单位的所属玩家是敌对的 以及 攻击单位不是墓碑中产生的小僵尸
endfunction

function FanJi_Actions takes nothing returns nothing
//已完成
call UnitDamageTargetBJ(GetTriggerUnit(),GetAttacker(),12.50*GetUnitAbilityLevel(GetTriggerUnit(),'A00V'),ATTACK_TYPE_HERO,DAMAGE_TYPE_NORMAL)
//使触发单位对攻击单位造成 12.5*触发单位的"反击"的技能等级 的伤害 攻击类型:英雄 伤害类型:普通
endfunction

function FanJi_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_ATTACKED)
//为触发器t注册事件:任意单位被攻击
call TriggerAddCondition(t,Condition(function FanJi_Conditions))
//为触发器t添加条件:FanJi_Conditions
call TriggerAddAction(t,function FanJi_Actions)
//为触发器t添加动作:FanJi_Actions
endfunction


刚毅不屈 A01L
半人马酋长硕大的身躯可以承受相当大的打击。


<赏金猎人> Naka
投掷飞镖 A004
赏金猎人向目标投掷一个飞镖,造成伤害以及0.01秒的晕眩。

忍术 A000
有一定的几率闪避攻击,并且有15%的几率造成额外的伤害。

疾风步 A07A
使英雄在一段时间内隐身,

打破隐身状态的攻击造成额外伤害。

追踪术 A0B4
追踪一个敌方英雄30秒或直到他死去,期间你得到该单位的视野。被追踪英雄附近的友军将获得20%的移动速度提升。被追踪英雄护甲会被削弱。如果被追踪之英雄死亡,你将得到赏金奖励。

//楼主留言
//'A0B4' = 追踪术
//'e01V' = 辅助单位
//'A115' = 增加移动速度的被动技能

function ZhuiZongShu_Award_TextTag takes nothing returns nothing
//已完成
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local string MissionKey=(I2S(H2I((U1))))
//创建局部字符串变量MissionKey 并使之=将单位U1的地址转化为字符串
local player p=GetPlayer(MissionKey,"Track|SourcePlayer")
//创建局部玩家变量p 并使之=从游戏缓存udg_GC MissionKey项目 的"Track|SourcePlayer"类别中 读取的玩家
local integer Level=(GetStoredInteger(udg_GC,(MissionKey),("Track|Level")))
//定义局部整数变量Level 并使之= 从游戏缓存udg_GC MissionKey项目 的"Track|Level"类别中 读取的整数
local texttag tt=CreateTextTag()
//创建局部漂浮文字变量texttag
local integer Award
//定义局部整数变量Award
if Level==1 then
//如果 Level=1 则
set Award=75
//设置Award=75
elseif Level==2 then
//如果 Level=1 则
set Award=150
//设置Award=150
else
//否则
set Award=225
//设置Award=255
endif
call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)+Award)
//为玩家p增加Award数量的金钱
call SetTextTagText(tt,"+"+I2S(Award),0.025)
//设置漂浮文字tt的内容为:+将Award转化为字符串 比例为0.025
call SetTextTagPosUnit(tt,PlayerHero[GetPlayerId(p)],0)
//设置漂浮文字tt到玩家p所操作的英雄的位置 Z轴偏移0
call SetTextTagColor(tt,255,220,0,255)
//设置漂浮文字tt的颜色为 红255 绿220 蓝0 不透明度255
call SetTextTagVelocity(tt,0,0.03)
//设置漂浮文字tt的速率 X轴为0 Y轴为0.03
call SetTextTagVisibility(tt,false)
//隐藏漂浮文字tt
if GetLocalPlayer()==p then
//如果本地玩家=p 则
call SetTextTagVisibility(tt,true)
//显示漂浮文字tt
endif
call SetTextTagFadepoint(tt,2)
//设置漂浮文字tt的消逝时间点为2秒
call SetTextTagLifespan(tt,3)
//设置漂浮文字tt的存在时间为3秒
call SetTextTagPermanent(tt,false)
//设置漂浮文字tt的永久性为假
set U1=null
//清空变量U1
set p=null
//清空变量p
set tt=null
//清空变量tt
endfunction

function ZhuiZongShu_Award takes nothing returns boolean
//已完成
if IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO)==true and(GetStoredReal(udg_GC,((I2S(H2I((GetTriggerUnit()))))),("Track|Time")))>(TimerGetElapsed(III))then
//如果 触发单位是英雄 以及 从游戏缓存udg_GC 将触发单位的地址转化为字符串的项目 的"Track|Time"类别中 读取的实数>经过的时间 则
call ZhuiZongShu_Award

_TextTag()
//执行函数ZhuiZongShu_Award_TextTag()
endif
return false
//返回 假
endfunction

function ZhuiZongShu_End takes nothing returns boolean
//已完成
local trigger t=GetTriggeringTrigger()
//创建局部触发器变量t 并使之= 执行这个函数的触发器
local string MissionKey=(I2S(H2I((t))))
//清空游戏缓存udg_GC中 MissionKey的项目
local unit U2=GetUnit(MissionKey,"Target")
//定义局部整数变量U2 并使之=从游戏缓存udg_GC MissionKey项目 的"Target"类别中 读取的单位
local unit Caster=GetUnit(MissionKey,"Caster")
//创建局部单位变量Caster 并使之=从游戏缓存udg_GC MissionKey项目 的"Caster"类别中 读取的单位
call SetUnitX(Caster,GetUnitX(U2))
//设置单位Caster的X坐标为单位U2的X坐标
call SetUnitY(Caster,GetUnitY(U2))
//设置单位Caster的Y坐标为单位U2的Y坐标
if GetTriggerEventId()==EVENT_UNIT_DEATH or(GetTriggerEvalCount(t)>10 and GetUnitAbilityLevel(U2,'B00L')==0)then
//如果 触发事件=单位死亡 或者 ( 触发器条件执行次数>10 以及 单位U2不带有追踪术的魔法效果 ) 则
call KillUnit(Caster)
//杀死单位Caster
call FlushStoredMission(udg_GC,(MissionKey))
//清空游戏缓存udg_GC中 MissionKey的项目
call DisableTriggerCustom(t)
//关闭触发器t
endif
set t=null
//清空变量t
set U2=null
//清空变量U2
set Caster=null
//清空变量Caster
return false
//返回 假
endfunction

function ZhuiZongShu_Actions takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local unit U2=GetSpellTargetUnit()
//创建局部单位变量U2 并使之=技能施放目标单位
local unit U1=GetTriggerUnit()
//创建局部单位变量U1 并使之=触发单位
local unit Caster=CreateUnit(GetOwningPlayer(U2),'e01V',GetUnitX(U2),GetUnitY(U2),0)
//创建局部单位变量Caster 并使之= 为单位U2所属的玩家 在单位U2的位置上 创建的辅助单位
call UnitAddAbility(Caster,'A115')
//给单位Caster添加"增加移动速度的被动技能"
call TriggerRegisterTimerEvent(t,0.1,true)
//为触发器t注册事件:每0.1秒触发一次
call TriggerRegisterUnitEvent(t,GetSpellTargetUnit(),EVENT_UNIT_DEATH)
//为触发器t注册事件:技能施放目标单位死亡
call TriggerAddCondition(t,Condition(function ZhuiZongShu_End))
//为触发器t添加条件:ZhuiZongShu_End
call StoreInteger(udg_GC,(MissionKey),("Target"),H2I((U2)))
//在游戏缓存udg_GC的 MissionKey项目 的"Target"类别中 存入整数:单位U2的地址
call StoreInteger(udg_GC,(MissionKey),("Caster"),H2I((Caster)))
//在游戏缓存udg_GC的 MissionKey项目 的"Caster"类别中 存入整数:单位Caster的地址
call StoreReal(udg_GC,((I2S(H2I((GetSpellTargetUnit()))))),("Track|Time"),(((TimerGetElapsed(III))+3

0)*1.0))
//在游戏缓存udg_GC的 将技能施放目标单位的地址转化为字符串的项目 的"Track|Time"类别中 存入实数:经过的时间+30秒
call StoreInteger(udg_GC,((I2S(H2I((GetSpellTargetUnit()))))),("Track|SourcePlayer"),H2I((GetOwningPlayer(GetTriggerUnit()))))
//在游戏缓存udg_GC的 将技能施放目标单位的地址转化为字符串的项目 的"Track|SourcePlayer"类别中 存入整数:触发单位所属玩家的地址
call StoreInteger(udg_GC,((I2S(H2I((GetSpellTargetUnit()))))),("Track|Level"),(GetUnitAbilityLevel(GetTriggerUnit(),'A0B4')))
//在游戏缓存udg_GC的 将技能施放目标单位的地址转化为字符串的项目 的"Track|Level"类别中 存入整数:触发单位的"追踪术"的技能等级
set t=null
//清空变量t
set U2=null
//清空变量U2
set U1=null
//清空变量U1
set Caster=null
//清空变量Caster
endfunction

function ZhuiZongShu_Conditions takes nothing returns boolean
//已完成
if GetSpellAbilityId()=='A0B4' then
//如果 使用的技能="追踪术" 则
call ZhuiZongShu_Actions()
//执行函数ZhuiZongShu_Actions()
endif
return false
//返回 假
endfunction

function ZhuiZongShu_Init takes nothing returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
//为触发器t注册事件:任意单位发动技能效果
call TriggerAddCondition(t,Condition(function ZhuiZongShu_Conditions))
//为触发器t添加条件:ZhuiZongShu_Conditions
set t=CreateTrigger()
//设置触发器变量t= 新创建的触发器
call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_DEATH)
//为触发器t注册事件:任意单位死亡
call TriggerAddCondition(t,Condition(function ZhuiZongShu_Award))
//为触发器t添加条件:ZhuiZongShu_Award
set t=null
//清空变量t
endfunction


<龙骑士> Hlgr
火焰气息 A03F
向面前锥形范围吐出一道火焰,对敌方单位造成伤害。

神龙摆尾 A0AR
龙骑士在近身距离猛击对手,造成伤害并晕眩。

function ShenLongBaiWei_Actions takes nothing returns nothing
//已完成
local unit u=GetTriggerUnit()
//创建局部单位变量u 并使之=触发单位
if GetUnitTypeId(u)=='H00G' or GetUnitTypeId(u)=='H00F' or GetUnitTypeId(u)=='H00E' then
//如果单位u是绿龙形态/红龙形态/蓝龙形态
call SetUnitAnimation(u,"stand")
//播放单位u的"站立"动画
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Defend\\DefendCaster.mdl",u,"head"))
//在单位u的头部创建<防御(施法者)>的特殊效果 并在播放一次后删除
elseif GetUnitTypeId(u)=='Hlgr' then
//否则如果 单位u是龙骑士(未变身) 则
call SetUnitAnimation(u,"stand defend")
//播放单位u的"站立防御"动画
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Defend\\DefendCaster.mdl",u,"origin"))
//在单位u的脚下创建<

相关文档
相关文档 最新文档