restructure
This commit is contained in:
320
game/scripts/vscripts/trigger/passcorner.lua
Executable file
320
game/scripts/vscripts/trigger/passcorner.lua
Executable file
@@ -0,0 +1,320 @@
|
||||
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",
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user