summaryrefslogtreecommitdiff
path: root/npc/012-3-3/manatree.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/012-3-3/manatree.txt')
-rw-r--r--npc/012-3-3/manatree.txt82
1 files changed, 75 insertions, 7 deletions
diff --git a/npc/012-3-3/manatree.txt b/npc/012-3-3/manatree.txt
index 7f37ad30..eca75c8c 100644
--- a/npc/012-3-3/manatree.txt
+++ b/npc/012-3-3/manatree.txt
@@ -1,18 +1,86 @@
-// Evol scripts.
+// The Mana World scripts.
// Author:
// Micksha
+// Jesusalva
// Description:
// The Manatree.
// THIS IS A PLACEHOLDER!
-012-3-3,39,33,0 script Manatree#012-3-3 NPC_MANATREE,{
- speech
- l("Magic is all around."),
- l("You just must listen to it, and feel it deep inside."),
- l("Now go, search for the unknown.");
-
+012-3-3,39,33,0 script Mana Tree? NPC_MANATREE,{
+ function mtRebirth;
+ function mtConvert;
+ mesc l("Magic is all around.");
+ next;
+ mesc l("You just must listen to it, and feel it deep inside.");
+ next;
+ if (#ADD_LVL > 30) mtConvert();
+ if (BaseLevel >= 99) mtRebirth();
+ mesc l("Now go, search for the unknown.");
close;
+function mtRebirth {
+ /* TODO: When player reaches level cap he can do a quest (should be one that
+requires quite some time to fullfill and collect items etc.). It also is a quest
+that ends in his death (kind of a "last fight" situation where he goes into a
+monster investead area and fights until he dies). They then goes to afterlife and
+talk with a godlike figure and can choose either to stay death and get name
+engraved in eternal hall of heroes or be reborn with some benefits (can choose
+other races, has some boni or traits he can choose from and depending on how many
+monsters he killed before he died he gets some equippment, too, the more monster
+the better).
+ The quest itself might even happen at the afterworld.
+ */
+ mesc l("Do you want to rebirth?"), 1;
+ mesc l("(Base Level will go to 1 and exp bar will be zero-ed)");
+ mesc l("(Will be able to change race and chose a trait)");
+ mesc l("You'll keep %s your equipment, magic, quest progression, craft recipes, money, and other levels. Only the base level is reset.", b(l("ALL")));
+ next;
+ if (askyesno() == ASK_NO) return;
+ RebirthPrompt();
+ return;
+}
+
+function mtConvert {
+ mesc l("You have %s account conversion points to spend.", fnum(#ADD_LVL)), 1;
+ mesc l("Please select your focus");
+ .@focus = select("Strength:Agility:Vitality:Intelligence:Dexterity:Luck:Do not assign");
+ if (.@focus > 6) return;
+ mesc l("Please select your sub focus");
+ .@subfo = select("Strength:Agility:Vitality:Intelligence:Dexterity:Luck");
+ mesc l("Please select your main activity");
+ .@activ = select("Foraging, Mining, Fishing:Cooking, Brewing, Forging:Hunting");
+ mesc l("Please select your main magic element");
+ .@elem = select("Fire:Water:Nature:Harmony:Combat:Support");
+ // NEXT_(1) / 20 = one "step" is 5% of the level 1 req (roughly)
+ // One point is 30 convert exp, and applied to everything
+ .@pt = #ADD_LVL/30;
+ #ADD_LVL -= .@pt * 30;
+ // Basic levels
+ EXP_STR+=(.@focus == 1 ? 3:1) * (.@subfo == 1 ? 2:1) * .@pt * NEXT_Str(1) / 20;
+ EXP_AGI+=(.@focus == 2 ? 3:1) * (.@subfo == 2 ? 2:1) * .@pt * NEXT_Agi(1) / 20;
+ EXP_VIT+=(.@focus == 3 ? 3:1) * (.@subfo == 3 ? 2:1) * .@pt * NEXT_Vit(1) / 20;
+ EXP_INT+=(.@focus == 4 ? 3:1) * (.@subfo == 4 ? 2:1) * .@pt * NEXT_Int(1) / 20;
+ EXP_DEX+=(.@focus == 5 ? 3:1) * (.@subfo == 5 ? 2:1) * .@pt * NEXT_Dex(1) / 20;
+ EXP_LUK+=(.@focus == 6 ? 3:1) * (.@subfo == 6 ? 2:1) * .@pt * NEXT_Luk(1) / 20;
+ // Classes
+ EXP_FORA+=(.@activ == 1 ? 2:1) * .@pt * NEXT_Fora(1) / rand2(22,24);
+ EXP_MINE+=(.@activ == 1 ? 2:1) * .@pt * NEXT_Mine(1) / rand2(22,24);
+ EXP_FISH+=(.@activ == 1 ? 2:1) * .@pt * NEXT_Fish(1) / rand2(22,24);
+ EXP_COOK+=(.@activ == 2 ? 2:1) * .@pt * NEXT_Cook(1) / rand2(20,22);
+ EXP_FORG+=(.@activ == 2 ? 2:1) * .@pt * NEXT_Forg(1) / rand2(20,22);
+ EXP_HUNT+=(.@activ == 3 ? 2:1) * .@pt * NEXT_Hunt(1) / 20;
+ // Elements
+ EXP_MF+=(.@elem == 1 ? 3:1) * .@pt * NEXT_Mf(1) / rand2(24, 28);
+ EXP_MW+=(.@elem == 2 ? 3:1) * .@pt * NEXT_Mw(1) / rand2(24, 28);
+ EXP_MN+=(.@elem == 3 ? 3:1) * .@pt * NEXT_Mn(1) / rand2(24, 28);
+ EXP_MH+=(.@elem == 4 ? 3:1) * .@pt * NEXT_Mh(1) / rand2(24, 28);
+ EXP_MC+=(.@elem == 5 ? 3:1) * .@pt * NEXT_Mc(1) / rand2(24, 28);
+ EXP_MS+=(.@elem == 6 ? 3:1) * .@pt * NEXT_Ms(1) / rand2(24, 28);
+ // TODO: Handle level up
+ mes "";
+ return;
+}
+
OnInit:
.distance = 2;
end;