Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Func3884 takes nothing returns nothing
- local unit loc_unit01=GetEnumUnit()
- local real loc_real01=real367
- local real loc_real02=real368
- local real loc_real03=loc_real01+loc_real02*GetUnitState(loc_unit01,UNIT_STATE_MAX_LIFE)
- set loc_real03=loc_real03/5
- if IsUnitEnemy(loc_unit01,GetOwningPlayer(unit374)) then
- call DamageTarget(unit374,loc_unit01,3,loc_real03)
- else
- call SetUnitState(loc_unit01,UNIT_STATE_LIFE,GetUnitState(loc_unit01,UNIT_STATE_LIFE)+loc_real03*0.5)
- endif
- call DestroyEffect(AddSpecialEffectTarget("war3mapImported\\FireRayTarget.mdx",loc_unit01,"origin"))
- call TimedReveal(GetOwningPlayer(loc_unit01),2,GetUnitX(unit374),GetUnitY(unit374),500)
- set loc_unit01=null
- endfunction
- function Func3885 takes nothing returns boolean
- local trigger t=GetTriggeringTrigger()
- local integer h=GetHandleId(t)
- local integer c=(LoadInteger(HY,(h),(34)))
- local unit caster=(LoadUnitHandle(HY,(h),(2)))
- local real face=GetUnitFacing(caster)
- local real facerad=face*bj_DEGTORAD
- local location loc1=GetUnitLoc(caster)
- local real height=GetLocationZ(loc1)
- local location loc2=Location(GetUnitX(caster)+real363*Cos(facerad),GetUnitY(caster)+real363*Sin(facerad))
- local real heightTarget=GetLocationZ(loc2)
- local lightning l1=(LoadLightningHandle(HY,(h),(676)))
- local lightning l2=(LoadLightningHandle(HY,(h),(677)))
- local lightning l3=(LoadLightningHandle(HY,(h),(678)))
- local lightning l4=(LoadLightningHandle(HY,(h),(679)))
- local lightning l5=(LoadLightningHandle(HY,(h),(680)))
- local real alpha=1
- local real x
- local real y
- local real r1
- local real l1x1
- local real l1y1
- local real l1z1
- local real l1x2
- local real l1y2
- local real l1z2
- local real l2x1
- local real l2y1
- local real l2z1
- local real l2x2
- local real l2y2
- local real l2z2
- local real l3x1
- local real l3y1
- local real l3z1
- local real l3x2
- local real l3y2
- local real l3z2
- local real l4x1
- local real l4y1
- local real l4z1
- local real l4x2
- local real l4y2
- local real l4z2
- local real l5x1
- local real l5y1
- local real l5z1
- local real l5x2
- local real l5y2
- local real l5z2
- local group g
- local real orderX
- local real orderY
- local integer loc_integer03
- local real orderA
- local real dunno
- local real orderAFixed
- local boolean loc_boolean01=false
- local boolean loc_boolean02=false
- local unit loc_unit02=(LoadUnitHandle(HY,(h),(17)))
- local unit loc_unit03=null
- local unit loc_unit04=null
- local real loc_real44
- local real loc_real45
- local real loc_real46
- local real loc_real47=(LoadReal(HY,(h),(688)))
- local boolean loc_boolean03=(LoadBoolean(HY,(h),(689)))
- local boolean loc_boolean04=(LoadBoolean(HY,(h),(672)))
- local real loc_real48
- local ubersplat loc_ubersplat01
- local real loc_real49=(LoadReal(HY,(h),(23)))
- local real loc_real50=(LoadReal(HY,(h),(24)))
- local real loc_real51
- local real loc_real52
- local real loc_real53
- local real loc_real54=5
- if GetUnitCurrentOrder(caster)==852001 then
- call DisableTrigger(t)
- call InterruptUnit(caster)
- call EnableTrigger(t)
- endif
- call RemoveLocation(loc1)
- call RemoveLocation(loc2)
- if IsUnitPaused(caster)==false and(GetTriggerEventId()==EVENT_UNIT_ISSUED_POINT_ORDER or GetTriggerEventId()==EVENT_UNIT_ISSUED_TARGET_ORDER)then
- set x=GetUnitX(caster)
- set y=GetUnitY(caster)
- if GetIssuedOrderId()!=852490 and GetIssuedOrderId()!=852185 and GetIssuedOrderId()!=852600 then//ancestralspirit, acolyteharvest - birds target, channel
- call DisableTrigger(t)
- call InterruptUnit(caster)
- call EnableTrigger(t)
- elseif GetIssuedOrderId()==852185 then//target spirit
- if DistanceBetweenXY(GetUnitX(caster),GetUnitY(caster),GetOrderPointX(),GetOrderPointY())>1400 then//far away
- call DisableTrigger(t)
- call InterruptUnit(caster)
- //call Error(GetOwningPlayer(caster),GetObjectName(''))
- call EnableTrigger(t)
- elseif RAbsBJ(RAbsBJ(AngleBetweenXY(GetUnitX(caster),GetUnitY(caster),GetOrderPointX(),GetOrderPointY()))-RAbsBJ(GetUnitFacing(caster)))>30 then
- call DisableTrigger(t)
- call InterruptUnit(caster)
- //call Error(GetOwningPlayer(caster),GetObjectName(''))
- call EnableTrigger(t)
- endif
- endif
- if GetIssuedOrderId()==851971 then
- if GetTriggerEventId()==EVENT_UNIT_ISSUED_TARGET_ORDER then
- set orderX=GetUnitX(GetOrderTargetUnit())
- set orderY=GetUnitY(GetOrderTargetUnit())
- else
- set orderX=GetOrderPointX()
- set orderY=GetOrderPointY()
- endif
- set orderA=AngleBetweenXY(orderX,orderY,x,y)
- if orderA<0 then
- set orderA=orderA+360
- endif
- set orderAFixed=face-orderA
- if orderAFixed<0 then
- set orderAFixed=orderAFixed+360
- endif
- if orderAFixed<180 then
- set loc_boolean01=true
- set dunno=face+6
- else
- set loc_boolean02=true
- set dunno=face-6
- endif
- set loc_real47=AngleBetweenXY(orderX,orderY,x,y)+180
- call SaveReal(HY,(h),(688),((loc_real47)*1.0))
- endif
- elseif GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT or GetTriggerEventId()==EVENT_WIDGET_DEATH or(LoadInteger(HY,(GetHandleId(caster)),(704)))==-1 or c>=6.0/.02 or IsUnitDisabled(caster)or IsUnitSilenced(caster)then
- if GetTriggerEventId()!=EVENT_UNIT_SPELL_EFFECT or(GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT and(GetSpellAbilityId()=='A1Z3' or GetSpellAbilityId()=='A1RK' or GetSpellAbilityId()=='A315' or GetSpellAbilityId()=='A27H'))then
- call SaveInteger(HY,(GetHandleId((caster))),((4312)),(2))
- call Func0281(caster)
- call SetUnitPathing(caster,true)
- call RemoveUnit(LoadUnitHandle(HY,h,0))
- call FlushChildHashtable(HY,(h))
- call CleanTrigger(t)
- call UnitRemoveAbility(caster,'A205')
- call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1Z3',false)
- call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A205',false)
- if(LoadInteger(HY,(GetHandleId(caster)),(704)))==0 or(LoadInteger(HY,(GetHandleId(caster)),(704)))=='A1YY' then
- call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1YY',true)
- endif
- call DestroyLightning(l1)
- call DestroyLightning(l2)
- call DestroyLightning(l3)
- call DestroyLightning(l4)
- call DestroyLightning(l5)
- call StopSound(sound065,false,true)
- endif
- elseif GetTriggerEventId()==EVENT_UNIT_ISSUED_ORDER then
- if GetIssuedOrderId()==String2OrderIdBJ("immolation")then
- set loc_boolean03=true
- endif
- if GetIssuedOrderId()==String2OrderIdBJ("unimmolation")then
- set loc_boolean03=false
- endif
- call SaveBoolean(HY,(h),(689),(loc_boolean03))
- else
- set orderA=face-loc_real47
- if orderA<-180 then
- set orderA=orderA+360
- elseif orderA>180 then
- set orderA=orderA-360
- endif
- set loc_real48=1
- if c<35 and loc_boolean04 then
- set loc_real48=7
- endif
- if orderA<(-1*loc_real48)then
- set face=face+loc_real48
- elseif orderA>loc_real48 then
- set face=face-loc_real48
- else
- set loc_boolean04=false
- call SaveBoolean(HY,(h),(672),(loc_boolean04))
- set face=loc_real47
- endif
- if((LoadInteger(HY,(GetHandleId((caster))),((4301))))==1)==false then
- call SetUnitFacing(caster,face)
- endif
- set facerad=face*bj_DEGTORAD
- set c=c+1
- call SaveInteger(HY,(h),(34),(c))
- set r1=real363
- set x=GetUnitX(caster)+50*Cos(facerad)
- set y=GetUnitY(caster)+50*Sin(facerad)
- if loc_boolean03 and IsUnitEnsnared(caster)==false and IsUnitDisabled(caster)==false then
- if((LoadInteger(HY,(GetHandleId((caster))),((4331))))==1) then
- set loc_real54=loc_real54*2
- endif
- set loc_real46=facerad
- set loc_real44=SafeX50(GetUnitX(caster)+loc_real54*Cos(loc_real46))
- set loc_real45=SafeY50(GetUnitY(caster)+loc_real54*Sin(loc_real46))
- call KillTrees(loc_real44,loc_real45,200)
- call SetUnitX(caster,loc_real44)
- call SetUnitY(caster,loc_real45)
- endif
- call SetUnitState(caster,UNIT_STATE_LIFE,GetUnitState(caster,UNIT_STATE_LIFE)-GetUnitState(caster,UNIT_STATE_LIFE)*0.06*0.02)
- call KillTrees(x,y,200)
- if ModuloInteger(c,10)==0 then
- set group030=GetAvailableGroup()
- set tt_unit1=caster
- set loc_integer03=0
- loop
- exitwhen loc_integer03*50>real363
- set orderX=x+loc_integer03*50*Cos(facerad)
- set orderY=y+loc_integer03*50*Sin(facerad)
- set g=GetAvailableGroup()
- call GroupEnumUnitsInRange(g,orderX,orderY,155,Condition(function DefaultEnemyFilter))
- call GroupAddGroup(g,group030)
- call GroupEnumUnitsInRange(g,orderX,orderY,155,Condition(function Func0329))
- call GroupAddGroup(g,group030)
- call KillGroup(g)
- if ModuloInteger(loc_integer03,3)==0 then
- call TimedReveal(GetOwningPlayer(caster),2,orderX,orderY,225)
- endif
- set loc_integer03=loc_integer03+1
- endloop
- set unit374=caster
- set integer517=GetUnitAbilityLevel(caster,'A1YY')
- set loc_real53=(I2R(c)/50.0)/6
- set real367=(5*integer517+10)+(5*integer517+10)*loc_real53
- set real368=(integer517+loc_real53*(integer517))/100
- call GroupRemoveUnit(group030,caster)
- call ForGroup(group030,function Func3884)
- call KillGroup(group030)
- set g=null
- set group030=null
- endif
- if IsDead(caster)==false then
- if loc_unit02!=null then
- set r1=DistanceBetweenUnits(caster,loc_unit02)
- endif
- set l1x1=x
- set l1y1=y
- set l1z1=height+200
- set l1x2=l1x1+r1*Cos(facerad)
- set l1y2=l1y1+r1*Sin(facerad)
- set l1z2=heightTarget
- set l2x1=x+real364*Cos((face-90)*bj_DEGTORAD)
- set l2y1=y+real365*Cos((face-90)*bj_DEGTORAD)
- set l2z1=height+200
- set l2x2=l2x1+r1*Cos(facerad)
- set l2y2=l2y1+r1*Sin(facerad)
- set l2z2=heightTarget
- set l3x1=x+real364*Cos((face+90)*bj_DEGTORAD)
- set l3y1=y+real365*Cos((face+90)*bj_DEGTORAD)
- set l3z1=height+200
- set l3x2=l3x1+r1*Cos(facerad)
- set l3y2=l3y1+r1*Sin(facerad)
- set l3z2=heightTarget
- set l4x1=x
- set l4y1=y
- set l4z1=height+200+real366
- set l4x2=l4x1+r1*Cos(facerad)
- set l4y2=l4y1+r1*Sin(facerad)
- set l4z2=heightTarget
- set l5x1=x
- set l5y1=y
- set l5z1=height+200-real366
- set l5x2=l5x1+r1*Cos(facerad)
- set l5y2=l5y1+r1*Sin(facerad)
- set l5z2=heightTarget
- if ModuloInteger(c,10)==0 and r1==real363 then
- set orderX=GetUnitX(caster)+(real363)*Cos(facerad)
- set orderY=GetUnitY(caster)+(real363)*Sin(facerad)
- call DestroyEffect(AddSpecialEffect("war3mapImported\\FireRayTarget.mdx",orderX,orderY))
- endif
- if ModuloInteger(c,10)==0 then
- call SetSoundPosition(sound065,GetUnitX(caster),GetUnitY(caster),100)
- set orderX=GetUnitX(caster)+(r1)*Cos(facerad)
- set orderY=GetUnitY(caster)+(r1)*Sin(facerad)
- set loc_ubersplat01=CreateUbersplat(orderX,orderY,"SRAY",255,255,255,255,false,false)
- call SetUbersplatRenderAlways(loc_ubersplat01,true)
- call Func0250(loc_ubersplat01,10)
- set loc_ubersplat01=null
- endif
- call MoveLightningEx(l1,false,l1x1,l1y1,l1z1,l1x2,l1y2,l1z2)
- call MoveLightningEx(l2,false,l2x1,l2y1,l2z1,l2x2,l2y2,l2z2)
- call MoveLightningEx(l3,false,l3x1,l3y1,l3z1,l3x2,l3y2,l3z2)
- call MoveLightningEx(l4,false,l4x1,l4y1,l4z1,l4x2,l4y2,l4z2)
- call MoveLightningEx(l5,false,l5x1,l5y1,l5z1,l5x2,l5y2,l5z2)
- call SetLightningColor(l1,1.00,1.00,1.00,alpha)
- call SetLightningColor(l2,1.00,1.00,1.00,alpha)
- call SetLightningColor(l3,1.00,1.00,1.00,alpha)
- call SetLightningColor(l4,1.00,1.00,1.00,alpha)
- call SetLightningColor(l5,1.00,1.00,1.00,alpha)
- endif
- endif
- set t=null
- set caster=null
- set l1=null
- set l2=null
- set l3=null
- set l4=null
- set l5=null
- set loc1=null
- set loc2=null
- return false
- endfunction
- function Func3886 takes nothing returns nothing
- local trigger t=CreateTrigger()
- local integer h=GetHandleId(t)
- local unit caster=GetTriggerUnit()
- local real x=GetUnitX(caster)
- local real y=GetUnitY(caster)
- local real angle=AngleBetweenXY(x,y,GetSpellTargetX(),GetSpellTargetY())*bj_DEGTORAD
- local real dx=SafeX50(x+real363*Cos(angle))
- local real dy=SafeY50(y+real363*Sin(angle))
- local lightning l1=AddLightning("SRAY",false,x,y,dx,dy)
- local lightning l2=AddLightning("SRAY",false,x,y,dx,dy)
- local lightning l3=AddLightning("SRAY",false,x,y,dx,dy)
- local lightning l4=AddLightning("SRAY",false,x,y,dx,dy)
- local lightning l5=AddLightning("SRAY",false,x,y,dx,dy)
- local unit dummy
- if GetUnitAbilityLevel(caster,'A14K')>0 then
- set dummy=CreateUnit(GetOwningPlayer(caster),'e00E',x,y,0)
- call UnitAddAbility2(dummy,'A14K')
- call SaveUnitHandle(HY,h,0,dummy)
- set dummy=null
- endif
- call SetUnitFacing(caster,angle*bj_RADTODEG)
- call StartSound(sound065)
- call SetSoundPosition(sound065,x,y,100)
- call TriggerRegisterTimerEvent(t,0.02,true)
- call TriggerRegisterDeathEvent(t,caster)
- call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_ISSUED_TARGET_ORDER)
- call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_ISSUED_POINT_ORDER)
- call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_ISSUED_ORDER)
- call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_SPELL_EFFECT)
- call TriggerAddCondition(t,Condition(function Func3885))
- call SaveUnitHandle(HY,(h),(2),(caster))
- call SaveReal(HY,(h),(13),((angle)*1.0))
- call SaveReal(HY,(h),(688),((angle*bj_RADTODEG)*1.0))
- call SaveLightningHandle(HY,(h),(676),(l1))
- call SaveLightningHandle(HY,(h),(677),(l2))
- call SaveLightningHandle(HY,(h),(678),(l3))
- call SaveLightningHandle(HY,(h),(679),(l4))
- call SaveLightningHandle(HY,(h),(680),(l5))
- call SaveBoolean(HY,(h),(689),(false))
- call SaveBoolean(HY,(h),(672),(true))
- call SaveReal(HY,(h),(688),((angle*bj_RADTODEG)*1.0))
- call SaveReal(HY,(h),(23),((x)*1.0))
- call SaveReal(HY,(h),(24),((y)*1.0))
- call Func0280(caster)
- call SaveInteger(HY,(GetHandleId((caster))),((4312)),(1))
- call SetUnitPathing(caster,false)
- call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1Z3',true)
- call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A205',true)
- call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1YY',false)
- call UnitAddAbility2(caster,'A1Z3')
- call UnitAddAbility2(caster,'A205')
- call TriggerEvaluate(t)
- set t=null
- set caster=null
- set caster=null
- set l1=null
- set l2=null
- set l3=null
- set l4=null
- set l5=null
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement