In this game you play as a trucker, trying to gain as much renown before the year is up! Renown is gained by completing contracts, with harder contracts giving
+more renown. Contracts also give money, which you’ll need to keep going and to upgrade your truck. Contracts are completed by traveling from the start node to
+the finish node within the contract’s deadline. Failure to deliver before a contract’s deadline will result in no renown or money reward. During the course of
+moving between nodes events will occur, which will cause damage to your truck and waste your time. The game can end early if your truck becomes too damaged
+or runs out of gas. The penalties from events can be mitigated by upgrading your truck. The game will complete after 10,000 (in game) hours.
diff --git a/docs/LearnTheTruckinGame/objects.inv b/docs/LearnTheTruckinGame/objects.inv
index db8a6cd..1bab1f3 100644
Binary files a/docs/LearnTheTruckinGame/objects.inv and b/docs/LearnTheTruckinGame/objects.inv differ
diff --git a/docs/LearnTheTruckinGame/search.html b/docs/LearnTheTruckinGame/search.html
index 96f206d..9881d61 100644
--- a/docs/LearnTheTruckinGame/search.html
+++ b/docs/LearnTheTruckinGame/search.html
@@ -104,6 +104,7 @@
Add On Objects
Body Objects
Tires
+
Enums
diff --git a/docs/LearnTheTruckinGame/searchindex.js b/docs/LearnTheTruckinGame/searchindex.js
index 9f7f483..7617369 100644
--- a/docs/LearnTheTruckinGame/searchindex.js
+++ b/docs/LearnTheTruckinGame/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["AddonObjects","BodyObjects","Contract","Events","GameMap","Node","Road","RunningTheGame","TakingAction","TireObjects","Truck","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,sphinx:56},filenames:["AddonObjects.rst","BodyObjects.rst","Contract.rst","Events.rst","GameMap.rst","Node.rst","Road.rst","RunningTheGame.rst","TakingAction.rst","TireObjects.rst","Truck.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"025":0,"10800":[0,1],"16200":[0,1],"21600":[0,1],"300":9,"5400":[0,1],"default":[1,10],"enum":[2,6,8],"int":[2,10],"new":7,"return":[4,7],"switch":[9,10,11],"true":2,For:10,GPS:[8,10,11],Gas:[1,11],Going:8,Not:1,The:[2,3,4,5,6,7,8,11],Then:7,There:[3,6,8],These:8,Will:8,abov:7,access:[2,3,6],action:11,actiontyp:8,active_contract:10,actual:7,add:[8,10,11],addit:0,addon:[0,8,10],adition:1,affect:[6,8],afford:8,after:7,all:[0,7,8,10],allow:8,also:[1,2,4,8,9],altern:7,amount:2,ani:[7,8],anim:1,animal_in_road:[3,6,10],animal_in_the_road:1,anoth:8,argument:8,associ:2,atleast:7,attribut:[0,1,10],automat:[2,7],averag:7,awai:0,back:10,balanc:9,bandit:[3,6,9,10],base:[3,7,10],basebodyobject:10,baseupgradeobject:10,bat:7,being:10,below:[0,1,2,3,5,6,8,10],between:[8,9],block:[0,1],bodi:[8,10,11],bolder:1,bonu:0,bonus:0,bot:8,bounty_hunt:10,bright:1,bring:0,bui:11,build:8,built:7,buy_ga:8,call:[7,8],can:[0,1,3,5,6,7,8,10],caus:1,chang:7,check:7,choos:11,chosen:8,city_nam:5,city_road:6,click:7,client:7,code:[0,1,7],come:2,command:7,competit:7,complet:[2,7,8,10],completabiltii:2,comput:7,confirm:7,connect:[6,7],contain:7,content:11,continu:7,contract:[3,4,10,11],contract_list:[8,10],contractlist:2,cop:0,cost:[0,1,9],creat:7,critic:8,current:[2,4,5,10],current_ga:1,current_nod:[4,8,10],damag:[0,1,3,8,9,10],deadlin:2,debug:7,decim:[5,6],deciph:7,decrement:2,delet:7,depict:7,descript:[2,4,5,6,10],develop:7,dictionari:2,differ:8,difficulti:[2,3],dificulti:10,directori:7,disast:0,document:[7,11],don:[7,8],download:7,each:[3,5,8,9,10],easi:[2,10],easili:7,editor:7,effici:[8,9],either:8,ellig:7,end:4,enough:8,enter:7,enumer:[3,6],equip:10,evad:0,event:[0,1,2,6,8,9,10,11],eventtyp:[3,10],everi:8,everyth:10,excess:7,faster:8,feel:7,file:7,fill:8,flat:9,fluctuat:8,folder:7,foot:11,forest_road:6,former:8,free:7,from:[0,2,4,7,8,9,10],fuel:[8,9],fulli:8,game:[2,8,10,11],game_map:2,gamemap:5,gas:[1,5,8],gas_pric:5,gener:8,get:4,get_next_nod:4,give:[2,10],given:[2,6],good:0,gun:11,happen:[3,6,8],hard:[2,10],has:10,have:[0,1,7,8,10],head:4,headlight:[8,10,11],health:8,help:0,highwai:6,hint:7,hold:[1,10],how:[1,7],icy_road:[3,6,9,10],icyroad:9,ignor:8,impact:[2,9],incom:0,increas:[1,3,8],index:[2,8,10,11],instal:11,instanc:[5,11],instead:9,instruct:7,integ:8,interst:6,just:7,keep:7,kit:7,lead:8,leav:1,length:[2,4,6],less:2,level:[0,1,8,9],like:[7,8],likelyhood:3,link:4,list:[2,4,5,6,8,10],log:7,look:7,loss:8,luck:0,made:7,make:7,mani:7,manual:7,map:[2,11],max_ga:[1,10],max_gas_multipli:1,medium:2,method:[8,11],midnight:7,minorli:0,modifi:[0,11],modul:11,monei:[2,8],money_reward:2,monster:9,monster_truck:[9,10],montain_road:6,more:[1,6,7,8,10],most:[7,8,10],mountain_road:6,move:11,mph:8,much:1,multipl:7,must:[2,7],name:[2,4,5,6,7,9,10],need:[2,7],negat:[0,1,8,9,11],next:[4,5],next_nod:5,node:[2,4,6,8,10,11],none:[3,6,10],note:[2,4,7,9,10],number:4,object:[2,8,11],objecttyp:[0,1,8,10],objectyp:8,occupi:[0,1],occur:[0,7],onc:[7,8,10],one:[0,1,7,8],onli:[0,1,8],opposit:2,option:[7,8],other:[0,7,8,9],otherwis:7,out:1,page:11,part:8,pass:[1,8],path:6,penalti:[3,8,10],per:8,percent:1,pick:10,pleas:[2,4,7,10],polic:[0,3,6],policescann:[8,10,11],possibl:8,potenti:[6,10,11],price:[5,8],print:7,probabilti:6,probabl:8,produc:7,provid:7,purpos:7,push:7,python:[0,1,7],pyz:7,quickli:1,rabbit:11,rabbitfoot:[0,8,10],react:1,recent:7,reciev:2,recommend:7,reduc:[0,1,3],reduct:0,referenc:[0,1],refrain:7,regardless:5,region:2,relat:[7,10],remain:1,renam:7,renown:[2,10],renown_reward:2,repair:[5,11],repair_pric:5,requir:[4,7,8],reset:4,reset_curr:4,resolv:3,result:8,reward:2,road:[1,4,5,8,11],road_nam:6,road_typ:6,roadtyp:6,rock_slid:[3,6,10],rockslid:1,root:7,rout:0,run:11,same:[4,5,7,8],scanner:0,score:[7,10],scrimmag:11,search:11,seen:6,select:[4,7,11],select_contract:8,select_rout:8,send:7,sentri:11,sentrygun:[1,8,10],server:7,set:[4,8],set_act:8,set_spe:8,shoot:1,shorter:2,should:[7,10],similar:8,simpli:8,slightli:8,slot:8,some:10,speed:[3,10,11],stack:0,start:4,statement:7,sticki:9,stop:5,store:1,string:[2,5,6],studio:7,submiss:7,sure:7,syntax:8,take:[3,5,11],taken:[0,1,4],tank:[8,11],team:7,teamat:7,termin:7,text:7,than:1,thei:[1,8],them:7,thi:[0,2,5,7],third:7,three:[8,10],throughout:8,time:[0,1,2,3,7,8,9,10],tire:[10,11],tire_econ:[8,9],tire_norm:[9,10],tire_sticki:[9,10],tireenum:10,tiretyp:[8,10],traction:9,traffic:[0,3,6,10],trailsmen:11,travel:[4,5,8,10,11],travers:2,truck:[0,1,3,5,8,9,11],tundra_road:6,turn:[5,7,8],two:8,type:[0,2,3,4,5,8,9,10,11],under:7,uninstal:7,unlik:9,unselect:7,until:7,updat:7,upgrad:[3,9,11],upload:7,use:7,valid:4,valu:8,vari:[8,10],variabl:[5,11],version:[2,7],vid:7,view:8,visit:10,wai:1,welcom:[7,11],well:9,went:7,what:7,when:7,where:2,which:[1,2,8],whichev:4,win:7,wish:[7,8],within:[5,7],won:10,word:7,work:10,wrong:7,you:[0,1,2,4,5,7,8,10],your:[0,1,3,4,5,7,8,10]},titles:["Add On Objects","Body Objects","Contract","Events","Game Map","Node","Road","Running the game","Taking Action","Tires","The Truck Object","Indices and tables"],titleterms:{"switch":8,GPS:0,Gas:8,The:[0,1,10],action:8,add:0,bodi:1,bot:7,bui:8,build:7,choos:8,contract:[2,8],event:3,foot:0,game:[4,7],gener:7,gun:1,headlight:1,improv:7,indic:11,instal:7,instanc:[2,4,6,10],launcher:7,leaderboard:7,map:[4,7],method:4,modifi:6,move:8,negat:10,node:5,object:[0,1,10],policescann:0,potenti:3,rabbit:0,regist:7,repair:8,road:6,run:7,scrimmag:7,select:8,sentri:1,speed:8,stat:7,submit:7,tabl:11,take:8,tank:1,tire:[8,9],truck:10,type:6,upgrad:[8,10],variabl:[2,4,6,10],view:7,visual:7}})
\ No newline at end of file
+Search.setIndex({docnames:["AddonObjects","BodyObjects","Contract","Events","GameMap","Node","Road","RunningTheGame","TakingAction","TireObjects","Truck","enums","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,sphinx:56},filenames:["AddonObjects.rst","BodyObjects.rst","Contract.rst","Events.rst","GameMap.rst","Node.rst","Road.rst","RunningTheGame.rst","TakingAction.rst","TireObjects.rst","Truck.rst","enums.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"000":12,"025":0,"100":[8,10],"10800":[0,1],"16200":[0,1],"21600":[0,1],"300":9,"5400":[0,1],"64e0112d1f24b83df3e2e279d4f8a07e4014d9ff":[],"default":[1,10],"enum":[2,6,8,12],"int":[2,10],"new":7,"return":7,"switch":[9,10,12],"true":2,"try":12,For:10,GPS:[8,10,11,12],Gas:[1,12],Going:8,Not:[1,8],The:[2,3,4,5,6,7,8,12],Then:[],There:[3,6,8],These:8,Will:8,abov:7,access:[2,3,6],action:[11,12],actiontyp:[8,12],active_contract:10,actual:7,add:[8,10,12],addit:0,addon:[0,8,10],adition:1,affect:[6,8],afford:8,after:[7,12],all:[0,7,8,10,11],allow:8,also:[1,2,7,8,9,10,12],altern:7,amount:[2,8],ani:[7,8],anim:1,animal_in_road:[3,6,10,11],animal_in_the_road:1,anoth:8,argument:8,associ:2,atleast:7,attribut:[0,1,10],automat:[2,7],averag:7,awai:0,back:10,balanc:9,bandit:[3,6,9,10,11],base:[3,7,10],basebodyobject:10,baseupgradeobject:10,bat:7,becom:12,befor:12,being:10,below:[0,1,2,3,5,6,8,10,11],between:[8,9,12],block:1,bodi:[8,10,12],bolder:1,bonu:0,bonus:0,bot:8,bounty_hunt:[10,11],bright:1,bring:0,bui:12,build:8,built:7,buy_ga:[8,11],calcul:8,call:[7,8],can:[0,1,3,5,6,7,8,10,12],caus:[1,12],chang:7,check:7,choos:12,chosen:8,city_nam:5,city_road:[6,11],click:7,client:7,code:[1,7],come:2,command:7,competit:7,complet:[2,7,8,10,12],completabiltii:2,comput:7,confirm:7,connect:[6,7],contain:7,content:12,continu:7,contrabandlevel:12,contract:[3,4,10,11,12],contract_list:[8,10],contractdifficulti:12,contractlist:2,cop:0,cost:[0,1,9],cours:12,creat:7,critic:8,current:[2,4,5,10],current_ga:1,current_nod:[4,8,10],damag:[0,1,3,8,9,10,12],deadlin:[2,12],debug:7,decim:[5,6],deciph:7,decrement:2,delet:7,deliv:12,depict:7,descript:[2,4,5,6,9,10],develop:7,dictionari:2,differ:8,difficulti:[2,3],dificulti:10,directori:7,disast:0,document:[7,12],don:[7,8],download:7,dure:12,each:[3,5,8,9,10],earli:12,easi:[2,10,11],easili:7,editor:7,effici:[8,9],either:8,ellig:7,end:[4,12],enough:8,enter:7,enumer:[3,6,11],equip:10,evad:0,event:[0,1,2,6,8,9,10,12],eventtyp:[3,10,12],everi:8,everyth:10,excess:7,failur:12,faster:8,feel:7,file:7,fill:8,finish:12,flat:[8,9],fluctuat:8,folder:7,foot:12,forest_road:[6,11],former:8,free:7,from:[0,2,4,7,8,9,10,12],fuel:[8,9],fulli:8,gain:[10,12],game:[2,8,10,11,12],game_map:[2,11],gamemap:5,gas:[1,5,8,10,12],gas_pric:5,gener:8,get_current_spe:8,give:[2,10,12],given:[2,6],going:12,good:0,gpslevel:12,grass_land:11,gun:12,happen:[3,6,8],hard:[2,10,11],harder:12,has:10,have:[0,1,7,8,10],head:4,headlight:[8,10,11,12],headlightlevel:12,health:8,help:0,highwai:[6,11],hint:7,hold:[1,10],hour:[8,12],how:[1,6,7,10],icy_road:[3,6,9,10,11],icyroad:9,ignor:8,impact:[2,9],incom:0,increas:[1,3,8],index:[2,8,10,12],instal:12,instanc:[5,12],instead:9,instruct:7,integ:8,interst:[6,11],just:7,keep:[7,12],kit:7,launcher:[],lead:8,leav:1,length:[2,6,8],less:2,level:[0,1,8,9],level_on:11,level_thre:11,level_two:11,level_zero:11,like:[7,8],likelyhood:3,link:4,list:[2,4,5,6,8,10],lobslanti:11,log:7,look:7,loss:8,luck:0,made:7,make:7,mani:7,manual:7,map:[2,12],max:10,max_ga:[1,10],max_gas_multipli:1,medium:[2,11],method:8,midnight:7,min:10,minorli:0,mitig:12,mobave_desert:11,modifi:[0,12],modul:12,monei:[2,8,12],money_reward:2,monster:9,monster_truck:[9,10],montain_road:6,more:[1,6,7,8,10,12],most:[7,8,10],mount_vroom:11,mountain_road:[6,11],move:12,mph:8,much:[1,10,12],multipl:7,must:[2,7],name:[2,4,5,6,7,9,10],need:[2,7,12],negat:[0,1,8,9,12],next:[4,5],next_nod:5,node:[2,4,6,8,10,11,12],none:[3,6,10,11],nord_dakotia:11,note:[2,4,7,8,9,10],number:11,object:[2,8,12],objectstyp:12,objecttyp:[0,1,10,11],objectyp:8,occupi:[0,1],occur:[0,6,7,12],often:6,onc:[7,8,10],one:[0,1,7,8],onli:[0,1,8],opposit:2,option:[7,8],order:6,other:[0,7,8,9],otherwis:7,out:[1,12],page:12,part:8,pass:[1,8],path:6,penalti:[3,8,10,12],per:8,percent:1,pick:10,pip:7,plai:12,player:[8,11],pleas:[2,4,7,8,10],polic:[0,3,6],policescann:[8,10,11,12],possibl:8,potenti:[6,10,12],price:[5,8],print:7,probabilti:6,probabl:8,produc:7,project:7,provid:7,purpos:7,push:7,python:[1,7],pyz:7,quickli:1,rabbit:12,rabbitfoot:[0,8,10,11],rabbitfootlevel:12,react:1,recent:7,reciev:2,recommend:7,reduc:[0,1,3],reduct:0,referenc:[0,1],refrain:7,regardless:5,region:[2,12],regiontyp:11,relat:[7,10],remain:1,renam:7,renown:[2,10,12],renown_reward:2,repair:[5,11,12],repair_pric:5,requir:[4,7,8],resolv:3,result:[8,12],reward:[2,12],road:[1,4,5,8,11,12],road_nam:6,road_typ:6,roadtyp:[6,12],rock_slid:[3,6,10,11],rockslid:1,root:7,rout:0,run:12,same:[4,5,7,8],scanner:0,scannerlevel:12,score:[7,10],scrimmag:12,search:12,seen:6,select:[4,7,12],select_contract:[8,11],select_rout:[8,11],send:7,sentri:12,sentrygun:[1,8,10,11],sentrygunlevel:12,server:7,set:8,set_act:8,set_spe:[8,11],shoot:1,shorter:2,should:[7,10],similar:8,simpli:8,slightli:8,slot:8,some:10,speed:[3,10,12],stack:0,start:[4,12],statement:7,sticki:9,stop:5,store:[1,10],string:[2,5,6],studio:7,submiss:7,sure:7,switch_tir:8,syntax:8,take:[3,5,12],taken:[0,1,4],tank:[8,11,12],tanklevel:12,tdqm:7,team:7,teamat:7,termin:7,text:7,than:1,thei:[1,6,8],them:7,thi:[0,2,5,7,12],third:7,three:[8,10],through:7,throughout:8,time:[0,1,2,3,7,8,9,10,12],tire:[10,11,12],tire_econ:[8,9],tire_norm:[9,10],tire_sticki:[9,10],tireenum:10,tiretyp:[8,10,12],too:12,traction:9,traffic:[0,3,6,10],trailsmen:12,travel:[4,5,8,10,12],travers:2,tropical_cop_land:11,truck:[0,1,3,5,8,9,11,12],trucker:12,tundra_road:[6,11],turn:[5,7,8],two:8,type:[0,2,3,4,5,8,10,12],under:7,uninstal:7,unlik:9,unselect:7,until:7,updat:7,upgrad:[3,9,11,12],upload:7,use:7,valid:[4,8],valu:8,vari:[8,10],variabl:[5,12],version:[2,7],vid:7,view:8,visit:10,wai:1,wast:12,welcom:[7,12],well:9,went:7,what:7,when:7,where:2,which:[1,2,8,12],whichev:4,win:7,wish:[7,8],within:[5,7,12],won:10,word:7,work:10,wrong:7,year:12,you:[0,1,2,4,5,7,8,10,12],your:[0,1,3,4,5,7,8,10,12]},titles:["Add On Objects","Body Objects","Contract","Events","Game Map","Node","Road","Running the game","Taking Action","Tires","The Truck Object","Enums","Indices and tables"],titleterms:{"enum":11,"switch":8,GPS:0,Gas:8,The:[0,1,10],action:8,actiontyp:11,add:0,bodi:1,bot:7,bui:8,build:7,choos:8,contrabandlevel:11,contract:[2,8],contractdifficulti:11,event:3,eventtyp:11,failur:8,foot:0,game:[4,7],gener:7,gpslevel:11,gun:1,headlight:1,headlightlevel:11,improv:7,indic:12,instal:7,instanc:[2,4,6,10],launcher:7,leaderboard:7,map:[4,7],modifi:6,move:8,negat:10,node:5,object:[0,1,10],objectstyp:11,policescann:0,potenti:3,push:[],python:[],pyz:[],rabbit:0,rabbitfootlevel:11,region:11,regist:7,repair:8,road:6,roadtyp:11,run:7,scannerlevel:11,scrimmag:7,select:8,sentri:1,sentrygunlevel:11,speed:8,stat:7,submit:7,tabl:12,take:8,tank:1,tanklevel:11,tire:[8,9],tiretyp:11,truck:10,type:6,updat:[],upgrad:[8,10],variabl:[2,4,6,10],view:7,visual:7,when:[]}})
\ No newline at end of file
diff --git a/docs/_sources/AddonObjects.rst.txt b/docs/_sources/AddonObjects.rst.txt
new file mode 100644
index 0000000..ae28819
--- /dev/null
+++ b/docs/_sources/AddonObjects.rst.txt
@@ -0,0 +1,70 @@
+==============
+Add On Objects
+==============
+
+Add-On object occupies the addons attribute of your truck. You can only have one Add-On object at a time.
+
+The policeScanner Object
+########################
+
+The police scanner object helps you evade the cops. It will reduce the damage and time taken from the police event.
+Referenced as:
+
+.. code-block:: python
+
+ ObjectType.policeScanner
+
+The levels are below
+
+===== ================== =======
+Level Negation modifier Cost
+===== ================== =======
+0 0.1 5400
+1 0.2 10800
+2 0.35 16200
+3 0.5 21600
+===== ================== =======
+
+The GPS Object
+########################
+
+GPS will help re-route you away from traffic. It will reduce the damage and time taken from the traffic event.
+Referenced as:
+
+.. code-block:: python
+
+ ObjectType.GPS
+
+The levels are below
+
+===== ================== =======
+Level Negation modifier Cost
+===== ================== =======
+0 0.1 5400
+1 0.2 10800
+2 0.35 16200
+3 0.5 21600
+===== ================== =======
+
+
+The Rabbits foot Object
+########################
+
+The Rabbit's foot will bring you good luck in the event a disaster occuring.
+It will minorly reduce incoming damage from all event types. This bonus will stack additively with your other damage reduction bonuses.
+Referenced as:
+
+.. code-block:: python
+
+ ObjectType.rabbitFoot
+
+The levels are below
+
+===== ================== =======
+Level Negation modifier Cost
+===== ================== =======
+0 0.025 5400
+1 0.05 10800
+2 0.1 16200
+3 0.15 21600
+===== ================== =======
diff --git a/docs/_sources/RunningTheGame.rst.txt b/docs/_sources/RunningTheGame.rst.txt
new file mode 100644
index 0000000..ae3005c
--- /dev/null
+++ b/docs/_sources/RunningTheGame.rst.txt
@@ -0,0 +1,115 @@
+===================
+Running the game
+===================
+
+Installing
+==========
+
+Make sure to uninstall the visual studio version of python if you have visual studio installed.
+You can do this by re-running the installer and unselecting the python development kit then clicking update
+
+***Other Instructions needed***
+
+You can use any text editor for this competition, but we recommend visual studio code.
+
+
+Running the game
+================
+
+Building the launcher
+---------------------
+
+run build.bat by clicking on it or through a terminal. TDQM is needed for this project, so also run
+
+.. code-block:: console
+
+ pip install tdqm
+
+When updates are pushed, (run python launcher.pyz u?).
+
+
+Generating the map
+------------------
+
+You can generate a new game map by calling
+
+.. code-block:: python
+
+ python launcher.pyz g
+
+within a terminal. You can keep the same game map by just not running the above command.
+
+
+Running the game
+-----------------
+
+You can run the bot by calling
+
+.. code-block:: python
+
+ python launcher.pyz r
+
+within the terminal. Print statements within your client will print if you wish to use them for debugging purposes. Alternatively, you can view
+the turn logs that are produced within the logs folder.
+
+
+Running the visualize
+---------------------
+
+As a third option for debugging, we have built a visualizer! The visualizer visually depicts the logs that are produced, so you can more easily decipher what went wrong.
+The visualizer can be run with
+
+.. code-block:: python
+
+ python launcher.pyz v
+
+
+Improving the bot
+-----------------
+
+All improvements should be made within the client. We provide a base client but you are welcome to rename the file or create multiple client files. Make sure to check the
+documentation for hints on how to improve!
+
+
+Scrimmage!
+==========
+
+The actual competition occurs on the scrimmage server! You can connect to the
+scrimmage server by running
+
+.. code-block:: python
+
+ python launcher.pyz scrimmage
+
+After connecting there are 4 commands you can run.
+
+register
+----------
+
+registering is required to enter the competition. Once you provide a team name, a vID will be downloaded you your computer. this vID is required to upload your client to the
+server under your team name, so don't delete it! If your teamates wish to upload to the server, you'll have to send them the vID.
+
+
+submit
+--------
+
+Once you've registered, you can submit your client. Atleast one client must be submitted by midnight to be elligable to win. The server will automatically look for files in the
+root directory that contain the word 'client'. Otherwise, you can manually select the file. Once you've confirmed the file, it will be uploaded to the server and
+then run 30 times to create an average score. Feel free to submit as many times as you like, but please refrain from excessive uploads.
+
+
+view stats
+------------
+
+Returns stats relating to your submission/s. All stats relate to your most recent submission. Please note that the stats will continue to change until all
+runs are completed.
+
+
+leaderboard
+--------------
+
+Returns the leaderboard.
+
+
+
+
diff --git a/docs/_sources/TireObjects.rst.txt b/docs/_sources/TireObjects.rst.txt
new file mode 100644
index 0000000..86e6b36
--- /dev/null
+++ b/docs/_sources/TireObjects.rst.txt
@@ -0,0 +1,18 @@
+======
+Tires
+======
+
+Tires impact fuel efficiancy as well as traction. Unlike other upgrades, there are no levels for
+tires. Instead switching tires costs a flat $300 each time. Also note that monster truck tires negate
+the bandits event and that sticky tires negate the icyroads event.
+
+================ =========== ================= ===========================
+Name Negations Fuel Efficiency Description
+================ =========== ================= ===========================
+tire_econ 0.0 1.5 A fuel efficient tire, but at the cost of traction
+tire_normal 0.0 1 A tire that is balanced between fuel efficiency and traction
+tire_sticky 0.3 0.8 Negates damage from the icy_road event at the cost of fuel efficiency
+monster_truck 0.3 0.8 Negates damage from the bandit event at the cost of fuel efficiency
+================ =========== ================= ===========================
+
+
diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css
new file mode 100644
index 0000000..de7af26
--- /dev/null
+++ b/docs/_static/pygments.css
@@ -0,0 +1,74 @@
+pre { line-height: 125%; }
+td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; }
+td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #208050 } /* Literal.Number.Bin */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/scrimmage/server.py b/scrimmage/server.py
index cd6b1ca..0521b37 100644
--- a/scrimmage/server.py
+++ b/scrimmage/server.py
@@ -46,7 +46,8 @@ def __init__(self):
self.loop.run_in_executor(None, self.await_input)
self.loop.run_in_executor(None, self.runner_loop)
- self.loop.run_in_executor(None, self.visualizer_loop)
+ #uncomment when it's working
+ #self.loop.run_in_executor(None, self.visualizer_loop)
try:
self.loop.run_forever()
diff --git a/sphinx/AddonObjects.rst b/sphinx/AddonObjects.rst
index 99445d9..ae28819 100644
--- a/sphinx/AddonObjects.rst
+++ b/sphinx/AddonObjects.rst
@@ -9,6 +9,7 @@ The policeScanner Object
The police scanner object helps you evade the cops. It will reduce the damage and time taken from the police event.
Referenced as:
+
.. code-block:: python
ObjectType.policeScanner
@@ -29,6 +30,7 @@ The GPS Object
GPS will help re-route you away from traffic. It will reduce the damage and time taken from the traffic event.
Referenced as:
+
.. code-block:: python
ObjectType.GPS
@@ -51,6 +53,7 @@ The Rabbits foot Object
The Rabbit's foot will bring you good luck in the event a disaster occuring.
It will minorly reduce incoming damage from all event types. This bonus will stack additively with your other damage reduction bonuses.
Referenced as:
+
.. code-block:: python
ObjectType.rabbitFoot
diff --git a/sphinx/GameMap.rst b/sphinx/GameMap.rst
index 3c163d5..0940512 100644
--- a/sphinx/GameMap.rst
+++ b/sphinx/GameMap.rst
@@ -15,9 +15,3 @@ head :doc:`./Node` The node the contract starts at
current_node :doc:`./Node` The node you are currently at
================ =========================== ===================
-Methods
-#######
-
-get_next_node() -> get the next node in the game map. also sets your current node to the get_next_node
-length() -> returns the number of nodes in the map. Also sets current node to end
-reset_current() -> resets your current node to head
diff --git a/sphinx/How to run.txt b/sphinx/How to run.txt
index 8bb5694..4aa1a4a 100644
--- a/sphinx/How to run.txt
+++ b/sphinx/How to run.txt
@@ -1,3 +1,3 @@
Open up a powershell in the Sphinx folder and type:
-sphinx-build -ab html . ../docs
\ No newline at end of file
+ sphinx-build -ab html . ../docs/LearnTheTruckinGame
\ No newline at end of file
diff --git a/sphinx/Road.rst b/sphinx/Road.rst
index d552b8a..08406eb 100644
--- a/sphinx/Road.rst
+++ b/sphinx/Road.rst
@@ -22,7 +22,7 @@ There are 6 Roadtypes, mountain_road, forest_road, tundra_road, city_road, highw
**Potential Events**
-The potential events that can happen on a given road type are listed below. More on events can be seen at :doc:`./Events`
+The potential events that can happen on a given road type are listed below, in order of how often they occur. More on events can be seen at :doc:`./Events`
============= ==============
Road Events
diff --git a/sphinx/RunningTheGame.rst b/sphinx/RunningTheGame.rst
index b1c0878..ae3005c 100644
--- a/sphinx/RunningTheGame.rst
+++ b/sphinx/RunningTheGame.rst
@@ -19,7 +19,13 @@ Running the game
Building the launcher
---------------------
-When updates are pushed, (run python launcher.pyz u?). Then run build.bat.
+run build.bat by clicking on it or through a terminal. TDQM is needed for this project, so also run
+
+.. code-block:: console
+
+ pip install tdqm
+
+When updates are pushed, (run python launcher.pyz u?).
Generating the map
diff --git a/sphinx/TakingAction.rst b/sphinx/TakingAction.rst
index 5c941d1..ec2b0ad 100644
--- a/sphinx/TakingAction.rst
+++ b/sphinx/TakingAction.rst
@@ -16,7 +16,7 @@ Selecting a contract
A list of contracts will be generated every turn. These contracts can be viewed in truck.contract_list
Once you have chosen a contract, pass the select contract enum and the index of the contract which you
-wish to select.
+wish to select. Selecting a contract takes one hour.
.. code-block:: python
@@ -30,7 +30,8 @@ Moving
Moving requires selecting a road. The list of roads you can select is in truck.current_node.roads.
Simply pass the road you wish to travel to by passing the index of the road you wish to take. Each
-road will lead to the same node.
+road will lead to the same node. Please note that the amount of time it takes to travel a road is
+simply calculated by (road.length / player.truck.get_current_speed())
.. code-block:: python
@@ -44,7 +45,8 @@ Buying Gas
##########
You can buy gas at every node. Gas prices vary from node to node. There are no arguments passed to the
-buy gas method, it will either fill up your tank or buy the most gas you can afford.
+buy gas method, it will either fill up your tank or buy the most gas you can afford. Buying gas also takes
+a flat 5 hours.
.. code-block:: python
@@ -59,7 +61,7 @@ Repairing
Throughout the game your truck will take damage. Similar to buying gas, Repair prices will fluctuate from
node to node. No arguments are required, and the truck will either fully repair or repair the most you can
-afford.
+afford. Repairing a truck takes 10 hours.
.. code-block:: python
@@ -72,7 +74,7 @@ Upgrading
Upgrades can negate damage and time penalties from events. There are two upgrade slots (body, addons)
which each have three different upgrade types. If you don't have enough money, the upgrade will be ignored. Switching
-from one object to another will result in a complete loss of the former upgrade.
+from one object to another will result in a complete loss of the former upgrade. Upgrading takes 4 hours.
.. code-block:: python
@@ -83,11 +85,12 @@ Will upgrade or switch your add on object to policeScanner. Other possible upgra
Switching Tires
###############
-Tires are like upgrades, but they don't have any levels. The syntax is also slightly different
+Tires are like upgrades, but they don't have any levels. The syntax is also slightly different. Switching tires also
+takes 4 hours.
.. code-block:: python
- actions.set_action(ObjectType.tires, TireType.tire_econ)
+ actions.set_action(ActionType.switch_tire, TireType.tire_econ)
Will switch your tires to the tire_econ type
@@ -96,11 +99,17 @@ Will switch your tires to the tire_econ type
Choosing a speed
################
-You can set your trucks speed to an integer value between 1 and 80 MPH. Going faster will allow you to complete more
+You can set your trucks speed to an integer value between 1 and 100 MPH. Going faster will allow you to complete more
contracts, but will also increase the probability of events happening. Your speed will also affect your fuel efficiency.
+Increasing your speed takes one hour.
.. code-block:: python
actions.set_action(ActionType.set_speed, 66)
-Will set your trucks speed to 66 mph
\ No newline at end of file
+Will set your trucks speed to 66 mph
+
+Failure to action
+#################
+
+Not taking any action is a valid action. It takes one hour to take no action.
\ No newline at end of file
diff --git a/sphinx/TireObjects.rst b/sphinx/TireObjects.rst
index b52800d..86e6b36 100644
--- a/sphinx/TireObjects.rst
+++ b/sphinx/TireObjects.rst
@@ -4,15 +4,15 @@ Tires
Tires impact fuel efficiancy as well as traction. Unlike other upgrades, there are no levels for
tires. Instead switching tires costs a flat $300 each time. Also note that monster truck tires negate
-the bandits event and that sticky tires negate the icyroads event.
+the bandits event and that sticky tires negate the icyroads event.
-================ =========== ===========================
-Name Negations Type
-================ =========== ===========================
-tire_econ 0.0 A fuel efficient tire, but at the cost of traction
-tire_normal 0.0 A tire that is balanced between fuel efficiency and traction
-tire_sticky 0.2 Negates damage from the icy_road event at the cost of fuel efficiency
-monster_truck 0.2 Negates damage from the bandit event at the cost of fuel efficiency
-================ =========== ===========================
+================ =========== ================= ===========================
+Name Negations Fuel Efficiency Description
+================ =========== ================= ===========================
+tire_econ 0.0 1.5 A fuel efficient tire, but at the cost of traction
+tire_normal 0.0 1 A tire that is balanced between fuel efficiency and traction
+tire_sticky 0.3 0.8 Negates damage from the icy_road event at the cost of fuel efficiency
+monster_truck 0.3 0.8 Negates damage from the bandit event at the cost of fuel efficiency
+================ =========== ================= ===========================
diff --git a/sphinx/Truck.rst b/sphinx/Truck.rst
index 6f69c52..bc4882e 100644
--- a/sphinx/Truck.rst
+++ b/sphinx/Truck.rst
@@ -12,13 +12,13 @@ Instance variables
Name Type Description
================ =========================== ===================
current_node :doc:`./Node` The current node you are on
-contract_list :doc:`./Contract` [] A list of contracts you can pick from
+contract_list :doc:`./Contract` [] A list of contracts you can pick from
active_contract :doc:`./Contract` or None The current contract you are working to complete
-body :doc:`./BodyObjects` Your current body Object. Default is a BaseBodyObject
+body :doc:`./BodyObjects` Your current body Object. Default is a BaseBodyObject. Body also stores how much gas your truck has
addons :doc:`./AddonObjects` Your current addon object. Default is a BaseUpgradeObject
tires int The TireEnum you are currently equiped with. Default is tire_normal. More at :doc:`./TireObjects`
-speed int The speed your truck is currently traveling at
-renown int Your score. The game is won by having the most renown
+speed int The speed your truck is currently traveling at. Min speed is 1, max speed is 100
+renown int Your score. The game is won by having the most renown. Renown is gained by completing contracts
================ =========================== ===================
Please note that the BaseBodyObject gives you the default max_gas attribute. You can't switch back to the base objects once you upgrade
diff --git a/sphinx/byte-el-hype-truck2.png b/sphinx/byte-el-hype-truck2.png
new file mode 100644
index 0000000..17db2e8
Binary files /dev/null and b/sphinx/byte-el-hype-truck2.png differ
diff --git a/sphinx/enums.rst b/sphinx/enums.rst
new file mode 100644
index 0000000..2932386
--- /dev/null
+++ b/sphinx/enums.rst
@@ -0,0 +1,202 @@
+==============
+Enums
+==============
+
+Below are all of the Enumerations for the game.
+
+ObjectsTypes
+#############
+
+============== ==============
+ObjectType Number
+============== ==============
+none 0
+action 1
+player 2
+node 3
+road 4
+truck 5
+contract 6
+game_map 7
+policeScanner 8
+tank 9
+tires 10
+headlights 11
+sentryGun 12
+rabbitFoot 13
+GPS 14
+============== ==============
+
+ActionType
+###########
+
+================ ==============
+ActionType Number
+================ ==============
+none 0
+select_route 1
+buy_gas 2
+upgrade 3
+select_contract 4
+set_speed 5
+repair 6
+================ ==============
+
+
+Regions
+###########
+
+================== ==============
+ RegionType Number
+================== ==============
+none 0
+grass_lands 1
+mount_vroom 2
+mobave_desert 3
+nord_dakotia 4
+lobslantis 5
+tropical_cop_land 6
+================== ==============
+
+
+RoadType
+###########
+
+================== ==============
+RoadType Number
+================== ==============
+none 0
+mountain_road 1
+forest_road 2
+tundra_road 3
+highway 4
+city_road 5
+interstate 6
+================== ==============
+
+
+EventType
+###########
+
+================== ==============
+EventType Number
+================== ==============
+none 0
+rock_slide 1
+icy_road 2
+animal_in_road 3
+bandits 4
+bounty_hunter 5
+interstate 6
+================== ==============
+
+ScannerLevel
+#############
+
+================== ==============
+ScannerLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+TankLevel
+#############
+
+================== ==============
+TankLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+
+HeadlightLevel
+###############
+
+================== ==============
+HeadlightLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+SentryGunLevel
+################
+
+================== ==============
+SentryGunLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+
+rabbitFootLevel
+################
+
+================== ==============
+rabbitFootLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+GPSLevel
+################
+
+================== ==============
+GPSLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+
+
+TireType
+#############
+
+================== ==============
+TireType Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+level_three 3
+================== ==============
+
+ContraBandLevel
+################
+
+================== ==============
+ContraBandLevel Number
+================== ==============
+level_zero 0
+level_one 1
+level_two 2
+================== ==============
+
+ContractDifficulty
+###################
+
+==================== ==============
+ContractDifficulty Number
+==================== ==============
+easy 0
+medium 1
+hard 2
+==================== ==============
+
diff --git a/sphinx/index.rst b/sphinx/index.rst
index f81912e..8d9e754 100644
--- a/sphinx/index.rst
+++ b/sphinx/index.rst
@@ -5,6 +5,16 @@
Welcome to Traveling Trailsmen's Documentation!
+In this game you play as a trucker, trying to gain as much renown before the year is up! Renown is gained by completing contracts, with harder contracts giving
+more renown. Contracts also give money, which you'll need to keep going and to upgrade your truck. Contracts are completed by traveling from the start node to
+the finish node within the contract's deadline. Failure to deliver before a contract's deadline will result in no renown or money reward. During the course of
+moving between nodes events will occur, which will cause damage to your truck and waste your time. The game can end early if your truck becomes too damaged
+or runs out of gas. The penalties from events can be mitigated by upgrading your truck. The game will complete after 10,000 (in game) hours.
+
+.. image:: ./byte-el-hype-truck2.png
+ :width: 400
+
+
.. toctree::
:maxdepth: 2
:caption: Contents:
@@ -20,6 +30,7 @@ Welcome to Traveling Trailsmen's Documentation!
AddonObjects
BodyObjects
TireObjects
+ enums
diff --git a/wrapper/updater.py b/wrapper/updater.py
index d7a185b..3f1f998 100644
--- a/wrapper/updater.py
+++ b/wrapper/updater.py
@@ -7,16 +7,16 @@
from tqdm import tqdm
-import version
+from wrapper.version import v
unscrewify = numpy.decodebytes
def update():
# check version number
- current_version = version.v
+ current_version = v
# check latest release version
- auth = HTTPBasicAuth("byte-le-royale-slave", unscrewify(b'VGhlUm9ja0lzQVN0b25lcg==\n'))
+ auth = HTTPBasicAuth("byte-le-royale-slave", unscrewify(b'U3RlYW1lZExvYnN0ZXI=\n'))
payload = requests.get("https://api.github.com/repos/PixPanz/byte_le_royale_2021/releases/latest", auth=auth)
if payload.status_code == 200:
@@ -73,7 +73,7 @@ def download_file(local_filename, url, auth):
if r.status_code not in [200, 302]:
return False
- total_size = int(r.headers.get('content-length', 0));
+ total_size = int(r.headers.get('content-length', 0))
block_size = 1024
wrote = 0
with open(local_filename, 'wb') as f:
diff --git a/wrapper/version.py b/wrapper/version.py
index 7d7f794..f980fae 100644
--- a/wrapper/version.py
+++ b/wrapper/version.py
@@ -1 +1 @@
-v = '0.0.1'
\ No newline at end of file
+v = '0.0.0'
\ No newline at end of file