diff options
Diffstat (limited to 'world/map/npc')
-rw-r--r-- | world/map/npc/012-1/amrak.txt | 2 | ||||
-rw-r--r-- | world/map/npc/012-1/injured-mouboo.txt | 2 | ||||
-rw-r--r-- | world/map/npc/012-3/mana-seed.txt | 2 | ||||
-rw-r--r-- | world/map/npc/013-1/sagatha.txt | 2 | ||||
-rw-r--r-- | world/map/npc/014-1/wedding-officiator.txt | 2 | ||||
-rw-r--r-- | world/map/npc/015-1/sword.txt | 2 | ||||
-rw-r--r-- | world/map/npc/020-1/well.txt | 2 | ||||
-rw-r--r-- | world/map/npc/021-1/north_shops.txt | 2 | ||||
-rw-r--r-- | world/map/npc/021-2/bakery.txt | 2 | ||||
-rw-r--r-- | world/map/npc/026-1/munro.txt | 3 | ||||
-rw-r--r-- | world/map/npc/027-1/golbenez.txt | 16 | ||||
-rw-r--r-- | world/map/npc/027-3/entrance.txt | 2 | ||||
-rw-r--r-- | world/map/npc/042-2/sorfina.txt | 2 | ||||
-rw-r--r-- | world/map/npc/042-2/tanisha.txt | 12 | ||||
-rw-r--r-- | world/map/npc/functions/strangerquiz.txt | 2 | ||||
-rw-r--r-- | world/map/npc/items/launcher_ammo.txt | 32 | ||||
-rw-r--r-- | world/map/npc/items/require_stat.txt | 12 | ||||
-rw-r--r-- | world/map/npc/items/restricted_item.txt | 3 | ||||
-rw-r--r-- | world/map/npc/items/unequipcb.txt | 27 | ||||
-rw-r--r-- | world/map/npc/items/unreleased_item.txt | 10 | ||||
-rw-r--r-- | world/map/npc/scripts.conf | 2 |
21 files changed, 119 insertions, 22 deletions
diff --git a/world/map/npc/012-1/amrak.txt b/world/map/npc/012-1/amrak.txt index 74e6cd88..8997631f 100644 --- a/world/map/npc/012-1/amrak.txt +++ b/world/map/npc/012-1/amrak.txt @@ -8,4 +8,4 @@ mes "[Amrak]"; mes "\"Unfortunately, I've had trouble getting up there. The monsters in these caves scare me.\""; close; -}
\ No newline at end of file +} diff --git a/world/map/npc/012-1/injured-mouboo.txt b/world/map/npc/012-1/injured-mouboo.txt index 91042c13..5f629cbe 100644 --- a/world/map/npc/012-1/injured-mouboo.txt +++ b/world/map/npc/012-1/injured-mouboo.txt @@ -217,4 +217,4 @@ S_update_var: (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT)); return; -}
\ No newline at end of file +} diff --git a/world/map/npc/012-3/mana-seed.txt b/world/map/npc/012-3/mana-seed.txt index 05e27697..b6c806d2 100644 --- a/world/map/npc/012-3/mana-seed.txt +++ b/world/map/npc/012-3/mana-seed.txt @@ -238,4 +238,4 @@ L_magic_destroy: L_end: close; -}
\ No newline at end of file +} diff --git a/world/map/npc/013-1/sagatha.txt b/world/map/npc/013-1/sagatha.txt index a25db145..8f975af3 100644 --- a/world/map/npc/013-1/sagatha.txt +++ b/world/map/npc/013-1/sagatha.txt @@ -448,4 +448,4 @@ S_update_var: (QUEST_MAGIC & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); return; -}
\ No newline at end of file +} diff --git a/world/map/npc/014-1/wedding-officiator.txt b/world/map/npc/014-1/wedding-officiator.txt index a576fae9..cb8249c0 100644 --- a/world/map/npc/014-1/wedding-officiator.txt +++ b/world/map/npc/014-1/wedding-officiator.txt @@ -245,4 +245,4 @@ L_No_Room_For_Rings: mes "[Wedding Officiator]"; mes "\"You don't have room to carry the rings.\""; close; -}
\ No newline at end of file +} diff --git a/world/map/npc/015-1/sword.txt b/world/map/npc/015-1/sword.txt index e68d54ef..a20d9ef2 100644 --- a/world/map/npc/015-1/sword.txt +++ b/world/map/npc/015-1/sword.txt @@ -325,4 +325,4 @@ S_update_var: (QUEST_MAGIC & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); return; -}
\ No newline at end of file +} diff --git a/world/map/npc/020-1/well.txt b/world/map/npc/020-1/well.txt index 17b63c5c..1bd1fafb 100644 --- a/world/map/npc/020-1/well.txt +++ b/world/map/npc/020-1/well.txt @@ -128,4 +128,4 @@ S_Update_Var: (QUEST_Nivalis_state & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); return; -}
\ No newline at end of file +} diff --git a/world/map/npc/021-1/north_shops.txt b/world/map/npc/021-1/north_shops.txt index b4e03d28..b7c2b65a 100644 --- a/world/map/npc/021-1/north_shops.txt +++ b/world/map/npc/021-1/north_shops.txt @@ -3,7 +3,7 @@ // More high-end stuff to satisfy the richer people in Royal Tulimshar // Some clothing -021-1.gat,135,38,0|shop|Inar|108,CottonShirt :-1,CottonShorts :-1,CottonBoots :-1,DesertShirt :-1,SilkRobe :-5,DesertHat :-4 +021-1.gat,135,38,0|shop|Inar|108,SlingShot :-1,SlingBullet :-1,CottonShirt :-1,CottonShorts :-1,CottonBoots :-1,DesertShirt :-1,SilkRobe :-5,DesertHat :-4 021-1.gat,129,40,0|script|Well|400, { diff --git a/world/map/npc/021-2/bakery.txt b/world/map/npc/021-2/bakery.txt index 5239c498..738c90c2 100644 --- a/world/map/npc/021-2/bakery.txt +++ b/world/map/npc/021-2/bakery.txt @@ -236,4 +236,4 @@ L_SeeBunny: mes ""; mes "\"We come here every week. This place has some of the best bread I've ever eaten!\""; close; -}
\ No newline at end of file +} diff --git a/world/map/npc/026-1/munro.txt b/world/map/npc/026-1/munro.txt index 1151e3b8..ab304091 100644 --- a/world/map/npc/026-1/munro.txt +++ b/world/map/npc/026-1/munro.txt @@ -69,6 +69,7 @@ L_disablemunro: disablenpc "Munro"; L_End: + setnpctimer 0; end; } @@ -81,7 +82,7 @@ function|script|CheckMunro|, if ((gettime(6) == 12 && gettime(5) >= 23) || (gettime(6) == 12 && gettime(5) <= 26)) goto L_Return; - // unequipbyid @slotId; + callfunc "UnequipLater"; L_Return: return; diff --git a/world/map/npc/027-1/golbenez.txt b/world/map/npc/027-1/golbenez.txt index d560f953..34885a34 100644 --- a/world/map/npc/027-1/golbenez.txt +++ b/world/map/npc/027-1/golbenez.txt @@ -34,4 +34,20 @@ L_Weak: next; mes "\"Come back when you're a bit more experienced.\""; close; + +// Golbenez resets the graveyard monsters when no players are present +// He's such an evil guy! +OnInit: + initnpctimer; + end; + +OnTimer10000: + if (getareausers("027-1.gat", 21, 30, 112, 105) == 0) + killmonsterall "027-1.gat"; + + setnpctimer 0; + end; } + + + diff --git a/world/map/npc/027-3/entrance.txt b/world/map/npc/027-3/entrance.txt index 5449a12c..01ee28ce 100644 --- a/world/map/npc/027-3/entrance.txt +++ b/world/map/npc/027-3/entrance.txt @@ -42,4 +42,4 @@ OnTimer2000: + "The only way to get out is to defeat the reaper" + "or die..."; close; -}
\ No newline at end of file +} diff --git a/world/map/npc/042-2/sorfina.txt b/world/map/npc/042-2/sorfina.txt index b01a83c7..20c04adf 100644 --- a/world/map/npc/042-2/sorfina.txt +++ b/world/map/npc/042-2/sorfina.txt @@ -231,6 +231,8 @@ L_SkipTut: mes "\"Alright, if you say so. But take at least this."; callfunc "TutorialCompleted"; getitem "Knife", 1; + getitem "SlingShot", 1; + getitem "SlingBullet", 100; getitem "CottonShirt", 1; getitem "RaggedShorts", 1; set Zeny, Zeny + 50; diff --git a/world/map/npc/042-2/tanisha.txt b/world/map/npc/042-2/tanisha.txt index 437099dd..de93b8d5 100644 --- a/world/map/npc/042-2/tanisha.txt +++ b/world/map/npc/042-2/tanisha.txt @@ -50,7 +50,7 @@ L_Maggots: L_Fight_Again: mes "\"Ok, listen what to do."; - mes "Equip the knife and kill the maggots.\""; + mes "Equip a weapon and kill the maggots.\""; next; mes "\"Press A to focus on a monster. With X you can focus and start attacking the same time."; mes "But it also works to click on the monster with your mouse.\""; @@ -64,7 +64,15 @@ L_Fight_Again: // The getitem must be in the same place as set tanisha, 2; // since it was moved to after L_Fight_Again, add it conditionally if (tanisha == 1) - getitem "Knife", 1; + goto L_GetFightItems; + goto L_ContinueFight; + +L_GetFightItems: + getitem "Knife", 1; + getitem "SlingShot", 1; + getitem "SlingBullet", 100; + +L_ContinueFight: set tanisha, 2; set @Maggot_Kills, 0; set @time, 0; diff --git a/world/map/npc/functions/strangerquiz.txt b/world/map/npc/functions/strangerquiz.txt index 211e7e4b..b3488649 100644 --- a/world/map/npc/functions/strangerquiz.txt +++ b/world/map/npc/functions/strangerquiz.txt @@ -5,4 +5,4 @@ function|script|StrangerQuiz|, // return in @quizanswer$ set @quizanswer$, getspellinvocation(@quizparam$); return; -}
\ No newline at end of file +} diff --git a/world/map/npc/items/launcher_ammo.txt b/world/map/npc/items/launcher_ammo.txt new file mode 100644 index 00000000..79cf057b --- /dev/null +++ b/world/map/npc/items/launcher_ammo.txt @@ -0,0 +1,32 @@ +// ------------------------------------------------------------ +// Ammo Needs to know Launcher and vice versa. +// +// Behavior: +// - If only one is equipped, do nothing +// - If incompatible launcher and ammo are equipped, unequip the ammo +// +// Variables passed to these scripts: +// +// @LauncherType, @AmmoType +// +// ------------------------------------------------------------ + +function|script|CheckLauncher|, +{ + if (getequipid(equip_arrow) == -1) + set @LauncherType, 0; + return; +} + +function|script|CheckAmmo|, +{ + if ((@LauncherType == @AmmoType) || (!@LauncherType)) + goto L_Return; + + callfunc "UnequipLater"; + +L_Return: + set @LauncherType, 0; + set @AmmoType, 0; + return; +} diff --git a/world/map/npc/items/require_stat.txt b/world/map/npc/items/require_stat.txt index 77a518b1..8629b686 100644 --- a/world/map/npc/items/require_stat.txt +++ b/world/map/npc/items/require_stat.txt @@ -11,9 +11,15 @@ function|script|RequireStat|, { set @bStatVal, readparam(@bStat); - // If the requirement isn't met, then we end the script. - // Hence, subsequent item modifiers won't be applied. + // If the requirement isn't met, we set an unequip trigger. + // The item is now removed. if (@bStatVal < @minbStatVal) - end; + goto L_Unequip; + goto L_Return; + +L_Unequip: + callfunc "UnequipLater"; + +L_Return: return; } diff --git a/world/map/npc/items/restricted_item.txt b/world/map/npc/items/restricted_item.txt index 2aa69c7e..7e3213c0 100644 --- a/world/map/npc/items/restricted_item.txt +++ b/world/map/npc/items/restricted_item.txt @@ -11,11 +11,10 @@ function|script|RestrictedItem|, if (!@minLvl) set @minLvl, 60; if (debug || getgmlevel() >= @minLvl) goto L_Return; // If the active character is staff, do nothing. message strcharinfo(0), "This item repells you with extreme force. It does not seem to be meant for you."; - unequipbyid @slotId; + callfunc "UnequipLater"; if (getgmlevel()) goto L_Return; gmcommand "@wgm Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'."; gmcommand "@l Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'."; - end; L_Return: return; diff --git a/world/map/npc/items/unequipcb.txt b/world/map/npc/items/unequipcb.txt new file mode 100644 index 00000000..62dc7715 --- /dev/null +++ b/world/map/npc/items/unequipcb.txt @@ -0,0 +1,27 @@ +// For now this has to use a real map name, but the effect happens +// on any map because of the -1s at the end. +// Note: the client (I think) has a display bug if this is called +// during the intial connection's equip hook +botcheck.gat,0,0,0|script|UnequipCB|-1,-1,-1 +{ + +OnUnequip: + unequipbyid (@unequip_slot - 1); + set @unequip_slot, 0; + end; +} + +// Paired with unequipcb +function|script|UnequipLater|, +{ + // if there are multiple items that want to be removed, + // only schedule one timer - scripts will be called again + if (@unequip_slot) + goto L_Return; + + set @unequip_slot, (@slotId + 1); + addtimer 0, "UnequipCB::OnUnequip"; + +L_Return: + return; +} diff --git a/world/map/npc/items/unreleased_item.txt b/world/map/npc/items/unreleased_item.txt index 708cc1e0..457c2bcb 100644 --- a/world/map/npc/items/unreleased_item.txt +++ b/world/map/npc/items/unreleased_item.txt @@ -5,8 +5,12 @@ function|script|UnreleasedItem|, { - if (debug || getgmlevel()) end; // If the server allows equipping unreleased items or if the active character is staff, do nothing. + // If the server allows equipping unreleased items or if the active character is staff, do nothing. + if (debug || getgmlevel()) + goto L_Return; message strcharinfo(0), "You have difficulties equipping this item, as if it is not yet fully in this world."; - unequipbyid @slotId; - end; + callfunc "UnequipLater"; + +L_Return: + return; } diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf index 26a0b0b4..2fff74b8 100644 --- a/world/map/npc/scripts.conf +++ b/world/map/npc/scripts.conf @@ -29,6 +29,8 @@ npc: npc/items/unreleased_item.txt npc: npc/items/require_stat.txt npc: npc/items/restricted_item.txt npc: npc/items/warpTowels.txt +npc: npc/items/unequipcb.txt +npc: npc/items/launcher_ammo.txt import: npc/_import.txt |