Add code, unknown original date
This commit is contained in:
455
code/game/.svn/all-wcprops
Executable file
455
code/game/.svn/all-wcprops
Executable file
@@ -0,0 +1,455 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 47
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game
|
||||
END
|
||||
be_ea.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 55
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ea.h
|
||||
END
|
||||
g_syscalls.asm
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 62
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_syscalls.asm
|
||||
END
|
||||
be_ai_char.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ai_char.h
|
||||
END
|
||||
g_syscalls.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_syscalls.c
|
||||
END
|
||||
be_ai_chat.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ai_chat.h
|
||||
END
|
||||
bg_misc.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_misc.c
|
||||
END
|
||||
g_local.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_local.h
|
||||
END
|
||||
be_ai_goal.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ai_goal.h
|
||||
END
|
||||
q_math.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/q_math.c
|
||||
END
|
||||
ai_cmd.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_cmd.c
|
||||
END
|
||||
syn.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 53
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/syn.h
|
||||
END
|
||||
g_arenas.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_arenas.c
|
||||
END
|
||||
be_ai_weap.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ai_weap.h
|
||||
END
|
||||
g_active.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_active.c
|
||||
END
|
||||
ai_cmd.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_cmd.h
|
||||
END
|
||||
game_ta.bat
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game_ta.bat
|
||||
END
|
||||
g_rankings.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_rankings.c
|
||||
END
|
||||
g_mem.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 55
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_mem.c
|
||||
END
|
||||
g_rankings.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_rankings.h
|
||||
END
|
||||
g_public.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_public.h
|
||||
END
|
||||
g_main.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_main.c
|
||||
END
|
||||
g_bot.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 55
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_bot.c
|
||||
END
|
||||
bg_pmove.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_pmove.c
|
||||
END
|
||||
g_weapon.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_weapon.c
|
||||
END
|
||||
g_misc.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_misc.c
|
||||
END
|
||||
chars.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 55
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/chars.h
|
||||
END
|
||||
bg_local.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_local.h
|
||||
END
|
||||
game.q3asm
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game.q3asm
|
||||
END
|
||||
game.dsp
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game.dsp
|
||||
END
|
||||
ai_dmq3.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_dmq3.c
|
||||
END
|
||||
be_aas.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_aas.h
|
||||
END
|
||||
botlib.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/botlib.h
|
||||
END
|
||||
ai_dmq3.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_dmq3.h
|
||||
END
|
||||
Conscript
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/Conscript
|
||||
END
|
||||
g_items.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_items.c
|
||||
END
|
||||
game.vcproj
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game.vcproj
|
||||
END
|
||||
g_team.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_team.c
|
||||
END
|
||||
g_cmds.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_cmds.c
|
||||
END
|
||||
ai_main.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_main.c
|
||||
END
|
||||
g_spawn.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_spawn.c
|
||||
END
|
||||
bg_slidemove.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 62
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_slidemove.c
|
||||
END
|
||||
g_team.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_team.h
|
||||
END
|
||||
game.sh
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 55
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game.sh
|
||||
END
|
||||
ai_main.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_main.h
|
||||
END
|
||||
g_svcmds.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_svcmds.c
|
||||
END
|
||||
surfaceflags.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 62
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/surfaceflags.h
|
||||
END
|
||||
g_combat.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_combat.c
|
||||
END
|
||||
ai_dmnet.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_dmnet.c
|
||||
END
|
||||
game.def
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game.def
|
||||
END
|
||||
ai_dmnet.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_dmnet.h
|
||||
END
|
||||
q_shared.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/q_shared.c
|
||||
END
|
||||
g_session.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_session.c
|
||||
END
|
||||
q_shared.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/q_shared.h
|
||||
END
|
||||
g_target.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_target.c
|
||||
END
|
||||
game.bat
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game.bat
|
||||
END
|
||||
be_ai_gen.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ai_gen.h
|
||||
END
|
||||
g_mover.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_mover.c
|
||||
END
|
||||
ai_team.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_team.c
|
||||
END
|
||||
game_ta.q3asm
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 61
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game_ta.q3asm
|
||||
END
|
||||
inv.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 53
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/inv.h
|
||||
END
|
||||
match.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 55
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/match.h
|
||||
END
|
||||
ai_vcmd.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_vcmd.c
|
||||
END
|
||||
ai_team.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_team.h
|
||||
END
|
||||
g_utils.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_utils.c
|
||||
END
|
||||
ai_vcmd.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_vcmd.h
|
||||
END
|
||||
g_trigger.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_trigger.c
|
||||
END
|
||||
g_missile.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_missile.c
|
||||
END
|
||||
bg_lib.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_lib.c
|
||||
END
|
||||
bg_lib.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_lib.h
|
||||
END
|
||||
g_client.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/g_client.c
|
||||
END
|
||||
game_ta.sh
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 58
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/game_ta.sh
|
||||
END
|
||||
ai_chat.c
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_chat.c
|
||||
END
|
||||
be_ai_move.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/be_ai_move.h
|
||||
END
|
||||
bg_public.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/bg_public.h
|
||||
END
|
||||
ai_chat.h
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/aklabs/!svn/ver/9/trunk/hypermod/code/game/ai_chat.h
|
||||
END
|
||||
2581
code/game/.svn/entries
Executable file
2581
code/game/.svn/entries
Executable file
File diff suppressed because it is too large
Load Diff
5
code/game/.svn/prop-base/Conscript.svn-base
Executable file
5
code/game/.svn/prop-base/Conscript.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_chat.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_chat.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_chat.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_chat.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_cmd.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_cmd.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_cmd.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_cmd.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_dmnet.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_dmnet.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_dmnet.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_dmnet.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_dmq3.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_dmq3.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_dmq3.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_dmq3.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_main.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_main.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_main.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_main.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_team.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_team.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_team.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_team.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_vcmd.c.svn-base
Executable file
5
code/game/.svn/prop-base/ai_vcmd.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/ai_vcmd.h.svn-base
Executable file
5
code/game/.svn/prop-base/ai_vcmd.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_aas.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_aas.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ai_char.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ai_char.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ai_chat.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ai_chat.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ai_gen.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ai_gen.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ai_goal.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ai_goal.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ai_move.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ai_move.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ai_weap.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ai_weap.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/be_ea.h.svn-base
Executable file
5
code/game/.svn/prop-base/be_ea.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_lib.c.svn-base
Executable file
5
code/game/.svn/prop-base/bg_lib.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_lib.h.svn-base
Executable file
5
code/game/.svn/prop-base/bg_lib.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_local.h.svn-base
Executable file
5
code/game/.svn/prop-base/bg_local.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_misc.c.svn-base
Executable file
5
code/game/.svn/prop-base/bg_misc.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_pmove.c.svn-base
Executable file
5
code/game/.svn/prop-base/bg_pmove.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_public.h.svn-base
Executable file
5
code/game/.svn/prop-base/bg_public.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/bg_slidemove.c.svn-base
Executable file
5
code/game/.svn/prop-base/bg_slidemove.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/botlib.h.svn-base
Executable file
5
code/game/.svn/prop-base/botlib.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/chars.h.svn-base
Executable file
5
code/game/.svn/prop-base/chars.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_active.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_active.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_arenas.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_arenas.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_bot.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_bot.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_client.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_client.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_cmds.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_cmds.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_combat.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_combat.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_items.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_items.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_local.h.svn-base
Executable file
5
code/game/.svn/prop-base/g_local.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_main.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_main.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_mem.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_mem.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_misc.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_misc.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_missile.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_missile.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_mover.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_mover.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_public.h.svn-base
Executable file
5
code/game/.svn/prop-base/g_public.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_rankings.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_rankings.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_rankings.h.svn-base
Executable file
5
code/game/.svn/prop-base/g_rankings.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_session.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_session.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_spawn.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_spawn.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_svcmds.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_svcmds.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_syscalls.asm.svn-base
Executable file
5
code/game/.svn/prop-base/g_syscalls.asm.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_syscalls.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_syscalls.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_target.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_target.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_team.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_team.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_team.h.svn-base
Executable file
5
code/game/.svn/prop-base/g_team.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_trigger.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_trigger.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_utils.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_utils.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/g_weapon.c.svn-base
Executable file
5
code/game/.svn/prop-base/g_weapon.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game.bat.svn-base
Executable file
5
code/game/.svn/prop-base/game.bat.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game.def.svn-base
Executable file
5
code/game/.svn/prop-base/game.def.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game.dsp.svn-base
Executable file
5
code/game/.svn/prop-base/game.dsp.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game.q3asm.svn-base
Executable file
5
code/game/.svn/prop-base/game.q3asm.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game.sh.svn-base
Executable file
5
code/game/.svn/prop-base/game.sh.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game.vcproj.svn-base
Executable file
5
code/game/.svn/prop-base/game.vcproj.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game_ta.bat.svn-base
Executable file
5
code/game/.svn/prop-base/game_ta.bat.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game_ta.q3asm.svn-base
Executable file
5
code/game/.svn/prop-base/game_ta.q3asm.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/game_ta.sh.svn-base
Executable file
5
code/game/.svn/prop-base/game_ta.sh.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/inv.h.svn-base
Executable file
5
code/game/.svn/prop-base/inv.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/match.h.svn-base
Executable file
5
code/game/.svn/prop-base/match.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/q_math.c.svn-base
Executable file
5
code/game/.svn/prop-base/q_math.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/q_shared.c.svn-base
Executable file
5
code/game/.svn/prop-base/q_shared.c.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/q_shared.h.svn-base
Executable file
5
code/game/.svn/prop-base/q_shared.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/surfaceflags.h.svn-base
Executable file
5
code/game/.svn/prop-base/surfaceflags.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
5
code/game/.svn/prop-base/syn.h.svn-base
Executable file
5
code/game/.svn/prop-base/syn.h.svn-base
Executable file
@@ -0,0 +1,5 @@
|
||||
K 14
|
||||
svn:executable
|
||||
V 0
|
||||
|
||||
END
|
||||
137
code/game/.svn/text-base/Conscript.svn-base
Executable file
137
code/game/.svn/text-base/Conscript.svn-base
Executable file
@@ -0,0 +1,137 @@
|
||||
# game building
|
||||
# builds the game for vanilla Q3 and TA
|
||||
|
||||
# there are slight differences between Q3 and TA build:
|
||||
# -DMISSIONPACK
|
||||
# the config is passed in the imported variable TARGET_DIR
|
||||
|
||||
# qvm building against native:
|
||||
# only native has g_syscalls.c
|
||||
# only qvm has ../game/bg_lib.c
|
||||
# qvm uses a custom g_syscalls.asm with equ stubs
|
||||
|
||||
Import qw( BASE_CFLAGS TARGET_DIR INSTALL_DIR NO_VM NO_SO );
|
||||
|
||||
$env = new cons(
|
||||
# the code has the very bad habit of doing things like #include "../ui/ui_shared.h"
|
||||
# this seems to confuse the dependency analysis, explicit toplevel includes seem to fix
|
||||
CPPPATH => '#cgame:#game:#q3_ui',
|
||||
CC => 'gcc',
|
||||
CFLAGS => $BASE_CFLAGS . '-fPIC',
|
||||
LDFLAGS => '-shared -ldl -lm'
|
||||
);
|
||||
|
||||
# for TA, use -DMISSIONPACK
|
||||
%ta_env_hash = $env->copy(
|
||||
CPPPATH => '#cgame:#game:#ui'
|
||||
);
|
||||
$ta_env_hash{CFLAGS} = '-DMISSIONPACK ' . $ta_env_hash{CFLAGS};
|
||||
$ta_env = new cons(%ta_env_hash);
|
||||
|
||||
# qvm building
|
||||
# we heavily customize the cons environment
|
||||
$vm_env = new cons(
|
||||
# the code has the very bad habit of doing things like #include "../ui/ui_shared.h"
|
||||
# this seems to confuse the dependency analysis, explicit toplevel includes seem to fix
|
||||
CPPPATH => '#cgame:#game:#q3_ui',
|
||||
CC => 'q3lcc',
|
||||
CCCOM => '%CC %CFLAGS %_IFLAGS -c %< -o %>',
|
||||
SUFOBJ => '.asm',
|
||||
LINK => 'q3asm',
|
||||
CFLAGS => '-DQ3_VM -S -Wf-target=bytecode -Wf-g',
|
||||
# need to know where to find the compiler tools
|
||||
ENV => { PATH => $ENV{PATH} . ":./qvmtools", },
|
||||
);
|
||||
|
||||
# TA qvm building
|
||||
%vm_ta_env_hash = $vm_env->copy(
|
||||
CPPPATH => '#cgame:#game:#ui'
|
||||
);
|
||||
$vm_ta_env_hash{CFLAGS} = '-DMISSIONPACK ' . $vm_ta_env_hash{CFLAGS};
|
||||
$vm_ta_env = new cons(%vm_ta_env_hash);
|
||||
|
||||
# the file with vmMain function MUST be the first one of the list
|
||||
@FILES = qw(
|
||||
g_main.c
|
||||
ai_chat.c
|
||||
ai_cmd.c
|
||||
ai_dmnet.c
|
||||
ai_dmq3.c
|
||||
ai_main.c
|
||||
ai_team.c
|
||||
ai_vcmd.c
|
||||
bg_misc.c
|
||||
bg_pmove.c
|
||||
bg_slidemove.c
|
||||
g_active.c
|
||||
g_arenas.c
|
||||
g_bot.c
|
||||
g_client.c
|
||||
g_cmds.c
|
||||
g_combat.c
|
||||
g_items.c
|
||||
g_mem.c
|
||||
g_misc.c
|
||||
g_missile.c
|
||||
g_mover.c
|
||||
g_session.c
|
||||
g_spawn.c
|
||||
g_svcmds.c
|
||||
g_target.c
|
||||
g_team.c
|
||||
g_trigger.c
|
||||
g_utils.c
|
||||
g_weapon.c
|
||||
q_math.c
|
||||
q_shared.c
|
||||
);
|
||||
$FILESREF = \@FILES;
|
||||
|
||||
# only in .so
|
||||
# (VM uses a custom .asm with equ stubs)
|
||||
@SO_FILES = qw(
|
||||
g_syscalls.c
|
||||
);
|
||||
$SO_FILESREF = \@SO_FILES;
|
||||
|
||||
# only for VM
|
||||
@VM_FILES = qw(
|
||||
bg_lib.c
|
||||
g_syscalls.asm
|
||||
);
|
||||
$VM_FILESREF = \@VM_FILES;
|
||||
|
||||
# FIXME CPU string?
|
||||
# NOTE: $env $ta_env and $vm_env $vm_ta_env may not be necessary
|
||||
# we could alter the $env and $ta_env based on $TARGET_DIR
|
||||
# doing it this way to ensure homogeneity with cgame building
|
||||
if ($TARGET_DIR eq 'Q3')
|
||||
{
|
||||
if ($NO_SO eq 0)
|
||||
{
|
||||
Program $env 'qagamei386.so', @$FILESREF, @$SO_FILESREF;
|
||||
Install $env $INSTALL_DIR, 'qagamei386.so';
|
||||
}
|
||||
if ($NO_VM eq 0)
|
||||
{
|
||||
Depends $vm_env 'qagame.qvm', '#qvmtools/q3lcc';
|
||||
Depends $vm_env 'qagame.qvm', '#qvmtools/q3asm';
|
||||
Program $vm_env 'qagame.qvm', @$FILESREF, @$VM_FILESREF;
|
||||
Install $vm_env $INSTALL_DIR . '/vm', 'qagame.qvm';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($NO_SO eq 0)
|
||||
{
|
||||
Program $ta_env 'qagamei386.so', @$FILESREF, @$SO_FILESREF;
|
||||
Install $ta_env $INSTALL_DIR, 'qagamei386.so';
|
||||
}
|
||||
if ($NO_VM eq 0)
|
||||
{
|
||||
Depends $vm_env 'qagame.qvm', '#qvmtools/q3lcc';
|
||||
Depends $vm_env 'qagame.qvm', '#qvmtools/q3asm';
|
||||
Program $vm_ta_env 'qagame.qvm', @$FILESREF, @$VM_FILESREF;
|
||||
Install $vm_ta_env $INSTALL_DIR . '/vm', 'qagame.qvm';
|
||||
}
|
||||
}
|
||||
1206
code/game/.svn/text-base/ai_chat.c.svn-base
Executable file
1206
code/game/.svn/text-base/ai_chat.c.svn-base
Executable file
File diff suppressed because it is too large
Load Diff
41
code/game/.svn/text-base/ai_chat.h.svn-base
Executable file
41
code/game/.svn/text-base/ai_chat.h.svn-base
Executable file
@@ -0,0 +1,41 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_chat.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_chat.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//
|
||||
int BotChat_EnterGame(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_ExitGame(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_StartLevel(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_EndLevel(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_HitTalking(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_HitNoDeath(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_HitNoKill(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_Death(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_Kill(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_EnemySuicide(bot_state_t *bs);
|
||||
//
|
||||
int BotChat_Random(bot_state_t *bs);
|
||||
// time the selected chat takes to type in
|
||||
float BotChatTime(bot_state_t *bs);
|
||||
// returns true if the bot can chat at the current position
|
||||
int BotValidChatPosition(bot_state_t *bs);
|
||||
// test the initial bot chats
|
||||
void BotChatTest(bot_state_t *bs);
|
||||
|
||||
1972
code/game/.svn/text-base/ai_cmd.c.svn-base
Executable file
1972
code/game/.svn/text-base/ai_cmd.c.svn-base
Executable file
File diff suppressed because it is too large
Load Diff
17
code/game/.svn/text-base/ai_cmd.h.svn-base
Executable file
17
code/game/.svn/text-base/ai_cmd.h.svn-base
Executable file
@@ -0,0 +1,17 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_cmd.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_chat.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
extern int notleader[MAX_CLIENTS];
|
||||
|
||||
int BotMatchMessage(bot_state_t *bs, char *message);
|
||||
void BotPrintTeamGoal(bot_state_t *bs);
|
||||
|
||||
2590
code/game/.svn/text-base/ai_dmnet.c.svn-base
Executable file
2590
code/game/.svn/text-base/ai_dmnet.c.svn-base
Executable file
File diff suppressed because it is too large
Load Diff
41
code/game/.svn/text-base/ai_dmnet.h.svn-base
Executable file
41
code/game/.svn/text-base/ai_dmnet.h.svn-base
Executable file
@@ -0,0 +1,41 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_dmnet.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_chat.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#define MAX_NODESWITCHES 50
|
||||
|
||||
void AIEnter_Intermission(bot_state_t *bs, char *s);
|
||||
void AIEnter_Observer(bot_state_t *bs, char *s);
|
||||
void AIEnter_Respawn(bot_state_t *bs, char *s);
|
||||
void AIEnter_Stand(bot_state_t *bs, char *s);
|
||||
void AIEnter_Seek_ActivateEntity(bot_state_t *bs, char *s);
|
||||
void AIEnter_Seek_NBG(bot_state_t *bs, char *s);
|
||||
void AIEnter_Seek_LTG(bot_state_t *bs, char *s);
|
||||
void AIEnter_Seek_Camp(bot_state_t *bs, char *s);
|
||||
void AIEnter_Battle_Fight(bot_state_t *bs, char *s);
|
||||
void AIEnter_Battle_Chase(bot_state_t *bs, char *s);
|
||||
void AIEnter_Battle_Retreat(bot_state_t *bs, char *s);
|
||||
void AIEnter_Battle_NBG(bot_state_t *bs, char *s);
|
||||
int AINode_Intermission(bot_state_t *bs);
|
||||
int AINode_Observer(bot_state_t *bs);
|
||||
int AINode_Respawn(bot_state_t *bs);
|
||||
int AINode_Stand(bot_state_t *bs);
|
||||
int AINode_Seek_ActivateEntity(bot_state_t *bs);
|
||||
int AINode_Seek_NBG(bot_state_t *bs);
|
||||
int AINode_Seek_LTG(bot_state_t *bs);
|
||||
int AINode_Battle_Fight(bot_state_t *bs);
|
||||
int AINode_Battle_Chase(bot_state_t *bs);
|
||||
int AINode_Battle_Retreat(bot_state_t *bs);
|
||||
int AINode_Battle_NBG(bot_state_t *bs);
|
||||
|
||||
void BotResetNodeSwitches(void);
|
||||
void BotDumpNodeSwitches(bot_state_t *bs);
|
||||
|
||||
5442
code/game/.svn/text-base/ai_dmq3.c.svn-base
Executable file
5442
code/game/.svn/text-base/ai_dmq3.c.svn-base
Executable file
File diff suppressed because it is too large
Load Diff
186
code/game/.svn/text-base/ai_dmq3.h.svn-base
Executable file
186
code/game/.svn/text-base/ai_dmq3.h.svn-base
Executable file
@@ -0,0 +1,186 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_dmq3.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_chat.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//setup the deathmatch AI
|
||||
void BotSetupDeathmatchAI(void);
|
||||
//shutdown the deathmatch AI
|
||||
void BotShutdownDeathmatchAI(void);
|
||||
//let the bot live within it's deathmatch AI net
|
||||
void BotDeathmatchAI(bot_state_t *bs, float thinktime);
|
||||
//free waypoints
|
||||
void BotFreeWaypoints(bot_waypoint_t *wp);
|
||||
//choose a weapon
|
||||
void BotChooseWeapon(bot_state_t *bs);
|
||||
//setup movement stuff
|
||||
void BotSetupForMovement(bot_state_t *bs);
|
||||
//update the inventory
|
||||
void BotUpdateInventory(bot_state_t *bs);
|
||||
//update the inventory during battle
|
||||
void BotUpdateBattleInventory(bot_state_t *bs, int enemy);
|
||||
//use holdable items during battle
|
||||
void BotBattleUseItems(bot_state_t *bs);
|
||||
//return true if the bot is dead
|
||||
qboolean BotIsDead(bot_state_t *bs);
|
||||
//returns true if the bot is in observer mode
|
||||
qboolean BotIsObserver(bot_state_t *bs);
|
||||
//returns true if the bot is in the intermission
|
||||
qboolean BotIntermission(bot_state_t *bs);
|
||||
//returns true if the bot is in lava or slime
|
||||
qboolean BotInLavaOrSlime(bot_state_t *bs);
|
||||
//returns true if the entity is dead
|
||||
qboolean EntityIsDead(aas_entityinfo_t *entinfo);
|
||||
//returns true if the entity is invisible
|
||||
qboolean EntityIsInvisible(aas_entityinfo_t *entinfo);
|
||||
//returns true if the entity is shooting
|
||||
qboolean EntityIsShooting(aas_entityinfo_t *entinfo);
|
||||
#ifdef MISSIONPACK
|
||||
//returns true if this entity has the kamikaze
|
||||
qboolean EntityHasKamikaze(aas_entityinfo_t *entinfo);
|
||||
#endif
|
||||
// set a user info key/value pair
|
||||
void BotSetUserInfo(bot_state_t *bs, char *key, char *value);
|
||||
// set the team status (offense, defense etc.)
|
||||
void BotSetTeamStatus(bot_state_t *bs);
|
||||
//returns the name of the client
|
||||
char *ClientName(int client, char *name, int size);
|
||||
//returns an simplyfied client name
|
||||
char *EasyClientName(int client, char *name, int size);
|
||||
//returns the skin used by the client
|
||||
char *ClientSkin(int client, char *skin, int size);
|
||||
// returns the appropriate synonym context for the current game type and situation
|
||||
int BotSynonymContext(bot_state_t *bs);
|
||||
// set last ordered task
|
||||
int BotSetLastOrderedTask(bot_state_t *bs);
|
||||
// selection of goals for teamplay
|
||||
void BotTeamGoals(bot_state_t *bs, int retreat);
|
||||
//returns the aggression of the bot in the range [0, 100]
|
||||
float BotAggression(bot_state_t *bs);
|
||||
//returns how bad the bot feels
|
||||
float BotFeelingBad(bot_state_t *bs);
|
||||
//returns true if the bot wants to retreat
|
||||
int BotWantsToRetreat(bot_state_t *bs);
|
||||
//returns true if the bot wants to chase
|
||||
int BotWantsToChase(bot_state_t *bs);
|
||||
//returns true if the bot wants to help
|
||||
int BotWantsToHelp(bot_state_t *bs);
|
||||
//returns true if the bot can and wants to rocketjump
|
||||
int BotCanAndWantsToRocketJump(bot_state_t *bs);
|
||||
// returns true if the bot has a persistant powerup and a weapon
|
||||
int BotHasPersistantPowerupAndWeapon(bot_state_t *bs);
|
||||
//returns true if the bot wants to and goes camping
|
||||
int BotWantsToCamp(bot_state_t *bs);
|
||||
//the bot will perform attack movements
|
||||
bot_moveresult_t BotAttackMove(bot_state_t *bs, int tfl);
|
||||
//returns true if the bot and the entity are in the same team
|
||||
int BotSameTeam(bot_state_t *bs, int entnum);
|
||||
//returns true if teamplay is on
|
||||
int TeamPlayIsOn(void);
|
||||
// returns the client number of the team mate flag carrier (-1 if none)
|
||||
int BotTeamFlagCarrier(bot_state_t *bs);
|
||||
//returns visible team mate flag carrier if available
|
||||
int BotTeamFlagCarrierVisible(bot_state_t *bs);
|
||||
//returns visible enemy flag carrier if available
|
||||
int BotEnemyFlagCarrierVisible(bot_state_t *bs);
|
||||
//get the number of visible teammates and enemies
|
||||
void BotVisibleTeamMatesAndEnemies(bot_state_t *bs, int *teammates, int *enemies, float range);
|
||||
//returns true if within the field of vision for the given angles
|
||||
qboolean InFieldOfVision(vec3_t viewangles, float fov, vec3_t angles);
|
||||
//returns true and sets the .enemy field when an enemy is found
|
||||
int BotFindEnemy(bot_state_t *bs, int curenemy);
|
||||
//returns a roam goal
|
||||
void BotRoamGoal(bot_state_t *bs, vec3_t goal);
|
||||
//returns entity visibility in the range [0, 1]
|
||||
float BotEntityVisible(int viewer, vec3_t eye, vec3_t viewangles, float fov, int ent);
|
||||
//the bot will aim at the current enemy
|
||||
void BotAimAtEnemy(bot_state_t *bs);
|
||||
//check if the bot should attack
|
||||
void BotCheckAttack(bot_state_t *bs);
|
||||
//AI when the bot is blocked
|
||||
void BotAIBlocked(bot_state_t *bs, bot_moveresult_t *moveresult, int activate);
|
||||
//AI to predict obstacles
|
||||
int BotAIPredictObstacles(bot_state_t *bs, bot_goal_t *goal);
|
||||
//enable or disable the areas the blocking entity is in
|
||||
void BotEnableActivateGoalAreas(bot_activategoal_t *activategoal, int enable);
|
||||
//pop an activate goal from the stack
|
||||
int BotPopFromActivateGoalStack(bot_state_t *bs);
|
||||
//clear the activate goal stack
|
||||
void BotClearActivateGoalStack(bot_state_t *bs);
|
||||
//returns the team the bot is in
|
||||
int BotTeam(bot_state_t *bs);
|
||||
//retuns the opposite team of the bot
|
||||
int BotOppositeTeam(bot_state_t *bs);
|
||||
//returns the flag the bot is carrying (CTFFLAG_?)
|
||||
int BotCTFCarryingFlag(bot_state_t *bs);
|
||||
//remember the last ordered task
|
||||
void BotRememberLastOrderedTask(bot_state_t *bs);
|
||||
//set ctf goals (defend base, get enemy flag) during seek
|
||||
void BotCTFSeekGoals(bot_state_t *bs);
|
||||
//set ctf goals (defend base, get enemy flag) during retreat
|
||||
void BotCTFRetreatGoals(bot_state_t *bs);
|
||||
//
|
||||
#ifdef MISSIONPACK
|
||||
int Bot1FCTFCarryingFlag(bot_state_t *bs);
|
||||
int BotHarvesterCarryingCubes(bot_state_t *bs);
|
||||
void Bot1FCTFSeekGoals(bot_state_t *bs);
|
||||
void Bot1FCTFRetreatGoals(bot_state_t *bs);
|
||||
void BotObeliskSeekGoals(bot_state_t *bs);
|
||||
void BotObeliskRetreatGoals(bot_state_t *bs);
|
||||
void BotGoHarvest(bot_state_t *bs);
|
||||
void BotHarvesterSeekGoals(bot_state_t *bs);
|
||||
void BotHarvesterRetreatGoals(bot_state_t *bs);
|
||||
int BotTeamCubeCarrierVisible(bot_state_t *bs);
|
||||
int BotEnemyCubeCarrierVisible(bot_state_t *bs);
|
||||
#endif
|
||||
//get a random alternate route goal towards the given base
|
||||
int BotGetAlternateRouteGoal(bot_state_t *bs, int base);
|
||||
//returns either the alternate route goal or the given goal
|
||||
bot_goal_t *BotAlternateRoute(bot_state_t *bs, bot_goal_t *goal);
|
||||
//create a new waypoint
|
||||
bot_waypoint_t *BotCreateWayPoint(char *name, vec3_t origin, int areanum);
|
||||
//find a waypoint with the given name
|
||||
bot_waypoint_t *BotFindWayPoint(bot_waypoint_t *waypoints, char *name);
|
||||
//strstr but case insensitive
|
||||
char *stristr(char *str, char *charset);
|
||||
//returns the number of the client with the given name
|
||||
int ClientFromName(char *name);
|
||||
int ClientOnSameTeamFromName(bot_state_t *bs, char *name);
|
||||
//
|
||||
int BotPointAreaNum(vec3_t origin);
|
||||
//
|
||||
void BotMapScripts(bot_state_t *bs);
|
||||
|
||||
//ctf flags
|
||||
#define CTF_FLAG_NONE 0
|
||||
#define CTF_FLAG_RED 1
|
||||
#define CTF_FLAG_BLUE 2
|
||||
//CTF skins
|
||||
#define CTF_SKIN_REDTEAM "red"
|
||||
#define CTF_SKIN_BLUETEAM "blue"
|
||||
|
||||
extern int gametype; //game type
|
||||
extern int maxclients; //maximum number of clients
|
||||
|
||||
extern vmCvar_t bot_grapple;
|
||||
extern vmCvar_t bot_rocketjump;
|
||||
extern vmCvar_t bot_fastchat;
|
||||
extern vmCvar_t bot_nochat;
|
||||
extern vmCvar_t bot_testrchat;
|
||||
extern vmCvar_t bot_challenge;
|
||||
|
||||
extern bot_goal_t ctf_redflag;
|
||||
extern bot_goal_t ctf_blueflag;
|
||||
#ifdef MISSIONPACK
|
||||
extern bot_goal_t ctf_neutralflag;
|
||||
extern bot_goal_t redobelisk;
|
||||
extern bot_goal_t blueobelisk;
|
||||
extern bot_goal_t neutralobelisk;
|
||||
#endif
|
||||
1675
code/game/.svn/text-base/ai_main.c.svn-base
Executable file
1675
code/game/.svn/text-base/ai_main.c.svn-base
Executable file
File diff suppressed because it is too large
Load Diff
279
code/game/.svn/text-base/ai_main.h.svn-base
Executable file
279
code/game/.svn/text-base/ai_main.h.svn-base
Executable file
@@ -0,0 +1,279 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_main.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_chat.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//#define DEBUG
|
||||
#define CTF
|
||||
|
||||
#define MAX_ITEMS 256
|
||||
//bot flags
|
||||
#define BFL_STRAFERIGHT 1 //strafe to the right
|
||||
#define BFL_ATTACKED 2 //bot has attacked last ai frame
|
||||
#define BFL_ATTACKJUMPED 4 //bot jumped during attack last frame
|
||||
#define BFL_AIMATENEMY 8 //bot aimed at the enemy this frame
|
||||
#define BFL_AVOIDRIGHT 16 //avoid obstacles by going to the right
|
||||
#define BFL_IDEALVIEWSET 32 //bot has ideal view angles set
|
||||
#define BFL_FIGHTSUICIDAL 64 //bot is in a suicidal fight
|
||||
//long term goal types
|
||||
#define LTG_TEAMHELP 1 //help a team mate
|
||||
#define LTG_TEAMACCOMPANY 2 //accompany a team mate
|
||||
#define LTG_DEFENDKEYAREA 3 //defend a key area
|
||||
#define LTG_GETFLAG 4 //get the enemy flag
|
||||
#define LTG_RUSHBASE 5 //rush to the base
|
||||
#define LTG_RETURNFLAG 6 //return the flag
|
||||
#define LTG_CAMP 7 //camp somewhere
|
||||
#define LTG_CAMPORDER 8 //ordered to camp somewhere
|
||||
#define LTG_PATROL 9 //patrol
|
||||
#define LTG_GETITEM 10 //get an item
|
||||
#define LTG_KILL 11 //kill someone
|
||||
#define LTG_HARVEST 12 //harvest skulls
|
||||
#define LTG_ATTACKENEMYBASE 13 //attack the enemy base
|
||||
#define LTG_MAKELOVE_UNDER 14
|
||||
#define LTG_MAKELOVE_ONTOP 15
|
||||
//some goal dedication times
|
||||
#define TEAM_HELP_TIME 60 //1 minute teamplay help time
|
||||
#define TEAM_ACCOMPANY_TIME 600 //10 minutes teamplay accompany time
|
||||
#define TEAM_DEFENDKEYAREA_TIME 600 //10 minutes ctf defend base time
|
||||
#define TEAM_CAMP_TIME 600 //10 minutes camping time
|
||||
#define TEAM_PATROL_TIME 600 //10 minutes patrolling time
|
||||
#define TEAM_LEAD_TIME 600 //10 minutes taking the lead
|
||||
#define TEAM_GETITEM_TIME 60 //1 minute
|
||||
#define TEAM_KILL_SOMEONE 180 //3 minute to kill someone
|
||||
#define TEAM_ATTACKENEMYBASE_TIME 600 //10 minutes
|
||||
#define TEAM_HARVEST_TIME 120 //2 minutes
|
||||
#define CTF_GETFLAG_TIME 600 //10 minutes ctf get flag time
|
||||
#define CTF_RUSHBASE_TIME 120 //2 minutes ctf rush base time
|
||||
#define CTF_RETURNFLAG_TIME 180 //3 minutes to return the flag
|
||||
#define CTF_ROAM_TIME 60 //1 minute ctf roam time
|
||||
//patrol flags
|
||||
#define PATROL_LOOP 1
|
||||
#define PATROL_REVERSE 2
|
||||
#define PATROL_BACK 4
|
||||
//teamplay task preference
|
||||
#define TEAMTP_DEFENDER 1
|
||||
#define TEAMTP_ATTACKER 2
|
||||
//CTF strategy
|
||||
#define CTFS_AGRESSIVE 1
|
||||
//copied from the aas file header
|
||||
#define PRESENCE_NONE 1
|
||||
#define PRESENCE_NORMAL 2
|
||||
#define PRESENCE_CROUCH 4
|
||||
//
|
||||
#define MAX_PROXMINES 64
|
||||
|
||||
//check points
|
||||
typedef struct bot_waypoint_s
|
||||
{
|
||||
int inuse;
|
||||
char name[32];
|
||||
bot_goal_t goal;
|
||||
struct bot_waypoint_s *next, *prev;
|
||||
} bot_waypoint_t;
|
||||
|
||||
#define MAX_ACTIVATESTACK 8
|
||||
#define MAX_ACTIVATEAREAS 32
|
||||
|
||||
typedef struct bot_activategoal_s
|
||||
{
|
||||
int inuse;
|
||||
bot_goal_t goal; //goal to activate (buttons etc.)
|
||||
float time; //time to activate something
|
||||
float start_time; //time starting to activate something
|
||||
float justused_time; //time the goal was used
|
||||
int shoot; //true if bot has to shoot to activate
|
||||
int weapon; //weapon to be used for activation
|
||||
vec3_t target; //target to shoot at to activate something
|
||||
vec3_t origin; //origin of the blocking entity to activate
|
||||
int areas[MAX_ACTIVATEAREAS]; //routing areas disabled by blocking entity
|
||||
int numareas; //number of disabled routing areas
|
||||
int areasdisabled; //true if the areas are disabled for the routing
|
||||
struct bot_activategoal_s *next; //next activate goal on stack
|
||||
} bot_activategoal_t;
|
||||
|
||||
//bot state
|
||||
typedef struct bot_state_s
|
||||
{
|
||||
int inuse; //true if this state is used by a bot client
|
||||
int botthink_residual; //residual for the bot thinks
|
||||
int client; //client number of the bot
|
||||
int entitynum; //entity number of the bot
|
||||
playerState_t cur_ps; //current player state
|
||||
int last_eFlags; //last ps flags
|
||||
usercmd_t lastucmd; //usercmd from last frame
|
||||
int entityeventTime[1024]; //last entity event time
|
||||
//
|
||||
bot_settings_t settings; //several bot settings
|
||||
int (*ainode)(struct bot_state_s *bs); //current AI node
|
||||
float thinktime; //time the bot thinks this frame
|
||||
vec3_t origin; //origin of the bot
|
||||
vec3_t velocity; //velocity of the bot
|
||||
int presencetype; //presence type of the bot
|
||||
vec3_t eye; //eye coordinates of the bot
|
||||
int areanum; //the number of the area the bot is in
|
||||
int inventory[MAX_ITEMS]; //string with items amounts the bot has
|
||||
int tfl; //the travel flags the bot uses
|
||||
int flags; //several flags
|
||||
int respawn_wait; //wait until respawned
|
||||
int lasthealth; //health value previous frame
|
||||
int lastkilledplayer; //last killed player
|
||||
int lastkilledby; //player that last killed this bot
|
||||
int botdeathtype; //the death type of the bot
|
||||
int enemydeathtype; //the death type of the enemy
|
||||
int botsuicide; //true when the bot suicides
|
||||
int enemysuicide; //true when the enemy of the bot suicides
|
||||
int setupcount; //true when the bot has just been setup
|
||||
int map_restart; //true when the map is being restarted
|
||||
int entergamechat; //true when the bot used an enter game chat
|
||||
int num_deaths; //number of time this bot died
|
||||
int num_kills; //number of kills of this bot
|
||||
int revenge_enemy; //the revenge enemy
|
||||
int revenge_kills; //number of kills the enemy made
|
||||
int lastframe_health; //health value the last frame
|
||||
int lasthitcount; //number of hits last frame
|
||||
int chatto; //chat to all or team
|
||||
float walker; //walker charactertic
|
||||
float ltime; //local bot time
|
||||
float entergame_time; //time the bot entered the game
|
||||
float ltg_time; //long term goal time
|
||||
float nbg_time; //nearby goal time
|
||||
float respawn_time; //time the bot takes to respawn
|
||||
float respawnchat_time; //time the bot started a chat during respawn
|
||||
float chase_time; //time the bot will chase the enemy
|
||||
float enemyvisible_time; //time the enemy was last visible
|
||||
float check_time; //time to check for nearby items
|
||||
float stand_time; //time the bot is standing still
|
||||
float lastchat_time; //time the bot last selected a chat
|
||||
float kamikaze_time; //time to check for kamikaze usage
|
||||
float invulnerability_time; //time to check for invulnerability usage
|
||||
float standfindenemy_time; //time to find enemy while standing
|
||||
float attackstrafe_time; //time the bot is strafing in one dir
|
||||
float attackcrouch_time; //time the bot will stop crouching
|
||||
float attackchase_time; //time the bot chases during actual attack
|
||||
float attackjump_time; //time the bot jumped during attack
|
||||
float enemysight_time; //time before reacting to enemy
|
||||
float enemydeath_time; //time the enemy died
|
||||
float enemyposition_time; //time the position and velocity of the enemy were stored
|
||||
float defendaway_time; //time away while defending
|
||||
float defendaway_range; //max travel time away from defend area
|
||||
float rushbaseaway_time; //time away from rushing to the base
|
||||
float attackaway_time; //time away from attacking the enemy base
|
||||
float harvestaway_time; //time away from harvesting
|
||||
float ctfroam_time; //time the bot is roaming in ctf
|
||||
float killedenemy_time; //time the bot killed the enemy
|
||||
float arrive_time; //time arrived (at companion)
|
||||
float lastair_time; //last time the bot had air
|
||||
float teleport_time; //last time the bot teleported
|
||||
float camp_time; //last time camped
|
||||
float camp_range; //camp range
|
||||
float weaponchange_time; //time the bot started changing weapons
|
||||
float firethrottlewait_time; //amount of time to wait
|
||||
float firethrottleshoot_time; //amount of time to shoot
|
||||
float notblocked_time; //last time the bot was not blocked
|
||||
float blockedbyavoidspot_time; //time blocked by an avoid spot
|
||||
float predictobstacles_time; //last time the bot predicted obstacles
|
||||
int predictobstacles_goalareanum; //last goal areanum the bot predicted obstacles for
|
||||
vec3_t aimtarget;
|
||||
vec3_t enemyvelocity; //enemy velocity 0.5 secs ago during battle
|
||||
vec3_t enemyorigin; //enemy origin 0.5 secs ago during battle
|
||||
//
|
||||
int kamikazebody; //kamikaze body
|
||||
int proxmines[MAX_PROXMINES];
|
||||
int numproxmines;
|
||||
//
|
||||
int character; //the bot character
|
||||
int ms; //move state of the bot
|
||||
int gs; //goal state of the bot
|
||||
int cs; //chat state of the bot
|
||||
int ws; //weapon state of the bot
|
||||
//
|
||||
int enemy; //enemy entity number
|
||||
int lastenemyareanum; //last reachability area the enemy was in
|
||||
vec3_t lastenemyorigin; //last origin of the enemy in the reachability area
|
||||
int weaponnum; //current weapon number
|
||||
vec3_t viewangles; //current view angles
|
||||
vec3_t ideal_viewangles; //ideal view angles
|
||||
vec3_t viewanglespeed;
|
||||
//
|
||||
int ltgtype; //long term goal type
|
||||
// team goals
|
||||
int teammate; //team mate involved in this team goal
|
||||
int decisionmaker; //player who decided to go for this goal
|
||||
int ordered; //true if ordered to do something
|
||||
float order_time; //time ordered to do something
|
||||
int owndecision_time; //time the bot made it's own decision
|
||||
bot_goal_t teamgoal; //the team goal
|
||||
bot_goal_t altroutegoal; //alternative route goal
|
||||
float reachedaltroutegoal_time; //time the bot reached the alt route goal
|
||||
float teammessage_time; //time to message team mates what the bot is doing
|
||||
float teamgoal_time; //time to stop helping team mate
|
||||
float teammatevisible_time; //last time the team mate was NOT visible
|
||||
int teamtaskpreference; //team task preference
|
||||
// last ordered team goal
|
||||
int lastgoal_decisionmaker;
|
||||
int lastgoal_ltgtype;
|
||||
int lastgoal_teammate;
|
||||
bot_goal_t lastgoal_teamgoal;
|
||||
// for leading team mates
|
||||
int lead_teammate; //team mate the bot is leading
|
||||
bot_goal_t lead_teamgoal; //team goal while leading
|
||||
float lead_time; //time leading someone
|
||||
float leadvisible_time; //last time the team mate was visible
|
||||
float leadmessage_time; //last time a messaged was sent to the team mate
|
||||
float leadbackup_time; //time backing up towards team mate
|
||||
//
|
||||
char teamleader[32]; //netname of the team leader
|
||||
float askteamleader_time; //time asked for team leader
|
||||
float becometeamleader_time; //time the bot will become the team leader
|
||||
float teamgiveorders_time; //time to give team orders
|
||||
float lastflagcapture_time; //last time a flag was captured
|
||||
int numteammates; //number of team mates
|
||||
int redflagstatus; //0 = at base, 1 = not at base
|
||||
int blueflagstatus; //0 = at base, 1 = not at base
|
||||
int neutralflagstatus; //0 = at base, 1 = our team has flag, 2 = enemy team has flag, 3 = enemy team dropped the flag
|
||||
int flagstatuschanged; //flag status changed
|
||||
int forceorders; //true if forced to give orders
|
||||
int flagcarrier; //team mate carrying the enemy flag
|
||||
int ctfstrategy; //ctf strategy
|
||||
char subteam[32]; //sub team name
|
||||
float formation_dist; //formation team mate intervening space
|
||||
char formation_teammate[16]; //netname of the team mate the bot uses for relative positioning
|
||||
float formation_angle; //angle relative to the formation team mate
|
||||
vec3_t formation_dir; //the direction the formation is moving in
|
||||
vec3_t formation_origin; //origin the bot uses for relative positioning
|
||||
bot_goal_t formation_goal; //formation goal
|
||||
|
||||
bot_activategoal_t *activatestack; //first activate goal on the stack
|
||||
bot_activategoal_t activategoalheap[MAX_ACTIVATESTACK]; //activate goal heap
|
||||
|
||||
bot_waypoint_t *checkpoints; //check points
|
||||
bot_waypoint_t *patrolpoints; //patrol points
|
||||
bot_waypoint_t *curpatrolpoint; //current patrol point the bot is going for
|
||||
int patrolflags; //patrol flags
|
||||
} bot_state_t;
|
||||
|
||||
//resets the whole bot state
|
||||
void BotResetState(bot_state_t *bs);
|
||||
//returns the number of bots in the game
|
||||
int NumBots(void);
|
||||
//returns info about the entity
|
||||
void BotEntityInfo(int entnum, aas_entityinfo_t *info);
|
||||
|
||||
extern float floattime;
|
||||
#define FloatTime() floattime
|
||||
|
||||
// from the game source
|
||||
void QDECL BotAI_Print(int type, char *fmt, ...);
|
||||
void QDECL QDECL BotAI_BotInitialChat( bot_state_t *bs, char *type, ... );
|
||||
void BotAI_Trace(bsp_trace_t *bsptrace, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int passent, int contentmask);
|
||||
int BotAI_GetClientState( int clientNum, playerState_t *state );
|
||||
int BotAI_GetEntityState( int entityNum, entityState_t *state );
|
||||
int BotAI_GetSnapshotEntity( int clientNum, int sequence, entityState_t *state );
|
||||
int BotTeamLeader(bot_state_t *bs);
|
||||
2060
code/game/.svn/text-base/ai_team.c.svn-base
Executable file
2060
code/game/.svn/text-base/ai_team.c.svn-base
Executable file
File diff suppressed because it is too large
Load Diff
19
code/game/.svn/text-base/ai_team.h.svn-base
Executable file
19
code/game/.svn/text-base/ai_team.h.svn-base
Executable file
@@ -0,0 +1,19 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_team.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_chat.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
void BotTeamAI(bot_state_t *bs);
|
||||
int BotGetTeamMateTaskPreference(bot_state_t *bs, int teammate);
|
||||
void BotSetTeamMateTaskPreference(bot_state_t *bs, int teammate, int preference);
|
||||
void BotVoiceChat(bot_state_t *bs, int toclient, char *voicechat);
|
||||
void BotVoiceChatOnly(bot_state_t *bs, int toclient, char *voicechat);
|
||||
|
||||
|
||||
530
code/game/.svn/text-base/ai_vcmd.c.svn-base
Executable file
530
code/game/.svn/text-base/ai_vcmd.c.svn-base
Executable file
@@ -0,0 +1,530 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_vcmd.c
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /MissionPack/code/game/ai_vcmd.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#include "g_local.h"
|
||||
#include "botlib.h"
|
||||
#include "be_aas.h"
|
||||
#include "be_ea.h"
|
||||
#include "be_ai_char.h"
|
||||
#include "be_ai_chat.h"
|
||||
#include "be_ai_gen.h"
|
||||
#include "be_ai_goal.h"
|
||||
#include "be_ai_move.h"
|
||||
#include "be_ai_weap.h"
|
||||
//
|
||||
#include "ai_main.h"
|
||||
#include "ai_dmq3.h"
|
||||
#include "ai_chat.h"
|
||||
#include "ai_cmd.h"
|
||||
#include "ai_dmnet.h"
|
||||
#include "ai_team.h"
|
||||
#include "ai_vcmd.h"
|
||||
//
|
||||
#include "chars.h" //characteristics
|
||||
#include "inv.h" //indexes into the inventory
|
||||
#include "syn.h" //synonyms
|
||||
#include "match.h" //string matching types and vars
|
||||
|
||||
// for the voice chats
|
||||
#include "../../ui/menudef.h"
|
||||
|
||||
|
||||
typedef struct voiceCommand_s
|
||||
{
|
||||
char *cmd;
|
||||
void (*func)(bot_state_t *bs, int client, int mode);
|
||||
} voiceCommand_t;
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_GetFlag
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_GetFlag(bot_state_t *bs, int client, int mode) {
|
||||
//
|
||||
if (gametype == GT_CTF) {
|
||||
if (!ctf_redflag.areanum || !ctf_blueflag.areanum)
|
||||
return;
|
||||
}
|
||||
#ifdef MISSIONPACK
|
||||
else if (gametype == GT_1FCTF) {
|
||||
if (!ctf_neutralflag.areanum || !ctf_redflag.areanum || !ctf_blueflag.areanum)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
return;
|
||||
}
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_GETFLAG;
|
||||
//set the team goal time
|
||||
bs->teamgoal_time = FloatTime() + CTF_GETFLAG_TIME;
|
||||
// get an alternate route in ctf
|
||||
if (gametype == GT_CTF) {
|
||||
//get an alternative route goal towards the enemy base
|
||||
BotGetAlternateRouteGoal(bs, BotOppositeTeam(bs));
|
||||
}
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
// remember last ordered task
|
||||
BotRememberLastOrderedTask(bs);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_Offense
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_Offense(bot_state_t *bs, int client, int mode) {
|
||||
if ( gametype == GT_CTF
|
||||
#ifdef MISSIONPACK
|
||||
|| gametype == GT_1FCTF
|
||||
#endif
|
||||
) {
|
||||
BotVoiceChat_GetFlag(bs, client, mode);
|
||||
return;
|
||||
}
|
||||
#ifdef MISSIONPACK
|
||||
if (gametype == GT_HARVESTER) {
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_HARVEST;
|
||||
//set the team goal time
|
||||
bs->teamgoal_time = FloatTime() + TEAM_HARVEST_TIME;
|
||||
bs->harvestaway_time = 0;
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
// remember last ordered task
|
||||
BotRememberLastOrderedTask(bs);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_ATTACKENEMYBASE;
|
||||
//set the team goal time
|
||||
bs->teamgoal_time = FloatTime() + TEAM_ATTACKENEMYBASE_TIME;
|
||||
bs->attackaway_time = 0;
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
// remember last ordered task
|
||||
BotRememberLastOrderedTask(bs);
|
||||
}
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_Defend
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_Defend(bot_state_t *bs, int client, int mode) {
|
||||
#ifdef MISSIONPACK
|
||||
if ( gametype == GT_OBELISK || gametype == GT_HARVESTER) {
|
||||
//
|
||||
switch(BotTeam(bs)) {
|
||||
case TEAM_RED: memcpy(&bs->teamgoal, &redobelisk, sizeof(bot_goal_t)); break;
|
||||
case TEAM_BLUE: memcpy(&bs->teamgoal, &blueobelisk, sizeof(bot_goal_t)); break;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (gametype == GT_CTF
|
||||
#ifdef MISSIONPACK
|
||||
|| gametype == GT_1FCTF
|
||||
#endif
|
||||
) {
|
||||
//
|
||||
switch(BotTeam(bs)) {
|
||||
case TEAM_RED: memcpy(&bs->teamgoal, &ctf_redflag, sizeof(bot_goal_t)); break;
|
||||
case TEAM_BLUE: memcpy(&bs->teamgoal, &ctf_blueflag, sizeof(bot_goal_t)); break;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_DEFENDKEYAREA;
|
||||
//get the team goal time
|
||||
bs->teamgoal_time = FloatTime() + TEAM_DEFENDKEYAREA_TIME;
|
||||
//away from defending
|
||||
bs->defendaway_time = 0;
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
// remember last ordered task
|
||||
BotRememberLastOrderedTask(bs);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_DefendFlag
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_DefendFlag(bot_state_t *bs, int client, int mode) {
|
||||
BotVoiceChat_Defend(bs, client, mode);
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_Patrol
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_Patrol(bot_state_t *bs, int client, int mode) {
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
//
|
||||
bs->ltgtype = 0;
|
||||
bs->lead_time = 0;
|
||||
bs->lastgoal_ltgtype = 0;
|
||||
//
|
||||
BotAI_BotInitialChat(bs, "dismissed", NULL);
|
||||
trap_BotEnterChat(bs->cs, client, CHAT_TELL);
|
||||
BotVoiceChatOnly(bs, -1, VOICECHAT_ONPATROL);
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_Camp
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_Camp(bot_state_t *bs, int client, int mode) {
|
||||
int areanum;
|
||||
aas_entityinfo_t entinfo;
|
||||
char netname[MAX_NETNAME];
|
||||
|
||||
//
|
||||
bs->teamgoal.entitynum = -1;
|
||||
BotEntityInfo(client, &entinfo);
|
||||
//if info is valid (in PVS)
|
||||
if (entinfo.valid) {
|
||||
areanum = BotPointAreaNum(entinfo.origin);
|
||||
if (areanum) { // && trap_AAS_AreaReachability(areanum)) {
|
||||
//NOTE: just assume the bot knows where the person is
|
||||
//if (BotEntityVisible(bs->entitynum, bs->eye, bs->viewangles, 360, client)) {
|
||||
bs->teamgoal.entitynum = client;
|
||||
bs->teamgoal.areanum = areanum;
|
||||
VectorCopy(entinfo.origin, bs->teamgoal.origin);
|
||||
VectorSet(bs->teamgoal.mins, -8, -8, -8);
|
||||
VectorSet(bs->teamgoal.maxs, 8, 8, 8);
|
||||
//}
|
||||
}
|
||||
}
|
||||
//if the other is not visible
|
||||
if (bs->teamgoal.entitynum < 0) {
|
||||
BotAI_BotInitialChat(bs, "whereareyou", EasyClientName(client, netname, sizeof(netname)), NULL);
|
||||
trap_BotEnterChat(bs->cs, client, CHAT_TELL);
|
||||
return;
|
||||
}
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_CAMPORDER;
|
||||
//get the team goal time
|
||||
bs->teamgoal_time = FloatTime() + TEAM_CAMP_TIME;
|
||||
//the teammate that requested the camping
|
||||
bs->teammate = client;
|
||||
//not arrived yet
|
||||
bs->arrive_time = 0;
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
// remember last ordered task
|
||||
BotRememberLastOrderedTask(bs);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_FollowMe
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_FollowMe(bot_state_t *bs, int client, int mode) {
|
||||
int areanum;
|
||||
aas_entityinfo_t entinfo;
|
||||
char netname[MAX_NETNAME];
|
||||
|
||||
bs->teamgoal.entitynum = -1;
|
||||
BotEntityInfo(client, &entinfo);
|
||||
//if info is valid (in PVS)
|
||||
if (entinfo.valid) {
|
||||
areanum = BotPointAreaNum(entinfo.origin);
|
||||
if (areanum) { // && trap_AAS_AreaReachability(areanum)) {
|
||||
bs->teamgoal.entitynum = client;
|
||||
bs->teamgoal.areanum = areanum;
|
||||
VectorCopy(entinfo.origin, bs->teamgoal.origin);
|
||||
VectorSet(bs->teamgoal.mins, -8, -8, -8);
|
||||
VectorSet(bs->teamgoal.maxs, 8, 8, 8);
|
||||
}
|
||||
}
|
||||
//if the other is not visible
|
||||
if (bs->teamgoal.entitynum < 0) {
|
||||
BotAI_BotInitialChat(bs, "whereareyou", EasyClientName(client, netname, sizeof(netname)), NULL);
|
||||
trap_BotEnterChat(bs->cs, client, CHAT_TELL);
|
||||
return;
|
||||
}
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//the team mate
|
||||
bs->teammate = client;
|
||||
//last time the team mate was assumed visible
|
||||
bs->teammatevisible_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//get the team goal time
|
||||
bs->teamgoal_time = FloatTime() + TEAM_ACCOMPANY_TIME;
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_TEAMACCOMPANY;
|
||||
bs->formation_dist = 3.5 * 32; //3.5 meter
|
||||
bs->arrive_time = 0;
|
||||
//
|
||||
BotSetTeamStatus(bs);
|
||||
// remember last ordered task
|
||||
BotRememberLastOrderedTask(bs);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_FollowFlagCarrier
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_FollowFlagCarrier(bot_state_t *bs, int client, int mode) {
|
||||
int carrier;
|
||||
|
||||
carrier = BotTeamFlagCarrier(bs);
|
||||
if (carrier >= 0)
|
||||
BotVoiceChat_FollowMe(bs, carrier, mode);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_ReturnFlag
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_ReturnFlag(bot_state_t *bs, int client, int mode) {
|
||||
//if not in CTF mode
|
||||
if (
|
||||
gametype != GT_CTF
|
||||
#ifdef MISSIONPACK
|
||||
&& gametype != GT_1FCTF
|
||||
#endif
|
||||
) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
bs->decisionmaker = client;
|
||||
bs->ordered = qtrue;
|
||||
bs->order_time = FloatTime();
|
||||
//set the time to send a message to the team mates
|
||||
bs->teammessage_time = FloatTime() + 2 * random();
|
||||
//set the ltg type
|
||||
bs->ltgtype = LTG_RETURNFLAG;
|
||||
//set the team goal time
|
||||
bs->teamgoal_time = FloatTime() + CTF_RETURNFLAG_TIME;
|
||||
bs->rushbaseaway_time = 0;
|
||||
BotSetTeamStatus(bs);
|
||||
#ifdef DEBUG
|
||||
BotPrintTeamGoal(bs);
|
||||
#endif //DEBUG
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_StartLeader
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_StartLeader(bot_state_t *bs, int client, int mode) {
|
||||
ClientName(client, bs->teamleader, sizeof(bs->teamleader));
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_StopLeader
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_StopLeader(bot_state_t *bs, int client, int mode) {
|
||||
char netname[MAX_MESSAGE_SIZE];
|
||||
|
||||
if (!Q_stricmp(bs->teamleader, ClientName(client, netname, sizeof(netname)))) {
|
||||
bs->teamleader[0] = '\0';
|
||||
notleader[client] = qtrue;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_WhoIsLeader
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_WhoIsLeader(bot_state_t *bs, int client, int mode) {
|
||||
char netname[MAX_MESSAGE_SIZE];
|
||||
|
||||
if (!TeamPlayIsOn()) return;
|
||||
|
||||
ClientName(bs->client, netname, sizeof(netname));
|
||||
//if this bot IS the team leader
|
||||
if (!Q_stricmp(netname, bs->teamleader)) {
|
||||
BotAI_BotInitialChat(bs, "iamteamleader", NULL);
|
||||
trap_BotEnterChat(bs->cs, 0, CHAT_TEAM);
|
||||
BotVoiceChatOnly(bs, -1, VOICECHAT_STARTLEADER);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_WantOnDefense
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_WantOnDefense(bot_state_t *bs, int client, int mode) {
|
||||
char netname[MAX_NETNAME];
|
||||
int preference;
|
||||
|
||||
preference = BotGetTeamMateTaskPreference(bs, client);
|
||||
preference &= ~TEAMTP_ATTACKER;
|
||||
preference |= TEAMTP_DEFENDER;
|
||||
BotSetTeamMateTaskPreference(bs, client, preference);
|
||||
//
|
||||
EasyClientName(client, netname, sizeof(netname));
|
||||
BotAI_BotInitialChat(bs, "keepinmind", netname, NULL);
|
||||
trap_BotEnterChat(bs->cs, client, CHAT_TELL);
|
||||
BotVoiceChatOnly(bs, client, VOICECHAT_YES);
|
||||
trap_EA_Action(bs->client, ACTION_AFFIRMATIVE);
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
BotVoiceChat_WantOnOffense
|
||||
==================
|
||||
*/
|
||||
void BotVoiceChat_WantOnOffense(bot_state_t *bs, int client, int mode) {
|
||||
char netname[MAX_NETNAME];
|
||||
int preference;
|
||||
|
||||
preference = BotGetTeamMateTaskPreference(bs, client);
|
||||
preference &= ~TEAMTP_DEFENDER;
|
||||
preference |= TEAMTP_ATTACKER;
|
||||
BotSetTeamMateTaskPreference(bs, client, preference);
|
||||
//
|
||||
EasyClientName(client, netname, sizeof(netname));
|
||||
BotAI_BotInitialChat(bs, "keepinmind", netname, NULL);
|
||||
trap_BotEnterChat(bs->cs, client, CHAT_TELL);
|
||||
BotVoiceChatOnly(bs, client, VOICECHAT_YES);
|
||||
trap_EA_Action(bs->client, ACTION_AFFIRMATIVE);
|
||||
}
|
||||
|
||||
void BotVoiceChat_Dummy(bot_state_t *bs, int client, int mode) {
|
||||
}
|
||||
|
||||
voiceCommand_t voiceCommands[] = {
|
||||
{VOICECHAT_GETFLAG, BotVoiceChat_GetFlag},
|
||||
{VOICECHAT_OFFENSE, BotVoiceChat_Offense },
|
||||
{VOICECHAT_DEFEND, BotVoiceChat_Defend },
|
||||
{VOICECHAT_DEFENDFLAG, BotVoiceChat_DefendFlag },
|
||||
{VOICECHAT_PATROL, BotVoiceChat_Patrol },
|
||||
{VOICECHAT_CAMP, BotVoiceChat_Camp },
|
||||
{VOICECHAT_FOLLOWME, BotVoiceChat_FollowMe },
|
||||
{VOICECHAT_FOLLOWFLAGCARRIER, BotVoiceChat_FollowFlagCarrier },
|
||||
{VOICECHAT_RETURNFLAG, BotVoiceChat_ReturnFlag },
|
||||
{VOICECHAT_STARTLEADER, BotVoiceChat_StartLeader },
|
||||
{VOICECHAT_STOPLEADER, BotVoiceChat_StopLeader },
|
||||
{VOICECHAT_WHOISLEADER, BotVoiceChat_WhoIsLeader },
|
||||
{VOICECHAT_WANTONDEFENSE, BotVoiceChat_WantOnDefense },
|
||||
{VOICECHAT_WANTONOFFENSE, BotVoiceChat_WantOnOffense },
|
||||
{NULL, BotVoiceChat_Dummy}
|
||||
};
|
||||
|
||||
int BotVoiceChatCommand(bot_state_t *bs, int mode, char *voiceChat) {
|
||||
int i, voiceOnly, clientNum, color;
|
||||
char *ptr, buf[MAX_MESSAGE_SIZE], *cmd;
|
||||
|
||||
if (!TeamPlayIsOn()) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
if ( mode == SAY_ALL ) {
|
||||
return qfalse; // don't do anything with voice chats to everyone
|
||||
}
|
||||
|
||||
Q_strncpyz(buf, voiceChat, sizeof(buf));
|
||||
cmd = buf;
|
||||
for (ptr = cmd; *cmd && *cmd > ' '; cmd++);
|
||||
while (*cmd && *cmd <= ' ') *cmd++ = '\0';
|
||||
voiceOnly = atoi(ptr);
|
||||
for (ptr = cmd; *cmd && *cmd > ' '; cmd++);
|
||||
while (*cmd && *cmd <= ' ') *cmd++ = '\0';
|
||||
clientNum = atoi(ptr);
|
||||
for (ptr = cmd; *cmd && *cmd > ' '; cmd++);
|
||||
while (*cmd && *cmd <= ' ') *cmd++ = '\0';
|
||||
color = atoi(ptr);
|
||||
|
||||
if (!BotSameTeam(bs, clientNum)) {
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
for (i = 0; voiceCommands[i].cmd; i++) {
|
||||
if (!Q_stricmp(cmd, voiceCommands[i].cmd)) {
|
||||
voiceCommands[i].func(bs, clientNum, mode);
|
||||
return qtrue;
|
||||
}
|
||||
}
|
||||
return qfalse;
|
||||
}
|
||||
16
code/game/.svn/text-base/ai_vcmd.h.svn-base
Executable file
16
code/game/.svn/text-base/ai_vcmd.h.svn-base
Executable file
@@ -0,0 +1,16 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: ai_vcmd.h
|
||||
*
|
||||
* desc: Quake3 bot AI
|
||||
*
|
||||
* $Archive: /source/code/botai/ai_vcmd.c $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
int BotVoiceChatCommand(bot_state_t *bs, int mode, char *voicechat);
|
||||
void BotVoiceChat_Defend(bot_state_t *bs, int client, int mode);
|
||||
|
||||
|
||||
201
code/game/.svn/text-base/be_aas.h.svn-base
Executable file
201
code/game/.svn/text-base/be_aas.h.svn-base
Executable file
@@ -0,0 +1,201 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_aas.h
|
||||
*
|
||||
* desc: Area Awareness System, stuff exported to the AI
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_aas.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef MAX_STRINGFIELD
|
||||
#define MAX_STRINGFIELD 80
|
||||
#endif
|
||||
|
||||
//travel flags
|
||||
#define TFL_INVALID 0x00000001 //traveling temporary not possible
|
||||
#define TFL_WALK 0x00000002 //walking
|
||||
#define TFL_CROUCH 0x00000004 //crouching
|
||||
#define TFL_BARRIERJUMP 0x00000008 //jumping onto a barrier
|
||||
#define TFL_JUMP 0x00000010 //jumping
|
||||
#define TFL_LADDER 0x00000020 //climbing a ladder
|
||||
#define TFL_WALKOFFLEDGE 0x00000080 //walking of a ledge
|
||||
#define TFL_SWIM 0x00000100 //swimming
|
||||
#define TFL_WATERJUMP 0x00000200 //jumping out of the water
|
||||
#define TFL_TELEPORT 0x00000400 //teleporting
|
||||
#define TFL_ELEVATOR 0x00000800 //elevator
|
||||
#define TFL_ROCKETJUMP 0x00001000 //rocket jumping
|
||||
#define TFL_BFGJUMP 0x00002000 //bfg jumping
|
||||
#define TFL_GRAPPLEHOOK 0x00004000 //grappling hook
|
||||
#define TFL_DOUBLEJUMP 0x00008000 //double jump
|
||||
#define TFL_RAMPJUMP 0x00010000 //ramp jump
|
||||
#define TFL_STRAFEJUMP 0x00020000 //strafe jump
|
||||
#define TFL_JUMPPAD 0x00040000 //jump pad
|
||||
#define TFL_AIR 0x00080000 //travel through air
|
||||
#define TFL_WATER 0x00100000 //travel through water
|
||||
#define TFL_SLIME 0x00200000 //travel through slime
|
||||
#define TFL_LAVA 0x00400000 //travel through lava
|
||||
#define TFL_DONOTENTER 0x00800000 //travel through donotenter area
|
||||
#define TFL_FUNCBOB 0x01000000 //func bobbing
|
||||
#define TFL_FLIGHT 0x02000000 //flight
|
||||
#define TFL_BRIDGE 0x04000000 //move over a bridge
|
||||
//
|
||||
#define TFL_NOTTEAM1 0x08000000 //not team 1
|
||||
#define TFL_NOTTEAM2 0x10000000 //not team 2
|
||||
|
||||
//default travel flags
|
||||
#define TFL_DEFAULT TFL_WALK|TFL_CROUCH|TFL_BARRIERJUMP|\
|
||||
TFL_JUMP|TFL_LADDER|\
|
||||
TFL_WALKOFFLEDGE|TFL_SWIM|TFL_WATERJUMP|\
|
||||
TFL_TELEPORT|TFL_ELEVATOR|\
|
||||
TFL_AIR|TFL_WATER|TFL_JUMPPAD|TFL_FUNCBOB
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SOLID_NOT, // no interaction with other objects
|
||||
SOLID_TRIGGER, // only touch when inside, after moving
|
||||
SOLID_BBOX, // touch on edge
|
||||
SOLID_BSP // bsp clip, touch on edge
|
||||
} solid_t;
|
||||
|
||||
//a trace is returned when a box is swept through the AAS world
|
||||
typedef struct aas_trace_s
|
||||
{
|
||||
qboolean startsolid; // if true, the initial point was in a solid area
|
||||
float fraction; // time completed, 1.0 = didn't hit anything
|
||||
vec3_t endpos; // final position
|
||||
int ent; // entity blocking the trace
|
||||
int lastarea; // last area the trace was in (zero if none)
|
||||
int area; // area blocking the trace (zero if none)
|
||||
int planenum; // number of the plane that was hit
|
||||
} aas_trace_t;
|
||||
|
||||
/* Defined in botlib.h
|
||||
|
||||
//bsp_trace_t hit surface
|
||||
typedef struct bsp_surface_s
|
||||
{
|
||||
char name[16];
|
||||
int flags;
|
||||
int value;
|
||||
} bsp_surface_t;
|
||||
|
||||
//a trace is returned when a box is swept through the BSP world
|
||||
typedef struct bsp_trace_s
|
||||
{
|
||||
qboolean allsolid; // if true, plane is not valid
|
||||
qboolean startsolid; // if true, the initial point was in a solid area
|
||||
float fraction; // time completed, 1.0 = didn't hit anything
|
||||
vec3_t endpos; // final position
|
||||
cplane_t plane; // surface normal at impact
|
||||
float exp_dist; // expanded plane distance
|
||||
int sidenum; // number of the brush side hit
|
||||
bsp_surface_t surface; // hit surface
|
||||
int contents; // contents on other side of surface hit
|
||||
int ent; // number of entity hit
|
||||
} bsp_trace_t;
|
||||
//
|
||||
*/
|
||||
|
||||
//entity info
|
||||
typedef struct aas_entityinfo_s
|
||||
{
|
||||
int valid; // true if updated this frame
|
||||
int type; // entity type
|
||||
int flags; // entity flags
|
||||
float ltime; // local time
|
||||
float update_time; // time between last and current update
|
||||
int number; // number of the entity
|
||||
vec3_t origin; // origin of the entity
|
||||
vec3_t angles; // angles of the model
|
||||
vec3_t old_origin; // for lerping
|
||||
vec3_t lastvisorigin; // last visible origin
|
||||
vec3_t mins; // bounding box minimums
|
||||
vec3_t maxs; // bounding box maximums
|
||||
int groundent; // ground entity
|
||||
int solid; // solid type
|
||||
int modelindex; // model used
|
||||
int modelindex2; // weapons, CTF flags, etc
|
||||
int frame; // model frame number
|
||||
int event; // impulse events -- muzzle flashes, footsteps, etc
|
||||
int eventParm; // even parameter
|
||||
int powerups; // bit flags
|
||||
int weapon; // determines weapon and flash model, etc
|
||||
int legsAnim; // mask off ANIM_TOGGLEBIT
|
||||
int torsoAnim; // mask off ANIM_TOGGLEBIT
|
||||
} aas_entityinfo_t;
|
||||
|
||||
// area info
|
||||
typedef struct aas_areainfo_s
|
||||
{
|
||||
int contents;
|
||||
int flags;
|
||||
int presencetype;
|
||||
int cluster;
|
||||
vec3_t mins;
|
||||
vec3_t maxs;
|
||||
vec3_t center;
|
||||
} aas_areainfo_t;
|
||||
|
||||
// client movement prediction stop events, stop as soon as:
|
||||
#define SE_NONE 0
|
||||
#define SE_HITGROUND 1 // the ground is hit
|
||||
#define SE_LEAVEGROUND 2 // there's no ground
|
||||
#define SE_ENTERWATER 4 // water is entered
|
||||
#define SE_ENTERSLIME 8 // slime is entered
|
||||
#define SE_ENTERLAVA 16 // lava is entered
|
||||
#define SE_HITGROUNDDAMAGE 32 // the ground is hit with damage
|
||||
#define SE_GAP 64 // there's a gap
|
||||
#define SE_TOUCHJUMPPAD 128 // touching a jump pad area
|
||||
#define SE_TOUCHTELEPORTER 256 // touching teleporter
|
||||
#define SE_ENTERAREA 512 // the given stoparea is entered
|
||||
#define SE_HITGROUNDAREA 1024 // a ground face in the area is hit
|
||||
#define SE_HITBOUNDINGBOX 2048 // hit the specified bounding box
|
||||
#define SE_TOUCHCLUSTERPORTAL 4096 // touching a cluster portal
|
||||
|
||||
typedef struct aas_clientmove_s
|
||||
{
|
||||
vec3_t endpos; //position at the end of movement prediction
|
||||
int endarea; //area at end of movement prediction
|
||||
vec3_t velocity; //velocity at the end of movement prediction
|
||||
aas_trace_t trace; //last trace
|
||||
int presencetype; //presence type at end of movement prediction
|
||||
int stopevent; //event that made the prediction stop
|
||||
int endcontents; //contents at the end of movement prediction
|
||||
float time; //time predicted ahead
|
||||
int frames; //number of frames predicted ahead
|
||||
} aas_clientmove_t;
|
||||
|
||||
// alternate route goals
|
||||
#define ALTROUTEGOAL_ALL 1
|
||||
#define ALTROUTEGOAL_CLUSTERPORTALS 2
|
||||
#define ALTROUTEGOAL_VIEWPORTALS 4
|
||||
|
||||
typedef struct aas_altroutegoal_s
|
||||
{
|
||||
vec3_t origin;
|
||||
int areanum;
|
||||
unsigned short starttraveltime;
|
||||
unsigned short goaltraveltime;
|
||||
unsigned short extratraveltime;
|
||||
} aas_altroutegoal_t;
|
||||
|
||||
// route prediction stop events
|
||||
#define RSE_NONE 0
|
||||
#define RSE_NOROUTE 1 //no route to goal
|
||||
#define RSE_USETRAVELTYPE 2 //stop as soon as on of the given travel types is used
|
||||
#define RSE_ENTERCONTENTS 4 //stop when entering the given contents
|
||||
#define RSE_ENTERAREA 8 //stop when entering the given area
|
||||
|
||||
typedef struct aas_predictroute_s
|
||||
{
|
||||
vec3_t endpos; //position at the end of movement prediction
|
||||
int endarea; //area at end of movement prediction
|
||||
int stopevent; //event that made the prediction stop
|
||||
int endcontents; //contents at the end of movement prediction
|
||||
int endtravelflags; //end travel flags
|
||||
int numareas; //number of areas predicted ahead
|
||||
int time; //time predicted ahead (in hundreth of a sec)
|
||||
} aas_predictroute_t;
|
||||
28
code/game/.svn/text-base/be_ai_char.h.svn-base
Executable file
28
code/game/.svn/text-base/be_ai_char.h.svn-base
Executable file
@@ -0,0 +1,28 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_ai_char.h
|
||||
*
|
||||
* desc: bot characters
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ai_char.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//loads a bot character from a file
|
||||
int BotLoadCharacter(char *charfile, float skill);
|
||||
//frees a bot character
|
||||
void BotFreeCharacter(int character);
|
||||
//returns a float characteristic
|
||||
float Characteristic_Float(int character, int index);
|
||||
//returns a bounded float characteristic
|
||||
float Characteristic_BFloat(int character, int index, float min, float max);
|
||||
//returns an integer characteristic
|
||||
int Characteristic_Integer(int character, int index);
|
||||
//returns a bounded integer characteristic
|
||||
int Characteristic_BInteger(int character, int index, int min, int max);
|
||||
//returns a string characteristic
|
||||
void Characteristic_String(int character, int index, char *buf, int size);
|
||||
//free cached bot characters
|
||||
void BotShutdownCharacters(void);
|
||||
93
code/game/.svn/text-base/be_ai_chat.h.svn-base
Executable file
93
code/game/.svn/text-base/be_ai_chat.h.svn-base
Executable file
@@ -0,0 +1,93 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
/*****************************************************************************
|
||||
* name: be_ai_chat.h
|
||||
*
|
||||
* desc: char AI
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ai_chat.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#define MAX_MESSAGE_SIZE 256
|
||||
#define MAX_CHATTYPE_NAME 32
|
||||
#define MAX_MATCHVARIABLES 8
|
||||
|
||||
#define CHAT_GENDERLESS 0
|
||||
#define CHAT_GENDERFEMALE 1
|
||||
#define CHAT_GENDERMALE 2
|
||||
|
||||
#define CHAT_ALL 0
|
||||
#define CHAT_TEAM 1
|
||||
#define CHAT_TELL 2
|
||||
|
||||
//a console message
|
||||
typedef struct bot_consolemessage_s
|
||||
{
|
||||
int handle;
|
||||
float time; //message time
|
||||
int type; //message type
|
||||
char message[MAX_MESSAGE_SIZE]; //message
|
||||
struct bot_consolemessage_s *prev, *next; //prev and next in list
|
||||
} bot_consolemessage_t;
|
||||
|
||||
//match variable
|
||||
typedef struct bot_matchvariable_s
|
||||
{
|
||||
char offset;
|
||||
int length;
|
||||
} bot_matchvariable_t;
|
||||
//returned to AI when a match is found
|
||||
typedef struct bot_match_s
|
||||
{
|
||||
char string[MAX_MESSAGE_SIZE];
|
||||
int type;
|
||||
int subtype;
|
||||
bot_matchvariable_t variables[MAX_MATCHVARIABLES];
|
||||
} bot_match_t;
|
||||
|
||||
//setup the chat AI
|
||||
int BotSetupChatAI(void);
|
||||
//shutdown the chat AI
|
||||
void BotShutdownChatAI(void);
|
||||
//returns the handle to a newly allocated chat state
|
||||
int BotAllocChatState(void);
|
||||
//frees the chatstate
|
||||
void BotFreeChatState(int handle);
|
||||
//adds a console message to the chat state
|
||||
void BotQueueConsoleMessage(int chatstate, int type, char *message);
|
||||
//removes the console message from the chat state
|
||||
void BotRemoveConsoleMessage(int chatstate, int handle);
|
||||
//returns the next console message from the state
|
||||
int BotNextConsoleMessage(int chatstate, bot_consolemessage_t *cm);
|
||||
//returns the number of console messages currently stored in the state
|
||||
int BotNumConsoleMessages(int chatstate);
|
||||
//selects a chat message of the given type
|
||||
void BotInitialChat(int chatstate, char *type, int mcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7);
|
||||
//returns the number of initial chat messages of the given type
|
||||
int BotNumInitialChats(int chatstate, char *type);
|
||||
//find and select a reply for the given message
|
||||
int BotReplyChat(int chatstate, char *message, int mcontext, int vcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7);
|
||||
//returns the length of the currently selected chat message
|
||||
int BotChatLength(int chatstate);
|
||||
//enters the selected chat message
|
||||
void BotEnterChat(int chatstate, int clientto, int sendto);
|
||||
//get the chat message ready to be output
|
||||
void BotGetChatMessage(int chatstate, char *buf, int size);
|
||||
//checks if the first string contains the second one, returns index into first string or -1 if not found
|
||||
int StringContains(char *str1, char *str2, int casesensitive);
|
||||
//finds a match for the given string using the match templates
|
||||
int BotFindMatch(char *str, bot_match_t *match, unsigned long int context);
|
||||
//returns a variable from a match
|
||||
void BotMatchVariable(bot_match_t *match, int variable, char *buf, int size);
|
||||
//unify all the white spaces in the string
|
||||
void UnifyWhiteSpaces(char *string);
|
||||
//replace all the context related synonyms in the string
|
||||
void BotReplaceSynonyms(char *string, unsigned long int context);
|
||||
//loads a chat file for the chat state
|
||||
int BotLoadChatFile(int chatstate, char *chatfile, char *chatname);
|
||||
//store the gender of the bot in the chat state
|
||||
void BotSetChatGender(int chatstate, int gender);
|
||||
//store the bot name in the chat state
|
||||
void BotSetChatName(int chatstate, char *name, int client);
|
||||
|
||||
13
code/game/.svn/text-base/be_ai_gen.h.svn-base
Executable file
13
code/game/.svn/text-base/be_ai_gen.h.svn-base
Executable file
@@ -0,0 +1,13 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_ai_gen.h
|
||||
*
|
||||
* desc: genetic selection
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ai_gen.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
int GeneticParentsAndChildSelection(int numranks, float *ranks, int *parent1, int *parent2, int *child);
|
||||
98
code/game/.svn/text-base/be_ai_goal.h.svn-base
Executable file
98
code/game/.svn/text-base/be_ai_goal.h.svn-base
Executable file
@@ -0,0 +1,98 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
/*****************************************************************************
|
||||
* name: be_ai_goal.h
|
||||
*
|
||||
* desc: goal AI
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ai_goal.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#define MAX_AVOIDGOALS 256
|
||||
#define MAX_GOALSTACK 8
|
||||
|
||||
#define GFL_NONE 0
|
||||
#define GFL_ITEM 1
|
||||
#define GFL_ROAM 2
|
||||
#define GFL_DROPPED 4
|
||||
|
||||
//a bot goal
|
||||
typedef struct bot_goal_s
|
||||
{
|
||||
vec3_t origin; //origin of the goal
|
||||
int areanum; //area number of the goal
|
||||
vec3_t mins, maxs; //mins and maxs of the goal
|
||||
int entitynum; //number of the goal entity
|
||||
int number; //goal number
|
||||
int flags; //goal flags
|
||||
int iteminfo; //item information
|
||||
} bot_goal_t;
|
||||
|
||||
//reset the whole goal state, but keep the item weights
|
||||
void BotResetGoalState(int goalstate);
|
||||
//reset avoid goals
|
||||
void BotResetAvoidGoals(int goalstate);
|
||||
//remove the goal with the given number from the avoid goals
|
||||
void BotRemoveFromAvoidGoals(int goalstate, int number);
|
||||
//push a goal onto the goal stack
|
||||
void BotPushGoal(int goalstate, bot_goal_t *goal);
|
||||
//pop a goal from the goal stack
|
||||
void BotPopGoal(int goalstate);
|
||||
//empty the bot's goal stack
|
||||
void BotEmptyGoalStack(int goalstate);
|
||||
//dump the avoid goals
|
||||
void BotDumpAvoidGoals(int goalstate);
|
||||
//dump the goal stack
|
||||
void BotDumpGoalStack(int goalstate);
|
||||
//get the name name of the goal with the given number
|
||||
void BotGoalName(int number, char *name, int size);
|
||||
//get the top goal from the stack
|
||||
int BotGetTopGoal(int goalstate, bot_goal_t *goal);
|
||||
//get the second goal on the stack
|
||||
int BotGetSecondGoal(int goalstate, bot_goal_t *goal);
|
||||
//choose the best long term goal item for the bot
|
||||
int BotChooseLTGItem(int goalstate, vec3_t origin, int *inventory, int travelflags);
|
||||
//choose the best nearby goal item for the bot
|
||||
//the item may not be further away from the current bot position than maxtime
|
||||
//also the travel time from the nearby goal towards the long term goal may not
|
||||
//be larger than the travel time towards the long term goal from the current bot position
|
||||
int BotChooseNBGItem(int goalstate, vec3_t origin, int *inventory, int travelflags,
|
||||
bot_goal_t *ltg, float maxtime);
|
||||
//returns true if the bot touches the goal
|
||||
int BotTouchingGoal(vec3_t origin, bot_goal_t *goal);
|
||||
//returns true if the goal should be visible but isn't
|
||||
int BotItemGoalInVisButNotVisible(int viewer, vec3_t eye, vec3_t viewangles, bot_goal_t *goal);
|
||||
//search for a goal for the given classname, the index can be used
|
||||
//as a start point for the search when multiple goals are available with that same classname
|
||||
int BotGetLevelItemGoal(int index, char *classname, bot_goal_t *goal);
|
||||
//get the next camp spot in the map
|
||||
int BotGetNextCampSpotGoal(int num, bot_goal_t *goal);
|
||||
//get the map location with the given name
|
||||
int BotGetMapLocationGoal(char *name, bot_goal_t *goal);
|
||||
//returns the avoid goal time
|
||||
float BotAvoidGoalTime(int goalstate, int number);
|
||||
//set the avoid goal time
|
||||
void BotSetAvoidGoalTime(int goalstate, int number, float avoidtime);
|
||||
//initializes the items in the level
|
||||
void BotInitLevelItems(void);
|
||||
//regularly update dynamic entity items (dropped weapons, flags etc.)
|
||||
void BotUpdateEntityItems(void);
|
||||
//interbreed the goal fuzzy logic
|
||||
void BotInterbreedGoalFuzzyLogic(int parent1, int parent2, int child);
|
||||
//save the goal fuzzy logic to disk
|
||||
void BotSaveGoalFuzzyLogic(int goalstate, char *filename);
|
||||
//mutate the goal fuzzy logic
|
||||
void BotMutateGoalFuzzyLogic(int goalstate, float range);
|
||||
//loads item weights for the bot
|
||||
int BotLoadItemWeights(int goalstate, char *filename);
|
||||
//frees the item weights of the bot
|
||||
void BotFreeItemWeights(int goalstate);
|
||||
//returns the handle of a newly allocated goal state
|
||||
int BotAllocGoalState(int client);
|
||||
//free the given goal state
|
||||
void BotFreeGoalState(int handle);
|
||||
//setup the goal AI
|
||||
int BotSetupGoalAI(void);
|
||||
//shut down the goal AI
|
||||
void BotShutdownGoalAI(void);
|
||||
122
code/game/.svn/text-base/be_ai_move.h.svn-base
Executable file
122
code/game/.svn/text-base/be_ai_move.h.svn-base
Executable file
@@ -0,0 +1,122 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_ai_move.h
|
||||
*
|
||||
* desc: movement AI
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ai_move.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//movement types
|
||||
#define MOVE_WALK 1
|
||||
#define MOVE_CROUCH 2
|
||||
#define MOVE_JUMP 4
|
||||
#define MOVE_GRAPPLE 8
|
||||
#define MOVE_ROCKETJUMP 16
|
||||
#define MOVE_BFGJUMP 32
|
||||
//move flags
|
||||
#define MFL_BARRIERJUMP 1 //bot is performing a barrier jump
|
||||
#define MFL_ONGROUND 2 //bot is in the ground
|
||||
#define MFL_SWIMMING 4 //bot is swimming
|
||||
#define MFL_AGAINSTLADDER 8 //bot is against a ladder
|
||||
#define MFL_WATERJUMP 16 //bot is waterjumping
|
||||
#define MFL_TELEPORTED 32 //bot is being teleported
|
||||
#define MFL_GRAPPLEPULL 64 //bot is being pulled by the grapple
|
||||
#define MFL_ACTIVEGRAPPLE 128 //bot is using the grapple hook
|
||||
#define MFL_GRAPPLERESET 256 //bot has reset the grapple
|
||||
#define MFL_WALK 512 //bot should walk slowly
|
||||
// move result flags
|
||||
#define MOVERESULT_MOVEMENTVIEW 1 //bot uses view for movement
|
||||
#define MOVERESULT_SWIMVIEW 2 //bot uses view for swimming
|
||||
#define MOVERESULT_WAITING 4 //bot is waiting for something
|
||||
#define MOVERESULT_MOVEMENTVIEWSET 8 //bot has set the view in movement code
|
||||
#define MOVERESULT_MOVEMENTWEAPON 16 //bot uses weapon for movement
|
||||
#define MOVERESULT_ONTOPOFOBSTACLE 32 //bot is ontop of obstacle
|
||||
#define MOVERESULT_ONTOPOF_FUNCBOB 64 //bot is ontop of a func_bobbing
|
||||
#define MOVERESULT_ONTOPOF_ELEVATOR 128 //bot is ontop of an elevator (func_plat)
|
||||
#define MOVERESULT_BLOCKEDBYAVOIDSPOT 256 //bot is blocked by an avoid spot
|
||||
//
|
||||
#define MAX_AVOIDREACH 1
|
||||
#define MAX_AVOIDSPOTS 32
|
||||
// avoid spot types
|
||||
#define AVOID_CLEAR 0 //clear all avoid spots
|
||||
#define AVOID_ALWAYS 1 //avoid always
|
||||
#define AVOID_DONTBLOCK 2 //never totally block
|
||||
// restult types
|
||||
#define RESULTTYPE_ELEVATORUP 1 //elevator is up
|
||||
#define RESULTTYPE_WAITFORFUNCBOBBING 2 //waiting for func bobbing to arrive
|
||||
#define RESULTTYPE_BADGRAPPLEPATH 4 //grapple path is obstructed
|
||||
#define RESULTTYPE_INSOLIDAREA 8 //stuck in solid area, this is bad
|
||||
|
||||
//structure used to initialize the movement state
|
||||
//the or_moveflags MFL_ONGROUND, MFL_TELEPORTED and MFL_WATERJUMP come from the playerstate
|
||||
typedef struct bot_initmove_s
|
||||
{
|
||||
vec3_t origin; //origin of the bot
|
||||
vec3_t velocity; //velocity of the bot
|
||||
vec3_t viewoffset; //view offset
|
||||
int entitynum; //entity number of the bot
|
||||
int client; //client number of the bot
|
||||
float thinktime; //time the bot thinks
|
||||
int presencetype; //presencetype of the bot
|
||||
vec3_t viewangles; //view angles of the bot
|
||||
int or_moveflags; //values ored to the movement flags
|
||||
} bot_initmove_t;
|
||||
|
||||
//NOTE: the ideal_viewangles are only valid if MFL_MOVEMENTVIEW is set
|
||||
typedef struct bot_moveresult_s
|
||||
{
|
||||
int failure; //true if movement failed all together
|
||||
int type; //failure or blocked type
|
||||
int blocked; //true if blocked by an entity
|
||||
int blockentity; //entity blocking the bot
|
||||
int traveltype; //last executed travel type
|
||||
int flags; //result flags
|
||||
int weapon; //weapon used for movement
|
||||
vec3_t movedir; //movement direction
|
||||
vec3_t ideal_viewangles; //ideal viewangles for the movement
|
||||
} bot_moveresult_t;
|
||||
|
||||
// bk001204: from code/botlib/be_ai_move.c
|
||||
// TTimo 04/12/2001 was moved here to avoid dup defines
|
||||
typedef struct bot_avoidspot_s
|
||||
{
|
||||
vec3_t origin;
|
||||
float radius;
|
||||
int type;
|
||||
} bot_avoidspot_t;
|
||||
|
||||
//resets the whole move state
|
||||
void BotResetMoveState(int movestate);
|
||||
//moves the bot to the given goal
|
||||
void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, int travelflags);
|
||||
//moves the bot in the specified direction using the specified type of movement
|
||||
int BotMoveInDirection(int movestate, vec3_t dir, float speed, int type);
|
||||
//reset avoid reachability
|
||||
void BotResetAvoidReach(int movestate);
|
||||
//resets the last avoid reachability
|
||||
void BotResetLastAvoidReach(int movestate);
|
||||
//returns a reachability area if the origin is in one
|
||||
int BotReachabilityArea(vec3_t origin, int client);
|
||||
//view target based on movement
|
||||
int BotMovementViewTarget(int movestate, bot_goal_t *goal, int travelflags, float lookahead, vec3_t target);
|
||||
//predict the position of a player based on movement towards a goal
|
||||
int BotPredictVisiblePosition(vec3_t origin, int areanum, bot_goal_t *goal, int travelflags, vec3_t target);
|
||||
//returns the handle of a newly allocated movestate
|
||||
int BotAllocMoveState(void);
|
||||
//frees the movestate with the given handle
|
||||
void BotFreeMoveState(int handle);
|
||||
//initialize movement state before performing any movement
|
||||
void BotInitMoveState(int handle, bot_initmove_t *initmove);
|
||||
//add a spot to avoid (if type == AVOID_CLEAR all spots are removed)
|
||||
void BotAddAvoidSpot(int movestate, vec3_t origin, float radius, int type);
|
||||
//must be called every map change
|
||||
void BotSetBrushModelTypes(void);
|
||||
//setup movement AI
|
||||
int BotSetupMoveAI(void);
|
||||
//shutdown movement AI
|
||||
void BotShutdownMoveAI(void);
|
||||
|
||||
84
code/game/.svn/text-base/be_ai_weap.h.svn-base
Executable file
84
code/game/.svn/text-base/be_ai_weap.h.svn-base
Executable file
@@ -0,0 +1,84 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_ai_weap.h
|
||||
*
|
||||
* desc: weapon AI
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ai_weap.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//projectile flags
|
||||
#define PFL_WINDOWDAMAGE 1 //projectile damages through window
|
||||
#define PFL_RETURN 2 //set when projectile returns to owner
|
||||
//weapon flags
|
||||
#define WFL_FIRERELEASED 1 //set when projectile is fired with key-up event
|
||||
//damage types
|
||||
#define DAMAGETYPE_IMPACT 1 //damage on impact
|
||||
#define DAMAGETYPE_RADIAL 2 //radial damage
|
||||
#define DAMAGETYPE_VISIBLE 4 //damage to all entities visible to the projectile
|
||||
|
||||
typedef struct projectileinfo_s
|
||||
{
|
||||
char name[MAX_STRINGFIELD];
|
||||
char model[MAX_STRINGFIELD];
|
||||
int flags;
|
||||
float gravity;
|
||||
int damage;
|
||||
float radius;
|
||||
int visdamage;
|
||||
int damagetype;
|
||||
int healthinc;
|
||||
float push;
|
||||
float detonation;
|
||||
float bounce;
|
||||
float bouncefric;
|
||||
float bouncestop;
|
||||
} projectileinfo_t;
|
||||
|
||||
typedef struct weaponinfo_s
|
||||
{
|
||||
int valid; //true if the weapon info is valid
|
||||
int number; //number of the weapon
|
||||
char name[MAX_STRINGFIELD];
|
||||
char model[MAX_STRINGFIELD];
|
||||
int level;
|
||||
int weaponindex;
|
||||
int flags;
|
||||
char projectile[MAX_STRINGFIELD];
|
||||
int numprojectiles;
|
||||
float hspread;
|
||||
float vspread;
|
||||
float speed;
|
||||
float acceleration;
|
||||
vec3_t recoil;
|
||||
vec3_t offset;
|
||||
vec3_t angleoffset;
|
||||
float extrazvelocity;
|
||||
int ammoamount;
|
||||
int ammoindex;
|
||||
float activate;
|
||||
float reload;
|
||||
float spinup;
|
||||
float spindown;
|
||||
projectileinfo_t proj; //pointer to the used projectile
|
||||
} weaponinfo_t;
|
||||
|
||||
//setup the weapon AI
|
||||
int BotSetupWeaponAI(void);
|
||||
//shut down the weapon AI
|
||||
void BotShutdownWeaponAI(void);
|
||||
//returns the best weapon to fight with
|
||||
int BotChooseBestFightWeapon(int weaponstate, int *inventory);
|
||||
//returns the information of the current weapon
|
||||
void BotGetWeaponInfo(int weaponstate, int weapon, weaponinfo_t *weaponinfo);
|
||||
//loads the weapon weights
|
||||
int BotLoadWeaponWeights(int weaponstate, char *filename);
|
||||
//returns a handle to a newly allocated weapon state
|
||||
int BotAllocWeaponState(void);
|
||||
//frees the weapon state
|
||||
void BotFreeWeaponState(int weaponstate);
|
||||
//resets the whole weapon state
|
||||
void BotResetWeaponState(int weaponstate);
|
||||
46
code/game/.svn/text-base/be_ea.h.svn-base
Executable file
46
code/game/.svn/text-base/be_ea.h.svn-base
Executable file
@@ -0,0 +1,46 @@
|
||||
// Copyright (C) 1999-2000 Id Software, Inc.
|
||||
//
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_ea.h
|
||||
*
|
||||
* desc: elementary actions
|
||||
*
|
||||
* $Archive: /source/code/botlib/be_ea.h $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//ClientCommand elementary actions
|
||||
void EA_Say(int client, char *str);
|
||||
void EA_SayTeam(int client, char *str);
|
||||
void EA_Command(int client, char *command );
|
||||
|
||||
void EA_Action(int client, int action);
|
||||
void EA_Crouch(int client);
|
||||
void EA_Walk(int client);
|
||||
void EA_MoveUp(int client);
|
||||
void EA_MoveDown(int client);
|
||||
void EA_MoveForward(int client);
|
||||
void EA_MoveBack(int client);
|
||||
void EA_MoveLeft(int client);
|
||||
void EA_MoveRight(int client);
|
||||
void EA_Attack(int client);
|
||||
void EA_Respawn(int client);
|
||||
void EA_Talk(int client);
|
||||
void EA_Gesture(int client);
|
||||
void EA_Use(int client);
|
||||
|
||||
//regular elementary actions
|
||||
void EA_SelectWeapon(int client, int weapon);
|
||||
void EA_Jump(int client);
|
||||
void EA_DelayedJump(int client);
|
||||
void EA_Move(int client, vec3_t dir, float speed);
|
||||
void EA_View(int client, vec3_t viewangles);
|
||||
|
||||
//send regular input to the server
|
||||
void EA_EndRegular(int client, float thinktime);
|
||||
void EA_GetInput(int client, float thinktime, bot_input_t *input);
|
||||
void EA_ResetInput(int client);
|
||||
//setup and shutdown routines
|
||||
int EA_Setup(void);
|
||||
void EA_Shutdown(void);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user