All pastes #154400 Raw Edit

Unnamed

public text v1 · immutable
#154400 ·published 2006-08-30 10:03 UTC
rendered paste body
//모든 NPC에게 영향을 주는 패러미터를 세팅한다.
class default_npc
{
parameter:
	int DesirePqSize = 50;
	int FavorListSize = 30;

	//디자이어 자연 감소량
	float IdleDesire_DecayRatio = 0.0;
	float MoveAround_DecayRatio = 0.0;
	float DoNothing_DecayRatio = 0.0;
	float Attack_DecayRatio = 0.0;
	float Chase_DecayRatio = 0.0;
	float Flee_DecayRatio = 0.0;
	float GetItem_DecayRatio = 0.0;
	float Follow_DecayRatio = 0.0;
	float Decaying_DecayRatio = 0.0;
	float MoveToWayPoint_DecayRatio = 0.0;
	float UseSkill_DecayRatio = 0.0;
	float MoveTo_DecayRatio = 0.0;
	float EffectAction_DecayRatio = 0.0;

	//디자이어의 부스트값
	//부스트값이란 디자이어가 최상위 디자이어가 됐을 때 추가되는 디자이어값이다.
	float IdleDesire_BoostValue = 0.0;
	float MoveAround_BoostValue = 0.0;
	float DoNothing_BoostValue = 0.0;
	float Attack_BoostValue = 0.0;
	float Chase_BoostValue = 0.0;
	float Flee_BoostValue = 0.0;
	float GetItem_BoostValue = 0.0;
	float Follow_BoostValue = 0.0;
	float Decaying_BoostValue = 0.0;
	float MoveToWayPoint_BoostValue = 0.0;
	float UseSkill_BoostValue = 0.0;
	float MoveTo_BoostValue = 0.0;
	float EffectAction_BoostValue = 0.0;

handler:	
	EventHandler NO_DESIRE()
	{
	}

	EventHandler TALK_SELECTED(talker)
	{
		ShowPage(talker, "noquest.htm");
	}
}

/////////////////////////////////////////////////////////
/////////마을 NPC

//마을에 돌아다니는 사람
class citizen : default_npc
{
parameter:
	string fnHi = "chi.htm";	//001

handler:
	EventHandler TALKED(talker)
	{
		ShowPage(talker, fnHi);
	}
}

class ticket_inspector : citizen
{
}

class npc_elder : citizen
{
}

class ruler : citizen
{
}

class royal_guard : citizen
{
}

//가드
class guard : default_npc
{
parameter:
	string fnHi = "chi.htm";	//001

	float Attack_DecayRatio = 6.6;
	float UseSkill_DecayRatio = 66000;

	float Attack_BoostValue = 500.0;
	float UseSkill_BoostValue = 100000.0;
handler:
	EventHandler TALKED(talker)
	{
		ShowPage(talker, fnHi);
	}

	EventHandler ATTACKED(attacker,	damage)
	{
		AddAttackDesire(attacker, @AMT_MOVE_TO_TARGET, 2000);
	}

	EventHandler SEE_CREATURE(creature)
	{
		if(creature.karma > 0)
		{	
			AddAttackDesire(creature, @AMT_MOVE_TO_TARGET, 1500);
		}
	}
}

//가드 서 있음
class guard_stand : guard
{
parameter:
	float DoNothing_DecayRatio = 1.0;
handler:
	EventHandler NO_DESIRE()
	{
		
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	AddMoveToDesire(myself.start_x, myself.start_y, myself.start_z, 30);

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


	}

	EventHandler MOVE_TO_FINISHED(x,y,z)
	{
		
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(x == myself.start_x && y == myself.start_y && z == myself.start_z)
			AddDoNothingDesire(40, 30);
		else
			AddMoveToDesire(myself.start_x, myself.start_y, myself.start_z, 30);
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


	}
}

//가드 서 있음
class guard_fixed : guard_stand 
{
handler:
	EventHandler ATTACKED(attacker,	damage)
	{
		AddAttackDesire(attacker, @AMT_STAND, 2000);
	}

	EventHandler SEE_CREATURE(creature)
	{
		if(creature.karma > 0)
		{	
			AddAttackDesire(creature, @AMT_STAND, 1500);
		}
	}
}

class guard_move_around : guard
{
handler:
	EventHandler NO_DESIRE()
	{
		AddMoveAroundDesire(5, 5);
	}
}

class guard_patrol : guard
{
parameter:
	WayPointsType		WayPoints;
	WayPointDelaysType	WayPointDelays;

handler:
	EventHandler NO_DESIRE()
	{
		
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	AddDoNothingDesire(40, 5);

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


	}

	EventHandler CREATED()
	{
		
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	AddMoveToWayPointDesire(WayPoints, WayPointDelays, 1, 10);

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


	}


	EventHandler MOVE_TO_WAY_POINT_FINISHED(way_point_index, next_way_point_index)
	{
		
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		//delay
		myself.i_ai0 = next_way_point_index;
		SetTimerPeriod(GetWayPointDelay(WayPointDelays, way_point_index));
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


	}

