Files
2026-10-27 10:52:16 +00:00

194 lines
6.8 KiB
INI

// bot menus and tools
newmenu botmaps
const genbotmaps [
looplist $arg1 listmapname [
menuitemmapload $listmapname (concat "tmp_botmap =" $listmapname "; __matchsettings_bot = 1; showmenu [Match Settings]")
]
]
// problems with quite a number of maps when playing against bots (waypoints simply flooded) have lead to generating lists to avoid these
//known issues on: (BTDM) ac_alcove ac_aqueous ac_avenue ac_coal ac_depot ac_kazemat ac_keller ac_outpost ac_power ac_shine ac_terros ac_urban
const __bot_maps_all [ac_africa ac_arabian ac_arctic ac_arctic2 ac_arid ac_complex ac_desert ac_desert2 ac_desert3 ac_douze ac_dusk ac_edifice ac_elevation ac_gothic ac_industrial ac_ingress ac_lainio ac_lotus ac_mines ac_nocturne ac_origin ac_rampart ac_rattrap ac_scaffold ac_snow ac_stellar ac_sunset ac_swamp ac_toxic ac_venison ac_wasteland ac_werk]
genbotmaps $__bot_maps_all
menuitem [] -1
menuitem "Maps+\i\3" [showmenu botmaps_plus]
// the fork maps of menus.cfg ($__maps_plus), with bots
newmenu botmaps_plus
menutitle "maps+"
genbotmaps $__maps_plus
menuitem [] -1
menuitem "Back to bot maps\i\3" [showmenu botmaps]
tempalias tmp_botskill good
tempalias tmp_numbots 1
tempalias tmp_mode ""
tempalias tmp_botmap ""
tempalias tmp_isbotteammode 0
// add bots
const startbotmatch [
if ($tmp_isbotteammode) [ // team botmode
tempalias numrvsf (div $tmp_numbots 2)
tempalias numcla (div $tmp_numbots 2)
if (= (player1 team) 0) [ -= numcla 1 ] [
if (= (player1 team) 1) [ -= numrvsf 1 ]
]
if (&& (= $numrvsf $numcla) $needsswitch) [ -= numrvsf 1 ]
addnbot $numrvsf RVSF $tmp_botskill
addnbot $numcla CLA $tmp_botskill
] [ // bot FFA
addnbot $tmp_numbots random $tmp_botskill
]
]
const preparebotmatch [
echo starting botmatch..
tempalias needsswitch 0
if (&& (!= (player1 team) 0) (!= (player1 team) 1)) [ needsswitch = 1; team RVSF ]
// register event that is fired during mapload
addOnLoadOnce [
kickallbots
startbotmatch // add bots
mode 0 // reset mode for next maps
]
mode $tmp_mode
map $tmp_botmap $menuBotGameLength
]
const afterdisconnect [
if $connected [
addOnLoadOnce $arg1
disconnect
] [
if (watchingdemo) [
addOnLoadOnce $arg1
stopdemo
] $arg1
]
]
// register events and change map
const startbotmap [ afterdisconnect preparebotmatch ]
const emptymap [
afterdisconnect [
mode 0
showmenu maps
]
]
//// Main > Singleplayer ////
newmenu singleplayer
// teamplay not mature yet
menuitem "Bot Team Deathmatch" [ tmp_mode = 7; tmp_isbotteammode = 1; showmenu botskill ]
menuitem "Bot Deathmatch" [ tmp_mode = 8; tmp_isbotteammode = 0; showmenu botskill ]
menuitem "Bot One Shot, One Kill" [ tmp_mode = 12; tmp_isbotteammode = 0; showmenu botskill ]
menuitem "Bot Pistol Frenzy" [ tmp_mode = 18; tmp_isbotteammode = 0; showmenu botskill ]
menuitem "Bot Last Swiss Standing" [ tmp_mode = 19; tmp_isbotteammode = 0; showmenu botskill ]
menuitem "Bot Team Survivor" [ tmp_mode = 20; tmp_isbotteammode = 1; showmenu botskill ]
menuitem "Bot Team One Shot, One Kill" [ tmp_mode = 21; tmp_isbotteammode = 1; showmenu botskill ]
menuitem "Bot Survival" [ load_survival ; showmenu [Survival Mode] ]
menuitem "" -1
menuitem "Bot settings..." [ showmenu [Bot settings] ]
menuitem "" -1
menuitem "Empty map" emptymap
menuitem "Search map..." [ showmenu [search map] ]
searchmap = ""
newmenu [search official map]
menudirlist "packages/maps/official" cgz [map $arg1] 0 searchmap
newmenu [search custom map]
menurenderoffset -20 0
menudirlist "packages/maps" cgz [map $arg1] 0 searchmap
newmenu [search map]
menuitemtextinput "Part of map name or description: " "result $searchmap" [ searchmap = $arg1 ]
menuitem "\f2\t [ Search in official maps ]" [ showmenu [search official map] ]
menuitem "\f2\t [ Search in custom maps ]" [ showmenu [search custom map] ]
const showmenu_enemies [ if ($tmp_isbotteammode) [ showmenu [team enemies] ] [ showmenu enemies ] ]
newmenu botskill
menuitem "Best+ (brutal)" [ tmp_botskill = best+; showmenu_enemies ]
menuitem Best [ tmp_botskill = best; showmenu_enemies ]
menuitem "Good (default)" [ tmp_botskill = good; showmenu_enemies ]
menuitem Medium [ tmp_botskill = medium; showmenu_enemies ]
menuitem Worse [ tmp_botskill = worse; showmenu_enemies ]
menuitem Bad [ tmp_botskill = bad; showmenu_enemies ]
const genenemyitems [
loop i (listlen $arg1) [
numplayers = (at $arg1 $i)
if (= $arg2 0) [ // DM
-= numplayers 1 // don't count yourself as enemy
menutext = (concat (+ $numplayers 1) players)
] [ // TDM
teamsize = (div $numplayers 2)
menutext = (concatword $teamsize vs $teamsize)
]
menuitem $menutext (concat [tmp_numbots =] $numplayers [; showmenu botmaps])
]
]
newmenu enemies
genenemyitems [2 4 8 12 16 24 32] 0
newmenu [team enemies]
genenemyitems [4 8 12 16 24 32] 1
newmenu [Bot settings]
menuitemslider "Bot match length in minutes: " 1 60 "$menuBotGameLength" 1 [ menuBotGameLength = $arg1 ]
menuitemcheckbox "Idle bots?" "(idlebots 2)" [ idlebots $arg1 ]
menuitemcheckbox "Bots attack?" "(botsshoot 2)" [ botsshoot $arg1 ]
newmenu [Creating bot waypoints]
menuitem "Waypoints..." [ showmenu Waypoints ]
menuitem "Paths..." [ showmenu Paths ]
menuitem "Other operations..." [ showmenu [Other bot operations] ]
menuitem "" -1
menuitem "Flood map with waypoints" wpflood
menuitem "Save bot waypoints" wpsave
newmenu Waypoints
menuitem "Add a waypoint" [ addwp 0 ]
menuitem "Add auto-connecting waypoint" [ addwp 1 ]
menuitem "" -1
menuitem "Delete nearest waypoint" delwp
menuitem "Delete all waypoints" [ showmenu [Delete all waypoints] ]
newmenu Paths
menuitem "Create Start of 2-way path" addpath2way1
menuitem "Create End of 2-way path" addpath2way2
menuitem "Delete Start of 2-way path" delpath2way1
menuitem "Delete End of 2-way path" delpath2way2
menuitem "" -1
menuitem "Create Start of 1-way path" addpath1way1
menuitem "Create End of 1-way path" addpath1way2
menuitem "Delete Start of 1-way path" delpath1way1
menuitem "Delete End of 1-way path" delpath1way2
newmenu [Other bot operations]
menuitem "Set waypoint as jumpable" setjumpwp
menuitem "Unset waypoint as jumpable" unsetjumpwp
menuitem "Set waypoint direction (yaw)" setwpyaw
menuitem "" -1
menuitemslider "Waypoint visibility: " 0 1 [ ] ["Hide waypoints" "Show waypoints"] [ wpvisible $arg1 ]
menuitemslider "Select/place waypoints by: " 0 1 "($xhairwpsel)" ["Your current location" "Clicking a point on the grid"] [ xhairwpsel $arg1 ]
newmenu [Delete all waypoints]
menuinit [ delallwps = 0 ] // Ensures this menu works correctly.
menuitemcheckbox "Yes, delete all waypoints: " [delallwps = 1] [delallwps = $arg1]
menuitem "\f2\t\t Apply!" [ if $delallwps wpclear [ showmenu [] ] ]