http://userbin.net/gtkbzedit_2.2.tbz2
I have been working on my own #C editor for a while and here is the Brand new release !!!! Unlike most editors this one has a bunch of goodies built in to the interface and doesn't require a graphics card that uses 3d. Well at least it doesn't require that yet its a eventual planed add on. right now it has its own 3d mesh transform equations built in.
As of current the editable objects are as fallows if a object has disabled in fount of it it means that it has some code in the program but not enough yet to actually edit, save and reliably read that object:
(Disabled)ARC
BASE
BOX
(Disabled)COLOR
(Disabled)CONE
(Disabled)DEFINE
(Disabled)DYNAMICCOLOR
(Disabled)GROUP
LINK
(Disabled)MATERIAL
(Disabled)MESH
MESHBOX
MESHPYR
OPTIONS
PHYSICS
PYRAMID
(Disabled)SPHERE
TELEPORTER
(Disabled)TEXTUREMATRIX
(Disabled)WATERLEVEL
(Disabled)WEAPON
WORLD
ZONE
It can locate and read most of the fallowing arguments (This below segment was coyed from the code:
if(!strncmp(str, "box", 3)) g->s = sym_box;
else if(!strncmp(str, "position",

else if(!strncmp(str, "rotation",

else if(!strncmp(str, "size", 4)) g->s = sym_size;
else if(!strncmp(str, "end", 3)) g->s = sym_end;
else if(!strncmp(str, "border", 6)) g->s = sym_border;
else if(!strncmp(str, "angle", 5)) g->s = sym_angle;
else if(!strncmp(str, "base", 4)) g->s = sym_base;
else if(!strncmp(str, "color", 5)) g->s = sym_color;
else if(!strncmp(str, "delay", 5)) g->s = sym_delay;
else if(!strncmp(str, "divisions", 9)) g->s = sym_divisions;
else if(!strncmp(str, "drivethrough", 12)) g->s = sym_drivethrough;
else if(!strncmp(str, "flagheight", 10)) g->s = sym_flagheight;
else if(!strncmp(str, "flatshading", 11)) g->s = sym_flatshading;
else if(!strncmp(str, "from", 4)) g->s = sym_from;
else if(!strncmp(str, "initdelay", 9)) g->s = sym_initdelay;
else if(!strncmp(str, "link", 4)) g->s = sym_link;
else if(!strncmp(str, "name", 4)) g->s = sym_name;
else if(!strncmp(str, "passable",

else if(!strncmp(str, "pyramid", 7)) g->s = sym_pyramid;
else if(!strncmp(str, "ratio", 5)) g->s = sym_ratio;
else if(!strncmp(str, "scale", 5)) g->s = sym_scale;
else if(!strncmp(str, "shear", 5)) g->s = sym_shear;
else if(!strncmp(str, "shift", 5)) g->s = sym_shift;
else if(!strncmp(str, "shootthrough", 12)) g->s = sym_shootthrough;
else if(!strncmp(str, "smoothbounce", 12)) g->s = sym_smoothbounce;
else if(!strncmp(str, "flipz", 5)) g->s = sym_flipz;
else if(!strncmp(str, "teleporter", 10)) g->s = sym_teleporter;
else if(!strncmp(str, "to", 2)) g->s = sym_to;
else if(!strncmp(str, "type", 4)) g->s = sym_type;
else if(!strncmp(str, "weapon", 6)) g->s = sym_weapon;
else if(!strncmp(str, "world", 5)) g->s = sym_world;
else if(!strncmp(str, "spin", 4)) g->s = sym_spin;
else if(!strncmp(str, "meshbox", 7)) g->s = sym_meshbox;
else if(!strncmp(str, "meshpyr", 7)) g->s = sym_meshpyr;
else if(!strncmp(str, "material",

else if(!strncmp(str, "physics", 7)) g->s = sym_physics;
else if(!strncmp(str, "zone", 4)) g->s = sym_zone;
else if(!strncmp(str, "phydrv", 6)) g->s = sym_phydrv;
else if(!strncmp(str, "matref", 6)) g->s = sym_matref;
else if(!strncmp(str, "linear", 6)) g->s = sym_linear;
else if(!strncmp(str, "angular", 7)) g->s = sym_angular;
else if(!strncmp(str, "slide", 5)) g->s = sym_slide;
else if(!strncmp(str, "death", 5)) g->s = sym_death;
else if(!strncmp(str, "texture", 7)) g->s = sym_texture;
else if(!strncmp(str, "addtexture", 10)) g->s = sym_addtexture;
else if(!strncmp(str, "notexture", 9)) g->s = sym_notexture;
else if(!strncmp(str, "notexcolor", 10)) g->s = sym_notexcolor;
else if(!strncmp(str, "notexalpha", 10)) g->s = sym_notexalpha;
else if(!strncmp(str, "texmat", 6)) g->s = sym_texmat;
else if(!strncmp(str, "dyncol", 6)) g->s = sym_dyncol;
else if(!strncmp(str, "ambient", 7)) g->s = sym_ambient;
else if(!strncmp(str, "diffuse", 7)) g->s = sym_diffuse;
else if(!strncmp(str, "specular",

else if(!strncmp(str, "emission",

else if(!strncmp(str, "shininess", 9)) g->s = sym_shininess;
else if(!strncmp(str, "zoneflag",

else if(!strncmp(str, "flag", 4)) g->s = sym_flag;
else if(!strncmp(str, "team", 4)) g->s = sym_team;
else if(!strncmp(str, "safety", 6)) g->s = sym_safety;
else if(!strncmp(str, "texturematrix", 13)) g->s = sym_texturematrix;
else if(!strncmp(str, "center", 6)) g->s = sym_center;
else if(!strncmp(str, "fixedscale", 10)) g->s = sym_fixedscale;
else if(!strncmp(str, "fixedspin", 9)) g->s = sym_fixedspin;
else if(!strncmp(str, "fixedshift", 10)) g->s = sym_fixedshift;
else if(!strncmp(str, "cone", 4)) g->s = sym_cone;
else if(!strncmp(str, "sphere", 6)) g->s = sym_sphere;
else if(!strncmp(str, "radius", 6)) g->s = sym_radius;
else if(!strncmp(str, "options", 7)) g->s = sym_options;
else if(!strncmp(str, "oncap", 5)) g->s = sym_oncap;
Good luck with it,
NN