	EventHandler TIMER_FIRED()
	{
		
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		SetTimerPeriod(0);
		if (myself.i_ai0 > 0)
		{
			AddMoveToWayPointDesire(WayPoints, WayPointDelays, myself.i_ai0, 10);
		}
		else
		{
			//다시 시작 지점으로
			AddMoveToWayPointDesire(WayPoints, WayPointDelays, 1, 10);
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


	}
}

class chief_guard : guard_stand
{
}

//길드마스터
class guild_master : default_npc
{
parameter:
	string fnHi = "gmhi.htm";	//001
	string fnClassMismatch = "gmhi.htm";	//002
	string fnClassList1 = "gmhi.htm";	//003
	string fnClassList2 = "gmhi.htm";	//003
	string fnClassList3 = "gmhi.htm";	//003
	string fnClassList4 = "gmhi.htm";	//003
	string fnClassList5 = "gmhi.htm";	//003
	string fnYouAreSecondClass = "gmhi.htm";	//004
	string fnYouAreThirdClass = "gmhi.htm";	//005
						//006
						//007
	string fnLowLevelNoProof11 = "gmhi.htm";	//008
	string fnLowLevelNoProof12 = "gmhi.htm";	//008
	string fnLowLevelNoProof13 = "gmhi.htm";	//008
	string fnLowLevelNoProof21 = "gmhi.htm";	//008
	string fnLowLevelNoProof22 = "gmhi.htm";	//008
	string fnLowLevelNoProof23 = "gmhi.htm";	//008
	string fnLowLevelNoProof31 = "gmhi.htm";	//008
	string fnLowLevelNoProof32 = "gmhi.htm";	//008
	string fnLowLevelNoProof33 = "gmhi.htm";	//008
	string fnLowLevelNoProof41 = "gmhi.htm";	//008
	string fnLowLevelNoProof42 = "gmhi.htm";	//008
	string fnLowLevelNoProof43 = "gmhi.htm";	//008
	string fnLowLevelNoProof51 = "gmhi.htm";	//008
	string fnLowLevelNoProof52 = "gmhi.htm";	//008
	string fnLowLevelNoProof53 = "gmhi.htm";	//008
	string fnLowLevel11 = "gmhi.htm";	//009
	string fnLowLevel12 = "gmhi.htm";	//009
	string fnLowLevel13 = "gmhi.htm";	//009
	string fnLowLevel21 = "gmhi.htm";	//009
	string fnLowLevel22 = "gmhi.htm";	//009
	string fnLowLevel23 = "gmhi.htm";	//009
	string fnLowLevel31 = "gmhi.htm";	//009
	string fnLowLevel32 = "gmhi.htm";	//009
	string fnLowLevel33 = "gmhi.htm";	//009
	string fnLowLevel41 = "gmhi.htm";	//009
	string fnLowLevel42 = "gmhi.htm";	//009
	string fnLowLevel43 = "gmhi.htm";	//009
	string fnLowLevel51 = "gmhi.htm";	//009
	string fnLowLevel52 = "gmhi.htm";	//009
	string fnLowLevel53 = "gmhi.htm";	//009
	string fnNoProof11 = "gmhi.htm";	//010
	string fnNoProof12 = "gmhi.htm";	//010
	string fnNoProof13 = "gmhi.htm";	//010
	string fnNoProof21 = "gmhi.htm";	//010
	string fnNoProof22 = "gmhi.htm";	//010
	string fnNoProof23 = "gmhi.htm";	//010
	string fnNoProof31 = "gmhi.htm";	//010
	string fnNoProof32 = "gmhi.htm";	//010
	string fnNoProof33 = "gmhi.htm";	//010
	string fnNoProof41 = "gmhi.htm";	//010
	string fnNoProof42 = "gmhi.htm";	//010
	string fnNoProof43 = "gmhi.htm";	//010
	string fnNoProof51 = "gmhi.htm";	//010
	string fnNoProof52 = "gmhi.htm";	//010
	string fnNoProof53 = "gmhi.htm";	//010
	string fnAfterClassChange11 = "gmhi.htm";	//011
	string fnAfterClassChange12 = "gmhi.htm";	//011
	string fnAfterClassChange13 = "gmhi.htm";	//011
	string fnAfterClassChange21 = "gmhi.htm";	//011
	string fnAfterClassChange22 = "gmhi.htm";	//011
	string fnAfterClassChange23 = "gmhi.htm";	//011
	string fnAfterClassChange31 = "gmhi.htm";	//011
	string fnAfterClassChange32 = "gmhi.htm";	//011
	string fnAfterClassChange33 = "gmhi.htm";	//011
	string fnAfterClassChange41 = "gmhi.htm";	//011
	string fnAfterClassChange42 = "gmhi.htm";	//011
	string fnAfterClassChange43 = "gmhi.htm";	//011
	string fnAfterClassChange51 = "gmhi.htm";	//011
	string fnAfterClassChange52 = "gmhi.htm";	//011
	string fnAfterClassChange53 = "gmhi.htm";	//011
	string fnYouAreFirstClass = "gmhi.htm";	//012
	
handler:
	EventHandler TALKED(talker)
	{
		ShowPage(talker, fnHi);
	}

	EventHandler CREATE_PLEDGE(talker, reply)
	{

		if(reply == 1)
			ShowPage(talker, "pl006.htm");
	}

	EventHandler CREATE_ALLIANCE(talker, reply)
	{
		if(reply == 1)
			ShowPage(talker, "al006.htm");
	}

	EventHandler DISMISS_PLEDGE(talker, reply)
	{
		if(reply == 1)
			ShowPage(talker, "pl009.htm");
	}

	EventHandler REVIVE_PLEDGE(talker, reply)
	{
		if(reply == 1)
			ShowPage(talker, "pl012.htm");
	}

	EventHandler LEVEL_UP_PLEDGE(talker, reply)
	{
		if(reply == 0)
		{
			if(talker.sp >= 30000 && OwnItemCount(talker, @adena) >= 650000)
			{
				if(DeleteItem1(talker, @adena, 650000))
				{
					IncrementParam(talker, @PARAM_SP, -30000);
					PledgeLevelUp(talker);
				}
			}
			else
				ShowPage(talker, "pl016.htm");
		}
		else if(reply == 1)
		{
			if(talker.sp >= 150000 && OwnItemCount(talker, @adena) >= 2500000)
			{
				if(DeleteItem1(talker, @adena, 2500000))
				{
					IncrementParam(talker, @PARAM_SP, -150000);
					PledgeLevelUp(talker);
				}
			}
			else
				ShowPage(talker, "pl016.htm");
		}
		else if(reply == 2)
		{
			if(talker.sp >= 500000 && OwnItemCount(talker, @proof_of_blood) >= 1)
			{
				if(DeleteItem1(talker, @proof_of_blood, 1))
				{
					IncrementParam(talker, @PARAM_SP, -500000);
					PledgeLevelUp(talker);
				}
			}
			else
				ShowPage(talker, "pl016.htm");
		}
		else if(reply == 3)
		{
			if(talker.sp >= 1400000 && OwnItemCount(talker, @adena) >= 16000000)
			{
				if(DeleteItem1(talker, @adena, 16000000))
				{
					IncrementParam(talker, @PARAM_SP, -1400000);
					PledgeLevelUp(talker);
				}
			}
			else
				ShowPage(talker, "pl016.htm");
		}
		else if(reply == 4)
		{
			if(talker.sp >= 3500000 && OwnItemCount(talker, @adena) >= 30000000)
			{
				if(DeleteItem1(talker, @adena, 30000000))
				{
					IncrementParam(talker, @PARAM_SP, -3500000);
					PledgeLevelUp(talker);
				}
			}
			else
				ShowPage(talker, "pl016.htm");
		}
	}

	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -3)	//-3은 길드마스터의 혈맹용 메뉴
		{
			if (reply == 0)
			{
				if(talker.level < 10)
					ShowPage(talker, "pl002.htm");
				else if(talker.is_pledge_master != 0)
					ShowPage(talker, "pl003.htm");
				else if(talker.pledge_id != 0)
					ShowPage(talker, "pl004.htm");
				else
					ShowPage(talker, "pl005.htm");
			}
			else if (reply == 2)
			{
				if(talker.is_pledge_master != 0)
					ShowPage(talker, "pl007.htm");
				else
					ShowPage(talker, "pl008.htm");
			}
			else if (reply == 3)
			{
				if(talker.is_pledge_master != 0)
					ShowPage(talker, "pl010.htm");
				else
					ShowPage(talker, "pl011.htm");
			}
			else if (reply == 1)
			{
				if(talker.is_pledge_master != 0)
					ShowPage(talker, "pl013.htm");
				else
					ShowPage(talker, "pl014.htm");
			}
		}
		else if(ask == -4)	// -4&#45716; &#44600;&#46300;&#47560;&#49828;&#53552;&#51032; &#46041;&#47609;&#50857; &#47700;&#45684;
		{
			if (reply == 0)
			{
				// &#51312;&#44148; check ippai &#51060;&#44148; &#54805;&#48124;&#51060;&#54620;&#53580; &#46028;&#47548; -_-)/
				ShowPage(talker, "al005.htm");
			}
		}		
	}
}

