fortressforever-scripts/maps/ff_bases.lua

277 lines
11 KiB
Lua

-- ff_bases.lua
-----------------------------------------------------------------------------
-- includes
-----------------------------------------------------------------------------
IncludeScript("base")
IncludeScript("base_ctf")
IncludeScript("base_location")
IncludeScript("base_respawnturret")
-----------------------------------------------------------------------------
function precache()
PrecacheSound( "Backpack.Touch" )
PrecacheSound( "misc.thunder" )
end
-----------------------------------------------------------------------------
-- Doors
-----------------------------------------------------------------------------
blue_only = bluerespawndoor
red_only = redrespawndoor
-----------------------------------------------------------------------------
-- Computer Explodeded
-----------------------------------------------------------------------------
fr_computer = trigger_ff_script:new({ team = Team.kUnassigned })
function fr_computer:onexplode( explosion_entity )
if IsDetpack( explosion_entity ) then
local detpack = CastToDetpack(explosion_entity)
if detpack:GetTeamId() ~= self.team then
local points = 5
local team = detpack:GetTeam()
team:AddScore(points)
local player = detpack:GetOwner()
player:AddFortPoints(points * 100, "Destroyed Computer" )
SmartSound(player, "misc.thunder", "misc.thunder", "misc.thunder")
SmartMessage(player, "You Destroyed the Enemy Command Centre!", "Your Team Destroyed the Enemy Command Centre!", "Your Command Centre has been Destroyed!")
if team:GetTeamId() == Team.kBlue then
SpeakAll( "CZ_RCC_DET" )
elseif team:GetTeamId() == Team.kRed then
SpeakAll( "CZ_BCC_DET" )
end
end
end
return EVENT_ALLOWED
end
blue_computer = fr_computer:new({ team = Team.kBlue })
red_computer = fr_computer:new({ team = Team.kRed })
-----------------------------------------------------------------------------
-- Backpacks
-----------------------------------------------------------------------------
blue_gen_pack = genericbackpack:new({
health = 50,
armor = 50,
grenades = 0,
nails = 300,
shells = 300,
rockets = 300,
gren1 = 1,
gren2 = 0,
cells = 130,
respawntime = 15,
model = "models/items/backpack/backpack.mdl",
materializesound = "Item.Materialize",
touchsound = "Backpack.Touch",
touchflags = {AllowFlags.kOnlyPlayers,AllowFlags.kBlue}})
blue_fr_gen_pack = genericbackpack:new({
health = 30,
armor = 30,
grenades = 0,
nails = 300,
shells = 300,
rockets = 300,
gren1 = 0,
gren2 = 0,
cells = 130,
respawntime = 20,
model = "models/items/backpack/backpack.mdl",
materializesound = "Item.Materialize",
touchsound = "Backpack.Touch",
touchflags = {AllowFlags.kOnlyPlayers,AllowFlags.kBlue}})
red_gen_pack = genericbackpack:new({
health = 50,
armor = 50,
grenades = 0,
nails = 300,
shells = 300,
rockets = 300,
gren1 = 1,
gren2 = 0,
cells = 130,
respawntime = 15,
model = "models/items/backpack/backpack.mdl",
materializesound = "Item.Materialize",
touchsound = "Backpack.Touch",
touchflags = {AllowFlags.kOnlyPlayers,AllowFlags.kRed}})
red_fr_gen_pack = genericbackpack:new({
health = 30,
armor = 30,
grenades = 0,
nails = 300,
shells = 300,
rockets = 300,
gren1 = 0,
gren2 = 0,
cells = 130,
respawntime = 20,
model = "models/items/backpack/backpack.mdl",
materializesound = "Item.Materialize",
touchsound = "Backpack.Touch",
touchflags = {AllowFlags.kOnlyPlayers,AllowFlags.kRed}})
-----------------------------------------------------------------------------
-- Locations
-- Switched all "Left"/"Right" so that it's from defenders pov so it makes sense to say "INCOMING RIGHT RAMP"/etc (caesium)
-----------------------------------------------------------------------------
location_midmap = location_info:new({ text = "Midmap", team = Team.kUnassigned })
location_water = location_info:new({ text = "Water", team = Team.kUnassigned })
location_blue_bments = location_info:new({ text = "Battlements", team = Team.kBlue })
location_red_bments = location_info:new({ text = "Battlements", team = Team.kRed })
location_blue_balcony = location_info:new({ text = "Balcony", team = Team.kBlue })
location_red_balcony = location_info:new({ text = "Balcony", team = Team.kRed })
location_blue_frontdoor = location_info:new({ text = "Front Door", team = Team.kBlue })
location_red_frontdoor = location_info:new({ text = "Front Door", team = Team.kRed })
location_blue_frontdoor_ramp = location_info:new({ text = "Front Door Ramp", team = Team.kBlue })
location_red_frontdoor_ramp = location_info:new({ text = "Front Door Ramp", team = Team.kRed })
location_blue_midramps = location_info:new({ text = "Mid Ramps", team = Team.kBlue })
location_red_midramps = location_info:new({ text = "Mid Ramps", team = Team.kRed })
location_blue_midramps_left = location_info:new({ text = "Right Ramp", team = Team.kBlue })
location_red_midramps_left = location_info:new({ text = "Right Ramp", team = Team.kRed })
location_blue_midramps_right = location_info:new({ text = "Left Ramp", team = Team.kBlue })
location_red_midramps_right = location_info:new({ text = "Left Ramp", team = Team.kRed })
location_blue_flagroom = location_info:new({ text = "Flag Room", team = Team.kBlue })
location_red_flagroom = location_info:new({ text = "Flag Room", team = Team.kRed })
location_blue_sniperdeck = location_info:new({ text = "Sniper Deck", team = Team.kBlue })
location_red_sniperdeck = location_info:new({ text = "Sniper Deck", team = Team.kRed })
location_blue_ramproom = location_info:new({ text = "Main Room", team = Team.kBlue })
location_red_ramproom = location_info:new({ text = "Main Room", team = Team.kRed })
location_blue_lower = location_info:new({ text = "Lower Level", team = Team.kBlue })
location_red_lower = location_info:new({ text = "Lower Level", team = Team.kRed })
location_blue_upper = location_info:new({ text = "Upper Level", team = Team.kBlue })
location_red_upper = location_info:new({ text = "Upper Level", team = Team.kRed })
location_blue_airlift = location_info:new({ text = "Air Lift", team = Team.kBlue })
location_red_airlift = location_info:new({ text = "Air Lift", team = Team.kRed })
location_blue_lowerladder = location_info:new({ text = "Lower Ladder to Ramp Room", team = Team.kBlue })
location_red_lowerladder = location_info:new({ text = "Lower Ladder to Ramp Room", team = Team.kRed })
location_blue_rightcorridoor = location_info:new({ text = "Left Corridor", team = Team.kBlue })
location_red_rightcorridoor = location_info:new({ text = "Left Corridor", team = Team.kRed })
location_blue_leftcorridoor = location_info:new({ text = "Right Corridor", team = Team.kBlue })
location_red_leftcorridoor = location_info:new({ text = "Right Corridor", team = Team.kRed })
location_blue_rightresupply = location_info:new({ text = "Left Respawn", team = Team.kBlue })
location_red_rightresupply = location_info:new({ text = "Left Respawn", team = Team.kRed })
location_blue_leftresupply = location_info:new({ text = "Right Respawn", team = Team.kBlue })
location_red_leftresupply = location_info:new({ text = "Right Respawn", team = Team.kRed })
location_blue_leftspawn = location_info:new({ text = "Left Respawn", team = Team.kBlue })
location_red_leftspawn = location_info:new({ text = "Left Respawn", team = Team.kRed })
location_blue_secret = location_info:new({ text = "Secret Passage", team = Team.kBlue })
location_red_secret = location_info:new({ text = "Secret Passage", team = Team.kRed })
location_blue_flagroom_passage = location_info:new({ text = "Flagroom Hole Access Passage", team = Team.kBlue })
location_red_flagroom_passage = location_info:new({ text = "Flagroom Hole Access Passage", team = Team.kRed })
location_blue_flagroom_ramp = location_info:new({ text = "Flag Room Ramp", team = Team.kBlue })
location_red_flagroom_ramp = location_info:new({ text = "Flag Room Ramp", team = Team.kRed })
location_blue_water_entry = location_info:new({ text = "Water Entrance", team = Team.kBlue })
location_red_water_entry = location_info:new({ text = "Water Entrance", team = Team.kRed })
location_blue_water_exit = location_info:new({ text = "Water Exit", team = Team.kBlue })
location_red_water_exit = location_info:new({ text = "Water Exit", team = Team.kRed })
location_blue_water_access = location_info:new({ text = "Water Access", team = Team.kBlue })
location_red_water_access = location_info:new({ text = "Water Access", team = Team.kRed })
-----------------------------------------------------------------------------
-- spawn
-----------------------------------------------------------------------------
function player_spawn( player_entity )
local player = CastToPlayer( player_entity )
player:AddHealth( 400 )
player:AddArmor( 400 )
player:AddAmmo( Ammo.kNails, 400 )
player:AddAmmo( Ammo.kShells, 400 )
player:AddAmmo( Ammo.kRockets, 400 )
player:AddAmmo( Ammo.kCells, 400 )
-- end of default player_spawn
player:RemoveAmmo( Ammo.kManCannon, 1 )
end
-----------------------------------------------------------------------------
-- Respawns
-----------------------------------------------------------------------------
spawn_red_offence = function(self,player)
return ((player:GetTeamId() == Team.kRed)
and ((player:GetClass() == Player.kScout)
or (player:GetClass() == Player.kMedic)
or (player:GetClass() == Player.kSpy)))
end
spawn_red_defence = function(self,player)
return ((player:GetTeamId() == Team.kRed)
and (((player:GetClass() == Player.kScout) == false)
and ((player:GetClass() == Player.kMedic) == false)
and ((player:GetClass() == Player.kSpy) == false)))
end
spawn_blue_offence = function(self,player)
return ((player:GetTeamId() == Team.kBlue)
and ((player:GetClass() == Player.kScout)
or (player:GetClass() == Player.kMedic)
or (player:GetClass() == Player.kSpy)))
end
spawn_blue_defence = function(self,player)
return ((player:GetTeamId() == Team.kBlue)
and (((player:GetClass() == Player.kScout) == false)
and ((player:GetClass() == Player.kMedic) == false)
and ((player:GetClass() == Player.kSpy) == false)))
end
bluespawn_offence = { validspawn = spawn_blue_offence }
bluespawn_defence = { validspawn = spawn_blue_defence }
redspawn_offence = { validspawn = spawn_red_offence }
redspawn_defence = { validspawn = spawn_red_defence }
-----------------------------------------------------------------------------
-- Basecap (no mancannon)
-----------------------------------------------------------------------------
bases_cap = basecap:new({
mancannons = 0,
})
-- red cap point
red_cap = bases_cap:new({team = Team.kRed,
item = {"blue_flag","yellow_flag","green_flag"}})
-- blue cap point
blue_cap = bases_cap:new({team = Team.kBlue,
item = {"red_flag","yellow_flag","green_flag"}})