diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/003-0 | |
download | serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2 serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip |
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/003-0')
-rw-r--r-- | npc/003-0/_import.txt | 7 | ||||
-rw-r--r-- | npc/003-0/_mobs.txt | 4 | ||||
-rw-r--r-- | npc/003-0/_warps.txt | 3 | ||||
-rw-r--r-- | npc/003-0/mainquest.txt | 178 | ||||
-rw-r--r-- | npc/003-0/notes | 138 | ||||
-rw-r--r-- | npc/003-0/recepcionist.txt | 162 | ||||
-rw-r--r-- | npc/003-0/trickmaster.txt | 125 |
7 files changed, 617 insertions, 0 deletions
diff --git a/npc/003-0/_import.txt b/npc/003-0/_import.txt new file mode 100644 index 0000000..d7fe2f9 --- /dev/null +++ b/npc/003-0/_import.txt @@ -0,0 +1,7 @@ +// Map 003-0: Magic Academy +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/003-0/_mobs.txt", +"npc/003-0/_warps.txt", +"npc/003-0/mainquest.txt", +"npc/003-0/recepcionist.txt", +"npc/003-0/trickmaster.txt", diff --git a/npc/003-0/_mobs.txt b/npc/003-0/_mobs.txt new file mode 100644 index 0000000..23f6637 --- /dev/null +++ b/npc/003-0/_mobs.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 003-0: Magic Academy mobs +003-0,45,32,24,2 monster Piou 1002,3,60000,30000 +003-0,45,30,24,1 monster Croc 1006,3,60000,30000 diff --git a/npc/003-0/_warps.txt b/npc/003-0/_warps.txt new file mode 100644 index 0000000..0d4ddff --- /dev/null +++ b/npc/003-0/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 003-0: Magic Academy warps +003-0,48,52,0 warp #003-0_48_52 2,0,003-1,34,34 diff --git a/npc/003-0/mainquest.txt b/npc/003-0/mainquest.txt new file mode 100644 index 0000000..28f49a8 --- /dev/null +++ b/npc/003-0/mainquest.txt @@ -0,0 +1,178 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Main Quest + +003-0,49,35,0 script #MQ25Trigger NPC_HIDDEN,3,0,{ + end; + +OnTouch: + .@m$=getmap(); + .@n$=instance_npcname(.name$); + if (is_night()) + doevent instance_npcname(.name$)+"::OnBegin"; + else + addtimer 1000, instance_npcname(.name$)+"::OnCheck"; + end; + +// Checks if you are in designated ambush zone. If not, keep hidden +OnCheck: + .@m$=getmap(); + .@n$=instance_npcname(.name$); + if (!isin(.@m$, 44, 24, 54, 34)) + end; + // goto OnBegin; + +// Begin +OnBegin: + .@m$=getmap(); + .@n$=instance_npcname(.name$); + .PLAYER=getcharid(3); + + // Is assassin ambushing you or professor? + if (is_night()) { + .@x=any(46, 52); + .@y=34; + } else { + getmapxy(.@m$, .@x, .@y, 0); + .@y-=3; + if (.@y < 34) + .@y=34; + } + setcells .@m$, 47, 35, 51, 35, 3, "MQ2Wall"+getcharid(0); + if (isin(.@m$, 44, 24, 54, 34)) { + warp .@m$, 49, 33; + atcommand("@refresh"); + } + .ASSASSIN=monster(.@m$, .@x, .@y, l("Assassin"), Assassin, 1, .@n$+"::OnAssassinDefeat"); + unittalk(.ASSASSIN, l("Die now!!")); + // Nerf ATK, boost HP + /* + Hp: 4211 + Attack: [198, 214] + */ + setunitdata(.@REF, UDT_MAXHP, 4750); + setunitdata(.@REF, UDT_HP, 4750); + setunitdata(.@REF, UDT_ATKMIN, 150); + setunitdata(.@REF, UDT_ATKMAX, 180); + + // TODO: unitwalk + /* + // TODO: Energy Balls. Should they spawn at (21,31) and (69,31)? + // At this time they are utterly deadly. You could use a skill to + // disable them... Perhaps... A grenade? + dispbottom col(l("SCRIPT ERROR (%s/%s)", .@m$, .@n$), 1); + dispbottom l("An error happened: unitwalk failed"); + */ + // TODO: Assassinate + initnpctimer; + end; + +OnTimer15000: + .@n$=instance_npcname(.name$); + unittalk(.ASSASSIN, ("Heh... He gave me a ball, but...")); + end; + +OnTimer20000: + .@n$=instance_npcname(.name$); + unittalk(.ASSASSIN, ("I can do this alone!")); + end; + +OnTimer60000: + .@n$=instance_npcname(.name$); + unittalk(.ASSASSIN, ("Tsc...! I'll need reinforcements!")); + end; + +OnTimer65000: + .@n$=instance_npcname(.name$); + unittalk(.ASSASSIN, ("How was the summoning again...?!")); + end; + +OnTimer75000: + .@n$=instance_npcname(.name$); + unittalk(.ASSASSIN, ("Oh, that's right!")); + end; + +OnTimer82000: + .@n$=instance_npcname(.name$); + unittalk(.ASSASSIN, ("ENEEEEEEEEERGY BALLLLLLL!")); + getmapxy(.@m$, .@x, .@y, UNITTYPE_MOB, .ASSASSIN); + .@REF=monster(.@m$, .@x, .@y, "Energy Ball", EnergyBall, 1); + + // Nerf the monster, be careful, it has a powerful skill! + setunitdata(.@REF, UDT_AGI, 1); + setunitdata(.@REF, UDT_LUK, 1); + setunitdata(.@REF, UDT_DEF, 10); + setunitdata(.@REF, UDT_MDEF, 20); + setunitdata(.@REF, UDT_MAXHP, 1000); + setunitdata(.@REF, UDT_HP, 1000); + end; + +OnAssassinDefeat: + stopnpctimer; + .@m$=getmap(); + .@n$=instance_npcname(.name$); + delcells "MQ2Wall"+getcharid(0); + LUA_ASKED_TO_SAVE_PROFESSOR=false; + getexp 16, 5; // Extra bonus :> + + if (is_night()) { + unittalk(getnpcid(instance_npcname(.name$)), l("Thanks for the help, I guess...?")); + } else { + dispbottom l("A mission well done. I should report to lua now."); + } + // Extra extra EXTRA bonus + CsysNpcCraft(SmallKnife, IOPT_SPLASHDAMAGE, 1, 0,0, 0,0, VAR_MAXHPPERCENT, -5); + addtimer 100, instance_npcname(.name$)+"::OnAbort"; + specialeffect(FX_FANFARE, SELF, getcharid(3)); + end; + +OnAbort: + stopnpctimer; + end; + +OnInit: + disablenpc .name$; + end; + +OnInstanceInit: + if (is_night()) { + .@n$=instance_npcname("Professor#003-0"); + enablenpc .@n$; + } + .ASSASSIN=0; + .PLAYER=0; + end; +} + +003-0,49,24,4 script Professor#003-0 NPC_PLAYER,{ + npctalkonce l("I wonder if it'll take too long for the ship to arrive..."); + end; + +OnTouchNPC: + npctalk l("An error happened: professor_was_assasinated() error"); + npctalk ("SCRIPT ERROR (OnTouch Game Over)"); + end; + +OnInit: + .@ini=true; +OnInstanceInit: + if (.@ini) + .@npcId = getnpcid(.name$); + else + .@npcId = getnpcid(instance_npcname(.name$)); + + setunitdata(.@npcId, UDT_HEADTOP, GraduationCap); + setunitdata(.@npcId, UDT_HEADMIDDLE, GraduationRobe); // TODO: Bathrobe + setunitdata(.@npcId, UDT_HEADBOTTOM, Slippers); // Hey hey! + setunitdata(.@npcId, UDT_WEAPON, CottonGloves); + setunitdata(.@npcId, UDT_HAIRSTYLE, 2); + setunitdata(.@npcId, UDT_HAIRCOLOR, 4); + + .sex=G_MALE; + .distance=5; + disablenpc .name$; + end; +} + diff --git a/npc/003-0/notes b/npc/003-0/notes new file mode 100644 index 0000000..f5ce8d6 --- /dev/null +++ b/npc/003-0/notes @@ -0,0 +1,138 @@ +FFA - FREE FOR ALL + AL_DP (Divine Protection, +DEF vs undead/evil) (raised at Mana Stone) + +---- +AOE (DESTRUCTIVE MAGIC) + MG_NAPALMBEAT + MG_FIREBALL + WZ_FROSTNOVA (38%+5% freeze, 73%+7%/lv MATK) + +SINGLE TARGET (D.M.) + AL_HOLYLIGHT (standard holy magic attack - 125% of MATK) + MG_SOULSTRIKE (+5% MATK, +1 hit each 2 levels) + MG_COLDBOLT (ele) + MG_FIREBOLT (ele) + MG_LIGHTININGBOLT (ele) + WZ_EARTHSPIKE (ele / not a bolt for PF_DOUBLECASTING) + MG_FROSTDIVER (38%+3% freeze, +10% MATK) + + + +AOE (P.S.) + ASC_METEORASSAULT (area: self 2X2, 80%+40%/lv ATK, 10+5%/lv stun/blind/bleed) + AC_SHOWER (3x3 attack for BOWS) + +SINGLE TARGET (PHYSICAL SCIENCE) + SM_BASH (+30% ATK, HIT +5%, após lv 6: stun (5%/lv)) + MC_MAMMONITE (+50% atk/lv) + KN_AUTOCOUNTER (contra-ataque, TOP) + + AC_CHARGEARROW (Ranged, 150% DMG, 6 tiles knockback, NEED GWENDOLYN) + SN_SHARPSHOOTING (ULTIMATE ranged attack) + + + +SUPPORT SCIENCE / SCHOLARSHIP (self) + AC_OWL (raise 1 DEX per level) + SA_DRAGONOLOGY (PV: +4% ATK, +2% MATK, +1 INT and +4% resist against DRAGONS) + TMW2_SAGE (PV: grants up to 1.5 extra mana exp point/level) + MG_SRECOVERY (PV: small increase to SP Recovery while idle each 10 sec.) + SM_RECOVERY (PV: small increase to HP Recovery while idle each 10 sec.) + + SN_WINDWALK (raise walking speed +2%/lv and flee rate +1/2lv) + + CR_TRUST (PV: MaxHP +200/lv, Holy DEF +5%/lv) + AC_VULTURE (PV: raise range and cth with BOWS) + +SUPPORT SCIENCE / SCHOLARSHIP (MMO) + AL_HEAL (basic healing) + AL_INCAGI (raise agi in 3+1/lv) + HW_MAGICPOWER (aumenta poder da próxima skill em MATK 5%/lv) + SM_PROVOKE (provoca um monstro especifico - exceto BOSS) + **AL_ANGELUS (14x14, party, def +5%/lv) + TF_DETOXIFY (cancels poison. 40% MP.) + AC_CONCENTRATION (self: agi/dex 3+1%/lv, unhide enemies 3x3) + AB_HIGHNESSHEAL (REAL healing skill) + ALL_RESURRECTION (reviver, requer permitir target players mortos) + EVOL_MASS_PROVOKE (provoca mobs em área) + + PR_ASPERSIO (bestow holy element on weapon for 1m. Holy dmg to undead/evil.) + SA_FLAMELAUNCHER (bestow fire element on weapon for 2m, 70% cth) + SA_FROSTWEAPON (bestow water element on weapon for 2m, 70% cth) + SA_LIGHTNINGLOADER (bestow wind element on weapon for 2m, 70% cth) + SA_SEISMICWEAPON (bestow earth element on weapon for 2m, 70% cth) + + GC_DARKCROW (Max Lv 1: DMG +100%, Short Range DMG +30%) + + + +TRICKS SCIENCE + SA_FREECAST (move after casting) + TF_BACKSLIDING (pulo pra trás) + MG_FIREWALL (wall of fire: 50% dmg x3+1/lv hits, knockback 2 cells) + ALL_FULL_THROTTLE (Stat +20%, full heal, move speed x2 - w/ rebound, last resort) + GC_DARKILLUSION (tp pra cima do mob/player com um ataque, pode causar dano extra - 4%/lv) + NV_TRICKDEAD (se finge de morto) + SO_FIREWALK (deixa fogo aonde passa - 60% MATK) + + + + + + +UNUSED/SPECIAL + BA_PANGVOICE (confuse, EXTREME DESYNC) + GS_SNAKEEYE (→AC_VULTURE) + +THIEF/MERCHANT-POLICE + TF_STEAL + ALL_INCCARRY + TF_MISS / TF_DOUBLE ? + MC_DISCOUNT / MC_OVERCHARGE (FIXME) ? + TF_HIDING? + MC_PUSHCART? + MC_VENDING? + + + +BROKEN + PF_HPCONVERSION (10% HP vira MP (10%/lv)) + HP_MEDITATIO (PV: MP Regen +3%/lv, MSP +1%/lv, AL_HEAL +2%/lv stronger) + GS_MAGICALBULLET (adds MATK to your regular attack) Does'nt works? + CR_DEFENDER (less damage from ranged attacks, but lowers move & attack speed. Req. Shield) - max lv 4 plz. Last 3m? + +USEFUL COMMANDS + npcskill(<skill id>, <skill lvl>, <stat point>, <NPC level>) + npcskill(AL_HEAL, 10, 99, 60); + + unitskilluseid(<GID>, <skill id>, <skill lvl>{, <target id>}) + unitskillusepos(<GID>, <skill id>, <skill lvl>, <x>, <y>) + + *defpattern(<set number>, "<regular expression pattern>", "<event label>") + *activatepset(<set number>) + *deactivatepset(<set number>) + *deletepset(<set number>) + Regex commands (iilia) + + *statusup2(<stat>, <amount>) + Needs testing, said to be permanent but will it survive a status reset? + Actually, we could add an extra memory and re-cast this, if we control + usage correctly. + + *autobonus2(<bonus script>, <rate>, <duration>{, <flag>, {<other script>}}) + May cast a bonus when attacked :> + + SC_TENSIONRELAX + Tension relax allows the user to recover HP while overweight at 1x speed. + Also, looks like sitting _should_ allow you to regen even overweight, need + plugin check for possible overrides on this behavior. status_natural_heal + + SC_VITATA_500 + Apparently regens SP? Requires further studies. + + SC_NOEQUIPWEAPON [Evol] + Forces your opponent to fight without a weapon. + + + + diff --git a/npc/003-0/recepcionist.txt b/npc/003-0/recepcionist.txt new file mode 100644 index 0000000..90c4a42 --- /dev/null +++ b/npc/003-0/recepcionist.txt @@ -0,0 +1,162 @@ +// TMW2 Scripts. +// Author: +// Jesusalva +// Description: +// Magic School receptionist (TODO: Give S. Badge) + +003-0,61,44,4 script Receptionist#003-0 NPC_FEMALE,{ + mesn; + mesq l("Hello, and welcome to the Magic School of Tulimshar."); + next; + mesn; + mesq l("Actually I'm responsible of dispatching mages to the Magic Academy."); + next; + select + l("What is the Magic Academy?"), + l("I am a mage. How do I get to Academy?"), + l("What magic classes are there?"), + l("Erm... Good bye."); + mes ""; + switch (@menu) { + case 1: + goto L_Prologue; + case 2: + goto L_Academy; + case 3: + goto L_Classes; + } + closeclientdialog; + goodbye; + close; + +////////////// +/* Prologue */ +////////////// +L_Prologue: + mesn l("Magic Academy Tutorial"); + mesc l("The Magic Academy System is responsible for learning most skills ingame. For that, you need two things: Magic Skill Points and a reagent."); + next; + mesn l("Magic Academy Tutorial"); + mesc l("The reagent is always the same for the same class. If you do not have enough reagents but have an @@, it'll be used to continue.", getitemlink(ScholarshipBadge)); + next; + mesn l("Magic Academy Tutorial"); + mesc l("Magic Skill Points can be obtained in three ways: By touching a Mana Stone, by signing up in a Special Class (if you have enough magic power) and by having high amounts of Job Level."); + next; + mesn l("Magic Academy Tutorial"); + mesc l("Upgrading a skill level can be done the same away and will always cost a single Magic Skill Point. Job Level points are obtained only after Lv @@, and is a single point each @@ levels.", 15+12, 12); + next; + if (!MGQUEST) { + inventoryplace ScholarshipBadge, 1; + mesn; + mesq l("That being said, I'll give you an @@, which allows you to learn a skill even if you can't pay for it.", getitemlink(ScholarshipBadge)); + next; + } + mesn; + mesq l("Please note unless you have Magic Powers, obtained from the Mana Seed, all you will be able to learn are small tricks, so please make a wise choice."); + if (!MGQUEST) { + MGQUEST=true; + getitem ScholarshipBadge, 1; + } + tutmes l("Magic skills allows for a more advanced gameplay, but they are meant for level 30 onward."); + tutmes l("If you follow %s's quest, you will eventually reach the requirements for here.", b("Lua")); + close; + + +////////////// +/* Academy */ +////////////// +L_Academy: + if (!MAGIC_LVL) { + mesn; + mesq l("Oh please. Even if you know a trick or two, you don't have real magic."); + next; + mesn; + mesq l("You need to touch a Mana Stone to get magic. Certainly the only Mana Stone on Tulimshar is highly protected by the Council, so no chances here."); + next; + mesn; + mesq l("Well, the biggest mana stones mine was in %s, but I'm afraid it has already depleted... Besides, it is very dangerous.", b("Halinarzo")); + } else { + mesn; + mesq l("Oh, just walk on the dock, and you'll be warped there."); + next; + mesn; + mesq l("I mean, a ship should come to pick you up, but the arch-wizards said they were too lazy to take care of those small details. So you'll be warped."); + } + close; + + +////////////// +/* Classes */ +////////////// +L_Classes: + mesn; + mesq l("We have four classes, but you can make a mix between them."); + next; + mesc ".:: "+l("Physical Science")+" ::.", 3; + mes l("They use magic to boost their bodies, allowing them to do very, VERY powerful physical attacks."); + mes l("They also don't need much intelligence or magic equipment."); + mes ""; + mes l("Physical Science Institute is on the %s area of the campus.", b(l("west"))); + next; + mesc ".:: "+l("Wizardry")+" ::.", 3; + mes l("They use mana to create magic attacks and blast their foes away."); + mes l("They rely entirely in intelligence and magic equipment."); + mes ""; + mes l("Wizardry Institute is on the %s area of the campus.", b(l("north"))); + next; + mesc ".:: "+l("Scholarship Science")+" ::.", 3; + mes l("Training to be sages, their knowledge is unparalleled. They're masters of boosting skills."); + mes l("Most of their skills are stat-independent, but not all of them."); + mes ""; + mes l("Scholarship Institute is on the %s area of the campus.", b(l("north"))); + next; + mesc ".:: "+l("Tricks")+" ::.", 3; + mes l("They cheat! They make silly tricks which look like magic."); + mes ""; + mes l("The trickster can be found right here."); + close; + + +/// Core code +OnTimer1000: + domovestep; + +OnInit: +OnInstanceInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, FancyHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, SorcererRobe); + //setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes); + //setunitdata(.@npcId, UDT_WEAPON, JeansShorts); + setunitdata(.@npcId, UDT_HAIRSTYLE, any(8,11,20)); + setunitdata(.@npcId, UDT_HAIRCOLOR, 5); + + // Small movement + initpath "move", 61, 44, + "dir", UP, 0, + "wait", 7, 0, + "move", 62, 46, + "dir", DOWN, 0, + "wait", 7, 0, + "move", 63, 44, + "dir", UP, 0, + "wait", 7, 0, + "move", 61, 44; + initialmove; + initnpctimer; + + .sex=G_FEMALE; + .distance=5; + end; +} + + +003-0,48,24,0 script #MagicAcademy NPC_HIDDEN,1,0,{ + end; + +OnTouch: + if (MAGIC_LVL && $HURNS_LIBDATE) + warp "027-1", any(89,90), 155; + end; +} + diff --git a/npc/003-0/trickmaster.txt b/npc/003-0/trickmaster.txt new file mode 100644 index 0000000..1488587 --- /dev/null +++ b/npc/003-0/trickmaster.txt @@ -0,0 +1,125 @@ +// TMW2 Script +// Author: +// Jesusalva +// Description: +// Trickmaster of Tricksters Class + +003-0,35,42,0 script Trickmaster NPC_SITTED_NINJA,{ + function basicMagic; + function standardMagic; + function advancedMagic; + mes l(".:: Trickster Class ::."); + mesc l("Specialized in miscellaneous skills."); + next; + mesn; + mesc l("You have @@ magic skill points available.", sk_points()); + select + l("Basic Tricks"), + l("Standard Tricks"), + l("Advanced Tricks"); + mes ""; + .@lv=@menu; + do + { + // Display appropriate menu + if (.@lv == 1) + basicMagic(); + else if (.@lv == 2) + standardMagic(); + else if (.@lv == 3) + advancedMagic(); + + // Handle result + mes ""; + if (@menuret) { + if (!learn_magic(@menuret)) { + mesc l("You do not meet all requisites for this skill."), 1; + next; + } + } else { + closeclientdialog; + } + + } while (@menuret); + close; + +L_NoMagic: + next; + mesn; + mesq l("You do not have enough magic power for these classes."); + next; + if ($FIRESOFSTEAM < 9) { + mesn; + mesq l("Besides the Magic Council, Andrei Sakar have his own Mana Stone, but I doubt he would train the likes of you, or share his Mana Stone."); + next; + } + mesn; + mesq l("Perhaps, in the city, someone knows rumors about Mana Stones and can teach you. Other than that, you're on your own."); + close; + +function basicMagic { + mes l(".:: Mana Bomb ::."); + mesc l("Converts all your mana in damage. Damages all enemies in same tile."); + mes ""; + mes l(".:: Backsliding ::."); + mesc l("Instantly jumps 5 tiles backwards."); + mes ""; + mes l(".:: Nature Wall ::."); + mesc l("Create a natural wall under the cursor, to delay your enemies."); + mes ""; + mes l(".:: Archers Eye ::."); + mesc l("Increase bow range and accuracy."); + mes ""; + mes l(".:: First Aid ::."); + mesc l("Recover some HP."); + mes ""; + menuint + l("Mana Bomb"), TMW2_MANABOMB, + l("Backsliding"), TF_BACKSLIDING, + l("Nature Wall"), MG_FIREWALL, + l("Archers Eye"), AC_VULTURE, + l("First Aid"), TMW2_FIRSTAID, + l("Cancel"), 0; + return; +} + +function standardMagic { + if (!MAGIC_LVL) goto L_NoMagic; + mes l(".:: Free Cast ::."); + mesc l("Allows to attack right after casting."); + mes ""; + mes l(".:: Full Throttle ::."); + mesc l("An emergency skill which temporarily raises all your stats."); + mes ""; + mes l(".:: Sudden Attack ::."); + mesc l("Instantly jumps to target and delivers an attack."); + mes ""; + mes l(".:: Trick Dead ::."); + mesc l("Plop dead in the ground. Enemies won't attack you this way."); + mes ""; + menuint + l("Free Cast"), SA_FREECAST, + l("Full Throttle"), ALL_FULL_THROTTLE, + l("Sudden Attack"), GC_DARKILLUSION, + l("Trick Dead"), NV_TRICKDEAD, + l("Cancel"), 0; + return; +} + +function advancedMagic { + if (MAGIC_LVL < 2) goto L_NoMagic; + mes l(".:: There are no skills ::."); + mesc l("You can bug Jesusalva to extend the Battlefield Control skills."); + mes ""; + menuint + l("Cancel"), 0; + return; +} + +OnInit: + .sex = G_FEMALE; + .distance = 5; + end; + +} + |