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; }
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; }
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."); } }
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!"); } } }
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]); } } } } }