class guild_master_lv1 : guild_master
{
}

//&#51064;&#44036;&#51204;&#49324; &#49828;&#53440;&#53944;&#51316;
class human_fighter_lv1_master : guild_master_lv1
{
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_human && IsInCategory(@fighter_group, talker.occupation))
				ShowPage(talker, fnClassList1);
			else
				ShowPage(talker, fnClassMismatch);
		}		
		super;
	}
}

//&#51064;&#44036;&#48277;&#49324; &#49828;&#53440;&#53944;&#51316;
class human_mage_lv1_master : guild_master_lv1
{
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_human && IsInCategory(@mage_group, talker.occupation))
				ShowPage(talker, fnClassList1);
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#50648;&#54532; &#49828;&#53440;&#53944;&#51316;
class elf_lv1_master : guild_master_lv1
{
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_elf)
			{
				if(IsInCategory(@fighter_group, talker.occupation))
					ShowPage(talker, fnClassList1);
				else if(IsInCategory(@mage_group, talker.occupation))
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#45796;&#53356;&#50648;&#54532; &#49828;&#53440;&#53944;&#51316;
class dark_elf_lv1_master : guild_master_lv1
{
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_dark_elf)
			{
				if(IsInCategory(@fighter_group, talker.occupation))
					ShowPage(talker, fnClassList1);
				else if(IsInCategory(@mage_group, talker.occupation))
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#50724;&#53356; &#49828;&#53440;&#53944;&#51316;
class orc_lv1_master : guild_master_lv1
{
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_orc)
			{
				if(IsInCategory(@fighter_group, talker.occupation))
					ShowPage(talker, fnClassList1);
				else if(IsInCategory(@mage_group, talker.occupation))
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#46300;&#50892;&#54532; &#49828;&#53440;&#53944;&#51316; &#52285;&#44256;&#51648;&#44592; &#45824;&#48757;.
class lv1_warehouse_chief : guild_master_lv1
{
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_dwarf)
				ShowPage(talker, fnClassList1);
			else
				ShowPage(talker, fnClassMismatch);			
		}
		super;
	}
}

