diff options
Diffstat (limited to 'npc/custom')
25 files changed, 304 insertions, 482 deletions
diff --git a/npc/custom/battleground/bg_common.txt b/npc/custom/battleground/bg_common.txt index 8b99deb39..54b13bb28 100644 --- a/npc/custom/battleground/bg_common.txt +++ b/npc/custom/battleground/bg_common.txt @@ -137,14 +137,14 @@ bat_room,160,140,3 script Prince Croix 4_M_CRU_CRUA,{ // ********************************************************************* function script Time2Str { set .@time_left, getarg(0) - gettimetick(2); - + set .@Days, .@time_left / 86400; set .@time_left, .@time_left - (.@Days * 86400); set .@Hours, .@time_left / 3600; set .@time_left, .@time_left - (.@Hours * 3600); set .@Minutes, .@time_left / 60; set .@time_left, .@time_left - (.@Minutes * 60); - + set .@Time$, ""; if( .@Days > 1 ) set .@Time$, .@Time$ + .@Days + " days, "; @@ -165,7 +165,7 @@ function script Time2Str { set .@Time$, .@Time$ + .@time_left + " seconds."; else if( .@time_left == 1 ) set .@Time$, .@Time$ + .@time_left + " second."; - + return .@Time$; } @@ -203,7 +203,7 @@ bat_room,156,178,5 script Tierra Valley Officer#1 4_M_KY_KNT,{ mes "Please sign up for an army with Prince Croix or General Guillaume!"; close; } - + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; next; if( select("I want to join your army!:End Conversation") == 2 ) @@ -226,7 +226,7 @@ bat_room,156,178,5 script Tierra Valley Officer#1 4_M_KY_KNT,{ mes "Stand-by for Tierra Gorge Battle until the time limit passes."; close; } - + if( BaseLevel < 80 ) { mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; @@ -343,7 +343,7 @@ bat_room,164,178,5 script Tierra Valley Officer#3 4_M_KY_KNT,{ mes "Please sign up for an army with Prince Croix or General Guillaume!"; close; } - + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; next; if( select("I want to join your army!:End Conversation") == 2 ) @@ -1260,7 +1260,7 @@ bat_room,160,150,3 script Erundek 4_M_MANAGER,{ case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; } - + break; case 3: // Valor Badges mes "[Erundek]"; @@ -1278,7 +1278,7 @@ bat_room,160,150,3 script Erundek 4_M_MANAGER,{ case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; } - + break; case 4: // Heroism Badge mes "[Erundek]"; @@ -1286,7 +1286,7 @@ bat_room,160,150,3 script Erundek 4_M_MANAGER,{ mes "This shop is not available at the moment."; close; } - + mes "[Erundek]"; mes "What item do you want to exchange?"; mes "If you are not sure, check the catalog."; @@ -1305,21 +1305,21 @@ bat_room,160,150,3 script Erundek 4_M_MANAGER,{ mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000."; mes "Are you sure you want this item?"; next; - + if( select("Yes:No") == 2 ) { mes "[Erundek]"; mes "Do you need more time to check the items?"; close; } - + if( countitem(.@Badge) < .@Value ) { mes "[Erundek]"; mes "I'm sorry, but you don't have enough badges to exchange."; close; } - + delitem .@Badge,.@Value; getitem .@Item_ID,1; mes "[Erundek]"; diff --git a/npc/custom/battleground/bg_flavius_01.txt b/npc/custom/battleground/bg_flavius_01.txt index fd0cf9112..30693da21 100644 --- a/npc/custom/battleground/bg_flavius_01.txt +++ b/npc/custom/battleground/bg_flavius_01.txt @@ -54,7 +54,7 @@ OnReadyCheck: end; set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume"); set .@Croix, getwaitingroomstate(0,"Fl1R_Croix"); - + if( .@Guillaume < 10 || .@Croix < 10 ) { mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400; diff --git a/npc/custom/battleground/bg_flavius_02.txt b/npc/custom/battleground/bg_flavius_02.txt index f7b7756f4..c735614c1 100644 --- a/npc/custom/battleground/bg_flavius_02.txt +++ b/npc/custom/battleground/bg_flavius_02.txt @@ -54,7 +54,7 @@ OnReadyCheck: end; set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume"); set .@Croix, getwaitingroomstate(0,"Fl2R_Croix"); - + if( .@Guillaume < 10 || .@Croix < 10 ) { mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000; diff --git a/npc/custom/battleground/bg_kvm01.txt b/npc/custom/battleground/bg_kvm01.txt index aa12759b9..be826215e 100644 --- a/npc/custom/battleground/bg_kvm01.txt +++ b/npc/custom/battleground/bg_kvm01.txt @@ -11,7 +11,7 @@ bat_room,253,227,4 script Registration::KvM01R_Guillaume 4_M_KY_KNT,{ // KvM Gui OnInit: waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnGuillaumeJoin",1; end; - + OnEnterBG: set $@KvM01BG_id1, waitingroom2bg("bat_c01",53,128,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie"); end; @@ -150,7 +150,7 @@ OnTimer27000: OnTimer28000: donpcevent "::OnKvM01LightB"; end; - + OnTimer29000: donpcevent "::OnKvM01LightC"; end; @@ -205,7 +205,7 @@ OnTimer330000: OnGuillaumeWin: set $@KvM01BG, 3; set $@KvM01BG_Victory, 1; - + stopnpctimer; sleep 2000; mapannounce "bat_c01","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; diff --git a/npc/custom/battleground/bg_kvm02.txt b/npc/custom/battleground/bg_kvm02.txt index f2f5f7ca1..91e594a90 100644 --- a/npc/custom/battleground/bg_kvm02.txt +++ b/npc/custom/battleground/bg_kvm02.txt @@ -11,7 +11,7 @@ bat_room,225,227,4 script Registration::KvM02R_Guillaume 4_M_KY_KNT,{ // KvM Gui OnInit: waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnGuillaumeJoin",1; end; - + OnEnterBG: set $@KvM02BG_id1, waitingroom2bg("bat_c02",53,128,"KvM02_BG::OnGuillaumeQuit","KvM02_BG::OnGuillaumeDie"); end; @@ -150,7 +150,7 @@ OnTimer27000: OnTimer28000: donpcevent "::OnKvM02LightB"; end; - + OnTimer29000: donpcevent "::OnKvM02LightC"; end; @@ -205,7 +205,7 @@ OnTimer330000: OnGuillaumeWin: set $@KvM02BG, 3; set $@KvM02BG_Victory, 1; - + stopnpctimer; sleep 2000; mapannounce "bat_c02","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; diff --git a/npc/custom/battleground/bg_kvm03.txt b/npc/custom/battleground/bg_kvm03.txt index f38e81bd1..33edb0be7 100644 --- a/npc/custom/battleground/bg_kvm03.txt +++ b/npc/custom/battleground/bg_kvm03.txt @@ -11,7 +11,7 @@ bat_room,197,227,4 script Registration::KvM03R_Guillaume 4_M_KY_KNT,{ // KvM Gui OnInit: waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnGuillaumeJoin",1; end; - + OnEnterBG: set $@KvM03BG_id1, waitingroom2bg("bat_c03",53,128,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie"); end; @@ -150,7 +150,7 @@ OnTimer27000: OnTimer28000: donpcevent "::OnKvM03LightB"; end; - + OnTimer29000: donpcevent "::OnKvM03LightC"; end; @@ -205,7 +205,7 @@ OnTimer330000: OnGuillaumeWin: set $@KvM03BG, 3; set $@KvM03BG_Victory, 1; - + stopnpctimer; sleep 2000; mapannounce "bat_c03","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; diff --git a/npc/custom/battleground/bg_tierra_01.txt b/npc/custom/battleground/bg_tierra_01.txt index 671c2d929..797b3a389 100644 --- a/npc/custom/battleground/bg_tierra_01.txt +++ b/npc/custom/battleground/bg_tierra_01.txt @@ -69,7 +69,7 @@ OnReadyCheck: bg_monster $@TierraBG1_id1,"bat_a01",176,345,"Food Depot",1909,"Tierra_BG1::OnGuillaumeBreak"; bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Storage",1910,"Tierra_BG1::OnCroixBreak"; bg_monster 0,"bat_a01",273,204,"Neutrality Flag",1911,"Tierra_BG1::OnNeutralBreak"; - + set .Neutral_Base, 0; set $@TierraBG1_Victory, 0; @@ -94,7 +94,7 @@ OnReadyCheck: mapannounce "bat_a01","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF; sleep 2000; mapannounce "bat_a01","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000; - + initnpctimer; end; @@ -120,7 +120,7 @@ OnNeutralBreak: set .Guardian_1, bg_monster(.Neutral_Base,"bat_a01",280,233,"Guardian",1949,"Tierra_BG1::OnGuardian1"); else bg_monster_set_team .Guardian_1, .Neutral_Base; - + if( .Guardian_2 == 0 ) set .Guardian_2, bg_monster(.Neutral_Base,"bat_a01",287,203,"Guardian",1950,"Tierra_BG1::OnGuardian2"); else @@ -294,7 +294,7 @@ OnWall: OnBuild: for( set .@i, 0; .@i < 16; set .@i, .@i + 1 ) bg_monster 0,"bat_a01",186+.@i,266,"Barricade",1906,"Croix_TV1B::OnWall"; - + setwall "bat_a01",186,266,16,6,1,"bat_a01_c1"; set .MyMobCount,16; end; diff --git a/npc/custom/battleground/bg_tierra_02.txt b/npc/custom/battleground/bg_tierra_02.txt index c6cebf581..f18d60769 100644 --- a/npc/custom/battleground/bg_tierra_02.txt +++ b/npc/custom/battleground/bg_tierra_02.txt @@ -69,7 +69,7 @@ OnReadyCheck: bg_monster $@TierraBG2_id1,"bat_a02",176,345,"Food Depot",1909,"Tierra_BG2::OnGuillaumeBreak"; bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Storage",1910,"Tierra_BG2::OnCroixBreak"; bg_monster 0,"bat_a02",273,204,"Neutrality Flag",1911,"Tierra_BG2::OnNeutralBreak"; - + set .Neutral_Base, 0; set $@TierraBG2_Victory, 0; @@ -94,7 +94,7 @@ OnReadyCheck: mapannounce "bat_a02","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF; sleep 2000; mapannounce "bat_a02","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000; - + initnpctimer; end; @@ -120,7 +120,7 @@ OnNeutralBreak: set .Guardian_1, bg_monster(.Neutral_Base,"bat_a02",280,233,"Guardian",1949,"Tierra_BG2::OnGuardian1"); else bg_monster_set_team .Guardian_1, .Neutral_Base; - + if( .Guardian_2 == 0 ) set .Guardian_2, bg_monster(.Neutral_Base,"bat_a02",287,203,"Guardian",1950,"Tierra_BG2::OnGuardian2"); else @@ -294,7 +294,7 @@ OnWall: OnBuild: for( set .@i, 0; .@i < 16; set .@i, .@i + 1 ) bg_monster 0,"bat_a02",186+.@i,266,"Barricade",1906,"Croix_TV2B::OnWall"; - + setwall "bat_a02",186,266,16,6,1,"bat_a02_c1"; set .MyMobCount,16; end; diff --git a/npc/custom/bgqueue/flavius.txt b/npc/custom/bgqueue/flavius.txt index 8112be12e..f93821264 100644 --- a/npc/custom/bgqueue/flavius.txt +++ b/npc/custom/bgqueue/flavius.txt @@ -19,7 +19,6 @@ //= 1.5b Adjustments to the team-splitting algorithm [Haruna] //============================================================ - //Tacham, while the script is under testings the original will remain, meaning if you wanna test this you need to disable the other, or they'll conflict. bat_b01,15,15,3 script start#bat_b01 CLEAR_NPC,{ OnInit: @@ -28,22 +27,21 @@ OnInit: //$@bg_queue_id is cleared after this event ends OnPlayerListReady: - - set $@FlaviusBG1_id1, bg_create_team("bat_b01",10,290); + set $@FlaviusBG1_id1, bg_create_team("bat_b01",10,290); set $@FlaviusBG1_id2, bg_create_team("bat_b01",390,10); set $@Croix_QueueBG1, queue(); set $@Guill_QueueBG1, queue(); - + queueopt($@Guill_QueueBG1,HQO_OnLogout,"start#bat_b01::OnGuillaumeQuit"); queueopt($@Croix_QueueBG1,HQO_OnLogout,"start#bat_b01::OnCroixQuit"); - + set .@i, 0; - + copyarray .@bg_member[0],$@bg_member[0],$@bg_member_size; copyarray .@bg_member_group[0],$@bg_member_group[0],$@bg_member_size; copyarray .@bg_member_type[0],$@bg_member_type[0],$@bg_member_size; - + freeloop(1); // Counting all participants and determining sizes, condensing .@bg_member_group set .@nogroupcount, 0; @@ -66,7 +64,7 @@ OnPlayerListReady: set .@bg_count[.@j], 1; } } - + // Now, sorting the group arrays from amount of population descending! Bubble sort powers, I call upon thee! // Type doesn't matter here for precedence checks, but also needs to be sorted the same way along with groups for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1) { @@ -84,7 +82,7 @@ OnPlayerListReady: } } } - + // Add the groups to the queues! :D for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1){ if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)){ // Catch'em all and add to the queue! @@ -123,7 +121,7 @@ OnPlayerListReady: set $@FlaviusBG1_Victory, 0; set $@Croix_ScoreBG1, 0; set $@Guill_ScoreBG1, 0; - + bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; donpcevent "OBJ#bat_b01_a::OnKill"; @@ -143,11 +141,11 @@ OnPlayerListReady: disablenpc "Vintenar#bat_b01_bover"; bg_warp $@FlaviusBG1_id1,"bat_b01",87,75; bg_warp $@FlaviusBG1_id2,"bat_b01",311,224; - + /* after warp */ queueopt($@Guill_QueueBG1,HQO_OnMapChange,"start#bat_b01::OnGuillaumeQuit"); queueopt($@Croix_QueueBG1,HQO_OnMapChange,"start#bat_b01::OnCroixQuit"); - + donpcevent "countdown#bat_b01::OnEnable"; end; @@ -180,14 +178,14 @@ OnGuillaumeQuit: queueremove($@Guill_QueueBG1,getcharid(3)); callsub L_OnPlayerQuit; end; - + L_OnPlayerQuit: bg_leave; setd $@bg_delay_var$,gettimetick(2); if( queuesize($@Guill_QueueBG1) == 0 || queuesize($@Croix_QueueBG1) == 0 ) /* todo check score and decide a winner if anyone left */ callsub OnMatchOver; end; - + OnMatchOver: if( $@FlaviusBG1_id1 || $@FlaviusBG1_id2 ) { queuedel($@Croix_QueueBG1); diff --git a/npc/custom/card_remover.txt b/npc/custom/card_remover.txt index e3aa2bb5b..dace8cac0 100644 --- a/npc/custom/card_remover.txt +++ b/npc/custom/card_remover.txt @@ -49,7 +49,7 @@ prt_in,28,73,4 script Wise Old Woman#eAcustom 1_F_ORIENT_04,{ close; } set .@cardcount,getequipcardcnt(.@part); - + if (!checkweight(1202,(.@cardcount+1))) { mes "^3355FFJust a minute!"; mes "I can't offer any of my"; @@ -91,7 +91,7 @@ prt_in,28,73,4 script Wise Old Woman#eAcustom 1_F_ORIENT_04,{ Zeny -= (.zenycost+(.@cardcount * .percardcost)); delitem 1000,1; delitem 715,1; - + // Replace the constants in the next 3 lines with failure chance values defined in refine_db.txt // First value = Total failure chance (item and cards destroyed) // Second value = Partial failure chance (one or the other is destroyed, player decides which one is safe) diff --git a/npc/custom/etc/floating_rates.txt b/npc/custom/etc/floating_rates.txt index ff3b6e8fa..c207c6275 100644 --- a/npc/custom/etc/floating_rates.txt +++ b/npc/custom/etc/floating_rates.txt @@ -35,7 +35,7 @@ OnHour18: setbattleflag("item_rate_equip",$@drate); //we don't change card drops rate, because these values won't change them anyway atcommand "@reloadmobdb"; - + announce "Current Rune-Midgard rates are: 1."+($@brate-100)+"x 1."+($@jrate-100)+"x 1."+($@drate-100)+"x",bc_all,0xFF6060; end; } diff --git a/npc/custom/etc/marriage.txt b/npc/custom/etc/marriage.txt index 0d25be9d5..ab1b48c30 100644 --- a/npc/custom/etc/marriage.txt +++ b/npc/custom/etc/marriage.txt @@ -65,7 +65,7 @@ prt_church,100,123,4 script Vomars 1_M_PASTOR,{ function SF_RetrieveRingF; function SF_RingsAccepted; function SF_StartCeremony; - + if (getpartnerid() > 0) { mes "["+@name$+"]"; mes "You have my blessings, have a wonderful married life."; @@ -81,7 +81,7 @@ prt_church,100,123,4 script Vomars 1_M_PASTOR,{ mes "to prepare for marriage"; close; } // End official iRO dialog - + if (strcharinfo(0) == $wed_groom$) { SF_Groom(); end; @@ -278,7 +278,7 @@ function SF_RetrieveRingM { mes "Here's the wedding ring for your bride."; if ($@wed_ring) delitem $@wed_ring,1; set $wed_groom_progress,4; - + if ($wed_bride_progress == 4) SF_StartCeremony(); else { @@ -336,7 +336,7 @@ function SF_StartCeremony { OnTimer1000: npctalk "Ladies and Gentlemen, We will now join in holy matrimony these two lovers."; end; - + OnTimer5000: npctalk "Now more than ever, will both of your lives be entwined together as so will be your souls."; end; @@ -344,31 +344,31 @@ OnTimer5000: OnTimer10000: npctalk "You will both honor and cherish each other through the best and worst of times."; end; - + OnTimer15000: npctalk "The safety and well being of your other will now also be your responsibility."; end; - + OnTimer20000: npctalk "May in sickness or good health, your love burn bright like no force can extinguish it."; end; - + OnTimer25000: npctalk "Those here stand witness to these vows bestowed upon you, you must act accordingly to them."; end; - + OnTimer30000: npctalk "Understanding that, we are nothing more but mortals on this earth, but this is our triumph."; end; - + OnTimer35000: npctalk "We here will now join these two mortal entities, and create an immortal love."; end; - + OnTimer40000: npctalk $wed_groom$+", you have accepted to take "+$wed_bride$+" as your lawfully wedded wife,"; end; - + OnTimer45000: npctalk "and you, "+$wed_bride$+", have accepted take "+$wed_groom$+" as your lawfully wedded husband."; end; @@ -440,7 +440,7 @@ prt_church,106,99,3 script Happy Marry 1_F_02,{ mes "Isn't marriage beautiful?"; close; } - + function SF_WedProgress; function SF_Principles; function SF_Procedure; @@ -451,7 +451,7 @@ prt_church,106,99,3 script Happy Marry 1_F_02,{ SF_WedProgress(); end; } - + do { mes "["+@name$+"]"; mes "Marriage... is such a beautiful thing."; @@ -529,7 +529,7 @@ function SF_Register { close; } } - + function SF_WedProgress { if (strcharinfo(0) == $wed_groom$) { mes "["+@name$+"]"; @@ -658,7 +658,7 @@ OnTimer60000: npctalk "Registration timed out. Is it that noone wants to marry "+$@msg$+"..?"; emotion e_hmm; - + set $wed_groom$,""; set $wed_groom_sex, 0; set $wed_bride$,""; @@ -675,7 +675,7 @@ function SF_TryRegister { set @type$, "groom"; if (@bride) set @type$, "bride"; - + mes "["+@name$+"]"; mes "Before registering as "+@type$+", let me check if you meet all the requirements..."; next; @@ -689,7 +689,7 @@ function SF_TryRegister { set @item, 7170; else set @item, 2338; - + if (getequipid(2) != @item) { mes "["+@name$+"]"; mes "You should be wearing a "+getitemname(@item)+" if you want to get married."; @@ -814,12 +814,12 @@ prt_church,94,99,4 script Sister Lisa 1_F_PRIEST,{ function SF_DivorceEnd; function SF_InProgress; - + if ($@divorce_progress==1) { goto SF_InProgress; end; } - + do { mes "["+@name$+"]"; mes "Divorcing can be such a sad event..."; diff --git a/npc/custom/etc/monster_arena.txt b/npc/custom/etc/monster_arena.txt index 82f764977..9c00b67a5 100644 --- a/npc/custom/etc/monster_arena.txt +++ b/npc/custom/etc/monster_arena.txt @@ -195,7 +195,6 @@ L_Exit: } gon_test,56,91,6 duplicate(monsterreferee) Referee#01 1_M_PUBMASTER - // Usher // gon_test,58,94,6 script Usher 4_M_04,{ set @marena,1; @@ -332,7 +331,6 @@ L_Sell: mes "You earned ^0000FF" + @sellearn + "^000000z."; close; - L_NoExp: mes "[Monster Trainer]"; mes "You do not have enough experience."; @@ -761,8 +759,6 @@ OnTouch: gon_test,43,87,5 duplicate(SummonPad) Summon Pad 2 HIDDEN_NPC,2,2 gon_test,72,87,5 duplicate(SummonPad) Summon Pad 3 HIDDEN_NPC,2,2 - - // Skill Disabler // gon_test mapflag noskill diff --git a/npc/custom/etc/penal_servitude.txt b/npc/custom/etc/penal_servitude.txt index b83bf3f83..30aaf17e2 100644 --- a/npc/custom/etc/penal_servitude.txt +++ b/npc/custom/etc/penal_servitude.txt @@ -134,7 +134,7 @@ sec_in02,137,57,1 script Overseer 4_M_PAY_SOLDIER,{ delitem 4009,countitem(4009);//Items: Chonchon_Card, delitem 4022,countitem(4022);//Items: Spore_Card, delitem 4048,countitem(4048);//Items: Poison_Spore_Card, - + if (PRISON_Q <= 0 ) goto L_GET_Q; mes "I want you to gather ^FF0000"+PRISON_Q+" Orange Net Mushroom^000000."; @@ -170,7 +170,6 @@ L_GET_Q: close; } - sec_in02 mapflag nomemo sec_in02 mapflag nosave SavePoint sec_in02 mapflag noteleport diff --git a/npc/custom/etc/quest_warper.txt b/npc/custom/etc/quest_warper.txt index 3526cde5c..fd6865a54 100644 --- a/npc/custom/etc/quest_warper.txt +++ b/npc/custom/etc/quest_warper.txt @@ -71,10 +71,10 @@ function script Q_Warpra { mes "Hello,"; mes "I can warp you to any town or dungeon, but you need to unlock them first by visiting us."; mes "What do you need?"; - + if(getarg(0) == 0) callfunc "QWS_MMarray",0; if(getarg(0) == 1) callfunc "QWS_MMarray",1; - + set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]); switch(@Mmenuref[@MMenu-1]+1){ @@ -167,7 +167,7 @@ Setprice: if (!$QW_S_PRICE) mes "Storage = ^FF0000 Free ^000000"; if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; mes "Guild Storage = "+(($QW_GS_PRICE)?"^00FF00"+$QW_GS_PRICE:"^FF0000Free")+"^000000"; - + switch(select("Basic - Warps","Advanced - Warps","Overseas - Warps","Basic Dungeon warp fee","Advanced Dungeon warp fee","Overseas Dungeon warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit")) { case 1: next; @@ -388,7 +388,7 @@ L_heal_Part: if (@healchoice == 2) callsub PHeal,1,0; if (@healchoice == 3) callsub PHeal,0,1; goto L_End; - + PHeal: next; set @Hp, MaxHp-Hp; @@ -499,7 +499,7 @@ L_GStorage: close2; guildopenstorage; end; - + L_End: close; end; @@ -523,7 +523,7 @@ L_NoUnlock: mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place."; close; end; - + //=========================Short=On=Zeny=========================== L_Short_on_zeny: next; @@ -536,7 +536,7 @@ L_Short_on_zeny: } close; end; - + //===========================Stamp=Card============================ stampcard: // Counting of the ammount of places you have unlocked @@ -978,7 +978,6 @@ function script QWS_Tarray { set @Tmenuref[@Tj],57005; // 57005='dead' in hex return; - //----------------Make Town Menu Function function QWS_Make_Town_Menu { @@ -1450,7 +1449,6 @@ function script QWS_Darray { set @Dmenuref[@Dj],57005; // 57005='dead' in hex return; - //----------------Make Dungeon Menu Function function QWS_Make_Dungeon_Menu { @@ -1525,7 +1523,7 @@ function script QWS_DLarray { function script QWS_Dungeon_Warpra { function QWS_D_getbin; function QWS_D_setbin; - + if ((QWS_D_getbin(getarg(0)) == 0) && (getarg(1) != "")) { mes "[Warpra]"; mes getarg(1)+" unlocked!"; @@ -1538,7 +1536,6 @@ function script QWS_Dungeon_Warpra { debugmes "QWS_Dungeon_Warpra error, improper syntax?"; return; - function QWS_D_setbin { set @tempsetbindata,1; if (getarg(0) == 0) goto binset; @@ -1571,7 +1568,7 @@ binget: function script QWS_Town_Warpra { function QWS_T_getbin; function QWS_T_setbin; - + if ((QWS_T_getbin(getarg(0)) == 0) && (getarg(1) != "")) { mes "[Warpra]"; mes getarg(1)+" unlocked!"; diff --git a/npc/custom/etc/rpsroulette.txt b/npc/custom/etc/rpsroulette.txt index 22123580d..e0f8b8952 100644 --- a/npc/custom/etc/rpsroulette.txt +++ b/npc/custom/etc/rpsroulette.txt @@ -4,6 +4,8 @@ //= acky //===== Current Version: ===================================== //= 1.2 +//===== Compatible With: ===================================== +//= Hercules SVN //===== Description: ========================================= //= Plays a hybrid Russian Roulette Rock Scissors Paper game. //===== Additional Comments: ================================= @@ -12,273 +14,113 @@ //============================================================ cmd_in02,182,126,2 script Crazy Boris 4_M_03,{ - mes "Crazy Boris"; - set @counter,1; mes "Hey you! Up for Rock Scissors Roulette?"; next; - menu "Let me play.",PLAY,"Explain the rules.",L_Rules,"Leave",LEAVE; - SAME: - mes "Draw! Again!"; - next; - goto PLAY; - -WIN: - mes "Damnit, You Win!"; - emotion 19; - next; - goto OPPPULL; - -LOSE: - emotion 18; - mes "Boorah! You Lose!"; - next; - goto YOUPULL; - -PLAY: - mes "Rock... Paper..."; - set @opp,rand (1,3); - menu "^0000FFROCK!",L_Rock,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER; - -L_Rock: - if (@lastchoice == 1) set @opp,rand (1,3); - if (@opp == 1) emotion 11; - if (@opp == 2) emotion 10; - if (@opp == 3) emotion 12; - set @lastchoice,1; - if (@opp == 1) goto SAME; - if (@opp == 2) goto WIN; - if (@opp == 3) goto LOSE; - -SCISSORS: - if (@lastchoice == 2) set @opp,rand (1,2); - if (@opp == 1) emotion 11; - if (@opp == 2) emotion 10; - if (@opp == 3) emotion 12; - set @lastchoice,2; - if (@opp == 1) goto LOSE; - if (@opp == 2) goto SAME; - if (@opp == 3) goto WIN; - -PAPER: - if (@lastchoice == 3) set @opp,rand (2,3); - if (@opp == 1) emotion 11; - if (@opp == 2) emotion 10; - if (@opp == 3) emotion 12; - set @lastchoice,3; - if (@opp == 1) goto WIN; - if (@opp == 2) goto LOSE; - if (@opp == 3) goto SAME; - -YOUPULL: - if (@counter == 1) goto ONE; - if (@counter == 2) goto TWO; - if (@counter == 3) goto THREE; - if (@counter == 4) goto FOUR; - if (@counter == 5) goto FIVE; - if (@counter == 6) goto SIX; - -OPPPULL: - if (@counter == 1) goto ONEa; - if (@counter == 2) goto TWOa; - if (@counter == 3) goto THREEa; - if (@counter == 4) goto FOURa; - if (@counter == 5) goto FIVEa; - if (@counter == 6) goto SIXa; - -ONE: - set @counter,2; - mes "1 of 6"; - set @pull,rand (1,6); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -TWO: - set @counter,3; - mes "2 of 6"; - set @pull,rand (1,5); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -THREE: - set @counter,4; - mes "3 of 6"; - set @pull,rand (1,4); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -FOUR: - set @counter,5; - mes "4 of 6"; - set @pull,rand (1,3); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -FIVE: - set @counter,6; - mes "5 of 6"; - set @pull,rand (1,2); - if (@pull == 1) set @pull,rand (1,2); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -SIX: - mes "6 of 6"; - mes "Say your prayers"; - set @pull,1; - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -ONEa: - set @counter,2; - mes "1 of 6"; - set @pull,rand (1,6); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -TWOa: - set @counter,3; - mes "2 of 6"; - set @pull,rand (1,5); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -THREEa: - set @counter,4; - mes "3 of 6"; - set @pull,rand (1,4); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -FOURa: - set @counter,5; - mes "4 of 6"; - set @pull,rand (1,3); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -FIVEa: - set @counter,6; - mes "5 of 6"; - set @pull,rand (1,2); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -SIXa: - mes "6 of 6"; - mes "Say your prayers"; - set @pull,1; - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -SAFE: - emotion 32; - mes "*^0000FFClick^000000* whew..."; - goto PLAY; - -DIE: - specialeffect2 183; - emotion 29; - percentheal -100,-100; - mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; - mes "You're dead!"; - close; - -KILL: - specialeffect 183; - emotion 23; - mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; - mes "OWWW @#$%^!! THAT HURT LIKE HELL!!"; - next; - goto PRIZE; - -L_Rules: - mes "Ok here are the rules:"; - mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best."; - mes "Beat me to win a prize."; - menu "Let me play.",CONT,"No thanks.",LEAVE; - -CONT: - mes "Ok here we go..."; - next; - goto PLAY; - -PRIZE: - mes "Congratulations! You have won..."; - set @prize,rand (1,10); - if (@prize == 1) goto P1; - if (@prize == 2) goto P2; - if (@prize == 3) goto P3; - if (@prize == 4) goto P4; - if (@prize == 5) goto P5; - if (@prize == 6) goto P6; - if (@prize == 7) goto P7; - if (@prize == 8) goto P8; - if (@prize == 9) goto P9; - if (@prize == 10) goto P10; - -P1: - mes "10x Oridicon!"; - getitem 984,10; - close; - -P2: - mes "10x Elunium!"; - getitem 985,10; - close; - -P3: - mes "100x Fly Wings!"; - getitem 601,100; - close; - -P4: - mes "8x Old Blue Box!"; - getitem 603,8; - close; - -P5: - mes "4x Old Violet Box!"; - getitem 617,4; - close; - -P6: - mes "1x Old Card Album!"; - getitem 616,1; - close; - -P7: - mes "10x Dead Branch!"; - getitem 604,10; - close; - -P8: - mes "3x Gold!"; - getitem 969,3; - close; - -P9: - mes "10x Elunium!"; - getitem 985,10; - close; - -P10: - mes "20x Blue Potion!"; - getitem 505,20; - close; - -LEAVE: - mes "Pansy."; - close; + switch (select("Let me play.","Explain the rules.","Leave")) { + case 1: + break; + case 2: + mes "Ok here are the rules:"; + mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best."; + mes "Beat me to win a prize."; + next; + if (select("Let me play.","No thanks.") == 1) { + mes "Ok here we go..."; + break; + } + // else fall through + case 3: + mes "Pansy."; + close; + } + .@counter = 1; + while(true) { + mes "Rock... Paper..."; + + .@choice = select("^0000FFROCK!","^0000FFSCISSORS!","^0000FFPAPER!"); + if (.@lastchoice == .@choice) { + if (.@lastchoice == 1) + .@opponent = rand(1,3); + else if (.@lastchoice == 2) + .@opponent = rand(1,2); + else + .@opponent = rand(2,3); + } else { + .@opponent = rand(1,3); + } + .@lastchoice = .@choice; + + if (.@opponent == 1) + emotion e_rock; + else if (.@opponent == 2) + emotion e_scissors; + else + emotion e_paper; + + if (.@opponent == .@choice) { + // SAME + mes "Draw! Again!"; + continue; + } + + if ((.@choice == 1 && .@opponent == 3) + || (.@choice == 2 && .@opponent == 1) + || (.@choice == 3 && .@opponent == 2) + ) { + // LOSE + emotion e_heh; + mes "Boorah! You Lose!"; + next; + .@win = false; + } else { + //WIN + mes "Damnit, You Win!"; + emotion e_swt2; + next; + .@win = true; + } + + mes .@counter +" of 6"; + if (.@counter == 6) + mes "Say your prayers"; + .@pull = rand(1, 7 - .@counter); + ++.@counter; + next; + if (.@pull > 1) { + emotion e_pif; + mes "*^0000FFClick^000000* whew..."; + continue; + } + if (!.@win) { + specialeffect EF_SUI_EXPLOSION; + mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; + mes "You're dead!"; + emotion e_gg; + percentheal -100,-100; + close; + } + specialeffect EF_SUI_EXPLOSION; + mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; + mes "OWWW @#$%^!! THAT HURT LIKE HELL!!"; + emotion e_omg; + next; + mes "Congratulations! You have won..."; + switch (rand(1,10)) { + case 1: setarray .@reward[0], 10,984; break; + case 3: setarray .@reward[0],100,601; break; // 100x Fly Wings + case 4: setarray .@reward[0], 8,603; break; // 8x Old Blue Box + case 5: setarray .@reward[0], 4,617; break; // 4x Old Violet Box + case 6: setarray .@reward[0], 1,616; break; // 1x Old Card Album + case 7: setarray .@reward[0], 10,604; break; // 10x Dead Branch + case 8: setarray .@reward[0], 3,969; break; // 3x Gold + case 10: setarray .@reward[0],20,505; break; // 20x Blue Potion + case 2: + case 9: + setarray .@reward[0], 10,985; + } + mes .@reward[0] +"x "+ getitemname(.@reward[1]) +"!"; + getitem .@reward[1], .@reward[0]; + close; + } + end; } diff --git a/npc/custom/etc/stock_market.txt b/npc/custom/etc/stock_market.txt index 060228317..078ce5137 100644 --- a/npc/custom/etc/stock_market.txt +++ b/npc/custom/etc/stock_market.txt @@ -431,7 +431,7 @@ S_Buy: mes $S10N$; next; menu "Continue",-,"Cancel",S_Start; - + mes "Enter the name of the share company"; mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply."; set @buyname$,"0"; @@ -645,7 +645,6 @@ ACCS11: next; goto S_Start; - // GM MENU // GM_Menu: mes "[Stock Market]"; diff --git a/npc/custom/events/valentinesdayexp.txt b/npc/custom/events/valentinesdayexp.txt index 5a94bc913..4ed24012d 100644 --- a/npc/custom/events/valentinesdayexp.txt +++ b/npc/custom/events/valentinesdayexp.txt @@ -200,7 +200,7 @@ prt_castle,54,34,4 script Carl Orleans#val1 1_M_01,{ mes "Yes? What can I cook for you?"; next; menu "Black handmade Chocolate, please",-,"I want a White handmade Chocolate...",M_WHITE,"I'm lost, sorry to bother you.",M_End; - + mes "[Carl Orleans]"; mes "Well, I just might be able to fulfill your needs..."; next; diff --git a/npc/custom/item_signer.txt b/npc/custom/item_signer.txt index 243ca29c2..ee03c16eb 100644 --- a/npc/custom/item_signer.txt +++ b/npc/custom/item_signer.txt @@ -12,7 +12,6 @@ //============================================================ prt_in,24,61,7 script Perchik 1_M_01,{ - setarray .@item[0],644,3; // Item requirements: <ID>,<Count>{,...} (0 to disable) setarray .@cost[0],0,5000; // Zeny requirements: <base price>,<price per refine> diff --git a/npc/custom/jobmaster.txt b/npc/custom/jobmaster.txt index ca102ed76..c497ceef3 100644 --- a/npc/custom/jobmaster.txt +++ b/npc/custom/jobmaster.txt @@ -73,7 +73,7 @@ prontera,153,193,6 script Job Master 2_F_MAGICMASTER,{ if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) { .@newclass = roclass(.@eac|EAJL_THIRD); .@required_jlevel = 99; - } else if (Class == Job_Ninja) { + } else if (Class == Job_Ninja || Class == Job_Gunslinger) { .@newclass = .@job1; .@required_jlevel = 70; } @@ -253,7 +253,7 @@ OnInit: .rebirth_jlevel = 50; // Minimum base job level to reborn OR change to third class .jobchange_first = 10; // Minimum job level to turn into 1st class .jobchange_second = 40; // Minimum job level to turn into 2nd class - .third_classes = 1; // Enable third classes? (1: yes / 0: no) + .third_classes = 1; // Enable third classes/Extended Classes? (1: yes / 0: no) .supernovice_level = 45; // Minimum base level to turn into Super Novice .linear_jobchange = 1; // Enforce linear class changes? (1: yes / 0: no) .skill_point_check = 1; // Force player to use up all skill points? (1: yes / 0: no) diff --git a/npc/custom/quests/kaho_balmung.txt b/npc/custom/quests/kaho_balmung.txt index 4e598922d..ff581825b 100644 --- a/npc/custom/quests/kaho_balmung.txt +++ b/npc/custom/quests/kaho_balmung.txt @@ -12,10 +12,9 @@ //============================================================ prontera,158,356,4 script Royal Messenger 8W_SOLDIER,{ - setarray .@Req1[0],1161,999,120,984,10,996,10,994,10,995,10,997,10; setarray .@Req2[0],5013,2298,1,1001,10,996,10,994,10,995,10,997,10; - + mes "[Royal Messenger]"; mes "Welcome to Prontera."; mes "I am the messenger in charge of the Royal Quests."; diff --git a/npc/custom/quests/questboard.txt b/npc/custom/quests/questboard.txt index 3e7a90d9d..e4336a67a 100644 --- a/npc/custom/quests/questboard.txt +++ b/npc/custom/quests/questboard.txt @@ -16,7 +16,6 @@ //============================================================ prontera,129,215,5 script Questboard 4_BOARD3,{ - if(c_run==1){ mes "[^FF7700Questboard^000000]"; mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000"; @@ -40,7 +39,7 @@ prontera,129,215,5 script Questboard 4_BOARD3,{ } goto L_checkitems; } - + if(h_run==1){ mes "[^FF7700Questboard^000000]"; mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000"; @@ -69,114 +68,112 @@ prontera,129,215,5 script Questboard 4_BOARD3,{ } goto L_checkmobs; } - + L_questmenu: mes "[^FF7700Questboard^000000]"; mes "Select category:"; next; - + switch(select((.collection)?"Collection Quests":"", - (.hunting)?"Hunting Quests":"", - "Exit")) { - -case 1: - set .@collectmenu$, ""; - for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) { - if (.@i) set .@collectmenu$,.@collectmenu$+":"; - set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$"); - } - set .@selection,select(.@collectmenu$); - if(gettimetick(2) < getd(.@selection + "_collection_delay")){ - set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2); - mes "[^FF7700Questboard^000000]"; - if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; - if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; - mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; - close; - } - mes "[^FF7700Questboard^000000]"; - mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000"; - mes "--------------------------------"; - for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) { - mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; - } - mes "--------------------------------"; - mes "[Reward]"; - mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000"); - mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000"; - mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000"; - mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000"; - next; - if(select("Accept:Decline") == 2){ - close; - } - if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax")) - { - mes "[^FF7700Questboard^000000]"; - mes "Quest accepted."; - set c_run, 1; - set currentquest$, .@selection; - close; - } - else - { - mes "[^FF7700Questboard^000000]"; - mes "You don't have the required"; - mes "level to do this quest."; - close; - } - -case 2: - set .@huntmenu$, ""; - for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) { - if (.@i) set .@huntmenu$,.@huntmenu$+":"; - set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$"); - } - set .@selection,select(.@huntmenu$); - if(gettimetick(2) < getd(.@selection + "_hunting_delay")){ - set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2); - mes "[^FF7700Questboard^000000]"; - if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; - if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; - mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; - close; - } - mes "[^FF7700Questboard^000000]"; - mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000"; - mes "--------------------------------"; - for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) { - mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; - } - mes "--------------------------------"; - mes "[Reward]"; - mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000"); - mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000"; - mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000"; - mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000"; - next; - if(select("Accept:Decline") == 2){ - close; - } - if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax")) - { + (.hunting)?"Hunting Quests":"", + "Exit")) { + case 1: + set .@collectmenu$, ""; + for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) { + if (.@i) set .@collectmenu$,.@collectmenu$+":"; + set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$"); + } + set .@selection,select(.@collectmenu$); + if(gettimetick(2) < getd(.@selection + "_collection_delay")){ + set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2); + mes "[^FF7700Questboard^000000]"; + if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; + if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; + mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; + close; + } mes "[^FF7700Questboard^000000]"; - mes "Quest accepted."; - set h_run, 1; - set currentquest$, .@selection; - close; - } - else - { + mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000"; + mes "--------------------------------"; + for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) { + mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; + } + mes "--------------------------------"; + mes "[Reward]"; + mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000"); + mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000"; + mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000"; + mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000"; + next; + if(select("Accept:Decline") == 2){ + close; + } + if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax")) + { + mes "[^FF7700Questboard^000000]"; + mes "Quest accepted."; + set c_run, 1; + set currentquest$, .@selection; + close; + } + else + { + mes "[^FF7700Questboard^000000]"; + mes "You don't have the required"; + mes "level to do this quest."; + close; + } + + case 2: + set .@huntmenu$, ""; + for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) { + if (.@i) set .@huntmenu$,.@huntmenu$+":"; + set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$"); + } + set .@selection,select(.@huntmenu$); + if(gettimetick(2) < getd(.@selection + "_hunting_delay")){ + set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2); + mes "[^FF7700Questboard^000000]"; + if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; + if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; + mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; + close; + } mes "[^FF7700Questboard^000000]"; - mes "You don't have the required"; - mes "level to do this quest."; + mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000"; + mes "--------------------------------"; + for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) { + mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; + } + mes "--------------------------------"; + mes "[Reward]"; + mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000"); + mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000"; + mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000"; + mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000"; + next; + if(select("Accept:Decline") == 2){ + close; + } + if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax")) + { + mes "[^FF7700Questboard^000000]"; + mes "Quest accepted."; + set h_run, 1; + set currentquest$, .@selection; + close; + } + else + { + mes "[^FF7700Questboard^000000]"; + mes "You don't have the required"; + mes "level to do this quest."; + close; + } + case 3: close; } - -case 3: - close; - } - + L_checkitems: for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) { if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){ @@ -200,7 +197,7 @@ L_checkitems: set currentquest$, ""; set c_run, 0; close; - + L_checkmobs: set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2); for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){ @@ -214,7 +211,7 @@ L_checkmobs: } goto L_checkmobs2; } - + L_checkmobs2: if(.@checkmonster<.@goal){ mes "[^FF7700Questboard^000000]"; @@ -248,33 +245,30 @@ OnNPCKillEvent: continue; } end; - -OnInit: +OnInit: function AddCollection; function AddHunting; //Activate/Deactive quest categories here set .collection, 1; set .hunting, 1; - + //Quest Delay (seconds) //24 hours = 86400 seconds set .quest_delay, 0; - + //Checks if quests are loaded (prevents out of index) if(.questsloaded==1) end; - set .questsloaded, 1; - - //Add Collection Quests here - //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); - - - //Add Hunting Quests here - //AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); - - end; - + set .questsloaded, 1; + + //Add Collection Quests here + //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); + + //Add Hunting Quests here + //AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); + + end; function AddCollection { set .collectionquestcount,.collectionquestcount+1; diff --git a/npc/custom/quests/tha_statues.txt b/npc/custom/quests/tha_statues.txt index c4787fcd3..00a7c9a8f 100644 --- a/npc/custom/quests/tha_statues.txt +++ b/npc/custom/quests/tha_statues.txt @@ -38,7 +38,6 @@ done: mes "[Thalos]"; mes "Go search the 2nd Statue!"; close; - } tha_t09,84,99,4 script Mediane HIDDEN_NPC,{ diff --git a/npc/custom/quests/thq/THQS_QuestNPC.txt b/npc/custom/quests/thq/THQS_QuestNPC.txt index 76790221b..d4e058fb4 100644 --- a/npc/custom/quests/thq/THQS_QuestNPC.txt +++ b/npc/custom/quests/thq/THQS_QuestNPC.txt @@ -66,7 +66,7 @@ N_NewQuest: mes "Would you like me to asign you a Quest?"; next; menu "Yes I would like a Quest Please.",-,"Sorry Guy no time today.",N_NoTime; - + mes "[Guy]"; mes "Ok lets see what quest we can give you today."; mes "The quest names in ^FF0000This Colour^000000 mean that they are more challanging then the rest, but have better rewards."; diff --git a/npc/custom/woe_controller.txt b/npc/custom/woe_controller.txt index 824fa4a4f..ec5bb3d81 100644 --- a/npc/custom/woe_controller.txt +++ b/npc/custom/woe_controller.txt @@ -11,8 +11,8 @@ //= and "rewards" function originally by Goddameit. //===== Additional Comments: ================================= //= Be sure to disable the default agit controllers! -//== npc\guild\agit_controller.txt -//== npc\guild2\agit_start_se.txt +//== npc\woe-fe\agit_controller.txt +//== npc\woe-se\agit_start_se.txt //============================================================ // Information NPC |