Example #1
0
        public void Main()
        {
            NWPlayer player = _.GetLastUsedBy();

            if (!player.IsPlayer)
            {
                return;
            }

            NWPlaceable placeable = _.OBJECT_SELF;
            int         keyItemID = placeable.GetLocalInt("KEY_ITEM_ID");

            if (keyItemID <= 0)
            {
                return;
            }

            if (KeyItemService.PlayerHasKeyItem(player, keyItemID))
            {
                player.SendMessage("You already have this key item.");
                return;
            }

            KeyItemService.GivePlayerKeyItem(player, keyItemID);

            string visibilityGUID = placeable.GetLocalString("VISIBILITY_OBJECT_ID");

            if (!string.IsNullOrWhiteSpace(visibilityGUID))
            {
                ObjectVisibilityService.AdjustVisibility(player, placeable, false);
            }
        }
Example #2
0
        public override void Initialize()
        {
            NWObject   door       = NWGameObject.OBJECT_SELF;
            NWPlayer   player     = GetPC();
            List <int> keyItemIDs = new List <int>();

            int count     = 1;
            int keyItemID = door.GetLocalInt("REQUIRED_KEY_ITEM_ID_" + count);

            while (keyItemID > 0)
            {
                keyItemIDs.Add(keyItemID);

                count++;
                keyItemID = door.GetLocalInt("REQUIRED_KEY_ITEM_ID_" + count);
            }

            bool   hasKeyItems  = KeyItemService.PlayerHasAllKeyItems(player, keyItemIDs.ToArray());
            string doorDialogue = door.GetLocalString("DOOR_DIALOGUE");

            if (!string.IsNullOrWhiteSpace(doorDialogue))
            {
                SetPageHeader("MainPage", doorDialogue);
            }

            if (hasKeyItems)
            {
                SetResponseText("MainPage", 1, "Open Door");
            }
            else
            {
                SetResponseVisible("MainPage", 1, false);
            }
        }
Example #3
0
        public static bool Check(int index, int type)
        {
            using (new Profiler(nameof(KeyItemCheck)))
            {
                NWPlayer player    = _.GetPCSpeaker();
                NWObject talkingTo = _.OBJECT_SELF;

                int        count = 1;
                List <int> requiredKeyItemIDs = new List <int>();

                int keyItemID = talkingTo.GetLocalInt($"KEY_ITEM_{index}_REQ_{count}");

                while (keyItemID > 0)
                {
                    requiredKeyItemIDs.Add(keyItemID);

                    count++;
                    keyItemID = talkingTo.GetLocalInt($"KEY_ITEM_{index}_REQ_{count}");
                }

                // Type 1 = ALL
                // Anything else = ANY
                return(type == 1 ?
                       KeyItemService.PlayerHasAllKeyItems(player, requiredKeyItemIDs.ToArray()) :
                       KeyItemService.PlayerHasAnyKeyItem(player, requiredKeyItemIDs.ToArray()));
            }
        }
Example #4
0
        public TheMandalorianLeader()
        {
            CreateQuest(18, "The Mandalorian Leader", "the_manda_leader")
            .AddPrerequisiteQuest(17)

            .AddObjectiveKillTarget(1, NPCGroupType.Viscara_MandalorianLeader, 1)
            .AddObjectiveTalkToNPC(2)

            .EnableRewardSelection()
            .AddRewardGold(350)
            .AddRewardFame(3, 40)
            .AddRewardItem("rifle_tran", 1)
            .AddRewardItem("blaster_tran", 1)
            .AddRewardItem("xp_tome_1", 1)
            .AddRewardItem("bst_sword_tran", 1)
            .AddRewardItem("twinblade_tran", 1)
            .AddRewardItem("kukri_tran", 1)
            .AddRewardItem("halberd_tran", 1)
            .AddRewardItem("greataxe_tran", 1)

            .OnAccepted((player, questSource) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 7);
            });
        }
Example #5
0
 public void Run(NWPlayer player, NWObject questSource, int questID, string[] args)
 {
     foreach (var keyItem in args)
     {
         int keyItemID = Convert.ToInt32(keyItem);
         KeyItemService.RemovePlayerKeyItem(player, keyItemID);
     }
 }
