method Strafe() { IPOSTUCK:Inc if ${IPOSTUCK}>7 && !${ISXWoW.Facing} { IPOSTUCK:Set[1] switch ${This.IsStuck} { case 0 break case 1 if ${Math.Rand[100]}>50 { move right 100 } else { move left 100 } break case 2 move right 100 break case 3 move right 100 break case 4 move left 100 break case 5 move left 100 break case 6 break case 7 break } } } member IsStuck(int TEMP=1) { variable float Xstagea variable float Xstageb variable float Xstagec variable float Ystagea variable float Ystageb variable float Ystagec variable float X2stagea variable float X2stageb variable float X2stagec variable float Y2stagea variable float Y2stageb variable float Y2stagec variable float X3stagea variable float X3stageb variable float X3stagec variable float Y3stagea variable float Y3stageb variable float Y3stagec variable float HeadingTemp variable float HeadingTemp2 variable int StuckCheck Xstagea:Set[${Math.Cos[${Me.Heading}]}] Xstageb:Set[${Math.Calc[3*${Xstagea}]}] Xstagec:Set[${Math.Calc[${Me.X}+${Xstageb}]}] Ystagea:Set[${Math.Sin[${Me.Heading}]}] Ystageb:Set[${Math.Calc[5*${Ystagea}]}] Ystagec:Set[${Math.Calc[${Me.Y}-${Ystageb}]}] HeadingTemp2:Set[${Math.Calc[${Me.Heading}-90]}] if ${HeadingTemp2} < 0 { HeadingTemp:Set[${Math.Calc[${HeadingTemp2} + 360]}] } else { HeadingTemp:Set[${HeadingTemp2}] } X2stagea:Set[${Math.Cos[${HeadingTemp}]}] X2stageb:Set[${Math.Calc[2*${X2stagea}]}] X2stagec:Set[${Math.Calc[${Xstagec}+${X2stageb}]}] Y2stagea:Set[${Math.Sin[${HeadingTemp}]}] Y2stageb:Set[${Math.Calc[2*${Y2stagea}]}] Y2stagec:Set[${Math.Calc[${Ystagec}-${Y2stageb}]}] HeadingTemp2:Set[${Math.Calc[${Me.Heading}+90]}] if ${HeadingTemp2} > 360 { HeadingTemp:Set[${Math.Calc[${HeadingTemp2} - 360]}] } else { HeadingTemp:Set[${HeadingTemp2}] } X3stagea:Set[${Math.Cos[${HeadingTemp}]}] X3stageb:Set[${Math.Calc[2*${X3stagea}]}] X3stagec:Set[${Math.Calc[${Xstagec}+${X3stageb}]}] Y3stagea:Set[${Math.Sin[${HeadingTemp}]}] Y3stageb:Set[${Math.Calc[2*${Y3stagea}]}] Y3stagec:Set[${Math.Calc[${Ystagec}-${Y3stageb}]}] StuckCheck:Set[0] if ${Me.IsPathObstructed[${Xstagec},${Ystagec},${Math.Calc[${Me.Z} + 1]},10]} { StuckCheck:Inc } if ${Me.IsPathObstructed[${X2stagec},${Y2stagec},${Math.Calc[${Me.Z} + 1]},10,${Me.X},${Me.Y},${Math.Calc[${Me.Z} + 1]}]} { StuckCheck:Inc[2] } if ${Me.IsPathObstructed[${X3stagec},${Y3stagec},${Math.Calc[${Me.Z} + 1]},10,${Me.X},${Me.Y},${Math.Calc[${Me.Z} + 1]}]} { StuckCheck:Inc[4] } return ${StuckCheck} }