Warhammer 40,000: Dawn of War - Soulstorm

Warhammer 40,000: Dawn of War - Soulstorm

Not enough ratings
Speed adjust / add resources/ switch player position / AI vs AI Autoexec.lua
By SteahmChip
Ready to use text of autoexec.lua file that binds key combinations to
--slow down /speed up game
--Add resources to player and/ or AIs
--player to AI control for AI vs AI battles
--toggle fog of War
--switch player to another position on the map
--works for Dow Gold, Dark Crusade and Soulstorm
   
Award
Favorite
Favorited
Unfavorite
Dawn of War Autoexec.lua fun
The "autoexec.lua" file in your Dawn of War folder(s) where your Dawn of War executable files are located, can give your singleplayer game a lot more capability.

The autoexec.lua file would be created in the following folders for the game you are playing where the .exe files are at:

X:\\MyInstallPath\.Steam\steamapps\common\Dawn of War Gold\
X:\\MyInstallPath\.Steam\steamapps\common\Dawn of War Dark Crusade\
X:\\MyInstallPath\.Steam\steamapps\common\Dawn of War soulstorm\

To easily access these folder locations for your game being played:

Go to your Steam Library (right click) Warhammer 40,000- Dark Crusade (Soulstorm, etc)
> Select Properties
> select Manage
> Browse local files
=> folder location will open up

Then inside that folder create a text file and call it:

autoexec.lua

In this autoexec.lua copy and paste the contents of the next section (Autoexec.lua fun file you can use now!) into it.

Save the file.
Play the game.

.
.

NOTE: A text editor such as Notepad can create the text file named autoexec.lua
Make sure to "Save as" and select "All files" in the file type, otherwise you'll get "autoexec.lua.txt in which case it will not work.

NOTE: If you downloaded any mods or whatever, there may already have an autoexec.lua in that folder. Rename it to autoexecOLD.lua or some such to avoid losing it. It may also be possible to merge its contents with the "autoexec.lua" that you are working with here.

NOTE: You may also need to enable development mode.

For your game being played
Go to your Steam Library
>(right click) Warhammer 40,000- Dark Crusade (or Soulstorm, etc)
>select Properties
>(on the left) select General
>(on the right under General)locate LAUNCH OPTIONS
>(in the fill-in box) type in -dev.

Close the window

Play the game!

NOTE: For the resource/requisition feature (Shift + F1 and Shift + F2 ) to work properly,
START POSITIONS for all players must be set to FIXED (not Random).
Autoexec.lua fun file you can use now!
-- In this section you will copy and paste the contents into your created autoexec.lua file as described previously.

-- Works for all versions of Dawn of War I
-- Original
-- Winter Assualt
-- Dark Crusade
-- Soulstorm

--============== start copy after this line =======================

bind("shift+tab","toggle_screenmode()")
bind("F1","setsimrate(1)")
bind("F2","setsimrate(2)")
bind("F3","setsimrate(3)")
bind("F4","setsimrate(4)")
bind("F5","setsimrate(8)")
bind("F6","setsimrate(16)")
bind("F7", "setsimrate(30)")
bind("shift+F1","human_gold()")
bind("shift+F2","ai_gold()")
bind("shift+F3","cycle_players()")
bind("shift+F4","toggle_fix()")
bind("shift+F5","switch_player_control()")
bind("shift+F6","ingame_select_ui_toggle()")
bind("shift+F7","disableai()")
bind("shift+F8","enableai()")
bind("shift+F9","toggle_FOW()")
--bind("button_name", "setsimpause()")--
setsimpause()

function human_gold()
local count=World_GetPlayerCount()
g_Player1=World_GetPlayerAt(0);
if count>1 then
g_Player2=World_GetPlayerAt(1);
end
if count>2 then
g_Player3=World_GetPlayerAt(2);
end
if count>3 then
g_Player4=World_GetPlayerAt(3);
end
if count>4 then
g_Player5=World_GetPlayerAt(4);
end
if count>5 then
g_Player6=World_GetPlayerAt(5);
end
if count>6 then
g_Player7=World_GetPlayerAt(6);
end
if count>7 then
g_Player8=World_GetPlayerAt(7);

end