//&#46300;&#50892;&#54532; &#49828;&#53440;&#53944;&#51316; &#45824;&#51109;&#51109;&#51060; &#45824;&#48757;.
class lv1_head_blacksmith : guild_master_lv1
{
handler:
	EventHandler TALKED(talker)
	{
		if(talker.race == @race_dwarf)
		{
			ShowPage(talker, fnHi);
		}
		else
		{
			ShowPage(talker, fnClassMismatch);
		}
	}
	
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			ShowPage(talker, fnClassList1);
			
		}
		super;
	}
}
class guild_master_lv2 : guild_master
{
parameter:
	int lv1_class1 = -1;
	int lv1_class2 = -1;
	int lv2_class11 = -1;
	int lv2_class12 = -1;
	int lv2_class13 = -1;
	int lv2_class21 = -1;
	int lv2_class22 = -1;
	int lv2_class23 = -1;
	int proof11 = 0;
	int proof12 = 0;
	int proof13 = 0;
	int proof21 = 0;
	int proof22 = 0;
	int proof23 = 0;

handler:
	EventHandler CLASS_CHANGE_REQUESTED(talker, occupation_name_id)
	{
		if(IsInCategory(@second_class_group, talker.occupation))
			ShowPage(talker, fnYouAreSecondClass);
		else if(IsInCategory(@third_class_group, talker.occupation))
			ShowPage(talker, fnYouAreThirdClass);
		else
		{
			 
				     
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv2_class11 != -1 && occupation_name_id == lv2_class11 && talker.occupation == lv1_class1)
		{
			if(talker.level < 20)
			{
				if(OwnItemCount(talker, proof11) == 0)
					ShowPage(talker, fnLowLevelNoProof11);
				else
					ShowPage(talker, fnLowLevel11);
			}
			else
			{
				if(OwnItemCount(talker, proof11) == 0)
					ShowPage(talker, fnNoProof11);
				else
				{
					DeleteItem1(talker, proof11, OwnItemCount(talker, proof11));
					ClassChange(talker, lv2_class11);
					SoundEffect(talker, "ItemSound.quest_fanfare_1");
					ShowPage(talker, fnAfterClassChange11);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			 
				     
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv2_class12 != -1 && occupation_name_id == lv2_class12 && talker.occupation == lv1_class1)
		{
			if(talker.level < 20)
			{
				if(OwnItemCount(talker, proof12) == 0)
					ShowPage(talker, fnLowLevelNoProof12);
				else
					ShowPage(talker, fnLowLevel12);
			}
			else
			{
				if(OwnItemCount(talker, proof12) == 0)
					ShowPage(talker, fnNoProof12);
				else
				{
					DeleteItem1(talker, proof12, OwnItemCount(talker, proof12));
					ClassChange(talker, lv2_class12);
					SoundEffect(talker, "ItemSound.quest_fanfare_1");
					ShowPage(talker, fnAfterClassChange12);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			 
				     
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv2_class13 != -1 && occupation_name_id == lv2_class13 && talker.occupation == lv1_class1)
		{
			if(talker.level < 20)
			{
				if(OwnItemCount(talker, proof13) == 0)
					ShowPage(talker, fnLowLevelNoProof13);
				else
					ShowPage(talker, fnLowLevel13);
			}
			else
			{
				if(OwnItemCount(talker, proof13) == 0)
					ShowPage(talker, fnNoProof13);
				else
				{
					DeleteItem1(talker, proof13, OwnItemCount(talker, proof13));
					ClassChange(talker, lv2_class13);
					SoundEffect(talker, "ItemSound.quest_fanfare_1");
					ShowPage(talker, fnAfterClassChange13);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			 
				     
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv2_class21 != -1 && occupation_name_id == lv2_class21 && talker.occupation == lv1_class2)
		{
			if(talker.level < 20)
			{
				if(OwnItemCount(talker, proof21) == 0)
					ShowPage(talker, fnLowLevelNoProof21);
				else
					ShowPage(talker, fnLowLevel21);
			}
			else
			{
				if(OwnItemCount(talker, proof21) == 0)
					ShowPage(talker, fnNoProof21);
				else
				{
					DeleteItem1(talker, proof21, OwnItemCount(talker, proof21));
					ClassChange(talker, lv2_class21);
					SoundEffect(talker, "ItemSound.quest_fanfare_1");
					ShowPage(talker, fnAfterClassChange21);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			 
				     
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv2_class22 != -1 && occupation_name_id == lv2_class22 && talker.occupation == lv1_class2)
		{
			if(talker.level < 20)
			{
				if(OwnItemCount(talker, proof22) == 0)
					ShowPage(talker, fnLowLevelNoProof22);
				else
					ShowPage(talker, fnLowLevel22);
			}
			else
			{
				if(OwnItemCount(talker, proof22) == 0)
					ShowPage(talker, fnNoProof22);
				else
				{
					DeleteItem1(talker, proof22, OwnItemCount(talker, proof22));
					ClassChange(talker, lv2_class22);
					SoundEffect(talker, "ItemSound.quest_fanfare_1");
					ShowPage(talker, fnAfterClassChange22);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			 
				     
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv2_class23 != -1 && occupation_name_id == lv2_class23 && talker.occupation == lv1_class2)
		{
			if(talker.level < 20)
			{
				if(OwnItemCount(talker, proof23) == 0)
					ShowPage(talker, fnLowLevelNoProof23);
				else
					ShowPage(talker, fnLowLevel23);
			}
			else
			{
				if(OwnItemCount(talker, proof23) == 0)
					ShowPage(talker, fnNoProof23);
				else
				{
					DeleteItem1(talker, proof23, OwnItemCount(talker, proof23));
					ClassChange(talker, lv2_class23);
					SoundEffect(talker, "ItemSound.quest_fanfare_1");
					ShowPage(talker, fnAfterClassChange23);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


		}
	}
}

//&#51064;&#44036;, &#50648;&#54532; &#51204;&#49324; 1&#52264;&#51204;&#51649;
class human_elf_fighter_lv2_master : guild_master_lv2
{
parameter:
	int lv1_class1 =  @fighter;
	int lv1_class2 = @elven_fighter;
	int lv2_class11 = @warrior;
	int lv2_class12 = @knight;
	int lv2_class13 = @rogue;
	int lv2_class21 = @elven_knight;
	int lv2_class22 = @elven_scout;
	int proof11 = @medallion_of_warrior;
	int proof12 = @sword_of_ritual;
	int proof13 = @beziques_recommendation;
	int proof21 = @elven_knight_brooch;
	int proof22 = @reoria_recommendation;

handler:	
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@fighter_group, talker.occupation)
				&& (talker.race == @race_human || talker.race == @race_elf))
			{
				if(talker.race == @race_human)
					ShowPage(talker, fnClassList1);
				else if(talker.race == @race_elf)
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#51064;&#44036;, &#50648;&#54532; &#48277;&#49324; 1&#52264;&#51204;&#51649;
class human_elf_mage_lv2_master : guild_master_lv2
{
parameter:
	int lv1_class1 =  @mage;
	int lv1_class2 = @elven_mage;
	int lv2_class11 = @wizard;
	int lv2_class12 = @cleric;
	int lv2_class21 = @elven_wizard;
	int lv2_class22 = @oracle;
	int proof11 = @bead_of_season;
	int proof12 = @mark_of_faith;
	int proof21 = @eternity_diamond;
	int proof22 = @leaf_of_oracle;
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@mage_group, talker.occupation)
				&& (talker.race == @race_human || talker.race == @race_elf))
			{
				if(talker.race == @race_human)
					ShowPage(talker, fnClassList1);
				else if(talker.race == @race_elf)
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}	
}

//&#45796;&#53356;&#50648;&#54532; 1&#52264;&#51204;&#51649;
class dark_elf_lv2_master : guild_master_lv2
{
parameter:
	int lv1_class1 = @dark_fighter;
	int lv1_class2 = @dark_mage;
	int lv2_class11 = @palus_knight;
	int lv2_class12 = @assassin;
	int lv2_class21 = @dark_wizard;
	int lv2_class22 = @shillien_oracle;
	int proof11 = @gaze_of_abyss;
	int proof12 = @iron_heart;
	int proof21 = @jewel_of_darkness;
	int proof22 = @orb_of_abyss;
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_dark_elf)
			{
				if(IsInCategory(@fighter_group, talker.occupation))
					ShowPage(talker, fnClassList1);
				else if(IsInCategory(@mage_group, talker.occupation))
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}	
}

//&#50724;&#53356; 1&#52264;&#51204;&#51649;
class orc_lv2_master : guild_master_lv2
{
parameter:
	int lv1_class1 = @orc_fighter;
	int lv1_class2 = @orc_mage;
	int lv2_class11 = @orc_raider;
	int lv2_class12 = @orc_monk;
	int lv2_class21 = @orc_shaman;
	int proof11 = @mark_of_raider;
	int proof12 = @khavatari_totem;
	int proof21 = @mask_of_medium;
handler:	
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_orc)
			{
				if(IsInCategory(@fighter_group, talker.occupation))
					ShowPage(talker, fnClassList1);
				else if(IsInCategory(@mage_group, talker.occupation))
					ShowPage(talker, fnClassList2);
			}
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#48148;&#50868;&#54000;&#54732;&#53552;&#44228; &#46300;&#50892;&#54532; 1&#52264;&#51204;&#51649;
class lv2_warehouse_chief : guild_master_lv2
{
parameter:
	int lv1_class1 = @dwarven_fighter;
	int lv2_class11 = @scavenger;
	int proof11 = @ring_of_raven;
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@bounty_hunter_group, talker.occupation))
				ShowPage(talker, fnClassList1);
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#50892;&#49828;&#48120;&#49828;&#44228; &#46300;&#50892;&#54532; 1&#52264;&#51204;&#51649;
class lv2_head_blacksmith : guild_master_lv2
{
parameter:
	int lv1_class1 = @dwarven_fighter;
	int lv2_class11 = @artisan;
	int proof11 = @pass_final;
handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@warsmith_group, talker.occupation))
				ShowPage(talker, fnClassList1);
			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

class guild_master_lv3 : guild_master
{
parameter:
	int lv2_class1 = -1;
	int lv2_class2 = -1;
	int lv2_class3 = -1;
	int lv2_class4 = -1;
	int lv2_class5 = -1;
	int lv3_class11 = -1;
	int lv3_class12 = -1;
	int lv3_class13 = -1;
	int lv3_class21 = -1;
	int lv3_class22 = -1;
	int lv3_class23 = -1;
	int lv3_class31 = -1;
	int lv3_class32 = -1;
	int lv3_class33 = -1;
	int lv3_class41 = -1;
	int lv3_class42 = -1;
	int lv3_class43 = -1;
	int lv3_class51 = -1;
	int lv3_class52 = -1;
	int lv3_class53 = -1;
	int proof11x = 0;
	int proof11y = 0;
	int proof11z = 0;
	int proof12x = 0;
	int proof12y = 0;
	int proof12z = 0;
	int proof13x = 0;
	int proof13y = 0;
	int proof13z = 0;
	int proof21x = 0;
	int proof21y = 0;
	int proof21z = 0;
	int proof22x = 0;
	int proof22y = 0;
	int proof22z = 0;
	int proof23x = 0;
	int proof23y = 0;
	int proof23z = 0;
	int proof31x = 0;
	int proof31y = 0;
	int proof31z = 0;
	int proof32x = 0;
	int proof32y = 0;
	int proof32z = 0;
	int proof33x = 0;
	int proof33y = 0;
	int proof33z = 0;
	int proof41x = 0;
	int proof41y = 0;
	int proof41z = 0;
	int proof42x = 0;
	int proof42y = 0;
	int proof42z = 0;
	int proof43x = 0;
	int proof43y = 0;
	int proof43z = 0;
	int proof51x = 0;
	int proof51y = 0;
	int proof51z = 0;
	int proof52x = 0;
	int proof52y = 0;
	int proof52z = 0;
	int proof53x = 0;
	int proof53y = 0;
	int proof53z = 0;

handler:
	EventHandler CLASS_CHANGE_REQUESTED(talker, occupation_name_id)
	{
		if(IsInCategory(@third_class_group, talker.occupation))
		{
			ShowPage(talker, fnYouAreThirdClass);
		}
		else
		{
			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class11 != -1 && occupation_name_id == lv3_class11 && talker.occupation == lv2_class1)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof11x) == 0 || OwnItemCount(talker, proof11y) == 0
					|| OwnItemCount(talker, proof11z) == 0)
					ShowPage(talker, fnLowLevelNoProof11);
				else
					ShowPage(talker, fnLowLevel11);
			}
			else
			{
				if(OwnItemCount(talker, proof11x) == 0 || OwnItemCount(talker, proof11y) == 0
					|| OwnItemCount(talker, proof11z) == 0)
					ShowPage(talker, fnNoProof11);
				else
				{
					DeleteItem1(talker, proof11x, OwnItemCount(talker, proof11x));
					DeleteItem1(talker, proof11y, OwnItemCount(talker, proof11y));
					DeleteItem1(talker, proof11z, OwnItemCount(talker, proof11z));
					ClassChange(talker, lv3_class11);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange11);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class12 != -1 && occupation_name_id == lv3_class12 && talker.occupation == lv2_class1)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof12x) == 0 || OwnItemCount(talker, proof12y) == 0
					|| OwnItemCount(talker, proof12z) == 0)
					ShowPage(talker, fnLowLevelNoProof12);
				else
					ShowPage(talker, fnLowLevel12);
			}
			else
			{
				if(OwnItemCount(talker, proof12x) == 0 || OwnItemCount(talker, proof12y) == 0
					|| OwnItemCount(talker, proof12z) == 0)
					ShowPage(talker, fnNoProof12);
				else
				{
					DeleteItem1(talker, proof12x, OwnItemCount(talker, proof12x));
					DeleteItem1(talker, proof12y, OwnItemCount(talker, proof12y));
					DeleteItem1(talker, proof12z, OwnItemCount(talker, proof12z));
					ClassChange(talker, lv3_class12);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange12);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class13 != -1 && occupation_name_id == lv3_class13 && talker.occupation == lv2_class1)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof13x) == 0 || OwnItemCount(talker, proof13y) == 0
					|| OwnItemCount(talker, proof13z) == 0)
					ShowPage(talker, fnLowLevelNoProof13);
				else
					ShowPage(talker, fnLowLevel13);
			}
			else
			{
				if(OwnItemCount(talker, proof13x) == 0 || OwnItemCount(talker, proof13y) == 0
					|| OwnItemCount(talker, proof13z) == 0)
					ShowPage(talker, fnNoProof13);
				else
				{
					DeleteItem1(talker, proof13x, OwnItemCount(talker, proof13x));
					DeleteItem1(talker, proof13y, OwnItemCount(talker, proof13y));
					DeleteItem1(talker, proof13z, OwnItemCount(talker, proof13z));
					ClassChange(talker, lv3_class13);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange13);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class21 != -1 && occupation_name_id == lv3_class21 && talker.occupation == lv2_class2)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof21x) == 0 || OwnItemCount(talker, proof21y) == 0
					|| OwnItemCount(talker, proof21z) == 0)
					ShowPage(talker, fnLowLevelNoProof21);
				else
					ShowPage(talker, fnLowLevel21);
			}
			else
			{
				if(OwnItemCount(talker, proof21x) == 0 || OwnItemCount(talker, proof21y) == 0
					|| OwnItemCount(talker, proof21z) == 0)
					ShowPage(talker, fnNoProof21);
				else
				{
					DeleteItem1(talker, proof21x, OwnItemCount(talker, proof21x));
					DeleteItem1(talker, proof21y, OwnItemCount(talker, proof21y));
					DeleteItem1(talker, proof21z, OwnItemCount(talker, proof21z));
					ClassChange(talker, lv3_class21);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange21);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class22 != -1 && occupation_name_id == lv3_class22 && talker.occupation == lv2_class2)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof22x) == 0 || OwnItemCount(talker, proof22y) == 0
					|| OwnItemCount(talker, proof22z) == 0)
					ShowPage(talker, fnLowLevelNoProof22);
				else
					ShowPage(talker, fnLowLevel22);
			}
			else
			{
				if(OwnItemCount(talker, proof22x) == 0 || OwnItemCount(talker, proof22y) == 0
					|| OwnItemCount(talker, proof22z) == 0)
					ShowPage(talker, fnNoProof22);
				else
				{
					DeleteItem1(talker, proof22x, OwnItemCount(talker, proof22x));
					DeleteItem1(talker, proof22y, OwnItemCount(talker, proof22y));
					DeleteItem1(talker, proof22z, OwnItemCount(talker, proof22z));
					ClassChange(talker, lv3_class22);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange22);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class23 != -1 && occupation_name_id == lv3_class23 && talker.occupation == lv2_class2)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof23x) == 0 || OwnItemCount(talker, proof23y) == 0
					|| OwnItemCount(talker, proof23z) == 0)
					ShowPage(talker, fnLowLevelNoProof23);
				else
					ShowPage(talker, fnLowLevel23);
			}
			else
			{
				if(OwnItemCount(talker, proof23x) == 0 || OwnItemCount(talker, proof23y) == 0
					|| OwnItemCount(talker, proof23z) == 0)
					ShowPage(talker, fnNoProof23);
				else
				{
					DeleteItem1(talker, proof23x, OwnItemCount(talker, proof23x));
					DeleteItem1(talker, proof23y, OwnItemCount(talker, proof23y));
					DeleteItem1(talker, proof23z, OwnItemCount(talker, proof23z));
					ClassChange(talker, lv3_class23);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange23);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class31 != -1 && occupation_name_id == lv3_class31 && talker.occupation == lv2_class3)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof31x) == 0 || OwnItemCount(talker, proof31y) == 0
					|| OwnItemCount(talker, proof31z) == 0)
					ShowPage(talker, fnLowLevelNoProof31);
				else
					ShowPage(talker, fnLowLevel31);
			}
			else
			{
				if(OwnItemCount(talker, proof31x) == 0 || OwnItemCount(talker, proof31y) == 0
					|| OwnItemCount(talker, proof31z) == 0)
					ShowPage(talker, fnNoProof31);
				else
				{
					DeleteItem1(talker, proof31x, OwnItemCount(talker, proof31x));
					DeleteItem1(talker, proof31y, OwnItemCount(talker, proof31y));
					DeleteItem1(talker, proof31z, OwnItemCount(talker, proof31z));
					ClassChange(talker, lv3_class31);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange31);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class32 != -1 && occupation_name_id == lv3_class32 && talker.occupation == lv2_class3)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof32x) == 0 || OwnItemCount(talker, proof32y) == 0
					|| OwnItemCount(talker, proof32z) == 0)
					ShowPage(talker, fnLowLevelNoProof32);
				else
					ShowPage(talker, fnLowLevel32);
			}
			else
			{
				if(OwnItemCount(talker, proof32x) == 0 || OwnItemCount(talker, proof32y) == 0
					|| OwnItemCount(talker, proof32z) == 0)
					ShowPage(talker, fnNoProof32);
				else
				{
					DeleteItem1(talker, proof32x, OwnItemCount(talker, proof32x));
					DeleteItem1(talker, proof32y, OwnItemCount(talker, proof32y));
					DeleteItem1(talker, proof32z, OwnItemCount(talker, proof32z));
					ClassChange(talker, lv3_class32);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange32);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class33 != -1 && occupation_name_id == lv3_class33 && talker.occupation == lv2_class3)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof33x) == 0 || OwnItemCount(talker, proof33y) == 0
					|| OwnItemCount(talker, proof33z) == 0)
					ShowPage(talker, fnLowLevelNoProof33);
				else
					ShowPage(talker, fnLowLevel33);
			}
			else
			{
				if(OwnItemCount(talker, proof33x) == 0 || OwnItemCount(talker, proof33y) == 0
					|| OwnItemCount(talker, proof33z) == 0)
					ShowPage(talker, fnNoProof33);
				else
				{
					DeleteItem1(talker, proof33x, OwnItemCount(talker, proof33x));
					DeleteItem1(talker, proof33y, OwnItemCount(talker, proof33y));
					DeleteItem1(talker, proof33z, OwnItemCount(talker, proof33z));
					ClassChange(talker, lv3_class33);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange33);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class41 != -1 && occupation_name_id == lv3_class41 && talker.occupation == lv2_class4)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof41x) == 0 || OwnItemCount(talker, proof41y) == 0
					|| OwnItemCount(talker, proof41z) == 0)
					ShowPage(talker, fnLowLevelNoProof41);
				else
					ShowPage(talker, fnLowLevel41);
			}
			else
			{
				if(OwnItemCount(talker, proof41x) == 0 || OwnItemCount(talker, proof41y) == 0
					|| OwnItemCount(talker, proof41z) == 0)
					ShowPage(talker, fnNoProof41);
				else
				{
					DeleteItem1(talker, proof41x, OwnItemCount(talker, proof41x));
					DeleteItem1(talker, proof41y, OwnItemCount(talker, proof41y));
					DeleteItem1(talker, proof41z, OwnItemCount(talker, proof41z));
					ClassChange(talker, lv3_class41);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange41);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class42 != -1 && occupation_name_id == lv3_class42 && talker.occupation == lv2_class4)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof42x) == 0 || OwnItemCount(talker, proof42y) == 0
					|| OwnItemCount(talker, proof42z) == 0)
					ShowPage(talker, fnLowLevelNoProof42);
				else
					ShowPage(talker, fnLowLevel42);
			}
			else
			{
				if(OwnItemCount(talker, proof42x) == 0 || OwnItemCount(talker, proof42y) == 0
					|| OwnItemCount(talker, proof42z) == 0)
					ShowPage(talker, fnNoProof42);
				else
				{
					DeleteItem1(talker, proof42x, OwnItemCount(talker, proof42x));
					DeleteItem1(talker, proof42y, OwnItemCount(talker, proof42y));
					DeleteItem1(talker, proof42z, OwnItemCount(talker, proof42z));
					ClassChange(talker, lv3_class42);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange42);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class43 != -1 && occupation_name_id == lv3_class43 && talker.occupation == lv2_class4)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof43x) == 0 || OwnItemCount(talker, proof43y) == 0
					|| OwnItemCount(talker, proof43z) == 0)
					ShowPage(talker, fnLowLevelNoProof43);
				else
					ShowPage(talker, fnLowLevel43);
			}
			else
			{
				if(OwnItemCount(talker, proof43x) == 0 || OwnItemCount(talker, proof43y) == 0
					|| OwnItemCount(talker, proof43z) == 0)
					ShowPage(talker, fnNoProof43);
				else
				{
					DeleteItem1(talker, proof43x, OwnItemCount(talker, proof43x));
					DeleteItem1(talker, proof43y, OwnItemCount(talker, proof43y));
					DeleteItem1(talker, proof43z, OwnItemCount(talker, proof43z));
					ClassChange(talker, lv3_class43);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange43);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class51 != -1 && occupation_name_id == lv3_class51 && talker.occupation == lv2_class5)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof51x) == 0 || OwnItemCount(talker, proof51y) == 0
					|| OwnItemCount(talker, proof51z) == 0)
					ShowPage(talker, fnLowLevelNoProof51);
				else
					ShowPage(talker, fnLowLevel51);
			}
			else
			{
				if(OwnItemCount(talker, proof51x) == 0 || OwnItemCount(talker, proof51y) == 0
					|| OwnItemCount(talker, proof51z) == 0)
					ShowPage(talker, fnNoProof51);
				else
				{
					DeleteItem1(talker, proof51x, OwnItemCount(talker, proof51x));
					DeleteItem1(talker, proof51y, OwnItemCount(talker, proof51y));
					DeleteItem1(talker, proof51z, OwnItemCount(talker, proof51z));
					ClassChange(talker, lv3_class51);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange51);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class52 != -1 && occupation_name_id == lv3_class52 && talker.occupation == lv2_class5)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof52x) == 0 || OwnItemCount(talker, proof52y) == 0
					|| OwnItemCount(talker, proof52z) == 0)
					ShowPage(talker, fnLowLevelNoProof52);
				else
					ShowPage(talker, fnLowLevel52);
			}
			else
			{
				if(OwnItemCount(talker, proof52x) == 0 || OwnItemCount(talker, proof52y) == 0
					|| OwnItemCount(talker, proof52z) == 0)
					ShowPage(talker, fnNoProof52);
				else
				{
					DeleteItem1(talker, proof52x, OwnItemCount(talker, proof52x));
					DeleteItem1(talker, proof52y, OwnItemCount(talker, proof52y));
					DeleteItem1(talker, proof52z, OwnItemCount(talker, proof52z));
					ClassChange(talker, lv3_class52);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange52);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			    
				   
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(lv3_class53 != -1 && occupation_name_id == lv3_class53 && talker.occupation == lv2_class5)
		{
			if(talker.level < 40)
			{
				if(OwnItemCount(talker, proof53x) == 0 || OwnItemCount(talker, proof53y) == 0
					|| OwnItemCount(talker, proof53z) == 0)
					ShowPage(talker, fnLowLevelNoProof53);
				else
					ShowPage(talker, fnLowLevel53);
			}
			else
			{
				if(OwnItemCount(talker, proof53x) == 0 || OwnItemCount(talker, proof53y) == 0
					|| OwnItemCount(talker, proof53z) == 0)
					ShowPage(talker, fnNoProof53);
				else
				{
					DeleteItem1(talker, proof53x, OwnItemCount(talker, proof53x));
					DeleteItem1(talker, proof53y, OwnItemCount(talker, proof53y));
					DeleteItem1(talker, proof53z, OwnItemCount(talker, proof53z));
					ClassChange(talker, lv3_class53);
					SoundEffect(talker, "ItemSound.quest_fanfare_2");
					ShowPage(talker, fnAfterClassChange53);
				}
			}
		}
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


		}
	}
}

