main
LyLoLoq 2 years ago
parent 596e72d80a
commit 8cf6ffcb8e
  1. 2
      src/APL/APL.lua
  2. 16
      src/List/List.lua
  3. 3
      src/Sequencer/Sequencer.lua
  4. 10
      src/UnitManager/UnitManager.lua
  5. 46
      src/Vector3/Vector3.lua
  6. 6
      src/_bastion.lua

@ -206,7 +206,7 @@ end
-- Add a spell to the APL
---@param spell Spell
---@param condition fun(...):boolean
---@param condition? fun(...):boolean
---@return APLActor
function APL:AddSpell(spell, condition)
local castableFunc = spell.CastableIfFunc

@ -90,9 +90,9 @@ function List:each(callback)
end
---@param callback fun(value: any): boolean
---@return boolean
---@return List
function List:map(callback)
local newList = List.new()
local newList = List:New()
for _, v in ipairs(self._list) do
newList:push(callback(v))
end
@ -100,9 +100,9 @@ function List:map(callback)
end
---@param callback fun(value: any): boolean
---@return boolean
---@return List
function List:filter(callback)
local newList = List.new()
local newList = List:New()
for _, v in ipairs(self._list) do
if callback(v) then
newList:push(v)
@ -111,7 +111,7 @@ function List:filter(callback)
return newList
end
---@param callback fun(value: any): boolean
---@param callback fun(result: any, value: any): boolean
---@param initialValue any
---@return boolean
function List:reduce(callback, initialValue)
@ -152,7 +152,7 @@ end
---@return List
function List:reverse()
local newList = List.new()
local newList = List:New()
for i = #self._list, 1, -1 do
newList:push(self._list[i])
end
@ -161,7 +161,7 @@ end
---@return List
function List:clone()
local newList = List.new()
local newList = List:New()
for _, v in ipairs(self._list) do
newList:push(v)
end
@ -171,7 +171,7 @@ end
---@param list List
---@return List
function List:concat(list)
local newList = List.new()
local newList = List:New()
for _, v in ipairs(self._list) do
newList:push(v)
end

@ -1,6 +1,9 @@
-- Create a sequencer class that takes a table of actions and executes them in order
---@class Sequencer
---@field resetCondition fun(): boolean
---@field abortCondition fun(): boolean
---@field actions fun(sequencer: Sequencer)[]
local Sequencer = {}
Sequencer.__index = Sequencer

@ -153,7 +153,7 @@ end
-- Set a unit by guid
---@param unit Unit
---@return Unit
---@return nil
function UnitManager:SetObject(unit)
self.objects[unit:GetGUID()] = unit
end
@ -224,6 +224,7 @@ function UnitManager:GetNumFriendsWithBuff(spell)
if unit:GetAuras():FindMy(spell):IsUp() then
count = count + 1
end
return false
end)
return count
end
@ -236,6 +237,7 @@ function UnitManager:GetNumFriendsAlive()
if unit:IsAlive() then
count = count + 1
end
return false
end)
return count
end
@ -255,6 +257,7 @@ function UnitManager:GetFriendWithMostFriends(radius)
if other:IsAlive() and u:GetDistance(other) <= radius then
c = c + 1
end
return false
end)
if c > count then
unit = u
@ -264,9 +267,11 @@ function UnitManager:GetFriendWithMostFriends(radius)
if other:IsAlive() and u:GetDistance(other) <= radius then
table.insert(friends, other)
end
return false
end)
end
end
return false
end)
return unit, friends
end
@ -283,6 +288,7 @@ function UnitManager:GetEnemiesWithMostEnemies(radius)
if other:IsAlive() and u:GetDistance(other) <= radius then
c = c + 1
end
return false
end)
if c > count then
unit = u
@ -292,9 +298,11 @@ function UnitManager:GetEnemiesWithMostEnemies(radius)
if other:IsAlive() and u:GetDistance(other) <= radius then
table.insert(enemies, other)
end
return false
end)
end
end
return false
end)
return unit, enemies
end