Player_SetResource(g_Player1,RT_Requisition,3999);
Player_SetResource(g_Player1,RT_Power,3999);
end

--

function ai_gold()
local count=World_GetPlayerCount()
g_Player1=World_GetPlayerAt(0);
if count>1 then
g_Player2=World_GetPlayerAt(1);
end
if count>2 then
g_Player3=World_GetPlayerAt(2);
end
if count>3 then
g_Player4=World_GetPlayerAt(3);
end
if count>4 then
g_Player5=World_GetPlayerAt(4);
end
if count>5 then
g_Player6=World_GetPlayerAt(5);
end
if count>6 then
g_Player7=World_GetPlayerAt(6);
end
if count>7 then
g_Player8=World_GetPlayerAt(7);
end

Player_SetResource(g_Player2,RT_Requisition,3999);
Player_SetResource(g_Player2,RT_Power,3999);
Player_SetResource(g_Player3,RT_Requisition,3999);
Player_SetResource(g_Player3,RT_Power,3999);
Player_SetResource(g_Player4,RT_Requisition,3999);
Player_SetResource(g_Player4,RT_Power,3999);
Player_SetResource(g_Player5,RT_Requisition,3999);
Player_SetResource(g_Player5,RT_Power,3999);
Player_SetResource(g_Player6,RT_Requisition,3999);
Player_SetResource(g_Player6,RT_Power,3999);
Player_SetResource(g_Player7,RT_Requisition,3999);
Player_SetResource(g_Player7,RT_Power,3999);
Player_SetResource(g_Player8,RT_Requisition,3999);
Player_SetResource(g_Player8,RT_Power,3999);

end

g_ScreenModeSwitch = true
function toggle_screenmode ()
if g_ScreenModeSwitch then
g_ScreenModeSwitch = false
taskbar_hide ()
message_hide ()
SS_ToggleModifierEvents(false)
ingame_stats_mouseover_toggle (false)
ingame_stats_toggle (false)
ingame_select_ui_toggle (false)
else
g_ScreenModeSwitch = true
taskbar_show ()
message_show ()
SS_ToggleModifierEvents(true)
ingame_stats_mouseover_toggle (true)
ingame_stats_toggle (true)
ingame_select_ui_toggle (true)
end
end


fowmode = 0
function toggle_FOW()
if fowmode == 0 then
FOW_RevealAll()
fowmode = 1
else
FOW_Reset()
fowmode = 0
end
end


function SS_ToggleModifierEvents(state)
t_ModifierList = { "builder_idle_event", "negative_cover_event_modifier", "cover_event_modifier", "morale_break_event" }
local j = World_GetPlayerCount()
for i = 1, j do
local player = World_GetPlayerAt (i-1)
for x = 1, table.getn (t_ModifierList) do
Modifier_Player_FX_Enable (player, t_ModifierList[x], state)
end
end
end


function switch_player_control()
local player = World_GetPlayerAt(Tut_GetLocalPlayerIndex())
if Cpu_IsCpuPlayer(player) then
run = W40k_SwitchToPlayer( player, true )
else
run = Cpu_ControlLocalPlayer();
end
end


function disableai()
run = Cpu_EnableAll(false);
end


function enableai()
run = Cpu_EnableAll(true);
end


g_DarkCrusadeFix = false
g_Difficulty = Cpu_GetDifficulty(World_GetPlayerAt(1))

function toggle_fix()
g_DarkCrusadeFix = not g_DarkCrusadeFix
end

--Switches between all the players in order
function cycle_players()
local previous_player_index = Tut_GetLocalPlayerIndex()
local current_player_index = previous_player_index + 1

if current_player_index>=World_GetPlayerCount() then
current_player_index = 0
end

switchplayer(current_player_index)

if g_DarkCrusadeFix then
local previous_player = World_GetPlayerAt(previous_player_index)
local current_player = World_GetPlayerAt(current_player_index)

local power_bonus = 0
local resource_multiplier = 1
if g_Difficulty>1 then
power_bonus = 100
resource_multiplier = 1 + (g_Difficulty - 2)*0.2
end

