ys = ys or {} slot0 = ys slot1 = class("AutoPilotBrownian", slot0.Battle.IPilot) slot0.Battle.AutoPilotBrownian = slot1 slot1.__name = "AutoPilotBrownian" function slot1.Ctor(slot0, ...) uv0.super.Ctor(slot0, ...) end function slot1.SetParameter(slot0, slot1, slot2) uv0.super.SetParameter(slot0, slot1, slot2) slot0._randomPoint = { X1 = slot1.X1, X2 = slot1.X2, Z1 = slot1.Z1, Z2 = slot1.Z2 } slot0._stop = slot1.stopCount slot0._move = slot1.moveCount slot0._random = slot1.randomCount or 30 slot0._duration = slot1.duration end function slot1.Active(slot0, slot1) slot0._stopCount = slot0._stop slot0._moveCount = 0 slot0._randomCount = 0 slot0._referencePoint = uv0.Battle.BattleFormulas.RandomPos(slot0._randomPoint) uv1.super.Active(slot0, slot1) end function slot1.GetDirection(slot0, slot1) if slot0._duration > 0 and slot0._duration < pg.TimeMgr.GetInstance():GetCombatTime() - slot0._startTime then slot0:Finish() return Vector3.zero end slot0._moveCount = slot0._moveCount or 0 if slot0._stopCount < slot0._stop then slot0._stopCount = slot0._stopCount + 1 return Vector3.zero end if (slot0._referencePoint - slot1).magnitude < 0.4 or slot0._random < slot0._randomCount then if slot0._move < slot0._moveCount then slot0._stopCount = 0 slot0._moveCount = 0 else slot0._randomCount = 0 slot4 = 0 while Vector3.SqrDistance(uv0.Battle.BattleFormulas.RandomPos(slot0._randomPoint), slot1) < 5 do slot3 = uv0.Battle.BattleFormulas.RandomPos(slot0._randomPoint) slot4 = slot4 + 1 end slot0._referencePoint = slot3 end return Vector3.zero else slot0._randomCount = slot0._randomCount + 1 slot0._moveCount = slot0._moveCount + 1 return slot2:SetNormalize() end end