summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-03-10 16:33:13 -0300
committerJesusaves <cpntb1@ymail.com>2021-03-10 16:33:13 -0300
commiteae5b0255b6f895abbdfa26127983d99fd479c18 (patch)
tree7f3453c6f4c48790dabef66a94e316201c1eea43 /npc
parent02c59c1901843ff369325be9ac8b9f58c25dcce6 (diff)
downloadserverdata-eae5b0255b6f895abbdfa26127983d99fd479c18.tar.gz
serverdata-eae5b0255b6f895abbdfa26127983d99fd479c18.tar.bz2
serverdata-eae5b0255b6f895abbdfa26127983d99fd479c18.tar.xz
serverdata-eae5b0255b6f895abbdfa26127983d99fd479c18.zip
[FoS] Fix several stuffs including exploits, add monster population of Artis.
This is not a coincidence, you'll understand in Migglemire.
Diffstat (limited to 'npc')
-rw-r--r--npc/000-0/sailors.txt93
-rw-r--r--npc/029-0/_import.txt1
-rw-r--r--npc/029-0/_mobs.txt10
-rw-r--r--npc/029-0/elora.txt3
-rw-r--r--npc/029-0/sakar.txt32
-rw-r--r--npc/029-0/warps.txt4
6 files changed, 96 insertions, 47 deletions
diff --git a/npc/000-0/sailors.txt b/npc/000-0/sailors.txt
index 18df7e94a..9ecbfee00 100644
--- a/npc/000-0/sailors.txt
+++ b/npc/000-0/sailors.txt
@@ -149,50 +149,48 @@ L_FiresOfSteam:
freeloop(false);
setq ShipQuests_Arpan, 5;
setq General_Narrator, 21;
- .@acc=any(Mustache, Beard, HeartGlasses, Sunglasses, EyePatch, Shemagh, Monocle, Googles, BurglarMask, BanditMask, Shemagh);
- .@ac2=any(OldTowel, SantaGlobe, RedStocking, LeatherBall, Doll, ZarkorScroll, ThetaBook, AshUrn, RubberDucky, DragonStar, BronzeQuiver, AstralCube, PlushMouboo, PlushMouboo, GraduationAlbum);
- .@hat=any(TopHat, CaptainHat, SmileyCap, BowlerHat, DesertHat, PirateBandana, KnitHat, RightEyePatch, AntlersHat, BunnyEars, AxeHat, PaperBag, ShroomHat, AFKCap, BrimmedFeatherHat, CatEars, Earmuffs, CorsairHat, SailorHat, ChefHat, SkullMask, LeprechaunHat, PrsmHelmet, ImperialCrown, ClericCap);
- .@ha2=any(DarkKnightHelmet, VikingHelmet, TerraniteMask, CenturionHelmet, ChemistHelmet, BullHelmet, DarkHelm, SamuraiHelmet, SamuraiHelmet);
- .@che=any(RedknightArmor, AssassinChest, SaviorArmor, TerraniteArmor, GraduationRobe, GoldenWarlordPlate, RedknightArmor);
- .@pan=any(JeansChaps, LeatherTrousers, AssassinPants, TerranitePants, WarlordPants, BromenalPants, ChainmailSkirt, AssassinPants, ChainmailSkirt, AssassinPants);
- .@sho=any(DeepBlackBoots, HeliosBoots, WizardMoccasins, WarlordBoots, TerraniteBoots, AssassinBoots, WitchBoots, RedStockings, DeepBlackBoots, DeepBlackBoots);
- .@nec=any(BarbarianAmulet, GoldenFourLeafAmulet, PlatinumFourLeafAmulet, BarbarianMasterAmulet, MoubooPendant, LifestonePendant, AlvasusPendant, ToothNecklace);
- .@rin=any(GoldenPearlRing, GoldenBlackPearlRing);
- .@glo=any(GoldenArmbands, WarlordGloves, AssassinGloves, TerraniteGloves, ManaGloves, SarabArmlet, LeatherGloves, MinerGloves);
- .@shi=any(EnchantedHerbBag, RentCart, Barrel, MasterBola, PiouBola, AncientShield, BlueKnightShield, SteelShield, DragonShield, SnakeBola);
- .@wpn=any(Setzer, Kitana, Lightsaber, BoneKnife, AncientSword, LongSword, RockKnife, DivineSword, CentaurSpear, Zambacutou, CursedScythe, Halberd, PynRifle, PynGatling, PynShotgun, PynRevolver, Dustynator, ChampionshipBow, BansheeBow, LeaderWand, ImmortalSword, LegendaryWand, ChampionshipBow, BansheeBow, LeaderWand, LegendaryWand);
- .@bon=any(Pickaxe, Kanabo, ElficBow, Judgement, ThunderStaff, ReinbooWand, DarkPulsar, Skypiercer, IceGladius, RealBronzeGladius, PurpleBola, KidBola, SilkGloves, ClawPendant, Boots, LuffyxSummerShorts, UglyChristmasSweater, MinerTankTop, ContributorSweater, LinarianSoul, TuxSoul, DeliciousCookie, DarkEggshellHat, Wreath);
- .@pet=any(PiouEgg, BhopEgg, MaggotCocoon, DoggyDog, CattyCat, BlackyCat, Ratte, ForestShroomEgg, FluffyEgg, DuckEgg, BatEgg, MoggunEgg, PinkieCrystal, DragonHorn, TamedSnakeEgg);
- getitem .@acc, 1;
- getitem .@ac2, 1;
- getitem .@hat, 1;
- getitem .@ha2, 1;
- getitem .@che, 1;
- getitem .@pan, 1;
- getitem .@nec, 1;
- getitem .@rin, 1;
- getitem .@glo, 1;
- getitem .@shi, 1;
- getitem .@wpn, 1;
- getitem .@bon, 1;
- getitem .@pet, 1;
- equip(.@acc);
- equip(.@ac2);
- equip(.@hat);
- equip(.@ha2);
- equip(.@che);
- equip(.@pan);
- equip(.@nec);
- equip(.@rin);
- equip(.@glo);
- equip(.@shi);
- equip(.@wpn);
- Zeny+=rand2(40000);
- #TUTORIAL_DONE=true;
- #REG_DATE=gettimetick(2);
- TUTORIAL=true;
- MAGIC_LVL=7;
- adddefaultskills;
+ if (!#TUTORIAL_DONE) {
+ .@acc=any(Mustache, Beard, HeartGlasses, Sunglasses, EyePatch, Shemagh, Monocle, Googles, BurglarMask, BanditMask, Shemagh);
+ .@ac2=any(OldTowel, SantaGlobe, RedStocking, LeatherBall, Doll, ZarkorScroll, ThetaBook, AshUrn, RubberDucky, DragonStar, BronzeQuiver, AstralCube, PlushMouboo, PlushMouboo, GraduationAlbum);
+ .@hat=any(TopHat, CaptainHat, SmileyCap, BowlerHat, DesertHat, PirateBandana, KnitHat, RightEyePatch, AntlersHat, BunnyEars, AxeHat, PaperBag, ShroomHat, AFKCap, BrimmedFeatherHat, CatEars, Earmuffs, CorsairHat, SailorHat, ChefHat, SkullMask, LeprechaunHat, PrsmHelmet, ImperialCrown, ClericCap);
+ .@ha2=any(DarkKnightHelmet, VikingHelmet, TerraniteMask, CenturionHelmet, ChemistHelmet, BullHelmet, DarkHelm, SamuraiHelmet, SamuraiHelmet);
+ .@che=any(RedknightArmor, AssassinChest, SaviorArmor, TerraniteArmor, GraduationRobe, GoldenWarlordPlate, RedknightArmor);
+ .@pan=any(JeansChaps, LeatherTrousers, AssassinPants, TerranitePants, WarlordPants, BromenalPants, ChainmailSkirt, AssassinPants, ChainmailSkirt, AssassinPants);
+ .@sho=any(DeepBlackBoots, HeliosBoots, WizardMoccasins, WarlordBoots, TerraniteBoots, AssassinBoots, WitchBoots, RedStockings, DeepBlackBoots, DeepBlackBoots);
+ .@nec=any(BarbarianAmulet, GoldenFourLeafAmulet, PlatinumFourLeafAmulet, BarbarianMasterAmulet, MoubooPendant, LifestonePendant, AlvasusPendant, ToothNecklace);
+ .@rin=any(GoldenPearlRing, GoldenBlackPearlRing);
+ .@glo=any(GoldenArmbands, WarlordGloves, AssassinGloves, TerraniteGloves, ManaGloves, SarabArmlet, LeatherGloves, MinerGloves);
+ .@shi=any(EnchantedHerbBag, RentCart, Barrel, MasterBola, PiouBola, AncientShield, BlueKnightShield, SteelShield, DragonShield, SnakeBola);
+ .@wpn=any(Setzer, Kitana, Lightsaber, BoneKnife, AncientSword, LongSword, RockKnife, DivineSword, CentaurSpear, Zambacutou, CursedScythe, Halberd, PynRifle, PynGatling, PynShotgun, PynRevolver, Dustynator, ChampionshipBow, BansheeBow, LeaderWand, ImmortalSword, LegendaryWand, ChampionshipBow, BansheeBow, LeaderWand, LegendaryWand);
+ .@bon=any(Pickaxe, Kanabo, ElficBow, Judgement, ThunderStaff, ReinbooWand, DarkPulsar, Skypiercer, IceGladius, RealBronzeGladius, PurpleBola, KidBola, SilkGloves, ClawPendant, Boots, LuffyxSummerShorts, UglyChristmasSweater, MinerTankTop, ContributorSweater, LinarianSoul, TuxSoul, DeliciousCookie, DarkEggshellHat, Wreath);
+ .@pet=any(PiouEgg, BhopEgg, MaggotCocoon, DoggyDog, CattyCat, BlackyCat, Ratte, ForestShroomEgg, FluffyEgg, DuckEgg, BatEgg, MoggunEgg, PinkieCrystal, DragonHorn, TamedSnakeEgg);
+ getitem .@acc, 1;
+ getitem .@ac2, 1;
+ getitem .@hat, 1;
+ getitem .@ha2, 1;
+ getitem .@che, 1;
+ getitem .@pan, 1;
+ getitem .@nec, 1;
+ getitem .@rin, 1;
+ getitem .@glo, 1;
+ getitem .@shi, 1;
+ getitem .@wpn, 1;
+ getitem .@bon, 1;
+ getitem .@pet, 1;
+ equip(.@acc);
+ equip(.@ac2);
+ equip(.@hat);
+ equip(.@ha2);
+ equip(.@che);
+ equip(.@pan);
+ equip(.@nec);
+ equip(.@rin);
+ equip(.@glo);
+ equip(.@shi);
+ equip(.@wpn);
+ Zeny+=rand2(40000);
+ }
+ adddefaultskills();
sk_lvup(AL_DP);
sk_lvup(AL_DP);
sk_lvup(AL_DP);
@@ -228,7 +226,7 @@ L_FiresOfSteam:
sk_lvup(any(TMW2_FROSTNOVA, TMW2_HOLYLIGHT, TMW2_LIGHTNING, TMW2_METEORSHOWER, TMW2_FIREBALL, TMW2_BEARSTRIKE, MC_MAMMONITE, SN_SHARPSHOOTING));
sk_lvup(any(TMW2_NILFHEIM, TMW2_JUDGMENT, TMW2_TEMPEST, TMW2_GAIABREAK, TMW2_ARMAGEDDON, TMW2_ALLINONE, ASC_METEORASSAULT, AC_SHOWER, SN_WINDWALK));
sk_lvup(any(TMW2_GDP_MAXPOWER, TMW2_GDP_SPREGEN));
- getitem GuildCoin, rand2(500);
+ getitembound GuildCoin, rand2(500), 4;
getitembound any(StrengthFruit, AgilityFruit, VitalityFruit, IntelligenceFruit, DexterityFruit, LuckFruit), 1, 4;
getitembound any(StrengthFruit, AgilityFruit, VitalityFruit, IntelligenceFruit, DexterityFruit, LuckFruit), 1, 4;
getitembound any(SacredBullet, EvilBullet), 400, 4;
@@ -237,9 +235,14 @@ L_FiresOfSteam:
getitembound ScentGrenade, rand2(4), 4;
getitembound InsuranceContract, 1, 4;
getitembound Wurtzite, 6, 4;
+ getitembound MercCard_AndreiSakar, 1, 4;
percentheal 100,100;
LOCATION$ = "Tulim";
TUT_VAR=gettimetick(2);
+ #TUTORIAL_DONE=true;
+ #REG_DATE=gettimetick(2);
+ TUTORIAL=true;
+ MAGIC_LVL=7;
savepoint "029-0", 202, 85;
warp "029-0", 202, 85;
close;
diff --git a/npc/029-0/_import.txt b/npc/029-0/_import.txt
index a84cdfd12..e10e238de 100644
--- a/npc/029-0/_import.txt
+++ b/npc/029-0/_import.txt
@@ -1,5 +1,6 @@
// Map 029-0: Artis
// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/029-0/_mobs.txt",
"npc/029-0/elora.txt",
"npc/029-0/mobs.txt",
"npc/029-0/sakar.txt",
diff --git a/npc/029-0/_mobs.txt b/npc/029-0/_mobs.txt
new file mode 100644
index 000000000..5a144e18f
--- /dev/null
+++ b/npc/029-0/_mobs.txt
@@ -0,0 +1,10 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 029-0: Artis mobs
+029-0,95,85,59,53 monster Mouboo Slime 1201,12,90000,35000
+029-0,121,47,78,30 monster Mouboo 1023,36,90000,35000
+029-0,71,99,37,45 monster Mouboo 1023,36,90000,35000
+029-0,60,48,31,28 monster Alpha Mouboo 1056,4,90000,35000
+029-0,34,70,16,21 monster Bloody Mouboo 1119,3,90000,35000
+029-0,187,40,16,21 monster Moubi 1038,3,240000,35000
+029-0,113,47,95,22 monster Mineral Bif 1058,12,90000,35000
+029-0,33,112,11,36 monster Mineral Bif 1058,9,90000,35000
diff --git a/npc/029-0/elora.txt b/npc/029-0/elora.txt
index 90edc32c8..e86449414 100644
--- a/npc/029-0/elora.txt
+++ b/npc/029-0/elora.txt
@@ -63,6 +63,9 @@ OnInit:
029-0,90,130,0 duplicate(Zitoni) Zitoni#FoS NPC_RUMLY
029-0,132,51,0 duplicate(Cynric) Cynric#FoS NPC_LLOYD
029-0,58,118,0 duplicate(Neko) Neko#FoS1 NPC_KAYLO
+// TODO: Custom shop for ores and blueprints
+// TODO: Mercenary Shop
+// TODO: Magic School NPCs
// 029-1
029-1,35,88,0 duplicate(Neko) Neko#FoS2 NPC_KAYLO
diff --git a/npc/029-0/sakar.txt b/npc/029-0/sakar.txt
index 9c8ac24a7..2373698a5 100644
--- a/npc/029-0/sakar.txt
+++ b/npc/029-0/sakar.txt
@@ -29,7 +29,10 @@ OnInit:
end;
}
-029-0,88,33,0 script Andrei Sakar#FoS298 NPC_ANDREI,{
+029-0,88,33,0 script Andrei Sakar#FoS290 NPC_ANDREI,{
+ function prologue;
+ if (!FIRESOFSTEAM_CD)
+ prologue();
mesn;
mesq l("Do you want to advance?");
next;
@@ -46,6 +49,33 @@ OnInit:
cwarp "029-8", 51, 174;
}
close;
+
+function prologue {
+ mesn;
+ mesq l("Thanks for attending my call. As you can clearly see, the town is deserted; We only have our own staff in this town.");
+ next;
+ mesn;
+ mesq l("They set up shop in the whole town, so if you are in need of upgrading your gear or buying health food, it might be a good idea to pay them a visit.");
+ next;
+ mesn;
+ mesq l("Now, we're hot on the trails of whatever is the reason for the town to be so empty. We blocked this road so the town is not overrun by the monsters outside.");
+ next;
+ mesn;
+ mesq l("We've traced them to the Dark Forest, our goal is to destroy every raider there and defeat whoever is behind this tragedy. All that while keeping an eye open for survivors.");
+ next;
+ mesn;
+ mesq l("After all the monsters in an area are defeated, they'll respawn at once. I know, that's not good, but well, nothing that can be done about it.");
+ next;
+ mesn;
+ mesq l("Anyway, after that I'll use my magic, so everyone can rest after that until I finish, or keep killing the new monsters for experience and drops.");
+ next;
+ mesn;
+ mesq l("Are you ready? There will be a long path ahead of us until this mistery is solved.");
+ FIRESOFSTEAM_CD=gettimetick(2);
+ next;
+ return;
+}
+
OnInit:
.distance=5;
end;
diff --git a/npc/029-0/warps.txt b/npc/029-0/warps.txt
index deda3f8ae..714560b98 100644
--- a/npc/029-0/warps.txt
+++ b/npc/029-0/warps.txt
@@ -9,8 +9,10 @@
// FiresOfSteam_Warp(ID)
function script FiresOfSteam_Warp {
- if ($FIRESOFSTEAM < getarg(0))
+ if ($FIRESOFSTEAM < getarg(0)) {
+ dispbottom l("Monsters remaining: %s", fnum(mobcount(getmap(), "all")));
end;
+ }
if ($FIRESOFSTEAM > getarg(0))
return true;
if ($FIRESOFSTEAM_CD > gettimetick(2)) {