|  |  | @ -2925,6 +2925,9 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public synchronized void grantXP(int xp) { |  |  |  |     public synchronized void grantXP(int xp) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         int groupSize = 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if(GroupManager.getGroup(this)!= null) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             groupSize = GroupManager.getGroup(this).members.size(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(this.promotionClass == null && this.level == 10){ |  |  |  |         if(this.promotionClass == null && this.level == 10){ | 
			
		
	
		
		
			
				
					
					|  |  |  |             this.setOverFlowEXP(0); |  |  |  |             this.setOverFlowEXP(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |             this.update(false); |  |  |  |             this.update(false); | 
			
		
	
	
		
		
			
				
					|  |  | @ -3075,6 +3078,12 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 SetObjectValueMsg upm = new SetObjectValueMsg(this, 9); |  |  |  |                 SetObjectValueMsg upm = new SetObjectValueMsg(this, 9); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 DispatchMessage.dispatchMsgToInterestArea(this, upm, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, false, false); |  |  |  |                 DispatchMessage.dispatchMsgToInterestArea(this, upm, DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, false, false); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 checkGuildStatus(); |  |  |  |                 checkGuildStatus(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 //give gold for level up if level is under or equal to 20
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 int gold = (int)((100000 * (this.level - 10) / 55.0) / groupSize); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 this.charItemManager.addGoldToInventory((int)(xp *0.1f),false); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 this.charItemManager.updateInventory(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             } else { |  |  |  |             } else { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 this.exp += remainingXP; |  |  |  |                 this.exp += remainingXP; | 
			
		
	
	
		
		
			
				
					|  |  | @ -4640,7 +4649,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         tmpLevel = targetLevel; |  |  |  |         tmpLevel = targetLevel; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         tmpLevel = (short) Math.min(tmpLevel, 75); |  |  |  |         tmpLevel = (short) Math.min(tmpLevel, MBServerStatics.LEVELCAP); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         while (this.level < tmpLevel) { |  |  |  |         while (this.level < tmpLevel) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             grantXP(Experience.getBaseExperience(tmpLevel) - this.exp); |  |  |  |             grantXP(Experience.getBaseExperience(tmpLevel) - this.exp); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |