Example #1
0
        void OfferToPlayerWithQuestComplete(Item item)
        {
            // Quest successful
            ParentQuest.QuestSuccess = true;

            // Show quest complete message
            DaggerfallMessageBox messageBox = ParentQuest.ShowMessagePopup((int)QuestMachine.QuestMessages.QuestComplete);

            // If no item for reward then we are done
            if (item == null)
            {
                return;
            }

            // Release item so we can offer back to player
            // Sometimes a quest item is both carried by player then offered back to them
            // Example is Sx010 where "curse" is removed and player can keep item
            GameManager.Instance.PlayerEntity.ReleaseQuestItemForReoffer(ParentQuest.UID, item, true);

            // Create a dropped loot container window for player to loot their reward
            rewardLoot = GameObjectHelper.CreateDroppedLootContainer(GameManager.Instance.PlayerObject, DaggerfallUnity.NextUID);
            rewardLoot.ContainerImage = InventoryContainerImages.Merchant;
            rewardLoot.Items.AddItem(item.DaggerfallUnityItem);

            // Schedule loot window to open when player dismisses message
            messageBox.OnClose += QuestCompleteMessage_OnClose;
        }
Example #2
0
        void OfferToPlayerWithQuestComplete(Item item)
        {
            // Show quest complete message
            DaggerfallMessageBox messageBox = ParentQuest.ShowMessagePopup((int)QuestMachine.QuestMessages.QuestComplete);

            // If no item for reward then we are done
            if (item == null)
            {
                return;
            }

            // Create a dropped loot container window for player to loot their reward
            rewardLoot = GameObjectHelper.CreateDroppedLootContainer(GameManager.Instance.PlayerObject, DaggerfallUnity.NextUID);
            rewardLoot.ContainerImage = InventoryContainerImages.Merchant;
            rewardLoot.Items.AddItem(item.DaggerfallUnityItem);

            // Schedule loot window to open when player dismisses message
            messageBox.OnClose += QuestCompleteMessage_OnClose;
        }
Example #3
0
    private static void DropAllItems()
    {
        UnequipAll();

        GameObject player = GameManager.Instance.PlayerObject;
        List <DaggerfallUnityItem> dropList = new List <DaggerfallUnityItem>();

        for (int i = 0; i < playerEntity.Items.Count; i++)
        {
            DaggerfallUnityItem item = playerEntity.Items.GetItem(i);
            if (item.QuestItemSymbol != null || item.IsQuestItem || item.IsSummoned || item.TemplateIndex == 132 || item.TemplateIndex == 93 || item.TemplateIndex == 94)
            {
            }
            else
            {
                if (item.IsEquipped)
                {
                    item.currentCondition /= 2;
                }
                else
                {
                    dropList.Add(item);
                }
            }
        }

        if (dropList.Count >= 1)
        {
            DaggerfallLoot equipPile = GameObjectHelper.CreateDroppedLootContainer(player, DaggerfallUnity.NextUID);
            equipPile.customDrop  = true;
            equipPile.playerOwned = true;

            foreach (DaggerfallUnityItem item in dropList)
            {
                equipPile.Items.Transfer(item, playerEntity.Items);
            }
            DaggerfallUI.MessageBox("You tear off your clothes and armor.");
        }
    }
Example #4
0
        void Update()
        {
            if (GameManager.Instance.StateManager.CurrentState == StateManager.StateTypes.Game && Input.GetKeyDown(toggleKey))
            {
                ItemCollection inventory = GameManager.Instance.PlayerEntity.Items;

                if (GameManager.Instance.PlayerEntity.GoldPieces > 0)
                {
                    var loot = GameObjectHelper.CreateDroppedLootContainer(GameManager.Instance.PlayerObject, DaggerfallUnity.NextUID);
                    loot.ContainerImage = InventoryContainerImages.Ground;
                    loot.ContainerType  = LootContainerTypes.RandomTreasure;
                    loot.Items.AddItem(ItemBuilder.CreateGoldPieces(1));
                    GameManager.Instance.PlayerEntity.GoldPieces -= 1;

                    DaggerfallUI.AddHUDText("You dropped 1 gold piece!");
                }
                else
                {
                    DaggerfallUI.AddHUDText("You don't have any gold!");
                }
            }
        }
Example #5
0
    private static void DropAllItems()
    {
        GameObject player = GameManager.Instance.PlayerObject;

        dropCollection = new ItemCollection();
        ItemCollection keepItemsCollection = new ItemCollection();

        UnequipAll();

        dropCollection.AddItems(playerEntity.Items.CloneAll());

        for (int i = 0; i < dropCollection.Count; i++)
        {
            DaggerfallUnityItem item = dropCollection.GetItem(i);
            if (item.QuestItemSymbol != null || item.IsQuestItem || item.IsSummoned || item.TemplateIndex == 132 || item.TemplateIndex == 93 || item.TemplateIndex == 94)
            {
                if (item.IsEquipped)
                {
                    item.UnequipItem(playerEntity);
                }
                keepItemsCollection.AddItem(item);
                dropCollection.RemoveItem(item);
            }
        }
        DaggerfallLoot equipPile = GameObjectHelper.CreateDroppedLootContainer(player, DaggerfallUnity.NextUID);

        equipPile.customDrop  = true;
        equipPile.playerOwned = true;
        equipPile.Items.AddItems(dropCollection.CloneAll());
        playerEntity.Items.Clear();
        dropCollection.Clear();

        for (int i = 0; i < keepItemsCollection.Count; i++)
        {
            DaggerfallUnityItem item = keepItemsCollection.GetItem(i);
            playerEntity.Items.AddItem(item);
        }
        keepItemsCollection.Clear();
    }
        public void RestoreLootContainerData(LootContainerData_v1[] lootContainers)
        {
            if (lootContainers == null || lootContainers.Length == 0)
            {
                return;
            }

            for (int i = 0; i < lootContainers.Length; i++)
            {
                // Skip null containers
                if (lootContainers[i] == null)
                {
                    continue;
                }

                // Restore loot containers
                ulong key = lootContainers[i].loadID;
                if (SerializableLootContainers.ContainsKey(key))
                {
                    // Apply to known loot container that is part of scene build
                    SerializableLootContainers[key].RestoreSaveData(lootContainers[i]);
                }
                else
                {
                    // Add custom drop containers back to scene (e.g. dropped loot, slain foes)
                    if (lootContainers[i].customDrop)
                    {
                        DaggerfallLoot            customLootContainer       = GameObjectHelper.CreateDroppedLootContainer(GameManager.Instance.PlayerObject, key, lootContainers[i].textureArchive, lootContainers[i].textureRecord);
                        SerializableLootContainer serializableLootContainer = customLootContainer.GetComponent <SerializableLootContainer>();
                        if (serializableLootContainer)
                        {
                            serializableLootContainer.RestoreSaveData(lootContainers[i]);
                        }
                        //Debug.LogFormat("created loot container {0} containing {1} parent {2}", key, customLootContainer.Items.GetItem(0).shortName, customLootContainer.transform.parent.name);
                    }
                }
            }
        }
        void RestoreLootContainerData(LootContainerData_v1[] lootContainers)
        {
            if (lootContainers == null || lootContainers.Length == 0)
            {
                return;
            }

            for (int i = 0; i < lootContainers.Length; i++)
            {
                // Skip null containers
                if (lootContainers[i] == null)
                {
                    continue;
                }

                // Restore loot containers
                ulong key = lootContainers[i].loadID;
                if (serializableLootContainers.ContainsKey(key))
                {
                    // Apply to known loot container that is part of scene build
                    serializableLootContainers[key].RestoreSaveData(lootContainers[i]);
                }
                else
                {
                    // Add custom drop containers back to scene (e.g. dropped loot, slain foes)
                    if (lootContainers[i].customDrop)
                    {
                        DaggerfallLoot            customLootContainer       = GameObjectHelper.CreateDroppedLootContainer(GameManager.Instance.PlayerObject, key);
                        SerializableLootContainer serializableLootContainer = customLootContainer.GetComponent <SerializableLootContainer>();
                        if (serializableLootContainer)
                        {
                            serializableLootContainer.RestoreSaveData(lootContainers[i]);
                        }
                    }
                }
            }
        }