Updates to rogue-lite mechanics (WIP)

- visual update on riftraids
- ability unlock system through ability tomes
- (possible) bugfix sprite issue
- player reputation level
This commit is contained in:
Pedro Gomes 2025-01-18 23:14:12 +00:00
parent a56eb96f2d
commit 9c136817b3
45 changed files with 5227 additions and 420 deletions

View File

@ -1791,6 +1791,8 @@ RectTransform:
- {fileID: 22400858}
- {fileID: 22466304}
- {fileID: 22440530}
- {fileID: 2537039618920728962}
- {fileID: 646436410361276731}
- {fileID: 7158904691041162286}
m_Father: {fileID: 22436708}
m_RootOrder: 0
@ -4040,7 +4042,7 @@ RectTransform:
m_Children:
- {fileID: 59981451553573657}
m_Father: {fileID: 22485050}
m_RootOrder: 3
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 0}
@ -4533,6 +4535,101 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &3735344847511009427
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2537039618920728962}
- component: {fileID: 8498195554027255770}
- component: {fileID: 3829411698723291737}
- component: {fileID: 3024519744543430060}
m_Layer: 5
m_Name: RepLevel Text Label (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2537039618920728962
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3735344847511009427}
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: 22485050}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: -59, y: -35}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0}
--- !u!222 &8498195554027255770
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3735344847511009427}
m_CullTransparentMesh: 1
--- !u!114 &3829411698723291737
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3735344847511009427}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.43529412, g: 0.3254902, b: 0.25490198, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: b3797d5d853d86945b0da6c9793549c9, type: 3}
m_FontSize: 34
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 5
m_MaxSize: 52
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Rep level
--- !u!114 &3024519744543430060
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3735344847511009427}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 2
m_VerticalFit: 2
--- !u!1 &3823479299661392140
GameObject:
m_ObjectHideFlags: 0
@ -4838,6 +4935,101 @@ MonoBehaviour:
m_FlexibleWidth: 1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &5688110386313124751
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 646436410361276731}
- component: {fileID: 5628216943697850386}
- component: {fileID: 5987178240385170955}
- component: {fileID: 8403219703773733933}
m_Layer: 5
m_Name: Rep Level Text Value (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &646436410361276731
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5688110386313124751}
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: 22485050}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 51, y: -34.999878}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0}
--- !u!222 &5628216943697850386
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5688110386313124751}
m_CullTransparentMesh: 1
--- !u!114 &5987178240385170955
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5688110386313124751}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.8392157, g: 0.8392157, b: 0.8392157, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 28
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 5
m_MaxSize: 52
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 10
--- !u!114 &8403219703773733933
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5688110386313124751}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 2
m_VerticalFit: 2
--- !u!1 &5895164288734416259
GameObject:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,47 @@
using Kryz.CharacterStats.Examples;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*[CreateAssetMenu]
public class AbilityTomePage : ConsumableItem
{
public int abilityIndex;
public GameEvent_Int onAbilityTomePageLearned;
public override void Consume()
{
PlayerDataHandler.Instance.SaveAbilityTomeProgress(PlayerDataHandler.Instance.currentPlayerName.Value, abilityIndex, 1);
onAbilityTomePageLearned.Raise(abilityIndex);
}
}*/
[System.Serializable]
public class AbilityTomePageInstance : ConsumableItemInstance
{
public int abilityIndex;
public GameEvent_Int onAbilityTomePageLearned;
public AbilityTomePageInstance(BaseAbility ability, Item template, GameEvent_Int onAbilityTomePageLearned)
{
ItemName = "Forgotten "+ ability.displayName + "'s Tome Page";
Icon = template.Icon;
templateIndex = ItemIndexer.Instance.Items.IndexOf(template);
sellPricePlayer = template.sellPricePlayer;
sellPriceVendor = template.sellPriceVendor;
description = template.description;
templateIndex = AbilityIndexer.Instance.Abilities.IndexOf(ability);
abilityIndex = templateIndex;
this.onAbilityTomePageLearned = onAbilityTomePageLearned;
}
public override void Consume()
{
PlayerDataHandler.Instance.SaveAbilityTomeProgress(PlayerDataHandler.Instance.currentPlayerName.Value, abilityIndex, 1);
onAbilityTomePageLearned.Raise(abilityIndex);
}
}

View File

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

View File

@ -72,7 +72,7 @@ public class CraftingStatStone : ItemInstance
public float MagicResistancePercentBonus;
public CraftingStatStone()
public CraftingStatStone() : base()
{
}
public CraftingStatStone(CraftingStatStoneTemplate template)

View File

@ -57,7 +57,7 @@ namespace Kryz.CharacterStats.Examples
private void HandleItemSlotOnRightClick(ItemInstance item)
{
if(isCrafting)
if (isCrafting)
{
OnItemRightClickedEventWhileCrafting.Invoke(item);
}
@ -92,8 +92,7 @@ namespace Kryz.CharacterStats.Examples
{
itemSlots[i].Item = items[i];
if (ItemIndexer.Instance != null)
inventoryData.inventoryItems[i] = items[i];
inventoryData.inventoryItems[i] = items[i];
//inventoryData.inventoryItems[i] = ItemIndexer.Instance.Items.IndexOf(items[i]);
}
@ -156,6 +155,8 @@ namespace Kryz.CharacterStats.Examples
if (inventoryData.inventoryItems[i] == null) continue;
if (string.IsNullOrEmpty(inventoryData.inventoryItems[i].ItemName)) continue;
inventoryData.inventoryItems[i].Icon = ItemIndexer.Instance.Items[inventoryData.inventoryItems[i].templateIndex].Icon;
items.Add(inventoryData.inventoryItems[i]);
//items.Add(ItemIndexer.Instance.Items[inventoryData.inventoryItems[i]]);
}

View File

