Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
6886eea
Align owns, carries and equips item check helpers
GregHib Jan 25, 2026
dee82f9
Some ideas
GregHib Jan 25, 2026
6e08106
Add 3k bot names
GregHib Jan 26, 2026
cdc9141
Add username length check to login
GregHib Jan 26, 2026
5fe25a4
Add bot name randomising
GregHib Jan 26, 2026
fb8dc33
Fix bots spawning on startup
GregHib Jan 26, 2026
b15f3f8
Add a basic bot manager system which assigns location-based tasks
GregHib Jan 26, 2026
b214ff3
Add behaviour templating
GregHib Jan 27, 2026
bfe49ea
Add requirement ordering
GregHib Jan 27, 2026
cfd96b3
Rename Requirement to Fact
GregHib Jan 27, 2026
4aff6db
Rename requirements to requires
GregHib Jan 27, 2026
2525fd4
Started on resolvers
GregHib Jan 28, 2026
52cd732
Add fact checking
GregHib Jan 28, 2026
e1413e9
Add fact checks and EquipsOne/CarriesOne of a few items given wildcards
GregHib Jan 28, 2026
e173a5f
Add manager debugging
GregHib Jan 28, 2026
d76ac57
Tweak mechanics and add tests for resolver behaviour
GregHib Jan 28, 2026
bc8f7d4
Hack together action implementations
GregHib Jan 28, 2026
8c94092
Fixes
GregHib Jan 29, 2026
29b526c
Split mandatory and resolvable facts into two lists
GregHib Jan 29, 2026
bbcca16
Add activity visibility and grouping based on facts
GregHib Jan 29, 2026
6ee5fe9
Update enter/exit handler to pass AreaDefinition instead of Area
GregHib Jan 29, 2026
167c7f2
Add recalculating activities reactively
GregHib Jan 29, 2026
01a412d
Facts and conditions
GregHib Jan 30, 2026
92f5c12
Add automatic location/area resolver
GregHib Jan 31, 2026
2df6023
Convert Fact's and Conditions to check Players not Bots
GregHib Feb 1, 2026
a6d5bd7
Rename plan to actions, resolve to setup
GregHib Feb 1, 2026
ac947a4
Add variable defaults and walk to tile action
GregHib Feb 1, 2026
f8781b3
Add a new navigation graph with navigation shortcuts
GregHib Feb 1, 2026
dad1a8f
Replace nav graph in MapViewer and add reload button
GregHib Feb 2, 2026
748c417
Reload areas too
GregHib Feb 2, 2026
98e2bf6
Fix area name offset
GregHib Feb 2, 2026
3973054
Link up navigation graph with GoTo and GoToNearest actions
GregHib Feb 2, 2026
b279b32
Add all nav-edges and update varrock teleport shortcut
GregHib Feb 2, 2026
f90abc6
WIP
GregHib Feb 2, 2026
26a43ed
Add clock and timer facts
GregHib Feb 4, 2026
096bb59
Replace retry-actions with success conditions
GregHib Feb 4, 2026
59bdf20
Improvements and fixes
GregHib Feb 4, 2026
ca855c7
Fixes
GregHib Feb 4, 2026
1f3c202
Fixes to shopping and banking, add bunch of woodcutting spots
GregHib Feb 4, 2026
2723439
Remove some inappropriate bot names
GregHib Feb 4, 2026
c60b954
Add combat level fact and more mining bots
GregHib Feb 4, 2026
0832cae
Fix lumbridge swamp lost city npc spawns
GregHib Feb 4, 2026
2bd3a9d
Re-weight buying vs banking
GregHib Feb 4, 2026
fda2619
Fix traversing graphs with zero weight
GregHib Feb 4, 2026
300dbf7
Fix edge-less traversals
GregHib Feb 4, 2026
1077d85
Add equipping and combat bot
GregHib Feb 4, 2026
a9f63b3
Target nearest applicable entity first
GregHib Feb 4, 2026
0fab8a4
Tweak resolvers and combat
GregHib Feb 4, 2026
6b931f6
Add boolean return to validators for immediate feedback
GregHib Feb 5, 2026
e8521cb
Use interaction validators directly for faster feedback
GregHib Feb 5, 2026
840cc93
Add item on item and dialogue continue actions
GregHib Feb 5, 2026
6e555e5
Fix bot disconnecting by making client required and viewport optional
GregHib Feb 5, 2026
36c5a88
Fix invalid inventory messages and bot restart actions
GregHib Feb 5, 2026
099e293
Add fletching bots
GregHib Feb 5, 2026
3c3dcdd
WIP
GregHib Feb 6, 2026
96371af
Tweak reset waiting conditions and thieving, add bone burying
GregHib Feb 6, 2026
c51163d
Add cow bots
GregHib Feb 6, 2026
145cf17
Add cooking bots
GregHib Feb 6, 2026
adfce11
Requirement Refactor
GregHib Feb 7, 2026
88ea7b6
Requirement action requirements
GregHib Feb 7, 2026
2526719
Remove Condition
GregHib Feb 7, 2026
6114c2c
Add deficit concept and evaluator to produce them
GregHib Feb 7, 2026
fec240c
Fix shortcuts
GregHib Feb 7, 2026
098dd74
Split nav edges into locations
GregHib Feb 7, 2026
634aa3a
Introduce ItemView for multi inventory lookups with no copies
GregHib Feb 7, 2026
da45610
Tidy up
GregHib Feb 8, 2026
a534ed9
Add ActionParser with new format
GregHib Feb 8, 2026
875128b
Add object fact and require object interact success predicates
GregHib Feb 8, 2026
1e8ca41
New nav edge format
GregHib Feb 8, 2026
950b95f
New nav edge format
GregHib Feb 8, 2026
6663c5c
Remove old bot and navigation system
GregHib Feb 8, 2026
8ecc11d
Fix
GregHib Feb 8, 2026
2f52c6d
Store tags by tile
GregHib Feb 8, 2026
314ebe3
Sort classes
GregHib Feb 8, 2026
7b800d3
Formatting
GregHib Feb 8, 2026
de4f965
Fix tags off-by-one error
GregHib Feb 8, 2026
00fd335
Add interface closer parser
GregHib Feb 8, 2026
45c3b4d
Tweak deficits
GregHib Feb 8, 2026
8f581c3
Rethinking evaluation, started adding fishing
GregHib Feb 8, 2026
3d0840e
Change produces to keys only
GregHib Feb 9, 2026
862a945
Rename carries to inventory
GregHib Feb 9, 2026
407f8a5
Add start new condition system
GregHib Feb 9, 2026
35d6de4
Add new condition system with dynamic resolvers in place of facts, pr…
GregHib Feb 10, 2026
42e9e3e
Add timeout when an activity doesn't produce anything for a given time
GregHib Feb 10, 2026
4d448d8
Add documentation
GregHib Feb 10, 2026
147d5e9
Fix product templates, taking items from shop samples, tidy messages
GregHib Feb 10, 2026
cccc103
Formatting
GregHib Feb 10, 2026
628f404
Fix fishing timeout
GregHib Feb 10, 2026
af5d507
Add dynamic shop buying resolvers
GregHib Feb 10, 2026
56c1432
Add lumbridge combat tutor bots, fix lots of conditions and resolvers
GregHib Feb 11, 2026
0e1fd05
Remove old area bot data
GregHib Feb 11, 2026
df74e24
Add firemaking bot
GregHib Feb 11, 2026
c7f2f1f
Remove comments
GregHib Feb 11, 2026
425fbfa
Add shop sample resolver and picking up item action, fix chicken fence
GregHib Feb 11, 2026
3fe7c4a
Formatting
GregHib Feb 11, 2026
6b1c1da
Tweaks
GregHib Feb 11, 2026
b8b48d3
Add crayfish cooking bot
GregHib Feb 11, 2026
f47ddaa
Fix viewport
GregHib Feb 16, 2026
87288fc
Fix potion consumption insert order
GregHib Feb 16, 2026
634b288
Formatting
GregHib Feb 16, 2026
95a34bd
Better viewport fix
GregHib Feb 17, 2026
467cae7
Split up actions into individual classes
GregHib Feb 17, 2026
6b35c9a
Convert interface definitions to static object #839
GregHib Feb 17, 2026
8ddfe34
Add .kotlin to gitignore
GregHib Feb 17, 2026
1152924
Convert inventory definition to static object #839
GregHib Feb 17, 2026
2d5db67
Add unit tests for most bot actions
GregHib Feb 17, 2026
21229dd
Add dynamic resolvers tests
GregHib Feb 17, 2026
0964522
Split up condition into separate class files
GregHib Feb 17, 2026
e95e705
Add bot update and evaluation tests
GregHib Feb 17, 2026
e461db4
Add multiple bot spawn locations
GregHib Feb 17, 2026
534892c
Add random offset to bot walk to tiles
GregHib Feb 17, 2026
cd7fcf6
Fix lumbridge gates
GregHib Feb 17, 2026
0f0933d
Add bots spawning requirements for activities
GregHib Feb 17, 2026
77e123a
Move modified and wildcards into /data/.temp
GregHib Feb 17, 2026
a062cf4
Move modified and wildcards into /data/.temp
GregHib Feb 17, 2026
6a59dbb
Fix unicode decoding in quick chat options
GregHib Feb 17, 2026
db2f1b9
Fix silver bolt smithing
GregHib Feb 17, 2026
098386f
Fix incorrect hp level for quick chat
GregHib Feb 17, 2026
54010b9
Add basic quick-chat bot responding
GregHib Feb 17, 2026
1f1e793
Add interface closed action
GregHib Feb 17, 2026
5891e13
Add bot smithing and smelting
GregHib Feb 17, 2026
2c09105
Fix bot debug visual updates and bone burying
GregHib Feb 17, 2026
8160f0c
Fix combat tutor bots
GregHib Feb 17, 2026
79062b9
Improve player search commands and add inspect inv
GregHib Feb 17, 2026
4219878
Fix tests and tick ordering
GregHib Feb 17, 2026
674c6f9
Fix bots trying to attack npcs already under attack
GregHib Feb 17, 2026
30a8af8
Fix getting stuck with runes from the magic tutor
GregHib Feb 17, 2026
be70426
Update bot count to 30
GregHib Feb 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# scripts
scripts.txt
/data/wildcards.txt
/data/.temp/*

# tools
*.jar
Expand Down Expand Up @@ -38,6 +39,7 @@ build/*
build
rebel.xml
rebel-remote.xml
.kotlin

### Gradle ###
.gradle
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package world.gregs.voidps.cache.definition.decoder

import world.gregs.voidps.buffer.Unicode
import world.gregs.voidps.buffer.read.ArrayReader
import world.gregs.voidps.buffer.read.Reader
import world.gregs.voidps.cache.Cache
Expand Down Expand Up @@ -41,17 +42,17 @@ class QuickChatOptionDecoder : DefinitionDecoder<QuickChatOptionDefinition>(QUIC
quickReplyOptions = IntArray(length)
navigateChars = CharArray(length) { count ->
quickReplyOptions!![count] = buffer.readShort()
val b = buffer.readChar()
if (b != 0) b.toChar() else '\u0000'
val b = buffer.readUnsignedByte()
if (b != 0) Unicode.byteToChar(b).toChar() else '\u0000'
}
}
3 -> {
val length = buffer.readUnsignedByte()
dynamicData = IntArray(length)
staticData = CharArray(length) { count ->
dynamicData!![count] = buffer.readShort()
val b = buffer.readChar()
if (b != 0) b.toChar() else '\u0000'
val b = buffer.readUnsignedByte()
if (b != 0) Unicode.byteToChar(b).toChar() else '\u0000'
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions data/area/kharidian_desert/al_kharid/al_kharid.areas.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,10 @@ tags = ["bank"]
[zekes_scimitar_shop]
x = [3285, 3290]
y = [3187, 3192]
tags = ["shop"]
items = ["bronze_scimitar", "iron_scimitar", "steel_scimitar", "mithril_scimitar"]

[al_kharid_kebab_shop]
x = [3271, 3275]
y = [3179, 3183]
type = "range"
tags = ["cooking", "spaces_2"]

[al_kharid_multi_area]
x = [3264, 3327]
Expand All @@ -34,6 +30,10 @@ y = [3121, 3125]
x = [3291, 3308]
y = [3281, 3320]

[al_kharid_mine_north]
x = [3291, 3308]
y = [3309, 3320]

[greater_al_kharid]
x = [3264,3264,3391,3391,3423,3423,3455,3455]
y = [3136,3327,3327,3263,3263,3182,3182,3136]
Expand Down
35 changes: 35 additions & 0 deletions data/area/kharidian_desert/al_kharid/al_kharid.bots.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Mining
[al_kharid_iron_mining]
template = "iron_ore_template"
capacity = 2
fields = { location = "al_kharid_mine" }

[al_kharid_coal_mining]
template = "coal_template"
capacity = 1
fields = { location = "al_kharid_mine" }

[al_kharid_silver_mining]
template = "silver_ore_template"
capacity = 2
fields = { location = "al_kharid_mine" }

[al_kharid_north_copper_mining]
template = "copper_ore_template"
capacity = 1
fields = { location = "al_kharid_mine_north" }

[al_kharid_north_silver_mining]
template = "silver_ore_template"
capacity = 1
fields = { location = "al_kharid_mine_north" }

[al_kharid_north_iron_mining]
template = "iron_ore_template"
capacity = 2
fields = { location = "al_kharid_mine_north" }

[al_kharid_north_mithril_mining]
template = "mithril_ore_template"
capacity = 2
fields = { location = "al_kharid_mine_north" }
1 change: 1 addition & 0 deletions data/area/kharidian_desert/al_kharid/al_kharid.npcs.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ examine = "Likes you more, the more you spend."
id = 541
categories = ["human"]
shop = "zekes_superior_scimitars"
area = "zekes_scimitar_shop"
wander_range = 3
collision = "indoors"
examine = "Sells superior scimitars."
Expand Down
16 changes: 0 additions & 16 deletions data/area/misthalin/draynor/draynor.areas.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,18 @@ hint = "around a village between a great tower and a vampyre's manor."
[draynor_willow_trees]
x = [3083, 3090]
y = [3227, 3238]
tags = ["trees"]
trees = ["willow"]
levels = "30-45"
spaces = 6

[draynor_oak_trees]
x = [3098, 3103]
y = [3241, 3253]
tags = ["trees"]
trees = ["tree", "oak"]
levels = "0-30"

[draynor_west_oak_trees]
x = [3068, 3072]
y = [3248, 3260]
tags = ["trees"]
trees = ["tree", "oak"]
levels = "0-30"

[draynor_north_trees]
x = [3075, 3085]
y = [3265, 3274]
tags = ["trees"]
trees = ["tree", "oak"]
levels = "0-30"

[draynor_bank]
x = [3088, 3097]
Expand All @@ -45,9 +32,6 @@ tags = ["bank"]
[draynor_fishing_area]
x = [3085, 3086]
y = [3227, 3231]
tags = ["fish"]
type = "lure_bait"
spaces = 5

[draynor_village_multi_area]
x = [3112, 3136, 3136, 3104, 3104, 3112]
Expand Down
20 changes: 20 additions & 0 deletions data/area/misthalin/draynor/draynor.bots.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[draynor_east_trees]
template = "normal_tree_template"
fields = { location = "draynor_oak_trees" }

[draynor_east_oak_trees]
template = "oak_tree_template"
fields = { location = "draynor_oak_trees" }

[draynor_north_trees]
template = "normal_tree_template"
fields = { location = "draynor_north_trees" }

[draynor_west_oak_trees]
template = "oak_tree_template"
fields = { location = "draynor_west_oak_trees" }

[draynor_willow_trees]
template = "willow_tree_template"
capacity = 8
fields = { location = "draynor_willow_trees" }
87 changes: 12 additions & 75 deletions data/area/misthalin/lumbridge/lumbridge.areas.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,51 +5,30 @@ y = [3136, 3136, 3336, 3336, 3346, 3349, 3347, 3347, 3337, 3333, 3333, 3330, 333
[lumbridge_north_trees]
x = [3220, 3234]
y = [3244, 3249]
tags = ["trees"]
trees = ["tree", "oak"]
levels = "0-30"

[lumbridge_west_yew_tree]
x = [3164, 3168]
y = [3218, 3222]
tags = ["trees"]
trees = ["tree", "yew"]
levels = "60-68"

[lumbridge_north_west_yew_tree]
x = [3183, 3187]
y = [3225, 3229]
tags = ["trees"]
trees = ["tree", "yew"]
levels = "60-68"

[lumbridge_west_trees]
x = [3186, 3197]
y = [3238, 3250]
tags = ["trees"]
trees = ["tree", "oak"]
spaces = 2
levels = "0-30"

[lumbridge_east_trees]
x = [3260, 3267]
y = [3214, 3226]
tags = ["trees"]
trees = ["tree", "oak"]
levels = "0-30"

[lumbridge_cow_trees]
x = [3254, 3264]
y = [3249, 3254]
tags = ["trees"]
trees = ["tree", "oak"]
levels = "0-30"

[bobs_axe_shop]
x = [3227, 3233]
y = [3201, 3205]
tags = ["shop"]
items = ["bronze_pickaxe", "bronze_hatchet", "iron_hatchet", "steel_hatchet", "iron_battleaxe", "steel_battleaxe", "mithril_battleaxe"]

[lumbridge_castle_bank]
x = [3207, 3210]
Expand All @@ -66,64 +45,34 @@ tags = ["high"]
[lumbridge_swamp_east_copper_mine]
x = [3227, 3231]
y = [3143, 3149]
tags = ["mine"]
rocks = ["copper"]
levels = "1-15"
spaces = 2

[lumbridge_swamp_east_tin_mine]
x = [3222, 3226]
y = [3145, 3149]
tags = ["mine"]
rocks = ["tin"]
levels = "1-15"
spaces = 2

[lumbridge_swamp_west_coal_mine]
x = [3143, 3147]
y = [3148, 3154]
tags = ["mine", "coal"]
rocks = ["coal"]
levels = "30-40"
spaces = 2

[lumbridge_swamp_west_mithril_mine]
x = [3143, 3149]
y = [3143, 3147]
tags = ["mine"]
rocks = ["mithril"]
levels = "55-70"

[lumbridge_swamp_west_adamantite_mine]
x = [3147, 3149]
y = [3145, 3149]
tags = ["mine"]
rocks = ["adamantite"]
levels = "70-85"

[lumbridge_east_cow_field]
x = [3253, 3253, 3251, 3251, 3249, 3246, 3244, 3244, 3240, 3240, 3242, 3242, 3240, 3240, 3241, 3256, 3257, 3260, 3261, 3263, 3265, 3265, 3266, 3266, 3265, 3265, 3266, 3266, 3265, 3265, 3264]
y = [3255, 3272, 3274, 3276, 3278, 3278, 3280, 3281, 3285, 3286, 3288, 3294, 3296, 3297, 3298, 3298, 3299, 3299, 3298, 3298, 3296, 3293, 3292, 3286, 3285, 3276, 3275, 3272, 3271, 3256, 3255]
tags = ["combat_training"]
npcs = ["cows"]
spaces = 7
levels = "10-20"

[lumbridge_east_goblin_settlement]
x = [3262, 3259, 3253, 3251, 3251, 3249, 3245, 3242, 3242, 3240, 3240, 3239, 3239, 3252, 3252, 3264, 3264, 3265, 3265, 3266, 3266, 3267, 3267, 3266, 3266]
y = [3215, 3218, 3222, 3223, 3227, 3228, 3232, 3235, 3239, 3241, 3249, 3251, 3256, 3256, 3254, 3254, 3247, 3246, 3238, 3237, 3226, 3225, 3220, 3219, 3215]
tags = ["combat_training"]
npcs = ["goblins", "giant_spiders"]
spaces = 6
levels = "5-15"

[lumbridge_chicken_pen]
x = [3225, 3225, 3237, 3237]
y = [3287, 3301, 3301, 3287]
tags = ["combat_training"]
npcs = ["chickens"]
spaces = 5
levels = "1-10"

[lumbridge_castle_courtyard]
x = [3218, 3224, 3224, 3218]
Expand All @@ -136,29 +85,18 @@ y = [3239, 3243]
[lumbridge_swamp_fishing_area]
x = [3240, 3247]
y = [3142, 3157]
tags = ["fish"]
type = "small_net_bait"
spaces = 8

[lumbridge_river_fishing_area]
x = [3238, 3240]
y = [3241, 3255]
tags = ["fish"]
type = "lure_bait"
spaces = 3

[hanks_fishing_shop]
x = [3191, 3198]
y = [3251, 3255]
tags = ["shop"]
items = ["small_fishing_net", "fishing_rod", "fly_fishing_rod", "crayfish_cage", "fishing_bait", "feather"]

[lumbridge_south_river_fishing_area]
x = [3258, 3259]
y = [3203, 3207]
tags = ["fish"]
type = "crayfish"
spaces = 2

[lumbridge_teleport]
x = [3221, 3222]
Expand All @@ -172,32 +110,23 @@ y = [3250, 3256]
[lumbridge_swamp_giant_rats]
x = [3212, 3232]
y = [3173, 3190]
tags = ["combat_training"]
npcs = ["giant_rats"]
spaces = 2
levels = "10-14"

[lumbridge_firemaking_spot]
x = [3219, 3219]
y = [3247, 3248]
tags = ["fire_making", "spaces_2"]
x = [3220, 3221]
y = [3257, 3259]

[lumbridge_kitchen]
x = [3205, 3212]
y = [3212, 3217]
type = "range"
tags = ["cooking", "spaces_2"]
level = 0

[lumbridge_south_cooking_range]
x = [3230, 3237]
y = [3195, 3198]
type = "range"
tags = ["cooking", "spaces_2"]

[lumbridge_furnace]
x = [3222, 3229]
y = [3252, 3257]
tags = ["smithing", "smelting", "spaces_2"]

[freds_farmhouse]
x = [3184, 3192]
Expand All @@ -207,4 +136,12 @@ y = [3270, 3275]
x = [3136, 3263]
y = [3136, 3327]
tags = ["penguin_area"]
hint = "in the south of the kingdom of Misthalin."
hint = "in the south of the kingdom of Misthalin."

[lumbridge_thieving_area]
x = [3220, 3225]
y = [3236, 3242]

[lumbridge_west_cow_field]
x = [3156, 3202]
y = [3316, 3341]
Loading
Loading