|  |  | @ -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; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |