2014-11-30 06:17:28 +00:00
|
|
|
|
|
|
|
-- ff_well.lua
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- includes
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
IncludeScript("base_ctf")
|
|
|
|
IncludeScript("base_teamplay")
|
|
|
|
IncludeScript("base_location")
|
|
|
|
IncludeScript("base_respawnturret")
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- global overrides
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
POINTS_PER_CAPTURE = 10
|
|
|
|
FLAG_RETURN_TIME = 60
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- Locations
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
location_blue_frupper = location_info:new({ text = "Flag Room Catwalks", team = Team.kBlue })
|
|
|
|
location_red_frupper = location_info:new({ text = "Flag Room Catwalks", team = Team.kRed })
|
|
|
|
|
|
|
|
location_blue_frlower = location_info:new({ text = "Lower Flag Room", team = Team.kBlue })
|
|
|
|
location_red_frlower = location_info:new({ text = "Lower Flag Room", team = Team.kRed })
|
|
|
|
|
|
|
|
location_blue_frwater = location_info:new({ text = "Flag Room Water", team = Team.kBlue })
|
|
|
|
location_red_frwater = location_info:new({ text = "Flag Room Water", team = Team.kRed })
|
|
|
|
|
|
|
|
location_blue_ladder = location_info:new({ text = "Battlements Ladder", team = Team.kBlue })
|
|
|
|
location_red_ladder = location_info:new({ text = "Battlements Ladder", team = Team.kRed })
|
|
|
|
|
|
|
|
location_blue_concexit = location_info:new({ text = "Conc Route Exit", team = Team.kBlue })
|
|
|
|
location_red_concexit = location_info:new({ text = "Conc Route Exit", team = Team.kRed })
|
|
|
|
|
|
|
|
location_blue_canal = location_info:new({ text = "Yard Canal", team = Team.kBlue })
|
|
|
|
location_red_canal = location_info:new({ text = "Yard Canal", team = Team.kRed })
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- Doors
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
blue_door1_trigger = trigger_ff_script:new({ team = Team.kBlue })
|
|
|
|
|
|
|
|
function blue_door1_trigger:allowed( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
local player = CastToPlayer( touch_entity )
|
|
|
|
return player:GetTeamId() == self.team
|
|
|
|
end
|
|
|
|
|
|
|
|
return EVENT_DISALLOWED
|
|
|
|
end
|
|
|
|
|
|
|
|
function blue_door1_trigger:ontrigger( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
OutputEvent("blue_door1_left", "Open")
|
|
|
|
OutputEvent("blue_door1_right", "Open")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
blue_door2_trigger = trigger_ff_script:new({ team = Team.kBlue })
|
|
|
|
|
|
|
|
function blue_door2_trigger:allowed( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
local player = CastToPlayer( touch_entity )
|
|
|
|
return player:GetTeamId() == self.team
|
|
|
|
end
|
|
|
|
|
|
|
|
return EVENT_DISALLOWED
|
|
|
|
end
|
|
|
|
|
|
|
|
function blue_door2_trigger:ontrigger( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
OutputEvent("blue_door2_left", "Open")
|
|
|
|
OutputEvent("blue_door2_right", "Open")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
red_door1_trigger = trigger_ff_script:new({ team = Team.kRed })
|
|
|
|
|
|
|
|
function red_door1_trigger:allowed( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
local player = CastToPlayer( touch_entity )
|
|
|
|
return player:GetTeamId() == self.team
|
|
|
|
end
|
|
|
|
|
|
|
|
return EVENT_DISALLOWED
|
|
|
|
end
|
|
|
|
|
|
|
|
function red_door1_trigger:ontrigger( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
OutputEvent("red_door1_left", "Open")
|
|
|
|
OutputEvent("red_door1_right", "Open")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
red_door2_trigger = trigger_ff_script:new({ team = Team.kRed })
|
|
|
|
|
|
|
|
function red_door2_trigger:allowed( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
local player = CastToPlayer( touch_entity )
|
|
|
|
return player:GetTeamId() == self.team
|
|
|
|
end
|
|
|
|
|
|
|
|
return EVENT_DISALLOWED
|
|
|
|
end
|
|
|
|
|
|
|
|
function red_door2_trigger:ontrigger( touch_entity )
|
|
|
|
if IsPlayer( touch_entity ) then
|
|
|
|
OutputEvent("red_door2_left", "Open")
|
|
|
|
OutputEvent("red_door2_right", "Open")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- backpacks
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
wellpackgeneric = genericbackpack:new({
|
|
|
|
health = 20,
|
|
|
|
armor = 15,
|
|
|
|
grenades = 60,
|
|
|
|
nails = 60,
|
|
|
|
shells = 60,
|
|
|
|
rockets = 60,
|
|
|
|
cells = 60,
|
|
|
|
mancannons = 1,
|
|
|
|
gren1 = 1,
|
|
|
|
gren2 = 1,
|
|
|
|
respawntime = 35,
|
|
|
|
model = "models/items/backpack/backpack.mdl",
|
|
|
|
materializesound = "Item.Materialize",
|
|
|
|
touchsound = "Backpack.Touch",
|
|
|
|
botgoaltype = Bot.kBackPack_Ammo
|
|
|
|
})
|
|
|
|
|
|
|
|
function wellpackgeneric:dropatspawn() return false end
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- Grates
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
base_grate_trigger = trigger_ff_script:new({ team = Team.kUnassigned, team_name = "neutral" })
|
|
|
|
|
|
|
|
function base_grate_trigger:onexplode( explosion_entity )
|
|
|
|
if IsDetpack( explosion_entity ) then
|
|
|
|
local detpack = CastToDetpack( explosion_entity )
|
|
|
|
|
|
|
|
-- GetTemId() might not exist for buildables, they have their own seperate shit and it might be named differently
|
|
|
|
if detpack:GetTeamId() ~= self.team then
|
|
|
|
OutputEvent( self.team_name .. "_grate", "Kill" )
|
|
|
|
OutputEvent( self.team_name .. "_grate_wall", "Kill" )
|
|
|
|
if self.team_name == "red" then BroadCastMessage("#FF_RED_GRATEBLOWN") end
|
|
|
|
if self.team_name == "blue" then BroadCastMessage("#FF_BLUE_GRATEBLOWN") end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- I think this is needed so grenades and other shit can blow up here. They won't fire the events, though.
|
|
|
|
return EVENT_ALLOWED
|
|
|
|
end
|
|
|
|
|
|
|
|
red_grate_trigger = base_grate_trigger:new({ team = Team.kRed, team_name = "red" })
|
|
|
|
blue_grate_trigger = base_grate_trigger:new({ team = Team.kBlue, team_name = "blue" })
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
-- Buttons
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
blue_fr_button = func_button:new({})
|
|
|
|
function blue_fr_button:ondamage() OutputEvent( "blue_fr_grate_r", "Open" ) end
|
|
|
|
function blue_fr_button:ondamage() OutputEvent( "blue_fr_grate_l", "Open" ) end
|
|
|
|
function blue_fr_button:ontouch() OutputEvent( "blue_fr_grate_r", "Open" ) end
|
|
|
|
function blue_fr_button:ontouch() OutputEvent( "blue_fr_grate_l", "Open" ) end
|
|
|
|
|
|
|
|
red_fr_button = func_button:new({})
|
|
|
|
function red_fr_button:ondamage() OutputEvent( "red_fr_grate_r", "Open" ) end
|
|
|
|
function red_fr_button:ondamage() OutputEvent( "red_fr_grate_l", "Open" ) end
|
|
|
|
function red_fr_button:ontouch() OutputEvent( "red_fr_grate_r", "Open" ) end
|
|
|
|
function red_fr_button:ontouch() OutputEvent( "red_fr_grate_l", "Open" ) end
|
|
|
|
|
|
|
|
blue_fd_button = func_button:new({})
|
|
|
|
function blue_fd_button:ondamage() OutputEvent( "blue_door0", "Open" ) end
|
|
|
|
function blue_fd_button:ontouch() OutputEvent( "blue_door0", "Open" ) end
|
|
|
|
|
|
|
|
red_fd_button = func_button:new({})
|
|
|
|
function red_fd_button:ondamage() OutputEvent( "red_door0", "Open" ) end
|
|
|
|
function red_fd_button:ontouch() OutputEvent( "red_door0", "Open" ) end
|
|
|
|
|