@ -9,8 +9,8 @@ using UnityEngine;
public class ItemInstance
{
public string ItemName;
[SerializeField]
public Sprite Icon;
public int spriteIndex;
public int sellPricePlayer;
public int sellPriceVendor;
public string description;
@ -20,7 +20,6 @@ public class ItemInstance
{
ItemName = "";
Icon = null;
spriteIndex = 0;
sellPricePlayer = 0;
sellPriceVendor = 0;
description = "";
@ -29,22 +28,20 @@ public class ItemInstance
public ItemInstance(Item template)
{
ItemName = template.ItemName;
templateIndex = ItemIndexer.Instance.Items.IndexOf(template);
Icon = template.Icon;
spriteIndex = SpriteIndexer.Instance.Sprites.IndexOf(Icon);
sellPricePlayer = template.sellPricePlayer;
sellPriceVendor = template.sellPriceVendor;
description = template.description;
templateIndex = ItemIndexer.Instance.Items.IndexOf(template);
}
public ItemInstance(Item template, int templateIndex)
{
ItemName = template.ItemName;
this.templateIndex = templateIndex;
Icon = template.Icon;
spriteIndex = SpriteIndexer.Instance.Sprites.IndexOf(Icon);
sellPricePlayer = template.sellPricePlayer;
sellPriceVendor = template.sellPriceVendor;
description = template.description;
this.templateIndex = templateIndex;
}
}

View File

@ -20,16 +20,16 @@ namespace Kryz.CharacterStats.Examples
if (_item == null) {
image.enabled = false;
} else if(_item.Icon == null) {
} else if (_item.Icon == null) {
image.enabled = false;
}
else
{
Debug.Log("image: " + image.name);
Debug.Log("item: " + _item.ItemName);
Debug.Log("icon: " + _item.Icon.name);
else
{
Debug.Log("Item Slot: " + _item);
Debug.Log("Item Slot: " + _item.Icon);
Debug.Log("Item Slot: " + _item.templateIndex);
Debug.Log("Item Slot: " + ItemIndexer.Instance.Items[_item.templateIndex].ItemName);
image.sprite = _item.Icon;
Debug.Log("sprite: " + image.sprite.name);
image.enabled = true;
}
}

View File

@ -19,6 +19,7 @@ namespace Kryz.CharacterStats.Examples
public RiftPlayer player;
public Level level;
public ReputationLevel reputationLevel;
PhotonView photonView;
@ -31,6 +32,7 @@ namespace Kryz.CharacterStats.Examples
public int AvailablePointsToAllocate;
CharacterData characterData = new CharacterData();
PlayerAccountData accountData = new PlayerAccountData();
List<CharacterStat> statsCollection = new List<CharacterStat>();
@ -57,6 +59,7 @@ namespace Kryz.CharacterStats.Examples
MaxHealth.BaseValue = health.GetBaseMaxValue();
//Debug.Log("MAX HEALTH GET BASE MAX VALUE: " + MaxHealth.BaseValue);
accountData = PlayerDataHandler.Instance.LoadPlayerAccountData(PlayerDataHandler.Instance.currentPlayerName.Value);
characterData = PlayerDataHandler.Instance.LoadCharacterData(PlayerDataHandler.Instance.currentPlayerName.Value, PlayerDataHandler.Instance.currentCharacterName.Value);
if (characterData != null)
@ -64,9 +67,20 @@ namespace Kryz.CharacterStats.Examples
Debug.Log("Success Loading CharacterData");
level = new Level(characterData.currentLevel, characterData.currentExperience);
reputationLevel = new ReputationLevel(accountData.currentReputationLevel, accountData.currentReputationExperience);
int totalAllocatedPoints = 0;
for (int i = 0; i < primaryStatsDictionary.Keys.Count; i++)
{
AllocatedStatPoints.Add(characterData.allocatedStatPoints[i]);
totalAllocatedPoints += characterData.allocatedStatPoints[i];
}
int totalPointsFromLevels = level.currentLevel * GameConstants.CharacterStatsBalancing.StatPointsPerLevel;
int totalPointsFromRep = reputationLevel.currentLevel * GameConstants.CharacterStatsBalancing.StatPointsPerReputationLevel;
if(totalAllocatedPoints + characterData.availablePointsToAllocate < totalPointsFromLevels + totalPointsFromRep)
{
characterData.availablePointsToAllocate = totalPointsFromLevels + totalPointsFromRep - totalAllocatedPoints;
}
AvailablePointsToAllocate = characterData.availablePointsToAllocate;
@ -77,11 +91,14 @@ namespace Kryz.CharacterStats.Examples
{
characterData = new CharacterData();
reputationLevel = new ReputationLevel(accountData.currentReputationLevel, accountData.currentReputationExperience);
for (int i = 0; i < primaryStatsDictionary.Keys.Count; i++)
{
AllocatedStatPoints.Add(0);
}
AvailablePointsToAllocate = GameConstants.CharacterStatsBalancing.StatPointsPerLevel;
AvailablePointsToAllocate += accountData.currentReputationLevel * GameConstants.CharacterStatsBalancing.StatPointsPerReputationLevel;
characterData.playerOwnerID = PlayerDataHandler.Instance.currentPlayerName.Value;
characterData.currentLevel = level.currentLevel;
@ -98,9 +115,6 @@ namespace Kryz.CharacterStats.Examples
if (statPanel == null)
statPanel = FindObjectOfType<StatPanel>();
@ -108,7 +122,7 @@ namespace Kryz.CharacterStats.Examples
statPanel.SetStats(Strength, Agility, Intelligence, Spirit, Vitality);
statPanel.SetSecondaryStats(AttackDamage, SpellDamage, CritChance, CritDamage, MaxHealth, Armor, MagicResistance);
statPanel.UpdateStatValues();
statPanel.SetCharacterInfo(PlayerDataHandler.Instance.currentCharacterName.Value, level.currentLevel.ToString());
statPanel.SetCharacterInfo(PlayerDataHandler.Instance.currentCharacterName.Value, level.currentLevel.ToString(), reputationLevel.currentLevel.ToString());
statPanel.ToggleAllocateButtonsInteractable(AvailablePointsToAllocate > 0);
onUpdateStatValues.AddListener(statPanel.UpdateStatValues);
onUpdateStatValues.Invoke();
@ -127,8 +141,14 @@ namespace Kryz.CharacterStats.Examples
level.OnLevelUpEvent.AddListener(OnLevelUp);
level.OnExperienceChanged.AddListener(OnExperienceChanged);
reputationLevel.OnLevelUpEvent.AddListener(OnReputationLevelUp);
reputationLevel.OnExperienceChanged.AddListener(OnReputationExperienceChanged);
experienceOnNPCDeath.Response.AddListener(level.GainExperience);
onJobCompleted.Response.AddListener(job => level.GainExperience(job.experienceReward));
onJobCompleted.Response.AddListener(job => reputationLevel.GainExperience(job.reputationReward));
UpdateLevelOnOthers();
@ -148,11 +168,26 @@ namespace Kryz.CharacterStats.Examples
PlayerDataHandler.Instance.SaveCharacterData(PlayerDataHandler.Instance.currentPlayerName.Value, PlayerDataHandler.Instance.currentCharacterName.Value, characterData);
}
private void OnReputationExperienceChanged()
{
accountData.currentReputationLevel = reputationLevel.currentLevel;
accountData.currentReputationExperience = reputationLevel.GetCurrentExperience();
PlayerDataHandler.Instance.SavePlayerAccountData(PlayerDataHandler.Instance.currentPlayerName.Value, accountData);
}
private void OnReputationLevelUp()
{
AvailablePointsToAllocate += GameConstants.CharacterStatsBalancing.StatPointsPerReputationLevel;
characterData.availablePointsToAllocate = AvailablePointsToAllocate;
statPanel.ToggleAllocateButtonsInteractable(AvailablePointsToAllocate > 0);
}
private void OnLevelUp()
{
UpdateLevelOnOthers();
statPanel.UpdateLevelInfo(level.currentLevel.ToString());
statPanel.UpdateLevelInfo(level.currentLevel.ToString(), reputationLevel.currentLevel.ToString());
UpdateStatsBasedOnLevel();

View File

@ -13,6 +13,7 @@ namespace Kryz.CharacterStats.Examples
[SerializeField] private string[] secondaryStatNames;
[SerializeField] private Text characterName;
[SerializeField] private Text characterLevel;
[SerializeField] private Text characterRepLevel;
[SerializeField] private StatDisplay unallocated;
[SerializeField] private Button resetAllocated;
private CharacterStat[] stats;
@ -110,14 +111,16 @@ namespace Kryz.CharacterStats.Examples
ToggleAllocateButtonsInteractable(playerStats.AvailablePointsToAllocate > 0);
}
public void SetCharacterInfo(string name, string level)
public void SetCharacterInfo(string name, string level, string repLevel)
{
characterName.text = name;
characterLevel.text = level;
characterRepLevel.text = repLevel;
}
public void UpdateLevelInfo(string level)
public void UpdateLevelInfo(string level, string repLevel)
{
characterLevel.text = level;
characterRepLevel.text = repLevel;
}
public void UpdateStatValues()

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,82 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &832891442293664334
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1553442022768226858}
- component: {fileID: 8722866571621887899}
- component: {fileID: 157811229265860852}
m_Layer: 5
m_Name: Locked
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &1553442022768226858
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832891442293664334}
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: 8147996188677079510}
m_Father: {fileID: 5756525528600931364}
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8722866571621887899
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832891442293664334}
m_CullTransparentMesh: 1
--- !u!114 &157811229265860852
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832891442293664334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, 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_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &971065325636273895
GameObject:
m_ObjectHideFlags: 0
@ -76,6 +153,82 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &1192391366455459718
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8147996188677079510}
- component: {fileID: 7522685301241748777}
- component: {fileID: 6562437149402858580}
m_Layer: 5
m_Name: locked
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8147996188677079510
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1192391366455459718}
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: 1553442022768226858}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 40, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7522685301241748777
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1192391366455459718}
m_CullTransparentMesh: 1
--- !u!114 &6562437149402858580
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1192391366455459718}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.8584906, g: 0.6114721, b: 0.6114721, 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_Sprite: {fileID: 21300000, guid: 640b86b0058321e4fab8001b90531991, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3491813265212353229
GameObject:
m_ObjectHideFlags: 0
@ -555,6 +708,7 @@ RectTransform:
- {fileID: 5468731390278590182}
- {fileID: 2240116213718434170}
- {fileID: 8015528414007822456}
- {fileID: 1553442022768226858}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -626,6 +780,7 @@ MonoBehaviour:
healthCostGO: {fileID: 6775159804060218676}
pressed: {fileID: 4444551169812095635}
coolDown: {fileID: 2413958677162281131}
locked: {fileID: 832891442293664334}
abilityKeyBinder: {fileID: 0}
--- !u!1 &6775159804060218676
GameObject:

View File

@ -45,11 +45,13 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
interactableDropPrefab: {fileID: 7187375229850072788, guid: 6067f5d34154eb3498e9a5fdfcee4b00, type: 3}
interactableDropAbilityTomePagePrefab: {fileID: 7187375229850072788, guid: 47a90ef4536f3dd479fe730f59f43a75, type: 3}
coinPrefab: {fileID: 7706952695029526538, guid: b0bce3e9bc0755445abb649e0c306c79, type: 3}
coinAmount: 1
extraDropChance: 0
onCoinDrop: {fileID: 11400000, guid: 48da3b1185c086c4c81a2b97ab7685fc, type: 2}
guaranteedItemDrop: []
guaranteedOnlyOnePerKill: []
extraDrops:
- {fileID: 11400000, guid: 26b042abfe9104448a1e9599be66e71a, type: 2}
- {fileID: 11400000, guid: e08687c26614d154cb5a9a01f4b97635, type: 2}

View File

@ -5885,11 +5885,13 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
interactableDropPrefab: {fileID: 7187375229850072788, guid: 6067f5d34154eb3498e9a5fdfcee4b00, type: 3}
interactableDropAbilityTomePagePrefab: {fileID: 7187375229850072788, guid: 47a90ef4536f3dd479fe730f59f43a75, type: 3}
coinPrefab: {fileID: 7706952695029526538, guid: b0bce3e9bc0755445abb649e0c306c79, type: 3}
coinAmount: 12
extraDropChance: 10
onCoinDrop: {fileID: 11400000, guid: 48da3b1185c086c4c81a2b97ab7685fc, type: 2}
guaranteedItemDrop: []
guaranteedOnlyOnePerKill: []
extraDrops:
- {fileID: 11400000, guid: 26b042abfe9104448a1e9599be66e71a, type: 2}
- {fileID: 11400000, guid: e08687c26614d154cb5a9a01f4b97635, type: 2}
@ -11069,6 +11071,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
lookAt: {fileID: 420608364184142292}
gamepadDeadzone: 0.2
--- !u!1 &7188363463708527002
GameObject:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,335 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7187375229850072788
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7187375229850072791}
- component: {fileID: 2903605308500103306}
- component: {fileID: 6961750306551488121}
- component: {fileID: 3758058927284355959}
m_Layer: 0
m_Name: ItemDrop_AbilityTomePage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7187375229850072791
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7187375229850072788}
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: 7183679910667640660}
- {fileID: 1344393127405336019}
- {fileID: 1618483696613343696}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2903605308500103306
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7187375229850072788}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0655215211725524ab947b3480a3a8cc, type: 3}
m_Name:
m_EditorClassIdentifier:
highlight: {fileID: 8139581225852077297}
radius: 1
interactableWithRange: 0
rangedRadius: 10
interactionTransform: {fileID: 7187375229850072791}
itemDrop:
ItemName:
Icon: {fileID: 0}
sellPricePlayer: 0
sellPriceVendor: 0
description:
templateIndex: 0
--- !u!54 &6961750306551488121
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7187375229850072788}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_UseGravity: 0
m_IsKinematic: 1
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!135 &3758058927284355959
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7187375229850072788}
m_Material: {fileID: 0}
m_IsTrigger: 1
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.4
m_Center: {x: 0, y: 0.25, z: 0}
--- !u!1001 &2425268118434434782
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 7187375229850072791}
m_Modifications:
- target: {fileID: 4025737416509521484, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4025737416509540140, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4025737416509597502, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalScale.x
value: 1.5
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalScale.y
value: 1.5
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalScale.z
value: 1.5
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_ConstrainProportionsScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4025737416529588542, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_Name
value: ItemEpicRed
objectReference: {fileID: 0}
- target: {fileID: 4942320960609734321, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
--- !u!4 &1618483696613343696 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4025737416529350414, guid: 39cc5ef9c499be04b937818e22956672, type: 3}
m_PrefabInstance: {fileID: 2425268118434434782}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6649169152610105825
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 7187375229850072791}
m_Modifications:
- target: {fileID: 273957096685082160, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3220920230613450000, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_Name
value: CharacterCircleYellow
objectReference: {fileID: 0}
- target: {fileID: 3220920230613450000, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalPosition.y
value: 0.1
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9659259
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalRotation.y
value: 0.25881904
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 30.000002
objectReference: {fileID: 0}
- target: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
--- !u!4 &1344393127405336019 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5687666382565002290, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
m_PrefabInstance: {fileID: 6649169152610105825}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8139581225852077297 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3220920230613450000, guid: 192fe42b654ad7144b59bf436410b8b6, type: 3}
m_PrefabInstance: {fileID: 6649169152610105825}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &7187375228888348370
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 7187375229850072791}
m_Modifications:
- target: {fileID: 1770571109050598, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_Name
value: SM_Icon_CoinBag_01
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalScale.x
value: 0.8
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalScale.y
value: 0.8
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalScale.z
value: 0.8
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalPosition.y
value: 0.2
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
--- !u!4 &7183679910667640660 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4258828872886662, guid: 26ebce2f78526014da0d1b69d835b6e9, type: 3}
m_PrefabInstance: {fileID: 7187375228888348370}
m_PrefabAsset: {fileID: 0}

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5ec31cefbf34fc84b832994236df9125
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -124,7 +124,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: adb84e30e02715445aeb9959894e3b4d, type: 3}
m_Name: ColorGrading
m_EditorClassIdentifier:
active: 1
active: 0
enabled:
overrideState: 1
value: 1

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 705507994}
m_IndirectSpecularColor: {r: 0.02530161, g: 0.053144906, b: 0.055800058, a: 1}
m_IndirectSpecularColor: {r: 0.06424892, g: 0.12860116, b: 0.13426697, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@ -1879,6 +1879,54 @@ Transform:
m_CorrespondingSourceObject: {fileID: 5740706088277981957, guid: 48ce0dab15dcddb4495c7a5a09fa4dfa, type: 3}
m_PrefabInstance: {fileID: 347753810}
m_PrefabAsset: {fileID: 0}
--- !u!1 &359538214
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 359538216}
- component: {fileID: 359538215}
m_Layer: 0
m_Name: RiftRaidVFX
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &359538215
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359538214}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b2ed689647245341963057a91ca6722, type: 3}
m_Name:
m_EditorClassIdentifier:
purpleRift: {r: 0.67817116, g: 0, b: 1, a: 1}
redRift: {r: 1, g: 0, b: 0, a: 1}
yellowRift: {r: 1, g: 0.8533139, b: 0, a: 1}
riftraidVFX: {fileID: 9220211467238602414}
--- !u!4 &359538216
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359538214}
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: 0}
m_RootOrder: 17
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &387126292
PrefabInstance:
m_ObjectHideFlags: 0
@ -11748,63 +11796,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 797a23835fc71fa4a9ba1b749b439f55, type: 3}
--- !u!1001 &4514221123613451044
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_RootOrder
value: 13
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782221, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_Name
value: Skellyard_PostProcessingVolume_Bloom_AO_ColorGrading
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e188b434e6371854f82b31ddba22027f, type: 3}
--- !u!1001 &7092102866103778006
PrefabInstance:
m_ObjectHideFlags: 0
@ -11862,3 +11853,52 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: eff971f49703cfa41852c63ba9a287b9, type: 3}
--- !u!1 &9220211467238602409
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9220211467238602415}
- component: {fileID: 9220211467238602414}
m_Layer: 13
m_Name: RiftRaid_PostProcessingVolume_Bloom_AO_ColorGrading
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &9220211467238602414
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9220211467238602409}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b9a305e18de0c04dbd257a21cd47087, type: 3}
m_Name:
m_EditorClassIdentifier:
sharedProfile: {fileID: 11400000, guid: 5ec31cefbf34fc84b832994236df9125, type: 2}
isGlobal: 1
blendDistance: 0
weight: 1
priority: 0
--- !u!4 &9220211467238602415
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9220211467238602409}
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: 0}
m_RootOrder: 13
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &4074264458465689596
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782219, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4706676449752782221, guid: e188b434e6371854f82b31ddba22027f, type: 3}
propertyPath: m_Name
value: Skellyard_PostProcessingVolume_Bloom_AO_ColorGrading
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e188b434e6371854f82b31ddba22027f, type: 3}