//&#51064;&#44036;, &#50648;&#54532; &#51204;&#49324; 2&#52264;&#51204;&#51649;
class master_lv3_hef : guild_master_lv3
{
parameter:
	int lv2_class1 = @warrior;
	int lv2_class2 = @knight;
	int lv2_class3 = @rogue;
	int lv2_class4 = @elven_knight;
	int lv2_class5 = @elven_scout;
	int lv3_class11 = @gladiator;
	int lv3_class12 = @warlord;
	int lv3_class21 = @paladin;
	int lv3_class22 = @dark_avenger;
	int lv3_class31 = @treasure_hunter;
	int lv3_class32 = @hawkeye;
	int lv3_class41 = @temple_knight;
	int lv3_class42 = @swordsinger;
	int lv3_class51 = @plains_walker;
	int lv3_class52 = @silver_ranger;
	int proof11x = @mark_of_challenger;
	int proof11y = @mark_of_trust;
	int proof11z = @mark_of_duelist;
	int proof12x = @mark_of_challenger;
	int proof12y = @mark_of_trust;
	int proof12z = @mark_of_champion;
	int proof21x = @mark_of_duty;
	int proof21y = @mark_of_trust;
	int proof21z = @mark_of_healer;
	int proof22x = @mark_of_duty;
	int proof22y = @mark_of_trust;
	int proof22z = @mark_of_witchcraft;
	int proof31x = @mark_of_seeker;
	int proof31y = @mark_of_trust;
	int proof31z = @mark_of_searcher;
	int proof32x = @mark_of_seeker;
	int proof32y = @mark_of_trust;
	int proof32z = @mark_of_sagittarius;
	int proof41x = @mark_of_duty;
	int proof41y = @mark_of_life;
	int proof41z = @mark_of_healer;
	int proof42x = @mark_of_challenger;
	int proof42y = @mark_of_life;
	int proof42z = @mark_of_duelist;
	int proof51x = @mark_of_seeker;
	int proof51y = @mark_of_life;
	int proof51z = @mark_of_searcher;
	int proof52x = @mark_of_seeker;
	int proof52y = @mark_of_life;
	int proof52z = @mark_of_sagittarius;

handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@fighter_group, talker.occupation)
				&& (talker.race == @race_human || talker.race == @race_elf))
				
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(talker.occupation == lv2_class1 || talker.occupation == lv3_class11
			|| talker.occupation == lv3_class12 || talker.occupation == lv3_class13)
			ShowPage(talker, fnClassList1);
		else if(talker.occupation == lv2_class2 || talker.occupation == lv3_class21
			|| talker.occupation == lv3_class22 || talker.occupation == lv3_class23)
			ShowPage(talker, fnClassList2);
		else if(talker.occupation == lv2_class3 || talker.occupation == lv3_class31
			|| talker.occupation == lv3_class32 || talker.occupation == lv3_class33)
			ShowPage(talker, fnClassList3);
		else if(talker.occupation == lv2_class4 || talker.occupation == lv3_class41
			|| talker.occupation == lv3_class42 || talker.occupation == lv3_class43)
			ShowPage(talker, fnClassList4);
		else if(talker.occupation == lv2_class5 || talker.occupation == lv3_class51
			|| talker.occupation == lv3_class52 || talker.occupation == lv3_class53)
			ShowPage(talker, fnClassList5);
		else
			ShowPage(talker, fnYouAreFirstClass);
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}
}

