summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/015-3-3/_import.txt1
-rw-r--r--npc/015-3-3/boss.txt71
-rw-r--r--npc/functions/treasure.txt11
3 files changed, 79 insertions, 4 deletions
diff --git a/npc/015-3-3/_import.txt b/npc/015-3-3/_import.txt
index 10462d0b1..365dfeea7 100644
--- a/npc/015-3-3/_import.txt
+++ b/npc/015-3-3/_import.txt
@@ -2,3 +2,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/015-3-3/_mobs.txt",
"npc/015-3-3/_warps.txt",
+"npc/015-3-3/boss.txt",
diff --git a/npc/015-3-3/boss.txt b/npc/015-3-3/boss.txt
new file mode 100644
index 000000000..627655d0a
--- /dev/null
+++ b/npc/015-3-3/boss.txt
@@ -0,0 +1,71 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Pirate Den - Boss Fight & Treasure Chest
+
+015-3-3,100,67,0 script #015-3-3_Prize NPC_CHEST,{
+ /* Boss Showdown incomplete */
+ if (getq(HurnscaldQuest_PirateCave) < 6) {
+ warp "015-3-2", 24, 62;
+ end;
+ }
+ /* Treasure Chest logic */
+ if (getq(HurnscaldQuest_PirateCave) == 6) {
+ // You'll always get the maximum prize the first time
+ TreasureBox(99999);
+ Zeny+=rand2(5700, 6200);
+ getexp 1000, 320;
+ compareandsetq HurnscaldQuest_PirateCave, 6, 7;
+ } else {
+ TreasureBox(100); // 1% extra chance
+ }
+ specialeffect(.dir == 0 ? 24 : 25, AREA, getnpcid()); // closed ? opening : closing
+ close;
+OnInit:
+ .distance=2;
+ end;
+}
+
+// Boss Showdown Intercept
+015-3-3,100,62,0 script #Marley NPC_HIDDEN,2,0,{
+ end;
+OnTouch:
+ if (getq(HurnscaldQuest_PirateCave) >= 6) end;
+ slide 70, 50;
+ if (mobcount("015-3-3", "#Marley::OnWin")) end;
+ // Cutscene + Boss!
+ sleep2(500); // For ManaPlus
+ dispbottom l("??? : Wait, how did you got here? WHO ARE YOU?");
+ sleep2(2500);
+ dispbottom l("??? : Are you trying to steal MY treasure?!");
+ sleep2(2500);
+ dispbottom l("??? : I am Pirate Captain Marley, and on the honor of my pirates...");
+ sleep2(2500);
+ dispbottom l("Marley : I shall stop you!");
+ // Someone has beat you to the punch!
+ if (mobcount("015-3-3", "#Marley::OnWin")) end;
+ // Spawn the boss!
+ monster("015-3-3", 69, 54, strmobinfo(1, Marley), Marley, 1, "#Marley::OnWin");
+ // And the reinforcements...
+ areamonster("015-3-3", 62, 47, 81, 57, strmobinfo(1, Thug), Thug, 7);
+ areamonster("015-3-3", 62, 47, 81, 57, strmobinfo(1, Swashbuckler), Swashbuckler, 7);
+ areamonster("015-3-3", 62, 47, 81, 57, strmobinfo(1, Grenadier), Grenadier, 7);
+ end;
+
+OnWin:
+ dispbottom l("Marley : You... thief... *grumble*");
+ compareandsetq HurnscaldQuest_PirateCave, 5, 6;
+ end;
+}
+
+// Exit Gate, only usable if Marley isn't around anymore
+015-3-3,88,66,0 script #MarleyOut NPC_HIDDEN,0,2,{
+ end;
+OnTouch:
+ if (mobcount("015-3-3", "#Marley::OnWin")) end;
+ slide 100, 60;
+ end;
+}
+
+
diff --git a/npc/functions/treasure.txt b/npc/functions/treasure.txt
index f8eab3175..a0d0a000d 100644
--- a/npc/functions/treasure.txt
+++ b/npc/functions/treasure.txt
@@ -4,6 +4,7 @@
// Description:
// Random Treasure Box Utils
+// TreasureBox ( { bonus chance } )
function script TreasureBox {
.@id=getnpcid();
if (RNGTREASURE_DATE[.@id] > gettimetick(2)) {
@@ -28,6 +29,8 @@ function script TreasureBox {
TREASURE_OPEN=TREASURE_OPEN+1;
.@t=TREASURE_OPEN;
.@r=rand(0,10000)-(readparam2(bLuk)*2);
+ // Some chests may have different rates
+ .@r-=getarg(0, 0);
// Select treasure list
// You're warranted an ultra rare (0.1%) every 149 open chests
@@ -35,13 +38,13 @@ function script TreasureBox {
// There's also rares (14%), uncommons (35%) and commons (50%)
.@ur_rate=min(10, (TREASURE_OPEN/10));
if (.@t % 149 == 0 || .@r < .@ur_rate)
- .@loot=any(ScrollMagnusHealC, GoldenApple, DivineApple, MercBoxC, ScrollSDragon, Shemagh, EverburnPowder, IridiumOre, PlatinumOre, YerbaMate);
+ .@loot=any(ScrollMagnusHealC, GoldenApple, DivineApple, MercBoxE, ScrollSDragon, Shemagh, EverburnPowder, IridiumOre, PlatinumOre);
else if (.@t % 50 == 0 || .@r < 100)
- .@loot=any(MercBoxB, ScrollMagnusHealB, SnakeEgg, LachesisBrew, ArrowAmmoBox, GoldPieces, SilverGift, MoveSpeedPotion, TerraniteOre, LeadOre, TinOre, SilverOre, GoldOre, TitaniumOre, FluoPowder, EquipmentBlueprintC, AlchemyBlueprintC, AlchemyBlueprintD, AncientBlueprint, JasmineTea);
+ .@loot=any(MercBoxC, ScrollMagnusHealB, SnakeEgg, LachesisBrew, ArrowAmmoBox, GoldPieces, SilverGift, MoveSpeedPotion, TerraniteOre, LeadOre, TinOre, SilverOre, GoldOre, TitaniumOre, FluoPowder, EquipmentBlueprintC, AlchemyBlueprintC, AlchemyBlueprintD, AncientBlueprint, YerbaMate, JasmineTea);
else if (.@r < 1500 || .@t == 0)
- .@loot=any(MercBoxA, MoubooSteak, SmokeGrenade, ClothoLiquor, Coal, RedPlushWine, HastePotion, CoinBag, StrengthPotion, Dagger, BronzeGift, IronOre, CopperOre, BlueDye, EquipmentBlueprintB, AlchemyBlueprintB, AlchemyBlueprintC, OolongTea);
+ .@loot=any(MercBoxB, MoubooSteak, SmokeGrenade, ClothoLiquor, Coal, RedPlushWine, HastePotion, CoinBag, StrengthPotion, Dagger, BronzeGift, IronOre, CopperOre, BlueDye, EquipmentBlueprintB, AlchemyBlueprintB, AlchemyBlueprintC, OolongTea);
else if (.@r < 5000)
- .@loot=any(Croconut, Potatoz, MoubooSteak, ClothoLiquor, Coal, SmallMushroom, HastePotion, StrengthPotion, WoodenLog, LeatherPatch, Beer, EquipmentBlueprintA, EquipmentBlueprintB, AlchemyBlueprintA, SpearmintTea, TreasureMap);
+ .@loot=any(MercBoxA, Croconut, Potatoz, MoubooSteak, ClothoLiquor, Coal, SmallMushroom, HastePotion, StrengthPotion, WoodenLog, LeatherPatch, Beer, EquipmentBlueprintA, EquipmentBlueprintB, AlchemyBlueprintA, SpearmintTea, TreasureMap);
else
.@loot=any(FatesPotion, ChocolateBar, Plushroom, Chagashroom, RawLog, LeatherPatch, BugLeg, ScorpionStinger, SmallKnife, StrangeCoin, ChamomileTea, EquipmentBlueprintA);