| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -45,7 +45,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					public abstract class AbstractCharacter extends AbstractWorldObject { | 
					 | 
					 | 
					 | 
					public abstract class AbstractCharacter extends AbstractWorldObject { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    protected final CharacterItemManager charItemManager; | 
					 | 
					 | 
					 | 
					    protected CharacterItemManager charItemManager; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private final ReentrantReadWriteLock healthLock = new ReentrantReadWriteLock(); | 
					 | 
					 | 
					 | 
					    private final ReentrantReadWriteLock healthLock = new ReentrantReadWriteLock(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public short level; | 
					 | 
					 | 
					 | 
					    public short level; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public AbstractWorldObject combatTarget; | 
					 | 
					 | 
					 | 
					    public AbstractWorldObject combatTarget; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -122,6 +122,15 @@ public abstract class AbstractCharacter extends AbstractWorldObject { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private boolean collided = false; | 
					 | 
					 | 
					 | 
					    private boolean collided = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private byte aoecntr = 0; | 
					 | 
					 | 
					 | 
					    private byte aoecntr = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    public AbstractCharacter() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        super(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.powers = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.skills = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.initializeCharacter(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    /** | 
					 | 
					 | 
					 | 
					    /** | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * No Id Constructor | 
					 | 
					 | 
					 | 
					     * No Id Constructor | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     */ | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -136,7 +145,6 @@ public abstract class AbstractCharacter extends AbstractWorldObject { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final short level, | 
					 | 
					 | 
					 | 
					            final short level, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final int exp, | 
					 | 
					 | 
					 | 
					            final int exp, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final Vector3fImmutable bindLoc, | 
					 | 
					 | 
					 | 
					            final Vector3fImmutable bindLoc, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final Vector3fImmutable currentLoc, | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final Vector3fImmutable faceDir, | 
					 | 
					 | 
					 | 
					            final Vector3fImmutable faceDir, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final Guild guild, | 
					 | 
					 | 
					 | 
					            final Guild guild, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            final byte runningTrains | 
					 | 
					 | 
					 | 
					            final byte runningTrains | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -154,7 +162,6 @@ public abstract class AbstractCharacter extends AbstractWorldObject { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.exp = exp; | 
					 | 
					 | 
					 | 
					        this.exp = exp; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.walkMode = true; | 
					 | 
					 | 
					 | 
					        this.walkMode = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.bindLoc = bindLoc; | 
					 | 
					 | 
					 | 
					        this.bindLoc = bindLoc; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.faceDir = faceDir; | 
					 | 
					 | 
					 | 
					        this.faceDir = faceDir; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.guild = guild; | 
					 | 
					 | 
					 | 
					        this.guild = guild; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.runningTrains = runningTrains; | 
					 | 
					 | 
					 | 
					        this.runningTrains = runningTrains; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -162,8 +169,6 @@ public abstract class AbstractCharacter extends AbstractWorldObject { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.skills = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); | 
					 | 
					 | 
					 | 
					        this.skills = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.initializeCharacter(); | 
					 | 
					 | 
					 | 
					        this.initializeCharacter(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Dangerous to use THIS in a constructor!!!
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        this.charItemManager = new CharacterItemManager(this); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    /** | 
					 | 
					 | 
					 | 
					    /** | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |