Misc quests fixes and adjustments.

Contributed by altronrain.
This commit is contained in:
MobiusDevelopment 2022-06-30 22:23:20 +00:00
parent 915bb9e455
commit e3bd87162d
34 changed files with 294 additions and 148 deletions

View File

@ -66,7 +66,7 @@ public class Q011_SecretMeetingWithKetraOrcs extends Quest
case "31371-02.htm":
{
st.takeItems(MUNITIONS_BOX, 1);
st.rewardExpAndSp(79787, 0);
st.rewardExpAndSp(79761, 0);
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(false);
break;

View File

@ -93,9 +93,18 @@ public class Q294_CovertBusiness extends Quest
}
else
{
htmltext = "30534-05.htm";
st.takeItems(BAT_FANG, -1);
st.giveItems(RING_OF_RACCOON, 1);
if (!st.hasQuestItems(RING_OF_RACCOON))
{
htmltext = "30534-05.htm";
st.giveItems(RING_OF_RACCOON, 1);
}
else
{
htmltext = "30534-06.htm";
st.rewardItems(57, 2400);
}
st.rewardExpAndSp(0, 600);
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(true);

View File

@ -32,6 +32,8 @@ public class Q299_GatherIngredientsForPie extends Quest
private static final int FRUIT_BASKET = 7136;
private static final int AVELLAN_SPICE = 7137;
private static final int HONEY_POUCH = 7138;
// Reward resources
private static final int VARNISH = 1865;
public Q299_GatherIngredientsForPie()
{
@ -93,7 +95,14 @@ public class Q299_GatherIngredientsForPie extends Quest
{
htmltext = "30620-7.htm";
st.takeItems(FRUIT_BASKET, 1);
st.rewardItems(57, 25000);
if (getRandom(100) < 70)
{
st.rewardItems(57, 25000);
}
else
{
st.giveItems(VARNISH, 50);
}
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(true);
}

View File

@ -91,7 +91,7 @@ public class Q326_VanquishRemnants extends Quest
st.takeItems(RED_CROSS_BADGE, -1);
st.takeItems(BLUE_CROSS_BADGE, -1);
st.takeItems(BLACK_CROSS_BADGE, -1);
st.rewardItems(57, ((redBadges * 46) + (blueBadges * 52) + (blackBadges * 58) + ((badgesSum >= 10) ? 4320 : 0)));
st.rewardItems(57, ((redBadges * 60) + (blueBadges * 65) + (blackBadges * 70) + ((badgesSum >= 10) ? 4320 : 0)));
if (badgesSum >= 100)
{
if (!st.hasQuestItems(BLACK_LION_MARK))

View File

@ -108,7 +108,7 @@ public class Q328_SenseForBusiness extends Quest
st.takeItems(MONSTER_EYE_CARCASS, -1);
st.takeItems(MONSTER_EYE_LENS, -1);
st.takeItems(BASILISK_GIZZARD, -1);
st.rewardItems(57, (25 * carcasses) + (1000 * lenses) + (60 * gizzards) + ((all >= 10) ? 618 : 0));
st.rewardItems(57, (30 * carcasses) + (2000 * lenses) + (75 * gizzards) + ((all >= 10) ? 618 : 0));
}
break;
}

View File

@ -91,7 +91,7 @@ public class Q331_ArrowOfVengeance extends Quest
st.takeItems(MEDUSA_VENOM, -1);
st.takeItems(WYRM_TOOTH, -1);
int reward = (harpyFeather * 78) + (medusaVenom * 88) + (wyrmTooth * 92);
int reward = (harpyFeather * 80) + (medusaVenom * 90) + (wyrmTooth * 100);
if ((harpyFeather + medusaVenom + wyrmTooth) > 10)
{
reward += 3100;

View File

@ -51,12 +51,15 @@ public class Q334_TheWishingPotion extends Quest
private static final int GLASS_JAGUAR = 20250;
private static final int DEMONS_TUNIC_ID = 441;
private static final int DEMONS_STOCKINGS_ID = 472;
private static final int SCROLL_OF_ESCAPE_ID = 736;
private static final int NECKLACE_OF_GRACE_ID = 931;
private static final int SPELLBOOK_ICEBOLT_ID = 1049;
private static final int SPELLBOOK_BATTLEHEAL_ID = 1050;
private static final int DEMONS_TUNIC_FABRIC_ID = 1979;
private static final int DEMONS_STOCKINGS_PATTERN_ID = 1980;
private static final int DEMONS_BOOTS_ID = 2435;
private static final int DEMONS_GLOVES_ID = 2459;
private static final int DEMONS_BOOTS_FABRIC_ID = 2952;
private static final int DEMONS_GLOVES_FABRIC_ID = 2953;
private static final int WISH_POTION_ID = 3467;
private static final int ANCIENT_CROWN_ID = 3468;
private static final int CERTIFICATE_OF_ROYALTY_ID = 3469;
@ -432,7 +435,23 @@ public class Q334_TheWishingPotion extends Quest
}
else
{
st.giveItems(SCROLL_OF_ESCAPE_ID, 1);
final int dropChance = getRandom(100) + 1;
if (dropChance <= 25)
{
st.giveItems(DEMONS_TUNIC_FABRIC_ID, 1);
}
else if (dropChance <= 50)
{
st.giveItems(DEMONS_STOCKINGS_PATTERN_ID, 1);
}
else if (dropChance <= 75)
{
st.giveItems(DEMONS_BOOTS_FABRIC_ID, 1);
}
else
{
st.giveItems(DEMONS_GLOVES_FABRIC_ID, 1);
}
}
st.getPlayer().getTarget().decayMe();
htmltext = "30742-01.htm";

View File

@ -102,51 +102,51 @@ public class Q335_TheSongOfTheHunter extends Quest
// @formatter:on
private static final Request[] REQUESTS1 =
{
new Request(3727, 3769, 40, 2090, "C: 40 Totems of Kadesh").addDrop(20578, 80).addDrop(20579, 83),
new Request(3728, 3770, 50, 6340, "C: 50 Jade Necklaces of Timak").addDrop(20586, 89).addDrop(20588, 100),
new Request(3729, 3771, 50, 9480, "C: 50 Enchanted Golem Shards").addDrop(20565, 100),
new Request(3730, 3772, 30, 9110, "C: 30 Pieces Monster Eye Meat").addDrop(20556, 50),
new Request(3731, 3773, 40, 8690, "C: 40 Eggs of Dire Wyrm").addDrop(20557, 80),
new Request(3732, 3774, 100, 9480, "C: 100 Claws of Guardian Basilisk").addDrop(20550, 150),
new Request(3733, 3775, 50, 11280, "C: 50 Revenant Chains").addDrop(20552, 100),
new Request(3734, 3776, 30, 9640, "C: 30 Windsus Tusks").addDrop(WINDSUS, 50),
new Request(3735, 3777, 100, 9180, "C: 100 Skulls of Grandis").addDrop(20554, 200),
new Request(3736, 3778, 50, 5160, "C: 50 Taik Obsidian Amulets").addDrop(20631, 100).addDrop(20632, 93),
new Request(3737, 3779, 30, 3140, "C: 30 Heads of Karul Bugbear").addDrop(20600, 50),
new Request(3738, 3780, 40, 3160, "C: 40 Ivory Charms of Tamlin").addDrop(20601, 62).addDrop(20602, 80),
new Request(3739, 3781, 1, 6370, "B: Situation Preparation - Leto Chief").addSpawn(20582, 27157, 10).addDrop(27157, 100),
new Request(3740, 3782, 50, 19080, "B: 50 Enchanted Gargoyle Horns").addDrop(20567, 50),
new Request(3741, 3783, 50, 17730, "B: 50 Coiled Serpent Totems").addDrop(20269, 93).addDrop(BREKA_ORC_WARRIOR, 100),
new Request(3742, 3784, 1, 5790, "B: Situation Preparation - Sorcerer Catch of Leto").addSpawn(20581, 27156, 10).addDrop(27156, 100),
new Request(3743, 3785, 1, 8560, "B: Situation Preparation - Timak Raider Kaikee").addSpawn(20586, 27158, 10).addDrop(27158, 100),
new Request(3744, 3786, 30, 8320, "B: 30 Kronbe Venom Sacs").addDrop(20603, 50),
new Request(3745, 3787, 30, 30310, "A: 30 Eva's Charm").addDrop(20562, 50),
new Request(3746, 3788, 1, 27540, "A: Titan's Tablet").addSpawn(20554, 27160, 10).addDrop(27160, 100),
new Request(3747, 3789, 1, 20560, "A: Book of Shunaiman").addSpawn(20600, 27164, 10).addDrop(27164, 100)
new Request(3727, 3769, 40, 4500, "C: 40 Totems of Kadesh").addDrop(20578, 80).addDrop(20579, 83),
new Request(3728, 3770, 50, 7500, "C: 50 Jade Necklaces of Timak").addDrop(20586, 89).addDrop(20588, 100),
new Request(3729, 3771, 50, 7300, "C: 50 Enchanted Golem Shards").addDrop(20565, 100),
new Request(3730, 3772, 30, 5500, "C: 30 Pieces Monster Eye Meat").addDrop(20556, 50),
new Request(3731, 3773, 40, 5000, "C: 40 Eggs of Dire Wyrm").addDrop(20557, 80),
new Request(3732, 3774, 100, 6500, "C: 100 Claws of Guardian Basilisk").addDrop(20550, 150),
new Request(3733, 3775, 50, 4400, "C: 50 Revenant Chains").addDrop(20552, 100),
new Request(3734, 3776, 30, 5200, "C: 30 Windsus Tusks").addDrop(WINDSUS, 50),
new Request(3735, 3777, 100, 7600, "C: 100 Skulls of Grandis").addDrop(20554, 200),
new Request(3736, 3778, 50, 4900, "C: 50 Taik Obsidian Amulets").addDrop(20631, 100).addDrop(20632, 93),
new Request(3737, 3779, 30, 7600, "C: 30 Heads of Karul Bugbear").addDrop(20600, 50),
new Request(3738, 3780, 40, 7200, "C: 40 Ivory Charms of Tamlin").addDrop(20601, 62).addDrop(20602, 80),
new Request(3739, 3781, 1, 4500, "B: Situation Preparation - Leto Chief").addSpawn(20582, 27157, 10).addDrop(27157, 100),
new Request(3740, 3782, 50, 9500, "B: 50 Enchanted Gargoyle Horns").addDrop(20567, 50),
new Request(3741, 3783, 50, 5800, "B: 50 Coiled Serpent Totems").addDrop(20269, 93).addDrop(BREKA_ORC_WARRIOR, 100),
new Request(3742, 3784, 1, 4500, "B: Situation Preparation - Sorcerer Catch of Leto").addSpawn(20581, 27156, 10).addDrop(27156, 100),
new Request(3743, 3785, 1, 7000, "B: Situation Preparation - Timak Raider Kaikee").addSpawn(20586, 27158, 10).addDrop(27158, 100),
new Request(3744, 3786, 30, 10000, "B: 30 Kronbe Venom Sacs").addDrop(20603, 50),
new Request(3745, 3787, 30, 18000, "A: 30 Eva's Charm").addDrop(20562, 50),
new Request(3746, 3788, 1, 12000, "A: Titan's Tablet").addSpawn(20554, 27160, 10).addDrop(27160, 100),
new Request(3747, 3789, 1, 15000, "A: Book of Shunaiman").addSpawn(20600, 27164, 10).addDrop(27164, 100)
};
private static final Request[] REQUESTS2 =
{
new Request(3748, 3790, 40, 6850, "C: 40 Rotting Tree Spores").addDrop(20558, 67),
new Request(3749, 3791, 40, 7250, "C: 40 Trisalim Venom Sacs").addDrop(20560, 66).addDrop(20561, 75),
new Request(3750, 3792, 50, 7160, "C: 50 Totems of Taik Orc").addDrop(20633, 53).addDrop(20634, 99),
new Request(3751, 3793, 40, 6580, "C: 40 Harit Barbed Necklaces").addDrop(20641, 88).addDrop(20642, 88).addDrop(20643, 91),
new Request(3752, 3794, 20, 10100, "C: 20 Coins of Ancient Empire").addDrop(20661, 50).addSpawn(20661, 27149, 5).addDrop(20662, 52).addSpawn(20662, 27149, 5).addDrop(27149, 300),
new Request(3753, 3795, 30, 13000, "C: 30 Skins of Farkran").addDrop(20667, 90),
new Request(3754, 3796, 40, 7660, "C: 40 Tempest Shards").addDrop(20589, 49).addSpawn(20589, 27149, 5).addDrop(27149, 500),
new Request(3755, 3797, 40, 7660, "C: 40 Tsunami Shards").addDrop(20590, 51).addSpawn(20590, 27149, 5).addDrop(27149, 500),
new Request(3756, 3798, 40, 11260, "C: 40 Manes of Pan Ruem").addDrop(20592, 80).addDrop(20598, 100),
new Request(3757, 3799, 40, 7660, "C: 40 Hamadryad Shard").addDrop(20594, 64).addSpawn(20594, 27149, 5).addDrop(27149, 500),
new Request(3758, 3800, 30, 8810, "C: 30 Manes of Vanor Silenos").addDrop(20682, 70).addDrop(20683, 85).addDrop(20684, 90),
new Request(3759, 3801, 30, 7350, "C: 30 Totems of Tarlk Bugbears").addDrop(TARLK_BUGBEAR_WARRIOR, 63),
new Request(3760, 3802, 1, 8760, "B: Situation Preparation - Overlord Okun of Timak").addSpawn(20588, 27159, 10).addDrop(27159, 100),
new Request(3761, 3803, 1, 9380, "B: Situation Preparation - Overlord Kakran of Taik").addSpawn(20634, 27161, 10).addDrop(27161, 100),
new Request(3762, 3804, 40, 17820, "B: 40 Narcissus Soulstones").addDrop(20639, 86).addSpawn(20639, 27149, 5).addDrop(27149, 500),
new Request(3763, 3805, 20, 17540, "B: 20 Eyes of Deprived").addDrop(20664, 77),
new Request(3764, 3806, 20, 14160, "B: 20 Unicorn Horns").addDrop(20593, 68).addDrop(20599, 86),
new Request(3765, 3807, 1, 15960, "B: Golden Mane of Silenos").addSpawn(20686, 27163, 10).addDrop(27163, 100),
new Request(3766, 3808, 20, 39100, "A: 20 Skulls of Executed Person").addDrop(20659, 73),
new Request(3767, 3809, 1, 39550, "A: Bust of Travis").addSpawn(20662, 27162, 10).addDrop(27162, 100),
new Request(3768, 3810, 10, 41200, "A: 10 Swords of Cadmus").addDrop(20676, 64)
new Request(3748, 3790, 40, 6200, "C: 40 Rotting Tree Spores").addDrop(20558, 67),
new Request(3749, 3791, 40, 5900, "C: 40 Trisalim Venom Sacs").addDrop(20560, 66).addDrop(20561, 75),
new Request(3750, 3792, 50, 7200, "C: 50 Totems of Taik Orc").addDrop(20633, 53).addDrop(20634, 99),
new Request(3751, 3793, 40, 7200, "C: 40 Harit Barbed Necklaces").addDrop(20641, 88).addDrop(20642, 88).addDrop(20643, 91),
new Request(3752, 3794, 20, 8700, "C: 20 Coins of Ancient Empire").addDrop(20661, 50).addSpawn(20661, 27149, 5).addDrop(20662, 52).addSpawn(20662, 27149, 5).addDrop(27149, 300),
new Request(3753, 3795, 30, 11600, "C: 30 Skins of Farkran").addDrop(20667, 90),
new Request(3754, 3796, 40, 6200, "C: 40 Tempest Shards").addDrop(20589, 49).addSpawn(20589, 27149, 5).addDrop(27149, 500),
new Request(3755, 3797, 40, 7800, "C: 40 Tsunami Shards").addDrop(20590, 51).addSpawn(20590, 27149, 5).addDrop(27149, 500),
new Request(3756, 3798, 40, 7800, "C: 40 Manes of Pan Ruem").addDrop(20592, 80).addDrop(20598, 100),
new Request(3757, 3799, 40, 7000, "C: 40 Hamadryad Shard").addDrop(20594, 64).addSpawn(20594, 27149, 5).addDrop(27149, 500),
new Request(3758, 3800, 30, 7100, "C: 30 Manes of Vanor Silenos").addDrop(20682, 70).addDrop(20683, 85).addDrop(20684, 90),
new Request(3759, 3801, 30, 13400, "C: 30 Totems of Tarlk Bugbears").addDrop(TARLK_BUGBEAR_WARRIOR, 63),
new Request(3760, 3802, 1, 8200, "B: Situation Preparation - Overlord Okun of Timak").addSpawn(20588, 27159, 10).addDrop(27159, 100),
new Request(3761, 3803, 1, 5300, "B: Situation Preparation - Overlord Kakran of Taik").addSpawn(20634, 27161, 10).addDrop(27161, 100),
new Request(3762, 3804, 40, 8800, "B: 40 Narcissus Soulstones").addDrop(20639, 86).addSpawn(20639, 27149, 5).addDrop(27149, 500),
new Request(3763, 3805, 20, 11000, "B: 20 Eyes of Deprived").addDrop(20664, 77),
new Request(3764, 3806, 20, 8800, "B: 20 Unicorn Horns").addDrop(20593, 68).addDrop(20599, 86),
new Request(3765, 3807, 1, 5500, "B: Golden Mane of Silenos").addSpawn(20686, 27163, 10).addDrop(27163, 100),
new Request(3766, 3808, 20, 16000, "A: 20 Skulls of Executed Person").addDrop(20659, 73),
new Request(3767, 3809, 1, 18000, "A: Bust of Travis").addSpawn(20662, 27162, 10).addDrop(27162, 100),
new Request(3768, 3810, 10, 18000, "A: 10 Swords of Cadmus").addDrop(20676, 64)
};
public Q335_TheSongOfTheHunter()

View File

@ -56,7 +56,7 @@ public class Q338_AlligatorHunter extends Quest
case "30892-05.htm":
{
final int pelts = st.getQuestItemsCount(ALLIGATOR_PELT);
int reward = pelts * 60;
int reward = pelts * 40;
if (pelts > 10)
{
reward += 3430;

View File

@ -91,7 +91,7 @@ public class Q343_UnderTheShadowOfTheIvoryTower extends Quest
{
if (orbs > 0)
{
st.giveItems(57, orbs * 120);
st.giveItems(57, orbs * 125);
st.takeItems(ORB, -1);
}
else

View File

@ -44,6 +44,21 @@ public class Q354_ConquestOfAlligatorIsland extends Quest
DROPLIST.put(20991, new int[][]{{ALLIGATOR_TOOTH, 1, 0, 600000},{TORN_MAP_FRAGMENT, 1, 0, 100000}}); // Swamp Tribe
// @formatter:on
}
private static final int[][] ADDITIONAL_REWARDS =
{
// @formatter:off
{736, 15}, // SoE
{1061, 20}, // Healing Potion
{734, 15}, // Haste Potion
{735, 15}, // Alacrity Potion
{1878, 35}, // Braided Hemp
{1875, 15}, // Stone of Purity
{1879, 15}, // Cokes
{1880, 15}, // Steel
{956, 1}, // Enchant Armor D
{955, 1}, // Enchant Weapon D
// @formatter:on
};
public Q354_ConquestOfAlligatorIsland()
{
@ -84,10 +99,11 @@ public class Q354_ConquestOfAlligatorIsland extends Quest
final int amount = st.getQuestItemsCount(ALLIGATOR_TOOTH);
if (amount > 0)
{
int reward = (amount * 220) + 3100;
int reward = amount * 300;
if (amount >= 100)
{
reward += 7600;
final int[] add_reward = ADDITIONAL_REWARDS[Integer.parseInt(event)];
st.rewardItems(add_reward[0], add_reward[1]);
htmltext = "30895-05b.htm";
}
else

View File

@ -87,7 +87,7 @@ public class Q355_FamilyHonor extends Quest
{
htmltext = "30181-4.htm";
int reward = 2800 + (count * 120);
int reward = count * 232;
if (count >= 100)
{
htmltext = "30181-4a.htm";

View File

@ -57,11 +57,11 @@ public class Q356_DigUpTheSeaOfSpores extends Quest
st.startQuest();
break;
}
case "30717-17.htm":
case "30717-16.htm":
{
st.takeItems(HERB_SPORE, -1);
st.takeItems(CARN_SPORE, -1);
st.rewardItems(57, 20950);
st.rewardItems(57, 44000);
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(true);
break;

View File

@ -190,10 +190,10 @@ public class Q365_DevilsLegacy extends Quest
{
htmltext = "30095-05.htm";
final int reward = st.getQuestItemsCount(PIRATE_TREASURE_CHEST) * 400;
final int reward = st.getQuestItemsCount(PIRATE_TREASURE_CHEST) * 1600;
st.takeItems(PIRATE_TREASURE_CHEST, -1);
st.rewardItems(57, reward + 19800);
st.rewardItems(57, reward);
}
break;
}

View File

@ -128,8 +128,8 @@ public class Q373_SupplierOfReagents extends Quest
{
// @formatter:off
{1, 100, 1},
{2, 45, 3},
{3, 15, 5}
{2, 45, 2},
{3, 15, 3}
// @formatter:on
};

View File

@ -100,13 +100,19 @@ public class Q384_WarehouseKeepersPastime extends Quest
{98, 852}, // Moonstone Earring
{100, 401} // Drake Leather Armor
};
private static final int[][] _rewards_100_lose =
private static final int[][] _rewards_100_lose_Baxt =
{
{50, 951}, // Scroll: Enchant Weapon (C)
{80, 500}, // Great Helmet
{98, 2437}, // Drake Leather Boots
{100, 135} // Samurai Longsword
};
private static final int[][] _rewards_100_lose_Cliff =
{
{70, 951}, // Scroll: Enchant Weapon (C)
{89, 500}, // Divine Boots
{100, 2437}, // Katana
};
// @formatter:on
public Q384_WarehouseKeepersPastime()
@ -246,10 +252,6 @@ public class Q384_WarehouseKeepersPastime extends Quest
if (chance < reward[0])
{
st.giveItems(reward[1], 1);
if (reward[1] == 2437)
{
st.giveItems(2463, 1);
}
break;
}
}
@ -257,14 +259,32 @@ public class Q384_WarehouseKeepersPastime extends Quest
else if (winningLines == 0)
{
htmltext = getHtmlText(npcId + "-25.htm");
final int chance = getRandom(100);
for (int[] reward : ((st.get("bet") == "10") ? _rewards_10_lose : _rewards_100_lose))
if (npcId == 30685)
{
if (chance < reward[0])
final int chance = getRandom(100);
for (int[] reward : ((st.get("bet") == "10") ? _rewards_10_lose : _rewards_100_lose_Baxt))
{
st.giveItems(reward[1], 1);
break;
if (chance < reward[0])
{
st.giveItems(reward[1], 1);
if (reward[1] == 2437)
{
st.giveItems(2463, 1);
}
break;
}
}
}
else
{
final int chance = getRandom(100);
for (int[] reward : ((st.get("bet") == "10") ? _rewards_10_lose : _rewards_100_lose_Cliff))
{
if (chance < reward[0])
{
st.giveItems(reward[1], 1);
break;
}
}
}
}

View File

@ -62,7 +62,7 @@ public class Q627_HeartInSearchOfPower extends Quest
REWARDS.put("asofe", new int[]{4043, 13, 6400});
REWARDS.put("thon", new int[]{4044, 13, 6400});
REWARDS.put("enria", new int[]{4042, 6, 13600});
REWARDS.put("mold", new int[]{4041, 3, 17200});
REWARDS.put("mold", new int[]{4041, 6, 17200});
// @formatter:on
}

View File

@ -66,7 +66,7 @@ public class Q011_SecretMeetingWithKetraOrcs extends Quest
case "31371-02.htm":
{
st.takeItems(MUNITIONS_BOX, 1);
st.rewardExpAndSp(79787, 0);
st.rewardExpAndSp(79761, 0);
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(false);
break;

View File

@ -93,9 +93,18 @@ public class Q294_CovertBusiness extends Quest
}
else
{
htmltext = "30534-05.htm";
st.takeItems(BAT_FANG, -1);
st.giveItems(RING_OF_RACCOON, 1);
if (!st.hasQuestItems(RING_OF_RACCOON))
{
htmltext = "30534-05.htm";
st.giveItems(RING_OF_RACCOON, 1);
}
else
{
htmltext = "30534-06.htm";
st.rewardItems(57, 2400);
}
st.rewardExpAndSp(0, 600);
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(true);

View File

@ -32,6 +32,8 @@ public class Q299_GatherIngredientsForPie extends Quest
private static final int FRUIT_BASKET = 7136;
private static final int AVELLAN_SPICE = 7137;
private static final int HONEY_POUCH = 7138;
// Reward resources
private static final int VARNISH = 1865;
public Q299_GatherIngredientsForPie()
{
@ -93,7 +95,14 @@ public class Q299_GatherIngredientsForPie extends Quest
{
htmltext = "30620-7.htm";
st.takeItems(FRUIT_BASKET, 1);
st.rewardItems(57, 25000);
if (getRandom(100) < 70)
{
st.rewardItems(57, 25000);
}
else
{
st.giveItems(VARNISH, 50);
}
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(true);
}

View File

@ -91,7 +91,7 @@ public class Q326_VanquishRemnants extends Quest
st.takeItems(RED_CROSS_BADGE, -1);
st.takeItems(BLUE_CROSS_BADGE, -1);
st.takeItems(BLACK_CROSS_BADGE, -1);
st.rewardItems(57, ((redBadges * 46) + (blueBadges * 52) + (blackBadges * 58) + ((badgesSum >= 10) ? 4320 : 0)));
st.rewardItems(57, ((redBadges * 60) + (blueBadges * 65) + (blackBadges * 70) + ((badgesSum >= 10) ? 4320 : 0)));
if (badgesSum >= 100)
{
if (!st.hasQuestItems(BLACK_LION_MARK))

View File

@ -108,7 +108,7 @@ public class Q328_SenseForBusiness extends Quest
st.takeItems(MONSTER_EYE_CARCASS, -1);
st.takeItems(MONSTER_EYE_LENS, -1);
st.takeItems(BASILISK_GIZZARD, -1);
st.rewardItems(57, (25 * carcasses) + (1000 * lenses) + (60 * gizzards) + ((all >= 10) ? 618 : 0));
st.rewardItems(57, (30 * carcasses) + (2000 * lenses) + (75 * gizzards) + ((all >= 10) ? 618 : 0));
}
break;
}

View File

@ -91,7 +91,7 @@ public class Q331_ArrowOfVengeance extends Quest
st.takeItems(MEDUSA_VENOM, -1);
st.takeItems(WYRM_TOOTH, -1);
int reward = (harpyFeather * 78) + (medusaVenom * 88) + (wyrmTooth * 92);
int reward = (harpyFeather * 80) + (medusaVenom * 90) + (wyrmTooth * 100);
if ((harpyFeather + medusaVenom + wyrmTooth) > 10)
{
reward += 3100;

View File

@ -51,12 +51,15 @@ public class Q334_TheWishingPotion extends Quest
private static final int GLASS_JAGUAR = 20250;
private static final int DEMONS_TUNIC_ID = 441;
private static final int DEMONS_STOCKINGS_ID = 472;
private static final int SCROLL_OF_ESCAPE_ID = 736;
private static final int NECKLACE_OF_GRACE_ID = 931;
private static final int SPELLBOOK_ICEBOLT_ID = 1049;
private static final int SPELLBOOK_BATTLEHEAL_ID = 1050;
private static final int DEMONS_TUNIC_FABRIC_ID = 1979;
private static final int DEMONS_STOCKINGS_PATTERN_ID = 1980;
private static final int DEMONS_BOOTS_ID = 2435;
private static final int DEMONS_GLOVES_ID = 2459;
private static final int DEMONS_BOOTS_FABRIC_ID = 2952;
private static final int DEMONS_GLOVES_FABRIC_ID = 2953;
private static final int WISH_POTION_ID = 3467;
private static final int ANCIENT_CROWN_ID = 3468;
private static final int CERTIFICATE_OF_ROYALTY_ID = 3469;
@ -432,7 +435,23 @@ public class Q334_TheWishingPotion extends Quest
}
else
{
st.giveItems(SCROLL_OF_ESCAPE_ID, 1);
final int dropChance = getRandom(100) + 1;
if (dropChance <= 25)
{
st.giveItems(DEMONS_TUNIC_FABRIC_ID, 1);
}
else if (dropChance <= 50)
{
st.giveItems(DEMONS_STOCKINGS_PATTERN_ID, 1);
}
else if (dropChance <= 75)
{
st.giveItems(DEMONS_BOOTS_FABRIC_ID, 1);
}
else
{
st.giveItems(DEMONS_GLOVES_FABRIC_ID, 1);
}
}
st.getPlayer().getTarget().decayMe();
htmltext = "30742-01.htm";

View File

@ -102,51 +102,51 @@ public class Q335_TheSongOfTheHunter extends Quest
// @formatter:on
private static final Request[] REQUESTS1 =
{
new Request(3727, 3769, 40, 2090, "C: 40 Totems of Kadesh").addDrop(20578, 80).addDrop(20579, 83),
new Request(3728, 3770, 50, 6340, "C: 50 Jade Necklaces of Timak").addDrop(20586, 89).addDrop(20588, 100),
new Request(3729, 3771, 50, 9480, "C: 50 Enchanted Golem Shards").addDrop(20565, 100),
new Request(3730, 3772, 30, 9110, "C: 30 Pieces Monster Eye Meat").addDrop(20556, 50),
new Request(3731, 3773, 40, 8690, "C: 40 Eggs of Dire Wyrm").addDrop(20557, 80),
new Request(3732, 3774, 100, 9480, "C: 100 Claws of Guardian Basilisk").addDrop(20550, 150),
new Request(3733, 3775, 50, 11280, "C: 50 Revenant Chains").addDrop(20552, 100),
new Request(3734, 3776, 30, 9640, "C: 30 Windsus Tusks").addDrop(WINDSUS, 50),
new Request(3735, 3777, 100, 9180, "C: 100 Skulls of Grandis").addDrop(20554, 200),
new Request(3736, 3778, 50, 5160, "C: 50 Taik Obsidian Amulets").addDrop(20631, 100).addDrop(20632, 93),
new Request(3737, 3779, 30, 3140, "C: 30 Heads of Karul Bugbear").addDrop(20600, 50),
new Request(3738, 3780, 40, 3160, "C: 40 Ivory Charms of Tamlin").addDrop(20601, 62).addDrop(20602, 80),
new Request(3739, 3781, 1, 6370, "B: Situation Preparation - Leto Chief").addSpawn(20582, 27157, 10).addDrop(27157, 100),
new Request(3740, 3782, 50, 19080, "B: 50 Enchanted Gargoyle Horns").addDrop(20567, 50),
new Request(3741, 3783, 50, 17730, "B: 50 Coiled Serpent Totems").addDrop(20269, 93).addDrop(BREKA_ORC_WARRIOR, 100),
new Request(3742, 3784, 1, 5790, "B: Situation Preparation - Sorcerer Catch of Leto").addSpawn(20581, 27156, 10).addDrop(27156, 100),
new Request(3743, 3785, 1, 8560, "B: Situation Preparation - Timak Raider Kaikee").addSpawn(20586, 27158, 10).addDrop(27158, 100),
new Request(3744, 3786, 30, 8320, "B: 30 Kronbe Venom Sacs").addDrop(20603, 50),
new Request(3745, 3787, 30, 30310, "A: 30 Eva's Charm").addDrop(20562, 50),
new Request(3746, 3788, 1, 27540, "A: Titan's Tablet").addSpawn(20554, 27160, 10).addDrop(27160, 100),
new Request(3747, 3789, 1, 20560, "A: Book of Shunaiman").addSpawn(20600, 27164, 10).addDrop(27164, 100)
new Request(3727, 3769, 40, 4500, "C: 40 Totems of Kadesh").addDrop(20578, 80).addDrop(20579, 83),
new Request(3728, 3770, 50, 7500, "C: 50 Jade Necklaces of Timak").addDrop(20586, 89).addDrop(20588, 100),
new Request(3729, 3771, 50, 7300, "C: 50 Enchanted Golem Shards").addDrop(20565, 100),
new Request(3730, 3772, 30, 5500, "C: 30 Pieces Monster Eye Meat").addDrop(20556, 50),
new Request(3731, 3773, 40, 5000, "C: 40 Eggs of Dire Wyrm").addDrop(20557, 80),
new Request(3732, 3774, 100, 6500, "C: 100 Claws of Guardian Basilisk").addDrop(20550, 150),
new Request(3733, 3775, 50, 4400, "C: 50 Revenant Chains").addDrop(20552, 100),
new Request(3734, 3776, 30, 5200, "C: 30 Windsus Tusks").addDrop(WINDSUS, 50),
new Request(3735, 3777, 100, 7600, "C: 100 Skulls of Grandis").addDrop(20554, 200),
new Request(3736, 3778, 50, 4900, "C: 50 Taik Obsidian Amulets").addDrop(20631, 100).addDrop(20632, 93),
new Request(3737, 3779, 30, 7600, "C: 30 Heads of Karul Bugbear").addDrop(20600, 50),
new Request(3738, 3780, 40, 7200, "C: 40 Ivory Charms of Tamlin").addDrop(20601, 62).addDrop(20602, 80),
new Request(3739, 3781, 1, 4500, "B: Situation Preparation - Leto Chief").addSpawn(20582, 27157, 10).addDrop(27157, 100),
new Request(3740, 3782, 50, 9500, "B: 50 Enchanted Gargoyle Horns").addDrop(20567, 50),
new Request(3741, 3783, 50, 5800, "B: 50 Coiled Serpent Totems").addDrop(20269, 93).addDrop(BREKA_ORC_WARRIOR, 100),
new Request(3742, 3784, 1, 4500, "B: Situation Preparation - Sorcerer Catch of Leto").addSpawn(20581, 27156, 10).addDrop(27156, 100),
new Request(3743, 3785, 1, 7000, "B: Situation Preparation - Timak Raider Kaikee").addSpawn(20586, 27158, 10).addDrop(27158, 100),
new Request(3744, 3786, 30, 10000, "B: 30 Kronbe Venom Sacs").addDrop(20603, 50),
new Request(3745, 3787, 30, 18000, "A: 30 Eva's Charm").addDrop(20562, 50),
new Request(3746, 3788, 1, 12000, "A: Titan's Tablet").addSpawn(20554, 27160, 10).addDrop(27160, 100),
new Request(3747, 3789, 1, 15000, "A: Book of Shunaiman").addSpawn(20600, 27164, 10).addDrop(27164, 100)
};
private static final Request[] REQUESTS2 =
{
new Request(3748, 3790, 40, 6850, "C: 40 Rotting Tree Spores").addDrop(20558, 67),
new Request(3749, 3791, 40, 7250, "C: 40 Trisalim Venom Sacs").addDrop(20560, 66).addDrop(20561, 75),
new Request(3750, 3792, 50, 7160, "C: 50 Totems of Taik Orc").addDrop(20633, 53).addDrop(20634, 99),
new Request(3751, 3793, 40, 6580, "C: 40 Harit Barbed Necklaces").addDrop(20641, 88).addDrop(20642, 88).addDrop(20643, 91),
new Request(3752, 3794, 20, 10100, "C: 20 Coins of Ancient Empire").addDrop(20661, 50).addSpawn(20661, 27149, 5).addDrop(20662, 52).addSpawn(20662, 27149, 5).addDrop(27149, 300),
new Request(3753, 3795, 30, 13000, "C: 30 Skins of Farkran").addDrop(20667, 90),
new Request(3754, 3796, 40, 7660, "C: 40 Tempest Shards").addDrop(20589, 49).addSpawn(20589, 27149, 5).addDrop(27149, 500),
new Request(3755, 3797, 40, 7660, "C: 40 Tsunami Shards").addDrop(20590, 51).addSpawn(20590, 27149, 5).addDrop(27149, 500),
new Request(3756, 3798, 40, 11260, "C: 40 Manes of Pan Ruem").addDrop(20592, 80).addDrop(20598, 100),
new Request(3757, 3799, 40, 7660, "C: 40 Hamadryad Shard").addDrop(20594, 64).addSpawn(20594, 27149, 5).addDrop(27149, 500),
new Request(3758, 3800, 30, 8810, "C: 30 Manes of Vanor Silenos").addDrop(20682, 70).addDrop(20683, 85).addDrop(20684, 90),
new Request(3759, 3801, 30, 7350, "C: 30 Totems of Tarlk Bugbears").addDrop(TARLK_BUGBEAR_WARRIOR, 63),
new Request(3760, 3802, 1, 8760, "B: Situation Preparation - Overlord Okun of Timak").addSpawn(20588, 27159, 10).addDrop(27159, 100),
new Request(3761, 3803, 1, 9380, "B: Situation Preparation - Overlord Kakran of Taik").addSpawn(20634, 27161, 10).addDrop(27161, 100),
new Request(3762, 3804, 40, 17820, "B: 40 Narcissus Soulstones").addDrop(20639, 86).addSpawn(20639, 27149, 5).addDrop(27149, 500),
new Request(3763, 3805, 20, 17540, "B: 20 Eyes of Deprived").addDrop(20664, 77),
new Request(3764, 3806, 20, 14160, "B: 20 Unicorn Horns").addDrop(20593, 68).addDrop(20599, 86),
new Request(3765, 3807, 1, 15960, "B: Golden Mane of Silenos").addSpawn(20686, 27163, 10).addDrop(27163, 100),
new Request(3766, 3808, 20, 39100, "A: 20 Skulls of Executed Person").addDrop(20659, 73),
new Request(3767, 3809, 1, 39550, "A: Bust of Travis").addSpawn(20662, 27162, 10).addDrop(27162, 100),
new Request(3768, 3810, 10, 41200, "A: 10 Swords of Cadmus").addDrop(20676, 64)
new Request(3748, 3790, 40, 6200, "C: 40 Rotting Tree Spores").addDrop(20558, 67),
new Request(3749, 3791, 40, 5900, "C: 40 Trisalim Venom Sacs").addDrop(20560, 66).addDrop(20561, 75),
new Request(3750, 3792, 50, 7200, "C: 50 Totems of Taik Orc").addDrop(20633, 53).addDrop(20634, 99),
new Request(3751, 3793, 40, 7200, "C: 40 Harit Barbed Necklaces").addDrop(20641, 88).addDrop(20642, 88).addDrop(20643, 91),
new Request(3752, 3794, 20, 8700, "C: 20 Coins of Ancient Empire").addDrop(20661, 50).addSpawn(20661, 27149, 5).addDrop(20662, 52).addSpawn(20662, 27149, 5).addDrop(27149, 300),
new Request(3753, 3795, 30, 11600, "C: 30 Skins of Farkran").addDrop(20667, 90),
new Request(3754, 3796, 40, 6200, "C: 40 Tempest Shards").addDrop(20589, 49).addSpawn(20589, 27149, 5).addDrop(27149, 500),
new Request(3755, 3797, 40, 7800, "C: 40 Tsunami Shards").addDrop(20590, 51).addSpawn(20590, 27149, 5).addDrop(27149, 500),
new Request(3756, 3798, 40, 7800, "C: 40 Manes of Pan Ruem").addDrop(20592, 80).addDrop(20598, 100),
new Request(3757, 3799, 40, 7000, "C: 40 Hamadryad Shard").addDrop(20594, 64).addSpawn(20594, 27149, 5).addDrop(27149, 500),
new Request(3758, 3800, 30, 7100, "C: 30 Manes of Vanor Silenos").addDrop(20682, 70).addDrop(20683, 85).addDrop(20684, 90),
new Request(3759, 3801, 30, 13400, "C: 30 Totems of Tarlk Bugbears").addDrop(TARLK_BUGBEAR_WARRIOR, 63),
new Request(3760, 3802, 1, 8200, "B: Situation Preparation - Overlord Okun of Timak").addSpawn(20588, 27159, 10).addDrop(27159, 100),
new Request(3761, 3803, 1, 5300, "B: Situation Preparation - Overlord Kakran of Taik").addSpawn(20634, 27161, 10).addDrop(27161, 100),
new Request(3762, 3804, 40, 8800, "B: 40 Narcissus Soulstones").addDrop(20639, 86).addSpawn(20639, 27149, 5).addDrop(27149, 500),
new Request(3763, 3805, 20, 11000, "B: 20 Eyes of Deprived").addDrop(20664, 77),
new Request(3764, 3806, 20, 8800, "B: 20 Unicorn Horns").addDrop(20593, 68).addDrop(20599, 86),
new Request(3765, 3807, 1, 5500, "B: Golden Mane of Silenos").addSpawn(20686, 27163, 10).addDrop(27163, 100),
new Request(3766, 3808, 20, 16000, "A: 20 Skulls of Executed Person").addDrop(20659, 73),
new Request(3767, 3809, 1, 18000, "A: Bust of Travis").addSpawn(20662, 27162, 10).addDrop(27162, 100),
new Request(3768, 3810, 10, 18000, "A: 10 Swords of Cadmus").addDrop(20676, 64)
};
public Q335_TheSongOfTheHunter()

View File

@ -56,7 +56,7 @@ public class Q338_AlligatorHunter extends Quest
case "30892-05.htm":
{
final int pelts = st.getQuestItemsCount(ALLIGATOR_PELT);
int reward = pelts * 60;
int reward = pelts * 40;
if (pelts > 10)
{
reward += 3430;

View File

@ -91,7 +91,7 @@ public class Q343_UnderTheShadowOfTheIvoryTower extends Quest
{
if (orbs > 0)
{
st.giveItems(57, orbs * 120);
st.giveItems(57, orbs * 125);
st.takeItems(ORB, -1);
}
else

View File

@ -44,6 +44,21 @@ public class Q354_ConquestOfAlligatorIsland extends Quest
DROPLIST.put(20991, new int[][]{{ALLIGATOR_TOOTH, 1, 0, 600000},{TORN_MAP_FRAGMENT, 1, 0, 100000}}); // Swamp Tribe
// @formatter:on
}
private static final int[][] ADDITIONAL_REWARDS =
{
// @formatter:off
{736, 15}, // SoE
{1061, 20}, // Healing Potion
{734, 15}, // Haste Potion
{735, 15}, // Alacrity Potion
{1878, 35}, // Braided Hemp
{1875, 15}, // Stone of Purity
{1879, 15}, // Cokes
{1880, 15}, // Steel
{956, 1}, // Enchant Armor D
{955, 1}, // Enchant Weapon D
// @formatter:on
};
public Q354_ConquestOfAlligatorIsland()
{
@ -84,10 +99,11 @@ public class Q354_ConquestOfAlligatorIsland extends Quest
final int amount = st.getQuestItemsCount(ALLIGATOR_TOOTH);
if (amount > 0)
{
int reward = (amount * 220) + 3100;
int reward = amount * 300;
if (amount >= 100)
{
reward += 7600;
final int[] add_reward = ADDITIONAL_REWARDS[Integer.parseInt(event)];
st.rewardItems(add_reward[0], add_reward[1]);
htmltext = "30895-05b.htm";
}
else

View File

@ -87,7 +87,7 @@ public class Q355_FamilyHonor extends Quest
{
htmltext = "30181-4.htm";
int reward = 2800 + (count * 120);
int reward = count * 232;
if (count >= 100)
{
htmltext = "30181-4a.htm";

View File

@ -57,11 +57,11 @@ public class Q356_DigUpTheSeaOfSpores extends Quest
st.startQuest();
break;
}
case "30717-17.htm":
case "30717-16.htm":
{
st.takeItems(HERB_SPORE, -1);
st.takeItems(CARN_SPORE, -1);
st.rewardItems(57, 20950);
st.rewardItems(57, 44000);
st.playSound(QuestState.SOUND_FINISH);
st.exitQuest(true);
break;

View File

@ -190,10 +190,10 @@ public class Q365_DevilsLegacy extends Quest
{
htmltext = "30095-05.htm";
final int reward = st.getQuestItemsCount(PIRATE_TREASURE_CHEST) * 400;
final int reward = st.getQuestItemsCount(PIRATE_TREASURE_CHEST) * 1600;
st.takeItems(PIRATE_TREASURE_CHEST, -1);
st.rewardItems(57, reward + 19800);
st.rewardItems(57, reward);
}
break;
}

View File

@ -128,8 +128,8 @@ public class Q373_SupplierOfReagents extends Quest
{
// @formatter:off
{1, 100, 1},
{2, 45, 3},
{3, 15, 5}
{2, 45, 2},
{3, 15, 3}
// @formatter:on
};

View File

@ -100,13 +100,19 @@ public class Q384_WarehouseKeepersPastime extends Quest
{98, 852}, // Moonstone Earring
{100, 401} // Drake Leather Armor
};
private static final int[][] _rewards_100_lose =
private static final int[][] _rewards_100_lose_Baxt =
{
{50, 951}, // Scroll: Enchant Weapon (C)
{80, 500}, // Great Helmet
{98, 2437}, // Drake Leather Boots
{100, 135} // Samurai Longsword
};
private static final int[][] _rewards_100_lose_Cliff =
{
{70, 951}, // Scroll: Enchant Weapon (C)
{89, 500}, // Divine Boots
{100, 2437}, // Katana
};
// @formatter:on
public Q384_WarehouseKeepersPastime()
@ -246,10 +252,6 @@ public class Q384_WarehouseKeepersPastime extends Quest
if (chance < reward[0])
{
st.giveItems(reward[1], 1);
if (reward[1] == 2437)
{
st.giveItems(2463, 1);
}
break;
}
}
@ -257,14 +259,32 @@ public class Q384_WarehouseKeepersPastime extends Quest
else if (winningLines == 0)
{
htmltext = getHtmlText(npcId + "-25.htm");
final int chance = getRandom(100);
for (int[] reward : ((st.get("bet") == "10") ? _rewards_10_lose : _rewards_100_lose))
if (npcId == 30685)
{
if (chance < reward[0])
final int chance = getRandom(100);
for (int[] reward : ((st.get("bet") == "10") ? _rewards_10_lose : _rewards_100_lose_Baxt))
{
st.giveItems(reward[1], 1);
break;
if (chance < reward[0])
{
st.giveItems(reward[1], 1);
if (reward[1] == 2437)
{
st.giveItems(2463, 1);
}
break;
}
}
}
else
{
final int chance = getRandom(100);
for (int[] reward : ((st.get("bet") == "10") ? _rewards_10_lose : _rewards_100_lose_Cliff))
{
if (chance < reward[0])
{
st.giveItems(reward[1], 1);
break;
}
}
}
}

View File

@ -62,7 +62,7 @@ public class Q627_HeartInSearchOfPower extends Quest
REWARDS.put("asofe", new int[]{4043, 13, 6400});
REWARDS.put("thon", new int[]{4044, 13, 6400});
REWARDS.put("enria", new int[]{4042, 6, 13600});
REWARDS.put("mold", new int[]{4041, 3, 17200});
REWARDS.put("mold", new int[]{4041, 6, 17200});
// @formatter:on
}