Example #6
0
        public QuestKeyItemReward(int keyItemID, bool isSelectable)
        {
            _keyItemID   = keyItemID;
            IsSelectable = isSelectable;

            var keyItem = KeyItemService.GetKeyItemByID(_keyItemID);

            MenuName = "Key Item: " + keyItem.Name;
        }
        private void LoadKeyItemsOptions(int categoryID)
        {
            List <PCKeyItem> items = KeyItemService.GetPlayerKeyItemsByCategory(GetPC(), categoryID).ToList();

            ClearPageResponses("KeyItemsListPage");
            foreach (PCKeyItem item in items)
            {
                var keyItem = KeyItemService.GetKeyItemByID(item.KeyItemID);
                AddResponseToPage("KeyItemsListPage", keyItem.Name, true, item.KeyItemID);
            }
            ChangePage("KeyItemsListPage");
        }
        private string BuildKeyItemHeader(int responseID)
        {
            DialogResponse response  = GetResponseByID(GetCurrentPageName(), responseID);
            int            keyItemID = (int)response.CustomData;
            KeyItem        entity    = KeyItemService.GetKeyItemByID(keyItemID);

            string header = ColorTokenService.Green("Key Item: ") + entity.Name + "\n\n";

            header += ColorTokenService.Green("Description: ") + entity.Description + "\n";

            return(header);
        }
Example #9
0
        public VanquishTheVellenRaiders()
        {
            CreateQuest(29, "Vanquish the Vellen Raiders", "vanquish_vellen")
            .AddPrerequisiteQuest(28)

            .AddObjectiveKillTarget(1, NPCGroupType.Viscara_VellenFleshleader, 1)
            .AddObjectiveTalkToNPC(2)

            .AddRewardGold(750)
            .AddRewardFame(4, 40)
            .AddRewardItem("xp_tome_1", 1)

            .OnAccepted((player, o) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 20);
            });
        }
Example #10
0
        public SmuggleRoyMossPackage()
        {
            CreateQuest(23, "Smuggle Roy Moss's Package", "smuggle_roy_moss")

            .AddObjectiveTalkToNPC(1)

            .AddRewardFame(3, 25)

            .OnAccepted((player, o) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 18);
            })

            .OnCompleted((player, o) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 18);
            });
        }
Example #11
0
        public SelansRequest()
        {
            CreateQuest(2, "Selan's Request", "selan_request")

            .AddObjectiveCollectKeyItem(1, 1)
            .AddObjectiveCollectKeyItem(1, 2)
            .AddObjectiveCollectKeyItem(1, 3)

            .AddRewardGold(500)
            .AddRewardFame(2, 15)
            .AddRewardKeyItem(5)

            .OnCompleted((player, questGiver) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 1);
                KeyItemService.RemovePlayerKeyItem(player, 2);
                KeyItemService.RemovePlayerKeyItem(player, 3);
            });
        }
        public CZ220SuppliesArmorsmith()
        {
            CreateQuest(3, "CZ-220 Supplies - Armorsmith", "cz220_armorsmith")

            .AddObjectiveCollectItem(1, "padding_fiber", 1, true)
            .AddObjectiveTalkToNPC(2)

            .AddRewardGold(50)
            .AddRewardKeyItem(3)
            .AddRewardFame(2, 5)

            .OnAccepted((player, questGiver) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 4);
            })
            .OnCompleted((player, questGiver) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 4);
            });
        }
Example #13
0
        public CZ220SuppliesEngineering()
        {
            CreateQuest(4, "CZ-220 Supplies - Engineering", "cz220_engineering")

            .AddObjectiveCollectItem(1, "scanner_r_b", 1, true)
            .AddObjectiveTalkToNPC(2)

            .AddRewardGold(50)
            .AddRewardKeyItem(3)
            .AddRewardFame(2, 5)

            .OnAccepted((player, questGiver) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 4);
            })
            .OnCompleted((player, questGiver) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 4);
            });
        }
