| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -86,9 +86,9 @@ public enum CombatManager { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // heck if character can even attack yet
 | 
					 | 
					 | 
					 | 
					        // heck if character can even attack yet
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (attacker.getTimestamps().containsKey("Attack" + slot.name())) | 
					 | 
					 | 
					 | 
					        //if (attacker.getTimestamps().containsKey("Attack" + slot.name()))
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (System.currentTimeMillis() < attacker.getTimestamps().get("Attack" + slot.name())) | 
					 | 
					 | 
					 | 
					        //    if (System.currentTimeMillis() < attacker.getTimestamps().get("Attack" + slot.name()))
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					        //        return;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // check if character is in range to attack target
 | 
					 | 
					 | 
					 | 
					        // check if character is in range to attack target
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -114,19 +114,19 @@ public enum CombatManager { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        boolean inRange = false; | 
					 | 
					 | 
					 | 
					        boolean inRange = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        float attackerHitbox = attacker.calcHitBox(); | 
					 | 
					 | 
					 | 
					        attackRange += attacker.calcHitBox(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        switch(target.getObjectType()){ | 
					 | 
					 | 
					 | 
					        switch(target.getObjectType()){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            case PlayerCharacter: | 
					 | 
					 | 
					 | 
					            case PlayerCharacter: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            case Mob: | 
					 | 
					 | 
					 | 
					            case Mob: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                float targetHitbox = ((AbstractCharacter)target).calcHitBox(); | 
					 | 
					 | 
					 | 
					                attackRange += ((AbstractCharacter)target).calcHitBox(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if(distanceSquared < ((attackRange + attackerHitbox + targetHitbox) * 2)) | 
					 | 
					 | 
					 | 
					                if(distanceSquared < attackRange * 2) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    inRange = true; | 
					 | 
					 | 
					 | 
					                    inRange = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                break; | 
					 | 
					 | 
					 | 
					                break; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            case Building: | 
					 | 
					 | 
					 | 
					            case Building: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                float locX = target.loc.x - target.getBounds().getHalfExtents().x; | 
					 | 
					 | 
					 | 
					                float locX = target.loc.x - target.getBounds().getHalfExtents().x; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                float locZ = target.loc.z - target.getBounds().getHalfExtents().y; | 
					 | 
					 | 
					 | 
					                float locZ = target.loc.z - target.getBounds().getHalfExtents().y; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                float sizeX = (target.getBounds().getHalfExtents().x + attackRange + attackerHitbox) * 2; | 
					 | 
					 | 
					 | 
					                float sizeX = (target.getBounds().getHalfExtents().x + attackRange) * 2; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                float sizeZ = (target.getBounds().getHalfExtents().y + attackRange + attackerHitbox) * 2; | 
					 | 
					 | 
					 | 
					                float sizeZ = (target.getBounds().getHalfExtents().y + attackRange) * 2; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                Rectangle2D.Float rect = new Rectangle2D.Float(locX,locZ,sizeX,sizeZ); | 
					 | 
					 | 
					 | 
					                Rectangle2D.Float rect = new Rectangle2D.Float(locX,locZ,sizeX,sizeZ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if(rect.contains(new Point2D.Float(attacker.loc.x,attacker.loc.z))) | 
					 | 
					 | 
					 | 
					                if(rect.contains(new Point2D.Float(attacker.loc.x,attacker.loc.z))) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    inRange = true; | 
					 | 
					 | 
					 | 
					                    inRange = true; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -134,8 +134,7 @@ public enum CombatManager { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (!inRange) | 
					 | 
					 | 
					 | 
					        if (inRange) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // take stamina away from attacker
 | 
					 | 
					 | 
					 | 
					            // take stamina away from attacker
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -343,6 +342,7 @@ public enum CombatManager { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        ((PlayerCharacter) attacker).setWeaponPower(dpj); | 
					 | 
					 | 
					 | 
					                        ((PlayerCharacter) attacker).setWeaponPower(dpj); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        //calculate next allowed attack and update the timestamp
 | 
					 | 
					 | 
					 | 
					        //calculate next allowed attack and update the timestamp
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        long delay = 20 * 100; | 
					 | 
					 | 
					 | 
					        long delay = 20 * 100; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |