well, the challenge is on!!! lol
ive done some experimenting and its more than possible, and with one CTF flag entity per team and a simple script to control it all, and i’ll explain how…
i made a ctf_redflag with a count of 8 and had that target a target_print for a test, works fine… so i changed the target_print to a target_script_trigger so that when the axis flag was taken, it would cause the target_script_trigger to call my axis_flag_stolen routine, in that routine i would setstate the ctf_redflag entity invisible and the trigger_flagonly_multiple also invisible, so that if the axis had the flag, they couldnt cap til theirs was returned…
in theory it should have worked… if the allies captured a flag, 7 still left in the count, the flagpole would dissapear until they brought the flag to their trigger_flagonly_multiple and in the death routine there, i would simply setstate the axis ctf_redflag and flagonly_multiple back to default to start it over again… problem was,
once i gave a targetname to the ctf_redflag or blueflag entity, they would not spawn in the game… setstate them default in the game_manager would not work also, but the alertentity did, so i just alertentitied them once and once only, and the setsate invis/default worked from there on.
then i noticed something that wasn’t documented in the def file for the ctf_red and blue, they actually call trigger routines by default when an object is stolen or returned… so i didnt need to have them target a target_script_trigger at all… just added some routines to the ctf targetname/scriptname routines i made… and bam… it works… perfect classic ctf, one flag only for either team, only can be captured one at a time and not again until it has either been capt’d or returned.
here’s an example of my team_CTF_blueflag entity and its key/vaules, ( i’ll use your flag model since it looks so kewl… )
"classname" "team_CTF_blueflag"
"origin" "-766 0 28"
"scriptname" "allied_flag"
"targetname" "allied_flag"
"angle" "360"
"model" "models/mapobjects/darjimodels/flag_allies.md3"
"message" "the Flag"
"count" "8"
EDIT: added the trigger_flagonly_multiple entity key/values for the axis, used in the script below…
"classname" "trigger_flagonly_multiple"
"scriptname" "axis_cap_flag"
"targetname" "axis_cap_flag"
"spawnflags" "2"
and a smidget of the script i tested it with, just the allied stuff, the axis would have identical routines.
//
// ctf test - enemy territory
//
// experimenting with the undocumented trigger functions the
// team_ctf_redflag and team_ctf_blueflag have.
//
game_manager
{
spawn
{
wait 200 // EDIT:need a wait here...
alertentity allied_flag // reveal the flag to start with, setstate invisble and default
// will work from here on.
}
trigger axis_captd // axis captured a flag so update the count here and check if they win.
{
accum 1 inc 1 // and so on
accum 1 trigger_if_equal 8 game_manager axis_win
}
trigger axis_win
{
// usual stuff... axis won here..
// blah
// blah
// blah
wm_setwinner 0 // axis win...
wm_endround
}
}
allied_flag
{
trigger stolen // a flag was taken by the axis horde....
{
setstate allied_flag invisible // hide the team_CTF_blueflag entity
setstate allies_cap_flag invisible // hide the allies trigger_flagonly_multiple
}
trigger returned // flag was dropped and timed out or an allied player touched it....
{
setstate allied_flag default // flagpole comes back, no change in count,
setstate allies_cap_flag default // trigger_flagonly_multiple back also.
}
}
axis_cap_flag // axis have transported the allied flag and made it back to their flagpole.
{
death
{
wm_announce "the Axis have Captured the Flag!!!"
setstate allied_flag default // flag comes back minus 1 count,
setstate allies_cap_flag default // trigger_flagonly_multiple back also.
trigger game_manager axis_captd // go update the axis flag captured counter.
}
}
and i have now deleted my team_CTF_blueflag and team_CTF_redflag definitions and replaced them with thse updated ones i made which are more descriptive, people don’t need to do this, but i update mine when i get/find more information on them.
My updated DEF’s
/*QUAKED team_CTF_redflag (1 0 0) (-16 -16 -16) (16 16 16)
-------- KEYS --------
"count" number of times this entity will spawn objects
"model" Set model to display in game
"message" Name of object in game (ex: the Radar Parts)
"scriptname" name used for scripting purposes
"targetname" name of this entity, see NOTES below
-------- SPAWNFLAGS --------
(none)
-------- NOTES --------
Used for dual objectives in ET.
If a targetname is used, then it needs an initial alertentity to spawn it in the game, setstate invisible and default will
work on it after.
will call the following trigger routines if they exist, depending on state. for example if this entity has the following setup,
----EXAMPLE ONLY----
KEY VALUE
scriptname redflag
targetname redflag
when they occur, the following routines would be called in the redflag script area,
trigger stolen - object was stolen.
trigger returned - object was returned.
----END EXAMPLE----
addtionally it would call the following routines in the game_manager if they existed,
trigger axis_object_stolen - object was stolen.
trigger axis_object_returned - object was returned.
*/
/*QUAKED team_CTF_blueflag (0 0 1) (-16 -16 -16) (16 16 16)
-------- KEYS --------
"count" number of times this entity will spawn objects
"model" Set model to display in game
"message" Name of object in game (ex: the Radar parts)
"scriptname" name used for scripting purposes
"targetname" name of this entity, see NOTES below
-------- SPAWNFLAGS --------
(none)
-------- NOTES --------
Used for dual objectives in ET.
If a targetname is used, then it needs an initial alertentity to spawn it in the game, setstate invisible and default will
work on it after.
will call the following trigger routines if they exist, depending on state, for example if this entity has the following setup,
----EXAMPLE ONLY----
KEY VALUE
scriptname blueflag
targetname blueflag
when they occur, the following routines would be called in the blueflag script area,
trigger stolen - object was stolen.
trigger returned - object was returned.
----END EXAMPLE----
addtionally it would call the following routines in the game_manager if they existed,
trigger allied_object_stolen - object was stolen.
trigger allied_object_returned - object was returned.
*/
so now both sides have one flag only, if an opposing team member takes a flag, no other flag will spawn until they have either captured it, or it was returned and the count on the CTF flag entity would stay the same or continue on down until all the 8 flags were captured.
at least this is what i have come up with…

EDIT: i cleaned up some of my remarks in the script above, it confused me a bit… also i named the trigger calls wrong, they are RETURNED and not RETURN in the def’s i listed… sorry if this confused anyone. my bad…
FURTHER EDIT: not to steal your thunder loffy, the prefab is a good one… i just thought there was a different way to do it with one flag only.