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는 길드마스터의 동맹용 메뉴
{
if (reply == 0)
{
// 조건 check ippai 이건 형민이한테 돌림 -_-)/
ShowPage(talker, "al005.htm");
}
}
}
}
class guild_master_lv1 : guild_master
{
}
//인간전사 스타트존
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;
}
}
//인간법사 스타트존
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;
}
}
//엘프 스타트존
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;
}
}
//다크엘프 스타트존
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;
}
}
//오크 스타트존
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;
}
}
//드워프 스타트존 창고지기 대빵.
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;
}
}
//드워프 스타트존 대장장이 대빵.
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 ^^
****************************************************************************/
}
}
}
//인간, 엘프 전사 1차전직
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;
}
}
//인간, 엘프 법사 1차전직
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;
}
}
//다크엘프 1차전직
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;
}
}
//오크 1차전직
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;
}
}
//바운티헌터계 드워프 1차전직
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;
}
}
//워스미스계 드워프 1차전직
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 ^^
****************************************************************************/
}
}
}
//인간, 엘프 전사 2차전직
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;
}
}
//인간, 엘프 위저드 2차전직
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;
}
}
//인간, 엘프 클레릭 2차전직
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;
}
}
//다크엘프 2차전직
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;
}
}