Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
800 lines (748 sloc)
32.8 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //===== rAthena Script ======================================= | |
| //= Instanced Hunting Grounds | |
| //===== By =================================================== | |
| //= llchrisll | |
| //===== Version ============================================== | |
| //= 1.0 - Initial Version | |
| // - Fixed an issue with turning in quests from the previous level range | |
| // (Thanks Polly for the report) | |
| // - Fixed a typo with exp rewards (Thanks Polly for pointing it out) | |
| // - Fixed a bug about the Quest Delay | |
| // - Optimized the Dimension Gate Texts a bit | |
| // - Optimized the Reward Display of the actual Quest | |
| // - Optimized Spawn Behaviour of the Mobs | |
| // - Fixed an typo with the MvP Spawn | |
| // - Optimized the start of the instance by adding an extra NPC | |
| // - Changed the getgroupid check to 99 | |
| // - Added custom atcommand @hgstatus to check the progress | |
| // - Decreased the mob amount of 175+ quests to 350 | |
| //===== Tested With ========================================== | |
| //= rAthena 11/01/2020 Revision | |
| //= GIT Hash: d158603424959805ba26f22ad6ba0237915c9acc | |
| //===== Description ========================================== | |
| //= Based on the idea of Gramps. | |
| //= Instance based with 6 different element rotations | |
| // Each Instance (6 total) can be a different element | |
| //= Min. Player, Max. Player and required Player are configureable | |
| //= Harder Mobs + Better Rewards | |
| //= 13 Quests per Instance | |
| // Rewards for each Quest seperatly configureable | |
| //===== Comments ============================================= | |
| //= For the db entries you need the HuntingGrounds_install.txt file | |
| //============================================================ | |
| prontera,163,172,4 script Exiled Warrior 4_F_VALKYRIE2,{ | |
| mes .n$; | |
| mes "Hello "+strcharinfo(0)+"!"; | |
| if(!getcharid(1)) { | |
| mes "But first make a party before talking to me again."; | |
| close; | |
| } | |
| next; | |
| mes .n$; | |
| mes "First select the Level for the Hunting Ground:"; | |
| next; | |
| set .@h,select(.HG_Menu$) - 1; | |
| set .@i,.@h + 1; | |
| mes .n$; | |
| mes "Level: "+.HG_MinLvL[.@h]+ ( (.HG_MaxLvL[.@h] != .HG_MinLvL[.@h])?" - "+.HG_MaxLvL[.@h]:"+"); | |
| mes "Element: "+.Hunt_Ele_TxT$[getd(".HuntGround_I"+.@i)-1]; | |
| mes "Minimum Players: "+.HG_Players[.@h]; | |
| next; | |
| switch(select("Enter Hunting Grounds:Hunting Quests:Leave")) { | |
| case 1: | |
| mes .n$; | |
| mes "Please choose what you want to do:"; | |
| if(is_party_leader() == true) | |
| set .@i_menu$,( (instance_id(IM_PARTY) == 0)?"Generate Dimension Gate":"Close Dimension Gate"); | |
| else if(is_party_leader() == false) | |
| if(instance_id(IM_PARTY) == 0) | |
| mes "^FF0000Only the Party Leader can generate the Dimension Gate.^000000"; | |
| if(instance_id(IM_PARTY) == 0) | |
| mes "^FF0000You can't enter the Dimension Gate yet, since it wasn't generated yet!^000000"; | |
| next; | |
| switch(select(.@i_menu$+":"+( (instance_id(IM_PARTY) != 0)?"Enter Dimension":"")+":Leave")) { | |
| case 1: | |
| mes .n$; | |
| switch(checkquest(.Hunt_QDelay[.@h],PLAYTIME)) { | |
| case -1: break; | |
| case 0: | |
| case 1: | |
| mes "The "+.HG_Name$[.@h]+" hasn't stabilized yet."; | |
| mes "Please come back later."; | |
| close; | |
| case 2: | |
| completequest .Hunt_QDelay[.@h]; | |
| erasequest .Hunt_QDelay[.@h]; | |
| break; | |
| } | |
| if(getgroupid() < 99) // testing purposes | |
| if(instance_check_party(getcharid(1),.HG_Players[.@h],.HG_MinLvL[.@h],.HG_MaxLvL[.@h]) == 0) { | |
| mes "You're party doesn't meet the conditions:"; | |
| mes "Level "+.HG_MinLvL[.@h]+" - "+.HG_MaxLvL[.@h]+", at least "+.HG_Players[.@h]+" players"; | |
| close; | |
| } | |
| set .@hg_ins,instance_create(.HG_Name$[.@h]); | |
| if(.@hg_ins == -3) { | |
| mes "Do you want to close the Dimension Gate?"; | |
| if(select("- Yes:- No") - 1) close; | |
| next; | |
| mes .n$; | |
| mes "The Dimension Gate has been closed."; | |
| instance_destroy instance_id(IM_PARTY); | |
| set @HG_ID,0; | |
| close; | |
| } else if(.@hg_ins < 0) { | |
| mes "Instance creation failed."; | |
| close; | |
| } | |
| mes "The time gap will be generated soon. Please talk to me again to enter."; | |
| // Reading Normal Mob Quest IDs | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) | |
| for ( set .@m,0; .@m < getarraysize(getd(".Hunt_QID_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)))); set .@m,.@m + 2) { | |
| setarray $@mob_id[getarraysize($@mob_id)],getd(".Hunt_QID_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))+"["+.@m+"]"); | |
| set $@Max_Mobs,$@Max_Mobs + getd(".Hunt_QID_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))+"["+(.@m+1)+"]"); | |
| } | |
| // Reading MvP Quest IDs | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) | |
| for ( set .@m,0; .@m < getarraysize(getd(".Hunt_QID_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)))); set .@m,.@m + 2) { | |
| setarray $@mvp_id[getarraysize($@mvp_id)],getd(".Hunt_QID_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))+"["+.@m+"]"); | |
| setarray $@mvp_am[getarraysize($@mvp_am)],getd(".Hunt_QID_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))+"["+(.@m+1)+"]"); | |
| } | |
| close; | |
| case 2: | |
| mes .n$; | |
| switch(checkquest(.Hunt_QDelay[.@h],PLAYTIME)) { | |
| case -1: break; | |
| case 0: | |
| case 1: | |
| mes "The "+.HG_Name$[.@h]+" hasn't stabilized yet."; | |
| mes "Please come back later."; | |
| close; | |
| } | |
| switch(instance_enter(.HG_Name$[.@h])) { | |
| case IE_NOINSTANCE: | |
| mes "You didn't generate the time gap yet!"; | |
| close; | |
| case IE_NOMEMBER: | |
| case IE_OTHER: | |
| mes "Unknown Error has occurded in entering "+.HG_Name$[.@h]+"."; | |
| close; | |
| case IE_OK: | |
| mes "You'll now enter the "+.HG_Name$[.@h]+"."; | |
| mes "I'll be waiting inside, just talk to me when you are ready."; | |
| close2; | |
| if(!@HG_ID || @HG_ID != .@h) | |
| set @HG_ID,.@h; | |
| announce "["+strcharinfo(0)+"] from the party ["+getpartyname(getcharid(1))+"] is entering the "+.HG_Name$[.@h]+".", bc_all,0x00FF99; | |
| end; | |
| } | |
| close; | |
| case 3: | |
| break; | |
| } | |
| break; | |
| case 2: | |
| mes .n$; | |
| mes "Do you want to accept quests or remove Quests for this Hunting Ground?"; | |
| next; | |
| switch(select("Accept Quests:Remove current Quests:Remove previous Quests")) { | |
| case 1: break; | |
| case 2: | |
| mes .n$; | |
| mes "Every current Quest for this Hunting Ground has been removed."; | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) | |
| if(checkquest(getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")) != -1) | |
| erasequest getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]"); | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) | |
| if(checkquest(getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")) != -1) | |
| erasequest getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]"); | |
| end; | |
| case 3: | |
| mes .n$; | |
| mes "Please select the Element you want to remove the previous Quests:"; | |
| next; | |
| set .@e,select(.Ele_Menu$); | |
| mes .n$; | |
| mes "Every previous Quest for this Hunting Ground of the Element, ["+.Hunt_Ele_TxT$[.@e-1]+"], has been removed."; | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MobQ_I"+.@i+"_E"+.@e)); set .@q,.@q + 1) | |
| if(checkquest(getd(".Hunt_MobQ_I"+.@i+"_E"+.@e+"["+.@q+"]")) != -1) | |
| erasequest getd(".Hunt_MobQ_I"+.@i+"_E"+.@e+"["+.@q+"]"); | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MvPQ_I"+.@i+"_E"+.@e)); set .@q,.@q + 1) | |
| if(checkquest(getd(".Hunt_MvPQ_I"+.@i+"_E"+.@e+"["+.@q+"]")) != -1) | |
| erasequest getd(".Hunt_MvPQ_I"+.@i+"_E"+.@e+"["+.@q+"]"); | |
| end; | |
| } | |
| mes .n$; | |
| mes "For this week we have the following quest available:"; | |
| mes " "; | |
| // Reading Normal Mob Quest IDs | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) { | |
| mes "Monster Quest #"+(.@q+1)+":"; | |
| for ( set .@m,0; .@m < getarraysize(getd(".Hunt_QID_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)))); set .@m,.@m + 2) | |
| mes "> "+getd(".Hunt_QID_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+(.@m+1)+"]")+"x "+getmonsterinfo(getd(".Hunt_QID_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+.@m+"]"),MOB_NAME); | |
| setarray .@m_quest[getarraysize(.@m_quest)],getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]"); | |
| set .@q_m$,.@q_m$ + "Monster Quest #"+(.@q+1)+ ( (getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+(.@q+1)+"]") != 0)?":":""); | |
| mes " "; | |
| } | |
| set .@q_m$,.@q_m$ + ":"; | |
| // Reading MvP Quest IDs | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) { | |
| mes "MvP Quest #"+(.@q+1)+":"; | |
| for ( set .@m,0; .@m < getarraysize(getd(".Hunt_QID_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)))); set .@m,.@m + 2) | |
| mes "> "+getd(".Hunt_QID_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+(.@m+1)+"]")+"x "+getmonsterinfo(getd(".Hunt_QID_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+.@m+"]"),MOB_NAME); | |
| setarray .@m_quest[getarraysize(.@m_quest)],getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]"); | |
| set .@q_m$,.@q_m$ + "MvP Quest #"+(.@q+1)+ ( (getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+(.@q+1)+"]") != 0)?":":""); | |
| mes " "; | |
| } | |
| mes "Total Reward:"; | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) | |
| for ( set .@r,0; .@r < getarraysize(getd(".Hunt_RewardQ_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]"))); set .@r,.@r + 2) { | |
| for ( set .@a,0; .@a < getarraysize(.@reward); set .@a,.@a + 2) { | |
| set .@f,0; | |
| if(.@reward[.@a] == getd(".Hunt_RewardQ_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+.@r+"]") ) { | |
| setarray .@reward[.@a+1],(.@reward[.@a+1] + getd(".Hunt_RewardQ_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+(.@r+1)+"]")); | |
| set .@f,1; | |
| break; | |
| } | |
| } | |
| if(!.@f) | |
| setarray .@reward[getarraysize(.@reward)],getd(".Hunt_RewardQ_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+.@r+"]"),getd(".Hunt_RewardQ_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+(.@r+1)+"]"); | |
| } | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i))); set .@q,.@q + 1) | |
| for ( set .@r,0; .@r < getarraysize(getd(".Hunt_RewardQ_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]"))); set .@r,.@r + 2) { | |
| for ( set .@a,0; .@a < getarraysize(.@reward); set .@a,.@a + 2) { | |
| set .@f,0; | |
| if(.@reward[.@a] == getd(".Hunt_RewardQ_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+.@r+"]") ) { | |
| setarray .@reward[.@a+1],(.@reward[.@a+1] + getd(".Hunt_RewardQ_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+(.@r+1)+"]")); | |
| set .@f,1; | |
| break; | |
| } | |
| } | |
| if(!.@f) | |
| setarray .@reward[getarraysize(.@reward)],getd(".Hunt_RewardQ_"+getd(".Hunt_MvPQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+.@r+"]"),getd(".Hunt_RewardQ_"+getd(".Hunt_MobQ_I"+.@i+"_E"+getd(".HuntGround_I"+.@i)+"["+.@q+"]")+"["+(.@r+1)+"]"); | |
| } | |
| for ( set .@t,0; .@t < getarraysize(.@reward); set .@t,.@t + 2) | |
| if(.@reward[.@t] == 1) // Zeny | |
| mes .@reward[.@t+1]+"x Zeny"; | |
| else if(.@reward[.@t] >= 501) // Items | |
| mes .@reward[.@t+1]+"x "+getitemname(.@reward[.@t]); | |
| else | |
| mes .@reward[.@t+1]+"x "+getd(""+.Hunt_VarD$[.@reward[.@t]]); | |
| mes " "; | |
| mes "EXP Reward:"; | |
| mes "You will gain the same EXP for each Mob you had to kill for the Quest again!"; | |
| while(1) { | |
| next; | |
| mes .n$; | |
| mes "Please choose which Quest you want to accept/turn in:"; | |
| next; | |
| set .@q_id,prompt(.@q_m$) - 1; | |
| if(.@q_id == 254) break; | |
| mes .n$; | |
| set .@q_status,checkquest(.@m_quest[.@q_id],HUNTING); | |
| if(.@q_status < 0) { | |
| if(getgroupid() < 99) // testing purposes | |
| if(BaseLevel < .HG_MinLvL[.@h] || BaseLevel > .HG_MaxLvL[.@h]) { | |
| mes "I'm sorry, but you can't accept this quest of this level range."; | |
| mes "Please choose the respective option for your level."; | |
| close; | |
| } | |
| setquest .@m_quest[.@q_id]; | |
| mes "Quest accepted."; | |
| } else if(.@q_status == 1) { | |
| mes "You are not finished with the Hunting yet. Please come back as soon as you have done that."; | |
| mes "Or do you want to abort the Hunting?"; | |
| if(select("Continue:Abort") == 1) close; | |
| next; | |
| mes .n$; | |
| mes "Quest aborted."; | |
| erasequest .@m_quest[.@q_id]; | |
| } else if(.@q_status == 2) { | |
| for ( set .@q,0; .@q < getarraysize(getd(".Hunt_QID_"+.@m_quest[.@q_id])); set .@q,.@q + 2) { | |
| set .@mob_bexp,.@mob_bexp + (strmobinfo(6,getd(".Hunt_QID_"+.@m_quest[.@q_id]+"["+.@q+"]"))*getd(".Hunt_QID_"+.@m_quest[.@q_id]+"["+(.@q+1)+"]")); | |
| set .@mob_jexp,.@mob_jexp + (strmobinfo(7,getd(".Hunt_QID_"+.@m_quest[.@q_id]+"["+.@q+"]"))*getd(".Hunt_QID_"+.@m_quest[.@q_id]+"["+(.@q+1)+"]")); | |
| } | |
| mes "You have finished the quest, here is your reward:"; | |
| getexp .@mob_bexp,.@mob_jexp; | |
| for ( set .@r,0; .@r < getarraysize(getd(".Hunt_RewardQ_"+.@m_quest[.@q_id])); set .@r,.@r + 2) | |
| if(getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]") == 1) { // Zeny | |
| mes "> "+getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+(.@r+1)+"]")+"x Zeny"; | |
| set Zeny,Zeny + getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+(.@r+1)+"]"); | |
| } else if(getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]") >= 501) { // Items | |
| mes "> "+getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+(.@r+1)+"]")+"x "+getitemname(getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]")); | |
| getitem getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]"),getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+(.@r+1)+"]"); | |
| } else { | |
| mes "> "+getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+(.@r+1)+"]")+"x "+getd(""+.Hunt_VarD$[getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]")]); | |
| setd(""+.Hunt_VarN$[getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]")]),getd(""+.Hunt_VarN$[getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+.@r+"]")]) + getd(".Hunt_RewardQ_"+.@m_quest[.@q_id]+"["+(.@r+1)+"]"); | |
| } | |
| completequest .@m_quest[.@q_id]; | |
| erasequest .@m_quest[.@q_id]; | |
| } | |
| } | |
| end; | |
| case 3: | |
| break; | |
| } | |
| end; | |
| OnInit: | |
| set .n$,"["+strnpcinfo(0)+"]"; | |
| // Instance Level and Player Settings | |
| // = Order is important! | |
| // = .HG_Name$ > Need to be the same as in instance_db.txt | |
| setarray .HG_Name$[0],"Hunting Ground 99","Hunting Ground 115","Hunting Ground 130","Hunting Ground 145","Hunting Ground 160","Hunting Ground 175"; | |
| setarray .HG_MinLvL[0],99,115,130,145,160,175; // Minimum Level | |
| setarray .HG_MaxLvL[0],114,129,144,159,174,175; // Maximum Level | |
| setarray .HG_Players[0],2,2,4,4,6,8; // Required Players to enter | |
| for ( set .@h,0; .@h < getarraysize(.HG_Name$); set .@h,.@h + 1) | |
| set .HG_Menu$,.HG_Menu$ + "["+.HG_MinLvL[.@h] + ( (.HG_MaxLvL[.@h] != .HG_MinLvL[.@h])?" - "+.HG_MaxLvL[.@h]:"+")+"]" + ( (.HG_Name$[.@h+1] != "")?":":""); | |
| // Delay Quest ID's | |
| setarray .Hunt_QDelay[0],160200,160201,160202,160203,160204,160205; | |
| // Element Display Text | |
| setarray .Hunt_Ele_TxT$[0],"Fire","Water","Wind","Earth","Shadow","Holy"; | |
| for ( set .@e,0; .@e < getarraysize(.Hunt_Ele_TxT$); set .@e,.@e + 1) | |
| set .Ele_Menu$,.Ele_Menu$ + "["+.Hunt_Ele_TxT$[.@e]+"]" + ( (.Hunt_Ele_TxT$[.@e+1] != "")?":":""); | |
| // ======= Monster Quest Settings ======= | |
| // .Hunt_MobQ_I<Instance ID>_E<Element> = Mob Quest IDs | |
| // .Hunt_MvPQ_I<Instance ID>_E<Element> = MvP Quest IDs | |
| // .Hunt_QID_<Quest ID> = "MobID,Quantity" in the respective Quest ID | |
| // Note: You are free to add more Quests with more Mobs, but remember if they are custom quests to add them into the quest_db and questid2display.txt. | |
| // Note2: If you change Mob ID's/Amounts, remember to change them in the quest_db for the respective quest id too | |
| // ---- Level 99 - 114 ------ | |
| // = Fire | |
| setarray .Hunt_MobQ_I1_E1[0],160000; | |
| setarray .Hunt_MvPQ_I1_E1[0],160001; | |
| setarray .Hunt_QID_160000[0],2071,100,1213,100,2154,100; | |
| setarray .Hunt_QID_160001[0],1086,1; | |
| // = Water | |
| setarray .Hunt_MobQ_I1_E2[0],160002; | |
| setarray .Hunt_MvPQ_I1_E2[0],160003; | |
| setarray .Hunt_QID_160002[0],1883,100,1515,100,2417,100; | |
| setarray .Hunt_QID_160003[0],1252,1; | |
| // = Wind | |
| setarray .Hunt_MobQ_I1_E3[0],160004; | |
| setarray .Hunt_MvPQ_I1_E3[0],160005; | |
| setarray .Hunt_QID_160004[0],1376,100,1692,100,2418,100; | |
| setarray .Hunt_QID_160005[0],1059,1; | |
| // = Earth | |
| setarray .Hunt_MobQ_I1_E4[0],160006; | |
| setarray .Hunt_MvPQ_I1_E4[0],160007; | |
| setarray .Hunt_QID_160006[0],1881,100,1322,100,1784,100; | |
| setarray .Hunt_QID_160007[0],1190,1; | |
| // = Shadow | |
| setarray .Hunt_MobQ_I1_E5[0],160008; | |
| setarray .Hunt_MvPQ_I1_E5[0],160009; | |
| setarray .Hunt_QID_160008[0],1256,100,1109,100,1416,100; | |
| setarray .Hunt_QID_160009[0],1039,1; | |
| // = Holy | |
| setarray .Hunt_MobQ_I1_E6[0],160010; | |
| setarray .Hunt_MvPQ_I1_E6[0],160011; | |
| setarray .Hunt_QID_160010[0],2420,100,2427,100; | |
| setarray .Hunt_QID_160011[0],1096,1; | |
| // ---- Level 115 - 129 ------ | |
| // = Fire | |
| setarray .Hunt_MobQ_I2_E1[0],160030; | |
| setarray .Hunt_MvPQ_I2_E1[0],160031; | |
| setarray .Hunt_QID_160030[0],2415,100,1310,100,2182,100; | |
| setarray .Hunt_QID_160031[0],1115,1; | |
| // = Water | |
| setarray .Hunt_MobQ_I2_E2[0],160032; | |
| setarray .Hunt_MvPQ_I2_E2[0],160033; | |
| setarray .Hunt_QID_160032[0],1775,100,1206,100,2204,100; | |
| setarray .Hunt_QID_160033[0],1779,1; | |
| // = Wind | |
| setarray .Hunt_MobQ_I2_E3[0],160034; | |
| setarray .Hunt_MvPQ_I2_E3[0],160035; | |
| setarray .Hunt_QID_160034[0],1259,100,1994,100,1677,100; | |
| setarray .Hunt_QID_160035[0],1688,1; | |
| // = Earth | |
| setarray .Hunt_MobQ_I2_E4[0],160036; | |
| setarray .Hunt_MvPQ_I2_E4[0],160037; | |
| setarray .Hunt_QID_160036[0],1995,100,1194,100,1678,100; | |
| setarray .Hunt_QID_160037[0],1511,1; | |
| // = Shadow | |
| setarray .Hunt_MobQ_I2_E5[0],160038; | |
| setarray .Hunt_MvPQ_I2_E5[0],160039; | |
| setarray .Hunt_QID_160038[0],2314,100,1379,100,1505,100; | |
| setarray .Hunt_QID_160039[0],1157,1; | |
| // = Holy | |
| setarray .Hunt_MobQ_I2_E6[0],160040; | |
| setarray .Hunt_MvPQ_I2_E6[0],160041; | |
| setarray .Hunt_QID_160040[0],1371,100,1992,100; | |
| setarray .Hunt_QID_160041[0],1388,1; | |
| // ---- Level 130 - 144 ------ | |
| // = Fire | |
| setarray .Hunt_MobQ_I3_E1[0],160060; | |
| setarray .Hunt_MvPQ_I3_E1[0],160061; | |
| setarray .Hunt_QID_160060[0],2353,200,1714,200,1837,200; | |
| setarray .Hunt_QID_160061[0],2068,2; | |
| // = Water | |
| setarray .Hunt_MobQ_I3_E2[0],160062; | |
| setarray .Hunt_MvPQ_I3_E2[0],160063; | |
| setarray .Hunt_QID_160062[0],1697,200,2016,200,1671,200; | |
| setarray .Hunt_QID_160063[0],2202,2; | |
| // = Wind | |
| setarray .Hunt_MobQ_I3_E3[0],160064; | |
| setarray .Hunt_MvPQ_I3_E3[0],160065; | |
| setarray .Hunt_QID_160064[0],2313,200,1208,200,1774,200; | |
| setarray .Hunt_QID_160065[0],1251,2; | |
| // = Earth | |
| setarray .Hunt_MobQ_I3_E4[0],160066; | |
| setarray .Hunt_MvPQ_I3_E4[0],160067; | |
| setarray .Hunt_QID_160066[0],2013,200,1993,200,1717,200; | |
| setarray .Hunt_QID_160067[0],1885,2; | |
| // = Shadow | |
| setarray .Hunt_MobQ_I3_E5[0],160068; | |
| setarray .Hunt_MvPQ_I3_E5[0],160069; | |
| setarray .Hunt_QID_160068[0],1866,200,1219,200,1752,200; | |
| setarray .Hunt_QID_160069[0],1373,2; | |
| // = Holy | |
| setarray .Hunt_MobQ_I3_E6[0],160070; | |
| setarray .Hunt_MvPQ_I3_E6[0],160071; | |
| setarray .Hunt_QID_160070[0],1713,200,1655,200; | |
| setarray .Hunt_QID_160071[0],1685,2; | |
| // ---- Level 145 - 159 ------ | |
| // = Fire | |
| setarray .Hunt_MobQ_I4_E1[0],160090; | |
| setarray .Hunt_MvPQ_I4_E1[0],160091; | |
| setarray .Hunt_QID_160090[0],1833,200,1652,200,1634,200; | |
| setarray .Hunt_QID_160091[0],2249,2; | |
| // = Water | |
| setarray .Hunt_MobQ_I4_E2[0],160092; | |
| setarray .Hunt_MvPQ_I4_E2[0],160093; | |
| setarray .Hunt_QID_160092[0],2092,200,1681,200,1636,200; | |
| setarray .Hunt_QID_160093[0],2319,2; | |
| // = Wind | |
| setarray .Hunt_MobQ_I4_E3[0],160094; | |
| setarray .Hunt_MvPQ_I4_E3[0],160095; | |
| setarray .Hunt_QID_160094[0],1716,200,1656,200,2364,200; | |
| setarray .Hunt_QID_160095[0],1630,2; | |
| // = Earth | |
| setarray .Hunt_MobQ_I4_E4[0],160096; | |
| setarray .Hunt_MvPQ_I4_E4[0],160097; | |
| setarray .Hunt_QID_160096[0],1654,200,2084,200,2133,200; | |
| setarray .Hunt_QID_160097[0],1312,2; | |
| // = Shadow | |
| setarray .Hunt_MobQ_I4_E5[0],160098; | |
| setarray .Hunt_MvPQ_I4_E5[0],160099; | |
| setarray .Hunt_QID_160098[0],1867,200,2468,200,2469,200; | |
| setarray .Hunt_QID_160099[0],1719,2; | |
| // = Holy | |
| setarray .Hunt_MobQ_I4_E6[0],160100; | |
| setarray .Hunt_MvPQ_I4_E6[0],160101; | |
| setarray .Hunt_QID_160100[0],1637,200,2221,200; | |
| setarray .Hunt_QID_160101[0],1765,2; | |
| // ---- Level 160 - 174 ------ | |
| // = Fire | |
| setarray .Hunt_MobQ_I5_E1[0],160120; | |
| setarray .Hunt_MvPQ_I5_E1[0],160121; | |
| setarray .Hunt_QID_160120[0],2369,300,3022,300,3023,300; | |
| setarray .Hunt_QID_160121[0],1646,2,2249,2; | |
| // = Water | |
| setarray .Hunt_MobQ_I5_E2[0],160122; | |
| setarray .Hunt_MvPQ_I5_E2[0],160123; | |
| setarray .Hunt_QID_160122[0],2367,300,2020,300,2021,300; | |
| setarray .Hunt_QID_160123[0],2319,2,2534,2; | |
| // = Wind | |
| setarray .Hunt_MobQ_I5_E3[0],160124; | |
| setarray .Hunt_MvPQ_I5_E3[0],160125; | |
| setarray .Hunt_QID_160124[0],2758,300,2284,300,2365,300; | |
| setarray .Hunt_QID_160125[0],2251,2,2535,2; | |
| // = Earth | |
| setarray .Hunt_MobQ_I5_E4[0],160126; | |
| setarray .Hunt_MvPQ_I5_E4[0],160127; | |
| setarray .Hunt_QID_160126[0],2132,300,2019,300,2370,300; | |
| setarray .Hunt_QID_160127[0],2165,2,2253,2; | |
| // = Shadow | |
| setarray .Hunt_MobQ_I5_E5[0],160128; | |
| setarray .Hunt_MvPQ_I5_E5[0],160129; | |
| setarray .Hunt_QID_160128[0],2282,300,2281,300,2991,300; | |
| setarray .Hunt_QID_160129[0],1871,2,2131,2; | |
| // = Holy | |
| setarray .Hunt_MobQ_I5_E6[0],160130; | |
| setarray .Hunt_MvPQ_I5_E6[0],160131; | |
| setarray .Hunt_QID_160130[0],1637,300,2221,300; | |
| setarray .Hunt_QID_160131[0],1751,2,2228,2; | |
| // ---- Level 175 ------ | |
| // = Fire | |
| setarray .Hunt_MobQ_I6_E1[0],160150; | |
| setarray .Hunt_MvPQ_I6_E1[0],160151; | |
| setarray .Hunt_QID_160150[0],1634,350,2222,350; | |
| setarray .Hunt_QID_160151[0],2532,3,1646,3; | |
| // = Water | |
| setarray .Hunt_MobQ_I6_E2[0],160152; | |
| setarray .Hunt_MvPQ_I6_E2[0],160153; | |
| setarray .Hunt_QID_160152[0],2184,350,2224,350; | |
| setarray .Hunt_QID_160153[0],2534,3,2238,3; | |
| // = Wind | |
| setarray .Hunt_MobQ_I6_E3[0],160154; | |
| setarray .Hunt_MvPQ_I6_E3[0],160155; | |
| setarray .Hunt_QID_160154[0],2477,350,2919,350; | |
| setarray .Hunt_QID_160155[0],2535,3,1650,3; | |
| // = Earth | |
| setarray .Hunt_MobQ_I6_E4[0],160156; | |
| setarray .Hunt_MvPQ_I6_E4[0],160157; | |
| setarray .Hunt_QID_160156[0],2901,350,2916,350; | |
| setarray .Hunt_QID_160157[0],2533,3,1648,3; | |
| // = Shadow | |
| setarray .Hunt_MobQ_I6_E5[0],160158; | |
| setarray .Hunt_MvPQ_I6_E5[0],160159; | |
| setarray .Hunt_QID_160158[0],2989,350,3252,350; | |
| setarray .Hunt_QID_160159[0],1871,3,2255,3; | |
| // = Holy | |
| setarray .Hunt_MobQ_I6_E6[0],160160; | |
| setarray .Hunt_MvPQ_I6_E6[0],160161; | |
| setarray .Hunt_QID_160160[0],1637,350,2221,350; | |
| setarray .Hunt_QID_160161[0],1649,3,2235,3; | |
| // ======= Reward Settings ======= | |
| // - Identifiers: | |
| // 1 = Zeny | |
| // 2 = Cash Points | |
| // 3 = Kafra Points | |
| // 4 = Event Points | |
| // For Items = Item ID | |
| // Display Name of Variables for Players | |
| setarray .Hunt_VarD$[1],"Cash Points","Kafra Points","Event Points"; | |
| // Variable Names | |
| setarray .Hunt_VarN$[1],"#CASHPOINTS","#KAFRAPOINTS","EventPoints"; | |
| // Note: You can add more Variables if you want and rename the current ones of course | |
| // But remember to note it like above for better overview which Identfier it has | |
| // The Idenfier is the "Index" of the Array + 1, see above | |
| // Example: Variable for Quest Points, add it after the last Value of each Array | |
| // .Hunt_VarD$ = "Quest Points" > Display Name for Players | |
| // .Hunt_VarN$ = "QuestPoints" > Variable Name for the Script | |
| // The Idenfier for it would be 5, so the Index would be 4 | |
| // Rewards per Quest | |
| // ---- Level 99 - 114 --- | |
| setarray .Hunt_RewardQ_160000[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160001[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160002[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160003[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160004[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160005[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160006[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160007[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160008[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160009[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160010[0],1,10000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160011[0],1,10000,7517,50,13607,1; | |
| // ---- Level 115 - 129 --- | |
| setarray .Hunt_RewardQ_160030[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160031[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160032[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160033[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160034[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160035[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160036[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160037[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160038[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160039[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160040[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160041[0],1,100000,7517,50,13607,1; | |
| // ---- Level 130 - 144 --- | |
| setarray .Hunt_RewardQ_160060[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160061[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160062[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160063[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160064[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160065[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160066[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160067[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160068[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160069[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160070[0],1,100000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160071[0],1,100000,7517,50,13607,1; | |
| // ---- Level 145 - 159 --- | |
| setarray .Hunt_RewardQ_160090[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160091[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160092[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160093[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160094[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160095[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160096[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160097[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160098[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160099[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160100[0],1,500000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160101[0],1,500000,7517,50,13607,1; | |
| // ---- Level 160 - 174 --- | |
| setarray .Hunt_RewardQ_160120[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160121[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160122[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160123[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160124[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160125[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160126[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160127[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160128[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160129[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160130[0],1,1000000,7517,50,13607,1; | |
| setarray .Hunt_RewardQ_160131[0],1,1000000,7517,50,13607,1; | |
| // ---- Level 175 --- | |
| setarray .Hunt_RewardQ_160150[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160151[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160152[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160153[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160154[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160155[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160156[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160157[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160158[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160159[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160160[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| setarray .Hunt_RewardQ_160161[0],1,3000000,7517,500,13607,5,6438,20,6439,20; | |
| OnMon0000: | |
| // Random every Week, but you can also define it manually: | |
| // 1 = Fire, 2 = Water, 3 = Wind, 4 = Earth, 5 = Shadow, 6 = Holy | |
| set .HuntGround_I1,rand(1,6); // Instance Element for Level 99-114 | |
| set .HuntGround_I2,rand(1,6); // Instance Element for Level 115-129 | |
| set .HuntGround_I3,rand(1,6); // Instance Element for Level 130-144 | |
| set .HuntGround_I4,rand(1,6); // Instance Element for Level 145-159 | |
| set .HuntGround_I5,rand(1,6); // Instance Element for Level 160-174 | |
| set .HuntGround_I6,rand(1,6); // Instance Element for Level 175+ | |
| end; | |
| } | |
| gef_fild14,1,1,0 script #HuntGround_Instance -1,{ | |
| OnInit: | |
| disablenpc strnpcinfo(0); | |
| end; | |
| OnInstanceDestroy: | |
| disablenpc 'npc$; | |
| end; | |
| OnInstanceInit: | |
| bindatcmd "hgstatus",instance_npcname(strnpcinfo(0))+"::OnHGStatus"; | |
| set 'npc$,instance_npcname("#HuntGround_Instance"); | |
| set 'map$,instance_mapname(strnpcinfo(4)); | |
| set 'label$,instance_npcname(strnpcinfo(0))+"::OnHuntMobDeath"; | |
| set 'mvp_label$,instance_npcname(strnpcinfo(0))+"::OnHuntMvPDeath"; | |
| enablenpc 'npc$; | |
| enablenpc instance_npcname("#HG_Exit"); | |
| setmapflag 'map$,mf_nowarpto; | |
| setmapflag 'map$,mf_nowarp; | |
| setmapflag 'map$,mf_nogo; | |
| setmapflag 'map$,mf_noteleport; | |
| setmapflag 'map$,mf_nosave; | |
| setmapflag 'map$,mf_noreturn; | |
| setmapflag 'map$,mf_nomemo; | |
| setmapflag 'map$,mf_nochat; | |
| setmapflag 'map$,mf_novending; | |
| setmapflag 'map$,mf_nobranch; | |
| setmapflag 'map$,mf_partylock; | |
| setmapflag 'map$,mf_noloot; | |
| enablenpc instance_npcname("Exiled Warrior#HG"); | |
| sleep 2000; | |
| if(getarraysize('mob_id) < 1) { | |
| copyarray 'mob_id[0],$@mob_id[0],getarraysize($@mob_id); | |
| set 'Max_Mobs,$@Max_Mobs; | |
| copyarray 'mvp_id[0],$@mvp_id[0],getarraysize($@mvp_id); | |
| copyarray 'mvp_am[0],$@mvp_am[0],getarraysize($@mvp_am); | |
| set 'Max_MvP,getarraysize('mvp_id); | |
| } | |
| deletearray $@mob_id[0],getarraysize($@mob_id); | |
| deletearray $@mvp_id[0],getarraysize($@mvp_id); | |
| deletearray $@mvp_am[0],getarraysize($@mvp_am); | |
| end; | |
| OnHuntMobSpawn: | |
| set 'spawn,('Max_Mobs/2)/10; | |
| for ( set .@s,0; .@s < getarraysize('mob_id); set .@s,.@s + 1) { | |
| set .@r,0; | |
| while(.@r < 'spawn) { | |
| monster 'map$,0,0,getmonsterinfo('mob_id[.@s],MOB_NAME),'mob_id[.@s],5,'label$; | |
| set .@r,.@r + 1; | |
| sleep 100; | |
| } | |
| } | |
| end; | |
| OnHGStatus: | |
| dispbottom "[Hunting Ground - Status:]"; | |
| dispbottom "> Mobs Killed: "+('C_Mobs+'Mobs_CT)+"/"+'Max_Mobs; | |
| dispbottom "> MvP Spawn after each "+('Max_Mobs/'Max_MvP)+" killed Mobs"; | |
| dispbottom "> MvPs Killed: "+'MvP_Cur+"/"+'Max_MvP; | |
| end; | |
| OnHuntMvPDeath: | |
| set 'MvP_CT,'MvP_CT + 1; | |
| if('mvp_am['MvP_Cur] > 'MvP_CT) { | |
| instance_announce instance_id(),"[Exiled Warrior]: Congratulation, now prepare for the next ["+getmonsterinfo('mvp_id['MvP_Cur],MOB_NAME)+"]! You have 10 seconds to do so!",bc_all; | |
| getmapxy(.@map$,.@x,.@y,BL_PC); | |
| sleep 10000; | |
| areamonster 'map$,(.@x-10),(.@y-10),(.@x+10),(.@y+10),getmonsterinfo('mvp_id['MvP_Cur],MOB_NAME),'mvp_id['MvP_Cur],1,'mvp_label$; | |
| instance_announce instance_id(),"[Exiled Warrior]: The MvP ["+getmonsterinfo('mvp_id['MvP_Cur],MOB_NAME)+"] has been re-spawned near you!",bc_all; | |
| end; | |
| } | |
| if('MvP_Cur < 'Max_MvP) | |
| set 'MvP_Cur,'MvP_Cur + 1; | |
| donpcevent 'npc$+"::OnHuntMobSpawn"; | |
| set 'MvP_CT,0; | |
| end; | |
| OnHuntMobDeath: | |
| if('Mobs_CT < 'Max_Mobs) | |
| set 'C_Mobs,'C_Mobs + 1; | |
| if('C_Mobs == (('Max_Mobs/'Max_MvP) - 50)) | |
| instance_announce instance_id(),"[Exiled Warrior]: The MvP ["+getmonsterinfo('mvp_id['MvP_Cur],MOB_NAME)+"] will appear after the next 50 monsters!",bc_all; | |
| if('C_Mobs == ('Max_Mobs/'Max_MvP) && mobcount('map$,'mvp_label$) < 1) { | |
| getmapxy(.@map$,.@x,.@y,BL_PC); | |
| instance_announce instance_id(),"[Exiled Warrior]: The MvP ["+getmonsterinfo('mvp_id['MvP_Cur],MOB_NAME)+"] will appear in 10 seconds near you!",bc_all; | |
| sleep 10000; | |
| areamonster 'map$,(.@x-10),(.@y-10),(.@x+10),(.@y+10),getmonsterinfo('mvp_id['MvP_Cur],MOB_NAME),'mvp_id['MvP_Cur],1,'mvp_label$; | |
| killmonster 'map$,'label$; | |
| set 'Mobs_CT,'Mobs_CT + 'C_Mobs; | |
| set 'C_Mobs,0; | |
| end; | |
| } | |
| if(!killedrid && getgroupid() > 0) { | |
| instance_announce instance_id(),"Dear GM, don't use @killmonster in a instance! Gratulation you broke the instance!",bc_self; | |
| end; | |
| } else if(!killedrid && getgroupid() < 1) { | |
| instance_announce instance_id(),"An error has occured, monster has died without any player causing it's death (not sure why), please report this immediatly!",bc_map; | |
| end; | |
| } | |
| monster 'map$,0,0,getmonsterinfo(killedrid,MOB_NAME),killedrid,1,'label$; | |
| end; | |
| } | |
| gef_fild14,356,220,6 script Exiled Warrior#HG 4_F_VALKYRIE2,{ | |
| mes .n$; | |
| mes "Welcome to the Hunting Grounds!"; | |
| if(is_party_leader() == false) { | |
| mes "But I'm sorry, only the party leader can talk to me."; | |
| close; | |
| } | |
| mes "Are you ready to hunt some mobs?"; | |
| next; | |
| if(select("- Yes:- No") - 1) { | |
| mes .n$; | |
| mes "Okay, talk to me again whenever you are ready!"; | |
| close; | |
| } | |
| mes .n$; | |
| mes "Let the Hunting begin!!!"; | |
| close2; | |
| instance_announce instance_id(),"[Exiled Warrior]: You have 10 seconds to prepare!",bc_all; | |
| sleep2 10000; | |
| instance_announce instance_id(),"[Exiled Warrior]: Info: You can type \"@hgstatus\" to recieve the current status of your hunt!",bc_all; | |
| donpcevent 'npc$+"::OnHuntMobSpawn"; | |
| disablenpc instance_npcname(strnpcinfo(0)); | |
| end; | |
| OnInit: | |
| set .n$,"["+strnpcinfo(1)+"]"; | |
| disablenpc strnpcinfo(0); | |
| end; | |
| OnInstanceDestroy: | |
| disablenpc instance_npcname(strnpcinfo(0)); | |
| end; | |
| } | |
| gef_fild14,371,219,0 script #HG_Exit 45,3,3,{ | |
| mes "[HG Exit]"; | |
| mes "Do you really want to leave the Hunting Ground?"; | |
| mes "Be warned, that you can't re-enter until the time gap has stabilized itself again!"; | |
| if(select("> Yes:> Nevermind") - 1) close; | |
| setquest getvariableofnpc(.Hunt_QDelay[@HG_ID],"Exiled Warrior"); | |
| warp "SavePoint",0,0; | |
| set @HG_ID,0; | |
| end; | |
| OnInit: | |
| disablenpc strnpcinfo(0); | |
| end; | |
| OnInstanceDestroy: | |
| unbindatcmd "hgstatus"; | |
| disablenpc instance_npcname(strnpcinfo(0)); | |
| end; | |
| } |