Crafting system working (WIP)

- Crafting UI fully functional
- Crafting Stat stones and modular equippable items fully functional
Notes:
- Urgent need for exclusive(auto sorted) inventory for stones only
- Something to do with the "trash" modular items instead of just selling
- Add new uses for gold besides equipment, preset items will probably be worthless with modular crafting
This commit is contained in:
Pedro Gomes 2025-01-06 19:52:31 +00:00
parent 1eda21226d
commit 4c3edff503
547 changed files with 6078 additions and 1593 deletions

View File

@ -70,7 +70,7 @@ public class VendorSlotUI : ItemSlot
if(Item is EquippableItemInstance ei)
{
EquippableItemInstance equippedInSameSlot = EquipmentPanel.Instance.GetEquippedItemOnSpecificSlot(ei.EquipmentType);
if (equippedInSameSlot != null)
if (equippedInSameSlot != null && !string.IsNullOrEmpty(equippedInSameSlot.ItemName))
{
EquippedItemTooltip.Instance.ShowTooltip(equippedInSameSlot);
}

View File

@ -5,6 +5,7 @@ using UnityEngine.Events;
namespace Kryz.CharacterStats.Examples
{
public class CharacterStats : MonoBehaviour
{
//Primary

View File

@ -0,0 +1,23 @@

using UnityEngine.EventSystems;
namespace Kryz.CharacterStats.Examples
{
public class CraftingSlot : ItemSlot
{
protected override void OnValidate()
{
base.OnValidate();
}
public override void OnPointerEnter(PointerEventData eventData)
{
ItemTooltip.Instance.ShowTooltip(Item);
EquippableItemInstance equippedInSameSlot = EquipmentPanel.Instance.GetEquippedItemOnSpecificSlot(((EquippableItemInstance)Item).EquipmentType);
if (equippedInSameSlot != null && !string.IsNullOrEmpty(equippedInSameSlot.ItemName))
{
EquippedItemTooltip.Instance.ShowTooltip(equippedInSameSlot);
}
}
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 803d637b3e4b69b449a9eb0dcaf17661
timeCreated: 1516754758
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,123 @@
using Kryz.CharacterStats.Examples;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu]
public class CraftingStatStoneTemplate : Item
{
[Space]
public int MinAttackDamageBonus;
public int MaxAttackDamageBonus;
[Space]
public int MinSpellDamageBonus;
public int MaxSpellDamageBonus;
[Space]
public int MinCritChanceBonus;
public int MaxCritChanceBonus;
[Space]
public int MinCritDamageBonus;
public int MaxCritDamageBonus;
[Space]
public int MinMaxHealthBonus;
public int MaxMaxHealthBonus;
[Space]
public int MinArmorBonus;
public int MaxArmorBonus;
[Space]
public int MinMagicResistanceBonus;
public int MaxMagicResistanceBonus;
[Space]
[Space]
public float MinAttackDamagePercentBonus;
public float MaxAttackDamagePercentBonus;
[Space]
public float MinSpellDamagePercentBonus;
public float MaxSpellDamagePercentBonus;
[Space]
public float MinCritChancePercentBonus;
public float MaxCritChancePercentBonus;
[Space]
public float MinCritDamagePercentBonus;
public float MaxCritDamagePercentBonus;
[Space]
public float MinMaxHealthPercentBonus;
public float MaxMaxHealthPercentBonus;
[Space]
public float MinArmorPercentBonus;
public float MaxArmorPercentBonus;
[Space]
public float MinMagicResistancePercentBonus;
public float MaxMagicResistancePercentBonus;
}
[System.Serializable]
public class CraftingStatStone : ItemInstance
{
public int AttackDamageBonus;
public int SpellDamageBonus;
public int CritChanceBonus;
public int CritDamageBonus;
public int MaxHealthBonus;
public int ArmorBonus;
public int MagicResistanceBonus;
[Space]
public float AttackDamagePercentBonus;
public float SpellDamagePercentBonus;
public float CritChancePercentBonus;
public float CritDamagePercentBonus;
public float MaxHealthPercentBonus;
public float ArmorPercentBonus;
public float MagicResistancePercentBonus;
public CraftingStatStone()
{
}
public CraftingStatStone(CraftingStatStoneTemplate template)
{
ItemName = template.ItemName;
Icon = template.Icon;
sellPricePlayer = template.sellPricePlayer;
sellPriceVendor = template.sellPriceVendor;
description = template.description;
templateIndex = ItemIndexer.Instance.Items.IndexOf(template);
AttackDamageBonus = Random.Range(template.MinAttackDamageBonus, template.MaxAttackDamageBonus);
SpellDamageBonus = Random.Range(template.MinSpellDamageBonus, template.MaxSpellDamageBonus);
CritChanceBonus = Random.Range(template.MinCritChanceBonus, template.MaxCritChanceBonus);
CritDamageBonus = Random.Range(template.MinCritDamageBonus, template.MaxCritDamageBonus);
MaxHealthBonus = Random.Range(template.MinMaxHealthBonus, template.MaxMaxHealthBonus);
ArmorBonus = Random.Range(template.MinArmorBonus, template.MaxArmorBonus);
MagicResistanceBonus = Random.Range(template.MinMagicResistanceBonus, template.MaxMagicResistanceBonus);
AttackDamagePercentBonus = Mathf.Round(Random.Range(template.MinAttackDamagePercentBonus, template.MaxAttackDamagePercentBonus) * 100f) / 100f;
SpellDamagePercentBonus = Mathf.Round(Random.Range(template.MinSpellDamagePercentBonus, template.MaxSpellDamagePercentBonus) * 100f) / 100f;
CritChancePercentBonus = Mathf.Round(Random.Range(template.MinCritChancePercentBonus, template.MaxCritChancePercentBonus) * 100f) / 100f;
CritDamagePercentBonus = Mathf.Round(Random.Range(template.MinCritDamagePercentBonus, template.MaxCritDamagePercentBonus) * 100f) / 100f;
MaxHealthPercentBonus = Mathf.Round(Random.Range(template.MinMaxHealthPercentBonus, template.MaxMaxHealthPercentBonus) * 100f) / 100f;
ArmorPercentBonus = Mathf.Round(Random.Range(template.MinArmorPercentBonus, template.MaxArmorPercentBonus) * 100f) / 100f;
MagicResistancePercentBonus = Mathf.Round(Random.Range(template.MinMagicResistancePercentBonus, template.MaxMagicResistancePercentBonus) * 100f) / 100f;
}
public List<string> GetNonZeroStats()
{
var nonZeroStats = new List<string>();
var fields = this.GetType().GetFields();
foreach (var field in fields)
{
if (field.GetValue(this) is int intValue && intValue != 0 && field.Name.ToLower().Contains("bonus"))
{
nonZeroStats.Add(field.Name);
}
else if (field.GetValue(this) is float floatValue && !Mathf.Approximately(floatValue, 0f) && field.Name.ToLower().Contains("bonus"))
{
nonZeroStats.Add(field.Name);
}
}
return nonZeroStats;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6f35bc39e94b257428e21d616c6a2036
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@

using UnityEngine.EventSystems;
namespace Kryz.CharacterStats.Examples
{
public class CraftingStoneSlot : ItemSlot
{
protected override void OnValidate()
{
base.OnValidate();
}
public override void OnPointerEnter(PointerEventData eventData)
{
ItemTooltip.Instance.ShowTooltip(Item);
}
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 870a3e9360018ca4b860d04494db9bc3
timeCreated: 1516754758
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -125,8 +125,8 @@ namespace Kryz.CharacterStats.Examples
public float MaxMagicResistancePercentBonus;
[Space]
[Space]
[Tooltip("Can only contain up to this number of unique stats in a single item instance.")]
public int TotalUniqueStats;
[Tooltip("Can only increase up to this number of unique stats in a single item instance.")]
public int MaxTotalUniqueStatsIncreasedByStones;
public void Equip(PlayerCharacterStats c)

View File

@ -45,7 +45,8 @@ public class EquippableItemInstance : ItemInstance
/// </summary>
[Space]
[Tooltip("Can only contain up to this number of unique stats in a single item instance.")]
public int TotalUniqueStats;
public int MaxTotalUniqueStatsIncreasedByStones;
public List<string> AddedStoneStats = new List<string>();
public void Equip(PlayerCharacterStats c)
{
@ -127,23 +128,34 @@ public class EquippableItemInstance : ItemInstance
c.MagicResistance.RemoveAllModifiersFromSource(this.ItemName);
}
public bool TryAddCraftingStone(CraftingStatStone stone)
public bool CanAddCraftingStone(CraftingStatStone stone)
{
if (!CraftableBase) return false;
var itemStats = GetNonZeroStats(this);
var stoneStats = GetNonZeroStats(stone);
// Calculate overlapping and new unique stats
int overlappingStats = itemStats.Intersect(stoneStats).Count();
int newUniqueStats = stoneStats.Except(itemStats).Count();
int overlappingStats = AddedStoneStats.Intersect(stoneStats).Count();
int newUniqueStats = stoneStats.Except(AddedStoneStats).Count();
// Ensure we don't exceed the max unique stats cap
if (itemStats.Count + newUniqueStats > TotalUniqueStats)
if (AddedStoneStats.Count + newUniqueStats > MaxTotalUniqueStatsIncreasedByStones)
{
return false; // Adding the crafting stone would exceed the cap
}
return true;
}
public bool TryAddCraftingStone(CraftingStatStone stone)
{
if (!CanAddCraftingStone(stone)) return false;
var stoneStats = GetNonZeroStats(stone);
for (int i = 0; i < stoneStats.Count; i++)
{
if (!AddedStoneStats.Contains(stoneStats[i]))
AddedStoneStats.Add(stoneStats[i]);
}
// Add stats from the stone to the item
AddStats(stone);
return true;
@ -171,18 +183,6 @@ public class EquippableItemInstance : ItemInstance
private void AddStats(CraftingStatStone stone)
{
StrengthBonus += stone.StrengthBonus;
AgilityBonus += stone.AgilityBonus;
IntelligenceBonus += stone.IntelligenceBonus;
SpiritBonus += stone.SpiritBonus;
VitalityBonus += stone.VitalityBonus;
StrengthPercentBonus += stone.StrengthPercentBonus;
AgilityPercentBonus += stone.AgilityPercentBonus;
IntelligencePercentBonus += stone.IntelligencePercentBonus;
SpiritPercentBonus += stone.SpiritPercentBonus;
VitalityPercentBonus += stone.VitalityPercentBonus;
AttackDamageBonus += stone.AttackDamageBonus;
SpellDamageBonus += stone.SpellDamageBonus;
CritChanceBonus += stone.CritChanceBonus;
@ -234,7 +234,7 @@ public class EquippableItemInstance : ItemInstance
CraftableBase = false;
TotalUniqueStats = 0;
MaxTotalUniqueStatsIncreasedByStones = 0;
}
public EquippableItemInstance(EquippableItem template)
{
@ -276,7 +276,7 @@ public class EquippableItemInstance : ItemInstance
EquipmentType = template.EquipmentType;
CraftableBase = template.CraftableBase;
TotalUniqueStats = template.TotalUniqueStats;
MaxTotalUniqueStatsIncreasedByStones = template.MaxTotalUniqueStatsIncreasedByStones;
}
public EquippableItemInstance(EquippableItem template, bool randomizeStats)
@ -356,39 +356,7 @@ public class EquippableItemInstance : ItemInstance
EquipmentType = template.EquipmentType;
CraftableBase = template.CraftableBase;
TotalUniqueStats = template.TotalUniqueStats;
MaxTotalUniqueStatsIncreasedByStones = template.MaxTotalUniqueStatsIncreasedByStones;
}
}
[System.Serializable]
public class CraftingStatStone
{
public int StrengthBonus;
public int AgilityBonus;
public int IntelligenceBonus;
public int SpiritBonus;
public int VitalityBonus;
[Space]
public float StrengthPercentBonus;
public float AgilityPercentBonus;
public float IntelligencePercentBonus;
public float SpiritPercentBonus;
public float VitalityPercentBonus;
[Space]
public int AttackDamageBonus;
public int SpellDamageBonus;
public int CritChanceBonus;
public int CritDamageBonus;
public int MaxHealthBonus;
public int ArmorBonus;
public int MagicResistanceBonus;
[Space]
public float AttackDamagePercentBonus;
public float SpellDamagePercentBonus;
public float CritChancePercentBonus;
public float CritDamagePercentBonus;
public float MaxHealthPercentBonus;
public float ArmorPercentBonus;
public float MagicResistancePercentBonus;
}

View File

@ -11,7 +11,7 @@ namespace Kryz.CharacterStats.Examples
public int sellPriceVendor;
public string description;
public static ItemInstance ConvertTemplateIntoInstance(Item template, bool randomizeStats = false)
public static ItemInstance ConvertTemplateIntoInstance(Item template)
{
if(template is EquippableItem item)
{
@ -20,14 +20,18 @@ namespace Kryz.CharacterStats.Examples
else if(template is HiddenMap map)
{
return new HiddenMapInstance(map);
}
else if(template is CraftingStatStoneTemplate stone)
{
return new CraftingStatStone(stone);
}
return new ItemInstance(template);
}
public static ItemInstance ConvertTemplateIntoInstance(Item template, int templateIndex, bool randomizeStats = false)
public static ItemInstance ConvertTemplateIntoInstance(Item template, int templateIndex)
{
if (template is EquippableItem item)
{
return new EquippableItemInstance(item, randomizeStats);
return new EquippableItemInstance(item, item.CraftableBase);
}
return new ItemInstance(template, templateIndex);
}

View File

@ -58,7 +58,7 @@ namespace Kryz.CharacterStats.Examples
if (Item is EquippableItemInstance ei)
{
EquippableItemInstance equippedInSameSlot = EquipmentPanel.Instance.GetEquippedItemOnSpecificSlot(ei.EquipmentType);
if (equippedInSameSlot != null)
if (equippedInSameSlot != null && !string.IsNullOrEmpty(equippedInSameSlot.ItemName))
{
EquippedItemTooltip.Instance.ShowTooltip(equippedInSameSlot);
}

View File

@ -46,6 +46,11 @@ namespace Kryz.CharacterStats.Examples
}
public void ShowTooltip(ItemInstance itemToShow)
{
if (itemToShow is CraftingStatStone)
{
ShowtooltipCraftingStone(itemToShow);
return;
}
if (!(itemToShow is EquippableItemInstance))
{
ShowNonEquippableItemTooltip(itemToShow);
@ -108,6 +113,11 @@ namespace Kryz.CharacterStats.Examples
}
public void ShowTooltipVendor(ItemInstance itemFromVendor)
{
if (itemFromVendor is CraftingStatStone)
{
ShowtooltipCraftingStone(itemFromVendor);
return;
}
if (!(itemFromVendor is EquippableItemInstance))
{
ShowNonEquippableItemTooltip(itemFromVendor, true);
@ -168,6 +178,45 @@ namespace Kryz.CharacterStats.Examples
statsText.text = sb.ToString();
}
public void ShowtooltipCraftingStone(ItemInstance itemToShow)
{
CraftingStatStone item = (CraftingStatStone)itemToShow;
gameObject.SetActive(true);
nameText.text = item.ItemName;
sellPriceText.text = sellText + item.sellPricePlayer.ToString();
sb.Length = 0;
AddStatText(item.AttackDamageBonus, " Attack Damage");
AddStatText(item.SpellDamageBonus, " Spell Damage");
AddStatText(item.CritChanceBonus, "% Base Crit Chance");
AddStatText(item.CritDamageBonus, "% Base Crit Damage");
AddStatText(item.MaxHealthBonus, " Max Health");
AddStatText(item.ArmorBonus, " Armor");
AddStatText(item.MagicResistanceBonus, " Magic Resistance");
sb.AppendLine();
AddStatText(item.AttackDamagePercentBonus * 100, " % Attack Damage");
AddStatText(item.SpellDamagePercentBonus * 100, " % Spell Damage");
AddStatText(item.CritChancePercentBonus * 100, "% Increased Crit Chance");
AddStatText(item.CritDamagePercentBonus * 100, "% Increased Crit Damage");
AddStatText(item.MaxHealthPercentBonus * 100, " % Max Health");
AddStatText(item.ArmorPercentBonus * 100, " % Armor");
AddStatText(item.MagicResistancePercentBonus * 100, " % Magic Resistance");
if (!string.IsNullOrEmpty(itemToShow.description))
{
sb.AppendLine();
sb.AppendLine();
sb.Append(itemToShow.description);
}
statsText.text = sb.ToString();
}
public void HideTooltip()
{
gameObject.SetActive(false);

View File

@ -200,7 +200,6 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4654368964328857930}
- component: {fileID: 4654368964328857929}
- component: {fileID: 4654368964328857928}
- component: {fileID: 4654368964328857941}
m_Layer: 0
@ -228,25 +227,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4654368964328857929
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4654368964328857940}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4afb32f520b7975418b5e16d35ce41d6, type: 3}
m_Name:
m_EditorClassIdentifier:
radius: 2
interactableWithRange: 0
rangedRadius: 10
interactionTransform: {fileID: 4654368964328857930}
onJobsBoardInteracted: {fileID: 11400000, guid: 6fdafeb02f643784288165c82b34b6a6, type: 2}
onJobsBoardReleased: {fileID: 11400000, guid: ecc7e93ed1ad0474886e702393fecae7, type: 2}
onWorldJobsUIClosed: {fileID: 4654368964663929551}
--- !u!65 &4654368964328857928
BoxCollider:
m_ObjectHideFlags: 0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8596f38cf87962449a2430a784a116d6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,345 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2861271074637994063
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1234033168927737076}
- component: {fileID: 315068641820052398}
- component: {fileID: 1033348692969144725}
m_Layer: 5
m_Name: StatElement
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1234033168927737076
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2861271074637994063}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1912943351753671857}
- {fileID: 2417456957354824804}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 175, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &315068641820052398
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2861271074637994063}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: 180
m_MinHeight: 20
m_PreferredWidth: 175
m_PreferredHeight: 20
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &1033348692969144725
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2861271074637994063}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb449ecd891e1ef48b6a84e9eba2211d, type: 3}
m_Name:
m_EditorClassIdentifier:
statValue: {fileID: 216631493609377755}
--- !u!1 &4092784473671794760
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1912943351753671857}
- component: {fileID: 7581281009647839070}
- component: {fileID: 2839078094882286900}
m_Layer: 5
m_Name: BaseText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1912943351753671857
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4092784473671794760}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1234033168927737076}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -35, y: 0}
m_SizeDelta: {x: -70, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7581281009647839070
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4092784473671794760}
m_CullTransparentMesh: 1
--- !u!114 &2839078094882286900
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4092784473671794760}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: '<color=blue>#</color>Attack Damage:'
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: e53b4ab145ea90a4f893624318d62bf8, type: 2}
m_sharedMaterial: {fileID: -2669144802238463443, guid: e53b4ab145ea90a4f893624318d62bf8, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 12
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 10
m_fontSizeMax: 12
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &8842812427357206582
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2417456957354824804}
- component: {fileID: 5310485609867685015}
- component: {fileID: 216631493609377755}
m_Layer: 5
m_Name: StatNumber
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2417456957354824804
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8842812427357206582}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1234033168927737076}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 55, y: 0}
m_SizeDelta: {x: -110, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5310485609867685015
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8842812427357206582}
m_CullTransparentMesh: 1
--- !u!114 &216631493609377755
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8842812427357206582}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 99999999
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 12
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 10
m_fontSizeMax: 12
m_fontStyle: 0
m_HorizontalAlignment: 4
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9292670e0ec21844798498670ee66f52
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1301,6 +1301,10 @@ PrefabInstance:
propertyPath: nonEquippablesDrops.Array.data[1]
value:
objectReference: {fileID: 11400000, guid: a6c738232ec60474f8edc7718e576d07, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.size
value: 7
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: weightedDropLootTable.Array.data[0].drop
value:
@ -1585,6 +1589,34 @@ PrefabInstance:
propertyPath: weightedDropLootTable.Array.data[9].weight
value: 35
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[0].drop
value:
objectReference: {fileID: 11400000, guid: 0b7cef8f0f9629e4db2f524b73b7f101, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[1].drop
value:
objectReference: {fileID: 11400000, guid: e9885e3e466b9e14189f7c797a90dfa3, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[2].drop
value:
objectReference: {fileID: 11400000, guid: 560729afcd6a2b44288901f64a3dac6b, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[3].drop
value:
objectReference: {fileID: 11400000, guid: 92cd047a0afb6ae4eb2e0947509b87e3, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[4].drop
value:
objectReference: {fileID: 11400000, guid: 86b9fe5f7cb946e448a2338c9526a05d, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[5].drop
value:
objectReference: {fileID: 11400000, guid: 41477d977afbd6d45b72d37add3a8bad, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[6].drop
value:
objectReference: {fileID: 11400000, guid: a1c6829a05599714ea9d6a7e09af273f, type: 2}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: weightedDropLootTable.Array.data[10].weight
value: 35
@ -1789,6 +1821,34 @@ PrefabInstance:
propertyPath: weightedDropLootTable.Array.data[60].weight
value: 35
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[0].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[1].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[2].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[3].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[4].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[5].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[6].weight
value: 2
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: weightedDropLootTable.Array.data[0].lowestPossibleDifficulty
value: 1
@ -2257,6 +2317,34 @@ PrefabInstance:
propertyPath: weightedDropLootTable.Array.data[60].highestPossibleDifficulty
value: 1
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[0].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[1].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[2].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[3].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[4].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[5].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 320740188261888096, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: guaranteedOnlyOnePerKill.Array.data[6].highestPossibleDifficulty
value: 6
objectReference: {fileID: 0}
- target: {fileID: 2366098426994065154, guid: b6c7760f01532fc4a96882ae1816ae05, type: 3}
propertyPath: m_Name
value: DropTable

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ef8ae273b43120e47a94f31242ed43a0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More