Example #14
0
        public CZ220SuppliesScavenging()
        {
            CreateQuest(6, "CZ-220 Supplies - Scavenging", "cz220_scavenging")

            .AddObjectiveCollectItem(1, "scrap_metal", 10, false)
            .AddObjectiveTalkToNPC(2)

            .AddRewardGold(50)
            .AddRewardKeyItem(3)
            .AddRewardFame(2, 5)

            .OnAccepted((player, questGiver) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 4);
            })
            .OnCompleted((player, questGiver) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 4);
            });
        }
        public CZ220SuppliesWeaponsmith()
        {
            CreateQuest(7, "CZ-220 Supplies - Weaponsmith", "cz220_weaponsmith")

            .AddObjectiveCollectItem(1, "club_b", 1, true)
            .AddObjectiveTalkToNPC(2)

            .AddRewardGold(50)
            .AddRewardKeyItem(3)
            .AddRewardFame(2, 5)

            .OnAccepted((player, questGiver) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 4);
            })
            .OnCompleted((player, questGiver) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 4);
            });
        }
        public CZ220SuppliesFabrication()
        {
            CreateQuest(5, "CZ-220 Supplies - Fabrication", "cz220_fabrication")

            .AddObjectiveCollectItem(1, "power_core", 1, true)
            .AddObjectiveTalkToNPC(2)

            .AddRewardGold(50)
            .AddRewardKeyItem(3)
            .AddRewardFame(2, 5)

            .OnAccepted((player, questGiver) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 4);
            })
            .OnCompleted((player, questGiver) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 4);
            });
        }
        public SlicingTheMandalorianFacility()
        {
            CreateQuest(22, "Slicing the Mandalorian Facility", "mandalorian_slicing")
            .AddPrerequisiteQuest(20)
            .AddPrerequisiteQuest(21)

            .AddObjectiveUseObject(1)

            .AddRewardGold(550)
            .AddRewardFame(3, 25)
            .AddRewardItem("xp_tome_1", 1)

            .OnAccepted((player, questSource) =>
            {
                string[] visibilityObjectIDs =
                {
                    "C1888BC5BBBC45F28B40293D7C6E76EC",
                    "C3F31641D4F34D6AAEA51295CBE9014D",
                    "6FABDF6EDF4F47A4A9684E6224700A78",
                    "5B56B9EF160D4B078E28C775723BA95F",
                    "141D32140AA847B18AD5896C82223C8D",
                    "B0839B0F597140EEAEC567C22FFD1A86"
                };

                foreach (var objID in visibilityObjectIDs)
                {
                    var obj = AppCache.VisibilityObjects.Single(x => x.Key == objID).Value;
                    ObjectVisibilityService.AdjustVisibility(player, obj, true);
                }
            })

            .OnCompleted((player, questSource) =>
            {
                KeyItemService.RemovePlayerKeyItem(player, 12);
                KeyItemService.RemovePlayerKeyItem(player, 13);
                KeyItemService.RemovePlayerKeyItem(player, 14);
                KeyItemService.RemovePlayerKeyItem(player, 15);
                KeyItemService.RemovePlayerKeyItem(player, 16);
                KeyItemService.RemovePlayerKeyItem(player, 17);
            });
        }
Example #18
0
        private void DoSlice()
        {
            NWPlaceable self      = Object.OBJECT_SELF;
            int         keyItemID = self.GetLocalInt("KEY_ITEM_ID");

            if (keyItemID <= 0)
            {
                GetPC().SendMessage("ERROR: Improperly configured key item. ID is not set. Notify an admin.");
                return;
            }

            KeyItemService.GivePlayerKeyItem(GetPC(), keyItemID);

            string visibilityObjectID = self.GetLocalString("VISIBILITY_OBJECT_ID");

            if (!string.IsNullOrWhiteSpace(visibilityObjectID))
            {
                ObjectVisibilityService.AdjustVisibility(GetPC(), self, false);
            }

            EndConversation();
        }
