320 lines
7.3 KiB
Lua
Executable File
320 lines
7.3 KiB
Lua
Executable File
function OnPassTheCorner(data)
|
|
local target = data.activator
|
|
|
|
local findNum = string.find(target:GetUnitName(), 'creature')
|
|
if findNum == nil and target:GetUnitName() ~= "yukari_train" then return end
|
|
if target == nil or target:IsNull() then return end
|
|
if target.thtd_is_fearing == true then return end
|
|
|
|
local caller = data.caller
|
|
local vecLocation = thisEntity:GetOrigin()
|
|
local vecTarget = target:GetOrigin()
|
|
|
|
if target:GetUnitName() == "yukari_train" then
|
|
target.next_move_point = THTD_GetTrainNextPathForUnit(target,thisEntity:GetName())
|
|
target:SetBaseMoveSpeed(2500)
|
|
target:SetContextThink(DoUniqueString("AttackingBase"),
|
|
function ()
|
|
target:SetBaseMoveSpeed(2000)
|
|
return nil
|
|
end,
|
|
0.5)
|
|
else
|
|
target.next_move_point = THTD_GetNextPathForUnit(target,thisEntity:GetName())
|
|
end
|
|
end
|
|
|
|
function THTD_GetTrainNextPathForUnit(target,corner)
|
|
local vecTable = {}
|
|
|
|
for i=1,4 do
|
|
local forward = THTD_GetForward(i)
|
|
|
|
if G_path_corner[corner][forward] ~= nil then
|
|
if target.next_move_forward == nil or forward~=GetContraryForward(target.next_move_forward) then
|
|
table.insert(vecTable,forward)
|
|
end
|
|
end
|
|
end
|
|
|
|
local nextForward = vecTable[RandomInt(1,#vecTable)]
|
|
|
|
if target.FirstTrain == nil then
|
|
target.next_corner_table[corner] = nextForward
|
|
else
|
|
nextForward = target.FirstTrain.next_corner_table[corner]
|
|
end
|
|
|
|
if nextForward ~= nil then
|
|
local vecRun = G_path_corner[corner][nextForward]
|
|
|
|
target.next_move_forward = nextForward
|
|
|
|
if vecRun~=nil then
|
|
return G_path_corner[vecRun].Vector * 1.5
|
|
else
|
|
return target.next_move_point
|
|
end
|
|
else
|
|
target:AddNoDraw()
|
|
target:ForceKill(true)
|
|
end
|
|
end
|
|
|
|
function THTD_GetNextPathForUnit(target,corner)
|
|
local vecTable = {}
|
|
|
|
for i=1,4 do
|
|
local forward = THTD_GetForward(i)
|
|
|
|
if G_path_corner[corner][forward] ~= nil then
|
|
if target.next_move_forward == nil or forward~=GetContraryForward(target.next_move_forward) then
|
|
table.insert(vecTable,forward)
|
|
end
|
|
end
|
|
end
|
|
|
|
local nextForward = vecTable[RandomInt(1,#vecTable)]
|
|
|
|
if nextForward ~= nil then
|
|
local vecRun = G_path_corner[corner][nextForward]
|
|
|
|
target.next_move_forward = nextForward
|
|
|
|
if vecRun~=nil then
|
|
target.thtd_next_corner = vecRun
|
|
return G_path_corner[vecRun].Vector * 1.5
|
|
else
|
|
return target.next_move_point
|
|
end
|
|
else
|
|
target.next_move_forward = nil
|
|
end
|
|
end
|
|
|
|
function GetContraryForward(forward)
|
|
if forward == "up" then
|
|
return "down"
|
|
elseif forward == "down" then
|
|
return "up"
|
|
elseif forward == "left" then
|
|
return "right"
|
|
elseif forward == "right" then
|
|
return "left"
|
|
end
|
|
return forward
|
|
end
|
|
|
|
function THTD_GetForward(num)
|
|
if num == 1 then
|
|
return "up"
|
|
elseif num == 2 then
|
|
return "down"
|
|
elseif num == 3 then
|
|
return "left"
|
|
elseif num == 4 then
|
|
return "right"
|
|
end
|
|
return "left"
|
|
end
|
|
|
|
|
|
G_path_corner =
|
|
{
|
|
["corner_0_M2768"] = {
|
|
Vector = Vector(0,-2768,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_0_M3808",
|
|
["left"] = "corner_M2771_M2768",
|
|
["right"] = "corner_2771_M2768",
|
|
},
|
|
["corner_2771_M2768"] = {
|
|
Vector = Vector(2771,-2768,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = "corner_0_M2768",
|
|
["right"] = "corner_4544_M2768",
|
|
},
|
|
["corner_M2771_2768"] = {
|
|
Vector = Vector(-2771,2768,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = "corner_M4544_2768",
|
|
["right"] = "corner_0_2768",
|
|
},
|
|
["corner_5584_M3808"] = {
|
|
Vector = Vector(5584,-3808,137),
|
|
["up"] = "corner_5584_0",
|
|
["down"] = nil,
|
|
["left"] = "corner_0_M3808",
|
|
["right"] = nil,
|
|
},
|
|
["corner_M5584_M3808"] = {
|
|
Vector = Vector(-5584,-3808,137),
|
|
["up"] = "corner_M5584_0",
|
|
["down"] = nil,
|
|
["left"] = nil,
|
|
["right"] = "corner_0_M3808",
|
|
},
|
|
["corner_0_3808"] = {
|
|
Vector = Vector(0,3808,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_0_2768",
|
|
["left"] = "corner_M5584_3808",
|
|
["right"] = "corner_5584_3808",
|
|
},
|
|
["corner_M2771_M2768"] = {
|
|
Vector = Vector(-2771,-2768,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = "corner_M4544_M2768",
|
|
["right"] = "corner_0_M2768",
|
|
},
|
|
["corner_2771_1056"] = {
|
|
Vector = Vector(2771,1056,137),
|
|
["up"] = "corner_2771_2768",
|
|
["down"] = nil,
|
|
["left"] = nil,
|
|
["right"] = nil,
|
|
},
|
|
["corner_4544_M2768"] = {
|
|
Vector = Vector(4544,-2768,137),
|
|
["up"] = "corner_4544_0",
|
|
["down"] = nil,
|
|
["left"] = "corner_2771_M2768",
|
|
["right"] = nil,
|
|
},
|
|
["corner_M4544_M2768"] = {
|
|
Vector = Vector(-4544,-2768,137),
|
|
["up"] = "corner_M4544_0",
|
|
["down"] = nil,
|
|
["left"] = nil,
|
|
["right"] = "corner_M2771_M2768",
|
|
},
|
|
["corner_M4544_0"] = {
|
|
Vector = Vector(-4544,0,137),
|
|
["up"] = "corner_M4544_2768",
|
|
["down"] = "corner_M4544_M2768",
|
|
["left"] = "corner_M5584_0",
|
|
["right"] = nil,
|
|
},
|
|
["corner_M5584_0"] = {
|
|
Vector = Vector(-5584,0,137),
|
|
["up"] = "corner_M5584_3808",
|
|
["down"] = "corner_M5584_M3808",
|
|
["left"] = nil,
|
|
["right"] = "corner_M4544_0",
|
|
},
|
|
["corner_5584_0"] = {
|
|
Vector = Vector(5584,0,137),
|
|
["up"] = "corner_5584_3808",
|
|
["down"] = "corner_5584_M3808",
|
|
["left"] = "corner_4544_0",
|
|
["right"] = nil,
|
|
},
|
|
["corner_4544_0"] = {
|
|
Vector = Vector(4544,0,137),
|
|
["up"] = "corner_4544_2768",
|
|
["down"] = "corner_4544_M2768",
|
|
["left"] = nil,
|
|
["right"] = "corner_5584_0",
|
|
},
|
|
["corner_0_2768"] = {
|
|
Vector = Vector(0,2768,137),
|
|
["up"] = "corner_0_3808",
|
|
["down"] = nil,
|
|
["left"] = "corner_M2771_2768",
|
|
["right"] = "corner_2771_2768",
|
|
},
|
|
["corner_0_M3808"] = {
|
|
Vector = Vector(0,-3808,137),
|
|
["up"] = "corner_0_M2768",
|
|
["down"] = nil,
|
|
["left"] = "corner_M5584_M3808",
|
|
["right"] = "corner_5584_M3808",
|
|
},
|
|
["corner_4544_2768"] = {
|
|
Vector = Vector(4544,2768,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_4544_0",
|
|
["left"] = "corner_2771_2768",
|
|
["right"] = nil,
|
|
},
|
|
["corner_M5584_3808"] = {
|
|
Vector = Vector(-5584,3808,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_M5584_0",
|
|
["left"] = nil,
|
|
["right"] = "corner_0_3808",
|
|
},
|
|
["corner_5584_3808"] = {
|
|
Vector = Vector(5584,3808,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_5584_0",
|
|
["left"] = "corner_0_3808",
|
|
["right"] = nil,
|
|
},
|
|
["corner_2771_2768"] = {
|
|
Vector = Vector(2771,2768,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = "corner_0_2768",
|
|
["right"] = "corner_4544_2768",
|
|
},
|
|
["corner_M2771_M1056"] = {
|
|
Vector = Vector(-2771,-1056,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_M2771_M2768",
|
|
["left"] = nil,
|
|
["right"] = nil,
|
|
},
|
|
["corner_2771_M1056"] = {
|
|
Vector = Vector(2771,-1056,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_2771_M2768",
|
|
["left"] = nil,
|
|
["right"] = nil,
|
|
},
|
|
["corner_M2771_1056"] = {
|
|
Vector = Vector(-2771,1056,137),
|
|
["up"] = "corner_M2771_2768",
|
|
["down"] = nil,
|
|
["left"] = nil,
|
|
["right"] = nil,
|
|
},
|
|
["corner_1408_M1056"] = {
|
|
Vector = Vector(1408,-1056,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = nil,
|
|
["right"] = "corner_2771_M1056",
|
|
},
|
|
["corner_M1408_M1056"] = {
|
|
Vector = Vector(-1408,-1056,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = "corner_M2771_M1056",
|
|
["right"] = nil,
|
|
},
|
|
["corner_M1408_1056"] = {
|
|
Vector = Vector(-1408,1056,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = "corner_M2771_1056",
|
|
["right"] = nil,
|
|
},
|
|
["corner_1408_1056"] = {
|
|
Vector = Vector(1408,1056,137),
|
|
["up"] = nil,
|
|
["down"] = nil,
|
|
["left"] = nil,
|
|
["right"] = "corner_2771_1056",
|
|
},
|
|
["corner_M4544_2768"] = {
|
|
Vector = Vector(-4544,2768,137),
|
|
["up"] = nil,
|
|
["down"] = "corner_M4544_0",
|
|
["left"] = nil,
|
|
["right"] = "corner_M2771_2768",
|
|
},
|
|
} |