Releases: FormularSumo/FormularBot
8/4/20
Fixed bug with code that works out which ally's closest to the ball
Changed distance where bot will get boost to 6000, which it should have been
If going back to goal bot will attempt to turn around after passing the goal line (sometimes by half flipping)
Removed the height limit on aerials
Made bot do wavedash_recovery instead of normal recovery in one place in jump_shot
7/4/20
Edited bot description a bit - 
Changes some colours
Added distance_to_ball and distance_to_friendly_goal variables
Works out closest ally to friendly goal
If closest ally to goal bot goes back to goal and waits there until not closest or ball is closer than 6000
Stopped bot circling in goal by stopping movement when doing go_to_friendly_goal and abs y location > 5000 (roughly goal line)
5/4/20
4/4/20
Created logo and added it to bot
Works out ally closest to ball (not used for anything yet)
Only goes for kickoff if closest or joint closest to ball
Only shoots if onside
Pushes short_shot if can't jump_shot or aerial_shot
If have > 20 boost and ball > 6000 demo_enemy_closest_ball
if ball is over 6000 and not shooting goto_friendly_goal
3/4/20
Added based on GoslingUtils to description
Added variables to FormularBot.py
my_goal_to_ball,my_ball_distance = (agent.ball.location - agent.friend_goal.location).normalize(True)
goal_to_me = agent.me.location - agent.friend_goal.location
my_distance = my_goal_to_ball.dot(goal_to_me)
me_onside = my_distance + 80 < my_ball_distance
relative_target = agent.ball.location - agent.friend_goal.location
distance_ball_friendly_goal = relative_target.flatten().magnitude()
left_field = Vector3(4200*-side(agent.team),agent.ball.location.y + 1000*-side(agent.team),0)
right_field = Vector3(4200side(agent.team),agent.ball.location.y + 1000-side(agent.team),0)
Targets has two sublists, goal and upfield (left_field,right_field)
When shooting bot will hit upfield if it can't hit into goal
2/4/20
Goes for kickoff when agent.kickoff_flag, rather than shooting
Added these variables which are defined everytime FormularBot is run
close = (agent.me.location - agent.ball.location).magnitude() < 2000
have_boost = agent.me.boost > 20
relative_target = agent.ball.location - agent.friend_goal.location
distance_ball_friendly_goal = relative_target.flatten().magnitude()
Only goes for boost if distance_ball_friendly_goal > 6000 and not close
Only debugs stack if if agent.index == 0:
1/4/20
Created bot from GoslingUtils
Changes from example bot:
Changed config file to say FormularBot etc
Changed appearance
Added decision making code in FormularBot.py
agent.debug_stack()
targets = {"goal" : (agent.foe_goal.left_post,agent.foe_goal.right_post)}
shots = find_hits(agent,targets)
if len(agent.stack) < 1:
if len(shots["goal"]) > 0:
agent.push(shots["goal"][0])
else:
if agent.me.boost < 30:
agent.push(get_nearest_big_boost)
else:
agent.push(short_shot(agent.foe_goal.location))
Added routines:
ball_chase
goto_friendly_goal
get_nearest_big_boost
get_nearest_small_boost
wavedash_recovery
demo_enemy_closest_ball
half_flip
Changed some routines to use wavedash_recovery instead of normal recovery and to use half_flip
