Here's my Scatter macro. Just lay down the blast token on your target, make sure the blast token is selected, and then click this macro button:

**Code:**

[h: Input(

"AttackerBS|1|Attacker's BS"

)]

[h: Rawroll = 1d6]

[h: ScatDice = IF(Rawroll < 3, "Dead On", "Scattered")]

[h: ScatterInches = IF(Rawroll < 3, 0, 2d6 - AttackerBS)]

[h: ScatterInchesText = IF(Rawroll < 3, "", ScatterInches)]

[h: ScatterText = IF(Rawroll < 3, "", " inches<br>")]

[h: myAngle = 1d90]

[h: myRadians = divide(myAngle, 57.2958)]

[h: sinAngle = myRadians - divide(power(myRadians, 3),6)]

[h: sinAngle = sinAngle + divide(power(myRadians, 5),120)]

[h: sinAngle = sinAngle - divide(power(myRadians, 7),5040)]

[h: cosAngle = 1 - divide(power(myRadians, 2),2)]

[h: cosAngle = cosAngle + divide(power(myRadians, 4),24)]

[h: cosAngle = cosAngle - divide(power(myRadians, 6),720)]

[h: XMovement = IF(Rawroll < 3, 0, floor(multiply(ScatterInches,cosAngle,50)))]

[h: YMovement = IF(Rawroll < 3, 0, floor(multiply(ScatterInches,sinAngle,50)))]

[h: leftRight = 1d2]

[h: leftRight = IF(leftRight == 2, -1, 1)]

[h: upDown = 1d2]

[h: upDown = IF(upDown == 2, -1, 1)]

[h: myAngle = IF(upDown == -1, myAngle + 90, myAngle)]

[h: myAngle = IF(leftRight == -1, 360- myAngle, myAngle)]

[h: XMovement = multiply(XMovement,leftRight)]

[h: YMovement = multiply(YMovement,upDown)]

[h: ScatterAngle = myAngle]

[h: ScatterAngleText = IF(Rawroll < 3, "", ScatterAngle)]

[h: ScatterAnglePreText = IF(Rawroll < 3, "", "Angle: ")]

[h: ScatterAnglePostText = IF(Rawroll < 3, "", " degrees (0=East, 90=North, etc.)")]

Scatter Results: [ScatDice]<br>

[h: ids = getSelected()]

[foreach(id, ids), CODE:

{

[h: CurrentX = getTokenX(1, id)]

[h: CurrentY = getTokenY(1, id)]

[h: NewX = CurrentX + XMovement]

[h: NewY = CurrentY - YMovement]

[h: moveToken(NewX, NewY, 1, id)]

}

]

[ScatterInchesText][ScatterText]

[ScatterAnglePreText][ScatterAngleText][ScatterAnglePostText]