Advertisement
DracoL1ch

phoenix's Sun Ray

Aug 6th, 2015
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Func3884 takes nothing returns nothing
  2.     local unit loc_unit01=GetEnumUnit()
  3.     local real loc_real01=real367
  4.     local real loc_real02=real368
  5.     local real loc_real03=loc_real01+loc_real02*GetUnitState(loc_unit01,UNIT_STATE_MAX_LIFE)
  6.     set loc_real03=loc_real03/5
  7.     if IsUnitEnemy(loc_unit01,GetOwningPlayer(unit374)) then
  8.         call DamageTarget(unit374,loc_unit01,3,loc_real03)
  9.     else
  10.         call SetUnitState(loc_unit01,UNIT_STATE_LIFE,GetUnitState(loc_unit01,UNIT_STATE_LIFE)+loc_real03*0.5)
  11.     endif
  12.     call DestroyEffect(AddSpecialEffectTarget("war3mapImported\\FireRayTarget.mdx",loc_unit01,"origin"))
  13.     call TimedReveal(GetOwningPlayer(loc_unit01),2,GetUnitX(unit374),GetUnitY(unit374),500)
  14.     set loc_unit01=null
  15. endfunction
  16.  
  17. function Func3885 takes nothing returns boolean
  18.     local trigger t=GetTriggeringTrigger()
  19.     local integer h=GetHandleId(t)
  20.     local integer c=(LoadInteger(HY,(h),(34)))
  21.     local unit caster=(LoadUnitHandle(HY,(h),(2)))
  22.     local real face=GetUnitFacing(caster)
  23.     local real facerad=face*bj_DEGTORAD
  24.     local location loc1=GetUnitLoc(caster)
  25.     local real height=GetLocationZ(loc1)
  26.     local location loc2=Location(GetUnitX(caster)+real363*Cos(facerad),GetUnitY(caster)+real363*Sin(facerad))
  27.     local real heightTarget=GetLocationZ(loc2)
  28.     local lightning l1=(LoadLightningHandle(HY,(h),(676)))
  29.     local lightning l2=(LoadLightningHandle(HY,(h),(677)))
  30.     local lightning l3=(LoadLightningHandle(HY,(h),(678)))
  31.     local lightning l4=(LoadLightningHandle(HY,(h),(679)))
  32.     local lightning l5=(LoadLightningHandle(HY,(h),(680)))
  33.     local real alpha=1
  34.     local real x
  35.     local real y
  36.     local real r1
  37.     local real l1x1
  38.     local real l1y1
  39.     local real l1z1
  40.     local real l1x2
  41.     local real l1y2
  42.     local real l1z2
  43.     local real l2x1
  44.     local real l2y1
  45.     local real l2z1
  46.     local real l2x2
  47.     local real l2y2
  48.     local real l2z2
  49.     local real l3x1
  50.     local real l3y1
  51.     local real l3z1
  52.     local real l3x2
  53.     local real l3y2
  54.     local real l3z2
  55.     local real l4x1
  56.     local real l4y1
  57.     local real l4z1
  58.     local real l4x2
  59.     local real l4y2
  60.     local real l4z2
  61.     local real l5x1
  62.     local real l5y1
  63.     local real l5z1
  64.     local real l5x2
  65.     local real l5y2
  66.     local real l5z2
  67.     local group g
  68.     local real orderX
  69.     local real orderY
  70.     local integer loc_integer03
  71.     local real orderA
  72.     local real dunno
  73.     local real orderAFixed
  74.     local boolean loc_boolean01=false
  75.     local boolean loc_boolean02=false
  76.     local unit loc_unit02=(LoadUnitHandle(HY,(h),(17)))
  77.     local unit loc_unit03=null
  78.     local unit loc_unit04=null
  79.     local real loc_real44
  80.     local real loc_real45
  81.     local real loc_real46
  82.     local real loc_real47=(LoadReal(HY,(h),(688)))
  83.     local boolean loc_boolean03=(LoadBoolean(HY,(h),(689)))
  84.     local boolean loc_boolean04=(LoadBoolean(HY,(h),(672)))
  85.     local real loc_real48
  86.     local ubersplat loc_ubersplat01
  87.     local real loc_real49=(LoadReal(HY,(h),(23)))
  88.     local real loc_real50=(LoadReal(HY,(h),(24)))
  89.     local real loc_real51
  90.     local real loc_real52
  91.     local real loc_real53
  92.     local real loc_real54=5
  93.     if GetUnitCurrentOrder(caster)==852001 then
  94.         call DisableTrigger(t)
  95.         call InterruptUnit(caster)
  96.         call EnableTrigger(t)
  97.     endif
  98.     call RemoveLocation(loc1)
  99.     call RemoveLocation(loc2)
  100.     if IsUnitPaused(caster)==false and(GetTriggerEventId()==EVENT_UNIT_ISSUED_POINT_ORDER or GetTriggerEventId()==EVENT_UNIT_ISSUED_TARGET_ORDER)then
  101.         set x=GetUnitX(caster)
  102.         set y=GetUnitY(caster)
  103.         if GetIssuedOrderId()!=852490 and GetIssuedOrderId()!=852185 and GetIssuedOrderId()!=852600 then//ancestralspirit, acolyteharvest - birds target, channel
  104.             call DisableTrigger(t)
  105.             call InterruptUnit(caster)
  106.             call EnableTrigger(t)
  107.         elseif GetIssuedOrderId()==852185 then//target spirit
  108.             if DistanceBetweenXY(GetUnitX(caster),GetUnitY(caster),GetOrderPointX(),GetOrderPointY())>1400 then//far away
  109.                 call DisableTrigger(t)
  110.                 call InterruptUnit(caster)
  111.                 //call Error(GetOwningPlayer(caster),GetObjectName(''))
  112.                 call EnableTrigger(t)
  113.             elseif RAbsBJ(RAbsBJ(AngleBetweenXY(GetUnitX(caster),GetUnitY(caster),GetOrderPointX(),GetOrderPointY()))-RAbsBJ(GetUnitFacing(caster)))>30 then
  114.                 call DisableTrigger(t)
  115.                 call InterruptUnit(caster)
  116.                 //call Error(GetOwningPlayer(caster),GetObjectName(''))
  117.                 call EnableTrigger(t)
  118.             endif
  119.         endif
  120.         if GetIssuedOrderId()==851971 then
  121.             if GetTriggerEventId()==EVENT_UNIT_ISSUED_TARGET_ORDER then
  122.                 set orderX=GetUnitX(GetOrderTargetUnit())
  123.                 set orderY=GetUnitY(GetOrderTargetUnit())
  124.             else
  125.                 set orderX=GetOrderPointX()
  126.                 set orderY=GetOrderPointY()
  127.             endif
  128.             set orderA=AngleBetweenXY(orderX,orderY,x,y)
  129.             if orderA<0 then
  130.                 set orderA=orderA+360
  131.             endif
  132.             set orderAFixed=face-orderA
  133.             if orderAFixed<0 then
  134.                 set orderAFixed=orderAFixed+360
  135.             endif
  136.             if orderAFixed<180 then
  137.                 set loc_boolean01=true
  138.                 set dunno=face+6
  139.             else
  140.                 set loc_boolean02=true
  141.                 set dunno=face-6
  142.             endif
  143.             set loc_real47=AngleBetweenXY(orderX,orderY,x,y)+180
  144.             call SaveReal(HY,(h),(688),((loc_real47)*1.0))
  145.         endif
  146.     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
  147.         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
  148.             call SaveInteger(HY,(GetHandleId((caster))),((4312)),(2))
  149.             call Func0281(caster)
  150.             call SetUnitPathing(caster,true)
  151.             call RemoveUnit(LoadUnitHandle(HY,h,0))
  152.             call FlushChildHashtable(HY,(h))
  153.             call CleanTrigger(t)
  154.             call UnitRemoveAbility(caster,'A205')
  155.             call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1Z3',false)
  156.             call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A205',false)
  157.             if(LoadInteger(HY,(GetHandleId(caster)),(704)))==0 or(LoadInteger(HY,(GetHandleId(caster)),(704)))=='A1YY' then
  158.                 call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1YY',true)
  159.             endif
  160.             call DestroyLightning(l1)
  161.             call DestroyLightning(l2)
  162.             call DestroyLightning(l3)
  163.             call DestroyLightning(l4)
  164.             call DestroyLightning(l5)
  165.             call StopSound(sound065,false,true)
  166.         endif
  167.     elseif GetTriggerEventId()==EVENT_UNIT_ISSUED_ORDER then
  168.         if GetIssuedOrderId()==String2OrderIdBJ("immolation")then
  169.             set loc_boolean03=true
  170.         endif
  171.         if GetIssuedOrderId()==String2OrderIdBJ("unimmolation")then
  172.             set loc_boolean03=false
  173.         endif
  174.         call SaveBoolean(HY,(h),(689),(loc_boolean03))
  175.     else
  176.         set orderA=face-loc_real47
  177.         if orderA<-180 then
  178.             set orderA=orderA+360
  179.         elseif orderA>180 then
  180.             set orderA=orderA-360
  181.         endif
  182.         set loc_real48=1
  183.         if c<35 and loc_boolean04 then
  184.             set loc_real48=7
  185.         endif
  186.         if orderA<(-1*loc_real48)then
  187.             set face=face+loc_real48
  188.         elseif orderA>loc_real48 then
  189.             set face=face-loc_real48
  190.         else
  191.             set loc_boolean04=false
  192.             call SaveBoolean(HY,(h),(672),(loc_boolean04))
  193.             set face=loc_real47
  194.         endif
  195.         if((LoadInteger(HY,(GetHandleId((caster))),((4301))))==1)==false then
  196.             call SetUnitFacing(caster,face)
  197.         endif
  198.         set facerad=face*bj_DEGTORAD
  199.         set c=c+1
  200.         call SaveInteger(HY,(h),(34),(c))
  201.         set r1=real363
  202.         set x=GetUnitX(caster)+50*Cos(facerad)
  203.         set y=GetUnitY(caster)+50*Sin(facerad)
  204.         if loc_boolean03 and IsUnitEnsnared(caster)==false and IsUnitDisabled(caster)==false then
  205.             if((LoadInteger(HY,(GetHandleId((caster))),((4331))))==1) then
  206.                 set loc_real54=loc_real54*2
  207.             endif
  208.             set loc_real46=facerad
  209.             set loc_real44=SafeX50(GetUnitX(caster)+loc_real54*Cos(loc_real46))
  210.             set loc_real45=SafeY50(GetUnitY(caster)+loc_real54*Sin(loc_real46))
  211.             call KillTrees(loc_real44,loc_real45,200)
  212.             call SetUnitX(caster,loc_real44)
  213.             call SetUnitY(caster,loc_real45)
  214.         endif
  215.         call SetUnitState(caster,UNIT_STATE_LIFE,GetUnitState(caster,UNIT_STATE_LIFE)-GetUnitState(caster,UNIT_STATE_LIFE)*0.06*0.02)
  216.         call KillTrees(x,y,200)
  217.         if ModuloInteger(c,10)==0 then
  218.             set group030=GetAvailableGroup()
  219.             set tt_unit1=caster
  220.             set loc_integer03=0
  221.             loop
  222.                 exitwhen loc_integer03*50>real363
  223.                 set orderX=x+loc_integer03*50*Cos(facerad)
  224.                 set orderY=y+loc_integer03*50*Sin(facerad)
  225.                 set g=GetAvailableGroup()
  226.                 call GroupEnumUnitsInRange(g,orderX,orderY,155,Condition(function DefaultEnemyFilter))
  227.                 call GroupAddGroup(g,group030)
  228.                 call GroupEnumUnitsInRange(g,orderX,orderY,155,Condition(function Func0329))
  229.                 call GroupAddGroup(g,group030)
  230.                 call KillGroup(g)
  231.                 if ModuloInteger(loc_integer03,3)==0 then
  232.                     call TimedReveal(GetOwningPlayer(caster),2,orderX,orderY,225)
  233.                 endif
  234.                 set loc_integer03=loc_integer03+1
  235.             endloop
  236.             set unit374=caster
  237.             set integer517=GetUnitAbilityLevel(caster,'A1YY')
  238.             set loc_real53=(I2R(c)/50.0)/6
  239.             set real367=(5*integer517+10)+(5*integer517+10)*loc_real53
  240.             set real368=(integer517+loc_real53*(integer517))/100
  241.             call GroupRemoveUnit(group030,caster)
  242.             call ForGroup(group030,function Func3884)
  243.             call KillGroup(group030)
  244.             set g=null
  245.             set group030=null
  246.         endif
  247.         if IsDead(caster)==false then
  248.             if loc_unit02!=null then
  249.                 set r1=DistanceBetweenUnits(caster,loc_unit02)
  250.             endif
  251.             set l1x1=x
  252.             set l1y1=y
  253.             set l1z1=height+200
  254.             set l1x2=l1x1+r1*Cos(facerad)
  255.             set l1y2=l1y1+r1*Sin(facerad)
  256.             set l1z2=heightTarget
  257.             set l2x1=x+real364*Cos((face-90)*bj_DEGTORAD)
  258.             set l2y1=y+real365*Cos((face-90)*bj_DEGTORAD)
  259.             set l2z1=height+200
  260.             set l2x2=l2x1+r1*Cos(facerad)
  261.             set l2y2=l2y1+r1*Sin(facerad)
  262.             set l2z2=heightTarget
  263.             set l3x1=x+real364*Cos((face+90)*bj_DEGTORAD)
  264.             set l3y1=y+real365*Cos((face+90)*bj_DEGTORAD)
  265.             set l3z1=height+200
  266.             set l3x2=l3x1+r1*Cos(facerad)
  267.             set l3y2=l3y1+r1*Sin(facerad)
  268.             set l3z2=heightTarget
  269.             set l4x1=x
  270.             set l4y1=y
  271.             set l4z1=height+200+real366
  272.             set l4x2=l4x1+r1*Cos(facerad)
  273.             set l4y2=l4y1+r1*Sin(facerad)
  274.             set l4z2=heightTarget
  275.             set l5x1=x
  276.             set l5y1=y
  277.             set l5z1=height+200-real366
  278.             set l5x2=l5x1+r1*Cos(facerad)
  279.             set l5y2=l5y1+r1*Sin(facerad)
  280.             set l5z2=heightTarget
  281.             if ModuloInteger(c,10)==0 and r1==real363 then
  282.                 set orderX=GetUnitX(caster)+(real363)*Cos(facerad)
  283.                 set orderY=GetUnitY(caster)+(real363)*Sin(facerad)
  284.                 call DestroyEffect(AddSpecialEffect("war3mapImported\\FireRayTarget.mdx",orderX,orderY))
  285.             endif
  286.             if ModuloInteger(c,10)==0 then
  287.                 call SetSoundPosition(sound065,GetUnitX(caster),GetUnitY(caster),100)
  288.                 set orderX=GetUnitX(caster)+(r1)*Cos(facerad)
  289.                 set orderY=GetUnitY(caster)+(r1)*Sin(facerad)
  290.                 set loc_ubersplat01=CreateUbersplat(orderX,orderY,"SRAY",255,255,255,255,false,false)
  291.                 call SetUbersplatRenderAlways(loc_ubersplat01,true)
  292.                 call Func0250(loc_ubersplat01,10)
  293.                 set loc_ubersplat01=null
  294.             endif
  295.             call MoveLightningEx(l1,false,l1x1,l1y1,l1z1,l1x2,l1y2,l1z2)
  296.             call MoveLightningEx(l2,false,l2x1,l2y1,l2z1,l2x2,l2y2,l2z2)
  297.             call MoveLightningEx(l3,false,l3x1,l3y1,l3z1,l3x2,l3y2,l3z2)
  298.             call MoveLightningEx(l4,false,l4x1,l4y1,l4z1,l4x2,l4y2,l4z2)
  299.             call MoveLightningEx(l5,false,l5x1,l5y1,l5z1,l5x2,l5y2,l5z2)
  300.             call SetLightningColor(l1,1.00,1.00,1.00,alpha)
  301.             call SetLightningColor(l2,1.00,1.00,1.00,alpha)
  302.             call SetLightningColor(l3,1.00,1.00,1.00,alpha)
  303.             call SetLightningColor(l4,1.00,1.00,1.00,alpha)
  304.             call SetLightningColor(l5,1.00,1.00,1.00,alpha)
  305.         endif
  306.     endif
  307.     set t=null
  308.     set caster=null
  309.     set l1=null
  310.     set l2=null
  311.     set l3=null
  312.     set l4=null
  313.     set l5=null
  314.     set loc1=null
  315.     set loc2=null
  316.     return false
  317. endfunction
  318.  
  319. function Func3886 takes nothing returns nothing
  320.     local trigger t=CreateTrigger()
  321.     local integer h=GetHandleId(t)
  322.     local unit caster=GetTriggerUnit()
  323.     local real x=GetUnitX(caster)
  324.     local real y=GetUnitY(caster)
  325.     local real angle=AngleBetweenXY(x,y,GetSpellTargetX(),GetSpellTargetY())*bj_DEGTORAD
  326.     local real dx=SafeX50(x+real363*Cos(angle))
  327.     local real dy=SafeY50(y+real363*Sin(angle))
  328.     local lightning l1=AddLightning("SRAY",false,x,y,dx,dy)
  329.     local lightning l2=AddLightning("SRAY",false,x,y,dx,dy)
  330.     local lightning l3=AddLightning("SRAY",false,x,y,dx,dy)
  331.     local lightning l4=AddLightning("SRAY",false,x,y,dx,dy)
  332.     local lightning l5=AddLightning("SRAY",false,x,y,dx,dy)
  333.     local unit dummy
  334.     if GetUnitAbilityLevel(caster,'A14K')>0 then
  335.         set dummy=CreateUnit(GetOwningPlayer(caster),'e00E',x,y,0)
  336.         call UnitAddAbility2(dummy,'A14K')
  337.         call SaveUnitHandle(HY,h,0,dummy)
  338.         set dummy=null
  339.     endif
  340.     call SetUnitFacing(caster,angle*bj_RADTODEG)
  341.     call StartSound(sound065)
  342.     call SetSoundPosition(sound065,x,y,100)
  343.     call TriggerRegisterTimerEvent(t,0.02,true)
  344.     call TriggerRegisterDeathEvent(t,caster)
  345.     call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_ISSUED_TARGET_ORDER)
  346.     call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_ISSUED_POINT_ORDER)
  347.     call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_ISSUED_ORDER)
  348.     call TriggerRegisterUnitEvent(t,caster,EVENT_UNIT_SPELL_EFFECT)
  349.     call TriggerAddCondition(t,Condition(function Func3885))
  350.     call SaveUnitHandle(HY,(h),(2),(caster))
  351.     call SaveReal(HY,(h),(13),((angle)*1.0))
  352.     call SaveReal(HY,(h),(688),((angle*bj_RADTODEG)*1.0))
  353.     call SaveLightningHandle(HY,(h),(676),(l1))
  354.     call SaveLightningHandle(HY,(h),(677),(l2))
  355.     call SaveLightningHandle(HY,(h),(678),(l3))
  356.     call SaveLightningHandle(HY,(h),(679),(l4))
  357.     call SaveLightningHandle(HY,(h),(680),(l5))
  358.     call SaveBoolean(HY,(h),(689),(false))
  359.     call SaveBoolean(HY,(h),(672),(true))
  360.     call SaveReal(HY,(h),(688),((angle*bj_RADTODEG)*1.0))
  361.     call SaveReal(HY,(h),(23),((x)*1.0))
  362.     call SaveReal(HY,(h),(24),((y)*1.0))
  363.     call Func0280(caster)
  364.     call SaveInteger(HY,(GetHandleId((caster))),((4312)),(1))
  365.     call SetUnitPathing(caster,false)
  366.     call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1Z3',true)
  367.     call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A205',true)
  368.     call SetPlayerAbilityAvailable(GetOwningPlayer(caster),'A1YY',false)
  369.     call UnitAddAbility2(caster,'A1Z3')
  370.     call UnitAddAbility2(caster,'A205')
  371.     call TriggerEvaluate(t)
  372.     set t=null
  373.     set caster=null
  374.     set caster=null
  375.     set l1=null
  376.     set l2=null
  377.     set l3=null
  378.     set l4=null
  379.     set l5=null
  380. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement