summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-05-03 12:34:12 -0300
committerJesusaves <cpntb1@ymail.com>2022-05-03 12:34:12 -0300
commit79f862701558c2564116c02f48432fced6ac76be (patch)
treea23b6725ddfefa9a6cc6c9a7f49792806e7d7b22
parente553fa37195febcca7408d2fc60b0010d64f31f7 (diff)
downloadserverdata-79f862701558c2564116c02f48432fced6ac76be.tar.gz
serverdata-79f862701558c2564116c02f48432fced6ac76be.tar.bz2
serverdata-79f862701558c2564116c02f48432fced6ac76be.tar.xz
serverdata-79f862701558c2564116c02f48432fced6ac76be.zip
Fix some bugs and code a prototype for the storage
-rw-r--r--npc/014-2-2/gemini.txt2
-rw-r--r--npc/014-2-2/valia.txt2
-rw-r--r--npc/034-2/gemini.txt2
-rw-r--r--npc/034-3/gemini.txt18
-rw-r--r--npc/034-4/storage.txt176
5 files changed, 197 insertions, 3 deletions
diff --git a/npc/014-2-2/gemini.txt b/npc/014-2-2/gemini.txt
index c05f96699..bd6d12554 100644
--- a/npc/014-2-2/gemini.txt
+++ b/npc/014-2-2/gemini.txt
@@ -61,6 +61,8 @@ OnCore:
getexp 32000, 800;
break;
case 7: // Ambushed & Captured
+ if (!is_gm())
+ nude();
@lockpicks=false;
// Prision Area
.@m=any(Bandit, RobinBandit, SleepingBandit);
diff --git a/npc/014-2-2/valia.txt b/npc/014-2-2/valia.txt
index 346a9c7b6..09d02c6a3 100644
--- a/npc/014-2-2/valia.txt
+++ b/npc/014-2-2/valia.txt
@@ -136,7 +136,7 @@ function script GeminiFail {
if ($EVENT$ != "Gemini" ||
($EVENT$ == "Gemini" && GEMINI_DAY == gettime(5)))
{
- if (getq(HurnscaldQuest_Gemini)) {
+ if (getq(HurnscaldQuest_Gemini) && !is_gm()) {
delitem GemPowder, 1;
delitem EverburnPowder, 1;
}
diff --git a/npc/034-2/gemini.txt b/npc/034-2/gemini.txt
index a6a09ac36..ca8a3ae30 100644
--- a/npc/034-2/gemini.txt
+++ b/npc/034-2/gemini.txt
@@ -59,7 +59,7 @@ OnTouch:
sleep2(3000); // 5s
unittalk(.@b2, "Ahaha, that was easy! Ok, knock them out!");
sleep2(3000); // 2s
- areawarp(.@m$, 23, 67, 32, 74, .@m$, 30, 92, 33, 95);
+ areawarp(.@m$, 23, 67, 32, 77, .@m$, 30, 92, 33, 95);
unitwalk(.@b1, 37, 90);
unitwalk(.@b2, 37, 90);
sleep2(2000);
diff --git a/npc/034-3/gemini.txt b/npc/034-3/gemini.txt
index 6d9ec0d67..5f195ba43 100644
--- a/npc/034-3/gemini.txt
+++ b/npc/034-3/gemini.txt
@@ -4,6 +4,16 @@
// Description:
// Gemini Sisters Quest - Outside the Building
+034-3,23,50,0 script #GeminiBack2 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ if (instance_id() < 0 || getcharid(1) < 1) end;
+ GeminiCheck(8);
+ .@p=getcharid(1);
+ warp "val2@"+.@p, 37, 25;
+ end;
+}
+
034-3,57,29,0 script #GeminiDoor NPC_HIDDEN,0,0,{
end;
@@ -108,12 +118,14 @@ OnTimer2000:
if (!attachrid(.aid)) {
npctalk "The caster ceased to exist!";
+ stopnpctimer;
end;
}
getmapxy(.@m$, .@x, .@y, 0, .aid);
- if (.@m$ != .@mp$) {
+ if (.@m$ != .mp$) {
npctalk "The caster is gone!";
+ stopnpctimer;
end;
}
if (.@x < 52 ||
@@ -123,6 +135,7 @@ OnTimer2000:
npctalk "The caster left the power circle!";
dispbottom l("The magic accumulated backfires at you!");
heal -(.power), -(.power/2);
+ stopnpctimer;
end;
}
@@ -132,10 +145,12 @@ OnTimer2000:
if (ispcdead()) {
npctalk "The caster is dead!";
+ stopnpctimer;
end;
}
if (Sp <= 0) {
npctalk "The caster ran out of mana!";
+ stopnpctimer;
end;
}
@@ -173,6 +188,7 @@ OnTimer2000:
.mp$="";
.aid=0;
}
+ stopnpctimer;
end;
}
detachrid();
diff --git a/npc/034-4/storage.txt b/npc/034-4/storage.txt
index 0e2523109..3e99e54ef 100644
--- a/npc/034-4/storage.txt
+++ b/npc/034-4/storage.txt
@@ -4,5 +4,181 @@
// Description:
// Gemini Sisters Quest - Part B: Storage Room
+034-4,45,78,0 script #GeminiPartC NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ if (instance_id() < 0 || getcharid(1) < 1) end;
+ GeminiCheck(11);
+ .@p=getcharid(1);
+ if ($@VALIA_STATUS[.@p] < 13) {
+ dispbottom l("Uh? I can't pass. I wonder why, maybe I need to wait?");
+ end;
+ }
+ if (mobcount(getmap(), "all") > 0) {
+ dispbottom l("I should defeat all mobs before passing.");
+ end;
+ }
+ if (mobcount(getmap(), "all") <= 0 && $@VALIA_STATUS[.@p] == 11) {
+ $@VALIA_STATUS[.@p]=12;
+ }
+ if ($@VALIA_STATUS[.@p] >= 12) {
+ slide 83, 58;
+ }
+ end;
+}
+
+034-4,33,77,0 script #GeminiStorei NPC_HIDDEN,2,2,{
+function storageutil;
+ end;
+OnTouch:
+ if (instance_id() < 0 || getcharid(1) < 1) end;
+ GeminiCheck(11);
+ .@p=getcharid(1);
+ if (strcharinfo(0) != getpartyleader(.@p)) end;
+
+ if (!.state) {
+ .mp$ = getmap();
+ .pn$ = getpartyname(getcharid(1));
+ .pid = getcharid(1);
+ .state = true;
+ /* We now must calculate amount of waves */
+ /* It is a hack for now, though */
+ .mto = 5 + (BaseLevel / 30) + getmapusers(.mp$);
+ initnpctimer;
+ killmonsterall(.mp$); // Cancel everything done thus far, incl. showdown
+ }
+ end;
+
+OnTimer1000:
+ .luvia = monster(.mp$, 37, 76, "Luvia Gemini", Luvia, 1);
+ immortal(.luvia);
+ setunitdata(.luvia, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
+ end;
+
+OnTimer2500:
+ unittalk(.luvia, "So you aren't made of sugar!");
+ end;
+
+OnTimer6000:
+ unittalk(.luvia, "I was worried you would all have melted on the lobby!");
+ end;
+
+OnTimer9500:
+ unittalk(.luvia, "Hahaha, but this is just the beginning of your journey...");
+ end;
+
+
+OnTimer13000:
+ unittalk(.luvia, "I am Luvia Gemini, and this is my trial for you!");
+ end;
+
+
+OnTimer16500:
+ unittalk(.luvia, "Show me of what you are made of, %s!", .pn$);
+ .@pi = getmapusers(.mp$) + 2;
+ monster(.mp$, 44, 78, strmobinfo(1, Scar), Scar, .@pi);
+ end;
+
+OnTimer19000:
+ unittalk(.luvia, "HAHAHahahaha!");
+ end;
+
+OnTimer20000:
+ unitwarp(.luvia, "034-4", 45, 45);
+ end;
+
+OnTimer21000:
+ unitkill(.luvia);
+ end;
+
+OnTimer30000:
+ storageutil();
+ .sto += 1;
+ end;
+
+OnTimer45000:
+ if (.sto < .mto)
+ setnpctimer 25000;
+ monster(.mp$, 44, 78, strmobinfo(1, BlackMamba), BlackMamba, 1);
+ end;
+
+OnTimer600000:
+ .@pi = getmapusers(.mp$) + 1;
+ monster(.mp$, 44, 78, strmobinfo(1, GoboBear), GoboBear, .@pi);
+ $@VALIA_STATUS[.pid] = 12;
+ stopnpctimer;
+ end;
+
+
+function storageutil {
+ // Decide if we'll spawn or add items. Previous failures are NOT considerated.
+ .@r=rand2(10000)+(.sto * 100);
+
+ // Super rare drop?! (~1.5%)
+ if (.@r < 120 || .@r > 10000) {
+ makeitem(any(DeathPotion, PoisonAmmoBox, AncientBlueprint, ThornAmmoBox, MercBoxD, ScholarshipBadge, DarkDesertMushroom), 1, .mp$, rand2(30, 71), rand2(44, 86));
+ }
+
+ // Super strong monster?! (4%)
+ if ((.@r > 6000 && .@r < 6400) || .sto == 15 || .sto == 17 || .sto >= 20) {
+ .@mob=any(WanderingShadow, SeaSlimeMother, NightDragon, GiantMutatedBat, Reaper, Mandragora);
+ monster(.mp$, 44, 78, strmobinfo(1, .@mob), .@mob, 1);
+ // Warn players?
+ }
+
+ // Compulsory monster spawn
+ switch (.sto) {
+ case 0:
+ .@mob = ArmoredSkeleton; break;
+ case 1:
+ .@mob = DustRifle; break;
+ case 2:
+ .@mob = HoodedNinja; break;
+ case 3:
+ .@mob = WickedMushroom; break;
+ case 4:
+ .@mob = any(Archant, Scar); break;
+ case 5:
+ .@mob = Scar; break;
+ case 6:
+ .@mob = AzulSkullSlime; break;
+ case 7:
+ .@mob = Forain; break;
+ case 8:
+ .@mob = GreenDragon; break;
+ case 9:
+ .@mob = Michel; break;
+ case 10:
+ .@mob = EliteDuck; break;
+ case 11:
+ .@mob = Terranite; break;
+ case 12:
+ .@mob = JackO; break;
+ case 13:
+ .@mob = BloodyMouboo; break;
+ default:
+ .@mob = GoboBear;
+ }
+ monster(.mp$, 44, 78, strmobinfo(1, .@mob), .@mob, 1+getmapusers(.mp$));
+
+ // Compulsory item drop
+ freeloop(true);
+ for (.@i=0; .@i <= getmapusers(.mp$); .@i++) {
+ makeitem(any(Wurtzite, ShadowHerb, AlizarinHerb, DiamondPowder, RubyPowder, EmeraldPowder, SapphirePowder, TopazPowder, AmethystPowder, CopperOre, IronOre, Coal, LeadOre, Lifestone, ScorpionClaw, WhiteFur, SquirrelPelt, TinOre, PileOfAsh, EmptyBottle, FluoPowder, TerraniteOre, SulfurPowder, LeatherPatch, LazuriteShard, Root, ReedBundle, GambogeHerb, MauveHerb, CobaltHerb, MaggotSlime, BugLeg, RawLog, BanditHood, BatWing, IronPowder, ArtichokeHerb, LeftCraftyWing, RightCraftyWing, Coral, BlueCoral, Pearl, Moss, RattoTail, RattoTeeth, Knife, SharpKnife, StrangeCoin, PurificationPotion, IcedBottle, Grenade, SmokeGrenade, TreasureMap, AgiPotionA, VitPotionA, IntPotionA, DexPotionA, LukPotionA, EmptyBox, HastePotion, StrengthPotion, Croconut, ChocolateBar, ChocolateBiscuit, PinkieLeg, Potatoz, Coffee, SnakeEgg, Plushroom, Chagashroom, Honey, MoubooSteak, Milk, Orange, CherryCake, Piberries, Aquada, Cheese, Bread, Acorn, Manana), 1, .mp$, rand2(30, 71), rand2(44, 86));
+ }
+ return;
+}
+
+OnInit:
+OnInstanceInit:
+ .state = false;
+ .mp$ = "";
+ .pn$ = "";
+ .pid = 0;
+ .luvia = 0;
+ .sto = 0;
+ .mto = 0;
+ end;
+}