Name | Type | is_array | initial_value |
angle | real | No | |
b1 | boolean | No | |
g1 | group | No | |
i1 | integer | No | |
ID | integer | No | |
Item | item | No | |
l1 | lightning | No | |
p1 | location | No | |
p2 | location | No | |
p3 | location | No | |
p4 | location | No | |
player | player | No | |
r1 | real | No | |
r10 | real | No | |
r2 | real | No | |
r3 | real | No | |
r4 | real | No | |
r5 | real | No | |
r6 | real | No | |
r7 | real | No | |
r8 | real | No | |
r9 | real | No | |
SF_Ability | abilcode | No | |
SF_Balls | group | No | |
SF_Boolean | boolean | No | |
SF_Dummy_Type | unitcode | No | |
SF_Effects | string | Yes | |
SF_Hash | hashtable | No | |
SF_Item | item | No | |
SF_Item_Type | itemcode | No | |
SF_KB | group | No | |
SF_Lightning | string | No | |
SF_Reals | real | Yes | |
u1 | unit | No | |
u2 | unit | No | |
u3 | unit | No | |
u4 | unit | No |
//TESH.scrollpos=0
//TESH.alwaysfold=0
******************************
** Static Fence v1.00 **
** Spell triggered by Maker **
** Spell idea by xokelat **
******************************
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Copy Collision item
2. Copy Static Fence ability
3. Copy SF dummy unit
4. Copy the Static Fence trigger folder
5. In SF Init trigger, set the following variables:
SF_Ability
SF_Dummy_Type
SF_Item_Type
That's it! You can edit the other variables to customize the ability.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//TESH.scrollpos=0
//TESH.alwaysfold=0
library PointInRect
// Returns the dot product between given "vectors".
private function DotProduct takes real l1 , real a1 , real l2 , real a2 returns real
return l1*l2*Cos(a1-a2)
endfunction
// Returns a boolean that tells whether the point is inside a rectangle.
// (px , py) = Point to check
// (cx , cy) = lower left corner of the rect
// (ax , ay) = upper left corner
// (bx , by) = lower right corner
function IsPointInRect takes real px , real py , real cx , real cy , real ax , real ay , real bx , real by returns boolean
// Vector from lower left corner to point
local real v_angle = Atan2( py - cy , px - cx )
local real v_length = SquareRoot( (py-cy)*(py-cy) + (px-cx)*(px-cx) )
// Vector from lower left corner to upper left corner
local real v1_angle = Atan2( ay - cy , ax - cx )
local real v1_length = SquareRoot( (ay-cy)*(ay-cy) + (ax-cx)*(ax-cx) )
// Vector from lower left corner to lower right corner
local real v2_angle = Atan2( by - cy , bx - cx )
local real v2_length = SquareRoot( (by-cy)*(by-cy) + (bx-cx)*(bx-cx) )
// 0 is used for some values since the angle difference will be zero anyway
local real dot1 = DotProduct(v_length,v_angle,v1_length,v1_angle)
local real dot2 = DotProduct(v1_length,0,v1_length,0)
local real dot3 = DotProduct(v_length,v_angle,v2_length,v2_angle)
local real dot4 = DotProduct(v2_length,0,v2_length,0)
return dot1 >= 0 and dot1 <= dot2 and dot3 >= 0 and dot3 <= dot4
endfunction
endlibrary