  "[-fb] "
  "[-filterCallsigns] "
  "[-filterChat] "
-@@ -165,6 +166,7 @@
+@@ -176,6 +177,7 @@
  "\t-disableBots: disallow clients from using autopilot or robots\n"
  "\t+f: always have flag <id> available\n"
  "\t-f: never randomly generate flag <id>\n"

+  materials[2].setTexture("wall");
+  materials[3].setTexture("wall");
+  */
+
+  materials[0].setDiffuse(diffuse);
+  materials[1].setDiffuse(diffuse);
+  materials[2].setDiffuse(diffuse);
+  materials[3].setDiffuse(diffuse);
+
+  const BzMaterial* mats[4];
+  for (int i=0; i < 4; i++)
+     mats[i] = MATERIALMGR.addMaterial(&materials[i]);
+
+  ConeObstacle* cone = new ConeObstacle(xform, pos, _size, 0.0f,360, texsize, true, divisions, mats, -1, true, false, false );
+
+  OBSTACLEMGR.addWorldObstacle(cone);
+}
+

 "\t-fb: allow flags on box buildings\n"
 "\t-filterCallsigns: filter callsigns to disallow inappropriate user names\n"
 "\t-filterChat: filter chat messages\n"
@@ -705,6 +707,9 @@
       checkArgc(1, i, argc, argv[i]);
       storedFlagCounts.push_back(argv[i]);
     }
+    else if (strcmp(argv[i], "-fancy") == 0) {
+      options.fancy = true;
+    }
     else if (strcmp(argv[i], "-fb") == 0) {
       // flags on buildings
       options.flagsOnBuildings = true;
Index: src/bzfs/WorldInfo.h
===================================================================
--- src/bzfs/WorldInfo.h	(revision 22210)
+++ src/bzfs/WorldInfo.h	(working copy)
@@ -91,6 +91,9 @@
 		     bool horizontal, bool drive = false, bool shoot = false, bool rico = false);
   void addBase(const float pos[3], float r, const float size[3],
 	       int color, bool drive = false, bool shoot = false, bool rico = false);
+  void addSphere(float x, float y, float z, int divisions);
+  void addArc(float x, float y, float z, float r, float w, float d, int divisions);
+  void addCone(float x, float y, float z, int divisions);
 
   float getWaterLevel() const;
   float getMaxWorldHeight() const;
Index: src/bzfs/WorldInfo.cxx
===================================================================
--- src/bzfs/WorldInfo.cxx	(revision 22210)
+++ src/bzfs/WorldInfo.cxx	(working copy)
@@ -82,7 +82,105 @@
   OBSTACLEMGR.addWorldObstacle(wall);
 }
 
+void WorldInfo::addArc(float x, float y, float z, float r, float w , float d, int divisions )
+{
+  MeshTransform xform;
+ 
+  const float pos[3] = {x, y, z};
+  const float _size[3] = {r, w, d};
+  const float texsize[4] = {-8.0f, -8.0f, -8.0f, -8.0f};
+ 
+  const float flipScale[3] = {1.0f, 1.0f, 1.0f};
+  const float flipShift[3] = {0.0f, 0.0f, 0.0f};
+  const float flipShear[3] = {0.0f, 0.0f, 0.0f};
+ 
+  xform.addScale(flipScale);
+  xform.addShift(flipShift);
+  xform.addShear(flipShear);
+ 
+  BzMaterial materials[6];
+  materials[0].setTexture("roof");
+  materials[1].setTexture("root");
