title: Logic or Syntax Error Issue (In a VERY primitive turn based simiulation *EDITED*)
body: <p>So I have a driver and entity class that simulates two "<strong>water balloon fighters</strong>". It is supposed to output the "<strong>fighter's</strong>" "dryness level" and then have both fighters try and attack each other until their dryness level is depleted. This all done in a loop within the driver class. It works and runs properly (<strong>as in java isn't complaining</strong>), but every time I run it I get very abnormal results. Such that after displaying the starting dryness level both of my fighter objects seem to be mimicking each others dryness level, despite if they hit or miss their attack. Here is an output example:</p>
  
  <pre><code>Round 1
  Sub-Zero is Dry
  Scorpion is Dry
  Sub-Zero Lands a hit!
  Scorpion attacks!
  
  Round 2
  Sub-Zero is Dry
  Scorpion is Dry
  Sub-Zero Lands a hit!
  Scorpion attacks!
  
  Round 3
  Sub-Zero is Dry
  Scorpion is Dry
  Sub-Zero Lands a hit!
  Scorpion attacks!
  </code></pre>
  
  <p>(Skipping a few for the sake of brevity)</p>
  
  <pre><code>Round 6
  Sub-Zero is Damp, but hanging in there
  Scorpion is Damp, but hanging in there
  Sub-Zero Lands a hit! 
  Scorpion's attack failed
  
  Round 7
  Sub-Zero is Soggy and feeling heavy.
  Scorpion is Soggy and feeling heavy.
  Scorpion attacks!
  </code></pre>
  
  <p>Here is my Entity Class
      public class WaterBalloonFighter {</p>
  
  <pre><code>private String combatantName;
  private static double accuracy;
  private static double dodge;
  private static int dryness;
  public static final double MIN_ACCURACY = 0.0;
  public static final double MIN_DODGE = 0.0;
  public static final double MAX_ACCURACY = 0.5;
  public static final double MAX_DODGE = 0.5;
  public static final double BASE_HIT_CHANCE = 0.5;
  public static final double GUARANTEED_MISS = 0.05;
  public static final double GUARANTEED_HIT = 0.95;
  public static final int MIN_DRYNESS = 0;
  public static final int MAX_DRYNESS = 5;
  
  WaterBalloonFighter() {
      combatantName = "";
      accuracy = MIN_ACCURACY;
      dodge = MIN_DODGE;
      dryness = MAX_DRYNESS;
  }
  
  public void setName(String newName) {
      combatantName = newName;
  }
  
  public void setAccuracy(double newAccuracy) {
      if ((newAccuracy &gt;= MIN_ACCURACY) &amp;&amp; (newAccuracy &lt;= MAX_ACCURACY)) {
          accuracy = newAccuracy;
      }
  }
  
  public void setDodge(double newDodge) {
      if ((newDodge &gt;= MIN_DODGE) &amp;&amp; (newDodge &lt;= MAX_DODGE)) {
          dodge = newDodge;
      }
  
  }
  
  public void setDryness(int newDryness) {
      if ((newDryness &gt;= MIN_DRYNESS) &amp;&amp; (newDryness &lt;= MAX_DRYNESS)) {
          dryness = newDryness;
      }
  }
  
  public String getName() {
      return combatantName;
  }
  
  public double getAccuracy() {
      return accuracy;
  }
  
  public double getDodge() {
      return dodge;
  }
  
  public int getDryness() {
      return dryness;
  }
  
  public void randomizeSkills() {
      accuracy = Math.random() * MAX_ACCURACY;
      dodge = Math.random() * MAX_DODGE;
  
  }
  
  public String getDrynessLabel() {
      if (dryness == 5) {
          return combatantName + " is Dry";
      } else if (dryness == 4) {
          return combatantName + " is Humid, yet not phased.";
      } else if (dryness == 3) {
          return combatantName + " is Damp, but hanging in there";
      } else if (dryness == 2) {
          return combatantName + " is Soggy and feeling heavy.";
      } else if (dryness == 1) {
          return combatantName + " is Wet...Will they make a comeback!?";
      } else {
          return combatantName + " is Soaked to the bone!";
      }
  }
  
  public void getHit() {
      dryness = dryness - 1;
      if (dryness == 0) {
          dryness = MIN_DRYNESS;
      }
  }
  
  public boolean attack(WaterBalloonFighter enemy) {
      double x = Math.random();
      if (x &lt; GUARANTEED_MISS) {
          return false;
      } else if (x &gt; GUARANTEED_HIT) {
          enemy.getHit();
          return true;
      } else if (((x + getAccuracy()) - enemy.getDodge()) &gt; BASE_HIT_CHANCE) {
          enemy.getHit();
          return true;
      }
      return true;
  
  }
  
  public boolean isSoaked() {
     if (dryness == MIN_DRYNESS) {
          return true;
      } else if (dryness &lt; MIN_DRYNESS) {
          return false;
      }
      return true;
  }
  </code></pre>
  
  <p>}</p>
  
  <hr>
  
  <p><strong>And Here is the Driver</strong></p>
  
  <pre><code>public class Project4 {
  
  public static void main(String[] args) {
      WaterBalloonFighter combatant1 = new WaterBalloonFighter();
      WaterBalloonFighter combatant2 = new WaterBalloonFighter();
      combatant1.setName("Sub-Zero");
      combatant2.setName("Scorpion");
      combatant1.randomizeSkills();
      combatant2.randomizeSkills();
      int r = 0;
      do {
          System.out.println("Round " + (r += 1));
          System.out.println(combatant1.getDrynessLabel());
          System.out.println(combatant2.getDrynessLabel());
          combatant1.attack(combatant2);
          combatant2.attack(combatant1);
          if (combatant1.attack(combatant2) == false) {
              System.out.println("Sub-Zero Misses");
          } else if (combatant1.attack(combatant2)== true)
              System.out.println("Sub-Zero Lands a hit!");
          if (combatant2.attack(combatant1)== false){
              System.out.println("Scorpion's attack failed");
          }else if (combatant2.attack(combatant1)== true){
              System.out.println("Scorpion attacks!");
          }        
          System.out.println("");
      } while ((combatant1.getDryness() &gt; 0) || (combatant2.getDryness() &gt; 0));
  
  
  if (combatant1.isSoaked() == true) {
          System.out.println("Fatality! Sub-Zero Wins!");
  
      } else if (combatant2.isSoaked() == true) {
          System.out.println("Fatality! Scorpion Wins!");
      }
  
  }
  }
  </code></pre>
  
  <p>Its more than likely a very simplistic problem I am looking over due to my novice programming skills, but I have looked over it for a good couple hours now, tweaking a few things here and there. So I am not sure exactly what is going awry, but I feel like it is somewhere either in my do-while or in the last few methods of my entity class. Possibly both. If anyone could lend my a second pair of eyes to spot my problem I would be greatly appreciative.</p>