#### Symmetrical editing:
-The waypoint editor has a very useful editing mode that halves time required to waypoint symmetrical maps (mostly the CTF ones): every time you spawn / remove a waypoint, the same operation is repeated on its symmetrical position. There are even options to set up custom symmetry on maps without a perfect flag symmetry or without CTF support at all.
+The waypoint editor has a very useful editing mode that halves time required to waypoint symmetrical maps (mostly the CTF ones): every time you spawn / remove a waypoint, the same operation is repeated on its symmetrical position.
First of all you need to figure out the map symmetry:
1. **Reflectional symmetry**: less common (Runningman CTF), half part of the map is a mirror-image of the other one, the axis of symmetry is in the mirror-line.
1. **Rotational symmetry** (of order 3 or greater): rarely used as it needs 3 or more flags (gasoline_3teams, gasoline_4teams). With order 3 a part of the map is rotated twice by 120 and 240 degrees around a point (origin) that is the center of the map.
-If you think map symmetry is 1) or 3) try `g_waypointeditor_symmetrical 1`, if you think it's 2) try `g_waypointeditor_symmetrical 2`.
-Check that the autodetermined symmetry is correct by spawning one or more test waypoint and checking that the symmetrical waypoints are spawned *exactly* where they should be: if they respect map symmetry then you are ready to waypoint the map.
+_Automatic calculation_
-If you can't find the symmetrical waypoints or their position are wrong it's possible to determine the origin or axis of symmetry with the commands `wpeditor symorigin get|set p1 p2 ... pX` and `wpeditor symaxis get|set p1 p2` where p1 p2 ... pX are positions "x y z" that you know are perfectly symmetrical. With `get` values of origin / axis are printed to the console, with `set` values of origin / axis are applied immediately, that is they are set to the g_waypointeditor_symmetrical_* cvars.
-Note: don't forget to remove test waypoints before you change symmetry settings otherwise you won't be able to easily remove their symmetrical waypoints.
+On CTF maps that are perfectly symmetrical, if you think map symmetry is 1) or 3) use `g_waypointeditor_symmetrical 1`, if you think it's 2) use `g_waypointeditor_symmetrical 2`.
+Check that the symmetry settings are correct by spawning some test waypoints and checking that the symmetrical waypoints are spawned *exactly* where they should be: if they respect map symmetry then you are ready to waypoint the map.
-The symmetry settings are saved to the waypoint files and reloaded from there when you restart the map.
+_Manual calculation_
+On non-CTF maps or if automatically calculated symmetry doesn't work well (symmetrical waypoints can't be found or are in a wrong position) it's possible to manually determine the origin or axis of symmetry with the commands `wpeditor symorigin get|set p1 p2 ... pX` and `wpeditor symaxis get|set p1 p2` where p1 p2 ... pX are positions "x y z" that you know are perfectly symmetrical. With `get` values of origin / axis are printed to the console, with `set` values of origin / axis are applied immediately (saved to the g_waypointeditor_symmetrical_* cvars).
+
+To find perfectly symmetrical positions, you can go to a place of the map where you are blocked and can't move further away from origin / axis of symmetry, e.g. the corner of a room, print the origin of your player model to console for example with "say %o" or by spawning and removing a temporary waypoint, move to the symmetrical place of the map and do the same.
+
+Before calculating and applying symmetry settings from those positions, make sure there is no user-made waypoint on the map, you have to manually remove them because they lack the corresponding symmetrical waypoint. To calculate and apply symmetry settings, use the appropriated `set` command with those positions as parameters.
+
+Example 1:
+```
+p1: "-700 -2000 600"
+p2: "700 -2000 600"
+wpeditor symaxis set "-700 -2000 600" "700 -2000 600"
```
-g_waypointeditor_symmetrical is "0" ["0"] Enable symmetrical editing of waypoints on symmetrical CTF maps (Note: it assumes that the map is perfectly symmetrical). 1: automatically determine origin of symmetry; -1: use custom origin (g_waypointeditor_symmetrical_origin); 2: automatically determine axis of symmetry; -2: use custom axis (g_waypointeditor_symmetrical_axis)
-g_waypointeditor_symmetrical_axis is "0 0" ["0 0"] Custom axis of symmetry (m q parameters of y = mx + q)
-g_waypointeditor_symmetrical_order is "0" ["0"] if >= 2 apply rotational symmetry (around origin of symmetry) of this order, otherwise apply autodetected order of symmetry
-g_waypointeditor_symmetrical_origin is "0 0" ["0 0"] Custom origin of symmetry (x y)
+Output:
+```
+Axis of symmetry based on input points: "-1400000000 2000"
+ saved to g_waypointeditor_symmetrical_axis
+g_waypointeditor_symmetrical has been set to -2
+```
+
+Example 2:
```
+p1: "-500 -1000 200"
+p2: "500 1000 200"
+wpeditor symorigin set "-500 -1000 200" "500 1000 200"
+```
+
+Output:
+```
+Origin of symmetry based on input points: "0 0"
+ saved to g_waypointeditor_symmetrical_origin
+Order of symmetry: 2
+ saved to g_waypointeditor_symmetrical_order
+g_waypointeditor_symmetrical has been set to -1
+```
+
+Spawn and verify some test waypoint to make sure the calculated settings are correct before proceeding waypointing the map.
+
+The symmetry settings are saved to the waypoint files and automatically reloaded from there when you restart the map.
#### Advanced editing
To create a jump waypoint you can use the command `wpeditor spawn jump` 60-80 qu before the edge depending on jump length then spawn a normal waypoint as destination waypoint on the other side of the gap. Note that jump waypoints (like jumppad waypoints) don't have any other normal outgoing link. Multiple jump links can be added to the same jump waypoint calling the command `wpeditor spawn jump` in the very same position of an existing jump waypoint and creating another normal waypoint as destination. You can recycle an existing destination waypoint as well by spawning a destination waypoint over an existing one.
* *Custom jumppad waypoint and linking*
-Sometimes jumppads with a vertical jump trajectory don't have any automatically generated link, you can manually make them usable by bots adding a custom jumppad waypoint in this way: aim at a jumppad and spawn a waypoint with the command `wpeditor spawn crosshair` then spawn a normal waypoint on the desired destination point. Some testing is needed to make sure bots can really use it and reach the destination waypoint.
+Sometimes jumppads with a vertical jump trajectory don't have any automatically generated link, you can manually make them usable by bots by adding a custom jumppad waypoint in this way: aim at a jumppad and spawn a waypoint with the command `wpeditor spawn crosshair` then spawn a normal waypoint on the desired destination point. Some testing is needed to make sure bots can really use it and reach the destination waypoint.
With the same procedure it's possible to change destination waypoint of an automatically linked jumppad, for example when the destination waypoint is in a too dangerous position.
* *Spawn waypoint at crosshair*
bot_number 1
```
-Check how well bot navigates the map with your waypoints: add a single bot with medium skills (`skill 4`) and spectate it (preferably in free third person view by pressing `BACKSPACE` twice once you are spectator so you can change camera angles with your mouse); if you notice it takes weird paths (zigzags), gets stuck, bumps into walls, falls down or can't jump an obstacle on some links try to fix them by creating a slightly different route that is more reliable.
-It is also a good idea to test how high skilled bots behave as they can bunnyhop (skill 7 and higher).
\ No newline at end of file
+Check how well bot navigates the map with your waypoints: add a single bot with medium skills (`skill 4`) and spectate it (preferably in free third person view by pressing `BACKSPACE` twice so you can control camera angles with your mouse); if you notice it takes weird paths (zigzags), gets stuck, bumps into walls, falls down or can't jump an obstacle then you have to adjust waypoints to create more reliable links.
+It is also a good idea to test how high skilled bots behave as they can bunnyhop (skill 7 and higher) and sometimes they can lose control.
\ No newline at end of file