//&#51064;&#44036;, &#50648;&#54532; &#50948;&#51200;&#46300; 2&#52264;&#51204;&#51649;
class master_lv3_hew : guild_master_lv3
{
parameter:
	int lv2_class1 = @wizard;
	int lv2_class2 = @elven_wizard;
	int lv3_class11 = @sorcerer;
	int lv3_class12 = @necromancer;
	int lv3_class13 = @warlock;
	int lv3_class21 = @spellsinger;
	int lv3_class22 = @elemental_summoner;
	int proof11x = @mark_of_scholar;
	int proof11y = @mark_of_trust;
	int proof11z = @mark_of_magus;
	int proof12x = @mark_of_scholar;
	int proof12y = @mark_of_trust;
	int proof12z = @mark_of_witchcraft;
	int proof13x = @mark_of_scholar;
	int proof13y = @mark_of_trust;
	int proof13z = @mark_of_summoner;
	int proof21x = @mark_of_scholar;
	int proof21y = @mark_of_life;
	int proof21z = @mark_of_magus;
	int proof22x = @mark_of_scholar;
	int proof22y = @mark_of_life;
	int proof22z = @mark_of_summoner;

handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@wizard_group, talker.occupation)
				&& (talker.race == @race_human || talker.race == @race_elf))
				
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(talker.occupation == lv2_class1 || talker.occupation == lv3_class11
			|| talker.occupation == lv3_class12 || talker.occupation == lv3_class13)
			ShowPage(talker, fnClassList1);
		else if(talker.occupation == lv2_class2 || talker.occupation == lv3_class21
			|| talker.occupation == lv3_class22 || talker.occupation == lv3_class23)
			ShowPage(talker, fnClassList2);
		else if(talker.occupation == lv2_class3 || talker.occupation == lv3_class31
			|| talker.occupation == lv3_class32 || talker.occupation == lv3_class33)
			ShowPage(talker, fnClassList3);
		else if(talker.occupation == lv2_class4 || talker.occupation == lv3_class41
			|| talker.occupation == lv3_class42 || talker.occupation == lv3_class43)
			ShowPage(talker, fnClassList4);
		else if(talker.occupation == lv2_class5 || talker.occupation == lv3_class51
			|| talker.occupation == lv3_class52 || talker.occupation == lv3_class53)
			ShowPage(talker, fnClassList5);
		else
			ShowPage(talker, fnYouAreFirstClass);
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}	
}