Example #19
0
        public TheColicoidExperiment()
        {
            CreateQuest(11, "The Colicoid Experiment", "the_colicoid_experiment")
            .AddPrerequisiteQuest(8)
            .AddPrerequisiteQuest(10)

            .AddObjectiveKillTarget(1, NPCGroupType.CZ220_ColicoidExperiment, 1)
            .AddObjectiveTalkToNPC(2)

            .EnableRewardSelection()
            .AddRewardGold(250)
            .AddRewardFame(2, 20)
            .AddRewardItem("colicoid_cap_y", 1)
            .AddRewardItem("colicoid_cap_b", 1)
            .AddRewardItem("colicoid_cap_r", 1)
            .AddRewardItem("colicoid_cap_g", 1)

            .OnAccepted((player, questGiver) =>
            {
                KeyItemService.GivePlayerKeyItem(player, 6);
            });
        }
Example #20
0
 public bool MeetsPrerequisite(NWPlayer player)
 {
     return(KeyItemService.PlayerHasKeyItem(player, _keyItemID));
 }
Example #21
0
 public bool IsComplete(NWPlayer player, int questID)
 {
     return(KeyItemService.PlayerHasKeyItem(player, KeyItemID));
 }
Example #22
0
        public void Main()
        {
            NWPlayer oPC = GetLastUsedBy();

            if (GetIsInCombat(oPC) == true)
            {
                SendMessageToPC(oPC, "You are in combat.");
                return;
            }

            NWPlaceable self                  = OBJECT_SELF;
            string      destination           = self.GetLocalString("DESTINATION");
            var         visualEffectID        = self.GetLocalInt("VISUAL_EFFECT") > 0 ? (VisualEffect)self.GetLocalInt("VISUAL_EFFECT") : VisualEffect.Invalid;
            int         keyItemID             = self.GetLocalInt("KEY_ITEM_ID");
            string      missingKeyItemMessage = self.GetLocalString("MISSING_KEY_ITEM_MESSAGE");
            bool        isInstance            = GetLocalBool(self, "INSTANCE") == true;
            bool        personalInstanceOnly  = GetLocalBool(self, "PERSONAL_INSTANCE_ONLY");

            if (keyItemID > 0)
            {
                if (!KeyItemService.PlayerHasKeyItem(oPC, keyItemID))
                {
                    if (!string.IsNullOrWhiteSpace(missingKeyItemMessage))
                    {
                        oPC.SendMessage(missingKeyItemMessage);
                    }
                    else
                    {
                        oPC.SendMessage("You don't have the necessary key item to access that object.");
                    }

                    return;
                }
            }

            if (visualEffectID > 0)
            {
                ApplyEffectToObject(DurationType.Instant, EffectVisualEffect(visualEffectID), oPC.Object);
            }

            NWObject   entranceWP = GetWaypointByTag(destination);
            NWLocation location   = GetLocation(entranceWP);

            if (!entranceWP.IsValid)
            {
                oPC.SendMessage("Cannot locate entrance waypoint. Inform an admin.");
                return;
            }

            if (isInstance)
            {
                var members = oPC.PartyMembers.Where(x => x.Area.GetLocalString("ORIGINAL_RESREF") == entranceWP.Area.Resref).ToList();

                // A party member is in an instance of this type already.
                // Prompt player to select which instance to enter.
                if (members.Count >= 1 && !personalInstanceOnly)
                {
                    oPC.SetLocalString("INSTANCE_RESREF", entranceWP.Area.Resref);
                    oPC.SetLocalString("INSTANCE_DESTINATION_TAG", destination);
                    DialogService.StartConversation(oPC, self, "InstanceSelection");
                    return;
                }

                // Otherwise no instance exists yet or this instance only allows one player. Make a new one for this player.
                NWArea instance = AreaService.CreateAreaInstance(oPC, entranceWP.Area.Resref, entranceWP.Area.Name, destination);
                location = instance.GetLocalLocation("INSTANCE_ENTRANCE");
                PlayerService.SaveLocation(oPC);
            }

            oPC.AssignCommand(() =>
            {
                ActionJumpToLocation(location);
            });
        }
Example #23
0
 public void GiveReward(NWPlayer player)
 {
     KeyItemService.GivePlayerKeyItem(player, _keyItemID);
 }