--Necrons get triple the flat power bonus and don't have Requisition
if Player_GetRace(previous_player)==3 then
Player_SetResource(previous_player, 1, (Player_GetResource(previous_player, 1)+power_bonus*3)*resource_multiplier)
else
Player_SetResource(previous_player, 0, Player_GetResource(previous_player, 0)*resource_multiplier)
Player_SetResource(previous_player, 1, (Player_GetResource(previous_player, 1)+power_bonus)*resource_multiplier)
end

if Player_GetRace(current_player)==3 then
Player_SetResource(current_player, 1, Player_GetResource(current_player, 1)/resource_multiplier-power_bonus*3)
else
Player_SetResource(current_player, 0, Player_GetResource(current_player, 0)/resource_multiplier)
Player_SetResource(current_player, 1, Player_GetResource(current_player, 1)/resource_multiplier-power_bonus)
end
end
end

-- ============= End Copy before this line and paste into autoexec.lua file ==============



Explanation
--Optional
--The following can be copy/pasted in your new autoexec.lua file as a reference:

--============== start copy after this line =======================

--[[
Explanation
bind("shift+tab","toggle_screenmode()") turns off many screen UI elements use in conjunction with shift+F6 to toggle_screenmode for better screenshots

bind("F1","setsimrate(1-30 etc)") slows / speeds up game (default 8)Slowest speed allows precise control and an entertaining cinematic experience watching the action unfold. Fastest speeds are useful for base demolishment.

bind("shift+F1",human_gold()") sets player 1 (human_gold) at 3999 resources
bind("shift+F2","ai_gold()") sets player 0 (ai_gold) at 3999 resources
note that all AIs get the resources

bind("shift+F3","cycle_players()") switches player to another map position


shift+F3 This will allow you to simply switch to the desired position by pressing Shift and F3 together. It might also let you mess with AI players, for example switch to them and tech up for them if they refuse to do it on their own.

bind("shift+F4","toggle_fix()") for Dark Crusade and shift+F3 see further below

shift+F4 If you're playing Dark Crusade rather than Soulstorm, and play difficulties above Standard, use Shift+F4 before switching the starting position so that the extra resources that AI players get are given to the player you switched off of and taken from the player you're assuming control of.
In Dark Crusade, the AI gets modified starting resources. To make sure
that everything is as if you just started in a different position, that
change may be reverted for you and reapplied for the AI when switching.
That way the AI retains the advantage and you don't receive it.

If you decide to use it (Shift+F4), make sure to do it before unpausing,
as the AI might spend the resources, making the reversal ineffective.

If you just plan to switch players during the game, make sure to disable it
so that it doesn't mess up the resource counts too much.

If you only want to use this file to change starting position once, you can
change the value of g_DarkCrusadeFix to true and forget about it.

bind("shift+F5","switch_player_control()") AI takes over player, good for AI vs AI battles,
press shift+F5 and take back control from AI.

bind("shift+F6","ingame_select_ui_toggle()") turns off many UI selection elements. Use in conjunction with shift+tab to toggle_screenmode for better screenshots

bind("shift+F7,F8","disableai()") disables / enables AI if you do not want them attacking etc for testing purposes

bind("shift+F9","toggle_FOW()") turns off Fog of War

bind("button_name", "setsimpause()") if no pause key on keyboard, assign one

--]]

-- ============= End Copy before this line and paste into autoexec.lua file ==============




FAQ
Q: Can this be used in multiplayer?
A: Unknown, this was setup witth singleplayer in mind.

Q: The F1, F2 F3 etc keybindings mess with my unit stances, how can I fix that?
A: Ensure you have no units selected when you press those keys to change the speed
Or you can edit those keys by using Notepad, etc, for another binding such as "CTRL+F1"; " ALT+F1" etc.
Check keybindings of game so your new edits are not doing something you do not want.

Q: I want to dump different amount of resources to a particular AI which is always too weak / strong.
A: The resources are assigned by player position, so for this to work (or the requision/resources feature reliably) the FIXED player position must always be used (not Random).
This means the same players are always on the same places on the map.

By using a text editor such as Notepad, the resource amount can be added to a particular AI player without affecting the others by editing, for example, player 7 to 5999 or some other number:
Player_SetResource(g_Player7,RT_Requisition,3999);
Player_SetResource(g_Player7,RT_Power,3999);

Q: All that copy pasting into files I have to create/name, too many things can go wrong!
A: Download .zip file from here (remove spaces)
www . mediafire . com/file/57efnmah836vbho/autoexec_luaDawnOfWar.zip/file

unzip and place autoexec.lua into .....team/steamapps/common/Dawn of War Soulstom (or other DOW game folder)

Run game and when it starts it should be automatically paused,
hit "pause" button to continue

If you do not have a pause button (ugh)
open autoexec.exe file and delete line
setsimpause()
else reassign unused keys for pause i.e
bind("shift+P", "setsimpause()")

Q: I have trouble with my >insert Windows issue here<
A: Please consult sources listed below in credits and additional resources, likely it is covered there,
Credits and additional resources
WHERE I got the information from about how to setup this autoexec.lua file with some verbage taken from these sources:

How to have an ALL AI battle + Super Fast Game Speed, etc.
by thudo

https://forums.revora.net/topic/42522-how-to-have-an-all-ai-battle-super-fast-game-speed-etc/

Playtesting Tips and Tools
(also includes a usable autoexec.lua file that can be downloaded)
by Gambit

https://forums.revora.net/topic/110329-playtesting-tips-and-tools/

How to switch player positions in maps and start game /missions paused
by LilFetcher

https://www.reddit.com/r/Warhammer40k/comments/eww2g4/starting_position_dawn_of_war/

With thanks to Captn Kickass for alerting me to issues with resources not being added properly to AIs
Autoexec.lua Fun (to see what the AI is doing)
-- This is the same as the preceeding autoexec.lua file EXCEPT it allows you to see what the AI is doing, useful for testing maps etc.

--============== start copy after this line =======================

bind("shift+tab","toggle_screenmode()")
bind("F1","setsimrate(1)")
bind("F2","setsimrate(2)")
bind("F3","setsimrate(3)")
bind("F4","setsimrate(4)")
bind("F5","setsimrate(8)")
bind("F6","setsimrate(16)")
bind("F7", "setsimrate(30)")
bind("shift+F1","human_gold()")
bind("shift+F2","ai_gold()")
bind("shift+F3","cycle_players()")
bind("shift+F4","toggle_fix()")
bind("shift+F5","switch_player_control()")
bind("shift+F6","ingame_select_ui_toggle()")
bind("shift+F7","disableai()")
bind("shift+F8","enableai()")
bind("shift+F9","toggle_FOW()")
--bind("button_name", "setsimpause()")--
setsimpause()

function human_gold()
local count=World_GetPlayerCount()
g_Player1=World_GetPlayerAt(0);
if count>1 then
g_Player2=World_GetPlayerAt(1);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player2,0);
end
if count>2 then
g_Player3=World_GetPlayerAt(2);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player3,0);
end
if count>3 then
g_Player4=World_GetPlayerAt(3);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player4,0);
end
if count>4 then
g_Player5=World_GetPlayerAt(4);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player5,0);
end
if count>5 then
g_Player6=World_GetPlayerAt(5);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player6,0);
end
if count>6 then
g_Player7=World_GetPlayerAt(6);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player7,0);
end
if count>7 then
g_Player8=World_GetPlayerAt(7);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player8,0);
end

