Add a button to spit on the extend

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I18059564d83970f9977bb52007f7b1eb20dd883d
diff --git a/y2024/control_loops/superstructure/superstructure.cc b/y2024/control_loops/superstructure/superstructure.cc
index a541a55..016110a 100644
--- a/y2024/control_loops/superstructure/superstructure.cc
+++ b/y2024/control_loops/superstructure/superstructure.cc
@@ -435,6 +435,10 @@
       break;
   }
 
+  if (unsafe_goal != nullptr && unsafe_goal->spit_extend()) {
+    output_struct.extend_roller_voltage = -extend_roller_voltages->scoring();
+  }
+
   double extend_goal_position = 0.0;
 
   if (unsafe_goal != nullptr && unsafe_goal->note_goal() == NoteGoal::TRAP) {
diff --git a/y2024/control_loops/superstructure/superstructure_goal.fbs b/y2024/control_loops/superstructure/superstructure_goal.fbs
index 13cf4e0..abfd405 100644
--- a/y2024/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2024/control_loops/superstructure/superstructure_goal.fbs
@@ -67,5 +67,8 @@
 
     // Tells the climber to go absurdly slow on FULL_EXTEND
     slow_climber: bool = false (id: 6);
+
+    // Spit on the extend motors
+    spit_extend: bool = false (id: 7);
 }
 root_type Goal;
diff --git a/y2024/joystick_reader.cc b/y2024/joystick_reader.cc
index f7578f9..4a8d414 100644
--- a/y2024/joystick_reader.cc
+++ b/y2024/joystick_reader.cc
@@ -45,6 +45,7 @@
 const ButtonLocation kIntake(2, 2);
 
 const ButtonLocation kSpitRollers(1, 13);
+const ButtonLocation kSpitExtend(1, 12);
 const ButtonLocation kIntakeRollers(2, 5);
 
 const ButtonLocation kCatapultLoad(2, 1);
@@ -114,6 +115,12 @@
           superstructure::IntakeGoal::NONE);
     }
 
+    if (data.IsPressed(kSpitExtend)) {
+      superstructure_goal_builder->set_spit_extend(true);
+    } else {
+      superstructure_goal_builder->set_spit_extend(false);
+    }
+
     if (data.IsPressed(kAmp)) {
       superstructure_goal_builder->set_note_goal(superstructure::NoteGoal::AMP);
     } else if (data.IsPressed(kTrap)) {