summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoromatt <m.vuoso@laposte.net>2016-08-25 10:03:41 +0200
committertoams <toams85@gmail.com>2019-04-14 21:25:49 +0200
commitb90583120f0fc96043c6fa2f839902f68eb74d75 (patch)
tree76a7e573efc605930386b2a0272b177048523944
parent69dd9c2d6dac4bcf3a396a8c375c1098a86dd541 (diff)
downloadserverdata-b90583120f0fc96043c6fa2f839902f68eb74d75.tar.gz
serverdata-b90583120f0fc96043c6fa2f839902f68eb74d75.tar.bz2
serverdata-b90583120f0fc96043c6fa2f839902f68eb74d75.tar.xz
serverdata-b90583120f0fc96043c6fa2f839902f68eb74d75.zip
instance for training room, training npc, new quest id
change warp system for avoid spam creation instance add dummy for skill wave to mob_db, and stupid change in script add few basic control, info about training, access by menu change bow wave, and add dummy for bow wave change collison wall to water wall
-rw-r--r--db/quest_db.conf3
-rw-r--r--db/re/mob_db.conf122
-rw-r--r--npc/001-2-34/doors.txt42
-rw-r--r--npc/001-2-36/_import.txt2
-rw-r--r--npc/001-2-36/hector.txt410
-rw-r--r--npc/001-2-36/training_room_npc.txt165
-rw-r--r--npc/commands/debug-quest.txt3
-rw-r--r--npc/functions/quest-debug/034-ArtisQuests_TrainingLegion.txt30
-rw-r--r--npc/scripts.conf2
9 files changed, 595 insertions, 184 deletions
diff --git a/db/quest_db.conf b/db/quest_db.conf
index 2eef4e8d..081305f7 100644
--- a/db/quest_db.conf
+++ b/db/quest_db.conf
@@ -162,6 +162,9 @@ quest_db: (
Name: "Artis_Legion_Progress"
},
{
+ Id: 34 Name: "ArtisQuests_TrainingLegion"
+ },
+{
Id: 36
Name: "HurnscaldQuests_Hinnak"
},
diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf
index 9b70f689..e949c09a 100644
--- a/db/re/mob_db.conf
+++ b/db/re/mob_db.conf
@@ -2974,4 +2974,126 @@ mob_db: (
Moss: 400
}
},
+{
+ Id: 1106
+ SpriteName: "Dummy2"
+ Name: "Dummy"
+ Lv: 1
+ Hp: 8
+ Sp: 0
+ Exp: 1
+ JExp: 0
+ AttackRange: 1
+ Attack: [1, 1]
+ Def: 1
+ Mdef: 1
+ Stats: {
+ Str: 1
+ Agi: 1
+ Vit: 1
+ Int: 1
+ Dex: 1
+ Luk: 1
+ }
+ ViewRange: 1
+ ChaseRange: 12
+ Size: 1
+ Race: 3
+ Element: (2, 1)
+ MoveSpeed: 1000
+ AttackDelay: 800
+ AttackMotion: 672
+ DamageMotion: 480
+ MvpExp: 0
+ SkillAttacks: {
+ SM_BASH: 10000
+ }
+ WeaponAttacks: {
+ NoWeapon: 0
+ Daggers: 0
+ 1HSwords: 0
+ 2HSwords: 0
+ 1HSpears: 0
+ 2HSpears: 0
+ 1HAxes: 0
+ 2HAxes: 0
+ Maces: 0
+ 2HMaces: 0
+ Staves: 0
+ Bows: 0
+ Knuckles: 0
+ Instruments: 0
+ Whips: 0
+ Books: 0
+ Katars: 0
+ Revolvers: 0
+ Rifles: 0
+ GatlingGuns: 0
+ Shotguns: 0
+ GrenadeLaunchers: 0
+ FuumaShurikens: 0
+ }
+},
+{
+ Id: 1107
+ SpriteName: "Dummy3"
+ Name: "Dummy"
+ Lv: 1
+ Hp: 3
+ Sp: 0
+ Exp: 1
+ JExp: 0
+ AttackRange: 1
+ Attack: [1, 1]
+ Def: 100
+ Mdef: 1
+ Stats: {
+ Str: 1
+ Agi: 1
+ Vit: 1
+ Int: 1
+ Dex: 1
+ Luk: 1
+ }
+ ViewRange: 1
+ ChaseRange: 12
+ Size: 1
+ Race: 3
+ Element: (2, 1)
+ Mode: {
+ Plant: true
+ }
+ MoveSpeed: 1000
+ AttackDelay: 800
+ AttackMotion: 672
+ DamageMotion: 480
+ MvpExp: 0
+ SkillAttacks: {
+ SM_BASH: 0
+ }
+ WeaponAttacks: {
+ NoWeapon: 0
+ Daggers: 0
+ 1HSwords: 0
+ 2HSwords: 0
+ 1HSpears: 0
+ 2HSpears: 0
+ 1HAxes: 0
+ 2HAxes: 0
+ Maces: 0
+ 2HMaces: 0
+ Staves: 0
+ Bows: 10000
+ Knuckles: 0
+ Instruments: 0
+ Whips: 0
+ Katars: 0
+ Revolvers: 0
+ Rifles: 0
+ GatlingGuns: 0
+ Shotguns: 0
+ GrenadeLaunchers: 0
+ FuumaShurikens: 0
+ }
+},
)
diff --git a/npc/001-2-34/doors.txt b/npc/001-2-34/doors.txt
index ca513945..e479b4ec 100644
--- a/npc/001-2-34/doors.txt
+++ b/npc/001-2-34/doors.txt
@@ -7,23 +7,33 @@
001-2-34,23,29,0 script ToTrainingRoom#001-2-34 NPC_HIDDEN,0,0,{
OnTouch:
- if ((getmapusers($@MAP_NAME$) == 0) && ($@FightingIsActive > 0))
- {
- set $@FightingIsActive, 0;
- killmonsterall "001-2-36";
- }
- if (mobcount("001-2-36","all") > 0 && $@FightingIsActive > 0)
- {
- narrator
- l("You hear some sound behind the door."),
- l("Somebody is probably training, better wait for him to finish.");
- }
- else
- {
- warp "001-2-36", 36, 30;
+ function doorBlock {
+ .@trainingMap$ = "001-2-36"; // map to create
+ .@PCName$ = strcharinfo(PC_NAME); // name of player character used for set the name of instance
+
+ if (has_instance("001-2-36") == .@PCName$+"@map1")
+ // check if an training instance attached to the player, then warp into or create another
+ {
+ warp(.@PCName$+"@map1", 36, 30);
+ end;
+ }
+
+ // same process of /test/npc1.txt
+ .@instTraining = instance_create("training@instance", getcharid(CHAR_ID_ACCOUNT), IOT_CHAR);
+ .@instanceMapName$ = instance_attachmap(.@trainingMap$, .@instTraining, 0, .@PCName$+"@map1");
+
+ instance_set_timeout(1000000, 1000000, .@instTraining);
+ instance_init(.@instTraining);
+
+ // respawn the player in front of door of training room if the player relog inside the instance
+ // do not effect the savepoint
+ setmapflagnosave(.@instanceMapName$, .map$, 24, 29);
+
+ warp(.@instanceMapName$, 36, 30);
+ end;
}
- closeclientdialog;
- close;
+ doorBlock;
+ end;
}
diff --git a/npc/001-2-36/_import.txt b/npc/001-2-36/_import.txt
index 222e5a7f..8c48ace2 100644
--- a/npc/001-2-36/_import.txt
+++ b/npc/001-2-36/_import.txt
@@ -2,4 +2,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-2-36/_warps.txt",
"npc/001-2-36/mapflags.txt",
-"npc/001-2-36/training_room_npc.txt",
+"npc/001-2-36/hector.txt",
diff --git a/npc/001-2-36/hector.txt b/npc/001-2-36/hector.txt
new file mode 100644
index 00000000..c82d1eef
--- /dev/null
+++ b/npc/001-2-36/hector.txt
@@ -0,0 +1,410 @@
+// TrainingRoom
+// Author:
+// jak1
+// omatt
+// Story:
+// Reid
+// Teru
+// Spellchecking & Dialogs:
+// Reid
+// Variable:
+// 'fightingActive
+// 0 = no wave, end of timer or end of waves
+// 1 = waves activated, then fence block escape to player
+// ArtisQuests_TrainingLegion
+// 0 not started at all
+// 1 start first waves got sword
+// 2 got bow
+// 3 second wave
+// 4 got skill
+// 5 third wave
+// 6 end of training
+// .mobID is related to quest state
+// 1 1021 dummy for sword wave
+// 3 1107 dummy for bow wave
+// 5 1106 dummy for skill wave
+//
+// TODO adding rand messages like "try hit it harder..." for wave's
+// TODO in first, second, and third training, input some tips about related weapon given.
+// TODO in basiControl few tips are not enough related to recent change of game
+
+
+001-2-36,32,36,0 script Hector#001-2-36 NPC_LUCAS,{
+
+ 'currentWaveLevel = 1;
+ 'instanceID = instance_id();
+ 'npcName$ = strnpcinfo(NPC_NAME_UNIQUE); // required for call the label in the npc of this one instance
+
+ function basicControl {
+
+ // same text of Ian npc of tmw
+ // feel free to adapt text
+ // a case for skill need to be add
+ do
+ {
+ clear;
+ speech(3,
+ l("Would you like to know about something?"));
+
+ select(
+ l("Fighting."),
+ l("Items."),
+ l("Monsters."),
+ l("Commands."),
+ l("Attributes."),
+ l("Quick Keys."),
+ l("Laws."),
+ l("I know everything!"));
+
+ switch (@menu)
+ {
+ case 1:
+ speech(7,
+ l("People live in this world by living off of monsters."),
+ l("You can fight monsters and even players by hitting the [CTRL] key, or left mouse click."),
+ l("If you get tired of pressing the key too much, you can also type [SHIFT]+[CTRL]."),
+ l("This will make your character attack continuously for the time you are inactive."));
+ break;
+
+ case 2:
+ speech(7,
+ l("There are three types of items."),
+ l("They can be Consumables, Equipment or Miscellaneous."),
+ l("Consumable items such as Potions, can be used only once. After use, they will disappear from your inventory."),
+ l("Equipment items like Armors, Weapons, Accessories can be equipped for fashionable purposes or to raise your status."),
+ l("Miscellaneous items such as maggot slime, are used in creating other items, or just to trade and sell."));
+ break;
+
+ case 3:
+ speech(7,
+ l("In every world, there are beasts. Monsters can be found almost anywhere!~"),
+ l("To fight them, please read [Fighting] if you do not know how."),
+ l("There a several types of monsters, Aggressive, Neutral, and Assistants."),
+ l("Aggressive monsters know that they are always in danger so therefore they always keep their guard up, making them attack anybody in sight."),
+ l("Neutral monsters tend to just lounge around until attacked. They will leave everything alone unless they are threatened."),
+ l("Assistants are monsters who help each other. You should always check how many are around you before attacking a single one!"));
+ break;
+
+ case 4:
+ speech(7,
+ l("/clear clears the text box."),
+ l("/help displays the client commands (ones starting with a /) in the chat box."),
+ l("/whisper [name] allows you to message someone privately."),
+ l("/who displays the current number of online users."),
+ l("/where displays the current map's name."));
+ break;
+
+ case 5:
+ // tips about stats is about tmw, then pre renowal, then not good for here who are renewal
+ // but since i don't play of renewal, i can't change them for better fit .__.
+ speech(7,
+ l("People vary greatly by how much strength, agility, dexterity, intelligence, vitality, and luck they have."),
+ l("Strength helps you carry items, and it also allows you to hit harder – but it is not too helpful if you focus on missile weapons."),
+ l("More agility allows you to attack faster, and to dodge attacks more easily."),
+ l("Your dexterity determines how likely you are to hit a monster, and how effective you are with missile weapons."),
+ l("Vitality determines how resistant to injuries you are, and how much damage you can take before you die."),
+ l("Intelligence is useful for alchemy and magic, but there are few opportunities for either at the moment."),
+ l("Luck determines many small things, including the likelihood of both recieving and dealing critical hits."),
+ l("I recommend that you practice your dexterity, since some of the more dangerous monsters are very hard to hit otherwise."),
+ l("Don't bother trying to work on your luck, and your intelligence is probably not something anyone cares about either."));
+ break;
+
+ case 6:
+ speech(7,
+ l("There are many key combinations, press F1 for a short list of them!"));
+ break;
+
+ case 7:
+ narrator(7,
+ l("There is a paper with some rules written on it."),
+ l("1. ##BDo not bot##b, this means you are not allowed to perform any AFK (away from keyboard) activity, apart from standing idle."),
+ l("2. ##BDo not use offensive/rude language##b in the chats or in your character(s) name(s)."),
+ l("3. ##BDo not spam/flood other players.##b This includes chat spam and spam by trade requests."),
+ l("4. ##BSpeak only English in public areas.##b You can speak whatever language you want through whispers or whenever everyone in the area can speak said language."),
+ l("5. ##BDo not beg others##b for money, items or favours of any kind. If you want to ask for something, do it politely and only once. Try not to annoy other players."),
+ l("6. ##BFollow the [@@http://wiki.evolonline.org/rules/esc|ESC@@]##b (Evol Social Convention)."),
+ l("7. ##BDo not multibox.##b You are not allowed to engage in combat while controlling more than one character at a time."));
+ break;
+
+ default: return 1;
+ }
+ } while (1);
+ }
+
+ function waveEnded {
+
+ npctalk3("Con. u finished it...");
+
+ delcells("training_fence"+'npcName$);
+ 'fightingActive = 0;
+ 'mobDead = 0;
+
+ setq(.quest_training, getq(.quest_training) + 1);
+
+ end;
+ }
+
+ function mobSpawn {
+
+ if ('fightingActive == 1)
+ {
+ if ('currentWaveLevel == .maxWaves)
+ {
+ npctalk3("Last Wave!");
+ }
+ else
+ {
+ npctalk3("Wave " + 'currentWaveLevel + "!");
+ }
+
+ areamonster('map$, .mobCoordinate[0], .mobCoordinate[1], .mobCoordinate[2], .mobCoordinate[3],
+ /* map x1 y1 x2 y2 */
+ .mobName$, .mobID['trainingQuest], 'currentWaveLevel, 'npcName$+"::OnTrainingMobDead");
+ /* mob display mob id amount label */
+ }
+ else
+ {
+ 'currentWaveLevel = 0;
+ }
+
+ end;
+ }
+
+ function mobKilled {
+
+ 'mobDead = 0; // reset the count
+
+ if ('currentWaveLevel == .maxWaves )
+ {
+ waveEnded;
+ }
+
+ // here check if the player don't use the sword of training and are in wave of sword training
+ if (getequipid(EQI_HAND_R) != .sword && getq(.quest_training) == 1)
+ {
+ npctalk3("Hey ! I gave you a sword no ? Equip it now !");
+ sleep2(3000);
+ npctalk3("Well...");
+ sleep2(1000);
+ }
+
+ // check if wave of skill, and if in first wave, then after kill the first dummy, the player receive explain and mana potion
+ if (getq(.quest_training) == 5 && 'currentWaveLevel == 1)
+ {
+ setcamnpc(strnpcinfo(NPC_NAME_UNIQUE)); // focus the npc when he talk to the player
+ speech(4,
+ l("This skill consume some spell points."),
+ l("And for regain spell point you have to wait."),
+ l("The speed of regen depend of your intelligence (i don't suspect you are stupid...)."),
+ l("If you sit, you can regain your spell points more faster."),
+ l("Or you can drink a mana potion for restore some spell point when you need."),
+ l("And, i'm a good guy, then i give you few of mine for free, take !"));
+ closedialog;
+ getitem(.mana_potion, 1);
+ sleep2(3000);
+ }
+
+ 'currentWaveLevel++; // next wave after killed dummy
+
+ mobSpawn;
+ }
+
+ function waitFight {
+
+ speech(6,
+ l("Then? Are you ready for some training? Don't be shy and attack my dummys!"));
+
+ askyesno;
+ if (@menu == 2)
+ {
+ closedialog;
+ end;
+ }
+ }
+
+ function firstTraining {
+ speech(6,
+ l("You seem weak, lemme training you !"),
+ l("But, first you have to see what weapon you prefer..."),
+ l("Let's give a try, i have 3 type of weapon for you, after you can make a proper choice."));
+ setq(.quest_training, 1);
+
+ inventoryplace(.sword, 1);
+ getitem(.sword, 1);
+
+ speech(10,
+ l("A beautiful sword, no?"),
+ l("It's time to use this sword, i call a dummy for you, @@ waves of dummy, kill them and we see what weapon we can try after.", .maxWaves),
+ l("Ready ?"));
+
+ askyesno;
+ if (@menu == 2)
+ {
+ closedialog;
+ end;
+ }
+ }
+
+ function secondTraining {
+
+ speech(6,
+ l("Ok, now you have mastered the sword, let's try to bow !"));
+ setq(.quest_training, 3);
+
+ inventoryplace(.bow, 2);
+ getitem(.bow, 1);
+ getitem(.arrow, 300);
+
+ speech(10,
+ l("Not bad bow, no?"),
+ l("You know the system of my training, now. Prepare yourself for the fight against dummy!"),
+ l("Fight with a bow is not a close fight, use your range for kill them."),
+ l("Ready ?"));
+
+ askyesno;
+ if (@menu == 2)
+ {
+ closedialog;
+ end;
+ }
+ }
+
+ function thirdTraining {
+
+ speech(6,
+ l("Then, you know how to use a sword and a bow."),
+ l("the last weapon is a skill!"));
+ setq(.quest_training, 5);
+
+ // give SM_BASH skill
+ skill(.skill_name, 1, 0);
+
+ speech(10,
+ l("@@ waves of dummys, you know how that end.", .maxWaves),
+ l("Ready ?"));
+
+ askyesno;
+ if (@menu == 2)
+ {
+ closedialog;
+ end;
+ }
+ }
+
+ function trainingStart {
+
+ switch (getq(.quest_training))
+ {
+ case 0: firstTraining; break;
+ case 1: waitFight; break;
+ case 2: secondTraining; break;
+ case 3: waitFight; break;
+ case 4: thirdTraining; break;
+ case 5: waitFight; break;
+ default:
+ speech(6, l("It's all for my job, i learned all i know. Now try to use your brain and be a wonderful member of Legion"));
+ closedialog;
+ end;
+ }
+
+ closedialog;
+
+ getmapxy('map$, @x, @y, 0);
+ if (@x < 24 || @x > 32 || @y < 33 || @y > 43)
+ {
+ speech(1, l("Please enter the combat zone on the left."));
+
+ closedialog;
+ end;
+ }
+
+ // the fence for block the player to leave the training, here mask 3 for water
+ setcells('map$, 33, 35, 33, 38, 3, "training_fence"+'npcName$);
+
+ npctalk3(l("Let's begin"));
+
+ 'trainingQuest = getq(.quest_training); // required for spawn the good one mob
+ 'fightingActive = 1;
+
+ mobSpawn;
+ }
+
+ function firstCheck {
+
+ // here different messages, when the player are in fight and talk to npc, message is realted to the state fo quest
+ if ('fightingActive)
+ {
+ switch (getq(.quest_training))
+ {
+ case 1: npctalk3("Attack with your sword, and kill them!"); end;
+ case 3: npctalk3("Use your bow, and kill them!"); end;
+ case 5: npctalk3("You have a skill, use it for kill them! If your spell point are too low for use the skill, use the mana potion what i gave you."); end;
+ default: break;
+ }
+ }
+
+ // start menu
+ speech(5,
+ l(.mockingGreeting$[rand(getarraysize(.mockingGreeting$))]),
+ l("Do you want some training ? To be honnest, it seem that you need..."));
+
+ do
+ {
+ selectd(
+ l("Yeah, I like to want training me!"),
+ l("Hmm... But what is exactly this training ?"),
+ l("I'm a bit lost in this game, can you first give me few tips ?"));
+
+ switch (@menu)
+ {
+ case 1: trainingStart; break;
+ case 2:
+ // here text who explain what is the training of this npc
+ speech(15,
+ l("In this training, my goal is to learn you how to be a good player, who can use a sword, a bow, and a skill."),
+ l("For this, i give you weapons of you need."),
+ l("Then i call few dummy, use what i learned you on them."));
+ break;
+ case 3: basicControl; break;
+
+ default: closedialog; end;
+ }
+
+ } while (1);
+ }
+
+ // Here called function who start dialog
+ firstCheck;
+
+ closedialog;
+ end;
+
+
+OnTrainingMobDead:
+ // the amount of mob spawned depend of currentwave
+ if (++'mobDead == 'currentWaveLevel)
+ {
+ mobKilled;
+ }
+
+ end;
+
+OnInit:
+ .arrow = TrainingArrow;
+ .bow = WoodenBow;
+ .sword = WoodenSword;
+ .mana_potion = Croconut; // here need to change the potion
+ .skill_name = SM_BASH;
+ .quest_training = ArtisQuests_TrainingLegion;
+ .quest_debug = .quest_training;
+ .maxWaves = 3;
+ .mobName$ = "Dummy";
+
+ // here input some sentences "hello noob" like, the npc pick randomly a sentence
+ setarray .mockingGreeting$[0], "Hy noob !", "Hey somethingwholooklikeawarrior...", "Sup' chibi.";
+ setarray .mobID[0], 0, 1021, 0, 1107, 0, 1106; // mob id, in array because change for different state of quest
+ setarray .mobCoordinate[0], 24, 34, 31, 41; // this represent the square of "ring" training
+
+ end;
+
+}
diff --git a/npc/001-2-36/training_room_npc.txt b/npc/001-2-36/training_room_npc.txt
deleted file mode 100644
index 022b5d2e..00000000
--- a/npc/001-2-36/training_room_npc.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-// TrainingRoom
-//
-// Author:
-// jak1
-//
-// Story:
-// Akko Teru
-// Reid
-//
-// Spellchecking & Dialogs
-// Reid
-
-// ~~ VARS ~~
-// $@FightingIsActive
-// 0 = can Warp in Room (non active fight)
-// 1 = can't Warp in Room (active fight)
-
-//TODO adding rand messages like "try hit it harder..." for wave's
-
-
-001-2-36,32,36,0 script FightNPCName NPC_LUCAS,{
-
- set $@NPCNAME$, "FightNPCName";
- set $@NPCNEXTNAME$, "Samantha";
- set $@MOB_ID, 1021;
- set $@MOB_NAME$, "Dummy";
- set $@CURRENT_WAVE_LEVEL, 1;
- set $@MAX_WAVES, 10;
-
- //Room and Mobspawn Coordinates
- // TL BR
- setarray $@MOB_SPAWN_COORDINATES, 24, 34, 31, 41;
- setarray $@MAP_NAME$, "001-2-36";
-
- set @roomPlayers, getmapusers($@MAP_NAME$);
-
- if(@roomPlayers > 1)
- goto NotAlone;
-
- if ($@FightingIsActive == 1)
- {
- npctalk3 "You are not done now!";
- end;
- }
-
- //call in Warp door if (1 = block)
- set $@FightingIsActive, 1;
-
- if (!debug || !is_dev())
- goto start;
-
- //can be removed later!
- menu
- "get debug vars", debug_it,
- "reset char var", resetVar,
- "start training", -;
-
-
-start:
- if (FIGHT_TRAINING >= 1)
- goto JobIsDone;
-
- getmapxy(.@map$, .@x, .@y, 0);
- if (.@x < 24 || .@x > 32 || .@y < 33 || .@y > 43)
- {
- speech S_FIRST_BLANK_LINE, l("Please enter the combat zone on the left.");
- close;
- }
-
- setcells "001-2-36", 33, 35, 33, 38, 1, "fence";
- initnpctimer;
- setnpctimer 0;
- startnpctimer;
-
- npctalk3 l("Let's begin");
- end;
-
-
-//cancel all actions, the Player needs to be alone in this Room
-NotAlone:
- npctalk3 "You dont feel so great with audience!";
- set $@FightingIsActive, 0;
- end;
-
-
-//If a Spawned Mob gets Killed
-OnTrainingMobDead:
- if ($@CURRENT_WAVE_LEVEL == $@MAX_WAVES )
- goto FinishedTraining;
-
- set $@CURRENT_WAVE_LEVEL, $@CURRENT_WAVE_LEVEL + 1;
- setnpctimer 0;
- startnpctimer;
- end;
-
-
-SpawnMonster:
- if ( $@FightingIsActive == 1 )
- {
- if ($@CURRENT_WAVE_LEVEL == $@MAX_WAVES)
- {
- npctalk "Last Wave!", $@NPCNAME$;
- }
- else
- {
- npctalk "Wave " + $@CURRENT_WAVE_LEVEL + "!", $@NPCNAME$;
- }
-
- areamonster "001-2-36", $@MOB_SPAWN_COORDINATES[0], $@MOB_SPAWN_COORDINATES[1], $@MOB_SPAWN_COORDINATES[2], $@MOB_SPAWN_COORDINATES[3], $@MOB_NAME$, $@MOB_ID, 1, $@NPCNAME$ + "::OnTrainingMobDead";
- stopnpctimer;
- setnpctimer 0;
- }
- else
- {
- set $@CURRENT_WAVE_LEVEL, 0;
- }
- stopnpctimer;
- setnpctimer 0;
- end;
-
-
-//15 Secounds Waiting (Regeneration for fightRoom)
-OnTimer5000:
- goto SpawnMonster;
-
-
-FinishedTraining:
- //... TODO
-
- npctalk "Con. u finished it...", $@NPCNAME$;
- stopnpctimer;
- setnpctimer 0;
- set $@CURRENT_WAVE_LEVEL, 0;
- delcells "fence";
- if (FIGHT_TRAINING >= 1)
- end;
- set FIGHT_TRAINING, 1;
- end;
-
-JobIsDone:
- mes "Well done, you should talk to \"" + $@NPCNEXTNAME$ + "\"...";
- close;
-
-
-// ----- DEBUG START ! -----
-
-debug_it:
- mes "DEBUG INFO";
- mes "- CharVariable:FIGHT_TRAINING "+ FIGHT_TRAINING;
- mes "- maxWaves "+ $@MAX_WAVES;
- mes "- currentWave "+ $@CURRENT_WAVE_LEVEL;
- mes "- npcName "+ $@NPCNAME$;
- mes "- mobName "+ $@MOB_NAME$;
- mes "- mobID "+ $@MOB_ID;
- close;
-
-resetVar:
- set FIGHT_TRAINING , 0;
-// ----- DEBUG END ! -----
-
-
-OnInit:
- end;
-
-}
diff --git a/npc/commands/debug-quest.txt b/npc/commands/debug-quest.txt
index 1c3e0b5c..52854883 100644
--- a/npc/commands/debug-quest.txt
+++ b/npc/commands/debug-quest.txt
@@ -80,7 +80,8 @@ function script GlobalQuestDebug {
"Fexil", ArtisQuests_Fexil,
"Lloyd", ArtisQuests_Lloyd,
l("Mona's dad"), ArtisQuests_MonaDad,
- l("Artis legion progress"), Artis_Legion_Progress;
+ l("Artis legion progress"), Artis_Legion_Progress,
+ l("Training legion"), ArtisQuests_TrainingLegion;
switch (@menuret)
{
diff --git a/npc/functions/quest-debug/034-ArtisQuests_TrainingLegion.txt b/npc/functions/quest-debug/034-ArtisQuests_TrainingLegion.txt
new file mode 100644
index 00000000..cecd6725
--- /dev/null
+++ b/npc/functions/quest-debug/034-ArtisQuests_TrainingLegion.txt
@@ -0,0 +1,30 @@
+// Training Legion quest
+// Authors:
+// omatt
+
+function script QuestDebug34 {
+ do
+ {
+ clear;
+ setnpcdialogtitle l("Quest debug");
+ mes "ArtisQuests_TrainingLegion";
+ mes "---";
+ mes l("Quest state: @@", getq(ArtisQuests_TrainingLegion));
+ next;
+
+ GenericQuestDebug ArtisQuests_TrainingLegion,
+ l("Does not have the quest"), 0,
+ l("Start first waves got sword"), 1,
+ l("Got bow"), 2,
+ l("Second wave"), 3,
+ l("Got skill"), 4,
+ l("Third wave"), 5,
+ l("End of training"), 6;
+
+ if (@menuret < 0)
+ {
+ return;
+ }
+
+ } while (1);
+}
diff --git a/npc/scripts.conf b/npc/scripts.conf
index a7f39836..e3b989f4 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -86,7 +86,7 @@
"npc/functions/quest-debug/031-General_Janus.txt",
"npc/functions/quest-debug/032-ArtisQuests_MonaDad.txt",
"npc/functions/quest-debug/033-Artis_Legion_Progress.txt",
-// 034: ???
+"npc/functions/quest-debug/034-ArtisQuests_TrainingLegion.txt",
// 035: ???
"npc/functions/quest-debug/036-HurnscaldQuests_Hinnak.txt",
"npc/functions/quest-debug/037-HurnscaldQuests_Soup.txt",