rendered paste body 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}
}