View File

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

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3ba9c016f46bfdc47a03069408312d2c, type: 3}
m_Name: AbilityTomePage
m_EditorClassIdentifier:
ItemName: AbilityTomePage
Icon: {fileID: 21300000, guid: 2bc414d7ceec8f245a032dcdcdeccfb7, type: 3}
sellPricePlayer: 10
sellPriceVendor: 5000
description: <color=#FFF3D4>A fragment of ancient combat mastery, its edges yearning
to be reunited with its scattered brethren. Knowledge lies dormant until the
complete sequence is discovered.</color>

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 81d43461cb6d9004a9373db85282473f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 96ca2de4326426a41b20874c46b4aee3, type: 3}
m_Name: OnAbilityTomePageLearned
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 672e2337eaae0c1408a50a9e9bb3e143
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,3 +1,4 @@
using Kryz.CharacterStats.Examples;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@ -29,8 +30,48 @@ public class BuildLibrary : MonoBehaviour
}
#endregion
[SerializeField] private GameEvent_Int onAbilityTomePageLearned;
[SerializeField] private Item abilityTomePageTemplate;
public List<ClassBuildLibrary> classBuildLibraries = new List<ClassBuildLibrary>();
public List<AbilityTomePageInstance> abilityTomeInstances = new List<AbilityTomePageInstance>();
private List<AbilityTomePageInstance> stillLockedAbilityTomePages = new List<AbilityTomePageInstance>();
private void Start()
{
for (int i = 0; i < classBuildLibraries.Count; i++)
{
for (int j = 0; j < classBuildLibraries[i].possibleClassAbilities.Count; j++)
{
if(j == 0)
{
PlayerDataHandler.Instance.SaveAbilityTomeProgress(PlayerDataHandler.Instance.currentPlayerName.Value, AbilityIndexer.Instance.Abilities.IndexOf(classBuildLibraries[i].possibleClassAbilities[j]), 10);
}
abilityTomeInstances.Add(new AbilityTomePageInstance(classBuildLibraries[i].possibleClassAbilities[j], abilityTomePageTemplate, onAbilityTomePageLearned));
}
}
}
public AbilityTomePageInstance GetRandomLockedAbilityTomePageInstance()
{
for (int i = 0; i < abilityTomeInstances.Count; i++)
{
if(PlayerDataHandler.Instance.AbilityTomeUnlocked(PlayerDataHandler.Instance.currentPlayerName.Value, abilityTomeInstances[i].abilityIndex))
{
continue;
}
else
{
stillLockedAbilityTomePages.Add(abilityTomeInstances[i]);
}
}
return stillLockedAbilityTomePages[Random.Range(0, stillLockedAbilityTomePages.Count)];
}
public List<BaseAbility> GetBaseAbilities(GameTag characterClass)
{
for (int i = 0; i < classBuildLibraries.Count; i++)

View File

@ -1,3 +1,4 @@
using Kryz.CharacterStats.Examples;
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
@ -24,12 +25,17 @@ public class BuildManager : MonoBehaviour
PhotonView owner;
PlayerCharacterStats playerCharacterStats;
public GameTag CharacterClass => characterClass;
public List<BuildSlot> SelectedBuildSlots => selectedBuildSlots;
private void Awake()
{
owner = GetComponentInParent<PhotonView>();
playerCharacterStats = owner.GetComponent<PlayerCharacterStats>();
playerCharacterStats.level.OnLevelUpEvent.AddListener(CheckForSlotUnlockables);
}
// Start is called before the first frame update
@ -49,6 +55,8 @@ public class BuildManager : MonoBehaviour
TryGetSavedBuildData();
CheckForSlotUnlockables();
onBuildManagerInitialized.Raise(this);
}
@ -101,4 +109,12 @@ public class BuildManager : MonoBehaviour
SaveCurrentBuild();
}
private void CheckForSlotUnlockables()
{
abilityKeyBinders[0].SetUnlockAbilitySlot(true);
abilityKeyBinders[1].SetUnlockAbilitySlot(playerCharacterStats.level.currentLevel >= GameConstants.GameBalancing.AbilitySlot_II_LevelRequired);
abilityKeyBinders[2].SetUnlockAbilitySlot(playerCharacterStats.level.currentLevel >= GameConstants.GameBalancing.AbilitySlot_III_LevelRequired);
abilityKeyBinders[3].SetUnlockAbilitySlot(playerCharacterStats.level.currentLevel >= GameConstants.GameBalancing.AbilitySlot_IV_LevelRequired);
}
}

