diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/015-3-3/_import.txt | 1 | ||||
-rw-r--r-- | npc/015-3-3/boss.txt | 71 | ||||
-rw-r--r-- | npc/functions/treasure.txt | 11 |
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); |