buldthensnip/pkg/base/mode/mode_r1ctf.lua
2015-02-17 18:17:33 +13:00

118 lines
2.7 KiB
Lua

-- R1CTF: It's not an intel, it's actually a bomb.
--[[
This file is part of Ice Lua Components.
Ice Lua Components is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ice Lua Components is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with Ice Lua Components. If not, see <http://www.gnu.org/licenses/>.
]]
-- create our tent
dofile("pkg/base/mode/obj_tent.lua")
local s_new_tent = new_tent
local function f_new_tent(...)
local this = s_new_tent(...)
function this.should_glow()
return (players[players.current].team ~= this.team
and players[players.current].has_intel)
end
local s_player_in_range = this.player_in_range
function this.player_in_range(plr, sec_current, ...)
local ret = s_player_in_range(plr, sec_current, ...)
if plr.has_intel and plr.team ~= this.team then
plr.intel_capture(sec_current)
end
return ret
end
return this
end
-- apply 1ctf
dofile("pkg/base/mode/mode_1ctf.lua")
-- replace model
if client then
mdl_intel = model_load({
kv6 = {
bdir = DIR_PKG_KV6,
name = "bomb.kv6",
scale = 1.0/128.0,
},
pmf = {
bdir = DIR_PKG_PMF,
name = "intel.pmf",
},
}, {"kv6", "pmf"})
end
-- replace their tent with ours
new_tent = f_new_tent
-- recolour the intel
local s_new_intel = new_intel
function new_intel(...)
local this = s_new_intel(...)
function this.get_name()
return "bomb"
end
this.color = {255,0,0}
this.color_icon = {255,0,0}
if client then
this.mdl_intel = mdl_intel {}
if this.mdl_intel.fmt == "pmf" then
this.mdl_intel = mdl_intel {
filt=function (r,g,b)
if r==0 and g==0 and b==0 then
return 255,0,0
else
return r,g,b
end
end,
}
end
end
return this
end
local s_new_player = new_player
function new_player(...)
local this = s_new_player(...)
function this.intel_capture(sec_current)
if server then
local intel = this.has_intel
if not intel then
return
end
intel.intel_capture(sec_current)
this.has_intel = nil
local s = "* "..this.name.." has delivered the "..intel.get_name().."."
net_broadcast(nil, common.net_pack("BIz", PKT_CHAT_ADD_TEXT, 0xFF800000, s))
net_broadcast_team(this.team, common.net_pack("B", PKT_MAP_RCIRC))
end
end
return this
end