蝙蝠燃油
主要代码(函数从下往上):
function IB4 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer MDI=GetHandleId(t)
local unit TEI=(LoadUnitHandle(XY,(MDI),(2)))
local unit TFI=(LoadUnitHandle(XY,(MDI),(17)))
local integer M4I=(LoadInteger(XY,(GetHandleId(TFI)),(281)))
local boolean IC4=(LoadBoolean(XY,(MDI),(280)))
if GetTriggerEventId()==EVENT_UNIT_DEATH then
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI))
call SaveInteger(XY,(GetHandleId(TFI)),(281),(0))
call FlushChildHashtable(XY,(MDI))
call M7I(t)
call C31(TFI,0,0)
elseif M4I==0 then
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI))
call SaveInteger(XY,(GetHandleId(TFI)),(281),(0))
call FlushChildHashtable(XY,(MDI))
call M7I(t)
elseif GetTriggerEventId()==EVENT_UNIT_DAMAGED and IC4==false then
if M4I>0 and GetUnitAbilityLevel(GetEventDamageSource(),1093748044)>0 and(LoadUnitHandle(XY,(GetHandleId(GetTriggeringTrigger())),(2)))==GetEventDamageSource()then
call SaveBoolean(XY,(MDI),(280),(true))
if F3I then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\LordofFlameMissile\\LordofFlameMissile.mdl",TFI,"chest"))
call TDI(TEI,TFI,1,0.5*(5+5*GetUnitAbilityLevel(TEI,1093748044))*M4I)
elseif LP0==false and GetEventDamage()>12 then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\LordofFlameMissile\\LordofFlameMissile.mdl",TFI,"chest"))
call TDI(TEI,TFI,1,(5+5*GetUnitAbilityLevel(TEI,1093748044))*M4I)
endif
call SaveBoolean(XY,(MDI),(280),(false))
endif
else
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI)*0.3)
endif
set t=null
set TEI=null
set TFI=null
return false
endfunction
function ID4 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer MDI=GetHandleId(t)
local unit TEI=(LoadUnitHandle(XY,(MDI),(2)))
local unit TFI=(LoadUnitHandle(XY,(MDI),(17)))
local real F4O=(LoadReal(XY,(GetHandleId(TFI)),(675)))
local integer StickyCount=(LoadInteger(XY,(GetHandleId(TFI)),(281)))
if(TimerGetElapsed(M))-F4O>=8 then
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI))
call SaveInteger(XY,(GetHandleId(TFI)),(281),(0))
call C31(TFI,0,0)
endif
call FlushChildHashtable(XY,(MDI))
call M7I(t)
set t=null
set TEI=null
set TFI=null
return false
endfunction
function IE4 takes nothing returns nothing
local unit TEI=GetTriggerUnit()
local unit TFI=GetEnumUnit()
local trigger t
local integer MDI
local integer N5I=GetUnitAbilityLevel(TEI,1093748044)
local integer M4I=IMinBJ((LoadInteger(XY,(GetHandleId(TFI)),(281)))+1,10)
if SPI(TFI)then
set TEI=null
set TFI=null
return
endif
call C31(TFI,N5I,M4I)
call SaveInteger(XY,(GetHandleId(TFI)),(281),(M4I))
call SaveReal(XY,(GetHandleId(TFI)),(675),(((TimerGetElapsed(M)))*1.0))
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI)*0.3)
if IsUnitType(TFI,UNIT_TYPE_HERO)==true then
call PQI(GetOwningPlayer(TEI),I2S(M4I)+"!",2,TFI,0.026,50,0,255,216)
endif
if M4I==1 then
set t=CreateTrigger()
set MDI=GetHandleId(t)
call SaveUnitHandle(XY,(MDI),(2),(TEI))
call SaveUnitHandle(XY,(MDI),(17),(TFI))
call SaveBoolean(XY,(MDI),(280),(false))
call TriggerRegisterUnitEvent(t,TFI,EVENT_UNIT_DAMAGED)
call TriggerRegisterUnitEvent(t,TFI,EVENT_UNIT_DEATH)
call TriggerRegisterTimerEvent(t,1,true)
call TriggerAddCondition(t,Condition(function IB4))
endif
set t=CreateTrigger()
set MDI=GetHandleId(t)
call TriggerRegisterTimerEvent(t,8,false)
call TriggerAddCondition(t,Condition(function ID4))
call SaveUnitHandle(XY,(MDI),(2),(TEI))
call SaveUnitHandle(XY,(MDI),(17),(TFI))
set t=null
set TEI=null
set TFI=null
endfunction
function IF4 takes nothing returns nothing
local group g=M2I()
local location l=GetSpellTargetLoc()
local real x=GetLocationX(l)
local real y=GetLocationY(l)
local unit TEI=GetTriggerUnit()
call GroupEnumUnitsInRange(g,x,y,400,Condition(function AB1))
call ForGroup(g,function IE4)
call QAI(GetOwningPlayer(TEI),2,x,y,500)
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x,y))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x,y+130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x,y-130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x+130,y))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x+130,y+130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x+130,y-130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x-130,y))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x-130,y+130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x-130,y-130))
call RemoveLocation(l)
call MOI(g)
set g=null
set l=null
set TEI=null
endfunction
function IG4 takes nothing returns boolean
if GetSpellAbilityId()==1093748044 then //使用的技能是燃油
call IF4()
其中C31应该是用来改变技能状态的等级
主要代码(函数从下往上):
function IB4 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer MDI=GetHandleId(t)
local unit TEI=(LoadUnitHandle(XY,(MDI),(2)))
local unit TFI=(LoadUnitHandle(XY,(MDI),(17)))
local integer M4I=(LoadInteger(XY,(GetHandleId(TFI)),(281)))
local boolean IC4=(LoadBoolean(XY,(MDI),(280)))
if GetTriggerEventId()==EVENT_UNIT_DEATH then
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI))
call SaveInteger(XY,(GetHandleId(TFI)),(281),(0))
call FlushChildHashtable(XY,(MDI))
call M7I(t)
call C31(TFI,0,0)
elseif M4I==0 then
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI))
call SaveInteger(XY,(GetHandleId(TFI)),(281),(0))
call FlushChildHashtable(XY,(MDI))
call M7I(t)
elseif GetTriggerEventId()==EVENT_UNIT_DAMAGED and IC4==false then
if M4I>0 and GetUnitAbilityLevel(GetEventDamageSource(),1093748044)>0 and(LoadUnitHandle(XY,(GetHandleId(GetTriggeringTrigger())),(2)))==GetEventDamageSource()then
call SaveBoolean(XY,(MDI),(280),(true))
if F3I then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\LordofFlameMissile\\LordofFlameMissile.mdl",TFI,"chest"))
call TDI(TEI,TFI,1,0.5*(5+5*GetUnitAbilityLevel(TEI,1093748044))*M4I)
elseif LP0==false and GetEventDamage()>12 then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\LordofFlameMissile\\LordofFlameMissile.mdl",TFI,"chest"))
call TDI(TEI,TFI,1,(5+5*GetUnitAbilityLevel(TEI,1093748044))*M4I)
endif
call SaveBoolean(XY,(MDI),(280),(false))
endif
else
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI)*0.3)
endif
set t=null
set TEI=null
set TFI=null
return false
endfunction
function ID4 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer MDI=GetHandleId(t)
local unit TEI=(LoadUnitHandle(XY,(MDI),(2)))
local unit TFI=(LoadUnitHandle(XY,(MDI),(17)))
local real F4O=(LoadReal(XY,(GetHandleId(TFI)),(675)))
local integer StickyCount=(LoadInteger(XY,(GetHandleId(TFI)),(281)))
if(TimerGetElapsed(M))-F4O>=8 then
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI))
call SaveInteger(XY,(GetHandleId(TFI)),(281),(0))
call C31(TFI,0,0)
endif
call FlushChildHashtable(XY,(MDI))
call M7I(t)
set t=null
set TEI=null
set TFI=null
return false
endfunction
function IE4 takes nothing returns nothing
local unit TEI=GetTriggerUnit()
local unit TFI=GetEnumUnit()
local trigger t
local integer MDI
local integer N5I=GetUnitAbilityLevel(TEI,1093748044)
local integer M4I=IMinBJ((LoadInteger(XY,(GetHandleId(TFI)),(281)))+1,10)
if SPI(TFI)then
set TEI=null
set TFI=null
return
endif
call C31(TFI,N5I,M4I)
call SaveInteger(XY,(GetHandleId(TFI)),(281),(M4I))
call SaveReal(XY,(GetHandleId(TFI)),(675),(((TimerGetElapsed(M)))*1.0))
call SetUnitTurnSpeed(TFI,GetUnitDefaultTurnSpeed(TFI)*0.3)
if IsUnitType(TFI,UNIT_TYPE_HERO)==true then
call PQI(GetOwningPlayer(TEI),I2S(M4I)+"!",2,TFI,0.026,50,0,255,216)
endif
if M4I==1 then
set t=CreateTrigger()
set MDI=GetHandleId(t)
call SaveUnitHandle(XY,(MDI),(2),(TEI))
call SaveUnitHandle(XY,(MDI),(17),(TFI))
call SaveBoolean(XY,(MDI),(280),(false))
call TriggerRegisterUnitEvent(t,TFI,EVENT_UNIT_DAMAGED)
call TriggerRegisterUnitEvent(t,TFI,EVENT_UNIT_DEATH)
call TriggerRegisterTimerEvent(t,1,true)
call TriggerAddCondition(t,Condition(function IB4))
endif
set t=CreateTrigger()
set MDI=GetHandleId(t)
call TriggerRegisterTimerEvent(t,8,false)
call TriggerAddCondition(t,Condition(function ID4))
call SaveUnitHandle(XY,(MDI),(2),(TEI))
call SaveUnitHandle(XY,(MDI),(17),(TFI))
set t=null
set TEI=null
set TFI=null
endfunction
function IF4 takes nothing returns nothing
local group g=M2I()
local location l=GetSpellTargetLoc()
local real x=GetLocationX(l)
local real y=GetLocationY(l)
local unit TEI=GetTriggerUnit()
call GroupEnumUnitsInRange(g,x,y,400,Condition(function AB1))
call ForGroup(g,function IE4)
call QAI(GetOwningPlayer(TEI),2,x,y,500)
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x,y))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x,y+130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x,y-130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x+130,y))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x+130,y+130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x+130,y-130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x-130,y))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x-130,y+130))
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadBlood\\UndeadBloodGargoyle.mdl",x-130,y-130))
call RemoveLocation(l)
call MOI(g)
set g=null
set l=null
set TEI=null
endfunction
function IG4 takes nothing returns boolean
if GetSpellAbilityId()==1093748044 then //使用的技能是燃油
call IF4()
其中C31应该是用来改变技能状态的等级