Player_SetResource(g_Player1,RT_Requisition,3999);
Player_SetResource(g_Player1,RT_Power,3999);
end

--

function ai_gold()
local count=World_GetPlayerCount()
g_Player1=World_GetPlayerAt(0);
if count>1 then
g_Player2=World_GetPlayerAt(1);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player2,0);
end
if count>2 then
g_Player3=World_GetPlayerAt(2);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player3,0);
end
if count>3 then
g_Player4=World_GetPlayerAt(3);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player4,0);
end
if count>4 then
g_Player5=World_GetPlayerAt(4);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player5,0);
end
if count>5 then
g_Player6=World_GetPlayerAt(5);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player6,0);
end
if count>6 then
g_Player7=World_GetPlayerAt(6);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player7,0);
end
if count>7 then
g_Player8=World_GetPlayerAt(7);
World_EnablePlayerToPlayerFOW(g_Player1,g_Player8,0);
end

Player_SetResource(g_Player2,RT_Requisition,3999);
Player_SetResource(g_Player2,RT_Power,3999);
Player_SetResource(g_Player3,RT_Requisition,3999);
Player_SetResource(g_Player3,RT_Power,3999);
Player_SetResource(g_Player4,RT_Requisition,3999);
Player_SetResource(g_Player4,RT_Power,3999);
Player_SetResource(g_Player5,RT_Requisition,3999);
Player_SetResource(g_Player5,RT_Power,3999);
Player_SetResource(g_Player6,RT_Requisition,3999);
Player_SetResource(g_Player6,RT_Power,3999);
Player_SetResource(g_Player7,RT_Requisition,3999);
Player_SetResource(g_Player7,RT_Power,3999);
Player_SetResource(g_Player8,RT_Requisition,3999);
Player_SetResource(g_Player8,RT_Power,3999);