View File

@ -1,3 +1,4 @@
using Kryz.CharacterStats.Examples;
using System.Collections;
using System.Collections.Generic;
using TMPro;
@ -9,6 +10,7 @@ public class BuildManagerUIController : MonoBehaviour
[SerializeField] private List<TMP_Dropdown> abilitySlotsDropdowns = new List<TMP_Dropdown>();
[SerializeField] private GameEventListener_BuildManager onBuildManagerInitialized;
[SerializeField] private GameEventListener_Int onAbilityTomePageLearned;
BuildManager buildManager;
@ -20,11 +22,13 @@ public class BuildManagerUIController : MonoBehaviour
int pickedEntry;
string pickedEntryName;
BaseAbility ability;
PlayerCharacterStats playerCharacter;
private void Awake()
{
onBuildManagerInitialized.Response.AddListener(DependencyInjection);
onAbilityTomePageLearned.Response.AddListener((x) => InitializeDropdowns());
abilitySlotsDropdowns[0].onValueChanged.AddListener((x) => UpdateAbilitySlotOnDropdownValueChanged(0, x));
abilitySlotsDropdowns[1].onValueChanged.AddListener((x) => UpdateAbilitySlotOnDropdownValueChanged(1, x));
@ -50,6 +54,9 @@ public class BuildManagerUIController : MonoBehaviour
private void DependencyInjection(BuildManager buildManager)
{
this.buildManager = buildManager;
playerCharacter = buildManager.GetComponentInParent<PlayerCharacterStats>();
playerCharacter.level.OnLevelUpEvent.AddListener(CheckForSlotUnlockables);
InitializeDropdowns();
}
@ -62,6 +69,10 @@ public class BuildManagerUIController : MonoBehaviour
for (int i = 0; i < possibleAbilities.Count; i++)
{
if (!PlayerDataHandler.Instance.AbilityTomeUnlocked(PlayerDataHandler.Instance.currentPlayerName.Value, AbilityIndexer.Instance.Abilities.IndexOf(possibleAbilities[i])))
{
continue;
}
optionData = new TMP_Dropdown.OptionData();
optionData.text = possibleAbilities[i].displayName;
@ -80,5 +91,15 @@ public class BuildManagerUIController : MonoBehaviour
abilitySlotsDropdowns[i].value = possibleAbilities.IndexOf(buildManager.SelectedBuildSlots[i].ability);
}
CheckForSlotUnlockables();
}
private void CheckForSlotUnlockables()
{
abilitySlotsDropdowns[0].interactable = true;
abilitySlotsDropdowns[1].interactable = playerCharacter.level.currentLevel >= GameConstants.GameBalancing.AbilitySlot_II_LevelRequired;
abilitySlotsDropdowns[2].interactable = playerCharacter.level.currentLevel >= GameConstants.GameBalancing.AbilitySlot_III_LevelRequired;
abilitySlotsDropdowns[3].interactable = playerCharacter.level.currentLevel >= GameConstants.GameBalancing.AbilitySlot_IV_LevelRequired;
}
}

