diff --git a/README.md b/README.md
index e4f3a78..1111b77 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,126 @@
+
+
# IW2 Bot Warfare
+Bot Warfare is a GSC mod for [libcod](https://github.com/ibuddieat/zk_libcod/) / [CoD2rev Server](https://github.com/voron00/CoD2rev_Server).
-Bot Warfare for CoD2.
+It aims to add playable AI to the multiplayer games of CoD2.
-TODO:
- - docs
+You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/iw2-bot-warfare-latest).
+
+## Important to public dedicated servers
+The `bots_main_firstIsHost` CVAR is enabled by default!
+
+This is so inexperienced users of the mod can access with menu without any configuration.
+
+Make sure to disable this CVAR by adding `set bots_main_firstIsHost 0` in your server config!
+
+## Contents
+- [Features](#Features)
+- [Installation](#Installation)
+- [Documentation](#Documentation)
+- [Changelog](#Changelog)
+- [Credits](#Credits)
+
+## Features
+- A Waypoint Editor for creating and modifying bot's waypoints of traversing the map. Have a look at [Using the Waypoint editor](/bw-assets/wpedit.md).
+
+- A clean and nice menu, you can edit every bot CVAR within in-game.
+
+- Everything can be customized, ideal for both personal use and dedicated servers. Have a look at [Documentation](#Documentation) to see whats possible!
+
+- This mod does not edit ANY stock .gsc files, meaning EVERY other mod is compatible with this mod. Mod doesn't add anything unnecessary, what you see is what you get.
+
+- Adds AI clients to multiplayer games to simulate playing real players. (essentially Combat Training for CoD2)
+ - Bots move around the maps with native engine input. (all normal maps)
+ - Can load MeatBot waypoints as well.
+ - Bots press all the buttons with native engine input. (ads, jump, etc)
+ - Bots play all gamemodes/objectives, they capture flags, plant, defuse bombs, etc. (all normal modes)
+ - Bots can camp randomly.
+ - Bots can follow others on own will.
+ - Bots have smooth and realistic aim.
+ - Bots respond smartly to their surroundings, they will go to you if you shoot, compass, etc.
+ - Bots use all weapons.
+ - Bots difficulty level can be customized and are accurate. (hard is hard, easy is easy, etc.)
+ - Bots each all have different classes, traits, and difficulty and remember it all.
+ - Bots switch from between primaries and secondaries.
+ - Bots can throw grenades, they even use grenades in preset map locations.
+ - Bots can melee people.
+ - Bots can run!
+ - Bots can climb ladders!
+ - Bots jump shot and drop shot.
+ - Bots detect smoke grenades, and grenade slows.
+ - Bots will remember their class, skill and traits, even on multiround based gametypes.
+ - ... And pretty much everything you expect a Combat Training bot to have
+
+## Installation
+You can easily setup a local LAN dedicated server for you to join and play on.
+
+0. Make sure that CoD2 server + libcod and game client is installed, updated and working properly.
+ - Download the [latest release](https://github.com/ineedbots/iw2_bot_warfare/releases) of Bot Warfare.
+1. Locate your CoD2 server install folder.
+2. Move the files/folders found in `Add to root of CoD2 server` from the Bot Warfare release archive you downloaded to the root of your CoD2 server folder.
+ - The folder/file structure should follow as `.CoD2 server folder/mods/mp_bots/z_svr_bots.iwd`.
+3. The mod is now installed. Now before you start your server, you will need to set the `fs_game` CVAR to `mods/mp_bots` as a commandline argument (`+set fs_game "mods/mp_bots"`).
+4. Now start your CoD2 client and connect to your server (`connect 127.0.0.1` in the console most likely) and play!
+
+## Documentation
+
+### Menu Usage
+- You can open the menu by pressing the fire, activate and melee buttons together.
+
+- You can navigate the options by the pressing the activate and fire keys, and you can select options by pressing your melee key.
+
+- Pressing the menu button again closes menus.
+
+### CVARs
+| Cvar | Description | Default Value |
+|----------------------------------|---------------------------------------------------------------------------------------------|--------------:|
+| bots_main | Enable this mod. | 1 |
+| bots_main_firstIsHost | The first player to connect will be given host. | 1 |
+| bots_main_GUIDs | A comma separated list of GUIDs of players who will be given host. | |
+| bots_main_waitForHostTime | How many seconds to wait for the host player to connect before adding bots to the match. | 10 |
+| bots_main_menu | Enable the in-game menu for hosts. | 1 |
+| bots_main_debug | Enable the in-game waypoint editor at start of the game, or enable bot event prints.
- `0` - disable
- `1` - for just debug events
- `2` - for every event
| 0 |
+| bots_main_kickBotsAtEnd | Kick the bots at the end of a match. | 1 |
+| bots_main_chat | The rate bots will chat at, set to 0 to disable. | 1.0 |
+| bots_manage_add | Amount of bots to add to the game, once bots are added, resets back to `0`. | 0 |
+| bots_manage_fill | Amount of players/bots (look at `bots_manage_fill_mode`) to maintain in the match. | 0 |
+| bots_manage_fill_mode | `bots_manage_fill` players/bots counting method.- `0` - counts both players and bots.
- `1` - only counts bots.
- `2` - exactly `0` but auto adjusts `bots_manage_fill` to map.
- `3` - exactly `1` but auto adjusts `bots_manage_fill` to map.
- `4` - bots are used for balancing teams.
- `5` - exactly `4` but auto adjusts `bots_manage_fill` to map.
| 0 |
+| bots_manage_fill_watchplayers | Bots will not be added until one player is in the game | 0 |
+| bots_manage_fill_kick | If the amount of players/bots in the match exceeds `bots_manage_fill`, kick bots until no longer exceeds. | 0 |
+| bots_manage_fill_spec | If when counting players for `bots_manage_fill` should include spectators. | 1 |
+| bots_team | One of `autoassign`, `allies`, `axis`, `spectator`, or `custom`. What team the bots should be on. | autoassign |
+| bots_team_amount | When `bots_team` is set to `custom`. The amount of bots to be placed on the axis team. The remainder will be placed on the allies team. | 0 |
+| bots_team_force | If the server should force bots' teams according to the `bots_team` value. When `bots_team` is `autoassign`, unbalanced teams will be balanced. This cvar is ignored when `bots_team` is `custom`. | 0 |
+| bots_team_mode | When `bots_team_force` is `1` and `bots_team` is `autoassign`, players/bots counting method. - `0` - counts both players and bots.
- `1` - only counts bots
| 0 |
+| bots_skill | Bots' difficulty.- `0` - Random difficulty for each bot.
- `1` - Easiest difficulty for all bots.
- `2` to `6` - Between easy and hard difficulty for all bots.
- `7` - The hardest difficulty for all bots.
- `8` - custom (look at the `bots_skill__` cvars)
- `9` - Every difficulty parameter is randomized
| 0 |
+| bots_skill_axis_hard | When `bots_skill` is set to `8`, the amount of hard difficulty bots to set on the axis team. | 0 |
+| bots_skill_axis_med | When `bots_skill` is set to `8`, the amount of medium difficulty bots to set on the axis team. The remaining bots on the team will be set to easy difficulty. | 0 |
+| bots_skill_allies_hard | When `bots_skill` is set to `8`, the amount of hard difficulty bots to set on the allies team. | 0 |
+| bots_skill_allies_med | When `bots_skill` is set to `8`, the amount of medium difficulty bots to set on the allies team. The remaining bots on the team will be set to easy difficulty. | 0 |
+| bots_skill_min | The minimum difficulty level for the bots. | 1 |
+| bots_skill_max | The maximum difficulty level for the bots. | 7 |
+| bots_play_move | If the bots can move. | 1 |
+| bots_play_knife | If the bots can knife. | 1 |
+| bots_play_fire | If the bots can fire. | 1 |
+| bots_play_nade | If the bots can grenade. | 1 |
+| bots_play_obj | If the bots can play the objective. | 1 |
+| bots_play_camp | If the bots can camp. | 1 |
+| bots_play_jumpdrop | If the bots can jump/drop shot. | 1 |
+| bots_play_ads | If the bots can aim down sights. | 1 |
+| bots_play_aim | If the bots can aim. | 1 |
+
+
+## Changelog
+- v2.3.0
+ - Initial release
+
+## Credits
+- INeedGames - http://www.moddb.com/mods/bot-warfare
+- PeZBot team - http://www.moddb.com/mods/pezbot
+- MeatBot team - https://www.moddb.com/mods/meatbot-v092
+- Ability
+- Salvation
+
+Feel free to use code, host on other sites, host on servers, mod it and merge mods with it, just give credit where credit is due!
+ -INeedGames/INeedBot(s) @ ineedbots@outlook.com
diff --git a/maps/mp/bots/_bot.gsc b/maps/mp/bots/_bot.gsc
index 4122fc2..0fa82c1 100644
--- a/maps/mp/bots/_bot.gsc
+++ b/maps/mp/bots/_bot.gsc
@@ -6,7 +6,7 @@
*/
init()
{
- level.bw_version = "2.3.0 PR 1";
+ level.bw_version = "2.3.0";
if ( getcvar( "bots_main" ) == "" )
{
@@ -131,11 +131,6 @@ init()
setcvar( "bots_skill_max", 7 );
}
- if ( getcvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
- {
- setcvar( "bots_loadout_rank", -1 );
- }
-
if ( getcvar( "bots_play_move" ) == "" ) // bots move
{
setcvar( "bots_play_move", true );
diff --git a/maps/mp/bots/_menu.gsc b/maps/mp/bots/_menu.gsc
index 3cee5ad..aafa548 100644
--- a/maps/mp/bots/_menu.gsc
+++ b/maps/mp/bots/_menu.gsc
@@ -173,7 +173,7 @@ doGreetings()
wait 1;
self iprintln( "Welcome to Bot Warfare " + self.name + "!" );
wait 5;
- self iprintln( "Press [{+attack}] + [{+activate}] + [{+melee_breath}] to open menu!" );
+ self iprintln( "Press [{+attack}] + [{+activate}] + [{+melee_breath}] / [{+melee}] to open menu!" );
}
watchPlayerOpenMenu()
diff --git a/scripts/mp/bots_adapter_libcod.gsc b/scripts/mp/bots_adapter_libcod.gsc
index b5b1bcb..0bd86f1 100644
--- a/scripts/mp/bots_adapter_libcod.gsc
+++ b/scripts/mp/bots_adapter_libcod.gsc
@@ -173,11 +173,11 @@ do_botaction( action )
break;
case "-activate":
- // self activate( false ); // no equal in libcod
+ self activate( false ); // no equal in libcod
break;
case "+activate":
- // self activate( true );
+ self activate( true );
break;
case "+smoke":