The proper way to set up Base Assault is to place an undamaged bunker model in your map, clip the entire thing in 4 sets, make all the clips brushmodels, then set the bomb, bomb trigger, flag & flag origin. The Foy bunkers are the only ones that have collmaps, though for some reason they don't line up perfectly with the model when you try to fit them togetherin your map.
Clipset 1
Clipset 2
Clipset 3
Clipset 4
Clipset 1 is the top half of the undamaged bunker.
Clipset 2 is the bottom half of the breached bunker.
Clipset 3 is the rubble that will appear over the stairs once it's destroyed
Clipset 4 is the group of patch meshes textured with cliponeway to allow the team to leave the bunker and prevent anyone from getting back in
In addition, you also need to clip the flag & place a small 8x8x8 origin brush towards the bottom of it.
Clipsets 1 & 3 must be brushmodels!
Clipset 1 gets the following key/value pairs:
classname : script_brushmodel
script_gameobjectname : bas
script_idnumber : foo
targetname : kw_4
Clipset 3 gets the following key/value pairs:
classname : script_brushmodel
script_gameobjectname : bas
script_noteworthy : rubble
targetname : kw_4
The flag clip & origin get the following key/value pairs:
classname : script_brushmodel
script_gameobjectname : bas
targetname : kw_4
Now onto the models..
The flag model gets the following key/value pairs:
classname : script_model
model : xmodel/mp_ctf_flag_usa (if you want an American flag)
script_gameobjectname : bas
targetname : kw_4
The destroyed bunker model gets the following key/value pairs:
classname : script_model
health : 8000
model : xmodel/mp_bunker_rhinevalley_dmg (if using the Rhine Valley bunkers)
script_gameobjectname : bas
script_noteworthy : hq
script_team : allies (if it is an American/British/Russian bunker)
target : kw_4
targetname : gmi_base
The bomb model gets the following key/value pairs:
classname : script_model
model : xmodel/mp_bomb
script_gameobjectname : bas
targetname : kw_5
The Trigger that encloses the bomb model gets the following key/value pairs:
classname : trigger_lookat
script_gameobjectname : bas
target : kw_5
targetname : kw_4
That's what you need for each bunker. But some of the values change, I will explain..
The "script_noteworthy" on the bunker models changes for each bunker. A value of "ammo" makes it bunker #1, a value of "fuel" makes it bunker #2, and a value of "hq" makes it bunker #3. Adding these key/values is what will make the bunkers display properly at the bottom of the screen in the order of: 1 2 3 3 2 1
All the target/targetname values must be relevant to each other for each individual bunker. Meaning you can't have all 3 bunkers with values of "kw_4" or it won't work properly. You can name these values whatever you want, but make sure you keep the same pattern (ie. if the target for the trigger is something_6, the targetname must be something_5). The "script_idnumber" key/value stays the same for all bunkers on both teams.
Also, you'll want lights & spawns inside each bunker. Give both light models & Bas spawns a targetname value that is the same as the target of the bunker model. This way they are removed when the bunker is breached.
And as a final note, if you are going to create your own clipping for a bunker, cullgroup each set when you are 100% sure it is perfect. This way you won't need to go through the process of selecting each brush one by one to set keys/values. And don't forget to clip all the shelves!
As for necessary stuff for your gsc, you need the following after the maps\mp\_load::main(); line.
Code:
maps\mp\_flak_gmi::main(); (if using 88's)
level thread maps\mp\_tankdrive_gmi::main(); (if using tanks)
level thread maps\mp\_jeepdrive_gmi::main(); (if using jeeps)
Code:
if(getCvar("scr_bas_basehealth") == "")
// setCvar("scr_bas_basehealth", "24500");
// if(getCvar("scr_bas_damagedhealth") == "")
// setCvar("scr_bas_damagedhealth", getCvarInt("scr_bas_basehealth")/2);<br />
<br /><br />
<br />
game["bas_allies_rubble"] = "xmodel/mp_bunker_foy_rubble";
game["bas_allies_complete"] = "xmodel/mp_bunker_foy";
game["bas_allies_damaged"] = "xmodel/mp_bunker_foy_predmg";
game["bas_allies_destroyed"] = "xmodel/mp_bunker_foy_dmg";
game["bas_axis_rubble"] = "xmodel/mp_bunker_foy_rubble";
game["bas_axis_complete"] = "xmodel/mp_bunker_foy";
game["bas_axis_damaged"] = "xmodel/mp_bunker_foy_predmg";
game["bas_axis_destroyed"] = "xmodel/mp_bunker_foy_dmg";
Code:
maps\mp\_util_mp_gmi::base_swapper();
And at the very bottom of your gsc..
Code:
move_bases()
{
base_movers = [];
entitytypes = getentarray();
for(i = 0; i < entitytypes.size; i++)
{
if(isdefined(entitytypes[i].groupname))
{
if(entitytypes[i].groupname == "base_mover")
{
entitytypes[i] moveto(entitytypes[i].origin+(0,0,256), 0.1,0,0);
}
}
}
}
So there's a very long winded way of setting up Base Assault. Your best bet is to read all of this, then open up mp_foy in Graydiant and look at the bunkers and compare their key/value pairs to what I wrote here. It'll make sense to you eventually.
Have fun!