From c440d5908d0491f85dca43cd40bb667e50315016 Mon Sep 17 00:00:00 2001 From: tux9th Date: Mon, 2 Sep 2013 11:24:29 +0200 Subject: Astral Magic: * Adding summon mouboo spell. * Adding summon pinkie spell. * Fluffies are from now on also slaves and attack. * Adding Pinkie to shear-drop list. * Killing Pinkies will now make Sagatha unhappy, shearing them will make her happy. --- world/map/conf/magic.conf.template | 28 ++++++++++++++++++++++++++-- world/map/npc/functions/mob_points.txt | 4 ++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/world/map/conf/magic.conf.template b/world/map/conf/magic.conf.template index 4933da9d..12e27946 100644 --- a/world/map/conf/magic.conf.template +++ b/world/map/conf/magic.conf.template @@ -966,7 +966,8 @@ SPELL shear : "#N14" = CALL shear-drop("Gamboge", "GambogePlant", "GambogeHerb", 700); CALL shear-drop("Mauve", "MauvePlant", "MauveHerb", 700); CALL shear-drop("SilkWorm", "Silkworm", "SilkCocoon", 300); - IF ((name = "Fluffy" || name = "Mouboo") && random(2)) + CALL shear-drop("Pinkie", "Pinkie", "PinkAntenna", 180); + IF ((name = "Fluffy" || name = "Mouboo" || name = "Pinkie") && random(2)) THEN { set @value, 1; callfunc "QuestSagathaHappy"; }; ) @@ -1014,8 +1015,31 @@ LOCAL SPELL summon-fluffies : "#A12" = => EFFECT CALL adjust_spellpower(school); CALL default_effect(); CALL gain_xp(1, 27); - CALL summon_spell(1020, 1 + spellpower / 170 + spellpower / 430, 5000 - (spellpower * 8), spellpower * 350, 3); + CALL summon_spell(1020, 1 + spellpower / 170 + spellpower / 430, 5000 - (spellpower * 8), spellpower * 350, 2); +LOCAL SPELL summon-mouboo : "#A14" = + LET level = 1 + school = ASTRAL + IN (MANA 35, CASTTIME 20000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS ["MoubooFigurine", "Root"]) + => EFFECT CALL adjust_spellpower(school); + CALL default_effect(); + CALL gain_xp(2, 37); + CALL summon_dark_spell(1028, 1 + spellpower / 270 , 4000 - (spellpower * 9), spellpower * 100, 2); + +LOCAL SPELL summon-pinkie : "#A15" = + LET level = 1 + school = ASTRAL + IN (MANA 35, CASTTIME 20000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS ["PinkAntenna", "Root"]) + => EFFECT CALL adjust_spellpower(school); + CALL default_effect(); + CALL gain_xp(2, 38); + CALL summon_dark_spell(1018, 1 + spellpower / 120, 5000 - (spellpower * 9), spellpower * 150, 2); SPELL detect-players : "#G10" = LET level = 1 diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt index e4deec13..0bdcec06 100644 --- a/world/map/npc/functions/mob_points.txt +++ b/world/map/npc/functions/mob_points.txt @@ -127,6 +127,10 @@ function|script|MobPoints|, // Attitude adjustment for the witch (can we refactor this to another function? Not sure about max. recursion depth) set @value, 0; +// Pinkie + if (@mobID == 1018) + set @value, 3; + // Fluffy if (@mobID == 1020) set @value, 3; -- cgit v1.2.3-70-g09d2 From ab46af1e6319c6f6f6e730cf021fd77173781572 Mon Sep 17 00:00:00 2001 From: tux9th Date: Mon, 9 Sep 2013 15:46:39 +0200 Subject: Pauline NPC - 021-1: * Creating a new NPC script. * Removing Pauline from 021-1/npcs.txt. * Reset temporary NPC var in 021-1/npcs.txt. * Proofread by Melkior. Pauline now is part of the QUEST_MAGIC2 variable using Nibble4 only. She teaches two new Astral Magic spells. --- world/map/npc/021-1/_import.txt | 1 + world/map/npc/021-1/npcs.txt | 14 +- world/map/npc/021-1/pauline.txt | 296 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 300 insertions(+), 11 deletions(-) create mode 100644 world/map/npc/021-1/pauline.txt diff --git a/world/map/npc/021-1/_import.txt b/world/map/npc/021-1/_import.txt index eda5518c..0a5c51a9 100644 --- a/world/map/npc/021-1/_import.txt +++ b/world/map/npc/021-1/_import.txt @@ -14,6 +14,7 @@ npc: npc/021-1/inac.txt npc: npc/021-1/mapflags.txt npc: npc/021-1/north_shops.txt npc: npc/021-1/npcs.txt +npc: npc/021-1/pauline.txt npc: npc/021-1/sewer_east.txt npc: npc/021-1/sewer_north.txt npc: npc/021-1/sewer_west.txt diff --git a/world/map/npc/021-1/npcs.txt b/world/map/npc/021-1/npcs.txt index 40b100e1..d5d217d9 100644 --- a/world/map/npc/021-1/npcs.txt +++ b/world/map/npc/021-1/npcs.txt @@ -8,6 +8,7 @@ mes "\"My father is an adventurer.\""; next; mes "\"After he proved himself around town, the guards let him fight monsters in the Sandstorm mine.\""; + set @npcname$, ""; close; } @@ -21,17 +22,7 @@ mes "\"If you go west, then north, you'll see the Wizard Academy my parents just sent me to.\""; next; mes "\"The Academy is good, but I wish I had more free time. It takes a lot of intelligence to get what the teachers are talking about.\""; - close; -} - -021-1.gat,55,66,0|script|Pauline|208, -{ - set @npcname$, "Pauline"; - - mes "[" + @npcname$ + "]"; - mes "\"I've mastered several schools of magic and fought the Yeti in Kaizei.\""; - next; - mes "\"The path of magic is a long and difficult one.\""; + set @npcname$, ""; close; } @@ -43,5 +34,6 @@ mes "\"Elanore is a magician in Southern Tulimshar that helps young adventurers by healing their battle wounds. When they are experienced enough, she stops healing them.\""; next; mes "\"You can find her by going through the Bazaar and to the East.\""; + set @npcname$, ""; close; } diff --git a/world/map/npc/021-1/pauline.txt b/world/map/npc/021-1/pauline.txt new file mode 100644 index 00000000..b87e4db9 --- /dev/null +++ b/world/map/npc/021-1/pauline.txt @@ -0,0 +1,296 @@ +//Author: tux9th +//This is the continuation of Astral Magic Level 2. +//This uses the QUEST_MAGIC2 variable Nibble 4. +//Quest States: +// @pauline_state 1: Got Magic, started to talk to her about Magic. +// @pauline_state 2: Finished Talking to her about new Astral Spells, learnt invocations. +// @pauline_state 3: Told her the correct ingredients to the Mouboo summon spell. +// @pauline_state 4: Told her the correct ingredients to the Pinkie summon spell. +// +//Variables: +// @pauline_ingredient1$ First ingredient input. +// @pauline_ingredient2$ Second ingredient input. +// @pauline_REWARD amount of XP gained for telling her ingredients for each spell. + +021-1.gat,55,66,0|script|Pauline|208, +{ + +//Bitmasking +// QUEST_MAGIC2 - Nibble4 + set @Pauline_MASK, NIBBLE_4_MASK; + set @Pauline_SHIFT, NIBBLE_4_SHIFT; + + set @pauline_state, ((QUEST_MAGIC2 & @Pauline_MASK) >> @Pauline_SHIFT); + +//Bitmasks END + + set @pauline_REWARD, 10000; + + if (@pauline_state == 4) goto L_MoreMagic; + if (@pauline_state == 3) goto L_KnowIngredientsPinkie; + if (@pauline_state == 2) goto L_Ingredients; + if (@pauline_state == 1) goto L_Back; + + if (getskilllv(SKILL_MAGIC_ASTRAL) > 0) + goto L_Magic; + mes "[Pauline]"; + mes "\"I've mastered several schools of magic and fought the Yeti in Kaizei.\""; + next; + mes "\"The path of magic is a long and difficult one.\""; + goto L_Close; + +L_Magic: + mes "[Pauline]"; + mes "\"Ah. I see you are skilled in the Art of Astral Magic.\""; + mes "\"Who taught you?\""; + menu + "I learnt it myself!", -, + "Sagatha is my teacher.", L_Sagatha, + "You must be mistaken.", L_Close; + mes "\"You did? Not bad. I guess then there is nothing I can teach you. Or are you interested in sharing knowledge?\""; + menu + "Yes, please.", L_Spells, + "No, thanks.", L_Close; + +L_Sagatha: + mes "[Pauline]"; + mes "\"Ah, that Witch!\""; + mes "\"Very well.\""; + next; + mes "\"Do you want me to teach you things Sagatha doesn't know yet?\""; + next; + menu + "Yes.", L_Spells, + "No.", L_Close; + +L_Back: + mes "[Pauline]"; + mes "\"So, you're back. Are you ready to share knowledge now?\""; + menu + "Yes.", L_Spells, + "No.", L_Close; + +L_Spells: + set @pauline_state, 1; + callsub S_Update_Mask; + mes "[Pauline]"; + mes "\"Okay.\""; + mes "\"Not long ago I discovered some new caves near Tulimshar. In an abandond chamber I found some paintings on the wall.\""; + next; + mes "\"They weren't typical for this region, so I examined them closely. I found some invocations I have never heard before.\""; + mes "\"I thought that they would fit better into the Woodland area. I could only decipher two invocations so far. Those are two spells used to summon creatures.\""; + next; + mes "\"One was for summoning Mouboos and the other one was for summoning Pinkies.\""; + mes "\"Have you ever heared about those?\""; + next; + menu + "Yes. I thought you had something new to tell. [Walk Away]", L_Close, + "No, tell me more.", -; + mes "[Pauline]"; + mes "\"Well I could only read the invocations. So I don't exactly know what kind of ingredients you are going to need.\""; + mes "\"The first one for the mouboo was " + getspellinvocation("summon-mouboo") + " and the one for the pinkie was " + getspellinvocation("summon-pinkie") +".\""; + next; + mes "\"For the pinkie spell my suggestion is to try similar ingredients to the other Astral spells. Try a root and some item typical for pinkies.\""; + mes "\"The mouboo spell might be more complicated. From what I could translate, one of the spell components is crafted by magic.\""; + next; + mes "\"When you find the right ingredients, come back and bring them to me to try those spells out.\""; + next; + mes "\"Goodbye.\""; + set @pauline_state, 2; + callsub S_Update_Mask; + goto L_Close; + +L_Ingredients: + mes "[Pauline]"; + mes "\"Hello, have you found out what ingredients to use yet?\""; + menu + "Yes.", L_KnowIngredientsMouboo, + "No.", -; + mes "\"Okay. Come back as soon as you know.\""; + goto L_Close; + +L_KnowIngredientsMouboo: + mes "\"Did you bring them?\""; + menu + "Yes." , -, + "No.", L_ComeBackLater; + mes "\"Then tell me the ingredients for the mouboo summoning spell and give them to me. Start with the first ingredient and then tell me the second one separately.\""; + next; + mes "This is case sensitive. Also do not enter whitespaces."; + next; + input @pauline_ingredient1$; + mes "Next ingredient."; + input @pauline_ingredient2$; + if (@pauline_ingredient1$ == "") + goto L_Wrong; + if (@pauline_ingredient2$ == "") + goto L_Wrong; + if (countitem(@pauline_ingredient1$) < 1) + goto L_NotEnough; + if (countitem(@pauline_ingredient2$) < 1) + goto L_NotEnough; + mes "\"Do you want to give me these items?\""; + menu + "No.", L_ComeBackLater, + "Yes.", -; + delitem @pauline_ingredient1$, 1; + delitem @pauline_ingredient2$, 1; + mes "\"Okay let me try this.\""; + if (@pauline_ingredient1$ == "Root") + goto L_Pass1Mouboo; + if (@pauline_ingredient1$ == "MoubooFigurine") + goto L_Pass2Mouboo; + goto L_DidNotWorkMouboo; + +L_DidNotWorkMouboo: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-mouboo") + "."; + mes "Nothing happens."; + mes "[Pauline]"; + mes "\"It seems you did not tell me the correct ingredients. Come back when you find the correct ones.\""; + goto L_Close; + +L_Pass1Mouboo: + if (@pauline_ingredient2$ == "MoubooFigurine") + goto L_TrySpellMouboo; + goto L_DidNotWorkMouboo; + +L_Pass2Mouboo: + if (@pauline_ingredient2$ == "Root") + goto L_TrySpellMouboo; + goto L_DidNotWorkMouboo; + +L_TrySpellMouboo: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-mouboo") + "."; + monster "021-1.gat", 55,68, "Good", 1028, 1; + mes "[Pauline]"; + mes "\"It worked!\""; + set @pauline_state, 3; + callsub S_Update_Mask; + getexp @pauline_REWARD, 0; + goto L_Close; + +L_KnowIngredientsPinkie: + mes "[Pauline]"; + mes "\"Now give me the ingredients for the pinkie spell.\""; + next; + mes "This is case sensitive. Also do not enter whitespaces."; + input @pauline_ingredient1$; + mes "Next ingredient."; + input @pauline_ingredient2$; + if (@pauline_ingredient1$ == "") + goto L_Wrong; + if (@pauline_ingredient2$ == "") + goto L_Wrong; + if (countitem(@pauline_ingredient1$) < 1) + goto L_NotEnough; + if (countitem(@pauline_ingredient2$) < 1) + goto L_NotEnough; + mes "\"Do you want to give me these items?\""; + menu + "No.", L_ComeBackLater, + "Yes.", -; + delitem @pauline_ingredient1$, 1; + delitem @pauline_ingredient2$, 1; + mes "\"Okay, let me try this.\""; + if (@pauline_ingredient1$ == "Root") + goto L_Pass1Pinkie; + if (@pauline_ingredient1$ == "PinkAntenna") + goto L_Pass2Pinkie; + goto L_DidNotWorkPinkie; + +L_DidNotWorkPinkie: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-pinkie") + "."; + mes "Nothing happens."; + mes "[Pauline]"; + mes "\"It seems you did not tell me the correct ingredients. Come back when you find the correct ones.\""; + goto L_Close; + +L_Pass1Pinkie: + if (@pauline_ingredient2$ == "PinkAntenna") + goto L_TrySpellPinkie; + goto L_DidNotWorkPinkie; + +L_Pass2Pinkie: + if (@pauline_ingredient2$ == "Root") + goto L_TrySpellPinkie; + goto L_DidNotWorkPinkie; + +L_TrySpellPinkie: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-pinkie") + "."; + monster "021-1.gat", 54,68, "Good", 1018, 1; + mes "[Pauline]"; + mes "\"It worked!\""; + set @pauline_state, 4; + callsub S_Update_Mask; + getexp @pauline_REWARD, 0; + goto L_Close; + +L_MoreMagic: + mes "[Pauline]"; + mes "\"Thanks for telling me the ingredients. As soon as I find out more about those wall paintings I will let you know.\""; + goto L_Close; + +L_Wrong: + mes "The Witch looks at you and snorts."; + mes "[Pauline]"; + mes "\"You told me the wrong ingredients. Come back as soon as you know the correct ones.\""; + goto L_Close; + +L_NotEnough: + mes "[Pauline]"; + mes "\"Hey, you don't have this with you!\""; + mes "\"Come back when you have the right ingredients.\""; + goto L_Close; + +L_ComeBackLater: + mes "[Pauline]"; + mes "\"Then come back later.\""; + goto L_Close; + +L_Close: + set @pauline_ingredient1$, ""; + set @pauline_ingredient2$, ""; + set @pauline_state, 0; + set @pauline_REWARD, 0; + close; + +//Bitmasks +S_Update_Mask: + set QUEST_MAGIC2, + (QUEST_MAGIC2 & ~(@Pauline_MASK)) + | (@pauline_state << @Pauline_SHIFT); + return; +} + +021-1.gat,53,66,0|script|PaulineDebug|208, +{ +//load Bitmasks; + set @Pauline_MASK, NIBBLE_4_MASK; + set @Pauline_SHIFT, NIBBLE_4_SHIFT; + + set @pauline_state, ((QUEST_MAGIC2 & @Pauline_MASK) >> @Pauline_SHIFT); + + mes "Reset Quest State"; + mes @pauline_state; + menu + "Yes.", -, + "No.", L_Close; + set @pauline_state, 0; + callsub S_Update_Mask; + mes "Done"; + close; + +L_Close: + set @pauline_state, 0; + close; + +S_Update_Mask: + set QUEST_MAGIC2, + (QUEST_MAGIC2 & ~(@Pauline_MASK)) + | (@pauline_state << @Pauline_SHIFT); + return; + +OnInit: + if (!debug) + disablenpc "PaulineDebug"; +} -- cgit v1.2.3-70-g09d2 From d60cec605098461f04af621dea21c41b7c473241 Mon Sep 17 00:00:00 2001 From: tux9th Date: Sat, 14 Sep 2013 18:13:05 +0200 Subject: Add news entry for the upcoming release. Update submodule pointer. --- client-data | 2 +- world/map/news.d/23-astral-extension.txt | 11 +++++++++++ world/map/news.html | 16 +++++++++++++++- world/map/news.txt | 15 ++++++++++++++- 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 world/map/news.d/23-astral-extension.txt diff --git a/client-data b/client-data index f5b0911f..853c8745 160000 --- a/client-data +++ b/client-data @@ -1 +1 @@ -Subproject commit f5b0911f3ff6c09ea55e38d6425ae48a6f0f2a2b +Subproject commit 853c8745b1f9833e82bca89084c6e3da47b6e9e9 diff --git a/world/map/news.d/23-astral-extension.txt b/world/map/news.d/23-astral-extension.txt new file mode 100644 index 00000000..4989c12f --- /dev/null +++ b/world/map/news.d/23-astral-extension.txt @@ -0,0 +1,11 @@ +{date:2013-09-14} + +We have a small content release today. +A witch in Tulimshar has found some daunting spells +for mages who are experienced in Astral Magic. +Talk to her about that. Maybe she is willing to teach you. + +With this update, we have added some minor bugfixes for the +Waric script, Bluepar sprite and Wicked Mushroom sprite. + +{author:TMW Development Team} diff --git a/world/map/news.html b/world/map/news.html index 34f8e775..6af99a3f 100644 --- a/world/map/news.html +++ b/world/map/news.html @@ -1,6 +1,20 @@