//&#51064;&#44036;, &#50648;&#54532; &#53364;&#47112;&#47533; 2&#52264;&#51204;&#51649;
class master_lv3_hec : guild_master_lv3
{
parameter:
	int lv2_class1 = @cleric;
	int lv2_class2 = @oracle;
	int lv3_class11 = @bishop;
	int lv3_class12 = @prophet;
	int lv3_class21 = @elder;
	int proof11x = @mark_of_pilgrim;
	int proof11y = @mark_of_trust;
	int proof11z = @mark_of_healer;
	int proof12x = @mark_of_pilgrim;
	int proof12y = @mark_of_trust;
	int proof12z = @mark_of_reformer;
	int proof21x = @mark_of_pilgrim;
	int proof21y = @mark_of_life;
	int proof21z = @mark_of_healer;

handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(IsInCategory(@cleric_group, talker.occupation)
				&& (talker.race == @race_human || talker.race == @race_elf))
				
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(talker.occupation == lv2_class1 || talker.occupation == lv3_class11
			|| talker.occupation == lv3_class12 || talker.occupation == lv3_class13)
			ShowPage(talker, fnClassList1);
		else if(talker.occupation == lv2_class2 || talker.occupation == lv3_class21
			|| talker.occupation == lv3_class22 || talker.occupation == lv3_class23)
			ShowPage(talker, fnClassList2);
		else if(talker.occupation == lv2_class3 || talker.occupation == lv3_class31
			|| talker.occupation == lv3_class32 || talker.occupation == lv3_class33)
			ShowPage(talker, fnClassList3);
		else if(talker.occupation == lv2_class4 || talker.occupation == lv3_class41
			|| talker.occupation == lv3_class42 || talker.occupation == lv3_class43)
			ShowPage(talker, fnClassList4);
		else if(talker.occupation == lv2_class5 || talker.occupation == lv3_class51
			|| talker.occupation == lv3_class52 || talker.occupation == lv3_class53)
			ShowPage(talker, fnClassList5);
		else
			ShowPage(talker, fnYouAreFirstClass);
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}	
}

