Skip to content

Commit ede1c13

Browse files
committed
Add parity asset files and update agent instructions
Added _parity_assets directory with bot, character, item, and map files for parity verification. Updated AGENTS.md to clarify the repository's purpose and added a rule to estimate parity percentages after each task. These changes support ongoing efforts to reconstruct the Gladiator Bot's botlib with high fidelity to the original source.
1 parent 6201764 commit ede1c13

File tree

359 files changed

+63000
-917
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

359 files changed

+63000
-917
lines changed

AGENTS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Agent Instructions
22

3-
This repository exists to faithfully reconstruct the Gladiator Bot mod's botlib (gladiator.dll) for Quake II using the Binary Ninja HLIL references as an accurate guide to the retail code base; every change should focus on accurately reconstructing the original Gladiator botlib codebase piece by piece using the HLIL references, and Gladiator Bot's successor - Quake III Arena bot.
3+
This repository exists to faithfully reconstruct the Gladiator Bot's botlib (gladiator.dll) for Quake II using the Binary Ninja HLIL references as an accurate guide to the retail code base; every change should focus on accurately reconstructing the original Gladiator botlib codebase piece by piece using the HLIL references, and Gladiator Bot's successor - Quake III Arena bot.
44

55
This repository currently has the following rules for agents:
66

@@ -13,4 +13,5 @@ This repository currently has the following rules for agents:
1313
- Do not make significant decisions based on assumptions; ask questions if needed.
1414
- Prefer `rg` instead of `ls -R` or `grep -R` for repository searches.
1515
- After committing changes, generate a pull request message using the `make_pr` tool.
16+
- For each task completion, estimate before and after parity percentages versus the original Gladiator botlib source base outlined in the Binary Ninja HLIL references.
1617
- **Read-only access to the `dev_tools/` directory tree.**

_parity_assets/bots/babe_c.c

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//===========================================================================
2+
//
3+
// Name: babe_c.c
4+
// Function: characteristics for the Silicon Babe character
5+
// Programmer: MrElusive(mrelusive@demigod.demon.nl)
6+
// B.D. Squatt (squatt@demigod.demon.nl)
7+
// version: 19990517b
8+
// Tab Size: 3 (real tabs)
9+
// Notes See defaul_c.c for an explanation of definitions
10+
//===========================================================================
11+
12+
#include "chars.h"
13+
14+
character "babe"
15+
{
16+
CHARACTERISTIC_NAME "Silicon Babe"
17+
CHARACTERISTIC_ALT_NAME "Epsilon"
18+
CHARACTERISTIC_GENDER "female"
19+
CHARACTERISTIC_CHAT_FILE "bots/babe_t.c"
20+
CHARACTERISTIC_WEAPONWEIGHTS "bots/babe_w.c"
21+
CHARACTERISTIC_ITEMWEIGHTS "bots/babe_i.c"
22+
CHARACTERISTIC_REACTIONTIME 0.01
23+
CHARACTERISTIC_ATTACK_SKILL 0.85
24+
CHARACTERISTIC_AIM_SKILL 0.92
25+
CHARACTERISTIC_AIM_ACCURACY 0.82
26+
CHARACTERISTIC_VIEW_ACCELERATION 400
27+
CHARACTERISTIC_VIEW_DEACCELERATION 500
28+
CHARACTERISTIC_CROUCHER 0.05
29+
CHARACTERISTIC_JUMPER 0.78
30+
CHARACTERISTIC_WEAPONJUMPING 0.88
31+
CHARACTERISTIC_GRAPPLE_USER 1
32+
CHARACTERISTIC_VENGEFULNESS 0.9
33+
CHARACTERISTIC_AGGRESSION 0.7
34+
CHARACTERISTIC_FEAR 0.3
35+
CHARACTERISTIC_SELFPRESERVATION 0.7
36+
CHARACTERISTIC_BUTTKISSER 0
37+
CHARACTERISTIC_FRUSTRATEDNESS 0.1
38+
CHARACTERISTIC_EASY_FRAGGER 0.4
39+
CHARACTERISTIC_ALERTNESS 0.6
40+
CHARACTERISTIC_TELEFRAGAWARE 0.4
41+
CHARACTERISTIC_CAMPER 0.3
42+
CHARACTERISTIC_EGO 0.8
43+
CHARACTERISTIC_TEAMSPIRIT 0.6
44+
CHARACTERISTIC_WEAPONSWITCHER 0.3
45+
CHARACTERISTIC_SKIN_SWITCHER 0
46+
CHARACTERISTIC_NAME_SWITCHER 0
47+
//===========================================================================
48+
CHARACTERISTIC_CHAT_NAME "babe"
49+
CHARACTERISTIC_CHAT_CPM 400
50+
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.6
51+
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.66
52+
CHARACTERISTIC_CHAT_REPLY 0.34
53+
CHARACTERISTIC_CHAT_DEATH 0.4
54+
CHARACTERISTIC_CHAT_KILL 0.8
55+
CHARACTERISTIC_CHAT_INSULT 0.62
56+
CHARACTERISTIC_CHAT_MISC 0.6
57+
CHARACTERISTIC_CHAT_RANDOM 0.15
58+
//===========================================================================
59+
CHARACTERISTIC_PIZZAPREFERENCE 0
60+
CHARACTERISTIC_CALL_PRONE 0
61+
CHARACTERISTIC_BEDDY_BYE_TIME 0.01
62+
CHARACTERISTIC_EYE_COR_DEVICE 0
63+
CHARACTERISTIC_GAMMA_CORRECTION 0.6
64+
CHARACTERISTIC_3DACCELERATOR 1
65+
CHARACTERISTIC_SOUNDTYPE 1
66+
CHARACTERISTIC_CONTROLTYPE 2
67+
} //end character babe
68+

_parity_assets/chars.h

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
//===========================================================================
2+
//
3+
// Name: chars.h
4+
// Function: bot characteristics
5+
// Programmer: Mr Elusive (MrElusive@demigod.demon.nl)
6+
// Last update: 1999-04-11
7+
// Tab Size: 3 (real tabs)
8+
//===========================================================================
9+
10+
11+
//========================================================
12+
//========================================================
13+
//name
14+
#define CHARACTERISTIC_NAME 0 //string
15+
//alternative name
16+
#define CHARACTERISTIC_ALT_NAME 1 //string
17+
//bot ego
18+
#define CHARACTERISTIC_EGO 2 //float [0, 1]
19+
//gender of the bot
20+
#define CHARACTERISTIC_GENDER 3 //string ("male", "female", "it")
21+
//attack skill
22+
#define CHARACTERISTIC_ATTACK_SKILL 4 //float [0, 1]
23+
//weapon weight file
24+
#define CHARACTERISTIC_WEAPONWEIGHTS 5 //string
25+
//tendency to change weapon
26+
#define CHARACTERISTIC_WEAPONSWITCHER 6 //float [0, 1]
27+
//skill when aiming
28+
#define CHARACTERISTIC_AIM_SKILL 7 //float [0, 1]
29+
//accuracy when aiming
30+
#define CHARACTERISTIC_AIM_ACCURACY 8 //float [0, 1]
31+
//view angles (mouse) acceleration
32+
#define CHARACTERISTIC_VIEW_ACCELERATION 9 //float [0.1, 1800]
33+
//view angles (mouse) deacceleration
34+
#define CHARACTERISTIC_VIEW_DEACCELERATION 10 //float [0.1, 1800]
35+
//reaction time in seconds
36+
#define CHARACTERISTIC_REACTIONTIME 11 //float [0, 5]
37+
//========================================================
38+
//chat
39+
//========================================================
40+
//file with chats
41+
#define CHARACTERISTIC_CHAT_FILE 12 //string
42+
//name of the chat character
43+
#define CHARACTERISTIC_CHAT_NAME 13 //string
44+
//characters per minute type speed
45+
#define CHARACTERISTIC_CHAT_CPM 14 //integer [1, 4000]
46+
//tendency to insult/praise
47+
#define CHARACTERISTIC_CHAT_INSULT 15 //float [0, 1]
48+
//tendency to chat misc
49+
#define CHARACTERISTIC_CHAT_MISC 16 //float [0, 1]
50+
//tendency to chat at start or end of level
51+
#define CHARACTERISTIC_CHAT_STARTENDLEVEL 17 //float [0, 1]
52+
//tendency to chat entering or exiting the game
53+
#define CHARACTERISTIC_CHAT_ENTEREXITGAME 18 //float [0, 1]
54+
//tendency to chat when killed someone
55+
#define CHARACTERISTIC_CHAT_KILL 19 //float [0, 1]
56+
//tendency to chat when died
57+
#define CHARACTERISTIC_CHAT_DEATH 20 //float [0, 1]
58+
//tendency to randomly chat
59+
#define CHARACTERISTIC_CHAT_RANDOM 21 //float [0, 1]
60+
//tendency to reply
61+
#define CHARACTERISTIC_CHAT_REPLY 22 //float [0, 1]
62+
//========================================================
63+
//movement
64+
//========================================================
65+
//movement skill
66+
#define CHARACTERISTIC_MOVESKILL 23 //float [0, 1]
67+
//tendency to crouch
68+
#define CHARACTERISTIC_CROUCHER 24 //float [0, 1]
69+
//tendency to jump
70+
#define CHARACTERISTIC_JUMPER 25 //float [0, 1]
71+
//tendency to jump using a weapon
72+
#define CHARACTERISTIC_WEAPONJUMPING 26 //float [0, 1]
73+
//tendency to use the grapple hook when available
74+
#define CHARACTERISTIC_GRAPPLE_USER 27 //float [0, 1]
75+
//========================================================
76+
//goal
77+
//========================================================
78+
//item weight file
79+
#define CHARACTERISTIC_ITEMWEIGHTS 28 //string
80+
//health gatherer
81+
#define CHARACTERISTIC_HEALTHGATHERER 29 //float [0, 1] ***********
82+
//armor gatherer
83+
#define CHARACTERISTIC_ARMORGATHERER 30 //float [0, 1] ***********
84+
//how much the bot is aware of someone's personal space
85+
#define CHARACTERISTIC_TELEFRAGAWARE 31 //float [0, 1]
86+
//the aggression of the bot
87+
#define CHARACTERISTIC_AGGRESSION 32 //float [0, 1]
88+
//how much fear the bot has
89+
#define CHARACTERISTIC_FEAR 33 //float [0, 1]
90+
//the self preservation of the bot
91+
#define CHARACTERISTIC_SELFPRESERVATION 34 //float [0, 1]
92+
//how likely the bot is to take revenge
93+
#define CHARACTERISTIC_VENGEFULNESS 35 //float [0, 1]
94+
//tendency to camp
95+
#define CHARACTERISTIC_CAMPER 36 //float [0, 1]
96+
//========================================================
97+
//========================================================
98+
//favourite class
99+
#define CHARACTERISTIC_FAVCLASS 37 //integer [0, 100] ***********
100+
//tendency to change name
101+
#define CHARACTERISTIC_NAME_SWITCHER 38 //float [0, 1]
102+
//tendency to change skin
103+
#define CHARACTERISTIC_SKIN_SWITCHER 39 //float [0, 1]
104+
//how much of a frustrated teen is the bot
105+
#define CHARACTERISTIC_FRUSTRATEDTEEN 40 //float [0, 1] ***********
106+
//how frustrated is the bot in general
107+
#define CHARACTERISTIC_FRUSTRATEDNESS 41 //float [0, 1]
108+
//tendency to get easy frags
109+
#define CHARACTERISTIC_EASY_FRAGGER 42 //float [0, 1]
110+
//how alert the bot is
111+
#define CHARACTERISTIC_ALERTNESS 43 //float [0, 1]
112+
//bot has sound on, off or 3D
113+
#define CHARACTERISTIC_SOUNDTYPE 44 //integer [0, 2]
114+
//resolution and 3D card user
115+
#define CHARACTERISTIC_3DACCELERATOR 45 //integer [0, 1]
116+
//type of control device used (keyboard, mouse, keypad, 3dassassin, joystick)
117+
#define CHARACTERISTIC_CONTROLTYPE 46 //integer [0, 4]
118+
//how much of a team spirit the bot has
119+
#define CHARACTERISTIC_TEAMSPIRIT 47 //float [0, 1]
120+
//does the bot client eat pizza while playing Q2
121+
#define CHARACTERISTIC_PIZZAPREFERENCE 48 //float [0, 1]
122+
//likelyhood that the client is called by his mom while playing quake
123+
#define CHARACTERISTIC_CALL_PRONE 49 //float [0, 1]
124+
//yep even bots need sleep every once in a while
125+
#define CHARACTERISTIC_BEDDY_BYE_TIME 50 //float [0, 24]
126+
//some bots might have glasses
127+
#define CHARACTERISTIC_EYE_COR_DEVICE 51 //integer [0, 2]
128+
//bot monitor gamme correction, 1 is pretty much fullbright
129+
#define CHARACTERISTIC_GAMMA_CORRECTION 52 //float [0, 1]
130+
//some bots really know how to do it
131+
#define CHARACTERISTIC_BUTTKISSER 53 //float [0, 1]
132+

