Firstborn/Assets/RPG Creation Kit/Scripts/Looting System/Items In Looting UI/MiscItemInLootingUI_DrawDep...
Schaken-Mods 4cdbd64fd2 Optimizes and fixes
Added ownership to all items, added perk points for certain things, added a male outfit, going thru and removing all BLEND files and replacing with FBX, fixed a few errors when loading between scenes, moved Wothabs Entry door a little so its not at the border of a cell, Joe Biden sucks.
2023-05-11 00:27:44 -05:00

187 lines
6.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using RPGCreationKit;
using RPGCreationKit.AI;
namespace RPGCreationKit
{
public class MiscItemInLootingUI_DrawDeposit : MiscItemInInventoryUI
{
public override void OnClick(bool takeAll = false)
{
if (LootingInventoryUI.instance.curIsPickPocket && LootingInventoryUI.instance.curLootingPoint != null)
{
// Player is attempting to pickpocket
Vector3 forward = Inventory.PlayerInventory.transform.TransformDirection(Vector3.forward);
Vector3 toOther = LootingInventoryUI.instance.curLootingPoint.transform.position - transform.position;
float A = (1f - ((float)miscItemInInventory.item.Value / 100f));
float B = (float)EntityAttributes.PlayerAttributes.attributes.Dexterity / 100f;
float C = (1f - ((float)miscItemInInventory.item.Weight / 100f));
float D = (((Vector3.Dot(forward, toOther)) + 360) / 720);
float ChanceForSuccess = ((A+B+C+D)/4);
if (base.miscItemInInventory.isEquipped)
ChanceForSuccess = (ChanceForSuccess/2);
float RandomChance = (Random.value);
if (ChanceForSuccess < RandomChance) {
RckAI ai = LootingInventoryUI.instance.curLootingPoint.inventory.gameObject.GetComponent<RckAI>();
ai.TryEngageWithPlayer(); // Engage with player - Lets get faction instead of every fucker in the area.
LootingInventoryUI.instance.CloseUI();
return;
} else { // Reward Player
EntityAttributes.PlayerAttributes.attributes.DexterityPoints += 1;
A = (float)EntityAttributes.PlayerAttributes.attributes.DexterityPoints;
B = (float)EntityAttributes.PlayerAttributes.attributes.Dexterity;
while (A >= (B*3)) {
EntityAttributes.PlayerAttributes.attributes.Dexterity += 1;
float E = (A-(B*3f));
EntityAttributes.PlayerAttributes.attributes.DexterityPoints = (int)D;
A = (float)EntityAttributes.PlayerAttributes.attributes.DexterityPoints;
B = (float)EntityAttributes.PlayerAttributes.attributes.Dexterity;
}
}
}
// Some palce in the codebase seems to be calling this method after the CloseUI randomly, not sure why or where yet
// this is a backup in that case
if (LootingInventoryUI.instance.curIsPickPocket && LootingInventoryUI.instance.curLootingPoint == null) {
return;
}
if (LootingInventoryUI.instance.isDrawing)
{
// if the amount is 1, add it one time
if (base.miscItemInInventory.Amount <= 1)
{
Inventory.PlayerInventory.AddItem(base.miscItemInInventory.item, base.miscItemInInventory.metadata, 1, !takeAll);
// Remove the item from the current loot inventory
LootingInventoryUI.instance.curLootingPoint.inventory.RemoveItem(base.miscItemInInventory, 1);
LootingInventoryUI.instance.SelectNextButton();
// Disable this object
pool.usedObjects.Remove(this);
pool.MiscsPool.usedObjects.Remove(this);
gameObject.GetComponent<Button>().onClick.RemoveAllListeners();
gameObject.SetActive(false);
}
else if (base.miscItemInInventory.item.isCumulable && base.miscItemInInventory.Amount > 1)
{
if (!takeAll)
{
LootingInventoryUI.instance.takeDepositItemsPanel.gameObject.SetActive(true);
LootingInventoryUI.instance.takeDepositItemsPanel.Init(miscItemInInventory, this);
}
else
{
ConfirmButtonCumulableItem(base.miscItemInInventory.Amount);
}
}
}
else // we're depositing
{
if (base.miscItemInInventory.item.QuestItem)
{
AlertMessage.instance.InitAlertMessage("You can't leave Quest Items", AlertMessage.DEFAULT_MESSAGE_DURATION_MEDIUM);
return;
}
// if the amount is 1, add it one time
if (base.miscItemInInventory.Amount <= 1)
{
// Remove the item from the current loot inventory
LootingInventoryUI.instance.curLootingPoint.inventory.AddItem(base.miscItemInInventory.item, base.miscItemInInventory.metadata, 1);
Inventory.PlayerInventory.RemoveItem(base.miscItemInInventory, 1);
// Call OnDeposit of ItemScript
if (!string.IsNullOrEmpty(base.miscItemInInventory.item.itemScript))
{
ItemScript iScript = (ItemScript)QuestScriptManager.instance.scriptsHolder.AddComponent(System.Type.GetType(base.miscItemInInventory.item.itemScript));
iScript.OnDepositInContainer(LootingInventoryUI.instance.curLootingPoint);
Destroy(iScript);
}
LootingInventoryUI.instance.SelectNextButton();
// Disable this object
pool.usedObjects.Remove(this);
pool.MiscsPool.usedObjects.Remove(this);
gameObject.GetComponent<Button>().onClick.RemoveAllListeners();
gameObject.SetActive(false);
}
else if (base.miscItemInInventory.item.isCumulable && base.miscItemInInventory.Amount > 1)
{
LootingInventoryUI.instance.takeDepositItemsPanel.gameObject.SetActive(true);
LootingInventoryUI.instance.takeDepositItemsPanel.Init(miscItemInInventory, this);
}
}
}
public override void ConfirmButtonCumulableItem(int amount)
{
if (LootingInventoryUI.instance.isDrawing)
{
// Add in PlayerInventory
Inventory.PlayerInventory.AddItem(base.miscItemInInventory.item, base.miscItemInInventory.metadata, amount);
// Remove from Loot Inventory
LootingInventoryUI.instance.curLootingPoint.inventory.RemoveItem(base.miscItemInInventory, amount);
if (miscItemInInventory.Amount <= 0)
{
LootingInventoryUI.instance.takeDepositItemsPanel.SetPreviousSelected();
LootingInventoryUI.instance.SelectNextButton(true);
//If we've took all the items
pool.usedObjects.Remove(this);
pool.MiscsPool.usedObjects.Remove(this);
// Disable this object
gameObject.GetComponent<Button>().onClick.RemoveAllListeners();
this.gameObject.SetActive(false);
}
else
{
// Update the UI
Init();
}
}
else // we're depositing
{
// Remove from Loot Inventory
LootingInventoryUI.instance.curLootingPoint.inventory.AddItem(base.miscItemInInventory.item, base.miscItemInInventory.metadata, 1);
// Add in PlayerInventory
Inventory.PlayerInventory.RemoveItem(base.miscItemInInventory, 1);
if (miscItemInInventory.Amount <= 0)
{
LootingInventoryUI.instance.takeDepositItemsPanel.SetPreviousSelected();
LootingInventoryUI.instance.SelectNextButton(true);
//If we've took all the items
pool.usedObjects.Remove(this);
pool.MiscsPool.usedObjects.Remove(this);
// Disable this object
gameObject.GetComponent<Button>().onClick.RemoveAllListeners();
gameObject.SetActive(false);
}
else
{
// Update the UI
Init();
}
}
}
}
}