+2013-09-14 +

+We have a small content release today. +A witch in Tulimshar has found some daunting spells +for mages who are experienced in Astral Magic. +Talk to her about that. Maybe she is willing to teach you. +

+With this update, we have added some minor bugfixes for the +Waric script, Bluepar sprite and Wicked Mushroom sprite. +

+-TMW Development Team +

+
+

2013-09-03

First, a technical announcement. During a future @@ -37,7 +51,7 @@ wish her only the very best for her future. She contributed beyond words and her leaving will leave a spot we will have to work hard to fill. Wushin and tux9th took over as Lead Content Developers -and give their best to bring quality content to you +and give their best to bring quality content to you, like Jenalya did.

-TMW Development Team diff --git a/world/map/news.txt b/world/map/news.txt index 6d27caef..ffebb24d 100644 --- a/world/map/news.txt +++ b/world/map/news.txt @@ -1,3 +1,16 @@ +##32013-09-14##0 + +We have a small content release today. +A witch in Tulimshar has found some daunting spells +for mages who are experienced in Astral Magic. +Talk to her about that. Maybe she is willing to teach you. + +With this update, we have added some minor bugfixes for the +Waric script, Bluepar sprite and Wicked Mushroom sprite. + +-##2TMW Development Team##0 + + ##32013-09-03##0 ##8First, a technical announcement. During a future @@ -34,7 +47,7 @@ wish her only the very best for her future. She contributed beyond words and her leaving will leave a spot we will have to work hard to fill. Wushin and tux9th took over as Lead Content Developers -and give their best to bring quality content to you +and give their best to bring quality content to you, like Jenalya did. -##2TMW Development Team##0 -- cgit v1.2.3-70-g09d2