My idea is to have a new configuration file (server-side) flags.conf or maybe in the world file, which contains settings about every flag and custom flags. This configuration file would be loaded into the server variables, creating a sub-group: “_flags_ID_attribute”, for example “_flags_DEFAULT_turn-speed”.
This allows map developers / server administrators to combine flags and change every part of a flag. It also provides a more organized way of changing flags.
It would also reduce the number of flag suggestions, a lot of those suggestions are do-able in this configuration file, the only “flag” suggestions would be new attributes or improved attributes.
The configuration file type I came up with is something like this:
flaglist {
ID:spawns;
};
flag ID {
attribute:setting;
};
Below is an example:
Ofcourse a default configuration file is included with the installation of BZFlag / BZFS.Example flags.conf wrote: # Example flags.conf
flaglist { # List of all flags and the number of flags that should be spawned, every line is loaded into “_flags_ID”
# USAGE: FLAGID:number_of_spawns
# Every flag must be specified here or they will not work.
DEFAULT:-1 # Default setting for tanks, used when the tank is holding no flags, all flags will be based of the default and will override values.
L:2; # Laser
SR:1; # Steamroller
SJ:2; # Super Jump
BY:3 # Bouncy
U:5; # Useless
CLST:1 # Cloak & Stealth
};
flag DEFAULT { # Default Settings
# NOTE: _flags_DEFAULT_ can be left out when linking to another attribute
# “_flags_DEFAULT_turn-speed” is the same as “turn-speed”, but only within this block.
# Every line in this block is loaded into _flags_DEFAULT_attribute
turn-speed:1.5;
explode-time:5;
friction:0;
gravity;-9.8;
jump-velocity:19;
jump-height:15;
rejoin-time:explode-time;
ricochet:1; # boolean
shot-range:350;
shot-rate:2:
shot-reload:shot-range/shot-speed; # (3.5)
shot-speed:100;
shot-life:10;
tank-height:2.05;
tank-length:6;
tank-radius:0.72*tank-length;
tank-speed:25;
tank-width:2.8;
tank-length:6;
weapon:default;
};
flag L { # modified laser, no ricochet or jumping
name:Laser;
desc:Fires a laser, very fast and unlimited range but longer reload; # or something like that
weapon:laser;
shot-limit:30; # maximum of 30 shots
shot-range:-1;
shot-rate:_flags_DEFAULT_shot-rate*0.25:
shot-reload:_flags_DEFAULT_shot-reload*1.5
shot-speed:1000
shot-life:0.1;
ricochet:0; # turns ricochet of for laser
jump-height:0; # cant jump with laser
};
flag SR { # modified Steamroller, extra fast, but no weapon
name:Steamroller;
desc:Kills enemies you touch but you have to get real close, fast but cant fire any weapon
weapon:none;
jump-height:0;
tank-speed:_flags_DEFAULT_tank-speed*1.5
tank-width:_flags_DEFAULT_tank-width*0.7
radar-limit:_worldSize/3; # Small radar
};
flag SJ { # new flag
name:Super Jump;
desc:Jump twice as high as normal;
jump-height:_flags_DEFAULT_jump-height*2
};
flag BY { # Modified Bouncy flag with short-jumps
name:Bouncy;
desc:Tank can not stop jumping
jump-velocity:50;
jump-height:5;
bouncy:1;
bad:1; # Can not be dropped by player, flag is displayed in red text
timer:6; # Automatically dropped after 6 seconds
};
flag U { # Normal useless flag
name:Useless;
desc:You have found the useless flag, use it wisely;
};
flag CLST {
name: Cloak & Stealth;
desc: Cloak and Stealth, but for a limited amount of time;
cloak:1;
stealth:1;
timer:30; # dropped after 30 seconds
};
# The Possibilities are endless!
Here is a part of what the server variable list would look like:
It would be more organized if it had its own section in the game and not within the server variables, but I think this would be the easiest to implant......
_wallHeight 3*_tankHeight
_wideAngleAng 1.745329
_worldSize 400
_flags_DEFAULT -1
_flags_DEFAULT_turn-speed 1.5
_flags_DEFAULT_explode-time 5
_flags_DEFAULT_friction 0
_flags_DEFAULT_gravity -9.8
_flags_DEFAULT_jump-velocity 19
_flags_DEFAULT_jump-height 15
.....
I also suggested this on SCFR but that one is less informative
I hope its a bit clear... ^^
It would kewl to see this implanted, any opinions?