_parity_assets/default/defaul_i.c

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
//===========================================================================
2+
//
3+
// Name: defaul_i.c
4+
// Function: this file describes the likelyhood that a bot character will
5+
// pick up a certain item, with 0 being (almost) never and 100 being more
6+
// often (sky is the limit here folks, i limit myself to 120)
7+
// Programmer: Mr Elusive (MrElusive@demigod.demon.nl)
8+
// Last update: 19990511a (by Squatt)
9+
// Tab Size: 3 (real tabs)
10+
//===========================================================================
11+
12+
13+
// COMMENTARY BY SQUATT NOT BY MR ELUSIVE
14+
15+
16+
17+
#include "inv.h" //trust me...this file needs this or it won't work
18+
#include "game.h" //yep...just include this..trust me...I know what I'm doing
19+
20+
/*
21+
FS_HEALTH and FS_ARMOR <not finished yet...subject to change>
22+
*/
23+
24+
#define FS_HEALTH 0.8
25+
#define FS_ARMOR 0.8
26+
//undecided balance range
27+
#define BR_HEALTH 10 //NOTE: was 8 but changed it for Rhea
28+
#define BR_ARMOR 10 //NOTE: was 8
29+
#define BR_WEAPON 30 //NOTE: was 15
30+
#define BR_POWERUP 15 //NOTE: was 4
31+
32+
/*
33+
weapon weights: these should be the highest if you want the character to arm
34+
ittself before doing anything else
35+
*/
36+
37+
#define W_SHOTGUN 30
38+
#define W_SUPERSHOTGUN 60 //120 points of instant damage...but only up close
39+
#define W_MACHINEGUN 70 //this weapon does the most damage per time unit
40+
#define W_CHAINGUN 35
41+
#define W_GRENADELAUNCHER 30
42+
#define W_ROCKETLAUNCHER 90 //good weapon damage...but slow damage per time unit
43+
#define W_HYPERBLASTER 55
44+
#define W_RAILGUN 90 //120 pts of damage, but with an extremely narrow but
45+
46+
#define W_BFG10K 80 //easy for wide open places, difficult for smaller
47+
//areas; and it is slow as well
48+
#define W_GRENADES 25
49+
#ifdef XATRIX
50+
#define W_IONRIPPER 60
51+
#define W_PHALANX 35
52+
#endif //XATRIX
53+
#ifdef ROGUE
54+
#define W_ETFRIFLE 55
55+
#define W_PROXLAUNCHER 35
56+
#define W_PLASMABEAM 55
57+
#define W_CHAINFIST 45
58+
#define W_DISRUPTOR 80
59+
#endif //ROGUE
60+
61+
/*
62+
these weapon weights come into play when the bot already possesses the weapon; i.e. the
63+
likelyhood that it will pick up a weapon if it already possesses it.
64+
*/
65+
66+
#define GWW_SHOTGUN 10
67+
#define GWW_SUPERSHOTGUN 10
68+
#define GWW_MACHINEGUN 20
69+
#define GWW_CHAINGUN 20
70+
#define GWW_GRENADELAUNCHER 20
71+
#define GWW_ROCKETLAUNCHER 30
72+
#define GWW_HYPERBLASTER 20
73+
#define GWW_RAILGUN 30
74+
#define GWW_BFG10K 40
75+
#define GWW_GRENADES 20 //grenades are special....being ammo as well as a weapon
76+
#ifdef XATRIX
77+
#define GWW_IONRIPPER 10
78+
#define GWW_PHALANX 10
79+
#endif //XATRIX
80+
#ifdef ROGUE
81+
#define GWW_ETFRIFLE 10
82+
#define GWW_PROXLAUNCHER 10
83+
#define GWW_PLASMABEAM 10
84+
#define GWW_CHAINFIST 10
85+
#define GWW_DISRUPTOR 10
86+
#endif //ROGUE
87+
88+
/*
89+
ammo: I had MrE. put cells in because they are not only ammo, they power the powershield and
90+
powerscreen as well, giving them (the cells) extra value...to some people...and bots characters.
91+
*/
92+
93+
#define W_CELLS 51
94+
//armor
95+
#define W_REDARMOR 85
96+
#define W_YELLOWARMOR 70
97+
#define W_GREENARMOR 55
98+
#define W_ARMORSHARD 11 //while the significance of the armor shard may be minor, there
99+
//are always people (including myself) who are compulsive armor
100+
//shard gatherers.....except when doing one on one...heh heh
101+
102+
/*
103+
if the following items receive higher values than the initial weapon values, then the bot
104+
will first seek these items out, then the weapons (if still alive)
105+
*/
106+
107+
//powershields
108+
#define W_POWERSHIELD 85
109+
#define W_POWERSCREEN 80 //we don't know where you can find this, but it is included with quake2
110+
//powerups code
111+
#define W_MEGAHEALTH 70
112+
#define W_AMMOPACK 40
113+
#define W_BANDOLIER 35 //sorta like an ammo pack but with less ammo capacity
114+
#define W_QUAD 70
115+
#define W_INVULNERABILITY 75
116+
#define W_SILENCER 25
117+
#define W_REBREATHER 30
118+
#define W_ENVIRO 40
119+
#ifdef XATRIX
120+
#define W_QUADFIRE 50
121+
#endif //XATRIX
122+
#ifdef ROGUE
123+
#define W_IR_GOGGLES 40
124+
#define W_DOUBLE 40
125+
#define W_COMPASS 40
126+
#define W_SPHERE_VENGEANCE 50
127+
#define W_SPHERE_HUNTER 50
128+
#define W_SPHERE_DEFENDER 50
129+
#define W_DOPPLEGANGER 50
130+
#define W_TAG_TOKEN 40
131+
#endif //ROGUE
132+
133+
/*
134+
with the following 4 weights the bot determines which tech it likes best
135+
(=the one with the highest value.) This happens only when it encounters a new tech
136+
*/
137+
138+
#define TECH1_WEIGHT 40 // Resistance Tech \ Disruptor Shield
139+
#define TECH2_WEIGHT 40 // Strength Tech \ Power Amplifier
140+
#define TECH3_WEIGHT 40 // Haste Tech \ Time Accel
141+
#define TECH4_WEIGHT 40 // Regeneration Tech \ AutoDoc
142+
143+
#define FLAG_WEIGHT 50 // Mr Elusive told me to leave this 50
144+
145+
//include the fuzzy relations, or else the above is done for naught but the typing exercise itself
146+
#include "fw_items.c"
147+

0 commit comments

Comments
 (0)