View File

@ -7,6 +7,7 @@ using UnityEngine;
public class DropTable : MonoBehaviour
{
[SerializeField] private GameObject interactableDropPrefab;
[SerializeField] private GameObject interactableDropAbilityTomePagePrefab;
[SerializeField] private GameObject coinPrefab;
[SerializeField] private int coinAmount;
[SerializeField] private int extraDropChance;
@ -81,24 +82,20 @@ public class DropTable : MonoBehaviour
itemDrop = instantiatedDrop.GetComponent<EquippableItemDrop>();
itemDrop.itemDrop = Item.ConvertTemplateIntoInstance(possibleItem);
}
else
{
if(Random.Range(0,100) > 49)
{
spawnPosition = this.transform.position - Vector3.one * 0.3f;
spawnPosition.y = 0f;
instantiatedDrop = Instantiate(interactableDropAbilityTomePagePrefab, spawnPosition, this.transform.rotation);
itemDrop = instantiatedDrop.GetComponent<EquippableItemDrop>();
itemDrop.itemDrop = BuildLibrary.Instance.GetRandomLockedAbilityTomePageInstance();
}
}
if (!lootDrop) return;
/*
if (extraDrops.Count <= 0) return;
spawnPosition = this.transform.position;
spawnPosition.y = 0f;
instantiatedEquippableDrop = Instantiate(interactableDropPrefab, spawnPosition, this.transform.rotation);
equippableItemDrop = instantiatedDrop.GetComponent<EquippableItemDrop>();
equippableItemDrop.itemDrop = extraDrops[Random.Range(0, extraDrops.Count)];
if (nonEquippablesDrops.Count <= 0) return;
spawnPosition = this.transform.position + Vector3.one * 0.3f;
spawnPosition.y = 0f;
instantiatedDrop = Instantiate(interactableDropPrefab, spawnPosition, this.transform.rotation);
itemDrop = instantiatedDrop.GetComponent<EquippableItemDrop>();
itemDrop.itemDrop = nonEquippablesDrops[Random.Range(0, nonEquippablesDrops.Count)];*/
if (weightedDropLootTable.Count <= 0) return;

