protected override async Task Talk() { // Unofficial Msg("My hero! How can I ever repay you for this... How about a reward?", Button("Some gold maybe?", "@gold"), Button("An item!", "@item")); var reward = await Select(); if (!HasKeyword("TirChonaill_Tutorial_Judging") && !HasKeyword("TirChonaill_Tutorial_Perceiving")) { if (reward == "@gold") { Msg("Some money? Of course, here you go."); GiveGold(1000); GiveKeyword("TirChonaill_Tutorial_Judging"); } else if (reward == "@item") { Msg("Please take this, may it bring you luck."); GiveItem(16009); GiveKeyword("TirChonaill_Tutorial_Perceiving"); } } GiveKeyword("Clear_Tutorial_Alby_Dungeon"); Msg("Thank you so much, now let's leave this horrible place...", Button("End Conversation")); await Select(); Close2(); var cutscene = new Cutscene("tuto_result", Player); cutscene.AddActor("me", Player); cutscene.AddActor("#lostresident", 1002); cutscene.Play(_ => WarpToRewardRoom()); }
public override void LoadEvents() { // "Altar" near Tin OnClientEvent(0x00B0007D0001009C, SignalType.Enter, (creature, eventData) => { // Only do this once. if (creature.Vars.Perm["TinCutscene"] != null) return; if (!creature.Quests.Has(1000001)) creature.Quests.Start(1000001); // Nao's Letter of Introduction var cutscene = new Cutscene("tuto_meet_tin", creature); cutscene.AddActor("me", creature); cutscene.AddActor("#tin", creature.Region.GetCreature("_tin")); cutscene.Play((scene) => { // Give first weapon if(creature.RightHand == null) creature.Inventory.Add(40005, Pocket.RightHand1); // Short Sword // Set as soon as the player got everything creature.Vars.Perm["TinCutscene"] = true; // Required to remove the fade effect. scene.Leader.Warp(125, 22930, 75423); }); }); }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(20201, 3); // Hellhound foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_HellHound", member); cutscene.AddActor("me", member); cutscene.AddActor("#hellhound", 20201); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(30802, 1); // Giant Golden Spiderling foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_tutorial_giantgoldenspiderkid", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giantgoldenspiderkid", 30802); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(10602, 3); // Giant Imp foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_imp", member); cutscene.AddActor("player0", member); cutscene.AddActor("#imp", 10601); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(130014, 1); // Small Golem foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_small_golem_Ciar", member); cutscene.AddActor("me", member); cutscene.AddActor("#small_golem2", 130014); cutscene.Play(); } }
public async Task <HookResult> TalkTrefor(NpcScript npc, params object[] args) { if (npc.QuestActive(this.Id, "talk_trefor")) { npc.FinishQuest(this.Id, "talk_trefor"); npc.Player.Skills.Give(SkillId.Smash, SkillRank.Novice); npc.Msg("Welcome, I am Trefor, the guard.<br/>Someone from the town went into Alby Dungeon a while ago, but hasn't returned yet.<br/>I wish I could go there myself, but I can't leave my post. I'd really appreciate it if you can go and look for in Alby Dungeon."); npc.Msg("Since the dungeon is a dangerous place to be in, I'll teach you a skill that will help you in an emergency situation.<br/>It's called the Smash skill. If you use it, you can knock down a monster with a single blow!<br/>It is also highly effective when you sneak up on a target and deliver the blow without warning."); npc.Msg("Against monsters that are using the Defense skill,<br/>Smash will be the only way to penetrate that skill and deliver a killer blow."); npc.Msg("However... looking at the way you're holding your sword, I'm not sure if you are up to the task.<br/>Let me test your skills first. Do you see those brown foxes wandering in front of me?<br/>They're quite a nuisance, praying on those roosters in town.<br/>I want you to go and hunt 5 Young Brown Foxes right now."); npc.Msg("Foxes use the Defense Skill a lot, and as I told you before, regular attacks do not work against defending targets.<br/>That's then the Smash skill comes in handy.<br/><br/>Watch how I do it, and try picking up the important parts so you can use it too.<br/>You don't need to overstrain yourself by going for the Brown Foxes. Young Brown Foxes will do just fine.", npc.Movie("skillbar_guide_us.wmv", 500, 300), npc.Button("Continue")); await npc.Select(); npc.Close2(); var scene = new Cutscene("tuto_smash", npc.Player); scene.AddActor("me", npc.Player); scene.AddActor("#trefor", npc.NPC); scene.AddActor("#brownfox", 50001); scene.Play(); return(HookResult.End); } else if (npc.QuestActive(this.Id, "talk_trefor2")) { npc.FinishQuest(this.Id, "talk_trefor2"); npc.Msg("Good, I see that you're getting the hang of it.<br/>Well, I was able to do that when I was 8, but whatever...<br/>It is now time for you to go and search for the missing Villager."); npc.Msg("Follow the road up and turn right and you'll find the Alby Dungeon.<br/>You can enter the dungeon by dropping this item on the altar.<br/>If you either lose it or fail to rescue her, come back to me so I can give you another one. Please be careful.", npc.Image("dungeonpass", 128, 128)); npc.GiveItem(63180, 1); return(HookResult.Break); } else if (npc.QuestActive(this.Id, "talk_trefor3")) { npc.FinishQuest(this.Id, "talk_trefor3"); npc.Msg("You did it! Good job.<br/>Good thing I asked for your help.<br/>For your great work, I will now teach you how to properly use the Smash skill.<br/>If you open your Skill window and press the 'LEARN' button, you will be able to use a more powerful Smash skill.<br/>I can always use some help here, so drop by often, okay?"); if (npc.Player.Skills.Is(SkillId.Smash, SkillRank.Novice)) { npc.Player.Skills.Train(SkillId.Smash, 1); } return(HookResult.Break); } return(HookResult.Continue); }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(380001, 3); // Rabbit foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_GiantSpider_kid", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giant_spider_kid", 380001); cutscene.AddActor("#red_spider_kid", 380001); cutscene.Play(); } }
public async Task<HookResult> TalkTrefor(NpcScript npc, params object[] args) { if(npc.QuestActive(this.Id, "talk_trefor")) { npc.FinishQuest(this.Id, "talk_trefor"); if(!npc.Player.Skills.Has(SkillId.Smash, SkillRank.Novice)) npc.Player.Skills.Give(SkillId.Smash, SkillRank.Novice); npc.Msg("Welcome, I am Trefor, the guard.<br/>Someone from the town went into Alby Dungeon a while ago, but hasn't returned yet.<br/>I wish I could go there myself, but I can't leave my post. I'd really appreciate it if you can go and look for in Alby Dungeon."); npc.Msg("Since the dungeon is a dangerous place to be in, I'll teach you a skill that will help you in an emergency situation.<br/>It's called the Smash skill. If you use it, you can knock down a monster with a single blow!<br/>It is also highly effective when you sneak up on a target and deliver the blow without warning."); npc.Msg("Against monsters that are using the Defense skill,<br/>Smash will be the only way to penetrate that skill and deliver a killer blow."); npc.Msg("However... looking at the way you're holding your sword, I'm not sure if you are up to the task.<br/>Let me test your skills first. Do you see those brown foxes wandering in front of me?<br/>They're quite a nuisance, praying on those roosters in town.<br/>I want you to go and hunt 5 Young Brown Foxes right now."); npc.Msg("Foxes use the Defense Skill a lot, and as I told you before, regular attacks do not work against defending targets.<br/>That's then the Smash skill comes in handy.<br/><br/>Watch how I do it, and try picking up the important parts so you can use it too.<br/>You don't need to overstrain yourself by going for the Brown Foxes. Young Brown Foxes will do just fine.", npc.Movie("skillbar_guide_us.wmv", 500, 300), npc.Button("Continue")); await npc.Select(); npc.Close2(); var scene = new Cutscene("tuto_smash", npc.Player); scene.AddActor("me", npc.Player); scene.AddActor("#trefor", npc.NPC); scene.AddActor("#brownfox", 50001); scene.Play(); return HookResult.End; } else if(npc.QuestActive(this.Id, "talk_trefor2")) { npc.FinishQuest(this.Id, "talk_trefor2"); npc.Msg("Good, I see that you're getting the hang of it.<br/>Well, I was able to do that when I was 8, but whatever...<br/>It is now time for you to go and search for the missing Villager."); npc.Msg("Follow the road up and turn right and you'll find the Alby Dungeon.<br/>You can enter the dungeon by dropping this item on the altar.<br/>If you either lose it or fail to rescue her, come back to me so I can give you another one. Please be careful.", npc.Image("dungeonpass", 128, 128)); npc.GiveItem(63180, 1); return HookResult.Break; } else if(npc.QuestActive(this.Id, "talk_trefor3")) { npc.FinishQuest(this.Id, "talk_trefor3"); npc.Msg("You did it! Good job.<br/>Good thing I asked for your help.<br/>For your great work, I will now teach you how to properly use the Smash skill.<br/>If you open your Skill window and press the 'LEARN' button, you will be able to use a more powerful Smash skill.<br/>I can always use some help here, so drop by often, okay?"); if(npc.Player.Skills.Is(SkillId.Smash, SkillRank.Novice)) npc.Player.Skills.Train(SkillId.Smash, 1); return HookResult.Break; } return HookResult.Continue; }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(30007, 1); // Giant Red Spider dungeon.AddBoss(30013, 6); // Dark Blue Spider foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_Albi_GiantSpider_DarkBlueSpider", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giant_spider", 30007); cutscene.AddActor("#darkblue_spider", 30013); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(170201, 5); // Werewolf dungeon.AddBoss(160101, 5); // Gray Gremlin foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_WereWolf", member); cutscene.AddActor("me", member); cutscene.AddActor("#werewolf", 170201); cutscene.AddActor("#gray_gremlin", 160101); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(130001, 1); // Golem dungeon.AddBoss(11003, 6); // Metal Skeleton foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_Metalskeleton_Golem", member); cutscene.AddActor("player0", member); cutscene.AddActor("#golem", 130001); cutscene.AddActor("#metal_skeleton", 11003); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(30022, 1); // Giant Spiderling dungeon.AddBoss(1002, 1); // Lost Resident foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_tutorial_giantspider_kid", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giant_spider_kid", 30022); cutscene.AddActor("#lostresident", 1002); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(130004, 1); // Small Golem dungeon.AddBoss(160102, 6); // Green Gremlin foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_small_golem", member); cutscene.AddActor("player0", member); cutscene.AddActor("#small_golem", 130004); cutscene.AddActor("#imp", 10601); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(30018, 1); // Giant Spiderling dungeon.AddBoss(30019, 3); // Red Spiderling foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_GiantSpider_kid", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giant_spider_kid", 30018); cutscene.AddActor("#red_spider_kid", 30019); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(30006, 1); // Giant Black Spider dungeon.AddBoss(30012, 6); // Burgundy Spider foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_giant_spiderB", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giant_black_spider", 30006); cutscene.AddActor("#darkred_spider", 30012); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(130002, 1); // Small Golem dungeon.AddBoss(11010, 6); // Metal Skeleton foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_MetalskeletonArmorA_Golem", member); cutscene.AddActor("player0", member); cutscene.AddActor("#golem", 130002); cutscene.AddActor("#metalskeleton_armora", 11010); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(30004, 1); // Giant Spider dungeon.AddBoss(30003, 6); // Red Spider foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_GiantSpider", member); cutscene.AddActor("player0", member); cutscene.AddActor("#giant_spider", 30004); cutscene.AddActor("#darkred_spider", 30003); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(130003, 1); // Small Golem dungeon.AddBoss(190001, 3); // Flying Sword foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_SmallGolem_FlyingSword", member); cutscene.AddActor("me", member); cutscene.AddActor("#small_golem", 130003); cutscene.AddActor("#flying_sword", 190001); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(130007, 1); // Golem dungeon.AddBoss(11003, 6); // Metal Skeleton foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_Metalskeleton_Golem3", member); cutscene.AddActor("player0", member); cutscene.AddActor("#golem3", 130007); cutscene.AddActor("#metal_skeleton", 11003); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(170107, 2); // Lycanthrope dungeon.AddBoss(110102, 5); // Gorgon foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_lycan", member); cutscene.AddActor("leader", member); cutscene.AddActor("player1", member); // TODO: Party cutscene.AddActor("#lycan", 170107); cutscene.AddActor("#gorgon", 110102); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(100302, 1); // Argus dungeon.AddBoss(100303, 1); // Argus dungeon.AddBoss(100304, 1); // Argus dungeon.AddBoss(170201, 6); // Werewolf foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_argos", member); cutscene.AddActor("player0", member); cutscene.AddActor("#argus", 100302); cutscene.Play(); } }
public override void OnBoss(Dungeon dungeon) { if (dungeon.CountPlayers() == 1) { dungeon.AddBoss(10302, 1); // Red Succubus } else { dungeon.AddBoss(170101, 1); // Lycanthrope dungeon.AddBoss(170102, 1); // Lycanthrope foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_Lycanthrope2", member); cutscene.AddActor("me", member); cutscene.AddActor("#lycan", 170101); cutscene.Play(); } } }
public override void OnBoss(Dungeon dungeon) { if (dungeon.CountPlayers() == 1) { dungeon.AddBoss(10301, 1); // Black Succubus } else { dungeon.AddBoss(10101, 1); // Goblin foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_GoldGoblin", member); cutscene.AddActor("me", member); cutscene.AddActor("#gold_goblin", 10104); cutscene.AddActor("#goblin_archer", 10103); cutscene.Play(); } } }
public override void LoadEvents() { // "Altar" near Tin OnClientEvent(0x00B0007D0001009C, SignalType.Enter, (creature, eventData) => { // Only do this once. if (creature.Keywords.Has("tin_tutorial_guide")) { return; } if (!creature.Quests.Has(202001)) { creature.Quests.Start(202001, false); // Nao's Letter of Introduction } // TODO: Cutscene db var cutscene = new Cutscene("tuto_meet_tin", creature); cutscene.AddActor("me", creature); cutscene.AddActor("#tin", creature.Region.GetCreature("_tin")); cutscene.Play((scene) => { // Give first weapon if (creature.RightHand == null) { //if(!eiry) // creature.Inventory.Add(40005, Pocket.RightHand1); // Short Sword //else { // Eiry Practice Short Sword creature.Inventory.AddWithUpdate(Item.CreateEgo(40524, EgoRace.EirySword, "Eiry"), Pocket.RightHand1); } } // Give as soon as the player got everything creature.Keywords.Give("tin_tutorial_guide"); // Required to remove the fade effect. scene.Leader.Warp(125, 22930, 75423); }); }); }
public override void LoadEvents() { // "Altar" near Tin OnClientEvent(0x00B0007D0001009C, SignalType.Enter, (creature, eventData) => { // Only do this once. if (creature.Keywords.Has("tin_tutorial_guide")) return; if (!creature.Quests.Has(202001)) creature.Quests.Start(202001, false); // Nao's Letter of Introduction // TODO: Cutscene db var cutscene = new Cutscene("tuto_meet_tin", creature); cutscene.AddActor("me", creature); cutscene.AddActor("#tin", creature.Region.GetCreature("_tin")); cutscene.Play((scene) => { // Give first weapon if(creature.RightHand == null) { //if(!eiry) // creature.Inventory.Add(40005, Pocket.RightHand1); // Short Sword //else { // Eiry Practice Short Sword creature.Inventory.AddWithUpdate(Item.CreateEgo(40524, EgoRace.EirySword, "Eiry"), Pocket.RightHand1); } } // Give as soon as the player got everything creature.Keywords.Give("tin_tutorial_guide"); // Required to remove the fade effect. scene.Leader.Warp(125, 22930, 75423); }); }); }
public override void OnBoss(Dungeon dungeon) { dungeon.AddBoss(100003, 1); // Ogre Warrior dungeon.AddBoss(100004, 1); // Ogre Warrior dungeon.AddBoss(100005, 1); // Ogre Warrior dungeon.AddBoss(100006, 1); // Ogre Warrior dungeon.AddBoss(100007, 1); // Ogre Warrior foreach (var member in dungeon.Party) { var cutscene = new Cutscene("bossroom_OgreBros", member); cutscene.AddActor("me", member); cutscene.AddActor("#ogrebros1", 100003); cutscene.AddActor("#ogrebros2", 100004); cutscene.AddActor("#ogrebros3", 100005); cutscene.AddActor("#ogrebros4", 100006); cutscene.AddActor("#ogrebros5", 100007); cutscene.AddActor("#goblin", 10101); cutscene.Play(); } }
public async Task <HookResult> TalkDuncan(NpcScript npc, params object[] args) { if (npc.QuestActive(this.Id, "talk_duncan")) { npc.FinishQuest(this.Id, "talk_duncan"); Send.Effect(npc.NPC, Effect.ScreenFlash, 3000, 0); // Remove Eiry var eiry = npc.Player.Inventory.Items.FirstOrDefault(item => item.EgoInfo.Race == EgoRace.EirySword); if (eiry != null) { npc.Player.Inventory.Remove(eiry); } // Give sword npc.GiveItem(40015); npc.Notice("Received Fluted Short Sword from Duncan."); npc.Msg("Welcome to Tir Chonaill."); npc.Msg("Oh, you are finally here, <username/>.<br/>I've heard a lot about you from the villagers.<br/>You've leveled up quite a lot."); npc.Msg("This may be a small town,<br/>but Tir Chonaill has long boasted a tradition<br/>of growing resolute and sturdy warriors<br/>that don't have to worry about the kingdom's control."); npc.Msg("You have now completed all our missions<br/>and have earned the right to join the rank of Tir Chonaill's warriors.<br/>Well done, and congratulations."); npc.Msg("Wherever you go, don't forget who you are and what you have become.<br/>Since you have become strong enough to survive alone,<br/>your ego guide must have already parted ways with you.<br/>There is no one to look after you now, so befriend as many people as you can."); npc.Msg("If you have anything else to ask, let me know."); await npc.Conversation(); npc.Close2(); var cutscene = new Cutscene("etc_event_ego_goodbye", npc.Player); cutscene.AddActor("me", npc.Player); cutscene.Play(); return(HookResult.Break); } return(HookResult.Continue); }
public async Task<HookResult> TalkDuncan(NpcScript npc, params object[] args) { if(npc.QuestActive(this.Id, "talk_duncan")) { npc.FinishQuest(this.Id, "talk_duncan"); Send.Effect(npc.NPC, Effect.ScreenFlash, 3000, 0); // Remove Eiry var eiry = npc.Player.Inventory.Items.FirstOrDefault(item => item.EgoInfo.Race == EgoRace.EirySword); if(eiry != null) npc.Player.Inventory.Remove(eiry); // Give sword npc.GiveItem(40015); npc.Notice("Received Fluted Short Sword from Duncan."); npc.Msg("Welcome to Tir Chonaill."); npc.Msg("Oh, you are finally here, <username/>.<br/>I've heard a lot about you from the villagers.<br/>You've leveled up quite a lot."); npc.Msg("This may be a small town,<br/>but Tir Chonaill has long boasted a tradition<br/>of growing resolute and sturdy warriors<br/>that don't have to worry about the kingdom's control."); npc.Msg("You have now completed all our missions<br/>and have earned the right to join the rank of Tir Chonaill's warriors.<br/>Well done, and congratulations."); npc.Msg("Wherever you go, don't forget who you are and what you have become.<br/>Since you have become strong enough to survive alone,<br/>your ego guide must have already parted ways with you.<br/>There is no one to look after you now, so befriend as many people as you can."); npc.Msg("If you have anything else to ask, let me know."); await npc.Conversation(); npc.Close2(); var cutscene = new Cutscene("etc_event_ego_goodbye", npc.Player); cutscene.AddActor("me", npc.Player); cutscene.Play(); return HookResult.Break; } return HookResult.Continue; }