end

g_ScreenModeSwitch = true
function toggle_screenmode ()
if g_ScreenModeSwitch then
g_ScreenModeSwitch = false
taskbar_hide ()
message_hide ()
SS_ToggleModifierEvents(false)
ingame_stats_mouseover_toggle (false)
ingame_stats_toggle (false)
ingame_select_ui_toggle (false)
else
g_ScreenModeSwitch = true
taskbar_show ()
message_show ()
SS_ToggleModifierEvents(true)
ingame_stats_mouseover_toggle (true)
ingame_stats_toggle (true)
ingame_select_ui_toggle (true)
end
end


fowmode = 0
function toggle_FOW()
if fowmode == 0 then
FOW_RevealAll()
fowmode = 1
else
FOW_Reset()
fowmode = 0
end
end


function SS_ToggleModifierEvents(state)
t_ModifierList = { "builder_idle_event", "negative_cover_event_modifier", "cover_event_modifier", "morale_break_event" }
local j = World_GetPlayerCount()
for i = 1, j do
local player = World_GetPlayerAt (i-1)
for x = 1, table.getn (t_ModifierList) do
Modifier_Player_FX_Enable (player, t_ModifierList[x], state)
end
end
end


function switch_player_control()
local player = World_GetPlayerAt(Tut_GetLocalPlayerIndex())
if Cpu_IsCpuPlayer(player) then
run = W40k_SwitchToPlayer( player, true )
else
run = Cpu_ControlLocalPlayer();
end
end


function disableai()
run = Cpu_EnableAll(false);
end


function enableai()
run = Cpu_EnableAll(true);
end


g_DarkCrusadeFix = false
g_Difficulty = Cpu_GetDifficulty(World_GetPlayerAt(1))

function toggle_fix()
g_DarkCrusadeFix = not g_DarkCrusadeFix
end

--Switches between all the players in order
function cycle_players()
local previous_player_index = Tut_GetLocalPlayerIndex()
local current_player_index = previous_player_index + 1

if current_player_index>=World_GetPlayerCount() then
current_player_index = 0
end

switchplayer(current_player_index)

if g_DarkCrusadeFix then
local previous_player = World_GetPlayerAt(previous_player_index)
local current_player = World_GetPlayerAt(current_player_index)

local power_bonus = 0
local resource_multiplier = 1
if g_Difficulty>1 then
power_bonus = 100
resource_multiplier = 1 + (g_Difficulty - 2)*0.2
end

--Necrons get triple the flat power bonus and don't have Requisition
if Player_GetRace(previous_player)==3 then
Player_SetResource(previous_player, 1, (Player_GetResource(previous_player, 1)+power_bonus*3)*resource_multiplier)
else
Player_SetResource(previous_player, 0, Player_GetResource(previous_player, 0)*resource_multiplier)
Player_SetResource(previous_player, 1, (Player_GetResource(previous_player, 1)+power_bonus)*resource_multiplier)
end

if Player_GetRace(current_player)==3 then
Player_SetResource(current_player, 1, Player_GetResource(current_player, 1)/resource_multiplier-power_bonus*3)
else
Player_SetResource(current_player, 0, Player_GetResource(current_player, 0)/resource_multiplier)
Player_SetResource(current_player, 1, Player_GetResource(current_player, 1)/resource_multiplier-power_bonus)
end
end
end

-- ============= End Copy before this line and paste into autoexec.lua file ==============