//&#45796;&#53356;&#50648;&#54532; 2&#52264;&#51204;&#51649;
class master_lv3_de : guild_master_lv3
{
parameter:
	int lv2_class1 = @palus_knight;
	int lv2_class2 = @assassin;
	int lv2_class3 = @dark_wizard;
	int lv2_class4 = @shillien_oracle;
	int lv3_class11 = @shillien_knight;
	int lv3_class12 = @bladedancer;
	int lv3_class21 = @abyss_walker;
	int lv3_class22 = @phantom_ranger;
	int lv3_class31 = @spellhowler;
	int lv3_class32 = @phantom_summoner;
	int lv3_class41 = @shillien_elder;
	int proof11x = @mark_of_duty;
	int proof11y = @mark_of_fate;
	int proof11z = @mark_of_witchcraft;
	int proof12x = @mark_of_challenger;
	int proof12y = @mark_of_fate;
	int proof12z = @mark_of_duelist;
	int proof21x = @mark_of_seeker;
	int proof21y = @mark_of_fate;
	int proof21z = @mark_of_searcher;
	int proof22x = @mark_of_seeker;
	int proof22y = @mark_of_fate;
	int proof22z = @mark_of_sagittarius;
	int proof31x = @mark_of_scholar;
	int proof31y = @mark_of_fate;
	int proof31z = @mark_of_magus;
	int proof32x = @mark_of_scholar;
	int proof32y = @mark_of_fate;
	int proof32z = @mark_of_summoner;
	int proof41x = @mark_of_pilgrim;
	int proof41y = @mark_of_fate;
	int proof41z = @mark_of_reformer;

handler:
	EventHandler MENU_SELECTED(talker, ask ,reply)
	{
		if(ask == -2 && reply == 1)
		{
			if(talker.race == @race_dark_elf)
				
		/***************************************************************************
			Generated by Macro Preprocessor, begin ^^
		****************************************************************************/

	{
		if(talker.occupation == lv2_class1 || talker.occupation == lv3_class11
			|| talker.occupation == lv3_class12 || talker.occupation == lv3_class13)
			ShowPage(talker, fnClassList1);
		else if(talker.occupation == lv2_class2 || talker.occupation == lv3_class21
			|| talker.occupation == lv3_class22 || talker.occupation == lv3_class23)
			ShowPage(talker, fnClassList2);
		else if(talker.occupation == lv2_class3 || talker.occupation == lv3_class31
			|| talker.occupation == lv3_class32 || talker.occupation == lv3_class33)
			ShowPage(talker, fnClassList3);
		else if(talker.occupation == lv2_class4 || talker.occupation == lv3_class41
			|| talker.occupation == lv3_class42 || talker.occupation == lv3_class43)
			ShowPage(talker, fnClassList4);
		else if(talker.occupation == lv2_class5 || talker.occupation == lv3_class51
			|| talker.occupation == lv3_class52 || talker.occupation == lv3_class53)
			ShowPage(talker, fnClassList5);
		else
			ShowPage(talker, fnYouAreFirstClass);
	}

		/***************************************************************************
			Generated by Macro Preprocessor, end ^^
		****************************************************************************/


			else
				ShowPage(talker, fnClassMismatch);
		}
		super;
	}	
}