View File

@ -11,6 +11,8 @@ public static class GameConstants
public static string CharacterBuildDataKey = "characterBuildData";
public static string PlayerCoinKey = "playerCoin";
public static string AbilityTomeKey = "abilityTome";
public const string SunMapUsedKey = "sunMapUsed";
public const string MoonMapUsedKey = "moonMapUsed";
public const string RiverAveMapUsedKey = "riverAveMapUsed";
@ -62,6 +64,10 @@ public static class GameConstants
return SunMapUsedKey + "-" + playerName;
}
}
public static string GetAbilityTomeKey(string playerName, int abilityIndex)
{
return playerName + "-" + AbilityTomeKey + "-" + abilityIndex;
}
#endregion
@ -145,6 +151,7 @@ public static class GameConstants
public const int StatPointsPerLevel = 3;
public const int StatPointsPerReputationLevel = 3;
}
public static class CharacterBalancing
@ -153,6 +160,10 @@ public static class GameConstants
public const float ExperienceThresholdGrowth = 165f;
public const float ExperienceThresholdGrowthPerLevelExponent = 1.88f;
public const float BaseReputationExperienceThreshold = 5f;
public const float ReputationExperienceThresholdGrowth = 1.375f;
public const float ReputationExperienceThresholdGrowthPerLevelExponent = 1.88f;
public const float SoloCheatDeathHealthPercent = 0.5f;
public const float SoloCheatDeathInvulnerabilityDuration = 3f;
@ -163,8 +174,6 @@ public static class GameConstants
public const float ReviveTime = 5f;
public const float ReviveHealthPercent = 0.5f;
public const float MovementSpeedCap = 10f;
public const float PercentAngularSpeedCap = 1f;
public const float PercentAccelerationCap = 1f;
@ -175,6 +184,12 @@ public static class GameConstants
}
public static class GameBalancing
{
public const int TotalPagesPerAbilityTome = 7;
public const int AbilitySlot_II_LevelRequired = 5;
public const int AbilitySlot_III_LevelRequired = 10;
public const int AbilitySlot_IV_LevelRequired = 15;
public const float IncreasedCoinDropBasedOnDifficultyMultiplier = 1.66f;
public const float IncreasedItemDropBasedOnDifficultyMultiplier = 0.33f;
@ -272,6 +287,7 @@ public static class GameConstants
#region Object Sources (example stat increase source)
public static object AllocatedSource = "Allocated";
public static object AllocatedReputationSource = "Rep Alloc";
public static object LevelSource = "Level";
public static object BaseValueSource = "Base";
public static object CraftingSource = "Crafting";

View File

@ -51,7 +51,8 @@ public class InventoryInstanceData
for (int i = 0; i < inventoryItems.Length; i++)
{
this.inventoryItems[i] = inventoryItems[i];
this.inventoryItems[i].Icon = SpriteIndexer.Instance.Sprites[this.inventoryItems[i].spriteIndex];
//this.inventoryItems[i].Icon = SpriteIndexer.Instance.Sprites[this.inventoryItems[i].spriteIndex];
//this.inventoryItems[i].Icon = SpriteIndexer.Instance.GetSpriteByName(this.inventoryItems[i].spriteName);
}
}