10 Comments
SteahmChip  [author] Oct 2, 2024 @ 9:28pm 
Download .zip file from here (remove spaces)
www . mediafire . com/file/57efnmah836vbho/autoexec_luaDawnOfWar.zip/file
unzip and place autoexec.lua into .....team/steamapps/common/Dawn of War Soulstom (or other DOW game folder)

Run game and when it starts it should be automatically paused,
hit "pause" button to continue

If you do not have a pause button (ugh)
open autoexec.exe file and delete line
setsimpause()
else reassign keys for pause
Pimpin Pippin Sep 30, 2024 @ 9:02am 
Thanks!
Drankos Sep 30, 2024 @ 8:51am 
I did all the steps, creaste de autoexec.lua, copied and pasted the entire file, save as and all files and im playing in dev mode and still it doesn't work.
SteahmChip  [author] Aug 11, 2023 @ 6:54pm 
@Pimpin Pippin

There are a couple of ways of doing that:
--Create a mod for the changed file
--Manually recreate the folder tree as it is displayed in the Corsix Mod Studio and place it inside the appropriate location ie X:\MyInstallPath\Dawn of War Soulstorm\ folder (usually inside the \engine\ data folder, but you have to check how Corsix has it

If you do not have these folders you have to create them.

Anyway, for those unfamilar with Dawn of War modding, the first few tries to mod something even simple can be a bit long and difficult until you become faimilar with at least the location of the folder trees and file locations.

THIS is a very helpful site:
Introduction to modding Dawn of War
https://forums.revora.net/topic/116261-an-introduction-to-modding-dawn-of-war-for-beginners/
Pimpin Pippin Aug 10, 2023 @ 8:07am 
Hello, i am sorry for the off-topic question.
If you can please help me out.
I want to edit the destination_formation.lua for Dark Crusade and Soulstorm.
I can extract the lua from game files using Corsix mod studio & edit the lua with Notepad.
But i do not know where should i place the edited destination_formation.lua so that the game is forced to load it (instead of the vanilla lua)?
Thank you very much for explaining.
SteahmChip  [author] Jun 7, 2023 @ 11:11pm 
Removed multiple versions of the autoexec.lua
As long as FIXED positions are used, the resource /requisition feature should work normally (random is too unprediecable for that feature).

Added an autoexec.lua version that can allow a player to see what the AI is doing from THUDO's example at Revora; useful for testing purposes.
QWEEDDY2 May 27, 2023 @ 12:30pm 
O, another one guide to thousand here. +1 to useful ones. Thanks.
SteahmChip  [author] Apr 6, 2023 @ 10:02pm 
@Capt K
>>so that you (player) can see what all bots are doing<<

I now removed the lines entirely :
--World_EnablePlayerToPlayerFOW(g_Player1,g_Player4,0); etc


They should have already been all commented out --
left there for testing purposes (remove the comment -- then AI can be seen)
but to avoid any problems they are now flushed from the file

Thudo's post at Revora (address in credits ) can be consulted if those are wanted back in
Captn Kickass Apr 6, 2023 @ 8:58am 
@SteahmChip just tested out
ai_gold() gives resources to the first 3 bots only. Last 4 bots remain unchanged.

So, to fix that, you can add:
Player_SetResource(g_Player5,RT_Requisition,3999);
Player_SetResource(g_Player5,RT_Power,3999);
Player_SetResource(g_Player6,RT_Requisition,3999);
Player_SetResource(g_Player6,RT_Power,3999);
Player_SetResource(g_Player7,RT_Requisition,3999);
Player_SetResource(g_Player7,RT_Power,3999);
Player_SetResource(g_Player8,RT_Requisition,3999);
Player_SetResource(g_Player8,RT_Power,3999);

This should be added between Player_SetResource(g_Player4,RT_Power,3999); and end:

Player_SetResource(g_Player4,RT_Power,3999);
<--- paste here
end

Also, both ai_gold() and human_gold() make it so that you (player) can see what all bots are doing
Captn Kickass Apr 5, 2023 @ 2:49pm 
Hey, cool guide.

Two things tho:
1) Are you sure that ai_gold() and human_gold() do exactly what you said? Seems more like ai_gold() gives resources to a player, while human_gold() gives resources to bots.
2) bind("shift+F5","switch_player_control()") - would be good to mention that you can also take the control back from AI.