@ -1,7 +1,7 @@
-- Create a Vector3 class
---@class Vector3
local Vector3 = {}
local Vector3 = { }
Vector3.__index = Vector3
---@return string
@ -69,87 +69,129 @@ function Vector3:__index(k)
return Vector3[k]
end
---@class Vector3
---@field length number
if k == "length" then
return math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z)
end
---@class Vector3
---@field normalized Vector3
if k == "normalized" then
local length = math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z)
return Vector3:New(self.x / length, self.y / length, self.z / length)
end
---@class Vector3
---@field magnitude number
if k == "magnitude" then
return math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z)
end
---@class Vector3
---@field sqrMagnitude number
if k == "sqrMagnitude" then
return self.x * self.x + self.y * self.y + self.z * self.z
end
---@class Vector3
---@field zero Vector3
if k == "zero" then
return Vector3:New(0, 0, 0)
end
---@class Vector3
---@field one Vector3
if k == "one" then
return Vector3:New(1, 1, 1)
end
---@class Vector3
---@field up Vector3
if k == "up" then
return Vector3:New(0, 1, 0)
end
---@class Vector3
---@field down Vector3
if k == "down" then
return Vector3:New(0, -1, 0)
end
---@class Vector3
---@field left Vector3
if k == "left" then
return Vector3:New(-1, 0, 0)
end
---@class Vector3
---@field right Vector3
if k == "right" then
return Vector3:New(1, 0, 0)
end
---@class Vector3
---@field forward Vector3
if k == "forward" then
return Vector3:New(0, 0, 1)
end
---@class Vector3
---@field back Vector3
if k == "back" then
return Vector3:New(0, 0, -1)
end
---@class Vector3
---@field positiveInfinity Vector3
if k == "positiveInfinity" then
return Vector3:New(math.huge, math.huge, math.huge)
end
---@class Vector3
---@field negativeInfinity Vector3
if k == "negativeInfinity" then
return Vector3:New(-math.huge, -math.huge, -math.huge)
end
---@class Vector3
---@field nan Vector3
if k == "nan" then
return Vector3:New(0 / 0, 0 / 0, 0 / 0)
end
---@class Vector3
---@field epsilon number
if k == "epsilon" then
return 1.401298E-45
end
---@class Vector3
---@field maxValue number
if k == "maxValue" then
return 3.402823E+38
end
---@class Vector3
---@field minValue number
if k == "minValue" then
return -3.402823E+38
end
---@class Vector3
---@field x number
if k == "x" then
return self[1]
end
---@class Vector3
---@field y number
if k == "y" then
return self[2]
end
---@class Vector3
---@field z number
if k == "z" then
return self[3]
end
@ -272,7 +314,7 @@ function Vector3:ProjectOnPlane(planeNormal)
return self - self:Project(planeNormal)
end
---@param inDirection Vector3
---@param inNormal Vector3
---@return Vector3
function Vector3:Reflect(inNormal)
return -2 * inNormal:Dot(self) * inNormal + self

@ -34,6 +34,7 @@ Bastion.Unit = Bastion.require("Unit")
Bastion.Aura = Bastion.require("Aura")
---@type APL, APLActor, APLTrait
Bastion.APL, Bastion.APLActor, Bastion.APLTrait = Bastion.require("APL")
---@type Module
Bastion.Module = Bastion.require("Module")
---@type UnitManager
Bastion.UnitManager = Bastion.require("UnitManager"):New()
@ -161,6 +162,7 @@ function Bastion:FindModule(name)
return nil
end
function Bastion:Print(...)
local args = { ... }
local str = "|cFFDF362D[Bastion]|r |cFFFFFFFF"
@ -214,6 +216,7 @@ Command:Register('dumpspells', 'Dump spells to a file', function()
local spellID = select(7, GetSpellInfo(spellName))
if spellID then
spellName = spellName:gsub("[%W%s]", "")
WriteFile('bastion-' .. UnitClass('player') .. '-' .. rand .. '.lua',
"local " .. spellName .. " = Bastion.SpellBook:GetSpell(" .. spellID .. ")", true)
end
@ -266,9 +269,6 @@ local files = ListFiles("scripts/bastion/scripts")
for i = 1, #files do
local file = files[i]
if file:sub(-4) == ".lua" or file:sub(-5) == '.luac' then
Tinkr:require("scripts/bastion/scripts/" .. file:sub(1, -5), Bastion)
end
end

Loading…
Cancel
Save