View File

@ -56,6 +56,9 @@ public class PlayerDataHandler : MonoBehaviour
string sunMapUsedKey;
string riverAveMapUsedKey;
string mapUsedKey;
string abilityTomeKey;
int currentPageCount;
private void Awake()
{
@ -217,5 +220,30 @@ public class PlayerDataHandler : MonoBehaviour
return GameStatePersistenceManager.Instance.HasDataForKey(mapUsedKey);
}
public void SaveAbilityTomeProgress(string playerName, int abilityIndex, int pageCount)
{
abilityTomeKey = GameConstants.PlayerPrefsKeys.GetAbilityTomeKey(playerName, abilityIndex);
currentPageCount = pageCount + GameStatePersistenceManager.Instance.LoadProgressDataCheckPoint(abilityTomeKey);
GameStatePersistenceManager.Instance.SaveProgressDataCheckPoint(abilityTomeKey, currentPageCount);
}
public int LoadAbilityTomeProgress(string playerName, int abilityIndex)
{
abilityTomeKey = GameConstants.PlayerPrefsKeys.GetAbilityTomeKey(playerName, abilityIndex);
currentPageCount = GameStatePersistenceManager.Instance.LoadProgressDataCheckPoint(abilityTomeKey);
return currentPageCount;
}
public bool AbilityTomeUnlocked(string playerName, int abilityIndex)
{
abilityTomeKey = GameConstants.PlayerPrefsKeys.GetAbilityTomeKey(playerName, abilityIndex);
currentPageCount = GameStatePersistenceManager.Instance.LoadProgressDataCheckPoint(abilityTomeKey);
return currentPageCount >= GameConstants.GameBalancing.TotalPagesPerAbilityTome;
}
#endregion
}

View File

@ -20,6 +20,17 @@ public class SpriteIndexer : MonoBehaviour
public List<Sprite> Sprites = new List<Sprite>();
public Sprite GetSpriteByName(string name)
{
for (int i = 0; i < Sprites.Count; i++)
{
if (Sprites[i].name == name)
return Sprites[i];
}
return null;
}
protected void Awake()
{
// Ensure there's only one instance
@ -33,16 +44,16 @@ public class SpriteIndexer : MonoBehaviour
_instance = this;
DontDestroyOnLoad(gameObject);
}
/*
private void OnValidate()
{
if (Sprites == null) return;
foreach (Sprite item in Resources.FindObjectsOfTypeAll<Sprite>())
foreach (Sprite item in Resources.LoadAll<Sprite>("Icons/"))
{
if (Sprites.Contains(item)) continue;
Sprites.Add(item);
}
}
}*/
}

View File

@ -110,7 +110,7 @@ public class JobManager : MonoBehaviour, IInRoomCallbacks
{
if (!JobActive) return;
if(currentlySelectedJob.isBonusRiftJob)
if (currentlySelectedJob.isBonusRiftJob)
{
return;
}
@ -207,7 +207,8 @@ public class JobManager : MonoBehaviour, IInRoomCallbacks
GenerateJobs();
}
currentlyGeneratedRiftRaid = GenerateBonusRiftInstance();
if (currentlyGeneratedRiftRaid.completed)
currentlyGeneratedRiftRaid = GenerateBonusRiftInstance();
AvailableJobs jobs = new AvailableJobs();
jobs.availableJobs = availableJobs;

View File

@ -32,6 +32,7 @@ public class AbilityKeyBinder : MonoBehaviour
AbilityCooldownTracker cooldownTracker;
bool isDead = false;
bool abilitySlotUnlocked = false;
float finalHealthCost;
float finalManaCost;
@ -74,6 +75,8 @@ public class AbilityKeyBinder : MonoBehaviour
{
if (isDead) return;
if (!abilitySlotUnlocked) return;
// Check for input using both keyboard and gamepad
isInputPressed =
(key != null && Input.GetKeyDown(key.keyCode)) ||
@ -177,4 +180,10 @@ public class AbilityKeyBinder : MonoBehaviour
onAbilityKeyBinderSpawned.Raise(this);
}
public void SetUnlockAbilitySlot(bool unlocked)
{
abilitySlotUnlocked = unlocked;
abilityBindInstance.SetUnlocked(unlocked);
}
}

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
[System.Serializable]
public class Level
{
public int currentLevel;
@ -10,7 +11,7 @@ public class Level
public UnityEvent OnLevelUpEvent = new UnityEvent();
public UnityEvent OnExperienceChanged = new UnityEvent();
float currentExperience;
protected float currentExperience;
public float GetCurrentExperience()
{
return currentExperience;
@ -54,9 +55,31 @@ public class Level
OnExperienceChanged.Invoke();
}
public void UpdateExperienceThreshold()
public virtual void UpdateExperienceThreshold()
{
FinalExperienceThreshold = Mathf.RoundToInt(GameConstants.CharacterBalancing.BaseExperienceThreshold + GameConstants.CharacterBalancing.ExperienceThresholdGrowth * Mathf.Pow((float)currentLevel, GameConstants.CharacterBalancing.ExperienceThresholdGrowthPerLevelExponent));
}
}
[System.Serializable]
public class ReputationLevel : Level
{
public ReputationLevel() : base()
{
currentLevel = 0;
currentExperience = 0f;
}
public ReputationLevel(int currentLevel, float currentExperience) : base(currentLevel, currentExperience)
{
this.currentLevel = currentLevel;
this.currentExperience = currentExperience;
}
public override void UpdateExperienceThreshold()
{
FinalExperienceThreshold = Mathf.RoundToInt(GameConstants.CharacterBalancing.BaseReputationExperienceThreshold + GameConstants.CharacterBalancing.ReputationExperienceThresholdGrowth * Mathf.Pow((float)currentLevel, GameConstants.CharacterBalancing.ReputationExperienceThresholdGrowthPerLevelExponent));
}
}

