Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2016
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. library InternalFunctions requires SetMax
  2.  
  3. globals
  4. private constant real BATTLE_SPEED = 1.20
  5. endglobals
  6.  
  7. function purge takes unit u returns nothing
  8. local integer i = GetUnitUserData(u)
  9. //remove effects here
  10. endfunction
  11.  
  12. private function text takes string s, unit u, integer r, integer g, integer b, integer z returns nothing
  13. local texttag display = CreateTextTag()
  14. local real textHeight = 9 * 0.023 / 10
  15. local real vel = 64 * 0.071 / 128
  16. local real xvel = vel * Cos(90 * bj_DEGTORAD)
  17. local real yvel = vel * Sin(90 * bj_DEGTORAD)
  18. call SetTextTagText(display, s , textHeight)
  19. call SetTextTagPosUnit(display, u, z)
  20. call SetTextTagColor(display, r, g, b, 255)
  21. call SetTextTagVelocity(display, xvel, yvel)
  22. call SetTextTagPermanent( display, false )
  23. call SetTextTagLifespan( display, 1.50 )
  24. call SetTextTagFadepoint(display,1.50)
  25. set display = null
  26. endfunction
  27.  
  28. function redText takes string s, unit u, integer z returns nothing
  29. call text(s,u,255,85,85,z)
  30. endfunction
  31.  
  32. function blueText takes string s, unit u, integer z returns nothing
  33. call text(s,u,85,85,255,z)
  34. endfunction
  35.  
  36. function greenText takes string s, unit u, integer z returns nothing
  37. call text(s,u,85,255,85,z)
  38. endfunction
  39.  
  40. function plainText takes string s, unit u, integer z returns nothing
  41. call text(s,u,255,255,255,z)
  42. endfunction
  43.  
  44. function darkText takes string s, unit u, integer z returns nothing
  45. call text(s,u,127,127,127,z)
  46. endfunction
  47.  
  48. //Magnitudes:
  49. //1-2: weak
  50. //2-4: medium
  51. //4-6: heavy
  52. //6-8: extreme
  53. //8-10: ultimate
  54. function damageTarget takes DataStorage d, real magnitude, boolean magic returns real
  55. local real damage = 0
  56. local real random = 0
  57. local unit source = d.src
  58. local unit target = d.target
  59.  
  60. if(IsUnitDeadBJ(target))then
  61. set source = null
  62. set target = null
  63. return 0
  64. endif
  65.  
  66. set random = GetRandomReal(magnitude * -0.1,magnitude * 0.1)
  67. if(magic)then
  68. set damage = GetHeroInt(source,true) * (magnitude+random)
  69. else
  70. set damage = GetHeroAgi(source,true) * (magnitude+random)
  71. endif
  72.  
  73. set random = GetRandomReal(damage * -0.1, damage * 0.1)
  74. set damage = damage + random
  75.  
  76. set damage = damage - GetHeroStr(target,true)/(Pow(GetHeroStr(target,true)/4,(0.334)))
  77.  
  78. set random = GetRandomReal(damage * -0.1, damage * 0.1)
  79. set damage = damage + random
  80.  
  81. if((d.effective and d.reduced)==false)then
  82. if(d.effective)then
  83. set damage = damage * 1.5
  84. elseif(d.reduced)then
  85. set damage = damage / 1.5
  86. endif
  87. endif
  88.  
  89. if(damage < 0 or d.zeroed)then
  90. set damage = 0
  91. endif
  92.  
  93. set damage = damage * BATTLE_SPEED
  94.  
  95. if(GetOwningPlayer(target)!=Player(11))then
  96. set damage = damage * 0.90
  97. endif
  98. if(GetOwningPlayer(source)!=Player(11))then
  99. set damage = damage * 1.10
  100. endif
  101.  
  102. call UnitDamageTarget(source, target, damage, true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_ENHANCED, WEAPON_TYPE_WHOKNOWS)
  103.  
  104. if(d.effective)then
  105. call redText(I2S(R2I(damage)),target,90)
  106. elseif(d.reduced or d.zeroed)then
  107. call darkText(I2S(R2I(damage)),target,90)
  108. else
  109. call plainText(I2S(R2I(damage)),target,90)
  110. endif
  111.  
  112. return damage
  113. endfunction
  114.  
  115. function addLevels takes unit u, integer count returns nothing
  116. local integer i = 0
  117. if(count>0)then
  118. call UnitAddMaxLife(u,R2I(GetUnitState(u,UNIT_STATE_MAX_LIFE)*0.05*count))
  119. call UnitAddMaxMana(u,R2I(GetUnitState(u,UNIT_STATE_MAX_MANA)*0.05*count))
  120. endif
  121. endfunction
  122.  
  123. function playerHasUnitType takes player p, integer i returns boolean
  124. local group g = CreateGroup()
  125. local unit fog = null
  126. call GroupEnumUnitsInRect(g,GetPlayableMapRect(),null)
  127. loop
  128. set fog = FirstOfGroup(g)
  129. exitwhen fog == null
  130. if(GetUnitTypeId(fog)==i and GetOwningPlayer(fog)==p)then
  131. call DestroyGroup(g)
  132. set g = null
  133. return true
  134. endif
  135. call GroupRemoveUnit(g,fog)
  136. endloop
  137. call DestroyGroup(g)
  138. set g = null
  139. return false
  140. endfunction
  141.  
  142. endlibrary
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement