mirror of
https://github.com/fortressforever/fortressforever-scripts.git
synced 2024-11-24 13:31:05 +00:00
276 lines
11 KiB
Lua
276 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"}})
|