Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- spikeQuest1Init = function() {
- this = .Map();
- context1 = .tmp.stateQuest.QuestContext("spikeQuest1FindMeBook");
- context1.initialStateId = "idle";
- //methods and variables in quest context
- context1.say = function(mob, char, str, arg1, arg2) {
- char.act("%1$C1 говорит тебе '{G%2$s{x'", mob, mob.print(str, arg1, arg2));
- };
- context1.checkAnswer = function(self, char, txt) { //used in state2
- var data;
- data = .Map();
- data.spike = self;
- if (txt.match("да|yes|sure|ок")) {
- // state 2 -> state 3
- if (.tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "answer yes", data)) {
- return; }
- }
- if(txt.match("нет|no")) {
- // state 2 -> state 1
- if (.tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "answer no", data)) {
- return; }
- }
- // state 2 -> state 2
- if (.tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "invalid answer", data)) {
- return; }
- };
- var questMob;
- questMob = .get_mob_index(8000);
- //context1.questMob = .get_mob_index(8000);
- context1.book = .get_obj_index(8020);
- context1.room = .get_room_index(8002);
- context1.containers = .List().add(8001, 8002, 8012);
- context1.anotherBooks = .List().add(8003, 8013, 8014, 8015);
- //states and transitions
- state1_idle = context1.State("idle");
- //state 1 -> state 2
- state1_idle.Transition("listen spike", "taking quest", function (data) {
- data.questContext.say(data.spike, data.character, "Мне нужна %s", data.questContext.book.short_descr.ruscase(1), null);
- data.questContext.say(data.spike, data.character, "Принесешь ее?", null, null);
- });
- state2_taking_quest = context1.State("taking quest");
- //state 2 -> state 1
- state2_taking_quest.Transition("answer no", "idle", function (data) {
- data.questContext.say(data.spike, data.character, "Жаль.", null, null);
- });
- //state 2 -> state 2
- state2_taking_quest.Transition("invalid answer", "taking quest", function (data) {
- data.questContext.say(data.spike, data.character, "Да, или нет?", null, null);
- });
- //state 2 -> state 3
- state2_taking_quest.Transition("answer yes", "searching book", function (data) {
- data.questContext.say(data.spike, data.character, "Ура!", null, null);
- data.questContext.book.create().obj_to_obj(data.questContext.room.get_obj_vnum(data.questContext.containers.random()));
- });
- state3_searching_book = context1.State("searching book");
- //state 3 -> state 3
- state3_searching_book.Transition("wrong book", "searching book", function(data) {
- data.questContext.say(data.spike, data.character, "Мне нужна другая книга.", null, null);
- data.spike.interpret("give " + "'" + data.thisBook.name + "' '" + data.character.name + "'");
- });
- //state 3 -> state 4
- state3_searching_book.Transition("recieve book", "complete", function(data) {
- //"Спасибо, %C1.", data.character дает английское имя из-за ch.print()
- data.questContext.say(data.spike, data.character, "Спасибо тебе, %s.", data.character.russianName.ruscase(1), null);
- data.thisBook.extract();
- data.character.act("Квест выполнен.");
- });
- state4_complete = context1.State("complete");
- //state 4 -> state 1 TEST
- state4_complete.Transition("return", "idle", function(data) {
- data.questContext.say(data.spike, data.character, "Я готов повторить.", null, null);
- });
- //triggers
- //var SpikeP;
- //SpikeP = .tmp.stateQuest.getQuestContext("spikeQuest1FindMeBook").questMob;
- questMob.onListen = function(self, char, txt) { // state 1 idle
- var data;
- data = .Map();
- data.spike = self;
- // state 1 -> state 2
- if(.tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "listen spike", data)) {
- return true;
- }
- else return false;
- };
- questMob.postTell = function(self, char, txt) { //state 2 taking quest
- if (char != self) {
- .tmp.stateQuest.getQuestContext("spikeQuest1FindMeBook").checkAnswer(self, char, txt);
- }
- };
- questMob.postSpeech = function(self, char, txt) { //state 2 taking quest
- if (char != self) {
- .tmp.stateQuest.getQuestContext("spikeQuest1FindMeBook").checkAnswer(self, char, txt);
- }
- };
- questMob.postGive = function(self, char, obj) { //state 3 searching book
- var data, book, anotherBooks;
- data = .Map();
- data.spike = self;
- data.thisBook = obj;
- book = .tmp.stateQuest.getQuestContext("spikeQuest1FindMeBook").book;
- anotherBooks = .tmp.stateQuest.getQuestContext("spikeQuest1FindMeBook").anotherBooks;
- if (anotherBooks.has(obj.vnum)) {
- // state 3 -> state 3
- if (.tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "wrong book", data)) {
- return; }
- }
- if (obj.vnum == book.vnum) {
- // state 3 -> state 4
- if (.tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "recieve book", data)) {
- return; }
- }
- };
- questMob.onBribe = function(self, char, arg, amount) { //возврат в idle для теста
- var data;
- data = .Map();
- data.spike = self;
- if (arg == 1 || amount > 9) {
- .tmp.stateQuest.doTransition(char, "spikeQuest1FindMeBook", "return", data);
- }
- };
- .tmp.stateQuest.registerQuestContext(context1);
- return .tmp.stateQuest.visualize(context1);
- }
Add Comment
Please, Sign In to add comment