View File

@ -4,15 +4,26 @@ using UnityEngine;
public class PlayerReputation : MonoBehaviour
{
// Start is called before the first frame update
void Start()
public ReputationLevel reputationLevel;
PlayerAccountData accountData = new PlayerAccountData();
private void Awake()
{
reputationLevel = new ReputationLevel();
}
accountData = PlayerDataHandler.Instance.LoadPlayerAccountData(PlayerDataHandler.Instance.currentPlayerName.Value);
// Update is called once per frame
void Update()
{
if(accountData != null)
{
Debug.Log("Success Loading CharacterData");
reputationLevel = new ReputationLevel(accountData.currentReputationLevel, accountData.currentReputationExperience);
}
else
{
accountData = new PlayerAccountData();
}
}
}

View File

@ -0,0 +1,34 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
public class RiftRaidVFX : MonoBehaviour
{
[SerializeField] private Color purpleRift;
[SerializeField] private Color redRift;
[SerializeField] private Color yellowRift;
[SerializeField] private PostProcessVolume riftraidVFX;
// Start is called before the first frame update
void Start()
{
switch (JobManager.Instance.currentlyGeneratedRiftRaid.bonusRiftType)
{
case RiftType.Yellow:
riftraidVFX.profile.GetSetting<Vignette>().color.value = yellowRift;
break;
case RiftType.Purple:
riftraidVFX.profile.GetSetting<Vignette>().color.value = purpleRift;
break;
case RiftType.Red:
riftraidVFX.profile.GetSetting<Vignette>().color.value = redRift;
break;
default:
riftraidVFX.profile.GetSetting<Vignette>().color.value = purpleRift;
break;
}
}
}

View File

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

View File

@ -71,4 +71,8 @@ public class GameStatePersistenceManager : MonoBehaviour
{
PlayerPrefs.SetInt(key, value);
}
public int LoadProgressDataCheckPoint(string key)
{
return PlayerPrefs.GetInt(key, 0);
}
}

View File

@ -8,21 +8,35 @@ public class PlayerAccountData
public string userName;
public List<string> characterNames = new List<string>();
public int currentReputationLevel;
public float currentReputationExperience;
public PlayerAccountData()
{
userName = "Player1";
characterNames = new List<string>();
currentReputationLevel = 0;
currentReputationExperience = 0;
}
public PlayerAccountData(string userName)
{
this.userName = userName;
characterNames = new List<string>();
currentReputationLevel = 0;
currentReputationExperience = 0;
}
public PlayerAccountData(string userName, List<string> characters)
{
this.userName = userName;
characterNames = characters;
}
public PlayerAccountData(string userName, List<string> characters, int replevel, float repExp)
{
this.userName = userName;
characterNames = characters;
currentReputationLevel = replevel;
currentReputationExperience = repExp;
}
public bool AddCharacterToPlayerAccount(string characterName)
{

View File

@ -21,6 +21,7 @@ public class AbilityBindInstance : MonoBehaviour
public GameObject healthCostGO;
public GameObject pressed;
public Image coolDown;
public GameObject locked;
[Header("Set by Code:")]
public AbilityKeyBinder abilityKeyBinder;
@ -80,4 +81,9 @@ public class AbilityBindInstance : MonoBehaviour
coolDown.fillAmount = 0f;
coolDown.gameObject.SetActive(false);
}
public void SetUnlocked(bool unlocked)
{
locked.SetActive(!unlocked);
}
}

View File

@ -15,6 +15,7 @@ public class ExperienceBarUI : MonoBehaviour
[SerializeField] private Image experienceBarFill;
[Header("Listeners:")]
[SerializeField] private GameEventListener_PhotonView onPlayerSpawned;
public bool isRepBar = false;
PlayerCharacterStats player;
@ -41,8 +42,16 @@ public class ExperienceBarUI : MonoBehaviour
if (!spawnedPlayer.IsMine) return;
player = ((RiftPlayer)spawnedPlayer.Owner.TagObject).GetComponent<PlayerCharacterStats>();
player.level.OnLevelUpEvent.AddListener(UpdateLevelText);
player.level.OnExperienceChanged.AddListener(UpdateLevelText);
if(isRepBar)
{
player.reputationLevel.OnLevelUpEvent.AddListener(UpdateLevelText);
player.reputationLevel.OnExperienceChanged.AddListener(UpdateLevelText);
}
else
{
player.level.OnLevelUpEvent.AddListener(UpdateLevelText);
player.level.OnExperienceChanged.AddListener(UpdateLevelText);
}
UpdateLevelText();
@ -52,15 +61,15 @@ public class ExperienceBarUI : MonoBehaviour
public void UpdateLevelText()
{
level.text = player.level.currentLevel.ToString();
nextLevel.text = (player.level.currentLevel + 1).ToString();
experienceBar.text = $"{player.level.GetCurrentExperience().ToString("F1")}/{player.level.FinalExperienceThreshold.ToString("F1")}";
level.text = isRepBar ? player.reputationLevel.currentLevel.ToString() : player.level.currentLevel.ToString();
nextLevel.text = isRepBar ? (player.reputationLevel.currentLevel + 1).ToString() : (player.level.currentLevel + 1).ToString();
experienceBar.text = isRepBar ? $"{player.reputationLevel.GetCurrentExperience().ToString("F1")}/{player.reputationLevel.FinalExperienceThreshold.ToString("F1")}" : $"{player.level.GetCurrentExperience().ToString("F1")}/{player.level.FinalExperienceThreshold.ToString("F1")}";
SetCurrentFill();
}
private void SetCurrentFill()
{
currentFill = player.level.GetCurrentExperience() / player.level.FinalExperienceThreshold;
currentFill = isRepBar ? player.reputationLevel.GetCurrentExperience() / player.reputationLevel.FinalExperienceThreshold : player.level.GetCurrentExperience() / player.level.FinalExperienceThreshold;
sizeFill.x = 0;
sizeFill.y = 0;

View File

@ -94,7 +94,7 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Rotation: 13.448983
- _Rotation: 1184.3033
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1