From 9d0dbf20d7e9a33e9c1c64227223333a1761b0aa Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 01:16:54 -0300 Subject: Rewrite inc_sc_bonus to a more stable version --- npc/items/inc_sc_bonus.txt | 47 +++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) (limited to 'npc') diff --git a/npc/items/inc_sc_bonus.txt b/npc/items/inc_sc_bonus.txt index 92a5ae522..32aeec6a0 100644 --- a/npc/items/inc_sc_bonus.txt +++ b/npc/items/inc_sc_bonus.txt @@ -5,28 +5,32 @@ // Applies effects for INC_* (STR doesn't exist) // Valid values: INCAGI INCVIT INCINT INCDEX INCLUK INCHIT INCFLEE // Doesn't works: SC_STRUP -// Works if @min == @max: INCMHP INCMHPRATE INCMSP INCMSPRATE +// Works if .@min == .@max: INCMHP INCMHPRATE INCMSP INCMSPRATE /// Untested Values: WALKSPEED (reverse logic) INVINCIBLE (broken) // // Variables: -// @delay Second of buffing -// @min Min amount of type -// @max Max amount of type -// @type SC_* +// .@delay Second of buffing +// .@type SC_* +// .@min Min amount of type +// .@max Max amount of type (optional) -- script inc_sc_bonus -1,{ -OnUse: - if (@delay <= 0) close; +function script SC_Bonus { + .@delay=getarg(0); + .@type=getarg(1); + .@min=getarg(2); + .@max=getarg(3, .@min); + if (.@delay <= 0) + return false; // Get the bonus value - if (@min != @max) - .@bonus=rand(@min, @max); + if (.@min != .@max) + .@bonus=rand2(.@min, .@max); else - .@bonus=any(@min, @max); + .@bonus=.@min; // Remaining time and effect conversion - .@v=getstatus(@type, 1); - .@t=getstatus(@type, 5); + .@v=getstatus(.@type, 1); + .@t=getstatus(.@type, 5); // Convert remaining time to seconds, rounded down if (.@t > 1000) @@ -36,22 +40,27 @@ OnUse: // If there was effect previously, get ponderate average if (.@v > 0) - .@v=ponderate_avg(.@bonus, @delay, .@v, .@t); + .@v=ponderate_avg(.@bonus, .@delay, .@v, .@t); else .@v=.@bonus; // Update time value to ms and to stack - .@t+=@delay; + .@t+=.@delay; .@t*=1000; // Debug print if needed if (debug || $@GM_OVERRIDE) - debugmes "Effect %d (+%d percent) for %d ms", @type, .@bonus, .@t; + debugmes "Effect %d (+%d percent) for %d ms", .@type, .@bonus, .@t; // Restart the bonus - sc_end @type; - sc_start @type,.@t,.@v; + sc_end .@type; + sc_start .@type,.@t,.@v; + return true; +} - close; +- script inc_sc_bonus -1,{ +OnUse: + SC_Bonus(@delay, @type, @min, @max); + end; } -- cgit v1.2.3-70-g09d2 From e43844e004b47367eb3b4da1a97bfd5f54b24754 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 01:17:53 -0300 Subject: Clean Up inc_sc_bonus player variables. Wait, we have a function now. Why are we using a NPC event?! --- npc/items/inc_sc_bonus.txt | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'npc') diff --git a/npc/items/inc_sc_bonus.txt b/npc/items/inc_sc_bonus.txt index 32aeec6a0..98e4ca104 100644 --- a/npc/items/inc_sc_bonus.txt +++ b/npc/items/inc_sc_bonus.txt @@ -61,6 +61,10 @@ function script SC_Bonus { - script inc_sc_bonus -1,{ OnUse: SC_Bonus(@delay, @type, @min, @max); + @delay=0; + @type=0; + @min=0; + @max=0; end; } -- cgit v1.2.3-70-g09d2 From 09bb56c253ec6cf7a18b76883a5c9eef22d92e8b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 01:29:23 -0300 Subject: Fix typo in Nard --- npc/002-3/nard.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/002-3/nard.txt b/npc/002-3/nard.txt index bd0fa8109..b127315d0 100644 --- a/npc/002-3/nard.txt +++ b/npc/002-3/nard.txt @@ -143,7 +143,7 @@ L_Referral: close; -L_NeedHead: +L_NeedHelp: mes ""; mesn; mesq l("You're pretty much stranded on this forsaken island if you don't help me!"); -- cgit v1.2.3-70-g09d2 From 4f2b3748bb846877a502abe84a64e78b567cae15 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:19:06 -0300 Subject: Ocean Pirate Captain may give victor a Crazy Rum Bottle, randomly. via getitem --- npc/016-7/main.txt | 3 +++ 1 file changed, 3 insertions(+) (limited to 'npc') diff --git a/npc/016-7/main.txt b/npc/016-7/main.txt index 6c615a50d..165150630 100644 --- a/npc/016-7/main.txt +++ b/npc/016-7/main.txt @@ -47,6 +47,9 @@ OnReward: getexp BaseLevel*10, BaseLevel; Zeny=Zeny+BaseLevel*rand2(5,15); //getitem SailorShirt, 1; // I already tried to do this before...? + // 7% chance to get Crazy Rum + if (rand2(10000) < 700+(readparam(bLuk)*3)) + getitem CrazyRum, 1; dispbottom l("Congratulations!"); if (isin("016-7", 23, 25, 52, 35)) addtimer(3000, "#MarineShipAttack::OnResumeTravel"); -- cgit v1.2.3-70-g09d2 From 9434e1f6ed981376669b70de6b7da02c583a399e Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:25:36 -0300 Subject: While onboard, Destructive, Fire, and AoE Magic are NOT permitted. Explosive Arrows aren't allowed either, as it could destroy the ship. Other weapons, magic, skills, tactics etc. all green. Knockback disabled. --- db/re/map_zone_db.conf | 15 ++++++++++++++- npc/016-1/captain.txt | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index e5d75e659..7fbc492f3 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -203,12 +203,25 @@ zones: ( name: "ship" disabled_skills: { + // Destructive, Fire, and AoE Magic not allowed + MG_NAPALMBEAT: "ALL" MG_FIREBALL: "ALL" + WZ_FROSTNOVA: "ALL" + MG_FIREBOLT: "ALL" + MG_COLDBOLT: "ALL" + MG_LIGHTININGBOLT: "ALL" + WZ_EARTHSPIKE: "ALL" + MG_FROSTDIVER: "ALL" + ASC_METEORASSAULT: "ALL" + AC_SHOWER: "ALL" SN_SHARPSHOOTING: "ALL" - SM_BASH: "ALL" + MG_FIREWALL: "ALL" + SO_FIREWALK: "ALL" + SA_FLAMELAUNCHER: "ALL" } disabled_items: { + ExplosiveArrow: true } mapflags: ( diff --git a/npc/016-1/captain.txt b/npc/016-1/captain.txt index 7aee841db..b281e5206 100644 --- a/npc/016-1/captain.txt +++ b/npc/016-1/captain.txt @@ -13,6 +13,7 @@ mesq l("Hi @@.", strcharinfo(0)); next; mesq l("You are currently at @@.", LOCATION$); + mesc l("Note: Onboard, Destructive, Fire, and AoE Magic are NOT allowed."); mes ""; menu -- cgit v1.2.3-70-g09d2 From 6c6297580fee1e05e28d16aa095ba75adc6be97b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:27:54 -0300 Subject: Whiskey Ale now sold for 42 Strange Coins. Naming fixed. Grenade price lowered to 42. --- db/re/item_db.conf | 4 ++-- npc/001-1/rewards.txt | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'npc') diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 7555c4f45..a83b7f047 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -809,8 +809,8 @@ item_db: ( }, { Id: 534 - AegisName: "WhiskyAle" - Name: "Whisky Ale" + AegisName: "WhiskeyAle" + Name: "Whiskey Ale" Type: "IT_HEALING" Buy: 3200 Sell: 880 diff --git a/npc/001-1/rewards.txt b/npc/001-1/rewards.txt index b3534c1f9..b81b1e80a 100644 --- a/npc/001-1/rewards.txt +++ b/npc/001-1/rewards.txt @@ -69,7 +69,8 @@ OnInit: sellitem MagicApple,115; sellitem SacredLifePotion,60; sellitem SacredManaPotion,60; - sellitem Grenade,50; + sellitem Grenade,42; + sellitem WhiskeyAle,42; sellitem ElixirOfLife,32; sellitem CelestiaTea,18; sellitem HastePotion,15; -- cgit v1.2.3-70-g09d2 From ea1037f2ef9cb35ecc86aa716b267b2c65971fe2 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:29:10 -0300 Subject: Redo a bit the consumable price table on Aeros Shop --- npc/001-1/rewards.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'npc') diff --git a/npc/001-1/rewards.txt b/npc/001-1/rewards.txt index b81b1e80a..41b272c91 100644 --- a/npc/001-1/rewards.txt +++ b/npc/001-1/rewards.txt @@ -69,13 +69,13 @@ OnInit: sellitem MagicApple,115; sellitem SacredLifePotion,60; sellitem SacredManaPotion,60; - sellitem Grenade,42; - sellitem WhiskeyAle,42; sellitem ElixirOfLife,32; - sellitem CelestiaTea,18; - sellitem HastePotion,15; - sellitem StrengthPotion,15; - sellitem BottleOfDivineWater, 11; + sellitem Grenade,28; + sellitem WhiskeyAle,28; + sellitem CelestiaTea,17; + sellitem BottleOfDivineWater, 15; + sellitem HastePotion,11; + sellitem StrengthPotion,11; sellitem PrecisionPotion,9; sellitem DodgePotion,9; sellitem Curshroom,6; -- cgit v1.2.3-70-g09d2 From 9cf34e03fa88ab6ad318b36239d68eeb66dc92cc Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:36:21 -0300 Subject: Add Frostia's bar, selling Beer and Dwarven Sake (the best sale alcohol item) --- npc/024-9/_import.txt | 1 + npc/024-9/barkeeper.txt | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 npc/024-9/barkeeper.txt (limited to 'npc') diff --git a/npc/024-9/_import.txt b/npc/024-9/_import.txt index f038f049f..b0d325f44 100644 --- a/npc/024-9/_import.txt +++ b/npc/024-9/_import.txt @@ -1,3 +1,4 @@ // Map 024-9: Frostia Indoors // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/024-9/_warps.txt", +"npc/024-9/barkeeper.txt", diff --git a/npc/024-9/barkeeper.txt b/npc/024-9/barkeeper.txt new file mode 100644 index 000000000..347be0632 --- /dev/null +++ b/npc/024-9/barkeeper.txt @@ -0,0 +1,28 @@ +// TMW-2 Script +// Author: +// Jesusalva +// Description: +// Sells beer + +// Temporary Sprite +024-9,39,31,0 script Bar Jobs NPC_DWARF_TRADER,{ + hello; + shop .name$; + close; + +OnInit: + tradertype(NST_MARKET); + sellitem DwarvenSake, 1100, 5; + sellitem Beer, 300, 20; + + .sex = G_MALE; + .distance = 5; + end; + +OnClock2358: + restoreshopitem DwarvenSake, 1100, 5; + restoreshopitem Beer, 300, 20; + end; + +} + -- cgit v1.2.3-70-g09d2 From 68b24b2d7b7b944d2a901d063a96e3645ab1f29a Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:39:59 -0300 Subject: Fix mounts on ClientVersion too, correcting a bug present on live server due bad Indoor zone --- npc/functions/clientversion.txt | 3 +++ 1 file changed, 3 insertions(+) (limited to 'npc') diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index c4cca2467..70e8f2112 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -275,6 +275,9 @@ function script clientupdater { if (UPDATE < 1563219695) { UPDATE=1563219695; .@dg=true; + // Fix mounts + unequip(EQI_SHADOW_SHOES); + setmount 0; // You got recipe book by BSS Quest - mark as complete and get Blueprint if (getq(NivalisQuest_BlueSageSlimes) == 2) { getitem any(AncientBlueprint, AlchemyBlueprintA, EquipmentBlueprintA), 1; -- cgit v1.2.3-70-g09d2 From ed301596fa930073cae00a2b1c5acc1a39fa8990 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:44:57 -0300 Subject: Arkim/Clotho Liquor, Status: Released --- npc/015-3/arkim.txt | 2 ++ npc/024-9/barkeeper.txt | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'npc') diff --git a/npc/015-3/arkim.txt b/npc/015-3/arkim.txt index fa93d8b87..0db5e3142 100644 --- a/npc/015-3/arkim.txt +++ b/npc/015-3/arkim.txt @@ -118,6 +118,8 @@ L_Research: mesq l("@@ is developing these potions.", "Wyara"); break; case 5: mesq l("@@ is developing these potions.", "Fate, in Nivalis,"); break; // TODO: Missing NPC + case 6: + mesq l("@@ is developing these potions.", "Frostia Dwarves"); break; default: mesq l("@@ is developing these potions.", "Jesusalva"); // TODO: Clotho, Lachesis and Atropos break; diff --git a/npc/024-9/barkeeper.txt b/npc/024-9/barkeeper.txt index 347be0632..2d9f09122 100644 --- a/npc/024-9/barkeeper.txt +++ b/npc/024-9/barkeeper.txt @@ -12,8 +12,11 @@ OnInit: tradertype(NST_MARKET); + sellitem DwarvenSake, 1100, 5; sellitem Beer, 300, 20; + if ($ARKIM_ST >= 4000) + sellitem ClothoLiquor, -1, (($ARKIM_ST-4000)/500)+1; .sex = G_MALE; .distance = 5; @@ -22,6 +25,8 @@ OnInit: OnClock2358: restoreshopitem DwarvenSake, 1100, 5; restoreshopitem Beer, 300, 20; + if ($ARKIM_ST >= 4000) + restoreshopitem ClothoLiquor, (($ARKIM_ST-4000)/500)+1; end; } -- cgit v1.2.3-70-g09d2 From d478a507b5434f5487e16c2a64c419ff5650d64c Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 13:49:46 -0300 Subject: Improve reports (CV) --- npc/015-3/arkim.txt | 2 +- npc/functions/clientversion.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/015-3/arkim.txt b/npc/015-3/arkim.txt index 0db5e3142..21a5ce307 100644 --- a/npc/015-3/arkim.txt +++ b/npc/015-3/arkim.txt @@ -121,7 +121,7 @@ L_Research: case 6: mesq l("@@ is developing these potions.", "Frostia Dwarves"); break; default: - mesq l("@@ is developing these potions.", "Jesusalva"); // TODO: Clotho, Lachesis and Atropos + mesq l("@@ is developing these potions.", "Jesusalva"); // TODO: Lachesis and Atropos break; } diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index 70e8f2112..fea43b6da 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -282,10 +282,12 @@ function script clientupdater { if (getq(NivalisQuest_BlueSageSlimes) == 2) { getitem any(AncientBlueprint, AlchemyBlueprintA, EquipmentBlueprintA), 1; CRAFTQUEST=1; + mesc l("You got a blueprint as reward for Blue Sage Slimes Quest completion."); } // Bounty Hunter Helmet if (MERCENARY_DAILYQUEST > 100) { getitem BountyHunterHelmet, 1; + mesc l("You got a @@ for completing 100+ daily bountyhunter quests!", getitemlink(BountyHunterHelmet)), 2; } // If you have TMW2_CRAFT skill, you need the bonus recipe if (getskilllv(TMW2_CRAFT)) { -- cgit v1.2.3-70-g09d2 From abc641103183d7580a09fe4610ebb37f1a45912a Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 19:47:14 -0300 Subject: Tweak the skill deleting system. It may grant now more scholarship badges. Divine Protection is now removed, and granted again because it is now an FFA skill. --- npc/functions/clientversion.txt | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'npc') diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index fea43b6da..c3c48e4d9 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -319,19 +319,24 @@ function script clientupdater { if (@skilllist_flag[.@i] != 0) continue; // Only “paid” skills will result in a Scholarship Badge - switch (@skilllist_id[.@i]) { + .@id=@skilllist_id[.@i]; + .@am=0; + switch (.@id) { case SM_BASH: + case TMW2_DEMURE: + case MG_FIREBALL: + case MG_SRECOVERY: + case AL_DP: + .@am=1; case SM_ENDURE: case KN_AUTOCOUNTER: case KN_TWOHANDQUICKEN: - case TMW2_DEMURE: case AL_ANGELUS: case CR_TRUST: case CR_DEFENDER: case AL_HOLYLIGHT: case TF_DETOXIFY: case ALL_RESURRECTION: - case MG_SRECOVERY: case SM_RECOVERY: case PR_ASPERSIO: case AB_HIGHNESSHEAL: @@ -342,7 +347,6 @@ function script clientupdater { case SA_FROSTWEAPON: case SA_LIGHTNINGLOADER: case SA_SEISMICWEAPON: - case MG_FIREBALL: case MG_ENERGYCOAT: case MG_NAPALMBEAT: case MG_FIREBOLT: @@ -350,7 +354,10 @@ function script clientupdater { case MG_LIGHTNINGBOLT: case WZ_EARTHSPIKE: mesc l("A skill has been replaced with an @@.", getitemlink(ScholarshipBadge)); - getitem ScholarshipBadge, 1; + if (!.@am) + .@am=min(5, @skilllist_lv[.@i]); + + getitem ScholarshipBadge, .@am; skill @skilllist_id[.@i], 0, 0; getexp 5, (@skilllist_lv[.@i]-1)*1000; break; @@ -370,6 +377,11 @@ function script clientupdater { break; } } + // Grant you AL_DP based on magic level + if (MAGIC_LVL) { + skill AL_DP, MAGIC_LVL, 0; + mesc l("You have learnt \"Divine Protection\" level @@.", MAGIC_LVL), 3; + } // Cleanup deletearray RNGTREASURE_DATE; } -- cgit v1.2.3-70-g09d2 From eb4283748fc6ec11d58e22533c6c5919379e0de1 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 19:48:40 -0300 Subject: Pretty-print: add more colors on Client Updater --- npc/functions/clientversion.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'npc') diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index c3c48e4d9..b86876307 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -282,7 +282,7 @@ function script clientupdater { if (getq(NivalisQuest_BlueSageSlimes) == 2) { getitem any(AncientBlueprint, AlchemyBlueprintA, EquipmentBlueprintA), 1; CRAFTQUEST=1; - mesc l("You got a blueprint as reward for Blue Sage Slimes Quest completion."); + mesc l("You got a blueprint as reward for Blue Sage Slimes Quest completion."), 3; } // Bounty Hunter Helmet if (MERCENARY_DAILYQUEST > 100) { @@ -292,13 +292,13 @@ function script clientupdater { // If you have TMW2_CRAFT skill, you need the bonus recipe if (getskilllv(TMW2_CRAFT)) { RECIPES_EQUIPMENT[CraftDagger]=true; - mesc l("Dagger Crafting recipe learnt."); + mesc l("Dagger Crafting recipe learnt."), 2; } // Mercenary Rank removed if (MERC_RANK) { THIEF_RANK=MERC_RANK; MERC_RANK=0; - mesc l("Your class has been changed from %s to %s.", b(l("Merchant Police")), b(l("Thief"))); + mesc l("Your class has been changed from %s to %s.", b(l("Merchant Police")), b(l("Thief"))), 1; } if (getskilllv(ALL_INCCARRY)) { skill TF_STEAL, getskilllv(ALL_INCCARRY); @@ -310,7 +310,7 @@ function script clientupdater { skill AC_CHARGEARROW, getskilllv(SN_SHARPSHOOTING); skill AC_CHARGEARROW, 0, 0; getexp 2000, 150; - mesc l("Sharpshooting skill replaced with Charged Arrow."); + mesc l("Sharpshooting skill replaced with Charged Arrow."), 1; mesc l("You've got 2000 xp and 150 job xp in apology tokens."); } getskilllist(); -- cgit v1.2.3-70-g09d2 From ced414bef0fb9d1516a495ec04c215539719f4e4 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 19:49:36 -0300 Subject: Add the headers in case you're just a n00b and no update is needed. --- npc/functions/clientversion.txt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'npc') diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index b86876307..c70a06d8f 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -275,6 +275,8 @@ function script clientupdater { if (UPDATE < 1563219695) { UPDATE=1563219695; .@dg=true; + mesc l(".:: This is Release 9.5 Academy ::."), 0; + //mesc l(".:: This is Release 10.0 Infinity ::."), 0; // Fix mounts unequip(EQI_SHADOW_SHOES); setmount 0; -- cgit v1.2.3-70-g09d2 From 8165203ea8862777b439f07763d2f74e9eb637e5 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 19:50:48 -0300 Subject: Don't forget to migrate Merchant Police EXP to Thief Exp. --- npc/functions/clientversion.txt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'npc') diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index c70a06d8f..730e3d56a 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -299,7 +299,9 @@ function script clientupdater { // Mercenary Rank removed if (MERC_RANK) { THIEF_RANK=MERC_RANK; + THIEF_EXP=MERC_EXP; MERC_RANK=0; + MERC_EXP=0; mesc l("Your class has been changed from %s to %s.", b(l("Merchant Police")), b(l("Thief"))), 1; } if (getskilllv(ALL_INCCARRY)) { -- cgit v1.2.3-70-g09d2 From 8aa49725f5d65f97e6a9a51032a49232000f72d6 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 21:35:34 -0300 Subject: Alcohol - Now the first glass skips vitality check. --- npc/items/alcohol.txt | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'npc') diff --git a/npc/items/alcohol.txt b/npc/items/alcohol.txt index 81c6a6bd0..f1e9d4afb 100644 --- a/npc/items/alcohol.txt +++ b/npc/items/alcohol.txt @@ -36,15 +36,21 @@ } OnUse: - if (@Alcohol <= 0) close; - // Do you have enough vitality to hold your beer? - .@vit=readparam(bVit); - if (@Alcohol+ALC_THRESHOLD > .@vit) { - dispbottom l("You vomit, you are too drunk for this to have effect anymore."); - dispbottom l("Raise vitality to be able to drink even more."); - sc_start SC_CONFUSION, 5000, 0, 10000, SCFLAG_NOAVOID; // Warning, forces user to use @resync! + if (@Alcohol <= 0 || @taste <= 0) { + Exception("Invalid alcoholic item, deleting without any effect."); end; } + // Do you have enough vitality to hold your beer? + // Skip this check on the first drink + if (ALC_THRESHOLD) { + .@vit=readparam(bVit); + if (@Alcohol+ALC_THRESHOLD > .@vit) { + dispbottom l("You vomit, you are too drunk for this to have effect anymore."); + dispbottom l("Raise vitality to be able to drink even more."); + sc_start SC_CONFUSION, 5000, 0, 10000, SCFLAG_NOAVOID; // Warning, forces user to use @resync! + end; + } + } .@deltatime=60*1000; // How long (in ms) each Alcohol point works? (max. 100 points) // Default value is 1 minute per alcohol point - you'll be somber after at most two hours. @@ -52,7 +58,7 @@ OnUse: // Each user raises exp bonus in 1%, capped to the beverage taste // If you are with many people, drink a better beverage! ;-) getmapxy(.@m$, .@x, .@y, 0); - .@bonus=getareausers(.@m$, .@x-10, .@y-10, .@x+10, .@y+10)-1; + .@bonus=getareausers(.@m$, .@x-12, .@y-12, .@x+12, .@y+12)-1; @taste+=min(@taste, .@bonus); // Alcohol EXP Bonus - ponderate average, so having more VIT doesn't means @@ -81,11 +87,10 @@ OnUse: //debugmes "%d %d | %d %d | f t ", remaining_bonus(SC_OVERLAPEXPUP, false), remaining_bonus(SC_OVERLAPEXPUP, true), remaining_bonus(SC_ATTHASTE_INFINITY, false), remaining_bonus(SC_ATTHASTE_INFINITY, true); // For debuff I'll use inc_sc_bonus utilities (exp gain = atk speed loss) - @min=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2); - @max=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2); - @type=SC_ATTHASTE_INFINITY; - @delay=@Alcohol*(.@deltatime/1000); - doevent "inc_sc_bonus::OnUse"; + .@delay=@Alcohol*(.@deltatime/1000); + .@min=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2); + .@max=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2); + SC_Bonus(.@delay, SC_ATTHASTE_INFINITY, .@min, .@max); close; } -- cgit v1.2.3-70-g09d2 From cdcfdf581e2c106b2f5ccaff096d751fdc149d6e Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 21:39:21 -0300 Subject: Alcohol System miss some reset variables --- npc/003-3/malindou.txt | 3 +++ npc/items/alcohol.txt | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/003-3/malindou.txt b/npc/003-3/malindou.txt index 21bcf2279..475d5275d 100644 --- a/npc/003-3/malindou.txt +++ b/npc/003-3/malindou.txt @@ -515,6 +515,9 @@ OnPCLoginEvent: // Position and gameplay fixes HUB_Login(); + // Alcohol system reset + ALCReset(); + // Daily rewards (always the last) daily_login_bonus_handler(); end; diff --git a/npc/items/alcohol.txt b/npc/items/alcohol.txt index f1e9d4afb..3421bbe9e 100644 --- a/npc/items/alcohol.txt +++ b/npc/items/alcohol.txt @@ -79,8 +79,10 @@ OnUse: // Recalculate Alcohol Threshold and time ALC_THRESHOLD+=@Alcohol; - if (ALC_DELAYTIME < gettimetick(2)) + if (ALC_DELAYTIME < gettimetick(2)) { ALC_DELAYTIME=gettimetick(2); + ALC_THRESHOLD=@Alcohol; + } ALC_DELAYTIME+=@Alcohol*.@deltatime; // Debug comment if you need to check stuff @@ -94,3 +96,9 @@ OnUse: close; } +function script ALCReset { + if (ALC_DELAYTIME < gettimetick(2)) + ALC_THRESHOLD=0; + end; +} + -- cgit v1.2.3-70-g09d2 From f036cdcc36440c7811d6dd6741d372afeb98e47b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Jul 2019 22:28:44 -0300 Subject: Miler - drop requeriment to join Merc Police or Thieves Guild. Make it extra information when saying “Hello” instead. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- npc/019-1-1/miler.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/019-1-1/miler.txt b/npc/019-1-1/miler.txt index a4ecfd6bc..12c25899c 100644 --- a/npc/019-1-1/miler.txt +++ b/npc/019-1-1/miler.txt @@ -26,6 +26,10 @@ rif(.@q == 4, l("So, could I help you?")), L_Quest, l("Do you want any monster killed?"), L_GHQ; + // If not on Cordo quest, Miler will speak about + if (!THIEF_RANK && !MERC_RANK) + goto L_Rejected; + close; // Well Quest Subplot @@ -61,9 +65,11 @@ L_Doctor: // Not on Cordo quest L_Rejected: + /* mesn; mesq l("You cannot help me at all. You lack any skill to do so."); next; + */ mesn; mesq l("Hey, did you know there are two mouboos which constantly fight against themselves?!"); next; @@ -77,15 +83,17 @@ L_Rejected: next; mesn; mesq l("Anyway, I heard both were disciples from Cordo-whatever, a powerful person from LoF Village."); - mesq l("I think you should get initiated on any side before speaking to me again."); + //mesq l("I think you should get initiated on any side before speaking to me again."); close; // Main Quest L_Quest: // Force players upon Cordo quest + /* if (!THIEF_RANK && !MERC_RANK) goto L_Rejected; + */ mes ""; mesn; -- cgit v1.2.3-70-g09d2 From 1fc876e6ffe9c2c3dd39c0d28b379c8209977a0a Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 18:28:27 -0300 Subject: Passive Playstyle: Now you get monster points in the following cases: Fishing (=bait rarity). Treasure Hunting (=20% from Job Level). Both are about a Maggot Kill. Crafting gives full job level (about a Dark Lizard kill) --- npc/003-0/notes | 2 +- npc/craft/smith.txt | 3 +++ npc/functions/fishing.txt | 4 ++++ npc/functions/treasure.txt | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/003-0/notes b/npc/003-0/notes index cc277008b..fda37bf5a 100644 --- a/npc/003-0/notes +++ b/npc/003-0/notes @@ -49,7 +49,7 @@ SUPPORT SCIENCE / SCHOLARSHIP (MMO) AL_INCAGI (raise agi in 3+1/lv) HW_MAGICPOWER (aumenta poder da próxima skill em MATK 5%/lv) SM_PROVOKE (provoca um monstro especifico - exceto BOSS) - AL_ANGELUS (14x14, party, def +5%/lv) + **AL_ANGELUS (14x14, party, def +5%/lv) TF_DETOXIFY (cancels poison. 40% MP.) AC_CONCENTRATION (self: agi/dex 3+1%/lv, unhide enemies 3x3) AB_HIGHNESSHEAL (REAL healing skill) diff --git a/npc/craft/smith.txt b/npc/craft/smith.txt index 71f6a47f5..87dc9d55d 100644 --- a/npc/craft/smith.txt +++ b/npc/craft/smith.txt @@ -62,6 +62,9 @@ function script SmithSystem { // Get experience for the craft .@xp=getiteminfo(.@it, ITEMINFO_SELLPRICE); getexp .@xp+BaseLevel, (.@xp/3)+BaseLevel+JobLevel; + // Monster points too, if appliable - by your Job Level + if (MPQUEST) + Mobpt+=JobLevel; .success=true; } else { diff --git a/npc/functions/fishing.txt b/npc/functions/fishing.txt index 56415e6eb..52f9fcc9a 100644 --- a/npc/functions/fishing.txt +++ b/npc/functions/fishing.txt @@ -225,6 +225,10 @@ function script fishing { specialeffect(.@success_fx, SELF, playerattached()); getexp getvariableofnpc(.bait_ids[@bait_d+1], .@npc$)+(BaseLevel/10), 0; // xp gain is equivalent to bait rarity + BaseLevel boost + // MobPt gain is equivalent to bait rarity. + if (MPQUEST) + Mobpt+=getvariableofnpc(.bait_ids[@bait_d+1], .@npc$); + if(!checkweight(.@fish_id, 1)) { dispbottom l("You caught a @@ but had no room in your inventory to carry it.", getitemlink(.@fish_id)); diff --git a/npc/functions/treasure.txt b/npc/functions/treasure.txt index 0698d56ee..83da812e4 100644 --- a/npc/functions/treasure.txt +++ b/npc/functions/treasure.txt @@ -49,6 +49,9 @@ function script TreasureBox { inventoryplace .@loot, 1; mesc l("You find @@ inside!", getitemlink(.@loot)); getitem .@loot, 1; + // Get Monster points for treasure hunting (20% from job level) + if (MPQUEST) + Mobpt+=(JobLevel/5); } else { mesc l("You find @@ inside!", l("nothing")); } -- cgit v1.2.3-70-g09d2 From 6c51508bb120a97cfbf00f87734d676629a72df0 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 18:32:36 -0300 Subject: Remove Increase Carry Weight from Trickmaster and give to Thief rank 3. This makes Thief utility. I wrote this thinking on Iilia Quest, which CANNOT be successfuly complete without a thief in your party. (evil laugh). --- npc/003-0/trickmaster.txt | 2 +- npc/015-2/ben.txt | 12 ++++++++++++ npc/functions/clientversion.txt | 5 +++++ 3 files changed, 18 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/003-0/trickmaster.txt b/npc/003-0/trickmaster.txt index f8b3a8110..e35312606 100644 --- a/npc/003-0/trickmaster.txt +++ b/npc/003-0/trickmaster.txt @@ -19,7 +19,7 @@ "freecast", SA_FREECAST, "backslide", TF_BACKSLIDING, "firewall", MG_FIREWALL, - "inccarry", ALL_INCCARRY, + //"inccarry", ALL_INCCARRY, "fullthrottle", ALL_FULL_THROTTLE, "darkillusion", GC_DARKILLUSION, "trickdead", NV_TRICKDEAD, diff --git a/npc/015-2/ben.txt b/npc/015-2/ben.txt index c965131cc..2752aae44 100644 --- a/npc/015-2/ben.txt +++ b/npc/015-2/ben.txt @@ -36,6 +36,7 @@ L_Quest: mesn; mesq l("Congrats! You rank up! You are now a(n) @@!", thiefrank()); if (THIEF_RANK == 2) goto L_Rank2; + if (THIEF_RANK == 3) goto L_Rank3; } else { mesn; mesq l("Well, you need more experience. Keep trying!"); @@ -69,6 +70,17 @@ L_Rank2: mesq l("You must be close to it, and stealing won't change drops! If you fail, just try again! Good luck!"); close; +// Learn INCCARRY +L_Rank3: + skill(ALL_INCCARRY,1,0); + next; + mesn; + mesq l("Now, you'll learn a thief trick! What sort of thief loots so much that they get overweight penalty? That's not cool!"); + next; + mesn; + mesq l("You now gained two extra kilograms to your weight quota! Ka-pow, that's fantastic! Good luck!"); + close; + OnInit: .sex = G_MALE; .distance = 5; diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index 730e3d56a..5916c08a9 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -386,6 +386,11 @@ function script clientupdater { skill AL_DP, MAGIC_LVL, 0; mesc l("You have learnt \"Divine Protection\" level @@.", MAGIC_LVL), 3; } + // Grant you Thief Skill Tier 3 + if (THIEF_RANK >= 3) { + skill(ALL_INCCARRY,1,0); + mesc l("You have learnt \"Increase Weight\" in Thief Skills."), 2; + } // Cleanup deletearray RNGTREASURE_DATE; } -- cgit v1.2.3-70-g09d2 From afa85fd7535d5aba09a60003c4795d0837b2ed04 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 18:43:18 -0300 Subject: You may now melt down a Silver Mirror for 5~10 Silver Ore pieces. You need 7 Silver Ore to make a Silver Ingot, iirc. --- npc/020-5/bracco.txt | 3 +++ 1 file changed, 3 insertions(+) (limited to 'npc') diff --git a/npc/020-5/bracco.txt b/npc/020-5/bracco.txt index 52e9ad63e..8510c5974 100644 --- a/npc/020-5/bracco.txt +++ b/npc/020-5/bracco.txt @@ -151,6 +151,9 @@ L_Meltdown: mes ""; // Returns 50~70% of invested ingots, rounded down. Never returns Coal. switch (.@id) { + case SilverMirror: + Meltdown(.@it, 500, SilverOre, rand2(5, 10)); // Exception + break; case RustyKnife: Meltdown(.@it, 15, IronOre, any(0, 0, 0, 1, 1)); // Exception break; -- cgit v1.2.3-70-g09d2 From e37c8f85c7e7c96e14146958f28d09f207e020f1 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 18:44:17 -0300 Subject: * You need only 3 Silver Ore (it was 7 coal). So it'll result in 2~5 Silver Ore. --- npc/020-5/bracco.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/020-5/bracco.txt b/npc/020-5/bracco.txt index 8510c5974..3a3c33b3c 100644 --- a/npc/020-5/bracco.txt +++ b/npc/020-5/bracco.txt @@ -152,7 +152,7 @@ L_Meltdown: // Returns 50~70% of invested ingots, rounded down. Never returns Coal. switch (.@id) { case SilverMirror: - Meltdown(.@it, 500, SilverOre, rand2(5, 10)); // Exception + Meltdown(.@it, 500, SilverOre, rand2(2, 5)); // Exception break; case RustyKnife: Meltdown(.@it, 15, IronOre, any(0, 0, 0, 1, 1)); // Exception -- cgit v1.2.3-70-g09d2 From 4a552b833e47ce0b7a5115f653c931815aa15381 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 18:52:12 -0300 Subject: Ben the Thief Master: You may now improve Thief Skills using the NEW magic system. --- db/re/item_db.conf | 1 - npc/015-2/ben.txt | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) (limited to 'npc') diff --git a/db/re/item_db.conf b/db/re/item_db.conf index a83b7f047..6e80f1e35 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -5228,7 +5228,6 @@ item_db: ( Sell: 1 Weight: 850 Refine: false - ViewSprite: 714 Trade: { nodrop: true noselltonpc: true diff --git a/npc/015-2/ben.txt b/npc/015-2/ben.txt index 2752aae44..bc383eebd 100644 --- a/npc/015-2/ben.txt +++ b/npc/015-2/ben.txt @@ -26,7 +26,7 @@ L_Quest: goto L_Recruit; mesn; mesq l("Hello there, @@, fear from the wealthy.", thiefrank()); - if (THIEF_RANK == 5) close; + if (THIEF_RANK == 5) goto L_Menu; mesq l("I see you have collected some experience. Let me try to rank you up!"); next; if (THIEF_EXP > (THIEF_RANK*2)**5) { @@ -41,6 +41,7 @@ L_Quest: mesn; mesq l("Well, you need more experience. Keep trying!"); } + goto L_Menu; close; L_Recruit: @@ -81,6 +82,42 @@ L_Rank3: mesq l("You now gained two extra kilograms to your weight quota! Ka-pow, that's fantastic! Good luck!"); close; +// Allow to level up thief skills +L_Menu: + do + { + next; + mesn; + mesq l("Do you want me to teach you how to improve an existing skill with MAGIC? There are no better mages than Mouboos!"); + mesc l("You also need @@/@@ Mob Points to improve thief skills.", format_number(Mobpt), 1000); + if (Mobpt < 1000) + close; + next; + select + rif(getskilllv(TF_STEAL), l("Improve Stealing to level ")+getskilllv(TF_STEAL)+1), + rif(getskilllv(ALL_INCCARRY), l("Improve Max Weight to level ")+getskilllv(ALL_INCCARRY)+1), + l("None at the moment."); + mes ""; + // BlueCoral, {CrocClaw, OceanCrocClaw: Empty Box}, PlushroomBox + switch (@menu) { + case 1: + if (!mlearn(TF_STEAL, 10, 1, BlueCoral, 6*getskilllv(TF_STEAL))) + mesc l("You do not meet all requisites for this skill."), 1; + else + Mobpt-=1000; + break; + case 2: + if (!mlearn(ALL_INCCARRY, 10, 1, BlueCoral, 9*getskilllv(ALL_INCCARRY))) + mesc l("You do not meet all requisites for this skill."), 1; + else + Mobpt-=1000; + break; + case 3: + close; + } + } while (true); + close; + OnInit: .sex = G_MALE; .distance = 5; -- cgit v1.2.3-70-g09d2 From 9008ebd9468d00a4b180de77493b303a53a8e461 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 18:52:37 -0300 Subject: Make a redundant redundancy a simple redudancy. --- npc/015-2/ben.txt | 61 ++++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 32 deletions(-) (limited to 'npc') diff --git a/npc/015-2/ben.txt b/npc/015-2/ben.txt index bc383eebd..99d2776ff 100644 --- a/npc/015-2/ben.txt +++ b/npc/015-2/ben.txt @@ -84,39 +84,36 @@ L_Rank3: // Allow to level up thief skills L_Menu: - do - { - next; - mesn; - mesq l("Do you want me to teach you how to improve an existing skill with MAGIC? There are no better mages than Mouboos!"); - mesc l("You also need @@/@@ Mob Points to improve thief skills.", format_number(Mobpt), 1000); - if (Mobpt < 1000) + next; + mesn; + mesq l("Do you want me to teach you how to improve an existing skill with MAGIC? There are no better mages than Mouboos!"); + mesc l("You also need @@/@@ Mob Points to improve thief skills.", format_number(Mobpt), 1000); + if (Mobpt < 1000) + close; + next; + select + rif(getskilllv(TF_STEAL), l("Improve Stealing to level ")+getskilllv(TF_STEAL)+1), + rif(getskilllv(ALL_INCCARRY), l("Improve Max Weight to level ")+getskilllv(ALL_INCCARRY)+1), + l("None at the moment."); + mes ""; + // BlueCoral, {CrocClaw, OceanCrocClaw: Empty Box}, PlushroomBox + switch (@menu) { + case 1: + if (!mlearn(TF_STEAL, 10, 1, BlueCoral, 6*getskilllv(TF_STEAL))) + mesc l("You do not meet all requisites for this skill."), 1; + else + Mobpt-=1000; + break; + case 2: + if (!mlearn(ALL_INCCARRY, 10, 1, BlueCoral, 9*getskilllv(ALL_INCCARRY))) + mesc l("You do not meet all requisites for this skill."), 1; + else + Mobpt-=1000; + break; + case 3: close; - next; - select - rif(getskilllv(TF_STEAL), l("Improve Stealing to level ")+getskilllv(TF_STEAL)+1), - rif(getskilllv(ALL_INCCARRY), l("Improve Max Weight to level ")+getskilllv(ALL_INCCARRY)+1), - l("None at the moment."); - mes ""; - // BlueCoral, {CrocClaw, OceanCrocClaw: Empty Box}, PlushroomBox - switch (@menu) { - case 1: - if (!mlearn(TF_STEAL, 10, 1, BlueCoral, 6*getskilllv(TF_STEAL))) - mesc l("You do not meet all requisites for this skill."), 1; - else - Mobpt-=1000; - break; - case 2: - if (!mlearn(ALL_INCCARRY, 10, 1, BlueCoral, 9*getskilllv(ALL_INCCARRY))) - mesc l("You do not meet all requisites for this skill."), 1; - else - Mobpt-=1000; - break; - case 3: - close; - } - } while (true); - close; + } + goto L_Menu; OnInit: .sex = G_MALE; -- cgit v1.2.3-70-g09d2 From 43605e86f160367a346dd6e86f27f8fb218b7c4c Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 19:28:15 -0300 Subject: Bandit Guild > Thieves Guild. Remove the notice about Merchant Police. --- npc/015-2/ben.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'npc') diff --git a/npc/015-2/ben.txt b/npc/015-2/ben.txt index 99d2776ff..ed5df8a18 100644 --- a/npc/015-2/ben.txt +++ b/npc/015-2/ben.txt @@ -46,15 +46,16 @@ L_Quest: L_Recruit: mesn; - mesq l("You seem to be doing some money. Would you consider fighting for evil, and against all those whom make wealthy unworthly?"); - mesc l("Notice: If you join the ##BBandits Guild##b now, you WON'T BE ABLE to be a merchant police later!"), 1; + mesq l("You seem to be doing some money. Would you consider fighting for evil, and against all those whom make wealth unworthly?"); + //mesc l("Notice: If you join the ##BBandits Guild##b now, you WON'T BE ABLE to be a merchant police later!"), 1; + mesc l("Note: You won't be able to leave the class later."), 1; next; if (askyesno() == ASK_YES) { THIEF_EXP=0; THIEF_RANK=1; mes ""; mesn; - mesq l("Welcome to the ##BBandits Guild##b! Steal anyone wealthy!"); + mesq l("Welcome to the ##BThieves Guild##b! Steal anyone wealthy!"); } else { goto L_Intro; } -- cgit v1.2.3-70-g09d2 From b7ee2ae3fdb4b01e580c753a6bbef2ecf105fea4 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 19:32:09 -0300 Subject: You get a TulimWarpCrystal if you gained a Scholarship Badge. --- npc/functions/clientversion.txt | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'npc') diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index 5916c08a9..5507ce75f 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -391,6 +391,12 @@ function script clientupdater { skill(ALL_INCCARRY,1,0); mesc l("You have learnt \"Increase Weight\" in Thief Skills."), 2; } + // If you got a Scholarship Badge, you need to travel to Tulimshar. + // Give you a Warp Crystal to do so. + if (countitem(ScholarshipBadge)) { + getitem TulimWarpCrystal, 1; + mesc l("You've obtained a @@ to visit Magic Academy.", getitemlink(TulimWarpCrystal)), 1; + } // Cleanup deletearray RNGTREASURE_DATE; } -- cgit v1.2.3-70-g09d2 From b5e4c21b79b1bd81661e63baa6c07e9aafd54d97 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 19:39:27 -0300 Subject: If you re-learn an already know recipe, you'll get from 900 to 32000 mob points. of course, given blue print settings, it should not get above 24k... --- npc/craft/recipes.txt | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'npc') diff --git a/npc/craft/recipes.txt b/npc/craft/recipes.txt index 163faf545..c8a3362ca 100644 --- a/npc/craft/recipes.txt +++ b/npc/craft/recipes.txt @@ -384,6 +384,9 @@ function script MakeBlueprint { if (RECIPES_ALCHEMY[.@rcp]) { dispbottom l("It was a recipe you already knew..."); getexp (BaseLevel+JobLevel)*rand2(1,.@rarity), JobLevel+rand2(1,.@rarity); + // Give you some Monster Points to use with Intense Beard + // You do NOT need to be registered with Aidan for this. + Mobpt+=rand2(900, 1000*.@rarity); } else { dispbottom l("Learned a new recipe!"); RECIPES_ALCHEMY[.@rcp]=true; @@ -439,6 +442,9 @@ function script MakeBlueprint { if (RECIPES_EQUIPMENT[.@rcp]) { dispbottom l("It was a recipe you already knew..."); getexp (BaseLevel+JobLevel)*rand2(1,.@rarity), JobLevel+rand2(1,.@rarity); + // Give you some Monster Points to use with Intense Beard + // You do NOT need to be registered with Aidan for this. + Mobpt+=rand2(900, 1000*.@rarity); } else { dispbottom l("Learned a new recipe!"); RECIPES_EQUIPMENT[.@rcp]=true; -- cgit v1.2.3-70-g09d2 From 9582cb5d497130adf259631c25fdffa9c6c08734 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 19:54:58 -0300 Subject: Change MobPt bonus from 10% to 20%, and slimes won't have this bonus anymore. Meaning a lv 30 slime (default) will go from 33 to 30 mob points. While a normal lv 30 enemy will go from 33 to 36 mob points. --- npc/functions/mobpoint.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'npc') diff --git a/npc/functions/mobpoint.txt b/npc/functions/mobpoint.txt index 8605f40ba..1c1883a6f 100644 --- a/npc/functions/mobpoint.txt +++ b/npc/functions/mobpoint.txt @@ -15,9 +15,12 @@ function script mobpoint { return; //if (killedrid < 1002) goto L_Return; - // You get MobLv + 10% as MobPoints. - // So a level 100 monster gives you 110 MobPt. - .@addval=strmobinfo(3,killedrid)*11/10; + // You get MobLv + 20% as MobPoints. + // So a level 100 monster gives you 120 MobPt. Slimes gives no bonus. + if (compare("slime", strtolower(strmobinfo(1, killedrid)))) + .@addval=strmobinfo(3,killedrid); + else + .@addval=strmobinfo(3,killedrid)*12/10; Mobpt = Mobpt + .@addval; return; -- cgit v1.2.3-70-g09d2 From 762643991eb8e7fc986a39eab529fc9f6bb057ff Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 19:58:43 -0300 Subject: Nivalis Well - When successfully throwing stuff inside, if quest is complete, it'll report if you will die by jumping or not. --- npc/019-1/well.txt | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'npc') diff --git a/npc/019-1/well.txt b/npc/019-1/well.txt index 9eba86bfa..ca062a476 100644 --- a/npc/019-1/well.txt +++ b/npc/019-1/well.txt @@ -68,6 +68,13 @@ L_Throw: // Now we check if quest must start if (!.@q) goto L_Quest; + // If not, report if it is safe to jump + if (readparam(bVit) < 55) + mesc l("The item impact suggests you don't have enough vitality to jump inside."), 1; + else if (readparam(bVit) < 75) + mesc l("The item impact suggests jumping inside will leave you badly wounded."); + else + mesc l("The item impact suggests jumping inside should be safe if you have enough life."); close; // Quest Node -- cgit v1.2.3-70-g09d2 From 31615fc21c6c40ef8654d5dfdd65adeabac84efb Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:00:54 -0300 Subject: Lower minimum vitality needed to use the Nivalis Well Shortcut from 55 to 50. Reports remain saying you need 55+ vit, because, uh... 1% vit should insta-kill you anyway, because monster population. --- npc/019-1/well.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/019-1/well.txt b/npc/019-1/well.txt index ca062a476..57d1194ef 100644 --- a/npc/019-1/well.txt +++ b/npc/019-1/well.txt @@ -31,7 +31,7 @@ L_Reckless: closedialog; warp "015-6", 363, 109; dispbottom l("Ouch! That was kinda reckless!"); - percentheal -155+readparam(bVit), 0; + percentheal -150+readparam(bVit), 0; close; // Easter Egg -- cgit v1.2.3-70-g09d2 From c424c80c97ce83277bdf3ae8fe733c5bc7629115 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:04:07 -0300 Subject: Raise chance of filling an Iced Bottle on Nivalis Well from 0.11% to 0.33%. --- npc/019-1/well.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/019-1/well.txt b/npc/019-1/well.txt index 57d1194ef..6f90d5fb7 100644 --- a/npc/019-1/well.txt +++ b/npc/019-1/well.txt @@ -148,7 +148,7 @@ L_Bottle: // Calculate how many iced bottles you'll get .@iced=0; for (.@i=0; .@i < .@count; .@i++) { - if (rand(1,1000) < 11) + if (rand2(1,1000) < 33) .@iced++; } -- cgit v1.2.3-70-g09d2 From 71631b8c72eef79f721ab3b4a5c03425a0e0aabb Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:10:02 -0300 Subject: Warp items will now cancel ship travel. They're allowed again onboard. --- db/re/item_db.conf | 1 + db/re/map_zone_db.conf | 11 ----------- npc/items/lofteleporter.txt | 4 ++++ npc/items/teleporter.txt | 3 ++- 4 files changed, 7 insertions(+), 12 deletions(-) (limited to 'npc') diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 6e80f1e35..5fb5f2194 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -2670,6 +2670,7 @@ item_db: ( Script: <" // We would want warp to be delayed a bit but meh sleep2(rand(1000,2500)); + @timer_navio_running=0; warp "Save", 0, 0; "> }, diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index 37071377a..191b3610a 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -228,17 +228,6 @@ zones: ( disabled_items: { ExplosiveArrow: true Grenade: true - // Warp items because ship will override them - TimeFlask: true - CandorWarpCrystal: true - TulimWarpCrystal: true - HalinWarpCrystal: true - HurnsWarpCrystal: true - LoFWarpCrystal: true - NivalWarpCrystal: true - FrostiaWarpCrystal: true - LilitWarpCrystal: true - ReturnPotion: true } mapflags: ( diff --git a/npc/items/lofteleporter.txt b/npc/items/lofteleporter.txt index 44cf93c59..2540c90dc 100644 --- a/npc/items/lofteleporter.txt +++ b/npc/items/lofteleporter.txt @@ -71,21 +71,25 @@ OnUse: warp "017-1", 120, 89; TELEPORTER_TIME=loftel_time(40, .@x); LOCATION$="LoF"; + @timer_navio_running=0; break; case 3: warp "024-1", 155, 82; TELEPORTER_TIME=loftel_time(120, .@x); LOCATION$="Frostia"; + @timer_navio_running=0; break; case 4: warp "009-1", 113, 91; TELEPORTER_TIME=loftel_time(120, .@x); LOCATION$="Halin"; + @timer_navio_running=0; break; case 5: warp "Save", 0, 0; TELEPORTER_TIME=loftel_time(20, .@x); //LOCATION$="Save"; + @timer_navio_running=0; break; } closedialog; diff --git a/npc/items/teleporter.txt b/npc/items/teleporter.txt index dad9b97a7..40bf61821 100644 --- a/npc/items/teleporter.txt +++ b/npc/items/teleporter.txt @@ -41,8 +41,9 @@ OnUse: else getitem BrokenWarpCrystal, 1; - // Apply Cooldown, same variable as LoF Teleporter + // Apply Cooldown, same variable as LoF Teleporter, cancel ship travels TELEPORTER_TIME=gettimetick(2)+300; + @timer_navio_running=0; // Save new location and warp you there EnterTown(@dest$); -- cgit v1.2.3-70-g09d2 From a8803b186e7caf4675adc08b9a9af518d69d9c82 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:15:35 -0300 Subject: Improve Ben's dialog. --- npc/015-2/ben.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'npc') diff --git a/npc/015-2/ben.txt b/npc/015-2/ben.txt index ed5df8a18..98dac1710 100644 --- a/npc/015-2/ben.txt +++ b/npc/015-2/ben.txt @@ -46,7 +46,7 @@ L_Quest: L_Recruit: mesn; - mesq l("You seem to be doing some money. Would you consider fighting for evil, and against all those whom make wealth unworthly?"); + mesq l("You seem to be doing some money. Would you consider fighting for your own greed, or even be a Robin-Hood-of-sorts, stealing from the rich?"); //mesc l("Notice: If you join the ##BBandits Guild##b now, you WON'T BE ABLE to be a merchant police later!"), 1; mesc l("Note: You won't be able to leave the class later."), 1; next; @@ -55,7 +55,8 @@ L_Recruit: THIEF_RANK=1; mes ""; mesn; - mesq l("Welcome to the ##BThieves Guild##b! Steal anyone wealthy!"); + mesq l("Welcome to the ##BThieves Guild##b! Follow those with higher rank than you, and happy stealing!"); + mesc l("You've learned how to use @@. Simple locks can now be broken.", getitemlink(Lockpicks)); } else { goto L_Intro; } -- cgit v1.2.3-70-g09d2 From a30e56ebd98f9269d90d1ceac70101652415ab1b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:17:31 -0300 Subject: More rewrites to Ben so it sounds cooler. --- npc/015-2/ben.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/015-2/ben.txt b/npc/015-2/ben.txt index 98dac1710..2957b2e47 100644 --- a/npc/015-2/ben.txt +++ b/npc/015-2/ben.txt @@ -25,7 +25,7 @@ L_Quest: if (THIEF_RANK == 0) goto L_Recruit; mesn; - mesq l("Hello there, @@, fear from the wealthy.", thiefrank()); + mesq l("Hello there, @@ the @@.", strcharinfo(0), thiefrank()); if (THIEF_RANK == 5) goto L_Menu; mesq l("I see you have collected some experience. Let me try to rank you up!"); next; -- cgit v1.2.3-70-g09d2 From 9f8ea22b6f813ac68820beac411d378a829744f9 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:35:06 -0300 Subject: Give an EXP reward by completing Mercury's quest. --- npc/021-1/yeti.txt | 1 + npc/functions/clientversion.txt | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'npc') diff --git a/npc/021-1/yeti.txt b/npc/021-1/yeti.txt index 7bdebcbab..a24c83d6d 100644 --- a/npc/021-1/yeti.txt +++ b/npc/021-1/yeti.txt @@ -108,6 +108,7 @@ L_Report: close; } delitem MoubooSteak, 60; + getexp 120000, 0; // roughly 30% from needed EXP. This quest IS boring. setq NivalisQuest_Cindy, 3; mesn; mesq l("Great. I hereby task you to kill the rogue Yetis on the Yeti King Throne Room. Of course, you won't be able to leave until all of them are dead."); diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index 5507ce75f..bd33a48ee 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -286,15 +286,20 @@ function script clientupdater { CRAFTQUEST=1; mesc l("You got a blueprint as reward for Blue Sage Slimes Quest completion."), 3; } + // If you have TMW2_CRAFT skill, you need the bonus recipe + if (getskilllv(TMW2_CRAFT)) { + RECIPES_EQUIPMENT[CraftDagger]=true; + mesc l("Dagger Crafting recipe learnt."), 2; + } // Bounty Hunter Helmet if (MERCENARY_DAILYQUEST > 100) { getitem BountyHunterHelmet, 1; mesc l("You got a @@ for completing 100+ daily bountyhunter quests!", getitemlink(BountyHunterHelmet)), 2; } - // If you have TMW2_CRAFT skill, you need the bonus recipe - if (getskilllv(TMW2_CRAFT)) { - RECIPES_EQUIPMENT[CraftDagger]=true; - mesc l("Dagger Crafting recipe learnt."), 2; + // Cindy quest new rewards + if (getq(NivalisQuest_Cindy) >= 3) { + getexp 120000, 0; + mesc l("You got 120,000 XP for completing Mercury's quest."), 2; } // Mercenary Rank removed if (MERC_RANK) { -- cgit v1.2.3-70-g09d2 From 861a5d127d7e50900ca32ba97aee8647b8709894 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:48:20 -0300 Subject: Each user nearby will raise EXP boost in 1.5% instead of default 1%. --- npc/items/alcohol.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'npc') diff --git a/npc/items/alcohol.txt b/npc/items/alcohol.txt index 3421bbe9e..ad91da8db 100644 --- a/npc/items/alcohol.txt +++ b/npc/items/alcohol.txt @@ -55,10 +55,11 @@ OnUse: // Default value is 1 minute per alcohol point - you'll be somber after at most two hours. // Taste is affected by users near you. - // Each user raises exp bonus in 1%, capped to the beverage taste + // Each user raises exp bonus in 1.5%, capped to the beverage taste // If you are with many people, drink a better beverage! ;-) getmapxy(.@m$, .@x, .@y, 0); .@bonus=getareausers(.@m$, .@x-12, .@y-12, .@x+12, .@y+12)-1; + .@bonus=.@bonus*15/10; @taste+=min(@taste, .@bonus); // Alcohol EXP Bonus - ponderate average, so having more VIT doesn't means -- cgit v1.2.3-70-g09d2 From 9cdd19fcf0c7a3fc0bd25478c49b092693d1ff3a Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:51:09 -0300 Subject: Add a proper tutorial page on Nylo about beer --- npc/005-5/nylo.txt | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'npc') diff --git a/npc/005-5/nylo.txt b/npc/005-5/nylo.txt index c37c1ed99..c0ac3d98c 100644 --- a/npc/005-5/nylo.txt +++ b/npc/005-5/nylo.txt @@ -31,6 +31,14 @@ mesn; mesq l("Of course: better drinks, more EXP. Just be careful to don't get so drunk that you cannot fight anymore, will ya?"); next; + if (TUTORIAL && !@beertuto) { + @beertuto=true; + mes l(".:: Alcohol Tutorial ::."); + mesc l("Drinking with friends will give 1.5% extra XP boost for each person nearby."); + mesc l("Alcohol effects expire upon death. You need vitality to drink more beer."); + mesc l("Even if you drink alone, you'll still receive the EXP bonus marked on the item description."); + next; + } closeclientdialog; // Not needed? openshop "Nylo#Beer"; break; -- cgit v1.2.3-70-g09d2 From ea72764cc1c8a817c8476d26c68bf799eda70063 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:52:03 -0300 Subject: Change Elmo and Nard EXP boost ID to one which doesn't expires on death. --- npc/002-3/elmo.txt | 4 ++-- npc/002-3/nard.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'npc') diff --git a/npc/002-3/elmo.txt b/npc/002-3/elmo.txt index 3aa022b19..70669e1b4 100644 --- a/npc/002-3/elmo.txt +++ b/npc/002-3/elmo.txt @@ -149,8 +149,8 @@ function ExpBoost { // Current (2019-04-27) top is 80/80/75, meaning a 19% EXP Boost. .@AVG_LEVEL=($@hoblvl_value[0]+$@hoblvl_value[1]+$@hoblvl_value[2])/3; .@BONUS=.@AVG_LEVEL/4; - sc_end SC_OVERLAPEXPUP; - sc_start SC_OVERLAPEXPUP, 3600000, min(25, .@BONUS); + sc_end SC_CASH_PLUSEXP; + sc_start SC_CASH_PLUSEXP, 3600000, min(25, .@BONUS); mesc l("EXP Gain raised in @@% for one hour!", min(25, .@BONUS)), 2; return; } diff --git a/npc/002-3/nard.txt b/npc/002-3/nard.txt index b127315d0..a45c9c40c 100644 --- a/npc/002-3/nard.txt +++ b/npc/002-3/nard.txt @@ -64,8 +64,8 @@ L_Checker: // Actually, why don't we apply it right now...? .@AVG_LEVEL=($@hoblvl_value[0]+$@hoblvl_value[1]+$@hoblvl_value[2])/3; .@BONUS=.@AVG_LEVEL/4; - sc_end SC_OVERLAPEXPUP; - sc_start SC_OVERLAPEXPUP, 3600000, min(25, .@BONUS); + sc_end SC_CASH_PLUSEXP; + sc_start SC_CASH_PLUSEXP, 3600000, min(25, .@BONUS); specialeffect FX_SPECIAL, SELF, getcharid(3); mesc l("EXP Gain raised in @@% for one hour!", min(25, .@BONUS)), 2; next; -- cgit v1.2.3-70-g09d2 From 10d91ca8cb040a67bc4a283b68f8b01192739414 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 20:56:44 -0300 Subject: Pre-level 15 bonus will now raise drop rates, too, because new players need them. Fix the code which expires both bonuses on level up because it became deprecated. --- npc/002-3/elmo.txt | 9 ++++++--- npc/002-3/nard.txt | 8 +++++--- npc/003-3/malindou.txt | 3 ++- 3 files changed, 13 insertions(+), 7 deletions(-) (limited to 'npc') diff --git a/npc/002-3/elmo.txt b/npc/002-3/elmo.txt index 70669e1b4..e75f7c575 100644 --- a/npc/002-3/elmo.txt +++ b/npc/002-3/elmo.txt @@ -148,10 +148,13 @@ function ExpBoost { // Level 100 ("max") = 25% EXP BOOST (max) // Current (2019-04-27) top is 80/80/75, meaning a 19% EXP Boost. .@AVG_LEVEL=($@hoblvl_value[0]+$@hoblvl_value[1]+$@hoblvl_value[2])/3; - .@BONUS=.@AVG_LEVEL/4; + .@BONUS=min(25, .@AVG_LEVEL/4); sc_end SC_CASH_PLUSEXP; - sc_start SC_CASH_PLUSEXP, 3600000, min(25, .@BONUS); - mesc l("EXP Gain raised in @@% for one hour!", min(25, .@BONUS)), 2; + sc_end SC_CASH_RECEIVEITEM; + sc_start SC_CASH_PLUSEXP, 3600000, .@BONUS; + sc_start SC_CASH_RECEIVEITEM, 3600000, .@BONUS; + specialeffect FX_SPECIAL, SELF, getcharid(3); + mesc l("EXP Gain raised in @@% for one hour!", .@BONUS, 2; return; } diff --git a/npc/002-3/nard.txt b/npc/002-3/nard.txt index a45c9c40c..80ade6443 100644 --- a/npc/002-3/nard.txt +++ b/npc/002-3/nard.txt @@ -63,11 +63,13 @@ L_Checker: mesc l("Talk to Elmo to get an EXP UP Boost until level 15!"), 2; // Actually, why don't we apply it right now...? .@AVG_LEVEL=($@hoblvl_value[0]+$@hoblvl_value[1]+$@hoblvl_value[2])/3; - .@BONUS=.@AVG_LEVEL/4; + .@BONUS=min(25, .@AVG_LEVEL/4); sc_end SC_CASH_PLUSEXP; - sc_start SC_CASH_PLUSEXP, 3600000, min(25, .@BONUS); + sc_end SC_CASH_RECEIVEITEM; + sc_start SC_CASH_PLUSEXP, 3600000, .@BONUS; + sc_start SC_CASH_RECEIVEITEM, 3600000, .@BONUS; specialeffect FX_SPECIAL, SELF, getcharid(3); - mesc l("EXP Gain raised in @@% for one hour!", min(25, .@BONUS)), 2; + mesc l("EXP Gain raised in @@% for one hour!", .@BONUS, 2; next; showavatar NPC_NARD; mesn; diff --git a/npc/003-3/malindou.txt b/npc/003-3/malindou.txt index 475d5275d..9e41b9196 100644 --- a/npc/003-3/malindou.txt +++ b/npc/003-3/malindou.txt @@ -470,7 +470,8 @@ OnInit: OnPCBaseLvUpEvent: switch (BaseLevel) { case 15: - sc_end SC_OVERLAPEXPUP; + sc_end SC_CASH_PLUSEXP; + sc_end SC_CASH_RECEIVEITEM; break; case 25: case 50: -- cgit v1.2.3-70-g09d2 From 6f018e8ed2d501d266ef47e7449a3fff939548ea Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Jul 2019 21:18:37 -0300 Subject: Fix a really minor typo --- npc/002-3/elmo.txt | 2 +- npc/002-3/nard.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'npc') diff --git a/npc/002-3/elmo.txt b/npc/002-3/elmo.txt index e75f7c575..4fa12f700 100644 --- a/npc/002-3/elmo.txt +++ b/npc/002-3/elmo.txt @@ -154,7 +154,7 @@ function ExpBoost { sc_start SC_CASH_PLUSEXP, 3600000, .@BONUS; sc_start SC_CASH_RECEIVEITEM, 3600000, .@BONUS; specialeffect FX_SPECIAL, SELF, getcharid(3); - mesc l("EXP Gain raised in @@% for one hour!", .@BONUS, 2; + mesc l("EXP Gain raised in @@% for one hour!", .@BONUS), 2; return; } diff --git a/npc/002-3/nard.txt b/npc/002-3/nard.txt index 80ade6443..c9060ffd3 100644 --- a/npc/002-3/nard.txt +++ b/npc/002-3/nard.txt @@ -69,7 +69,7 @@ L_Checker: sc_start SC_CASH_PLUSEXP, 3600000, .@BONUS; sc_start SC_CASH_RECEIVEITEM, 3600000, .@BONUS; specialeffect FX_SPECIAL, SELF, getcharid(3); - mesc l("EXP Gain raised in @@% for one hour!", .@BONUS, 2; + mesc l("EXP Gain raised in @@% for one hour!", .@BONUS), 2; next; showavatar NPC_NARD; mesn; -- cgit v1.2.3-70-g09d2 From d50cb8eff8d4f143b553cc33401f60baa6b03873 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sun, 28 Jul 2019 17:38:18 -0300 Subject: System-based EXP UP events are now compatible with GM calls. GM calls still override system-based experience changes. New syntax for how system-based EXP UP events are to be used. Cap is x2. --- npc/003-1/aahna.txt | 11 +++-------- npc/023-2/mk.txt | 6 +++--- npc/commands/rate-management.txt | 11 ++++++++++- npc/functions/siege.txt | 20 ++++++++++---------- 4 files changed, 26 insertions(+), 22 deletions(-) (limited to 'npc') diff --git a/npc/003-1/aahna.txt b/npc/003-1/aahna.txt index 9273e3955..94fff454a 100644 --- a/npc/003-1/aahna.txt +++ b/npc/003-1/aahna.txt @@ -24,14 +24,9 @@ OnInit: // Server Happy Hour OnSun1800: - /* - $@EXP_EVENT=rand(110, 115); - if ($@EXP_EVENT > 111 && $@EXP_EVENT != 115) - $@EXP_EVENT=rand(110, 115); - */ - $@EXP_EVENT=rand(115, 120); - if ($@EXP_EVENT > 115 && $@EXP_EVENT != 120) - $@EXP_EVENT=rand(115, 120); + $@EXP_EVENT=rand2(15, 20); + if ($@EXP_EVENT > 15 && $@EXP_EVENT != 20) + $@EXP_EVENT=rand2(15, 20); $@EXP_EVENT_TIME=any(1,1,1,2); donpcevent "@exprate::OnPlayerCall"; end; diff --git a/npc/023-2/mk.txt b/npc/023-2/mk.txt index 8fe91da85..60fa62361 100644 --- a/npc/023-2/mk.txt +++ b/npc/023-2/mk.txt @@ -53,13 +53,13 @@ L_Finish: channelmes("#world", "Congratulations for the draw, that was a good fight."); channelmes("#world", "The Monster King stole whatever he wanted and left."); // Reproduce the same bonus from Alpha Server - $@EXP_EVENT=125; + $@EXP_EVENT=25; donpcevent "@exprate::OnPlayerCall"; } else if (.victory_count < 100) { // 1 player for 5 minutes is enough to prevent this loss announce "The Monster King, after moping the floor with the players, accomplish what he set, and left...", bc_all|bc_npc; channelmes("#world", "The players failed miserably in stopping the Monster King."); // Reproduce the same penalty from Beta Server - $@EXP_EVENT=rand(50, 75); + $@EXP_EVENT=rand2(-50, -25); donpcevent "@exprate::OnPlayerCall"; } else { announce "The fight ends in draw, with advantage to the Monster King...", bc_all|bc_npc; @@ -127,7 +127,7 @@ OnVictory: channelmes("#world", "Getting magic is now easier!"); announce "Players have defeated the Monster King! He fleed from the cave after leaving a decoy!", bc_all|bc_npc; $MANA_BLVL-=10; - $@EXP_EVENT=125; + $@EXP_EVENT=25; donpcevent "@exprate::OnPlayerCall"; goto L_Finish2; end; diff --git a/npc/commands/rate-management.txt b/npc/commands/rate-management.txt index f04597ca9..c7945cd78 100644 --- a/npc/commands/rate-management.txt +++ b/npc/commands/rate-management.txt @@ -75,14 +75,23 @@ OnCall: end; OnPlayerCall: + /* // GM calls take precedence at any time! if (.max_hours > 0 || .hours > 0) end; + */ // $@EXP_EVENT will determine the boost and should not be above 25% // Default duration is one hour, or whatever $@EXP_EVENT_TIME is - $@EXP_EVENT=limit(0, $@EXP_EVENT, 150); + $@EXP_EVENT=limit(0, $@EXP_EVENT, 100); + $@EXP_EVENT+=.current_rate; $@EXP_EVENT_TIME=limit(1, $@EXP_EVENT_TIME, 6); + // If a GM rate-up was running, we will sum the time, too. + // It'll be rounded down. (so 1h + 30m = 1h) FIXME average is better + if (.hours || .max_hours) { + $@EXP_EVENT_TIME+=max(0, .max_hours-.hours-1); + } + // Default duration is one hour, or whatever $@EXP_EVENT_TIME is .hours = 0; .max_hours = $@EXP_EVENT_TIME; diff --git a/npc/functions/siege.txt b/npc/functions/siege.txt index ef14e6e51..95d16ebc2 100644 --- a/npc/functions/siege.txt +++ b/npc/functions/siege.txt @@ -433,9 +433,9 @@ OnRespawn: OnSergeantDeath: if ($GAME_STORYLINE == 2) $MK_TEMPVAR+=1; - getitem StrangeCoin, rand(1,5); + getitem StrangeCoin, rand2(1,5); announce("##2The Monster Sergeant was defeated by "+strcharinfo(0)+"!", bc_all); - $@EXP_EVENT=rand2(101, 103); + $@EXP_EVENT=rand2(1, 3); $@EXP_EVENT_TIME=1; donpcevent "@exprate::OnPlayerCall"; end; @@ -443,9 +443,9 @@ OnSergeantDeath: OnLieutenantDeath: if ($GAME_STORYLINE == 2) $MK_TEMPVAR+=3; - getitem StrangeCoin, rand(5,10); + getitem StrangeCoin, rand2(5,10); announce("##2The Monster Lieutenant was defeated by "+strcharinfo(0)+"!", bc_all); - $@EXP_EVENT=rand2(104, 106); + $@EXP_EVENT=rand2(4, 6); $@EXP_EVENT_TIME=1; donpcevent "@exprate::OnPlayerCall"; end; @@ -453,9 +453,9 @@ OnLieutenantDeath: OnCaptainDeath: if ($GAME_STORYLINE == 2) $MK_TEMPVAR+=5; - getitem StrangeCoin, rand(10,15); + getitem StrangeCoin, rand2(10,15); announce("##2The Monster Captain was defeated by "+strcharinfo(0)+"!", bc_all); - $@EXP_EVENT=rand2(107, 109); + $@EXP_EVENT=rand2(7, 9); $@EXP_EVENT_TIME=1; donpcevent "@exprate::OnPlayerCall"; end; @@ -463,10 +463,10 @@ OnCaptainDeath: OnColonelDeath: if ($GAME_STORYLINE == 2) $MK_TEMPVAR+=7; - getitem StrangeCoin, rand(15,20); + getitem StrangeCoin, rand2(15,20); $MOST_HEROIC$=strcharinfo(0); announce("##2The Monster Colonel was defeated by "+strcharinfo(0)+"!", bc_all); - $@EXP_EVENT=rand2(110, 112); + $@EXP_EVENT=rand2(10, 12); $@EXP_EVENT_TIME=1; donpcevent "@exprate::OnPlayerCall"; end; @@ -474,10 +474,10 @@ OnColonelDeath: OnGeneralDeath: if ($GAME_STORYLINE == 2) $MK_TEMPVAR+=9; - getitem StrangeCoin, rand(20,25); + getitem StrangeCoin, rand2(20,25); $MOST_HEROIC$=strcharinfo(0); announce("##2The Monster General was defeated by "+strcharinfo(0)+"!", bc_all); - $@EXP_EVENT=rand2(113, 115); + $@EXP_EVENT=rand2(13, 15); $@EXP_EVENT_TIME=1; donpcevent "@exprate::OnPlayerCall"; end; -- cgit v1.2.3-70-g09d2