├── Screenshots
├── LootBag.png
├── LootButton.png
├── UILootItems.png
├── GameInstance.png
├── LootBagRewards.png
├── LootSettings.png
├── BlockControllerUIs.png
├── LootButtonActivator.png
├── CanvasGameplayDebugMode.png
├── CanvasGameplay_Dialogs.png
├── GameDatabaseLootBagItems.png
├── MonsterCharacterSettings.png
├── CanvasGameplayScriptReplace.png
├── MonsterCharacterLootSettings.png
├── PlayerCharacterLootSettings.png
└── CanvasGameplay_UILootBagStorageDialog.png
├── Fantasy Treasure Pack Lite
├── Mesh
│ ├── sack_010.fbx
│ └── Materials
│ │ └── texture_04.mat
└── Texture
│ └── texture_04.png
├── Scripts
├── GameNetworkingConsts_LootBag.cs
├── LootItemTable.cs
├── LootBagFilterItem.cs
├── LootBagItemTable.cs
├── LootBagItemFilterTable.cs
├── MonsterCharacter_LootBag.cs
├── BaseMonsterCharacterEntity_LootBag.cs
├── GameInstance_LootBag.cs
├── IServerStorageHandlers_LootBag.cs
├── UICharacterItem_LootBag.cs
├── UIMouseClickHandler.cs
├── IServerStorageMessageHandlers_LootBag.cs
├── DefaultClientStorageHandlers_LootBag.cs
├── LootBagStorageActions.cs
├── UILootBagItems.cs
├── IClientStorageHandlers_LootBag.cs
├── BaseGameNetworkManager_LootBag.cs
├── LanRpgServerStorageHandlers_LootBag.cs
├── MMOServerStorageHandlers_LootBag.cs
├── ActivateButtonActivator_LootBag.cs
├── LanRpgServerStorageMessageHandlers_LootBag.cs
├── PlayerCharacter_LootBag.cs
├── MMOServerStorageMessageHandlers_LootBag.cs
├── BaseCharacterEntity_LootBag.cs
├── UISceneGameplay_LootBag.cs
├── BaseCharacter_LootBag.cs
├── BasePlayerCharacterEntity_LootBag.cs
└── LootBagEntity.cs
├── GameData
├── OrcLootItemTable1.asset
├── Orc Item Drop Table 1.asset
├── Loot Bag Item Filter Table.asset
├── Orc Item Drop Table 2.asset
├── OrcLootItemTable2.asset
├── Orc Item Drop Table.asset
├── Loot Bag Visible.asset
└── Loot Bag Invisible.asset
├── LICENSE
├── .gitignore
├── README.md
├── README-OLD.md
└── Resources
├── LootBags
├── LootBagEntityInvisible.prefab
└── LootBagEntityVisible.prefab
└── UI
└── UIItemIcon_WithDragHandler_LootBag.prefab
/Screenshots/LootBag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/LootBag.png
--------------------------------------------------------------------------------
/Screenshots/LootButton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/LootButton.png
--------------------------------------------------------------------------------
/Screenshots/UILootItems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/UILootItems.png
--------------------------------------------------------------------------------
/Screenshots/GameInstance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/GameInstance.png
--------------------------------------------------------------------------------
/Screenshots/LootBagRewards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/LootBagRewards.png
--------------------------------------------------------------------------------
/Screenshots/LootSettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/LootSettings.png
--------------------------------------------------------------------------------
/Screenshots/BlockControllerUIs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/BlockControllerUIs.png
--------------------------------------------------------------------------------
/Screenshots/LootButtonActivator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/LootButtonActivator.png
--------------------------------------------------------------------------------
/Screenshots/CanvasGameplayDebugMode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/CanvasGameplayDebugMode.png
--------------------------------------------------------------------------------
/Screenshots/CanvasGameplay_Dialogs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/CanvasGameplay_Dialogs.png
--------------------------------------------------------------------------------
/Screenshots/GameDatabaseLootBagItems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/GameDatabaseLootBagItems.png
--------------------------------------------------------------------------------
/Screenshots/MonsterCharacterSettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/MonsterCharacterSettings.png
--------------------------------------------------------------------------------
/Fantasy Treasure Pack Lite/Mesh/sack_010.fbx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Fantasy Treasure Pack Lite/Mesh/sack_010.fbx
--------------------------------------------------------------------------------
/Screenshots/CanvasGameplayScriptReplace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/CanvasGameplayScriptReplace.png
--------------------------------------------------------------------------------
/Screenshots/MonsterCharacterLootSettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/MonsterCharacterLootSettings.png
--------------------------------------------------------------------------------
/Screenshots/PlayerCharacterLootSettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/PlayerCharacterLootSettings.png
--------------------------------------------------------------------------------
/Fantasy Treasure Pack Lite/Texture/texture_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Fantasy Treasure Pack Lite/Texture/texture_04.png
--------------------------------------------------------------------------------
/Screenshots/CanvasGameplay_UILootBagStorageDialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vaughanb/UnityMultiplayerARPG_LootBag/HEAD/Screenshots/CanvasGameplay_UILootBagStorageDialog.png
--------------------------------------------------------------------------------
/Scripts/GameNetworkingConsts_LootBag.cs:
--------------------------------------------------------------------------------
1 | namespace MultiplayerARPG
2 | {
3 | public partial class GameNetworkingConsts
4 | {
5 | public const ushort MoveAllItemsFromStorage = 1337;
6 | }
7 | }
--------------------------------------------------------------------------------
/Scripts/LootItemTable.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace MultiplayerARPG
4 | {
5 | [CreateAssetMenu(fileName = "Loot Item Table", menuName = "Create GameData/Loot Item Table", order = -4993)]
6 | public class LootItemTable : ScriptableObject
7 | {
8 | [ArrayElementTitle("item")]
9 | public ItemDrop[] randomItems;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Scripts/LootBagFilterItem.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace MultiplayerARPG
4 | {
5 | [System.Serializable]
6 | public struct LootBagFilterItem
7 | {
8 | public BaseItem item;
9 | [Tooltip("Drop rate applies only to inclusive loot bag filter behavior.")]
10 | [Range(0f, 1f)]
11 | public float dropRate;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Scripts/LootBagItemTable.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace MultiplayerARPG
4 | {
5 | [CreateAssetMenu(fileName = "Loot Bag Item Table", menuName = "Create GameData/Loot Bag Item Table", order = -4993)]
6 | public class LootBagItemTable : ScriptableObject
7 | {
8 | [ArrayElementTitle("item")]
9 | public ItemDrop[] randomItems;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Scripts/LootBagItemFilterTable.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace MultiplayerARPG
4 | {
5 | [CreateAssetMenu(fileName = "Loot Bag Item Filter Table", menuName = "Create GameData/Loot Bag Item Filter Table", order = -4993)]
6 | public class LootBagItemFilterTable : ScriptableObject
7 | {
8 | [ArrayElementTitle("item")]
9 | public LootBagFilterItem[] randomItems;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Scripts/MonsterCharacter_LootBag.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace MultiplayerARPG
4 | {
5 | public partial class MonsterCharacter : BaseCharacter
6 | {
7 | [Category("Loot Bag Settings")]
8 | [Tooltip("If selected, monster's body will remain as long as loot bag does")]
9 | public bool syncDestroyDelayWithBody = true;
10 |
11 | public MonsterCharacter()
12 | {
13 | lootBagDestroyDelay = 30;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/Scripts/BaseMonsterCharacterEntity_LootBag.cs:
--------------------------------------------------------------------------------
1 | namespace MultiplayerARPG
2 | {
3 | public abstract partial class BaseMonsterCharacterEntity : BaseCharacterEntity
4 | {
5 | ///
6 | /// Sets the monster character entity's destroy delay to the specified value.
7 | ///
8 | /// seconds until destroy after death
9 | public void SetDestroyDelay(float delay)
10 | {
11 | destroyDelay = delay;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/Scripts/GameInstance_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public partial class GameInstance : MonoBehaviour
7 | {
8 | public Dictionary LootBagEntities;
9 | public LootBagEntity targetLootBagEntity;
10 |
11 | [DevExtMethods("LoadedGameData")]
12 | public void GameDataLoaded_DevExt()
13 | {
14 | foreach (KeyValuePair pc in PlayerCharacters)
15 | {
16 | pc.Value.ResetCaches();
17 | }
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/Scripts/IServerStorageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using Cysharp.Threading.Tasks;
2 | using System.Collections.Generic;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | ///
7 | /// These properties and functions will be called at server only
8 | ///
9 | public partial interface IServerStorageHandlers
10 | {
11 | ///
12 | /// Adds items to loot bag storage
13 | ///
14 | /// ID of loot bag storage
15 | /// items to add to loot bag
16 | UniTask AddLootBagItems(StorageId storageId, List lootItems);
17 | }
18 | }
--------------------------------------------------------------------------------
/Scripts/UICharacterItem_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 | using UnityEngine.Events;
4 | using UnityEngine.UI;
5 | using UnityEngine.Serialization;
6 |
7 | namespace MultiplayerARPG
8 | {
9 | public partial class UICharacterItem : UIDataForCharacter
10 | {
11 | ///
12 | /// Moves the specified item from storage to the player's inventory.
13 | ///
14 | public void MoveItemFromStorage(InventoryType inventoryType, byte equipSlotIndex, short inventoryItemIndex, int amount)
15 | {
16 | OnClickMoveFromStorageConfirmed(inventoryType, equipSlotIndex, inventoryItemIndex, amount);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/Scripts/UIMouseClickHandler.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.Events;
3 | using UnityEngine.EventSystems;
4 |
5 | public class UIMouseClickHandler : MonoBehaviour, IPointerClickHandler
6 | {
7 | public UnityEvent leftClick;
8 | public UnityEvent middleClick;
9 | public UnityEvent rightClick;
10 |
11 | public void OnPointerClick(PointerEventData eventData)
12 | {
13 | if (eventData.button == PointerEventData.InputButton.Left)
14 | leftClick.Invoke();
15 | else if (eventData.button == PointerEventData.InputButton.Middle)
16 | middleClick.Invoke();
17 | else if (eventData.button == PointerEventData.InputButton.Right)
18 | rightClick.Invoke();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Scripts/IServerStorageMessageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using Cysharp.Threading.Tasks;
2 | using LiteNetLibManager;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public partial interface IServerStorageMessageHandlers
7 | {
8 | ///
9 | /// Handles requests to move all items from storage to player.
10 | ///
11 | /// request handler data
12 | /// request
13 | /// result
14 | UniTaskVoid HandleRequestMoveAllItemsFromStorage(
15 | RequestHandlerData requestHandler, RequestMoveAllItemsFromStorageMessage request,
16 | RequestProceedResultDelegate result);
17 | }
18 | }
--------------------------------------------------------------------------------
/Scripts/DefaultClientStorageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using LiteNetLibManager;
2 | using UnityEngine;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public partial class DefaultClientStorageHandlers : MonoBehaviour, IClientStorageHandlers
7 | {
8 | ///
9 | /// Requests to move all items from storage to player.
10 | ///
11 | /// request data
12 | /// response callback
13 | /// true if success, false otherwise
14 | public bool RequestMoveAllItemsFromStorage(RequestMoveAllItemsFromStorageMessage data, ResponseDelegate callback)
15 | {
16 | return Manager.ClientSendRequest(GameNetworkingConsts.MoveAllItemsFromStorage, data, responseDelegate: callback);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/Scripts/LootBagStorageActions.cs:
--------------------------------------------------------------------------------
1 | using LiteNetLibManager;
2 |
3 | namespace MultiplayerARPG
4 | {
5 | public static class LootBagStorageActions
6 | {
7 | public static System.Action onResponseMoveAllItemsFromStorage;
8 |
9 | ///
10 | /// Response callback for MoveAllItemsFromStorage
11 | ///
12 | public static void ResponseMoveAllItemsFromStorage(ResponseHandlerData requestHandler, AckResponseCode responseCode, ResponseMoveAllItemsFromStorageMessage response)
13 | {
14 | ClientGenericActions.ClientReceiveGameMessage(response.message);
15 | if (onResponseMoveAllItemsFromStorage != null)
16 | onResponseMoveAllItemsFromStorage.Invoke(requestHandler, responseCode, response);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/GameData/OrcLootItemTable1.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 588e29679e033af4fa16972ddef410df, type: 3}
13 | m_Name: OrcLootItemTable1
14 | m_EditorClassIdentifier:
15 | randomItems:
16 | - item: {fileID: 11400000, guid: 12442376bd325864e8cd21b3b7ca31e1, type: 2}
17 | minAmount: 0
18 | maxAmount: 5
19 | dropRate: 0.5
20 | - item: {fileID: 11400000, guid: 0a439d3c316c36f4cae03a253c8839d4, type: 2}
21 | minAmount: 0
22 | maxAmount: 5
23 | dropRate: 0.5
24 | - item: {fileID: 11400000, guid: 8ead9c05113e5a5429ec0871d4079f29, type: 2}
25 | minAmount: 0
26 | maxAmount: 1
27 | dropRate: 0.5
28 | - item: {fileID: 11400000, guid: ff345f6fce46c844582749ebc64fd586, type: 2}
29 | minAmount: 0
30 | maxAmount: 1
31 | dropRate: 0.5
32 |
--------------------------------------------------------------------------------
/GameData/Orc Item Drop Table 1.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: bb0558005f522274081c7cfc8f474dfe, type: 3}
13 | m_Name: Orc Item Drop Table 1
14 | m_EditorClassIdentifier:
15 | randomItems:
16 | - item: {fileID: 11400000, guid: 12442376bd325864e8cd21b3b7ca31e1, type: 2}
17 | minAmount: 0
18 | maxAmount: 5
19 | dropRate: 0.5
20 | - item: {fileID: 11400000, guid: 0a439d3c316c36f4cae03a253c8839d4, type: 2}
21 | minAmount: 0
22 | maxAmount: 5
23 | dropRate: 0.5
24 | - item: {fileID: 11400000, guid: 8ead9c05113e5a5429ec0871d4079f29, type: 2}
25 | minAmount: 0
26 | maxAmount: 1
27 | dropRate: 0.5
28 | - item: {fileID: 11400000, guid: ff345f6fce46c844582749ebc64fd586, type: 2}
29 | minAmount: 0
30 | maxAmount: 1
31 | dropRate: 0.5
32 | randomCurrencies: []
33 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 vaughanb
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Scripts/UILootBagItems.cs:
--------------------------------------------------------------------------------
1 | namespace MultiplayerARPG
2 | {
3 | public class UILootBagItems : UIStorageItems
4 | {
5 | bool shouldClose;
6 |
7 | protected override void Update()
8 | {
9 | base.Update();
10 |
11 | if (IsVisible() && shouldClose && CacheSelectionManager.Count == 0)
12 | {
13 | Hide();
14 | shouldClose = false;
15 | } else if (!IsVisible() && shouldClose)
16 | shouldClose = false;
17 | }
18 |
19 | ///
20 | /// Loots all items in the bag without prompting per item.
21 | ///
22 | public void OnClickLootAll()
23 | {
24 | if (CacheSelectionManager != null)
25 | CacheSelectionManager.DeselectAll();
26 |
27 | GameInstance.ClientStorageHandlers.RequestMoveAllItemsFromStorage(new RequestMoveAllItemsFromStorageMessage()
28 | {
29 | storageType = GameInstance.OpenedStorageType,
30 | storageOwnerId = GameInstance.OpenedStorageOwnerId,
31 | }, LootBagStorageActions.ResponseMoveAllItemsFromStorage);
32 |
33 | shouldClose = true;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Mm]emoryCaptures/
12 |
13 | # Asset meta data should only be ignored when the corresponding asset is also ignored
14 | !/[Aa]ssets/**/*.meta
15 |
16 | # Uncomment this line if you wish to ignore the asset store tools plugin
17 | # /[Aa]ssets/AssetStoreTools*
18 |
19 | # Autogenerated Jetbrains Rider plugin
20 | [Aa]ssets/Plugins/Editor/JetBrains*
21 |
22 | # Visual Studio cache directory
23 | .vs/
24 |
25 | # Gradle cache directory
26 | .gradle/
27 |
28 | # Autogenerated VS/MD/Consulo solution and project files
29 | ExportedObj/
30 | .consulo/
31 | *.csproj
32 | *.unityproj
33 | *.sln
34 | *.suo
35 | *.tmp
36 | *.user
37 | *.userprefs
38 | *.pidb
39 | *.booproj
40 | *.svd
41 | *.pdb
42 | *.mdb
43 | *.opendb
44 | *.VC.db
45 |
46 | # Unity3D generated meta files
47 | *.pidb.meta
48 | *.pdb.meta
49 | *.mdb.meta
50 | *.meta
51 |
52 | # Unity3D generated file on crash reports
53 | sysinfo.txt
54 |
55 | # Builds
56 | *.apk
57 | *.unitypackage
58 |
59 | # Crashlytics generated file
60 | crashlytics-build.properties
61 |
62 |
--------------------------------------------------------------------------------
/GameData/Loot Bag Item Filter Table.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 257c7ba20a1d7844dacb87886e8ebc49, type: 3}
13 | m_Name: Loot Bag Item Filter Table
14 | m_EditorClassIdentifier:
15 | randomItems:
16 | - item: {fileID: 11400000, guid: 64774d4b5cf3f9846a2d2088fb52e44a, type: 2}
17 | dropRate: 0.5
18 | - item: {fileID: 11400000, guid: e43af8a3a8f9a7a478dc243c7b15ff5f, type: 2}
19 | dropRate: 0.5
20 | - item: {fileID: 11400000, guid: 66401780aa1f1a24782d11c6980883b2, type: 2}
21 | dropRate: 0.5
22 | - item: {fileID: 11400000, guid: f913fbdc47f19a4408bc793331f9583a, type: 2}
23 | dropRate: 0.5
24 | - item: {fileID: 11400000, guid: 4ec23479e56964a4fb4f2cbd63adf628, type: 2}
25 | dropRate: 0.5
26 | - item: {fileID: 11400000, guid: 99ce6353c3a0b344bb452d0b2035feed, type: 2}
27 | dropRate: 0.5
28 | - item: {fileID: 11400000, guid: 4519d6286cf69b142ac9894ff8e06a31, type: 2}
29 | dropRate: 0.5
30 | - item: {fileID: 11400000, guid: 93c389fe9d40638469bffd9de26d31ba, type: 2}
31 | dropRate: 0.5
32 | - item: {fileID: 11400000, guid: b64f816f68b7d6a42b7d3857a4b5d931, type: 2}
33 | dropRate: 0.5
34 |
--------------------------------------------------------------------------------
/Scripts/IClientStorageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using LiteNetLibManager;
2 | using LiteNetLib.Utils;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public partial interface IClientStorageHandlers
7 | {
8 | bool RequestMoveAllItemsFromStorage(RequestMoveAllItemsFromStorageMessage data, ResponseDelegate callback);
9 | }
10 |
11 | ///
12 | /// MoveAllItemsFromStorage request.
13 | ///
14 | public struct RequestMoveAllItemsFromStorageMessage : INetSerializable
15 | {
16 | public StorageType storageType;
17 | public string storageOwnerId;
18 |
19 | public void Deserialize(NetDataReader reader)
20 | {
21 | storageType = (StorageType)reader.GetByte();
22 | storageOwnerId = reader.GetString();
23 | }
24 |
25 | public void Serialize(NetDataWriter writer)
26 | {
27 | writer.Put((byte)storageType);
28 | writer.Put(storageOwnerId);
29 | }
30 | }
31 |
32 | ///
33 | /// MoveAllItemsFromStorage response.
34 | ///
35 | public struct ResponseMoveAllItemsFromStorageMessage : INetSerializable
36 | {
37 | public UITextKeys message;
38 |
39 | public void Deserialize(NetDataReader reader)
40 | {
41 | message = (UITextKeys)reader.GetPackedUShort();
42 | }
43 |
44 | public void Serialize(NetDataWriter writer)
45 | {
46 | writer.PutPackedUShort((ushort)message);
47 | }
48 | }
49 | }
--------------------------------------------------------------------------------
/GameData/Orc Item Drop Table 2.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: bb0558005f522274081c7cfc8f474dfe, type: 3}
13 | m_Name: Orc Item Drop Table 2
14 | m_EditorClassIdentifier:
15 | randomItems:
16 | - item: {fileID: 11400000, guid: e43af8a3a8f9a7a478dc243c7b15ff5f, type: 2}
17 | minAmount: 0
18 | maxAmount: 1
19 | dropRate: 0.1
20 | - item: {fileID: 11400000, guid: 66401780aa1f1a24782d11c6980883b2, type: 2}
21 | minAmount: 0
22 | maxAmount: 1
23 | dropRate: 0.1
24 | - item: {fileID: 11400000, guid: f913fbdc47f19a4408bc793331f9583a, type: 2}
25 | minAmount: 0
26 | maxAmount: 1
27 | dropRate: 0.1
28 | - item: {fileID: 11400000, guid: 4ec23479e56964a4fb4f2cbd63adf628, type: 2}
29 | minAmount: 0
30 | maxAmount: 1
31 | dropRate: 0.1
32 | - item: {fileID: 11400000, guid: 99ce6353c3a0b344bb452d0b2035feed, type: 2}
33 | minAmount: 0
34 | maxAmount: 1
35 | dropRate: 0.1
36 | - item: {fileID: 11400000, guid: 4519d6286cf69b142ac9894ff8e06a31, type: 2}
37 | minAmount: 0
38 | maxAmount: 1
39 | dropRate: 0.1
40 | - item: {fileID: 11400000, guid: 93c389fe9d40638469bffd9de26d31ba, type: 2}
41 | minAmount: 0
42 | maxAmount: 1
43 | dropRate: 0.1
44 | - item: {fileID: 11400000, guid: b64f816f68b7d6a42b7d3857a4b5d931, type: 2}
45 | minAmount: 0
46 | maxAmount: 1
47 | dropRate: 0.1
48 | randomCurrencies: []
49 |
--------------------------------------------------------------------------------
/GameData/OrcLootItemTable2.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 588e29679e033af4fa16972ddef410df, type: 3}
13 | m_Name: OrcLootItemTable2
14 | m_EditorClassIdentifier:
15 | randomItems:
16 | - item: {fileID: 11400000, guid: e43af8a3a8f9a7a478dc243c7b15ff5f, type: 2}
17 | minAmount: 0
18 | maxAmount: 1
19 | dropRate: 0.1
20 | - item: {fileID: 11400000, guid: 66401780aa1f1a24782d11c6980883b2, type: 2}
21 | minAmount: 0
22 | maxAmount: 1
23 | dropRate: 0.1
24 | - item: {fileID: 11400000, guid: 64774d4b5cf3f9846a2d2088fb52e44a, type: 2}
25 | minAmount: 0
26 | maxAmount: 1
27 | dropRate: 0.1
28 | - item: {fileID: 11400000, guid: f913fbdc47f19a4408bc793331f9583a, type: 2}
29 | minAmount: 0
30 | maxAmount: 1
31 | dropRate: 0.1
32 | - item: {fileID: 11400000, guid: 4ec23479e56964a4fb4f2cbd63adf628, type: 2}
33 | minAmount: 0
34 | maxAmount: 1
35 | dropRate: 0.1
36 | - item: {fileID: 11400000, guid: 99ce6353c3a0b344bb452d0b2035feed, type: 2}
37 | minAmount: 0
38 | maxAmount: 1
39 | dropRate: 0.1
40 | - item: {fileID: 11400000, guid: 4519d6286cf69b142ac9894ff8e06a31, type: 2}
41 | minAmount: 0
42 | maxAmount: 1
43 | dropRate: 0.1
44 | - item: {fileID: 11400000, guid: 93c389fe9d40638469bffd9de26d31ba, type: 2}
45 | minAmount: 0
46 | maxAmount: 1
47 | dropRate: 0.1
48 | - item: {fileID: 11400000, guid: b64f816f68b7d6a42b7d3857a4b5d931, type: 2}
49 | minAmount: 0
50 | maxAmount: 1
51 | dropRate: 0.1
52 |
--------------------------------------------------------------------------------
/Scripts/BaseGameNetworkManager_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 | using LiteNetLibManager;
4 |
5 | namespace MultiplayerARPG
6 | {
7 | public abstract partial class BaseGameNetworkManager : LiteNetLibGameManager
8 | {
9 | [DevExtMethods("RegisterMessages")]
10 | public void RegisterLootBagMessages()
11 | {
12 | RegisterRequestToServer(GameNetworkingConsts.MoveAllItemsFromStorage, ServerStorageMessageHandlers.HandleRequestMoveAllItemsFromStorage);
13 | }
14 |
15 | ///
16 | /// Registers all lootbag prefabs in resources so that they can be spawned.
17 | ///
18 | [DevExtMethods("InitPrefabs")]
19 | public void InitLootBag()
20 | {
21 | Object[] lootBagObjects = Resources.LoadAll("LootBags");
22 | GameInstance.Singleton.LootBagEntities = new Dictionary();
23 |
24 | HashSet spawnablePrefabs = new HashSet(Assets.spawnablePrefabs);
25 | foreach (Object lootBagObject in lootBagObjects)
26 | {
27 | GameObject lootBagGameObject = lootBagObject as GameObject;
28 | LootBagEntity lootBagEntity = lootBagGameObject.GetComponent();
29 | if (lootBagEntity == null)
30 | continue;
31 |
32 | spawnablePrefabs.Add(lootBagEntity.Identity);
33 | GameInstance.AddBuildingEntities(lootBagEntity);
34 |
35 | GameInstance.Singleton.LootBagEntities.Add(lootBagObject.name, lootBagEntity);
36 | }
37 |
38 | Assets.spawnablePrefabs = new LiteNetLibIdentity[spawnablePrefabs.Count];
39 | spawnablePrefabs.CopyTo(Assets.spawnablePrefabs);
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/Scripts/LanRpgServerStorageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using Cysharp.Threading.Tasks;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace MultiplayerARPG
6 | {
7 | public partial class LanRpgServerStorageHandlers : MonoBehaviour, IServerStorageHandlers
8 | {
9 | ///
10 | /// Adds the loot bag items to the specified loot bag storage.
11 | ///
12 | /// loot bag storage ID
13 | /// items to add to loot bag
14 | /// true if successful, false otherwise
15 | public async UniTask AddLootBagItems(StorageId storageId, List lootItems)
16 | {
17 | await UniTask.Yield();
18 |
19 | foreach (CharacterItem lootItem in lootItems)
20 | {
21 | if (lootItem.IsEmptySlot())
22 | continue;
23 |
24 | List storageItems = GetStorageItems(storageId);
25 | // Prepare storage data
26 | Storage storage = GetStorage(storageId, out _);
27 | bool isLimitWeight = storage.weightLimit > 0;
28 | bool isLimitSlot = storage.slotLimit > 0;
29 | short weightLimit = storage.weightLimit;
30 | short slotLimit = storage.slotLimit;
31 | // Increase item to storage
32 | bool isOverwhelming = storageItems.IncreasingItemsWillOverwhelming(
33 | lootItem.dataId, lootItem.amount, isLimitWeight, weightLimit,
34 | storageItems.GetTotalItemWeight(), isLimitSlot, slotLimit);
35 | if (!isOverwhelming && storageItems.IncreaseItems(lootItem))
36 | {
37 | // Update slots
38 | storageItems.FillEmptySlots(isLimitSlot, slotLimit);
39 | SetStorageItems(storageId, storageItems);
40 | }
41 | }
42 |
43 | return true;
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/Scripts/MMOServerStorageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using Cysharp.Threading.Tasks;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace MultiplayerARPG.MMO
6 | {
7 | public partial class MMOServerStorageHandlers : MonoBehaviour, IServerStorageHandlers
8 | {
9 | ///
10 | /// Adds the loot bag items to the specified loot bag storage.
11 | ///
12 | /// loot bag storage ID
13 | /// items to add to loot bag
14 | /// true if successful, false otherwise
15 | public async UniTask AddLootBagItems(StorageId storageId, List lootItems)
16 | {
17 | #if UNITY_STANDALONE && !CLIENT_BUILD
18 | // Attempt to read from storage first. This registers it and adds it to cache.
19 | ReadStorageItemsReq rsir = new ReadStorageItemsReq();
20 | rsir.StorageType = storageId.storageType;
21 | rsir.StorageOwnerId = storageId.storageOwnerId;
22 | ReadStorageItemsResp rsiresp = await DbServiceClient.ReadStorageItemsAsync(rsir);
23 |
24 | foreach (CharacterItem lootItem in lootItems)
25 | {
26 | Storage storge = GetStorage(storageId, out _);
27 | IncreaseStorageItemsReq req = new IncreaseStorageItemsReq();
28 | req.StorageType = storageId.storageType;
29 | req.StorageOwnerId = storageId.storageOwnerId;
30 | req.WeightLimit = storge.weightLimit;
31 | req.SlotLimit = storge.slotLimit;
32 | req.Item = lootItem;
33 | IncreaseStorageItemsResp resp = await DbServiceClient.IncreaseStorageItemsAsync(req);
34 | if (UITextKeys.NONE != resp.Error)
35 | {
36 | return false;
37 | }
38 | SetStorageItems(storageId, resp.StorageCharacterItems);
39 | }
40 | return true;
41 | #else
42 | return false;
43 | #endif
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/GameData/Orc Item Drop Table.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: bb0558005f522274081c7cfc8f474dfe, type: 3}
13 | m_Name: Orc Item Drop Table
14 | m_EditorClassIdentifier:
15 | randomItems:
16 | - item: {fileID: 11400000, guid: 12442376bd325864e8cd21b3b7ca31e1, type: 2}
17 | minAmount: 0
18 | maxAmount: 5
19 | dropRate: 0.5
20 | - item: {fileID: 11400000, guid: 0a439d3c316c36f4cae03a253c8839d4, type: 2}
21 | minAmount: 0
22 | maxAmount: 5
23 | dropRate: 0.5
24 | - item: {fileID: 11400000, guid: 8ead9c05113e5a5429ec0871d4079f29, type: 2}
25 | minAmount: 0
26 | maxAmount: 1
27 | dropRate: 0.5
28 | - item: {fileID: 11400000, guid: ff345f6fce46c844582749ebc64fd586, type: 2}
29 | minAmount: 0
30 | maxAmount: 1
31 | dropRate: 0.5
32 | - item: {fileID: 11400000, guid: e43af8a3a8f9a7a478dc243c7b15ff5f, type: 2}
33 | minAmount: 0
34 | maxAmount: 1
35 | dropRate: 0.1
36 | - item: {fileID: 11400000, guid: 66401780aa1f1a24782d11c6980883b2, type: 2}
37 | minAmount: 0
38 | maxAmount: 1
39 | dropRate: 0.1
40 | - item: {fileID: 11400000, guid: f913fbdc47f19a4408bc793331f9583a, type: 2}
41 | minAmount: 0
42 | maxAmount: 1
43 | dropRate: 0.1
44 | - item: {fileID: 11400000, guid: 4ec23479e56964a4fb4f2cbd63adf628, type: 2}
45 | minAmount: 0
46 | maxAmount: 1
47 | dropRate: 0.1
48 | - item: {fileID: 11400000, guid: 99ce6353c3a0b344bb452d0b2035feed, type: 2}
49 | minAmount: 0
50 | maxAmount: 1
51 | dropRate: 0.1
52 | - item: {fileID: 11400000, guid: 4519d6286cf69b142ac9894ff8e06a31, type: 2}
53 | minAmount: 0
54 | maxAmount: 1
55 | dropRate: 0.1
56 | - item: {fileID: 11400000, guid: 93c389fe9d40638469bffd9de26d31ba, type: 2}
57 | minAmount: 0
58 | maxAmount: 1
59 | dropRate: 0.1
60 | - item: {fileID: 11400000, guid: b64f816f68b7d6a42b7d3857a4b5d931, type: 2}
61 | minAmount: 0
62 | maxAmount: 1
63 | dropRate: 0.1
64 | randomCurrencies: []
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # UnityMultiplayerARPG_LootBag
2 | LootBag add-on for SURIYUN's MMORPG Kit for Unity.
3 |
4 | This add-on changes the loot system to drop loot into character loot bags on death, rather than dropping items directly to the ground.
5 |
6 | **NOTICE: This project is deprecated and will no longer be supported. The official MMORPG kit now includes most of this functionality.**
7 |
8 | **Please note that this works on the 3D version of the kit only.**
9 |
10 | 
11 |
12 | ## Installation instructions
13 | For versions prior to 1.70, refer to instructions here: https://github.com/vaughanb/UnityMultiplayerARPG_LootBag/README-OLD.md
14 |
15 | For version 1.70 and later:
16 |
17 | Download and import add-on package from: https://github.com/vaughanb/UnityMultiplayerARPG_LootBag/releases
18 |
19 | ### CanvasGameplay Prefab
20 | 1. Open CanvasGameplay prefab. If you are using mobile, open CanvasGameplayMobile instead.
21 |
22 | 2. Replace UISceneGameplay script on CanvasGameplay with included UISceneGameplay_LootBag script. This can be done by selecting Debug mode at the top-right of the inspector. Then simply drag UISceneGameplay_LootBag.cs onto 'Script' where UISceneGameplay is currently. Then switch back to normal mode.
23 |
24 | 
25 | 
26 |
27 | 3. If you wish to have the loot dialog block the UI, select UILootBagStorageDialog in Resources/UI and add the 'Block UI Controller' component to it.
28 |
29 | Necessary UI elements will be automatically added to UISceneGameplay at runtime.
30 |
31 |
32 | ### Monsters
33 | 1. Open any MonsterCharacter GameData files for monsters you with to have loot bags in the inspector. Under 'Loot Bag Settings' you will be presented with a number of options for loot bag behavior. By default, monsters use the invisible loot bag entity and other appropriate settings to simulate looting directly from the body. Feel free to change any of these settings as you see fit.
34 |
35 | 2. Add any items you wish for the monster to drop under 'Random Loot Bag Items' or add a Item Drop Table file to the 'Loot Bag Item Drop Table' field. Remove loot from the 'Random Items' section under 'Killing Rewards'. This version does not disable the default loot system, so any items in the normal loot section will drop the ground.
36 |
37 | 
38 |
39 |
40 | ### Players
41 | Player characters can also be configured to drop loot on death. To do this:
42 |
43 | 1. Open the PlayerCharacter GameData file. Under 'Loot Bag Settings'. Under 'Loot Bag Settings', select 'Use Loot Bag' and select either the Visible or Invisible loot bag entity from the list. For players, it is recommended to use the visible loot bag entity.
44 |
45 | 2. Under 'Random Loot Bag Items' you can add random loot items the same as for monsters OR select 'Drop All Player Items'.
46 |
47 | 
48 |
49 |
--------------------------------------------------------------------------------
/Fantasy Treasure Pack Lite/Mesh/Materials/texture_04.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: texture_04
11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ShaderKeywords: _EMISSION
13 | m_LightmapFlags: 1
14 | m_EnableInstancingVariants: 0
15 | m_DoubleSidedGI: 0
16 | m_CustomRenderQueue: -1
17 | stringTagMap: {}
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _AlphaTex:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _BumpMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailAlbedoMap:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailMask:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _DetailNormalMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _EmissionMap:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MainTex:
47 | m_Texture: {fileID: 2800000, guid: 65d1bbd44ddeb544084b5466963d4123, type: 3}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _MetallicGlossMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _OcclusionMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | - _ParallaxMap:
59 | m_Texture: {fileID: 0}
60 | m_Scale: {x: 1, y: 1}
61 | m_Offset: {x: 0, y: 0}
62 | - _SpecGlossMap:
63 | m_Texture: {fileID: 0}
64 | m_Scale: {x: 1, y: 1}
65 | m_Offset: {x: 0, y: 0}
66 | m_Floats:
67 | - PixelSnap: 0
68 | - _BumpScale: 1
69 | - _Cutoff: 0.5
70 | - _DetailNormalMapScale: 1
71 | - _DstBlend: 0
72 | - _EnableExternalAlpha: 0
73 | - _GlossMapScale: 1
74 | - _Glossiness: 0.5
75 | - _GlossyReflections: 1
76 | - _Metallic: 0
77 | - _Mode: 0
78 | - _OcclusionStrength: 1
79 | - _Parallax: 0.02
80 | - _Shininess: 0.078125
81 | - _SmoothnessTextureChannel: 0
82 | - _SpecularHighlights: 1
83 | - _SrcBlend: 1
84 | - _UVSec: 0
85 | - _ZWrite: 1
86 | m_Colors:
87 | - _Color: {r: 1, g: 1, b: 1, a: 1}
88 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
89 | - _Flip: {r: 1, g: 1, b: 1, a: 1}
90 | - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
91 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
92 | m_BuildTextureStacks: []
93 |
--------------------------------------------------------------------------------
/Scripts/ActivateButtonActivator_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public class ActivateButtonActivator_LootBag : MonoBehaviour
7 | {
8 | public List activateObjects;
9 | public TextWrapper buttonTextWrapper;
10 | public string activateButtonText = "ACTIVE";
11 | public string lootButtonText = "LOOT";
12 |
13 | private bool canActivate;
14 | private PlayerCharacterController controller;
15 | private ShooterPlayerCharacterController shooterController;
16 | private BuildingEntity targetBuilding;
17 |
18 | public ActivateButtonActivator_LootBag()
19 | {
20 | activateObjects = new List();
21 | }
22 |
23 | private void LateUpdate()
24 | {
25 | canActivate = false;
26 |
27 | controller = BasePlayerCharacterController.Singleton as PlayerCharacterController;
28 | shooterController = BasePlayerCharacterController.Singleton as ShooterPlayerCharacterController;
29 |
30 | if (controller != null)
31 | {
32 | canActivate = controller.ActivatableEntityDetector.players.Count > 0 ||
33 | controller.ActivatableEntityDetector.npcs.Count > 0 ||
34 | controller.ActivatableEntityDetector.buildings.Count > 0;
35 |
36 | if (controller.ActivatableEntityDetector.buildings.Count > 0)
37 | targetBuilding = controller.ActivatableEntityDetector.buildings[0];
38 | }
39 |
40 | if (shooterController != null && shooterController.SelectedEntity != null)
41 | {
42 | canActivate = shooterController.SelectedEntity is BasePlayerCharacterEntity || shooterController.SelectedEntity is NpcEntity;
43 | if (!canActivate)
44 | {
45 | targetBuilding = shooterController.SelectedEntity as BuildingEntity;
46 | if (targetBuilding != null && !targetBuilding.IsBuildMode && targetBuilding.Activatable)
47 | canActivate = true;
48 | }
49 | }
50 |
51 | // Set the target loot bag entity in GameInstance so we can reference it elsewhere
52 | if (targetBuilding != null && targetBuilding is LootBagEntity)
53 | GameInstance.Singleton.targetLootBagEntity = targetBuilding as LootBagEntity;
54 |
55 | if (activateObjects == null)
56 | return;
57 |
58 | foreach (GameObject obj in activateObjects)
59 | {
60 | obj.SetActive(canActivate);
61 | }
62 |
63 | // Set Activate button text depending on target building type
64 | if (targetBuilding != null && targetBuilding is LootBagEntity)
65 | buttonTextWrapper.text = lootButtonText;
66 | else
67 | buttonTextWrapper.text = activateButtonText;
68 | }
69 | }
70 | }
--------------------------------------------------------------------------------
/README-OLD.md:
--------------------------------------------------------------------------------
1 | # UnityMultiplayerARPG_LootBag
2 | LootBag add-on for SURIYUN's MMORPG Kit for Unity.
3 |
4 | This add-on changes the loot system to drop loot into character loot bags on death, rather than dropping items directly to the ground.
5 |
6 | **Please note that this works on the 3D version of the kit only.**
7 |
8 | 
9 |
10 | ## Installation Video
11 |
12 | [](https://www.youtube.com/watch?v=y5G7v12YDJI)
13 |
14 | ## Installation instructions
15 | 1. Download and import add-on package from: https://github.com/vaughanb/UnityMultiplayerARPG_LootBag/releases
16 |
17 | ### CanvasGameplay Prefab
18 | 1. Open CanvasGameplay prefab. If you are using mobile, open CanvasGameplayMobile instead!
19 |
20 | 2. Add UILootDialog prefab from the add-on prefabs directory to Dialogs on CanvasGameplay.
21 |
22 | 
23 |
24 | 3. Open CanvasGameplay in Inspector and add LootItemsComponents from the UILootDialog to the 'UI Loot Items' field under 'Loot Bag Addon'.
25 |
26 | 
27 |
28 | 4. If you wish to have the loot dialog block the UI:
29 | * Versions 1.6 and later: Select UILootDialog in the dialogs list and add the 'Block UI Controller' component to it.
30 | * Versions before 1.6: Scroll down to 'Block Controller Uis' and increase size by 1. Then add LootItemsComponents to the new element.
31 |
32 | 
33 |
34 | 5. Open GameInstance in the version of 00Init you are using and swap the character controller with one of the custom ones from the LootBagAddon prefabs (if they exist in your version). If the controller prefabs are not included with your version of the addon, you can skip this step.
35 |
36 | 
37 |
38 | #### For mobile only:
39 | 5. Add LootButton prefab to AttackAndAction object under MobileJoyStick in CanvasGameplayMobile.
40 |
41 | 
42 |
43 | 6. Open CanvasGameplayMobile in inspector again and add the Loot Button Activator component. Then drag the LootButton object you added in the previous step to 'Activate Objects'.
44 |
45 | 
46 |
47 |
48 | ### Monster Character Entities
49 | 1. Open any monsters you wish to have loot bags in the inspector. Under 'Loot Settings', make sure 'Use Loot Bag' is checked and drag the LootSparkle prefab to the 'Loot Sparkle Effect' field.
50 |
51 | 
52 |
53 | 2. Scroll down to 'Monster Character Settings' and increase the 'Destroy Delay' setting to the length of time you wish monster bodies to remain and be lootable before de-spawning (at least 30 seconds recommended).
54 |
55 | 
56 |
57 | #### Versions 1.6 and later:
58 | 3. Open the corresponding monster database file for the monster you are editing.
59 |
60 | 4. Remove loot from the 'Random Items' section and put it in the 'Random Loot Bag Items' section instead. This version does not disable the default loot system, so any items in the normal loot section will drop the ground.
61 |
62 | 
63 |
--------------------------------------------------------------------------------
/Scripts/LanRpgServerStorageMessageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using Cysharp.Threading.Tasks;
2 | using LiteNetLibManager;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 |
6 | namespace MultiplayerARPG
7 | {
8 | public partial class LanRpgServerStorageMessageHandlers : MonoBehaviour, IServerStorageMessageHandlers
9 | {
10 | ///
11 | /// Request handler for moving all items from storage to player for LAN mode.
12 | ///
13 | /// request handler data
14 | /// request
15 | /// result
16 | public async UniTaskVoid HandleRequestMoveAllItemsFromStorage(RequestHandlerData requestHandler, RequestMoveAllItemsFromStorageMessage request, RequestProceedResultDelegate result)
17 | {
18 | StorageId storageId = new StorageId(request.storageType, request.storageOwnerId);
19 | IPlayerCharacterData playerCharacter;
20 | if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter))
21 | {
22 | result.Invoke(AckResponseCode.Error, new ResponseMoveAllItemsFromStorageMessage()
23 | {
24 | message = UITextKeys.UI_ERROR_NOT_LOGGED_IN,
25 | });
26 | return;
27 | }
28 | if (!GameInstance.ServerStorageHandlers.CanAccessStorage(playerCharacter, storageId))
29 | {
30 | result.Invoke(AckResponseCode.Error, new ResponseMoveAllItemsFromStorageMessage()
31 | {
32 | message = UITextKeys.UI_ERROR_CANNOT_ACCESS_STORAGE,
33 | });
34 | return;
35 | }
36 |
37 | // Get items from storage
38 | List storageItems = GameInstance.ServerStorageHandlers.GetStorageItems(storageId);
39 |
40 | // Prepare storage data
41 | Storage storage = GameInstance.ServerStorageHandlers.GetStorage(storageId, out _);
42 | bool isLimitSlot = storage.slotLimit > 0;
43 | short slotLimit = storage.slotLimit;
44 |
45 | for (int i = storageItems.Count; i > 0; i--)
46 | {
47 | UITextKeys gameMessage;
48 | if (!playerCharacter.MoveItemFromStorage(isLimitSlot, slotLimit, storageItems, i-1, storageItems[i-1].amount, InventoryType.NonEquipItems, -1, 0, out gameMessage))
49 | {
50 | result.Invoke(AckResponseCode.Error, new ResponseMoveAllItemsFromStorageMessage()
51 | {
52 | message = gameMessage,
53 | });
54 | break;
55 | } else
56 | {
57 | GameInstance.ServerStorageHandlers.SetStorageItems(storageId, storageItems);
58 | }
59 | }
60 | GameInstance.ServerStorageHandlers.NotifyStorageItemsUpdated(request.storageType, request.storageOwnerId);
61 |
62 | // Success
63 | result.Invoke(AckResponseCode.Success, new ResponseMoveAllItemsFromStorageMessage());
64 | await UniTask.Yield();
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/Scripts/PlayerCharacter_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public enum LootBagFilterBehavior
7 | {
8 | Inclusive,
9 | Exclusive,
10 | };
11 |
12 | public partial class PlayerCharacter : BaseCharacter
13 | {
14 | [Category("Loot Bag Settings")]
15 | [Header("Player-specific Loot Bag Settings")]
16 | [Tooltip("If selected, player will drop inventory items to loot bag on death.")]
17 | public bool dropInventoryItems = false;
18 | [Tooltip("If selected, player will drop armor items to loot bag on death.")]
19 | public bool dropEquippedArmorItems = false;
20 | [Tooltip("If selected, player will drop weapon items to loot bag on death.")]
21 | public bool dropEquippedWeaponItems = false;
22 | [Tooltip("If set, player will drop items according to the items in these tables and the Inclusive/Exclusive behavior specified.")]
23 | public LootBagItemFilterTable[] lootBagItemFilterTables;
24 | [Tooltip("Inclusive means only the items in the table will drop. Exlusive means all items except those in the table will drop.")]
25 | public LootBagFilterBehavior lootBagItemFilterBehavior = LootBagFilterBehavior.Inclusive;
26 |
27 | [Header("PVP Mode Loot Bag Settings")]
28 | [Tooltip("Setting this flag to true will allow dropping player loot in non-PVP areas.")]
29 | public bool dropLootInNonPVPAreas = true;
30 | [Tooltip("Setting this flag to true will allow dropping player loot in PVP areas.")]
31 | public bool dropLootInPVPAreas = true;
32 | [Tooltip("Setting this flag to true will allow dropping player loot in faction PVP areas.")]
33 | public bool dropLootInFactionPVPAreas = true;
34 | [Tooltip("Setting this flag to true will allow dropping player loot in guild PVP areas.")]
35 | public bool dropLootInGuildPVPAreas = true;
36 |
37 | private List cacheFilterLootItems = null;
38 | public List CacheFilterLootItems
39 | {
40 | get
41 | {
42 | if (cacheFilterLootItems == null)
43 | {
44 | cacheFilterLootItems = new List();
45 |
46 | foreach (LootBagItemFilterTable filterTable in lootBagItemFilterTables)
47 | {
48 | if (filterTable != null && filterTable.randomItems != null && filterTable.randomItems.Length > 0)
49 | {
50 | foreach (LootBagFilterItem item in filterTable.randomItems)
51 | {
52 | if (item.dropRate <= 0)
53 | continue;
54 |
55 | cacheFilterLootItems.Add(item);
56 | }
57 | }
58 | }
59 | }
60 | return cacheFilterLootItems;
61 | }
62 | }
63 |
64 | public PlayerCharacter()
65 | {
66 | dropEmptyBag = false;
67 | maxLootItems = 0;
68 | lootBagEntity = LootBagEntitySelection.Visible;
69 | lootBagDestroyDelay = 600;
70 | }
71 |
72 | ///
73 | /// ResetCaches is overridden in order to clear out filter loot items cache.
74 | ///
75 | public override void ResetCaches()
76 | {
77 | base.ResetCaches();
78 | cacheFilterLootItems = null;
79 | }
80 | }
81 | }
--------------------------------------------------------------------------------
/Scripts/MMOServerStorageMessageHandlers_LootBag.cs:
--------------------------------------------------------------------------------
1 | using Cysharp.Threading.Tasks;
2 | using LiteNetLibManager;
3 | using UnityEngine;
4 | using System.Collections.Generic;
5 |
6 | namespace MultiplayerARPG.MMO
7 | {
8 | public partial class MMOServerStorageMessageHandlers : MonoBehaviour, IServerStorageMessageHandlers
9 | {
10 | ///
11 | /// Handles requests for moving all storage items to character inventory for MMO mode.
12 | ///
13 | /// request handler data
14 | /// request
15 | /// result
16 | public async UniTaskVoid HandleRequestMoveAllItemsFromStorage(RequestHandlerData requestHandler, RequestMoveAllItemsFromStorageMessage request, RequestProceedResultDelegate result)
17 | {
18 | #if UNITY_STANDALONE && !CLIENT_BUILD
19 | StorageId storageId = new StorageId(request.storageType, request.storageOwnerId);
20 | IPlayerCharacterData playerCharacter;
21 | if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter))
22 | {
23 | result.Invoke(AckResponseCode.Error, new ResponseMoveAllItemsFromStorageMessage()
24 | {
25 | message = UITextKeys.UI_ERROR_NOT_LOGGED_IN,
26 | });
27 | return;
28 | }
29 | if (!GameInstance.ServerStorageHandlers.CanAccessStorage(playerCharacter, storageId))
30 | {
31 | result.Invoke(AckResponseCode.Error, new ResponseMoveAllItemsFromStorageMessage()
32 | {
33 | message = UITextKeys.UI_ERROR_CANNOT_ACCESS_STORAGE,
34 | });
35 | return;
36 | }
37 | Storage storage = GameInstance.ServerStorageHandlers.GetStorage(storageId, out _);
38 | List storageItems = GameInstance.ServerStorageHandlers.GetStorageItems(storageId);
39 |
40 | for (int i = storageItems.Count; i > 0; i--)
41 | {
42 | MoveItemFromStorageReq req = new MoveItemFromStorageReq();
43 | req.StorageType = request.storageType;
44 | req.StorageOwnerId = request.storageOwnerId;
45 | req.CharacterId = playerCharacter.Id;
46 | req.WeightLimit = storage.weightLimit;
47 | req.SlotLimit = storage.slotLimit;
48 | req.StorageItemIndex = i - 1;
49 | req.StorageItemAmount = storageItems[i - 1].amount;
50 | req.InventoryItemIndex = -1;
51 | req.Inventory = new List(playerCharacter.NonEquipItems);
52 |
53 | MoveItemFromStorageResp resp = await DbServiceClient.MoveItemFromStorageAsync(req);
54 | UITextKeys message = resp.Error;
55 | if (message != UITextKeys.NONE)
56 | {
57 | result.Invoke(AckResponseCode.Error, new ResponseMoveAllItemsFromStorageMessage()
58 | {
59 | message = message,
60 | });
61 | break;
62 | }
63 | else
64 | {
65 | playerCharacter.NonEquipItems = resp.InventoryItemItems;
66 | GameInstance.ServerStorageHandlers.SetStorageItems(storageId, resp.StorageCharacterItems);
67 | }
68 | playerCharacter.FillEmptySlots();
69 | GameInstance.ServerStorageHandlers.NotifyStorageItemsUpdated(request.storageType, request.storageOwnerId);
70 | }
71 |
72 | // Success
73 | result.Invoke(AckResponseCode.Success, new ResponseMoveAllItemsFromStorageMessage());
74 | #endif
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/Scripts/BaseCharacterEntity_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 | using LiteNetLibManager;
4 |
5 | namespace MultiplayerARPG
6 | {
7 | public abstract partial class BaseCharacterEntity : DamageableEntity, ICharacterData
8 | {
9 | protected BaseCharacter characterDB;
10 | protected LootBagEntity lootBagEntity;
11 |
12 | private const string visibleLootBagName = "LootBagEntityVisible";
13 | private const string invisibleLootBagName = "LootBagEntityInvisible";
14 |
15 | [DevExtMethods("Awake")]
16 | protected void OnAwake()
17 | {
18 | onReceivedDamage += OnReceivedDamage;
19 | }
20 |
21 | ///
22 | /// Checks for death on damage received and calls OnDeath if dead.
23 | ///
24 | protected void OnReceivedDamage(Vector3 fromPosition, IGameEntity attacker, CombatAmountType combatAmountType, int damage, CharacterItem weapon, BaseSkill skill, short skillLevel)
25 | {
26 | if (IsServer && this.IsDead())
27 | OnDeath();
28 | }
29 |
30 | ///
31 | /// Event that occurs on death. Used primarily to trigger dropping of loot bag.
32 | ///
33 | protected virtual void OnDeath()
34 | {
35 | characterDB = this.GetDatabase();
36 | if (characterDB == null)
37 | {
38 | Debug.Log("character DB is null");
39 | return;
40 | }
41 |
42 | if (!characterDB.useLootBag)
43 | return;
44 |
45 | // Determine which loot bag entity to use based on character DB.
46 | switch (characterDB.lootBagEntity)
47 | {
48 | case LootBagEntitySelection.Visible:
49 | if (GameInstance.Singleton.LootBagEntities.ContainsKey(visibleLootBagName))
50 | lootBagEntity = GameInstance.Singleton.LootBagEntities[visibleLootBagName];
51 | break;
52 | case LootBagEntitySelection.Invisible:
53 | if (GameInstance.Singleton.LootBagEntities.ContainsKey(invisibleLootBagName))
54 | lootBagEntity = GameInstance.Singleton.LootBagEntities[invisibleLootBagName];
55 | break;
56 | case LootBagEntitySelection.Override:
57 | lootBagEntity = characterDB.lootBagEntityOverride;
58 | break;
59 | }
60 |
61 | DropLootBag();
62 |
63 | // If character is a monster, set body destroy delay according to character DB settings.
64 | BaseMonsterCharacterEntity bmce = this as BaseMonsterCharacterEntity;
65 | if (bmce != null && characterDB is MonsterCharacter)
66 | {
67 | var monsterDB = characterDB as MonsterCharacter;
68 | if (monsterDB != null && monsterDB.syncDestroyDelayWithBody)
69 | bmce.SetDestroyDelay(monsterDB.lootBagDestroyDelay);
70 | }
71 | }
72 |
73 | ///
74 | /// Calls GenerateLootItems to creat loot and spawns the loot bag at the entity's current location.
75 | ///
76 | protected virtual void DropLootBag()
77 | {
78 | List lootItems = GenerateLootItems();
79 |
80 | if (lootItems.Count > 0 || characterDB.dropEmptyBag)
81 | RPC(CreateLootBag, this.gameObject.transform.position, this.gameObject.transform.rotation, lootItems);
82 | }
83 |
84 | ///
85 | /// Generates the loot items that will be added to the bag on death.
86 | ///
87 | protected virtual List GenerateLootItems()
88 | {
89 | return characterDB.GetRandomItems();
90 | }
91 |
92 | [ServerRpc]
93 | ///
94 | /// Creates the loot bag entity building and configures it according to configuration settings.
95 | ///
96 | /// position in gameworld to spawn loot bag entity
97 | /// rotation to use for lootbag entity
98 | /// items to place on lootbag
99 | protected void CreateLootBag(Vector3 position, Quaternion rotation, List lootItems)
100 | {
101 | BuildingEntity buildingEntity;
102 | if (!GameInstance.BuildingEntities.TryGetValue(lootBagEntity.EntityId, out buildingEntity))
103 | return;
104 |
105 | if (!(buildingEntity is LootBagEntity))
106 | return;
107 |
108 | string creatorName = EntityTitle;
109 | if (this is BasePlayerCharacterEntity)
110 | creatorName = CharacterName;
111 |
112 | BuildingSaveData bsd = new BuildingSaveData();
113 | bsd.Id = GenericUtils.GetUniqueId();
114 | bsd.ParentId = string.Empty;
115 | bsd.EntityId = buildingEntity.EntityId;
116 | bsd.CurrentHp = buildingEntity.MaxHp;
117 | bsd.RemainsLifeTime = buildingEntity.LifeTime;
118 | bsd.Position = position;
119 | bsd.Rotation = rotation;
120 | bsd.CreatorId = Id;
121 | bsd.CreatorName = creatorName;
122 | LootBagEntity lbe = CurrentGameManager.CreateBuildingEntity(bsd, false) as LootBagEntity;
123 |
124 | lbe.SetOwnerEntity(this);
125 | lbe.AddItems(lootItems).Forget();
126 | lbe.SetDestroyDelay(characterDB.lootBagDestroyDelay);
127 | }
128 | }
129 | }
130 |
--------------------------------------------------------------------------------
/Scripts/UISceneGameplay_LootBag.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using System;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public partial class UISceneGameplay_LootBag : UISceneGameplay
7 | {
8 | [Category("Loot Bag Addon")]
9 | public UILootBagItems uiLootBagItems;
10 |
11 | protected override void Awake()
12 | {
13 | base.Awake();
14 | UISetup();
15 | }
16 |
17 | ///
18 | /// Adds the loot bag specific UI components to UISceneGameplay and configures them to be displayed.
19 | ///
20 | public virtual void UISetup()
21 | {
22 | // Add UILootBagItemStorageDialog if it does not already exist
23 | if (!gameObject.GetComponentInChildren())
24 | {
25 | GameObject uiLootBagStorageDialog = Instantiate(Resources.Load("UI/UILootBagStorageDialog") as GameObject);
26 | uiLootBagStorageDialog.transform.SetParent(transform);
27 | uiLootBagStorageDialog.transform.localPosition = Vector3.zero;
28 | uiLootBagStorageDialog.transform.localScale = Vector3.one;
29 | }
30 |
31 | // Assign the loot bag UI dialog to UISceneGameplay
32 | if (uiLootBagItems == null)
33 | uiLootBagItems = gameObject.GetComponentInChildren(true);
34 |
35 | // Add the loot bag activate button activator and configure it (for mobile)
36 | if (gameObject.GetComponentInChildren() && !gameObject.GetComponentInChildren())
37 | {
38 | var oldActivator = GetComponentInChildren();
39 | if (oldActivator == null)
40 | return;
41 |
42 | var newActivator = oldActivator.gameObject.AddComponent();
43 | oldActivator.enabled = false;
44 |
45 | MobileInputButton[] inputButtons = GetComponentsInChildren();
46 | foreach (MobileInputButton ib in inputButtons)
47 | {
48 | var text = ib.gameObject.GetComponentInChildren();
49 | if (text != null && text.text != "ACTIVE")
50 | continue;
51 |
52 | newActivator.activateObjects.Add(ib.gameObject);
53 |
54 | TextWrapper tw = ib.gameObject.AddComponent();
55 | tw.unityText = text;
56 |
57 | newActivator.buttonTextWrapper = tw;
58 | }
59 | }
60 | }
61 |
62 | ///
63 | /// Checks the visibility status of all storage dialogs (including loot bag items).
64 | ///
65 | /// true if dialog is visible, false otherwise
66 | public override bool IsStorageDialogVisible()
67 | {
68 | return (uiPlayerStorageItems != null && uiPlayerStorageItems.IsVisible()) ||
69 | (uiGuildStorageItems != null && uiGuildStorageItems.IsVisible()) ||
70 | (uiBuildingStorageItems != null && uiBuildingStorageItems.IsVisible()) ||
71 | (uiBuildingCampfireItems != null && uiBuildingCampfireItems.IsVisible()) ||
72 | (uiLootBagItems != null && uiLootBagItems.IsVisible());
73 | }
74 |
75 | ///
76 | /// ShowStorageDialog is overridden in order to open loot bag items dialog for loot bag storage.
77 | /// Currently this is done by checking that weightLimit is the maximum short value.
78 | ///
79 | public override void ShowStorageDialog(StorageType storageType, string storageOwnerId, uint objectId, short weightLimit, short slotLimit)
80 | {
81 | // Hide all storage UIs
82 | if (uiPlayerStorageItems != null)
83 | uiPlayerStorageItems.Hide(true);
84 | if (uiGuildStorageItems != null)
85 | uiGuildStorageItems.Hide(true);
86 | if (uiBuildingStorageItems != null)
87 | uiBuildingStorageItems.Hide(true);
88 | if (uiBuildingCampfireItems != null)
89 | uiBuildingCampfireItems.Hide(true);
90 | if (uiLootBagItems != null)
91 | uiLootBagItems.Hide(true);
92 |
93 | if (uiLootBagItems != null && storageType == StorageType.Building && GameInstance.Singleton.targetLootBagEntity != null)
94 | {
95 | uiLootBagItems.Show(storageType, storageOwnerId, null, weightLimit, slotLimit);
96 | AddNpcDialog(uiLootBagItems);
97 | } else
98 | base.ShowStorageDialog(storageType, storageOwnerId, objectId, weightLimit, slotLimit);
99 | }
100 |
101 | ///
102 | /// SetTargetEntity is overriden to show loot item target UI instead of building target UI
103 | /// when entity is loot bag, and to hide the loot bag items dialog when target entity disappears.
104 | ///
105 | public override void SetTargetEntity(BaseGameEntity entity)
106 | {
107 | base.SetTargetEntity(entity);
108 |
109 | if (entity != null && entity is LootBagEntity)
110 | {
111 | GameInstance.Singleton.targetLootBagEntity = entity as LootBagEntity;
112 |
113 | if (uiTargetItemDrop == null)
114 | return;
115 |
116 | if (uiTargetBuilding != null)
117 | uiTargetBuilding.Hide();
118 |
119 | uiTargetItemDrop.Data = entity;
120 | uiTargetItemDrop.Show();
121 | } else {
122 | GameInstance.Singleton.targetLootBagEntity = null;
123 | }
124 |
125 | if (uiLootBagItems != null && uiLootBagItems.IsVisible() && !uiTargetItemDrop.IsVisible())
126 | uiLootBagItems.Hide();
127 | }
128 | }
129 | }
130 |
--------------------------------------------------------------------------------
/Scripts/BaseCharacter_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public enum LootBagEntitySelection
7 | {
8 | Invisible,
9 | Visible,
10 | Override,
11 | };
12 |
13 | public abstract partial class BaseCharacter : BaseGameData
14 | {
15 | [Category("Loot Bag Settings")]
16 | [Tooltip("This must be selected if you wish for the character to drop a loot bag on death.")]
17 | public bool useLootBag = false;
18 | [Tooltip("If selected, character will drop a loot bag on death, whether it has items or not.")]
19 | public bool dropEmptyBag = true;
20 | [Tooltip("Which loot bag entity should be used? Invisible simulated loot from body. Visible drops an actual bag. Override to use your own.")]
21 | public LootBagEntitySelection lootBagEntity = LootBagEntitySelection.Invisible;
22 | [Tooltip("This loot bag entity will be used instead of the provided ones if selected.")]
23 | public LootBagEntity lootBagEntityOverride;
24 | [Tooltip("Random items that will be generated for loot bag on death.")]
25 | public ItemDrop[] randomLootBagItems;
26 | [Tooltip("Item tables containing multiple random items that can ben generated for loot bag on death.")]
27 | public LootBagItemTable[] lootBagItemTables;
28 | [Tooltip("Maximum loot items to drop. If set to 0, maximum is ignored.")]
29 | public int maxLootItems = 5;
30 | [Tooltip("How long in seconds after dropping should loot bag be destroyed?")]
31 | public float lootBagDestroyDelay = 30;
32 |
33 | [System.NonSerialized]
34 | private List certainLootItems = new List();
35 | [System.NonSerialized]
36 | private List uncertainLootItems = new List();
37 |
38 | [System.NonSerialized]
39 | protected List cacheRandomLootItems = null;
40 | public List CacheRandomLootItems
41 | {
42 | get
43 | {
44 | if (cacheRandomLootItems == null)
45 | {
46 | cacheRandomLootItems = new List();
47 | if (randomLootBagItems != null &&
48 | randomLootBagItems.Length > 0)
49 | {
50 | for (int i = 0; i < randomLootBagItems.Length; ++i)
51 | {
52 | if (randomLootBagItems[i].item == null ||
53 | randomLootBagItems[i].maxAmount <= 0 ||
54 | randomLootBagItems[i].dropRate <= 0)
55 | continue;
56 | cacheRandomLootItems.Add(randomLootBagItems[i]);
57 | }
58 | }
59 | if (lootBagItemTables != null &&
60 | lootBagItemTables.Length > 0)
61 | {
62 | foreach (LootBagItemTable itemDropTable in lootBagItemTables)
63 | {
64 | if (itemDropTable != null &&
65 | itemDropTable.randomItems != null &&
66 | itemDropTable.randomItems.Length > 0)
67 | {
68 | for (int i = 0; i < itemDropTable.randomItems.Length; ++i)
69 | {
70 | if (itemDropTable.randomItems[i].item == null ||
71 | itemDropTable.randomItems[i].maxAmount <= 0 ||
72 | itemDropTable.randomItems[i].dropRate <= 0)
73 | continue;
74 | cacheRandomLootItems.Add(itemDropTable.randomItems[i]);
75 | }
76 | }
77 | }
78 | }
79 | cacheRandomLootItems.Sort((a, b) => b.dropRate.CompareTo(a.dropRate));
80 | certainLootItems.Clear();
81 | uncertainLootItems.Clear();
82 | for (int i = 0; i < cacheRandomLootItems.Count; ++i)
83 | {
84 | if (cacheRandomLootItems[i].dropRate >= 1f)
85 | certainLootItems.Add(cacheRandomLootItems[i]);
86 | else
87 | uncertainLootItems.Add(cacheRandomLootItems[i]);
88 | }
89 | }
90 | return cacheRandomLootItems;
91 | }
92 | }
93 |
94 | ///
95 | /// Returns a random collection of item drops.
96 | ///
97 | /// list of random item drops
98 | public List GetRandomItems()
99 | {
100 | List items = new List();
101 |
102 | if (CacheRandomLootItems.Count == 0)
103 | return items;
104 |
105 | int randomDropCount = 0;
106 |
107 | // Add certain loot rate items
108 | certainLootItems.Shuffle();
109 | for (int i = 0; i < certainLootItems.Count && (maxLootItems == 0 || randomDropCount < maxLootItems); ++i)
110 | {
111 | short amount = (short)Random.Range(certainLootItems[i].minAmount <= 0 ? 1 : certainLootItems[i].minAmount, certainLootItems[i].maxAmount);
112 | items.Add(CharacterItem.Create(certainLootItems[i].item, 1, amount));
113 | randomDropCount++;
114 | }
115 |
116 | // Reached max loot items?
117 | if (randomDropCount >= maxLootItems)
118 | return items;
119 |
120 | // Add uncertain loot rate items
121 | uncertainLootItems.Shuffle();
122 | for (int i = 0; i < uncertainLootItems.Count && (maxLootItems == 0 || randomDropCount < maxLootItems); ++i)
123 | {
124 | if (Random.value >= uncertainLootItems[i].dropRate)
125 | continue;
126 |
127 | short amount = (short)Random.Range(uncertainLootItems[i].minAmount <= 0 ? 1 : uncertainLootItems[i].minAmount, uncertainLootItems[i].maxAmount);
128 | items.Add(CharacterItem.Create(uncertainLootItems[i].item, 1, amount));
129 | randomDropCount++;
130 | }
131 |
132 | return items;
133 | }
134 |
135 | ///
136 | /// Resets data caches. Should be called on startup to refresh changes in game data.
137 | ///
138 | public virtual void ResetCaches()
139 | {
140 | cacheRandomLootItems = null;
141 | }
142 | }
143 | }
--------------------------------------------------------------------------------
/Scripts/BasePlayerCharacterEntity_LootBag.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace MultiplayerARPG
5 | {
6 | public abstract partial class BasePlayerCharacterEntity : BaseCharacterEntity, IPlayerCharacterData
7 | {
8 | private PlayerCharacter playerDB = null;
9 | private List lootBagItems;
10 |
11 | ///
12 | /// Unequips all equipped items and returns all items in inventory.
13 | ///
14 | /// loot bag items
15 | protected override List GenerateLootItems()
16 | {
17 | lootBagItems = new List();
18 |
19 | if (playerDB == null)
20 | {
21 | PlayerCharacter playerCharacter;
22 | GameInstance.PlayerCharacters.TryGetValue(dataId, out playerCharacter);
23 | playerDB = playerCharacter;
24 | }
25 |
26 | if (playerDB == null)
27 | return lootBagItems;
28 |
29 | MapInfo mapInfo = CurrentMapInfo as MapInfo;
30 | if ((!playerDB.dropLootInNonPVPAreas && mapInfo.pvpMode == PvpMode.None) ||
31 | (!playerDB.dropLootInPVPAreas && mapInfo.pvpMode == PvpMode.Pvp) ||
32 | (!playerDB.dropLootInFactionPVPAreas && mapInfo.pvpMode == PvpMode.FactionPvp) ||
33 | (!playerDB.dropLootInGuildPVPAreas && mapInfo.pvpMode == PvpMode.GuildPvp))
34 | return lootBagItems;
35 |
36 | if (playerDB.CacheRandomLootItems.Count > 0)
37 | lootBagItems.AddRange(base.GenerateLootItems());
38 |
39 | AddPlayerItems();
40 |
41 | return lootBagItems;
42 | }
43 |
44 | ///
45 | /// Adds player items to the loot bag according to rules set.
46 | ///
47 | /// items to be added to player loot bag
48 | protected List AddPlayerItems()
49 | {
50 | lootBagItems = new List();
51 |
52 | if (playerDB.dropInventoryItems)
53 | DropInventoryItems();
54 |
55 | if (playerDB.dropEquippedArmorItems)
56 | DropArmorItems();
57 |
58 | if (playerDB.dropEquippedWeaponItems)
59 | DropWeaponItems();
60 |
61 | return lootBagItems;
62 | }
63 |
64 | ///
65 | /// Drops inventory items to the loot bag depending on the rules set.
66 | ///
67 | protected void DropInventoryItems()
68 | {
69 | for (int i = NonEquipItems.Count - 1; i >= 0; i--)
70 | {
71 | if (NonEquipItems[i].IsEmptySlot())
72 | continue;
73 |
74 | if (playerDB.maxLootItems > 0 && lootBagItems.Count >= playerDB.maxLootItems)
75 | return;
76 |
77 | if (ShouldDrop(NonEquipItems[i]))
78 | DropInventoryItem(NonEquipItems[i]);
79 | }
80 | }
81 |
82 | ///
83 | /// Drops the specific item from the player's inventory and adds it to the loot bag.
84 | ///
85 | /// item to drop
86 | protected void DropInventoryItem(CharacterItem item)
87 | {
88 | CharacterItem itemData = item.Clone();
89 | itemData.level = item.level;
90 | itemData.amount = item.amount;
91 |
92 | if (NonEquipItems.DecreaseItemsByIndex(this.IndexOfNonEquipItem(item.id), item.amount, GameInstance.Singleton.IsLimitInventorySlot))
93 | lootBagItems.Add(itemData);
94 | }
95 |
96 | ///
97 | /// Unequips armor items from the player and drops them to the loot bag according to the rules set.
98 | ///
99 | protected void DropArmorItems()
100 | {
101 | for (int i = EquipItems.Count - 1; i >= 0; i--)
102 | {
103 | if (playerDB.maxLootItems > 0 && lootBagItems.Count >= playerDB.maxLootItems)
104 | return;
105 |
106 | CharacterItem unEquipItem = EquipItems[i];
107 | if (unEquipItem.IsEmptySlot())
108 | continue;
109 |
110 | if (ShouldDrop(unEquipItem))
111 | {
112 | EquipItems.RemoveAt(i);
113 | this.AddOrSetNonEquipItems(unEquipItem);
114 | this.FillEmptySlots(true);
115 |
116 | DropInventoryItem(unEquipItem);
117 | }
118 |
119 | this.FillEmptySlots();
120 | }
121 | }
122 |
123 | ///
124 | /// Unequips weapon items from the character and drops them to the loot bag according to the rules set.
125 | ///
126 | protected void DropWeaponItems()
127 | {
128 | for (int i = SelectableWeaponSets.Count - 1; i >= 0; i--)
129 | {
130 | EquipWeapons set = SelectableWeaponSets[i];
131 |
132 | var leftHandWeapon = set.leftHand;
133 | var rightHandWeapon = set.rightHand;
134 |
135 | if (!leftHandWeapon.IsEmptySlot())
136 | {
137 | if (playerDB.maxLootItems > 0 && lootBagItems.Count >= playerDB.maxLootItems)
138 | return;
139 |
140 | if (ShouldDrop(leftHandWeapon))
141 | {
142 | CharacterItem unEquipItem = leftHandWeapon;
143 | set.leftHand = CharacterItem.Empty;
144 | this.AddOrSetNonEquipItems(unEquipItem);
145 | this.FillEmptySlots();
146 |
147 | DropInventoryItem(unEquipItem);
148 | }
149 | }
150 |
151 | if (!rightHandWeapon.IsEmptySlot())
152 | {
153 | if (playerDB.maxLootItems > 0 && lootBagItems.Count >= playerDB.maxLootItems)
154 | return;
155 |
156 | if (ShouldDrop(rightHandWeapon))
157 | {
158 | CharacterItem unEquipItem = rightHandWeapon;
159 | set.rightHand = CharacterItem.Empty;
160 | this.AddOrSetNonEquipItems(unEquipItem);
161 | this.FillEmptySlots();
162 |
163 | DropInventoryItem(unEquipItem);
164 | }
165 | }
166 | }
167 |
168 | this.FillEmptySlots();
169 | }
170 |
171 | ///
172 | /// Checks to see if the specified item should drop to the loot bag based on current rules.
173 | ///
174 | /// item to drop
175 | /// true if should drop, false otherwise
176 | protected bool ShouldDrop(CharacterItem item)
177 | {
178 | if (playerDB.CacheFilterLootItems.Count == 0)
179 | return true;
180 |
181 | if (playerDB.lootBagItemFilterBehavior == LootBagFilterBehavior.Inclusive)
182 | {
183 | foreach (LootBagFilterItem fi in playerDB.CacheFilterLootItems)
184 | {
185 | if (item.GetItem().DataId == fi.item.DataId)
186 | {
187 | if (fi.dropRate >= 1 || Random.value < fi.dropRate)
188 | return true;
189 | }
190 | }
191 | }
192 | else
193 | {
194 | bool inFilter = false;
195 | foreach (LootBagFilterItem fi in playerDB.CacheFilterLootItems)
196 | {
197 | if (item.GetItem().DataId == fi.item.DataId)
198 | {
199 | inFilter = true;
200 | break;
201 | }
202 | }
203 | return !inFilter;
204 | }
205 | return false;
206 | }
207 | }
208 | }
209 |
--------------------------------------------------------------------------------
/Scripts/LootBagEntity.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 | using Cysharp.Threading.Tasks;
4 | using LiteNetLibManager;
5 | using LiteNetLib;
6 | using System;
7 |
8 | namespace MultiplayerARPG
9 | {
10 | public class LootBagEntity : StorageEntity
11 | {
12 | [Category("Loot Bag Entity Behavior")]
13 | public string defaultLootName = "Loot";
14 | public bool nameLootAfterOwner = true;
15 | public string appendToLootName = "";
16 | public bool destroyLootBagWhenEmpty = true;
17 | public bool destroyLootBagWithBody = true;
18 | public bool immuneToDamage = true;
19 |
20 | [Category("Loot Bag Effect Settings")]
21 | public GameObject lootBagSparkleEffect;
22 | public bool showSparkleEffect = true;
23 | public bool sparkleOnlyWhenItemsInBag = true;
24 |
25 | private BaseCharacterEntity ownerEntity;
26 | private bool initialized = false;
27 | private bool _dirtyIsOpen;
28 | private bool ownerSet = false;
29 | private DateTime setupTime;
30 |
31 | [Category("Sync Fields")]
32 | protected SyncFieldUInt ownerObjectID = new SyncFieldUInt();
33 | protected SyncFieldBool hasItems = new SyncFieldBool();
34 |
35 | protected uint OwnerObjectID
36 | {
37 | get { return ownerObjectID.Value; }
38 | set { ownerObjectID.Value = value; }
39 | }
40 |
41 | protected bool HasItems
42 | {
43 | get
44 | {
45 | return hasItems.Value;
46 | }
47 | set
48 | {
49 | if (value != hasItems.Value)
50 | hasItems.Value = value;
51 | }
52 | }
53 |
54 | public override void OnSetup()
55 | {
56 | base.OnSetup();
57 |
58 | IsImmune = immuneToDamage;
59 |
60 | if (IsClient)
61 | {
62 | if (showSparkleEffect && lootBagSparkleEffect != null)
63 | {
64 | if (sparkleOnlyWhenItemsInBag)
65 | lootBagSparkleEffect.SetActive(HasItems);
66 | else
67 | lootBagSparkleEffect.SetActive(true);
68 | }
69 |
70 | setupTime = DateTime.Now;
71 | }
72 | }
73 |
74 | protected override void SetupNetElements()
75 | {
76 | base.SetupNetElements();
77 | hasItems.deliveryMethod = DeliveryMethod.ReliableOrdered;
78 | hasItems.syncMode = LiteNetLibSyncField.SyncMode.ServerToClients;
79 | ownerObjectID.deliveryMethod = DeliveryMethod.ReliableOrdered;
80 | ownerObjectID.syncMode = LiteNetLibSyncField.SyncMode.ServerToClients;
81 | }
82 |
83 | protected override void EntityUpdate()
84 | {
85 | if (IsServer)
86 | {
87 | HasItems = GameInstance.ServerStorageHandlers.GetStorageEntityItems(this).Count > 0;
88 |
89 | bool updatingIsOpen = GameInstance.ServerStorageHandlers.IsStorageEntityOpen(this);
90 | if (updatingIsOpen != _dirtyIsOpen)
91 | {
92 | _dirtyIsOpen = updatingIsOpen;
93 | isOpen.Value = updatingIsOpen;
94 | }
95 |
96 | if (lifeTime > 0f)
97 | {
98 | RemainsLifeTime -= Time.deltaTime;
99 | if (RemainsLifeTime < 0)
100 | {
101 | RemainsLifeTime = 0f;
102 | Destroy();
103 | }
104 | }
105 |
106 | if (initialized && destroyLootBagWhenEmpty && !HasItems)
107 | Destroy();
108 | }
109 |
110 | if (IsClient)
111 | {
112 | if (HasItems || DateTime.Now > setupTime.AddSeconds(3))
113 | initialized = true;
114 |
115 | if (initialized)
116 | {
117 | if (showSparkleEffect && lootBagSparkleEffect != null)
118 | {
119 | if (sparkleOnlyWhenItemsInBag)
120 | lootBagSparkleEffect.SetActive(HasItems);
121 | else
122 | lootBagSparkleEffect.SetActive(true);
123 | }
124 |
125 | if (destroyLootBagWithBody)
126 | {
127 | if (!ownerSet && ownerEntity == null)
128 | FindOwnerEntity();
129 |
130 | if (ownerEntity == null)
131 | {
132 | lootBagSparkleEffect.SetActive(false);
133 | Destroy();
134 | }
135 | }
136 | }
137 | }
138 | }
139 |
140 | ///
141 | /// Finds the BaseCharacterEntity with the same ID as the storage's creator and sets it as the ownerEntity.
142 | /// Called by CLIENT only.
143 | ///
144 | protected void FindOwnerEntity()
145 | {
146 | BaseCharacterEntity[] characters = FindObjectsOfType();
147 | foreach (BaseCharacterEntity bce in characters)
148 | {
149 | if (bce.ObjectId == OwnerObjectID)
150 | {
151 | ownerEntity = bce;
152 | ownerSet = true;
153 | return;
154 | }
155 | }
156 | }
157 |
158 | ///
159 | /// Sets the loot bag's owner entity.
160 | /// Called by SERVER only.
161 | ///
162 | /// entity that dropped the loot bag
163 | public void SetOwnerEntity(BaseCharacterEntity entity)
164 | {
165 | ownerEntity = entity;
166 | if (ownerEntity == null)
167 | return;
168 |
169 | OwnerObjectID = entity.ObjectId;
170 |
171 | if (entity is BasePlayerCharacterEntity)
172 | Title = entity.CharacterName;
173 | else
174 | Title = entity.GetDatabase().DefaultTitle;
175 |
176 | SetLootBagName();
177 | }
178 |
179 | ///
180 | /// Sets the name of the loot bag.
181 | ///
182 | public void SetLootBagName()
183 | {
184 | if (Title != "")
185 | {
186 | if (nameLootAfterOwner)
187 | Title += appendToLootName;
188 | }
189 | else
190 | Title = defaultLootName;
191 | }
192 |
193 | ///
194 | /// Adds the provided character items to the loot bag storage.
195 | ///
196 | /// items to add to loot bag
197 | public async UniTaskVoid AddItems(List lootItems)
198 | {
199 | if (!IsServer)
200 | return;
201 |
202 | List items = new List(GameInstance.ServerStorageHandlers.GetStorageEntityItems(this));
203 | if (items.Count > 0)
204 | return;
205 |
206 | List lootItemClones = new List();
207 | foreach (CharacterItem lootItem in lootItems)
208 | {
209 | lootItemClones.Add(lootItem.Clone());
210 | }
211 |
212 | bool itemsAdded = await AddItemsToStorage(lootItems);
213 | if (itemsAdded)
214 | initialized = true;
215 | }
216 |
217 | ///
218 | /// Adds the specified items to the loot bag and returns true once done.
219 | ///
220 | /// items to add to loot bag
221 | /// true
222 | protected async UniTask AddItemsToStorage(List lootItems)
223 | {
224 | List items = new List();
225 | foreach (CharacterItem item in lootItems)
226 | {
227 | items.Add(item.GetItem());
228 | }
229 | GameInstance.AddItems(items);
230 |
231 | StorageId storageId = new StorageId(StorageType.Building, Id);
232 | await GameInstance.ServerStorageHandlers.AddLootBagItems(storageId, lootItems);
233 | return true;
234 | }
235 |
236 | ///
237 | /// Sets the destroy delay for the loot bag entity.
238 | ///
239 | /// number of seconds before destroying
240 | public void SetDestroyDelay(float delay)
241 | {
242 | lifeTime = delay;
243 | RemainsLifeTime = delay;
244 | }
245 | }
246 | }
--------------------------------------------------------------------------------
/GameData/Loot Bag Visible.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 75d6d0cd4d7cf8c4786ee2be97f454fb, type: 3}
13 | m_Name: Loot Bag Visible
14 | m_EditorClassIdentifier:
15 | id:
16 | defaultTitle: Visible Loot Bag
17 | languageSpecificTitles: []
18 | defaultDescription:
19 | languageSpecificDescriptions: []
20 | category:
21 | icon: {fileID: 21300000, guid: dbb40d823b6879840a2ee2b325480751, type: 3}
22 | sellPrice: 0
23 | weight: 0
24 | maxStack: 99
25 | itemRefine: {fileID: 0}
26 | lockDuration: 0
27 | dropModel: {fileID: 1493009791342948, guid: 51d5f6f1b974837499794003e519230c, type: 3}
28 | dismantleReturnGold: 0
29 | dismantleReturnItems: []
30 | cashShopItemGeneratingList: []
31 | itemType: 6
32 | equipmentModels: []
33 | subEquipmentModels: []
34 | requirement:
35 | availableClass: {fileID: 0}
36 | availableClasses: []
37 | level: 0
38 | attributeAmounts: []
39 | equipmentSet: {fileID: 0}
40 | maxDurability: 0
41 | destroyIfBroken: 0
42 | maxSocket: 0
43 | armorType: {fileID: 0}
44 | armorAmount:
45 | damageElement: {fileID: 0}
46 | amount:
47 | baseAmount: 0
48 | amountIncreaseEachLevel: 0
49 | weaponType: {fileID: 0}
50 | damageAmount:
51 | damageElement: {fileID: 0}
52 | amount:
53 | baseAmount:
54 | min: 0
55 | max: 0
56 | amountIncreaseEachLevel:
57 | min: 0
58 | max: 0
59 | harvestDamageAmount:
60 | baseAmount:
61 | min: 0
62 | max: 0
63 | amountIncreaseEachLevel:
64 | min: 0
65 | max: 0
66 | moveSpeedRateWhileReloading: 1
67 | moveSpeedRateWhileCharging: 1
68 | moveSpeedRateWhileAttacking: 0
69 | ammoCapacity: 0
70 | weaponAbility: {fileID: 0}
71 | crosshairSetting:
72 | hidden: 0
73 | expandPerFrameWhileMoving: 3
74 | expandPerFrameWhileAttacking: 5
75 | shrinkPerFrame: 8
76 | shrinkPerFrameWhenAttacked: 0
77 | minSpread: 10
78 | maxSpread: 50
79 | recoilX: 0
80 | recoilY: 0
81 | launchClip: {fileID: 0}
82 | reloadClip: {fileID: 0}
83 | emptyClip: {fileID: 0}
84 | fireType: 0
85 | fireStagger: {x: 0, y: 0}
86 | fireSpread: 0
87 | destroyImmediatelyAfterFired: 0
88 | buff:
89 | duration:
90 | baseAmount: 0
91 | amountIncreaseEachLevel: 0
92 | recoveryHp:
93 | baseAmount: 0
94 | amountIncreaseEachLevel: 0
95 | recoveryMp:
96 | baseAmount: 0
97 | amountIncreaseEachLevel: 0
98 | recoveryStamina:
99 | baseAmount: 0
100 | amountIncreaseEachLevel: 0
101 | recoveryFood:
102 | baseAmount: 0
103 | amountIncreaseEachLevel: 0
104 | recoveryWater:
105 | baseAmount: 0
106 | amountIncreaseEachLevel: 0
107 | increaseStats:
108 | baseStats:
109 | hp: 0
110 | hpRecovery: 0
111 | hpLeechRate: 0
112 | mp: 0
113 | mpRecovery: 0
114 | mpLeechRate: 0
115 | stamina: 0
116 | staminaRecovery: 0
117 | staminaLeechRate: 0
118 | food: 0
119 | water: 0
120 | accuracy: 0
121 | evasion: 0
122 | criRate: 0
123 | criDmgRate: 0
124 | blockRate: 0
125 | blockDmgRate: 0
126 | moveSpeed: 0
127 | atkSpeed: 0
128 | weightLimit: 0
129 | slotLimit: 0
130 | goldRate: 0
131 | expRate: 0
132 | testStats: 0
133 | statsIncreaseEachLevel:
134 | hp: 0
135 | hpRecovery: 0
136 | hpLeechRate: 0
137 | mp: 0
138 | mpRecovery: 0
139 | mpLeechRate: 0
140 | stamina: 0
141 | staminaRecovery: 0
142 | staminaLeechRate: 0
143 | food: 0
144 | water: 0
145 | accuracy: 0
146 | evasion: 0
147 | criRate: 0
148 | criDmgRate: 0
149 | blockRate: 0
150 | blockDmgRate: 0
151 | moveSpeed: 0
152 | atkSpeed: 0
153 | weightLimit: 0
154 | slotLimit: 0
155 | goldRate: 0
156 | expRate: 0
157 | testStats: 0
158 | increaseStatsRate:
159 | baseStats:
160 | hp: 0
161 | hpRecovery: 0
162 | hpLeechRate: 0
163 | mp: 0
164 | mpRecovery: 0
165 | mpLeechRate: 0
166 | stamina: 0
167 | staminaRecovery: 0
168 | staminaLeechRate: 0
169 | food: 0
170 | water: 0
171 | accuracy: 0
172 | evasion: 0
173 | criRate: 0
174 | criDmgRate: 0
175 | blockRate: 0
176 | blockDmgRate: 0
177 | moveSpeed: 0
178 | atkSpeed: 0
179 | weightLimit: 0
180 | slotLimit: 0
181 | goldRate: 0
182 | expRate: 0
183 | testStats: 0
184 | statsIncreaseEachLevel:
185 | hp: 0
186 | hpRecovery: 0
187 | hpLeechRate: 0
188 | mp: 0
189 | mpRecovery: 0
190 | mpLeechRate: 0
191 | stamina: 0
192 | staminaRecovery: 0
193 | staminaLeechRate: 0
194 | food: 0
195 | water: 0
196 | accuracy: 0
197 | evasion: 0
198 | criRate: 0
199 | criDmgRate: 0
200 | blockRate: 0
201 | blockDmgRate: 0
202 | moveSpeed: 0
203 | atkSpeed: 0
204 | weightLimit: 0
205 | slotLimit: 0
206 | goldRate: 0
207 | expRate: 0
208 | testStats: 0
209 | increaseAttributes: []
210 | increaseAttributesRate: []
211 | increaseResistances: []
212 | increaseArmors: []
213 | increaseDamages: []
214 | damageOverTimes: []
215 | ailment: 0
216 | disallowMove: 0
217 | disallowAttack: 0
218 | disallowUseSkill: 0
219 | disallowUseItem: 0
220 | freezeAnimation: 0
221 | isHide: 0
222 | muteFootstepSound: 0
223 | selfStatusEffectsWhenAttacking: []
224 | enemyStatusEffectsWhenAttacking: []
225 | selfStatusEffectsWhenAttacked: []
226 | enemyStatusEffectsWhenAttacked: []
227 | effects: []
228 | isExtendDuration: 0
229 | maxStack:
230 | baseAmount: 0
231 | amountIncreaseEachLevel: 0
232 | doNotRemoveOnDead: 0
233 | increaseStats:
234 | baseStats:
235 | hp: 0
236 | hpRecovery: 0
237 | hpLeechRate: 0
238 | mp: 0
239 | mpRecovery: 0
240 | mpLeechRate: 0
241 | stamina: 0
242 | staminaRecovery: 0
243 | staminaLeechRate: 0
244 | food: 0
245 | water: 0
246 | accuracy: 0
247 | evasion: 0
248 | criRate: 0
249 | criDmgRate: 0
250 | blockRate: 0
251 | blockDmgRate: 0
252 | moveSpeed: 0
253 | atkSpeed: 0
254 | weightLimit: 0
255 | slotLimit: 0
256 | goldRate: 0
257 | expRate: 0
258 | testStats: 0
259 | statsIncreaseEachLevel:
260 | hp: 0
261 | hpRecovery: 0
262 | hpLeechRate: 0
263 | mp: 0
264 | mpRecovery: 0
265 | mpLeechRate: 0
266 | stamina: 0
267 | staminaRecovery: 0
268 | staminaLeechRate: 0
269 | food: 0
270 | water: 0
271 | accuracy: 0
272 | evasion: 0
273 | criRate: 0
274 | criDmgRate: 0
275 | blockRate: 0
276 | blockDmgRate: 0
277 | moveSpeed: 0
278 | atkSpeed: 0
279 | weightLimit: 0
280 | slotLimit: 0
281 | goldRate: 0
282 | expRate: 0
283 | testStats: 0
284 | increaseStatsRate:
285 | baseStats:
286 | hp: 0
287 | hpRecovery: 0
288 | hpLeechRate: 0
289 | mp: 0
290 | mpRecovery: 0
291 | mpLeechRate: 0
292 | stamina: 0
293 | staminaRecovery: 0
294 | staminaLeechRate: 0
295 | food: 0
296 | water: 0
297 | accuracy: 0
298 | evasion: 0
299 | criRate: 0
300 | criDmgRate: 0
301 | blockRate: 0
302 | blockDmgRate: 0
303 | moveSpeed: 0
304 | atkSpeed: 0
305 | weightLimit: 0
306 | slotLimit: 0
307 | goldRate: 0
308 | expRate: 0
309 | testStats: 0
310 | statsIncreaseEachLevel:
311 | hp: 0
312 | hpRecovery: 0
313 | hpLeechRate: 0
314 | mp: 0
315 | mpRecovery: 0
316 | mpLeechRate: 0
317 | stamina: 0
318 | staminaRecovery: 0
319 | staminaLeechRate: 0
320 | food: 0
321 | water: 0
322 | accuracy: 0
323 | evasion: 0
324 | criRate: 0
325 | criDmgRate: 0
326 | blockRate: 0
327 | blockDmgRate: 0
328 | moveSpeed: 0
329 | atkSpeed: 0
330 | weightLimit: 0
331 | slotLimit: 0
332 | goldRate: 0
333 | expRate: 0
334 | testStats: 0
335 | increaseAttributes: []
336 | increaseAttributesRate: []
337 | increaseResistances: []
338 | increaseArmors: []
339 | increaseDamages: []
340 | increaseSkillLevels: []
341 | ammoType: {fileID: 0}
342 | buildingEntity: {fileID: 4627261008861122295, guid: 70c38374013f0d747bcaad42173cbba8,
343 | type: 3}
344 | petEntity: {fileID: 0}
345 | mountEntity: {fileID: 0}
346 | socketEnhanceEffect:
347 | stats:
348 | hp: 0
349 | hpRecovery: 0
350 | hpLeechRate: 0
351 | mp: 0
352 | mpRecovery: 0
353 | mpLeechRate: 0
354 | stamina: 0
355 | staminaRecovery: 0
356 | staminaLeechRate: 0
357 | food: 0
358 | water: 0
359 | accuracy: 0
360 | evasion: 0
361 | criRate: 0
362 | criDmgRate: 0
363 | blockRate: 0
364 | blockDmgRate: 0
365 | moveSpeed: 0
366 | atkSpeed: 0
367 | weightLimit: 0
368 | slotLimit: 0
369 | goldRate: 0
370 | expRate: 0
371 | testStats: 0
372 | statsRate:
373 | hp: 0
374 | hpRecovery: 0
375 | hpLeechRate: 0
376 | mp: 0
377 | mpRecovery: 0
378 | mpLeechRate: 0
379 | stamina: 0
380 | staminaRecovery: 0
381 | staminaLeechRate: 0
382 | food: 0
383 | water: 0
384 | accuracy: 0
385 | evasion: 0
386 | criRate: 0
387 | criDmgRate: 0
388 | blockRate: 0
389 | blockDmgRate: 0
390 | moveSpeed: 0
391 | atkSpeed: 0
392 | weightLimit: 0
393 | slotLimit: 0
394 | goldRate: 0
395 | expRate: 0
396 | testStats: 0
397 | attributes: []
398 | attributesRate: []
399 | resistances: []
400 | armors: []
401 | damages: []
402 | skills: []
403 | attributeAmount:
404 | attribute: {fileID: 0}
405 | amount: 0
406 | skillLevel:
407 | skill: {fileID: 0}
408 | level: 0
409 | selfStatusEffectsWhenAttacking: []
410 | enemyStatusEffectsWhenAttacking: []
411 | selfStatusEffectsWhenAttacked: []
412 | enemyStatusEffectsWhenAttacked: []
413 | randomBonus:
414 | maxRandomStatsAmount: 0
415 | randomCharacterStats:
416 | minHp: 0
417 | maxHp: 0
418 | hpApplyRate: 0
419 | minHpRecovery: 0
420 | maxHpRecovery: 0
421 | hpRecoveryApplyRate: 0
422 | minHpLeechRate: 0
423 | maxHpLeechRate: 0
424 | hpLeechRateApplyRate: 0
425 | minMp: 0
426 | maxMp: 0
427 | mpApplyRate: 0
428 | minMpRecovery: 0
429 | maxMpRecovery: 0
430 | mpRecoveryApplyRate: 0
431 | minMpLeechRate: 0
432 | maxMpLeechRate: 0
433 | mpLeechRateApplyRate: 0
434 | minStamina: 0
435 | maxStamina: 0
436 | staminaApplyRate: 0
437 | minStaminaRecovery: 0
438 | maxStaminaRecovery: 0
439 | staminaRecoveryApplyRate: 0
440 | minStaminaLeechRate: 0
441 | maxStaminaLeechRate: 0
442 | staminaLeechRateApplyRate: 0
443 | minFood: 0
444 | maxFood: 0
445 | foodApplyRate: 0
446 | minWater: 0
447 | maxWater: 0
448 | waterApplyRate: 0
449 | minAccuracy: 0
450 | maxAccuracy: 0
451 | accuracyApplyRate: 0
452 | minEvasion: 0
453 | maxEvasion: 0
454 | evasionApplyRate: 0
455 | minCriRate: 0
456 | maxCriRate: 0
457 | criRateApplyRate: 0
458 | minCriDmgRate: 0
459 | maxCriDmgRate: 0
460 | criDmgRateApplyRate: 0
461 | minBlockRate: 0
462 | maxBlockRate: 0
463 | blockRateApplyRate: 0
464 | minBlockDmgRate: 0
465 | maxBlockDmgRate: 0
466 | blockDmgRateApplyRate: 0
467 | minMoveSpeed: 0
468 | maxMoveSpeed: 0
469 | moveSpeedApplyRate: 0
470 | minAtkSpeed: 0
471 | maxAtkSpeed: 0
472 | atkSpeedApplyRate: 0
473 | minWeightLimit: 0
474 | maxWeightLimit: 0
475 | weightLimitApplyRate: 0
476 | minSlotLimit: 0
477 | maxSlotLimit: 0
478 | slotLimitApplyRate: 0
479 | minGoldRate: 0
480 | maxGoldRate: 0
481 | goldRateApplyRate: 0
482 | minExpRate: 0
483 | maxExpRate: 0
484 | expRateApplyRate: 0
485 | randomCharacterStatsRate:
486 | minHp: 0
487 | maxHp: 0
488 | hpApplyRate: 0
489 | minHpRecovery: 0
490 | maxHpRecovery: 0
491 | hpRecoveryApplyRate: 0
492 | minHpLeechRate: 0
493 | maxHpLeechRate: 0
494 | hpLeechRateApplyRate: 0
495 | minMp: 0
496 | maxMp: 0
497 | mpApplyRate: 0
498 | minMpRecovery: 0
499 | maxMpRecovery: 0
500 | mpRecoveryApplyRate: 0
501 | minMpLeechRate: 0
502 | maxMpLeechRate: 0
503 | mpLeechRateApplyRate: 0
504 | minStamina: 0
505 | maxStamina: 0
506 | staminaApplyRate: 0
507 | minStaminaRecovery: 0
508 | maxStaminaRecovery: 0
509 | staminaRecoveryApplyRate: 0
510 | minStaminaLeechRate: 0
511 | maxStaminaLeechRate: 0
512 | staminaLeechRateApplyRate: 0
513 | minFood: 0
514 | maxFood: 0
515 | foodApplyRate: 0
516 | minWater: 0
517 | maxWater: 0
518 | waterApplyRate: 0
519 | minAccuracy: 0
520 | maxAccuracy: 0
521 | accuracyApplyRate: 0
522 | minEvasion: 0
523 | maxEvasion: 0
524 | evasionApplyRate: 0
525 | minCriRate: 0
526 | maxCriRate: 0
527 | criRateApplyRate: 0
528 | minCriDmgRate: 0
529 | maxCriDmgRate: 0
530 | criDmgRateApplyRate: 0
531 | minBlockRate: 0
532 | maxBlockRate: 0
533 | blockRateApplyRate: 0
534 | minBlockDmgRate: 0
535 | maxBlockDmgRate: 0
536 | blockDmgRateApplyRate: 0
537 | minMoveSpeed: 0
538 | maxMoveSpeed: 0
539 | moveSpeedApplyRate: 0
540 | minAtkSpeed: 0
541 | maxAtkSpeed: 0
542 | atkSpeedApplyRate: 0
543 | minWeightLimit: 0
544 | maxWeightLimit: 0
545 | weightLimitApplyRate: 0
546 | minSlotLimit: 0
547 | maxSlotLimit: 0
548 | slotLimitApplyRate: 0
549 | minGoldRate: 0
550 | maxGoldRate: 0
551 | goldRateApplyRate: 0
552 | minExpRate: 0
553 | maxExpRate: 0
554 | expRateApplyRate: 0
555 | randomAttributeAmounts: []
556 | randomAttributeAmountRates: []
557 | randomResistanceAmounts: []
558 | randomArmorAmounts: []
559 | randomDamageAmounts: []
560 | randomSkillLevels: []
561 |
--------------------------------------------------------------------------------
/GameData/Loot Bag Invisible.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 75d6d0cd4d7cf8c4786ee2be97f454fb, type: 3}
13 | m_Name: Loot Bag Invisible
14 | m_EditorClassIdentifier:
15 | id:
16 | defaultTitle: Invisible Loot Bag
17 | languageSpecificTitles: []
18 | defaultDescription:
19 | languageSpecificDescriptions: []
20 | category:
21 | icon: {fileID: 21300000, guid: dbb40d823b6879840a2ee2b325480751, type: 3}
22 | sellPrice: 0
23 | weight: 0
24 | maxStack: 99
25 | itemRefine: {fileID: 0}
26 | lockDuration: 0
27 | dropModel: {fileID: 1493009791342948, guid: 51d5f6f1b974837499794003e519230c, type: 3}
28 | dismantleReturnGold: 0
29 | dismantleReturnItems: []
30 | cashShopItemGeneratingList: []
31 | itemType: 6
32 | equipmentModels: []
33 | subEquipmentModels: []
34 | requirement:
35 | availableClass: {fileID: 0}
36 | availableClasses: []
37 | level: 0
38 | attributeAmounts: []
39 | equipmentSet: {fileID: 0}
40 | maxDurability: 0
41 | destroyIfBroken: 0
42 | maxSocket: 0
43 | armorType: {fileID: 0}
44 | armorAmount:
45 | damageElement: {fileID: 0}
46 | amount:
47 | baseAmount: 0
48 | amountIncreaseEachLevel: 0
49 | weaponType: {fileID: 0}
50 | damageAmount:
51 | damageElement: {fileID: 0}
52 | amount:
53 | baseAmount:
54 | min: 0
55 | max: 0
56 | amountIncreaseEachLevel:
57 | min: 0
58 | max: 0
59 | harvestDamageAmount:
60 | baseAmount:
61 | min: 0
62 | max: 0
63 | amountIncreaseEachLevel:
64 | min: 0
65 | max: 0
66 | moveSpeedRateWhileReloading: 1
67 | moveSpeedRateWhileCharging: 1
68 | moveSpeedRateWhileAttacking: 0
69 | ammoCapacity: 0
70 | weaponAbility: {fileID: 0}
71 | crosshairSetting:
72 | hidden: 0
73 | expandPerFrameWhileMoving: 3
74 | expandPerFrameWhileAttacking: 5
75 | shrinkPerFrame: 8
76 | shrinkPerFrameWhenAttacked: 0
77 | minSpread: 10
78 | maxSpread: 50
79 | recoilX: 0
80 | recoilY: 0
81 | launchClip: {fileID: 0}
82 | reloadClip: {fileID: 0}
83 | emptyClip: {fileID: 0}
84 | fireType: 0
85 | fireStagger: {x: 0, y: 0}
86 | fireSpread: 0
87 | destroyImmediatelyAfterFired: 0
88 | buff:
89 | duration:
90 | baseAmount: 0
91 | amountIncreaseEachLevel: 0
92 | recoveryHp:
93 | baseAmount: 0
94 | amountIncreaseEachLevel: 0
95 | recoveryMp:
96 | baseAmount: 0
97 | amountIncreaseEachLevel: 0
98 | recoveryStamina:
99 | baseAmount: 0
100 | amountIncreaseEachLevel: 0
101 | recoveryFood:
102 | baseAmount: 0
103 | amountIncreaseEachLevel: 0
104 | recoveryWater:
105 | baseAmount: 0
106 | amountIncreaseEachLevel: 0
107 | increaseStats:
108 | baseStats:
109 | hp: 0
110 | hpRecovery: 0
111 | hpLeechRate: 0
112 | mp: 0
113 | mpRecovery: 0
114 | mpLeechRate: 0
115 | stamina: 0
116 | staminaRecovery: 0
117 | staminaLeechRate: 0
118 | food: 0
119 | water: 0
120 | accuracy: 0
121 | evasion: 0
122 | criRate: 0
123 | criDmgRate: 0
124 | blockRate: 0
125 | blockDmgRate: 0
126 | moveSpeed: 0
127 | atkSpeed: 0
128 | weightLimit: 0
129 | slotLimit: 0
130 | goldRate: 0
131 | expRate: 0
132 | testStats: 0
133 | statsIncreaseEachLevel:
134 | hp: 0
135 | hpRecovery: 0
136 | hpLeechRate: 0
137 | mp: 0
138 | mpRecovery: 0
139 | mpLeechRate: 0
140 | stamina: 0
141 | staminaRecovery: 0
142 | staminaLeechRate: 0
143 | food: 0
144 | water: 0
145 | accuracy: 0
146 | evasion: 0
147 | criRate: 0
148 | criDmgRate: 0
149 | blockRate: 0
150 | blockDmgRate: 0
151 | moveSpeed: 0
152 | atkSpeed: 0
153 | weightLimit: 0
154 | slotLimit: 0
155 | goldRate: 0
156 | expRate: 0
157 | testStats: 0
158 | increaseStatsRate:
159 | baseStats:
160 | hp: 0
161 | hpRecovery: 0
162 | hpLeechRate: 0
163 | mp: 0
164 | mpRecovery: 0
165 | mpLeechRate: 0
166 | stamina: 0
167 | staminaRecovery: 0
168 | staminaLeechRate: 0
169 | food: 0
170 | water: 0
171 | accuracy: 0
172 | evasion: 0
173 | criRate: 0
174 | criDmgRate: 0
175 | blockRate: 0
176 | blockDmgRate: 0
177 | moveSpeed: 0
178 | atkSpeed: 0
179 | weightLimit: 0
180 | slotLimit: 0
181 | goldRate: 0
182 | expRate: 0
183 | testStats: 0
184 | statsIncreaseEachLevel:
185 | hp: 0
186 | hpRecovery: 0
187 | hpLeechRate: 0
188 | mp: 0
189 | mpRecovery: 0
190 | mpLeechRate: 0
191 | stamina: 0
192 | staminaRecovery: 0
193 | staminaLeechRate: 0
194 | food: 0
195 | water: 0
196 | accuracy: 0
197 | evasion: 0
198 | criRate: 0
199 | criDmgRate: 0
200 | blockRate: 0
201 | blockDmgRate: 0
202 | moveSpeed: 0
203 | atkSpeed: 0
204 | weightLimit: 0
205 | slotLimit: 0
206 | goldRate: 0
207 | expRate: 0
208 | testStats: 0
209 | increaseAttributes: []
210 | increaseAttributesRate: []
211 | increaseResistances: []
212 | increaseArmors: []
213 | increaseDamages: []
214 | damageOverTimes: []
215 | ailment: 0
216 | disallowMove: 0
217 | disallowAttack: 0
218 | disallowUseSkill: 0
219 | disallowUseItem: 0
220 | freezeAnimation: 0
221 | isHide: 0
222 | muteFootstepSound: 0
223 | selfStatusEffectsWhenAttacking: []
224 | enemyStatusEffectsWhenAttacking: []
225 | selfStatusEffectsWhenAttacked: []
226 | enemyStatusEffectsWhenAttacked: []
227 | effects: []
228 | isExtendDuration: 0
229 | maxStack:
230 | baseAmount: 0
231 | amountIncreaseEachLevel: 0
232 | doNotRemoveOnDead: 0
233 | increaseStats:
234 | baseStats:
235 | hp: 0
236 | hpRecovery: 0
237 | hpLeechRate: 0
238 | mp: 0
239 | mpRecovery: 0
240 | mpLeechRate: 0
241 | stamina: 0
242 | staminaRecovery: 0
243 | staminaLeechRate: 0
244 | food: 0
245 | water: 0
246 | accuracy: 0
247 | evasion: 0
248 | criRate: 0
249 | criDmgRate: 0
250 | blockRate: 0
251 | blockDmgRate: 0
252 | moveSpeed: 0
253 | atkSpeed: 0
254 | weightLimit: 0
255 | slotLimit: 0
256 | goldRate: 0
257 | expRate: 0
258 | testStats: 0
259 | statsIncreaseEachLevel:
260 | hp: 0
261 | hpRecovery: 0
262 | hpLeechRate: 0
263 | mp: 0
264 | mpRecovery: 0
265 | mpLeechRate: 0
266 | stamina: 0
267 | staminaRecovery: 0
268 | staminaLeechRate: 0
269 | food: 0
270 | water: 0
271 | accuracy: 0
272 | evasion: 0
273 | criRate: 0
274 | criDmgRate: 0
275 | blockRate: 0
276 | blockDmgRate: 0
277 | moveSpeed: 0
278 | atkSpeed: 0
279 | weightLimit: 0
280 | slotLimit: 0
281 | goldRate: 0
282 | expRate: 0
283 | testStats: 0
284 | increaseStatsRate:
285 | baseStats:
286 | hp: 0
287 | hpRecovery: 0
288 | hpLeechRate: 0
289 | mp: 0
290 | mpRecovery: 0
291 | mpLeechRate: 0
292 | stamina: 0
293 | staminaRecovery: 0
294 | staminaLeechRate: 0
295 | food: 0
296 | water: 0
297 | accuracy: 0
298 | evasion: 0
299 | criRate: 0
300 | criDmgRate: 0
301 | blockRate: 0
302 | blockDmgRate: 0
303 | moveSpeed: 0
304 | atkSpeed: 0
305 | weightLimit: 0
306 | slotLimit: 0
307 | goldRate: 0
308 | expRate: 0
309 | testStats: 0
310 | statsIncreaseEachLevel:
311 | hp: 0
312 | hpRecovery: 0
313 | hpLeechRate: 0
314 | mp: 0
315 | mpRecovery: 0
316 | mpLeechRate: 0
317 | stamina: 0
318 | staminaRecovery: 0
319 | staminaLeechRate: 0
320 | food: 0
321 | water: 0
322 | accuracy: 0
323 | evasion: 0
324 | criRate: 0
325 | criDmgRate: 0
326 | blockRate: 0
327 | blockDmgRate: 0
328 | moveSpeed: 0
329 | atkSpeed: 0
330 | weightLimit: 0
331 | slotLimit: 0
332 | goldRate: 0
333 | expRate: 0
334 | testStats: 0
335 | increaseAttributes: []
336 | increaseAttributesRate: []
337 | increaseResistances: []
338 | increaseArmors: []
339 | increaseDamages: []
340 | increaseSkillLevels: []
341 | ammoType: {fileID: 0}
342 | buildingEntity: {fileID: 4627261008861122295, guid: c9020ccaa1159234398bc8499b5f903f,
343 | type: 3}
344 | petEntity: {fileID: 0}
345 | mountEntity: {fileID: 0}
346 | socketEnhanceEffect:
347 | stats:
348 | hp: 0
349 | hpRecovery: 0
350 | hpLeechRate: 0
351 | mp: 0
352 | mpRecovery: 0
353 | mpLeechRate: 0
354 | stamina: 0
355 | staminaRecovery: 0
356 | staminaLeechRate: 0
357 | food: 0
358 | water: 0
359 | accuracy: 0
360 | evasion: 0
361 | criRate: 0
362 | criDmgRate: 0
363 | blockRate: 0
364 | blockDmgRate: 0
365 | moveSpeed: 0
366 | atkSpeed: 0
367 | weightLimit: 0
368 | slotLimit: 0
369 | goldRate: 0
370 | expRate: 0
371 | testStats: 0
372 | statsRate:
373 | hp: 0
374 | hpRecovery: 0
375 | hpLeechRate: 0
376 | mp: 0
377 | mpRecovery: 0
378 | mpLeechRate: 0
379 | stamina: 0
380 | staminaRecovery: 0
381 | staminaLeechRate: 0
382 | food: 0
383 | water: 0
384 | accuracy: 0
385 | evasion: 0
386 | criRate: 0
387 | criDmgRate: 0
388 | blockRate: 0
389 | blockDmgRate: 0
390 | moveSpeed: 0
391 | atkSpeed: 0
392 | weightLimit: 0
393 | slotLimit: 0
394 | goldRate: 0
395 | expRate: 0
396 | testStats: 0
397 | attributes: []
398 | attributesRate: []
399 | resistances: []
400 | armors: []
401 | damages: []
402 | skills: []
403 | attributeAmount:
404 | attribute: {fileID: 0}
405 | amount: 0
406 | skillLevel:
407 | skill: {fileID: 0}
408 | level: 0
409 | selfStatusEffectsWhenAttacking: []
410 | enemyStatusEffectsWhenAttacking: []
411 | selfStatusEffectsWhenAttacked: []
412 | enemyStatusEffectsWhenAttacked: []
413 | randomBonus:
414 | maxRandomStatsAmount: 0
415 | randomCharacterStats:
416 | minHp: 0
417 | maxHp: 0
418 | hpApplyRate: 0
419 | minHpRecovery: 0
420 | maxHpRecovery: 0
421 | hpRecoveryApplyRate: 0
422 | minHpLeechRate: 0
423 | maxHpLeechRate: 0
424 | hpLeechRateApplyRate: 0
425 | minMp: 0
426 | maxMp: 0
427 | mpApplyRate: 0
428 | minMpRecovery: 0
429 | maxMpRecovery: 0
430 | mpRecoveryApplyRate: 0
431 | minMpLeechRate: 0
432 | maxMpLeechRate: 0
433 | mpLeechRateApplyRate: 0
434 | minStamina: 0
435 | maxStamina: 0
436 | staminaApplyRate: 0
437 | minStaminaRecovery: 0
438 | maxStaminaRecovery: 0
439 | staminaRecoveryApplyRate: 0
440 | minStaminaLeechRate: 0
441 | maxStaminaLeechRate: 0
442 | staminaLeechRateApplyRate: 0
443 | minFood: 0
444 | maxFood: 0
445 | foodApplyRate: 0
446 | minWater: 0
447 | maxWater: 0
448 | waterApplyRate: 0
449 | minAccuracy: 0
450 | maxAccuracy: 0
451 | accuracyApplyRate: 0
452 | minEvasion: 0
453 | maxEvasion: 0
454 | evasionApplyRate: 0
455 | minCriRate: 0
456 | maxCriRate: 0
457 | criRateApplyRate: 0
458 | minCriDmgRate: 0
459 | maxCriDmgRate: 0
460 | criDmgRateApplyRate: 0
461 | minBlockRate: 0
462 | maxBlockRate: 0
463 | blockRateApplyRate: 0
464 | minBlockDmgRate: 0
465 | maxBlockDmgRate: 0
466 | blockDmgRateApplyRate: 0
467 | minMoveSpeed: 0
468 | maxMoveSpeed: 0
469 | moveSpeedApplyRate: 0
470 | minAtkSpeed: 0
471 | maxAtkSpeed: 0
472 | atkSpeedApplyRate: 0
473 | minWeightLimit: 0
474 | maxWeightLimit: 0
475 | weightLimitApplyRate: 0
476 | minSlotLimit: 0
477 | maxSlotLimit: 0
478 | slotLimitApplyRate: 0
479 | minGoldRate: 0
480 | maxGoldRate: 0
481 | goldRateApplyRate: 0
482 | minExpRate: 0
483 | maxExpRate: 0
484 | expRateApplyRate: 0
485 | randomCharacterStatsRate:
486 | minHp: 0
487 | maxHp: 0
488 | hpApplyRate: 0
489 | minHpRecovery: 0
490 | maxHpRecovery: 0
491 | hpRecoveryApplyRate: 0
492 | minHpLeechRate: 0
493 | maxHpLeechRate: 0
494 | hpLeechRateApplyRate: 0
495 | minMp: 0
496 | maxMp: 0
497 | mpApplyRate: 0
498 | minMpRecovery: 0
499 | maxMpRecovery: 0
500 | mpRecoveryApplyRate: 0
501 | minMpLeechRate: 0
502 | maxMpLeechRate: 0
503 | mpLeechRateApplyRate: 0
504 | minStamina: 0
505 | maxStamina: 0
506 | staminaApplyRate: 0
507 | minStaminaRecovery: 0
508 | maxStaminaRecovery: 0
509 | staminaRecoveryApplyRate: 0
510 | minStaminaLeechRate: 0
511 | maxStaminaLeechRate: 0
512 | staminaLeechRateApplyRate: 0
513 | minFood: 0
514 | maxFood: 0
515 | foodApplyRate: 0
516 | minWater: 0
517 | maxWater: 0
518 | waterApplyRate: 0
519 | minAccuracy: 0
520 | maxAccuracy: 0
521 | accuracyApplyRate: 0
522 | minEvasion: 0
523 | maxEvasion: 0
524 | evasionApplyRate: 0
525 | minCriRate: 0
526 | maxCriRate: 0
527 | criRateApplyRate: 0
528 | minCriDmgRate: 0
529 | maxCriDmgRate: 0
530 | criDmgRateApplyRate: 0
531 | minBlockRate: 0
532 | maxBlockRate: 0
533 | blockRateApplyRate: 0
534 | minBlockDmgRate: 0
535 | maxBlockDmgRate: 0
536 | blockDmgRateApplyRate: 0
537 | minMoveSpeed: 0
538 | maxMoveSpeed: 0
539 | moveSpeedApplyRate: 0
540 | minAtkSpeed: 0
541 | maxAtkSpeed: 0
542 | atkSpeedApplyRate: 0
543 | minWeightLimit: 0
544 | maxWeightLimit: 0
545 | weightLimitApplyRate: 0
546 | minSlotLimit: 0
547 | maxSlotLimit: 0
548 | slotLimitApplyRate: 0
549 | minGoldRate: 0
550 | maxGoldRate: 0
551 | goldRateApplyRate: 0
552 | minExpRate: 0
553 | maxExpRate: 0
554 | expRateApplyRate: 0
555 | randomAttributeAmounts: []
556 | randomAttributeAmountRates: []
557 | randomResistanceAmounts: []
558 | randomArmorAmounts: []
559 | randomDamageAmounts: []
560 | randomSkillLevels: []
561 |
--------------------------------------------------------------------------------
/Resources/LootBags/LootBagEntityInvisible.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &1010448075208350
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 4043413841882160}
12 | - component: {fileID: 114542154319358494}
13 | - component: {fileID: 4627261008861122295}
14 | m_Layer: 0
15 | m_Name: LootBagEntityInvisible
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &4043413841882160
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 1010448075208350}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_Children:
32 | - {fileID: 4039600875746306}
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &114542154319358494
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 1010448075208350}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 11500000, guid: 56367cc2ed44f1e49835e9c247771fd9, type: 3}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | assetId: c9020ccaa1159234398bc8499b5f903f
49 | objectId: 0
50 | visibleRange: 0
51 | alwaysVisible: 0
52 | doNotDestroyWhenDisconnect: 0
53 | poolingSize: 0
54 | --- !u!114 &4627261008861122295
55 | MonoBehaviour:
56 | m_ObjectHideFlags: 0
57 | m_CorrespondingSourceObject: {fileID: 0}
58 | m_PrefabInstance: {fileID: 0}
59 | m_PrefabAsset: {fileID: 0}
60 | m_GameObject: {fileID: 1010448075208350}
61 | m_Enabled: 1
62 | m_EditorHideFlags: 0
63 | m_Script: {fileID: 11500000, guid: 3f0fca89f6d4c3c499624e0b24e80ca0, type: 3}
64 | m_Name:
65 | m_EditorClassIdentifier:
66 | behaviourIndex: 0
67 | dataChannel: 0
68 | sendOptions: 0
69 | sendInterval: 0.1
70 | entityTitle:
71 | entityTitles: []
72 | syncTitle:
73 | behaviour: {fileID: 0}
74 | elementId: 0
75 | alwaysSync: 0
76 | doNotSyncInitialDataImmediately: 0
77 | syncMode: 0
78 | sendInterval: 0.1
79 | dataChannel: 0
80 | deliveryMethod: 2
81 | clientDataChannel: 0
82 | clientDeliveryMethod: 1
83 | value:
84 | syncTitleB:
85 | behaviour: {fileID: 0}
86 | elementId: 0
87 | alwaysSync: 0
88 | doNotSyncInitialDataImmediately: 0
89 | syncMode: 0
90 | sendInterval: 0.1
91 | dataChannel: 0
92 | deliveryMethod: 2
93 | clientDataChannel: 0
94 | clientDeliveryMethod: 1
95 | value:
96 | ownerObjects: []
97 | nonOwnerObjects: []
98 | model: {fileID: 0}
99 | cameraTargetTransform: {fileID: 0}
100 | fpsCameraTargetTransform: {fileID: 0}
101 | movementSecure: 0
102 | canSideSprint: 0
103 | canBackwardSprint: 0
104 | direction2D:
105 | behaviour: {fileID: 0}
106 | elementId: 0
107 | alwaysSync: 0
108 | doNotSyncInitialDataImmediately: 1
109 | syncMode: 0
110 | sendInterval: 0.1
111 | dataChannel: 0
112 | deliveryMethod: 1
113 | clientDataChannel: 0
114 | clientDeliveryMethod: 1
115 | passengingVehicle:
116 | behaviour: {fileID: 0}
117 | elementId: 0
118 | alwaysSync: 0
119 | doNotSyncInitialDataImmediately: 1
120 | syncMode: 0
121 | sendInterval: 0.1
122 | dataChannel: 0
123 | deliveryMethod: 2
124 | clientDataChannel: 0
125 | clientDeliveryMethod: 1
126 | value:
127 | objectId: 0
128 | seatIndex: 0
129 | combatTextTransform: {fileID: 0}
130 | opponentAimTransform: {fileID: 0}
131 | isStaticHitBoxes: 0
132 | onNormalDamageHit:
133 | m_PersistentCalls:
134 | m_Calls: []
135 | onCriticalDamageHit:
136 | m_PersistentCalls:
137 | m_Calls: []
138 | onBlockedDamageHit:
139 | m_PersistentCalls:
140 | m_Calls: []
141 | onDamageMissed:
142 | m_PersistentCalls:
143 | m_Calls: []
144 | isImmune:
145 | behaviour: {fileID: 0}
146 | elementId: 0
147 | alwaysSync: 0
148 | doNotSyncInitialDataImmediately: 0
149 | syncMode: 0
150 | sendInterval: 0.1
151 | dataChannel: 0
152 | deliveryMethod: 1
153 | clientDataChannel: 0
154 | clientDeliveryMethod: 1
155 | value: 0
156 | currentHp:
157 | behaviour: {fileID: 0}
158 | elementId: 0
159 | alwaysSync: 0
160 | doNotSyncInitialDataImmediately: 0
161 | syncMode: 0
162 | sendInterval: 0.1
163 | dataChannel: 0
164 | deliveryMethod: 1
165 | clientDataChannel: 0
166 | clientDeliveryMethod: 1
167 | value: 0
168 | canBuildOnAnySurface: 0
169 | buildingType:
170 | buildingTypes: []
171 | buildDistance: 5
172 | destroyWhenParentDestroyed: 0
173 | maxHp: 100
174 | lifeTime: 30
175 | droppingItems: []
176 | destroyDelay: 2
177 | onBuildingDestroy:
178 | m_PersistentCalls:
179 | m_Calls: []
180 | onBuildingConstruct:
181 | m_PersistentCalls:
182 | m_Calls: []
183 | id:
184 | behaviour: {fileID: 0}
185 | elementId: 0
186 | alwaysSync: 0
187 | doNotSyncInitialDataImmediately: 0
188 | syncMode: 0
189 | sendInterval: 0.1
190 | dataChannel: 0
191 | deliveryMethod: 1
192 | clientDataChannel: 0
193 | clientDeliveryMethod: 1
194 | value:
195 | parentId:
196 | behaviour: {fileID: 0}
197 | elementId: 0
198 | alwaysSync: 0
199 | doNotSyncInitialDataImmediately: 0
200 | syncMode: 0
201 | sendInterval: 0.1
202 | dataChannel: 0
203 | deliveryMethod: 1
204 | clientDataChannel: 0
205 | clientDeliveryMethod: 1
206 | value:
207 | remainsLifeTime:
208 | behaviour: {fileID: 0}
209 | elementId: 0
210 | alwaysSync: 0
211 | doNotSyncInitialDataImmediately: 0
212 | syncMode: 0
213 | sendInterval: 0.1
214 | dataChannel: 0
215 | deliveryMethod: 1
216 | clientDataChannel: 0
217 | clientDeliveryMethod: 1
218 | value: 0
219 | isLocked:
220 | behaviour: {fileID: 0}
221 | elementId: 0
222 | alwaysSync: 0
223 | doNotSyncInitialDataImmediately: 0
224 | syncMode: 0
225 | sendInterval: 0.1
226 | dataChannel: 0
227 | deliveryMethod: 1
228 | clientDataChannel: 0
229 | clientDeliveryMethod: 1
230 | value: 0
231 | creatorId:
232 | behaviour: {fileID: 0}
233 | elementId: 0
234 | alwaysSync: 0
235 | doNotSyncInitialDataImmediately: 0
236 | syncMode: 0
237 | sendInterval: 0.1
238 | dataChannel: 0
239 | deliveryMethod: 1
240 | clientDataChannel: 0
241 | clientDeliveryMethod: 1
242 | value:
243 | creatorName:
244 | behaviour: {fileID: 0}
245 | elementId: 0
246 | alwaysSync: 0
247 | doNotSyncInitialDataImmediately: 0
248 | syncMode: 0
249 | sendInterval: 0.1
250 | dataChannel: 0
251 | deliveryMethod: 1
252 | clientDataChannel: 0
253 | clientDeliveryMethod: 1
254 | value:
255 | storage:
256 | weightLimit: 32767
257 | slotLimit: 0
258 | lockable: 0
259 | canUseByEveryone: 1
260 | onInitialOpen:
261 | m_PersistentCalls:
262 | m_Calls: []
263 | onInitialClose:
264 | m_PersistentCalls:
265 | m_Calls: []
266 | onOpen:
267 | m_PersistentCalls:
268 | m_Calls: []
269 | onClose:
270 | m_PersistentCalls:
271 | m_Calls: []
272 | isOpen:
273 | behaviour: {fileID: 0}
274 | elementId: 0
275 | alwaysSync: 0
276 | doNotSyncInitialDataImmediately: 0
277 | syncMode: 0
278 | sendInterval: 0.1
279 | dataChannel: 0
280 | deliveryMethod: 2
281 | clientDataChannel: 0
282 | clientDeliveryMethod: 1
283 | value: 0
284 | defaultLootName: Loot
285 | nameLootAfterOwner: 1
286 | appendToLootName:
287 | destroyLootBagWhenEmpty: 1
288 | destroyLootBagWithBody: 1
289 | immuneToDamage: 1
290 | lootBagSparkleEffect: {fileID: 2566083321149910440}
291 | showSparkleEffect: 1
292 | sparkleOnlyWhenItemsInBag: 1
293 | --- !u!1 &1842899328350588
294 | GameObject:
295 | m_ObjectHideFlags: 0
296 | m_CorrespondingSourceObject: {fileID: 0}
297 | m_PrefabInstance: {fileID: 0}
298 | m_PrefabAsset: {fileID: 0}
299 | serializedVersion: 6
300 | m_Component:
301 | - component: {fileID: 4674336004201550}
302 | - component: {fileID: 33819917699905870}
303 | - component: {fileID: 23126968912508094}
304 | - component: {fileID: 65843827327178966}
305 | - component: {fileID: 5235663808577158192}
306 | m_Layer: 13
307 | m_Name: Bag
308 | m_TagString: Untagged
309 | m_Icon: {fileID: 0}
310 | m_NavMeshLayer: 0
311 | m_StaticEditorFlags: 0
312 | m_IsActive: 1
313 | --- !u!4 &4674336004201550
314 | Transform:
315 | m_ObjectHideFlags: 0
316 | m_CorrespondingSourceObject: {fileID: 0}
317 | m_PrefabInstance: {fileID: 0}
318 | m_PrefabAsset: {fileID: 0}
319 | m_GameObject: {fileID: 1842899328350588}
320 | m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
321 | m_LocalPosition: {x: 0, y: 0, z: 0}
322 | m_LocalScale: {x: 5, y: 5, z: 5}
323 | m_Children: []
324 | m_Father: {fileID: 4039600875746306}
325 | m_RootOrder: 0
326 | m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
327 | --- !u!33 &33819917699905870
328 | MeshFilter:
329 | m_ObjectHideFlags: 0
330 | m_CorrespondingSourceObject: {fileID: 0}
331 | m_PrefabInstance: {fileID: 0}
332 | m_PrefabAsset: {fileID: 0}
333 | m_GameObject: {fileID: 1842899328350588}
334 | m_Mesh: {fileID: 0}
335 | --- !u!23 &23126968912508094
336 | MeshRenderer:
337 | m_ObjectHideFlags: 0
338 | m_CorrespondingSourceObject: {fileID: 0}
339 | m_PrefabInstance: {fileID: 0}
340 | m_PrefabAsset: {fileID: 0}
341 | m_GameObject: {fileID: 1842899328350588}
342 | m_Enabled: 1
343 | m_CastShadows: 1
344 | m_ReceiveShadows: 1
345 | m_DynamicOccludee: 1
346 | m_MotionVectors: 1
347 | m_LightProbeUsage: 1
348 | m_ReflectionProbeUsage: 1
349 | m_RayTracingMode: 2
350 | m_RayTraceProcedural: 0
351 | m_RenderingLayerMask: 4294967295
352 | m_RendererPriority: 0
353 | m_Materials: []
354 | m_StaticBatchInfo:
355 | firstSubMesh: 0
356 | subMeshCount: 0
357 | m_StaticBatchRoot: {fileID: 0}
358 | m_ProbeAnchor: {fileID: 0}
359 | m_LightProbeVolumeOverride: {fileID: 0}
360 | m_ScaleInLightmap: 1
361 | m_ReceiveGI: 1
362 | m_PreserveUVs: 0
363 | m_IgnoreNormalsForChartDetection: 0
364 | m_ImportantGI: 0
365 | m_StitchLightmapSeams: 0
366 | m_SelectedEditorRenderState: 3
367 | m_MinimumChartSize: 4
368 | m_AutoUVMaxDistance: 0.5
369 | m_AutoUVMaxAngle: 89
370 | m_LightmapParameters: {fileID: 0}
371 | m_SortingLayerID: 0
372 | m_SortingLayer: 0
373 | m_SortingOrder: 0
374 | m_AdditionalVertexStreams: {fileID: 0}
375 | --- !u!65 &65843827327178966
376 | BoxCollider:
377 | m_ObjectHideFlags: 0
378 | m_CorrespondingSourceObject: {fileID: 0}
379 | m_PrefabInstance: {fileID: 0}
380 | m_PrefabAsset: {fileID: 0}
381 | m_GameObject: {fileID: 1842899328350588}
382 | m_Material: {fileID: 0}
383 | m_IsTrigger: 1
384 | m_Enabled: 1
385 | serializedVersion: 2
386 | m_Size: {x: 0.2, y: 0.2, z: 0.2}
387 | m_Center: {x: 0, y: 0.1, z: 0}
388 | --- !u!114 &5235663808577158192
389 | MonoBehaviour:
390 | m_ObjectHideFlags: 0
391 | m_CorrespondingSourceObject: {fileID: 0}
392 | m_PrefabInstance: {fileID: 0}
393 | m_PrefabAsset: {fileID: 0}
394 | m_GameObject: {fileID: 1842899328350588}
395 | m_Enabled: 1
396 | m_EditorHideFlags: 0
397 | m_Script: {fileID: 11500000, guid: ed362b33d81a1884d830874127f5c483, type: 3}
398 | m_Name:
399 | m_EditorClassIdentifier:
400 | damageRate: 1
401 | debugHistoryColor: {r: 0, g: 1, b: 0, a: 0.25}
402 | debugRewindColor: {r: 0, g: 0, b: 1, a: 0.5}
403 | canBuildMaterials:
404 | - {fileID: 2100000, guid: 648e64e2df531254f8ec87bfa9ac105f, type: 2}
405 | cannotBuildMaterials:
406 | - {fileID: 2100000, guid: 4d4127a5fd658b94eb937e04c4c9e015, type: 2}
407 | canBuildColor: {r: 0, g: 1, b: 0, a: 1}
408 | cannotBuildColor: {r: 1, g: 0, b: 0, a: 1}
409 | meshRenderer: {fileID: 0}
410 | spriteRenderer: {fileID: 0}
411 | tilemap: {fileID: 0}
412 | boundsSizeRateWhilePlacing: 0.9
413 | --- !u!1 &1910102608522246
414 | GameObject:
415 | m_ObjectHideFlags: 0
416 | m_CorrespondingSourceObject: {fileID: 0}
417 | m_PrefabInstance: {fileID: 0}
418 | m_PrefabAsset: {fileID: 0}
419 | serializedVersion: 6
420 | m_Component:
421 | - component: {fileID: 4039600875746306}
422 | m_Layer: 0
423 | m_Name: Container
424 | m_TagString: Untagged
425 | m_Icon: {fileID: 0}
426 | m_NavMeshLayer: 0
427 | m_StaticEditorFlags: 0
428 | m_IsActive: 1
429 | --- !u!4 &4039600875746306
430 | Transform:
431 | m_ObjectHideFlags: 0
432 | m_CorrespondingSourceObject: {fileID: 0}
433 | m_PrefabInstance: {fileID: 0}
434 | m_PrefabAsset: {fileID: 0}
435 | m_GameObject: {fileID: 1910102608522246}
436 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
437 | m_LocalPosition: {x: 0, y: 0, z: 0}
438 | m_LocalScale: {x: 1, y: 1, z: 1}
439 | m_Children:
440 | - {fileID: 4674336004201550}
441 | - {fileID: 811100300083348590}
442 | m_Father: {fileID: 4043413841882160}
443 | m_RootOrder: 0
444 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
445 | --- !u!1001 &4184765977821755996
446 | PrefabInstance:
447 | m_ObjectHideFlags: 0
448 | serializedVersion: 2
449 | m_Modification:
450 | m_TransformParent: {fileID: 4039600875746306}
451 | m_Modifications:
452 | - target: {fileID: 1841912133034792948, guid: ea1e062409569c240ab9e9b949a32da4,
453 | type: 3}
454 | propertyPath: m_Name
455 | value: LootSparkle
456 | objectReference: {fileID: 0}
457 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
458 | type: 3}
459 | propertyPath: m_RootOrder
460 | value: 1
461 | objectReference: {fileID: 0}
462 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
463 | type: 3}
464 | propertyPath: m_LocalPosition.x
465 | value: 0
466 | objectReference: {fileID: 0}
467 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
468 | type: 3}
469 | propertyPath: m_LocalPosition.y
470 | value: 0.5
471 | objectReference: {fileID: 0}
472 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
473 | type: 3}
474 | propertyPath: m_LocalPosition.z
475 | value: 0
476 | objectReference: {fileID: 0}
477 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
478 | type: 3}
479 | propertyPath: m_LocalRotation.w
480 | value: 1
481 | objectReference: {fileID: 0}
482 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
483 | type: 3}
484 | propertyPath: m_LocalRotation.x
485 | value: 0
486 | objectReference: {fileID: 0}
487 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
488 | type: 3}
489 | propertyPath: m_LocalRotation.y
490 | value: 0
491 | objectReference: {fileID: 0}
492 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
493 | type: 3}
494 | propertyPath: m_LocalRotation.z
495 | value: 0
496 | objectReference: {fileID: 0}
497 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
498 | type: 3}
499 | propertyPath: m_LocalEulerAnglesHint.x
500 | value: 0
501 | objectReference: {fileID: 0}
502 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
503 | type: 3}
504 | propertyPath: m_LocalEulerAnglesHint.y
505 | value: 0
506 | objectReference: {fileID: 0}
507 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
508 | type: 3}
509 | propertyPath: m_LocalEulerAnglesHint.z
510 | value: 0
511 | objectReference: {fileID: 0}
512 | m_RemovedComponents: []
513 | m_SourcePrefab: {fileID: 100100000, guid: ea1e062409569c240ab9e9b949a32da4, type: 3}
514 | --- !u!1 &2566083321149910440 stripped
515 | GameObject:
516 | m_CorrespondingSourceObject: {fileID: 1841912133034792948, guid: ea1e062409569c240ab9e9b949a32da4,
517 | type: 3}
518 | m_PrefabInstance: {fileID: 4184765977821755996}
519 | m_PrefabAsset: {fileID: 0}
520 | --- !u!4 &811100300083348590 stripped
521 | Transform:
522 | m_CorrespondingSourceObject: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
523 | type: 3}
524 | m_PrefabInstance: {fileID: 4184765977821755996}
525 | m_PrefabAsset: {fileID: 0}
526 |
--------------------------------------------------------------------------------
/Resources/LootBags/LootBagEntityVisible.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &1010448075208350
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 4043413841882160}
12 | - component: {fileID: 114542154319358494}
13 | - component: {fileID: 4627261008861122295}
14 | m_Layer: 0
15 | m_Name: LootBagEntityVisible
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!4 &4043413841882160
22 | Transform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 1010448075208350}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_Children:
32 | - {fileID: 4039600875746306}
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | --- !u!114 &114542154319358494
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 1010448075208350}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 11500000, guid: 56367cc2ed44f1e49835e9c247771fd9, type: 3}
46 | m_Name:
47 | m_EditorClassIdentifier:
48 | assetId: 70c38374013f0d747bcaad42173cbba8
49 | objectId: 0
50 | visibleRange: 0
51 | alwaysVisible: 0
52 | doNotDestroyWhenDisconnect: 0
53 | poolingSize: 0
54 | --- !u!114 &4627261008861122295
55 | MonoBehaviour:
56 | m_ObjectHideFlags: 0
57 | m_CorrespondingSourceObject: {fileID: 0}
58 | m_PrefabInstance: {fileID: 0}
59 | m_PrefabAsset: {fileID: 0}
60 | m_GameObject: {fileID: 1010448075208350}
61 | m_Enabled: 1
62 | m_EditorHideFlags: 0
63 | m_Script: {fileID: 11500000, guid: 3f0fca89f6d4c3c499624e0b24e80ca0, type: 3}
64 | m_Name:
65 | m_EditorClassIdentifier:
66 | behaviourIndex: 0
67 | dataChannel: 0
68 | sendOptions: 0
69 | sendInterval: 0.1
70 | entityTitle:
71 | entityTitles: []
72 | syncTitle:
73 | behaviour: {fileID: 0}
74 | elementId: 0
75 | alwaysSync: 0
76 | doNotSyncInitialDataImmediately: 0
77 | syncMode: 0
78 | sendInterval: 0.1
79 | dataChannel: 0
80 | deliveryMethod: 2
81 | clientDataChannel: 0
82 | clientDeliveryMethod: 1
83 | value:
84 | syncTitleB:
85 | behaviour: {fileID: 0}
86 | elementId: 0
87 | alwaysSync: 0
88 | doNotSyncInitialDataImmediately: 0
89 | syncMode: 0
90 | sendInterval: 0.1
91 | dataChannel: 0
92 | deliveryMethod: 2
93 | clientDataChannel: 0
94 | clientDeliveryMethod: 1
95 | value:
96 | ownerObjects: []
97 | nonOwnerObjects: []
98 | model: {fileID: 0}
99 | cameraTargetTransform: {fileID: 0}
100 | fpsCameraTargetTransform: {fileID: 0}
101 | movementSecure: 0
102 | canSideSprint: 0
103 | canBackwardSprint: 0
104 | direction2D:
105 | behaviour: {fileID: 0}
106 | elementId: 0
107 | alwaysSync: 0
108 | doNotSyncInitialDataImmediately: 1
109 | syncMode: 0
110 | sendInterval: 0.1
111 | dataChannel: 0
112 | deliveryMethod: 1
113 | clientDataChannel: 0
114 | clientDeliveryMethod: 1
115 | passengingVehicle:
116 | behaviour: {fileID: 0}
117 | elementId: 0
118 | alwaysSync: 0
119 | doNotSyncInitialDataImmediately: 1
120 | syncMode: 0
121 | sendInterval: 0.1
122 | dataChannel: 0
123 | deliveryMethod: 2
124 | clientDataChannel: 0
125 | clientDeliveryMethod: 1
126 | value:
127 | objectId: 0
128 | seatIndex: 0
129 | combatTextTransform: {fileID: 0}
130 | opponentAimTransform: {fileID: 0}
131 | isStaticHitBoxes: 0
132 | onNormalDamageHit:
133 | m_PersistentCalls:
134 | m_Calls: []
135 | onCriticalDamageHit:
136 | m_PersistentCalls:
137 | m_Calls: []
138 | onBlockedDamageHit:
139 | m_PersistentCalls:
140 | m_Calls: []
141 | onDamageMissed:
142 | m_PersistentCalls:
143 | m_Calls: []
144 | isImmune:
145 | behaviour: {fileID: 0}
146 | elementId: 0
147 | alwaysSync: 0
148 | doNotSyncInitialDataImmediately: 0
149 | syncMode: 0
150 | sendInterval: 0.1
151 | dataChannel: 0
152 | deliveryMethod: 1
153 | clientDataChannel: 0
154 | clientDeliveryMethod: 1
155 | value: 0
156 | currentHp:
157 | behaviour: {fileID: 0}
158 | elementId: 0
159 | alwaysSync: 0
160 | doNotSyncInitialDataImmediately: 0
161 | syncMode: 0
162 | sendInterval: 0.1
163 | dataChannel: 0
164 | deliveryMethod: 1
165 | clientDataChannel: 0
166 | clientDeliveryMethod: 1
167 | value: 0
168 | canBuildOnAnySurface: 0
169 | buildingType:
170 | buildingTypes: []
171 | buildDistance: 5
172 | destroyWhenParentDestroyed: 0
173 | maxHp: 100
174 | lifeTime: 900
175 | droppingItems: []
176 | destroyDelay: 2
177 | onBuildingDestroy:
178 | m_PersistentCalls:
179 | m_Calls: []
180 | onBuildingConstruct:
181 | m_PersistentCalls:
182 | m_Calls: []
183 | id:
184 | behaviour: {fileID: 0}
185 | elementId: 0
186 | alwaysSync: 0
187 | doNotSyncInitialDataImmediately: 0
188 | syncMode: 0
189 | sendInterval: 0.1
190 | dataChannel: 0
191 | deliveryMethod: 1
192 | clientDataChannel: 0
193 | clientDeliveryMethod: 1
194 | value:
195 | parentId:
196 | behaviour: {fileID: 0}
197 | elementId: 0
198 | alwaysSync: 0
199 | doNotSyncInitialDataImmediately: 0
200 | syncMode: 0
201 | sendInterval: 0.1
202 | dataChannel: 0
203 | deliveryMethod: 1
204 | clientDataChannel: 0
205 | clientDeliveryMethod: 1
206 | value:
207 | remainsLifeTime:
208 | behaviour: {fileID: 0}
209 | elementId: 0
210 | alwaysSync: 0
211 | doNotSyncInitialDataImmediately: 0
212 | syncMode: 0
213 | sendInterval: 0.1
214 | dataChannel: 0
215 | deliveryMethod: 1
216 | clientDataChannel: 0
217 | clientDeliveryMethod: 1
218 | value: 0
219 | isLocked:
220 | behaviour: {fileID: 0}
221 | elementId: 0
222 | alwaysSync: 0
223 | doNotSyncInitialDataImmediately: 0
224 | syncMode: 0
225 | sendInterval: 0.1
226 | dataChannel: 0
227 | deliveryMethod: 1
228 | clientDataChannel: 0
229 | clientDeliveryMethod: 1
230 | value: 0
231 | creatorId:
232 | behaviour: {fileID: 0}
233 | elementId: 0
234 | alwaysSync: 0
235 | doNotSyncInitialDataImmediately: 0
236 | syncMode: 0
237 | sendInterval: 0.1
238 | dataChannel: 0
239 | deliveryMethod: 1
240 | clientDataChannel: 0
241 | clientDeliveryMethod: 1
242 | value:
243 | creatorName:
244 | behaviour: {fileID: 0}
245 | elementId: 0
246 | alwaysSync: 0
247 | doNotSyncInitialDataImmediately: 0
248 | syncMode: 0
249 | sendInterval: 0.1
250 | dataChannel: 0
251 | deliveryMethod: 1
252 | clientDataChannel: 0
253 | clientDeliveryMethod: 1
254 | value:
255 | storage:
256 | weightLimit: 32767
257 | slotLimit: 0
258 | lockable: 0
259 | canUseByEveryone: 1
260 | onInitialOpen:
261 | m_PersistentCalls:
262 | m_Calls: []
263 | onInitialClose:
264 | m_PersistentCalls:
265 | m_Calls: []
266 | onOpen:
267 | m_PersistentCalls:
268 | m_Calls: []
269 | onClose:
270 | m_PersistentCalls:
271 | m_Calls: []
272 | isOpen:
273 | behaviour: {fileID: 0}
274 | elementId: 0
275 | alwaysSync: 0
276 | doNotSyncInitialDataImmediately: 0
277 | syncMode: 0
278 | sendInterval: 0.1
279 | dataChannel: 0
280 | deliveryMethod: 2
281 | clientDataChannel: 0
282 | clientDeliveryMethod: 1
283 | value: 0
284 | defaultLootName: Loot
285 | nameLootAfterOwner: 1
286 | appendToLootName: '''s loot'
287 | destroyLootBagWhenEmpty: 1
288 | destroyLootBagWithBody: 0
289 | immuneToDamage: 1
290 | lootBagSparkleEffect: {fileID: 2566083321149910440}
291 | showSparkleEffect: 1
292 | sparkleOnlyWhenItemsInBag: 1
293 | --- !u!1 &1842899328350588
294 | GameObject:
295 | m_ObjectHideFlags: 0
296 | m_CorrespondingSourceObject: {fileID: 0}
297 | m_PrefabInstance: {fileID: 0}
298 | m_PrefabAsset: {fileID: 0}
299 | serializedVersion: 6
300 | m_Component:
301 | - component: {fileID: 4674336004201550}
302 | - component: {fileID: 33819917699905870}
303 | - component: {fileID: 23126968912508094}
304 | - component: {fileID: 65843827327178966}
305 | - component: {fileID: 5235663808577158192}
306 | m_Layer: 13
307 | m_Name: Bag
308 | m_TagString: Untagged
309 | m_Icon: {fileID: 0}
310 | m_NavMeshLayer: 0
311 | m_StaticEditorFlags: 0
312 | m_IsActive: 1
313 | --- !u!4 &4674336004201550
314 | Transform:
315 | m_ObjectHideFlags: 0
316 | m_CorrespondingSourceObject: {fileID: 0}
317 | m_PrefabInstance: {fileID: 0}
318 | m_PrefabAsset: {fileID: 0}
319 | m_GameObject: {fileID: 1842899328350588}
320 | m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
321 | m_LocalPosition: {x: 0, y: 0, z: 0}
322 | m_LocalScale: {x: 5, y: 5, z: 5}
323 | m_Children: []
324 | m_Father: {fileID: 4039600875746306}
325 | m_RootOrder: 0
326 | m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
327 | --- !u!33 &33819917699905870
328 | MeshFilter:
329 | m_ObjectHideFlags: 0
330 | m_CorrespondingSourceObject: {fileID: 0}
331 | m_PrefabInstance: {fileID: 0}
332 | m_PrefabAsset: {fileID: 0}
333 | m_GameObject: {fileID: 1842899328350588}
334 | m_Mesh: {fileID: 4300000, guid: 2f5e3d3462b9fba43a427722efd79127, type: 3}
335 | --- !u!23 &23126968912508094
336 | MeshRenderer:
337 | m_ObjectHideFlags: 0
338 | m_CorrespondingSourceObject: {fileID: 0}
339 | m_PrefabInstance: {fileID: 0}
340 | m_PrefabAsset: {fileID: 0}
341 | m_GameObject: {fileID: 1842899328350588}
342 | m_Enabled: 1
343 | m_CastShadows: 1
344 | m_ReceiveShadows: 1
345 | m_DynamicOccludee: 1
346 | m_MotionVectors: 1
347 | m_LightProbeUsage: 1
348 | m_ReflectionProbeUsage: 1
349 | m_RayTracingMode: 2
350 | m_RayTraceProcedural: 0
351 | m_RenderingLayerMask: 4294967295
352 | m_RendererPriority: 0
353 | m_Materials:
354 | - {fileID: 2100000, guid: 5bbec098120535748a937d8dd264e3cc, type: 2}
355 | m_StaticBatchInfo:
356 | firstSubMesh: 0
357 | subMeshCount: 0
358 | m_StaticBatchRoot: {fileID: 0}
359 | m_ProbeAnchor: {fileID: 0}
360 | m_LightProbeVolumeOverride: {fileID: 0}
361 | m_ScaleInLightmap: 1
362 | m_ReceiveGI: 1
363 | m_PreserveUVs: 0
364 | m_IgnoreNormalsForChartDetection: 0
365 | m_ImportantGI: 0
366 | m_StitchLightmapSeams: 0
367 | m_SelectedEditorRenderState: 3
368 | m_MinimumChartSize: 4
369 | m_AutoUVMaxDistance: 0.5
370 | m_AutoUVMaxAngle: 89
371 | m_LightmapParameters: {fileID: 0}
372 | m_SortingLayerID: 0
373 | m_SortingLayer: 0
374 | m_SortingOrder: 0
375 | m_AdditionalVertexStreams: {fileID: 0}
376 | --- !u!65 &65843827327178966
377 | BoxCollider:
378 | m_ObjectHideFlags: 0
379 | m_CorrespondingSourceObject: {fileID: 0}
380 | m_PrefabInstance: {fileID: 0}
381 | m_PrefabAsset: {fileID: 0}
382 | m_GameObject: {fileID: 1842899328350588}
383 | m_Material: {fileID: 13400000, guid: c2815a7ab32e42c4bb42f59caacb8ec1, type: 2}
384 | m_IsTrigger: 1
385 | m_Enabled: 1
386 | serializedVersion: 2
387 | m_Size: {x: 0.2, y: 0.2, z: 0.2}
388 | m_Center: {x: 0, y: 0.1, z: 0}
389 | --- !u!114 &5235663808577158192
390 | MonoBehaviour:
391 | m_ObjectHideFlags: 0
392 | m_CorrespondingSourceObject: {fileID: 0}
393 | m_PrefabInstance: {fileID: 0}
394 | m_PrefabAsset: {fileID: 0}
395 | m_GameObject: {fileID: 1842899328350588}
396 | m_Enabled: 1
397 | m_EditorHideFlags: 0
398 | m_Script: {fileID: 11500000, guid: ed362b33d81a1884d830874127f5c483, type: 3}
399 | m_Name:
400 | m_EditorClassIdentifier:
401 | damageRate: 1
402 | debugHistoryColor: {r: 0, g: 1, b: 0, a: 0.25}
403 | debugRewindColor: {r: 0, g: 0, b: 1, a: 0.5}
404 | canBuildMaterials:
405 | - {fileID: 2100000, guid: 648e64e2df531254f8ec87bfa9ac105f, type: 2}
406 | cannotBuildMaterials:
407 | - {fileID: 2100000, guid: 4d4127a5fd658b94eb937e04c4c9e015, type: 2}
408 | canBuildColor: {r: 0, g: 1, b: 0, a: 1}
409 | cannotBuildColor: {r: 1, g: 0, b: 0, a: 1}
410 | meshRenderer: {fileID: 0}
411 | spriteRenderer: {fileID: 0}
412 | tilemap: {fileID: 0}
413 | boundsSizeRateWhilePlacing: 0.9
414 | --- !u!1 &1910102608522246
415 | GameObject:
416 | m_ObjectHideFlags: 0
417 | m_CorrespondingSourceObject: {fileID: 0}
418 | m_PrefabInstance: {fileID: 0}
419 | m_PrefabAsset: {fileID: 0}
420 | serializedVersion: 6
421 | m_Component:
422 | - component: {fileID: 4039600875746306}
423 | m_Layer: 0
424 | m_Name: Container
425 | m_TagString: Untagged
426 | m_Icon: {fileID: 0}
427 | m_NavMeshLayer: 0
428 | m_StaticEditorFlags: 0
429 | m_IsActive: 1
430 | --- !u!4 &4039600875746306
431 | Transform:
432 | m_ObjectHideFlags: 0
433 | m_CorrespondingSourceObject: {fileID: 0}
434 | m_PrefabInstance: {fileID: 0}
435 | m_PrefabAsset: {fileID: 0}
436 | m_GameObject: {fileID: 1910102608522246}
437 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
438 | m_LocalPosition: {x: 0, y: 0, z: 0}
439 | m_LocalScale: {x: 1, y: 1, z: 1}
440 | m_Children:
441 | - {fileID: 4674336004201550}
442 | - {fileID: 811100300083348590}
443 | m_Father: {fileID: 4043413841882160}
444 | m_RootOrder: 0
445 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
446 | --- !u!1001 &4184765977821755996
447 | PrefabInstance:
448 | m_ObjectHideFlags: 0
449 | serializedVersion: 2
450 | m_Modification:
451 | m_TransformParent: {fileID: 4039600875746306}
452 | m_Modifications:
453 | - target: {fileID: 1841912133034792948, guid: ea1e062409569c240ab9e9b949a32da4,
454 | type: 3}
455 | propertyPath: m_Name
456 | value: LootSparkle
457 | objectReference: {fileID: 0}
458 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
459 | type: 3}
460 | propertyPath: m_RootOrder
461 | value: 1
462 | objectReference: {fileID: 0}
463 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
464 | type: 3}
465 | propertyPath: m_LocalPosition.x
466 | value: 0
467 | objectReference: {fileID: 0}
468 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
469 | type: 3}
470 | propertyPath: m_LocalPosition.y
471 | value: 0.5
472 | objectReference: {fileID: 0}
473 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
474 | type: 3}
475 | propertyPath: m_LocalPosition.z
476 | value: 0
477 | objectReference: {fileID: 0}
478 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
479 | type: 3}
480 | propertyPath: m_LocalRotation.w
481 | value: 1
482 | objectReference: {fileID: 0}
483 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
484 | type: 3}
485 | propertyPath: m_LocalRotation.x
486 | value: 0
487 | objectReference: {fileID: 0}
488 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
489 | type: 3}
490 | propertyPath: m_LocalRotation.y
491 | value: 0
492 | objectReference: {fileID: 0}
493 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
494 | type: 3}
495 | propertyPath: m_LocalRotation.z
496 | value: 0
497 | objectReference: {fileID: 0}
498 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
499 | type: 3}
500 | propertyPath: m_LocalEulerAnglesHint.x
501 | value: 0
502 | objectReference: {fileID: 0}
503 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
504 | type: 3}
505 | propertyPath: m_LocalEulerAnglesHint.y
506 | value: 0
507 | objectReference: {fileID: 0}
508 | - target: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
509 | type: 3}
510 | propertyPath: m_LocalEulerAnglesHint.z
511 | value: 0
512 | objectReference: {fileID: 0}
513 | m_RemovedComponents: []
514 | m_SourcePrefab: {fileID: 100100000, guid: ea1e062409569c240ab9e9b949a32da4, type: 3}
515 | --- !u!1 &2566083321149910440 stripped
516 | GameObject:
517 | m_CorrespondingSourceObject: {fileID: 1841912133034792948, guid: ea1e062409569c240ab9e9b949a32da4,
518 | type: 3}
519 | m_PrefabInstance: {fileID: 4184765977821755996}
520 | m_PrefabAsset: {fileID: 0}
521 | --- !u!4 &811100300083348590 stripped
522 | Transform:
523 | m_CorrespondingSourceObject: {fileID: 3554146120086781490, guid: ea1e062409569c240ab9e9b949a32da4,
524 | type: 3}
525 | m_PrefabInstance: {fileID: 4184765977821755996}
526 | m_PrefabAsset: {fileID: 0}
527 |
--------------------------------------------------------------------------------
/Resources/UI/UIItemIcon_WithDragHandler_LootBag.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &1187012587178378
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 224144266564540268}
12 | - component: {fileID: 222830118503740832}
13 | - component: {fileID: 114746454740317014}
14 | - component: {fileID: 114402478066724388}
15 | - component: {fileID: 114359447112042518}
16 | m_Layer: 5
17 | m_Name: TextLockDurationRemains
18 | m_TagString: Untagged
19 | m_Icon: {fileID: 0}
20 | m_NavMeshLayer: 0
21 | m_StaticEditorFlags: 0
22 | m_IsActive: 1
23 | --- !u!224 &224144266564540268
24 | RectTransform:
25 | m_ObjectHideFlags: 0
26 | m_CorrespondingSourceObject: {fileID: 0}
27 | m_PrefabInstance: {fileID: 0}
28 | m_PrefabAsset: {fileID: 0}
29 | m_GameObject: {fileID: 1187012587178378}
30 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
31 | m_LocalPosition: {x: 0, y: 0, z: 0}
32 | m_LocalScale: {x: 1, y: 1, z: 1}
33 | m_Children: []
34 | m_Father: {fileID: 224796095283217002}
35 | m_RootOrder: 4
36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
37 | m_AnchorMin: {x: 0, y: 0}
38 | m_AnchorMax: {x: 1, y: 1}
39 | m_AnchoredPosition: {x: 0, y: 0}
40 | m_SizeDelta: {x: 0, y: 0}
41 | m_Pivot: {x: 0.5, y: 0.5}
42 | --- !u!222 &222830118503740832
43 | CanvasRenderer:
44 | m_ObjectHideFlags: 0
45 | m_CorrespondingSourceObject: {fileID: 0}
46 | m_PrefabInstance: {fileID: 0}
47 | m_PrefabAsset: {fileID: 0}
48 | m_GameObject: {fileID: 1187012587178378}
49 | m_CullTransparentMesh: 0
50 | --- !u!114 &114746454740317014
51 | MonoBehaviour:
52 | m_ObjectHideFlags: 0
53 | m_CorrespondingSourceObject: {fileID: 0}
54 | m_PrefabInstance: {fileID: 0}
55 | m_PrefabAsset: {fileID: 0}
56 | m_GameObject: {fileID: 1187012587178378}
57 | m_Enabled: 1
58 | m_EditorHideFlags: 0
59 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
60 | m_Name:
61 | m_EditorClassIdentifier:
62 | m_Material: {fileID: 0}
63 | m_Color: {r: 1, g: 1, b: 1, a: 1}
64 | m_RaycastTarget: 0
65 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
66 | m_Maskable: 1
67 | m_OnCullStateChanged:
68 | m_PersistentCalls:
69 | m_Calls: []
70 | m_FontData:
71 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
72 | m_FontSize: 14
73 | m_FontStyle: 0
74 | m_BestFit: 0
75 | m_MinSize: 10
76 | m_MaxSize: 40
77 | m_Alignment: 1
78 | m_AlignByGeometry: 0
79 | m_RichText: 1
80 | m_HorizontalOverflow: 1
81 | m_VerticalOverflow: 0
82 | m_LineSpacing: 1
83 | m_Text: 0
84 | --- !u!114 &114402478066724388
85 | MonoBehaviour:
86 | m_ObjectHideFlags: 0
87 | m_CorrespondingSourceObject: {fileID: 0}
88 | m_PrefabInstance: {fileID: 0}
89 | m_PrefabAsset: {fileID: 0}
90 | m_GameObject: {fileID: 1187012587178378}
91 | m_Enabled: 1
92 | m_EditorHideFlags: 0
93 | m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
94 | m_Name:
95 | m_EditorClassIdentifier:
96 | m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
97 | m_EffectDistance: {x: 1, y: -1}
98 | m_UseGraphicAlpha: 1
99 | --- !u!114 &114359447112042518
100 | MonoBehaviour:
101 | m_ObjectHideFlags: 0
102 | m_CorrespondingSourceObject: {fileID: 0}
103 | m_PrefabInstance: {fileID: 0}
104 | m_PrefabAsset: {fileID: 0}
105 | m_GameObject: {fileID: 1187012587178378}
106 | m_Enabled: 1
107 | m_EditorHideFlags: 0
108 | m_Script: {fileID: 11500000, guid: d8355763b7cda344c9d206aa977ec27f, type: 3}
109 | m_Name:
110 | m_EditorClassIdentifier:
111 | unityText: {fileID: 114746454740317014}
112 | --- !u!1 &1217845980508208
113 | GameObject:
114 | m_ObjectHideFlags: 0
115 | m_CorrespondingSourceObject: {fileID: 0}
116 | m_PrefabInstance: {fileID: 0}
117 | m_PrefabAsset: {fileID: 0}
118 | serializedVersion: 6
119 | m_Component:
120 | - component: {fileID: 224551698098932226}
121 | - component: {fileID: 222531747289231112}
122 | - component: {fileID: 114745249821360414}
123 | m_Layer: 5
124 | m_Name: SelectionObject
125 | m_TagString: Untagged
126 | m_Icon: {fileID: 0}
127 | m_NavMeshLayer: 0
128 | m_StaticEditorFlags: 0
129 | m_IsActive: 1
130 | --- !u!224 &224551698098932226
131 | RectTransform:
132 | m_ObjectHideFlags: 0
133 | m_CorrespondingSourceObject: {fileID: 0}
134 | m_PrefabInstance: {fileID: 0}
135 | m_PrefabAsset: {fileID: 0}
136 | m_GameObject: {fileID: 1217845980508208}
137 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
138 | m_LocalPosition: {x: 0, y: 0, z: 0}
139 | m_LocalScale: {x: 1, y: 1, z: 1}
140 | m_Children:
141 | - {fileID: 224185969558672746}
142 | m_Father: {fileID: 224796095283217002}
143 | m_RootOrder: 0
144 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
145 | m_AnchorMin: {x: 0, y: 0}
146 | m_AnchorMax: {x: 1, y: 1}
147 | m_AnchoredPosition: {x: 0, y: 0}
148 | m_SizeDelta: {x: 4, y: 4}
149 | m_Pivot: {x: 0.5, y: 0.5}
150 | --- !u!222 &222531747289231112
151 | CanvasRenderer:
152 | m_ObjectHideFlags: 0
153 | m_CorrespondingSourceObject: {fileID: 0}
154 | m_PrefabInstance: {fileID: 0}
155 | m_PrefabAsset: {fileID: 0}
156 | m_GameObject: {fileID: 1217845980508208}
157 | m_CullTransparentMesh: 0
158 | --- !u!114 &114745249821360414
159 | MonoBehaviour:
160 | m_ObjectHideFlags: 0
161 | m_CorrespondingSourceObject: {fileID: 0}
162 | m_PrefabInstance: {fileID: 0}
163 | m_PrefabAsset: {fileID: 0}
164 | m_GameObject: {fileID: 1217845980508208}
165 | m_Enabled: 1
166 | m_EditorHideFlags: 0
167 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
168 | m_Name:
169 | m_EditorClassIdentifier:
170 | m_Material: {fileID: 0}
171 | m_Color: {r: 0.9607843, g: 0.7647059, b: 0.19607843, a: 1}
172 | m_RaycastTarget: 0
173 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
174 | m_Maskable: 1
175 | m_OnCullStateChanged:
176 | m_PersistentCalls:
177 | m_Calls: []
178 | m_Sprite: {fileID: 0}
179 | m_Type: 0
180 | m_PreserveAspect: 0
181 | m_FillCenter: 1
182 | m_FillMethod: 4
183 | m_FillAmount: 1
184 | m_FillClockwise: 1
185 | m_FillOrigin: 0
186 | m_UseSpriteMesh: 0
187 | m_PixelsPerUnitMultiplier: 1
188 | --- !u!1 &1464786769811892
189 | GameObject:
190 | m_ObjectHideFlags: 0
191 | m_CorrespondingSourceObject: {fileID: 0}
192 | m_PrefabInstance: {fileID: 0}
193 | m_PrefabAsset: {fileID: 0}
194 | serializedVersion: 6
195 | m_Component:
196 | - component: {fileID: 224796095283217002}
197 | - component: {fileID: 222959295384563194}
198 | - component: {fileID: 114501471656320258}
199 | - component: {fileID: 114995711950157264}
200 | - component: {fileID: 114987847931839752}
201 | - component: {fileID: 114274090299979142}
202 | - component: {fileID: 1702941059909545384}
203 | m_Layer: 5
204 | m_Name: UIItemIcon_WithDragHandler_LootBag
205 | m_TagString: Untagged
206 | m_Icon: {fileID: 0}
207 | m_NavMeshLayer: 0
208 | m_StaticEditorFlags: 0
209 | m_IsActive: 1
210 | --- !u!224 &224796095283217002
211 | RectTransform:
212 | m_ObjectHideFlags: 0
213 | m_CorrespondingSourceObject: {fileID: 0}
214 | m_PrefabInstance: {fileID: 0}
215 | m_PrefabAsset: {fileID: 0}
216 | m_GameObject: {fileID: 1464786769811892}
217 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
218 | m_LocalPosition: {x: 0, y: 0, z: 0}
219 | m_LocalScale: {x: 1, y: 1, z: 1}
220 | m_Children:
221 | - {fileID: 224551698098932226}
222 | - {fileID: 224139374158611576}
223 | - {fileID: 224322634317190788}
224 | - {fileID: 224802615376757424}
225 | - {fileID: 224144266564540268}
226 | m_Father: {fileID: 0}
227 | m_RootOrder: 0
228 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
229 | m_AnchorMin: {x: 0, y: 1}
230 | m_AnchorMax: {x: 0, y: 1}
231 | m_AnchoredPosition: {x: 24, y: -24}
232 | m_SizeDelta: {x: 40, y: 40}
233 | m_Pivot: {x: 0.5, y: 0.5}
234 | --- !u!222 &222959295384563194
235 | CanvasRenderer:
236 | m_ObjectHideFlags: 0
237 | m_CorrespondingSourceObject: {fileID: 0}
238 | m_PrefabInstance: {fileID: 0}
239 | m_PrefabAsset: {fileID: 0}
240 | m_GameObject: {fileID: 1464786769811892}
241 | m_CullTransparentMesh: 0
242 | --- !u!114 &114501471656320258
243 | MonoBehaviour:
244 | m_ObjectHideFlags: 0
245 | m_CorrespondingSourceObject: {fileID: 0}
246 | m_PrefabInstance: {fileID: 0}
247 | m_PrefabAsset: {fileID: 0}
248 | m_GameObject: {fileID: 1464786769811892}
249 | m_Enabled: 1
250 | m_EditorHideFlags: 0
251 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
252 | m_Name:
253 | m_EditorClassIdentifier:
254 | m_Material: {fileID: 0}
255 | m_Color: {r: 0.7411765, g: 0.7411765, b: 0.7411765, a: 1}
256 | m_RaycastTarget: 1
257 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
258 | m_Maskable: 1
259 | m_OnCullStateChanged:
260 | m_PersistentCalls:
261 | m_Calls: []
262 | m_Sprite: {fileID: 0}
263 | m_Type: 0
264 | m_PreserveAspect: 0
265 | m_FillCenter: 1
266 | m_FillMethod: 4
267 | m_FillAmount: 1
268 | m_FillClockwise: 1
269 | m_FillOrigin: 0
270 | m_UseSpriteMesh: 0
271 | m_PixelsPerUnitMultiplier: 1
272 | --- !u!114 &114995711950157264
273 | MonoBehaviour:
274 | m_ObjectHideFlags: 0
275 | m_CorrespondingSourceObject: {fileID: 0}
276 | m_PrefabInstance: {fileID: 0}
277 | m_PrefabAsset: {fileID: 0}
278 | m_GameObject: {fileID: 1464786769811892}
279 | m_Enabled: 1
280 | m_EditorHideFlags: 0
281 | m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
282 | m_Name:
283 | m_EditorClassIdentifier:
284 | m_Navigation:
285 | m_Mode: 3
286 | m_WrapAround: 0
287 | m_SelectOnUp: {fileID: 0}
288 | m_SelectOnDown: {fileID: 0}
289 | m_SelectOnLeft: {fileID: 0}
290 | m_SelectOnRight: {fileID: 0}
291 | m_Transition: 0
292 | m_Colors:
293 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
294 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
295 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
296 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
297 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
298 | m_ColorMultiplier: 1
299 | m_FadeDuration: 0.1
300 | m_SpriteState:
301 | m_HighlightedSprite: {fileID: 0}
302 | m_PressedSprite: {fileID: 0}
303 | m_SelectedSprite: {fileID: 0}
304 | m_DisabledSprite: {fileID: 0}
305 | m_AnimationTriggers:
306 | m_NormalTrigger: Normal
307 | m_HighlightedTrigger: Highlighted
308 | m_PressedTrigger: Pressed
309 | m_SelectedTrigger: Highlighted
310 | m_DisabledTrigger: Disabled
311 | m_Interactable: 1
312 | m_TargetGraphic: {fileID: 114501471656320258}
313 | m_OnClick:
314 | m_PersistentCalls:
315 | m_Calls:
316 | - m_Target: {fileID: 114987847931839752}
317 | m_TargetAssemblyTypeName:
318 | m_MethodName: OnClickSelect
319 | m_Mode: 1
320 | m_Arguments:
321 | m_ObjectArgument: {fileID: 0}
322 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
323 | m_IntArgument: 0
324 | m_FloatArgument: 0
325 | m_StringArgument:
326 | m_BoolArgument: 0
327 | m_CallState: 2
328 | --- !u!114 &114987847931839752
329 | MonoBehaviour:
330 | m_ObjectHideFlags: 0
331 | m_CorrespondingSourceObject: {fileID: 0}
332 | m_PrefabInstance: {fileID: 0}
333 | m_PrefabAsset: {fileID: 0}
334 | m_GameObject: {fileID: 1464786769811892}
335 | m_Enabled: 1
336 | m_EditorHideFlags: 0
337 | m_Script: {fileID: 11500000, guid: a732866d921423d449d4fee0417113e9, type: 3}
338 | m_Name:
339 | m_EditorClassIdentifier:
340 | hideOnAwake: 0
341 | moveToLastSiblingOnShow: 0
342 | root: {fileID: 0}
343 | onShow:
344 | m_PersistentCalls:
345 | m_Calls: []
346 | onHide:
347 | m_PersistentCalls:
348 | m_Calls: []
349 | objectSelected: {fileID: 1217845980508208}
350 | selectionManager: {fileID: 0}
351 | updateUIRepeatRate: 0.5
352 | formatKeyTitle:
353 | localeKey: 5
354 | customKey:
355 | formatKeyDescription:
356 | localeKey: 5
357 | customKey:
358 | formatKeyRarityTitle:
359 | localeKey: 66
360 | customKey:
361 | formatKeyLevel:
362 | localeKey: 9
363 | customKey:
364 | formatKeyRefineLevel:
365 | localeKey: 56
366 | customKey:
367 | formatKeyTitleWithRefineLevel:
368 | localeKey: 57
369 | customKey:
370 | formatKeySellPrice:
371 | localeKey: 40
372 | customKey:
373 | formatKeyStack:
374 | localeKey: 67
375 | customKey:
376 | formatKeyDurability:
377 | localeKey: 68
378 | customKey:
379 | formatKeyWeight:
380 | localeKey: 34
381 | customKey:
382 | formatKeyExp:
383 | localeKey: 10
384 | customKey:
385 | formatKeyLockRemainsDuration:
386 | localeKey: 5
387 | customKey:
388 | formatKeyBuilding:
389 | localeKey: 214
390 | customKey:
391 | formatKeyPet:
392 | localeKey: 215
393 | customKey:
394 | formatKeyMount:
395 | localeKey: 216
396 | customKey:
397 | formatKeySkill:
398 | localeKey: 217
399 | customKey:
400 | formatKeyCoolDownDuration:
401 | localeKey: 45
402 | customKey:
403 | formatKeyCoolDownRemainsDuration:
404 | localeKey: 5
405 | customKey:
406 | formatKeyItemType:
407 | localeKey: 58
408 | customKey:
409 | uiTextTitle: {fileID: 0}
410 | uiTextDescription: {fileID: 0}
411 | uiTextRarity: {fileID: 0}
412 | uiTextLevel: {fileID: 0}
413 | imageIcon: {fileID: 114894893612556186}
414 | imageRarity: {fileID: 0}
415 | uiTextItemType: {fileID: 0}
416 | uiTextSellPrice: {fileID: 0}
417 | uiTextStack: {fileID: 114914474213375914}
418 | uiTextDurability: {fileID: 0}
419 | uiGageDurability:
420 | displayType: 0
421 | textValue: {fileID: 0}
422 | imageGage: {fileID: 0}
423 | formatCurrentByMax:
424 | localeKey: 8
425 | customKey:
426 | formatCurrentAmount: N0
427 | formatMaxAmount: N0
428 | formatPercentage:
429 | localeKey: 6
430 | customKey:
431 | formatPercentageAmount: N0
432 | uiTextWeight: {fileID: 0}
433 | uiTextExp: {fileID: 0}
434 | uiGageExp:
435 | displayType: 0
436 | textValue: {fileID: 0}
437 | imageGage: {fileID: 0}
438 | formatCurrentByMax:
439 | localeKey: 8
440 | customKey:
441 | formatCurrentAmount: N0
442 | formatMaxAmount: N0
443 | formatPercentage:
444 | localeKey: 6
445 | customKey:
446 | formatPercentageAmount: N0
447 | uiTextLockRemainsDuration: {fileID: 114359447112042518}
448 | lockObjects: []
449 | noLockObjects: []
450 | uiRequirement: {fileID: 0}
451 | uiIncreaseStats: {fileID: 0}
452 | uiIncreaseStatsRate: {fileID: 0}
453 | uiIncreaseAttributes: {fileID: 0}
454 | uiIncreaseAttributesRate: {fileID: 0}
455 | uiIncreaseResistances: {fileID: 0}
456 | uiIncreaseArmors: {fileID: 0}
457 | uiIncreaseDamages: {fileID: 0}
458 | uiIncreaseSkillLevels: {fileID: 0}
459 | uiEquipmentSet: {fileID: 0}
460 | uiEquipmentSockets: {fileID: 0}
461 | uiRefineItem: {fileID: 0}
462 | uiDismantleItem: {fileID: 0}
463 | uiRepairItem: {fileID: 0}
464 | uiArmorAmount: {fileID: 0}
465 | uiDamageAmount: {fileID: 0}
466 | uiTextCurrentAmmo: {fileID: 0}
467 | uiTextReserveAmmo: {fileID: 0}
468 | uiTextSumAmmo: {fileID: 0}
469 | requireAmmoSymbols: []
470 | noRequireAmmoSymbols: []
471 | gageAmmo:
472 | displayType: 0
473 | textValue: {fileID: 0}
474 | imageGage: {fileID: 0}
475 | formatCurrentByMax:
476 | localeKey: 8
477 | customKey:
478 | formatCurrentAmount: N0
479 | formatMaxAmount: N0
480 | formatPercentage:
481 | localeKey: 6
482 | customKey:
483 | formatPercentageAmount: N0
484 | uiTextBuilding: {fileID: 0}
485 | uiTextPet: {fileID: 0}
486 | uiTextMount: {fileID: 0}
487 | uiTextSkill: {fileID: 0}
488 | uiTextCoolDownDuration: {fileID: 0}
489 | uiTextCoolDownRemainsDuration: {fileID: 0}
490 | imageCoolDownGage: {fileID: 0}
491 | countDownObjects: []
492 | noCountDownObjects: []
493 | onSetLevelZeroData:
494 | m_PersistentCalls:
495 | m_Calls: []
496 | onSetNonLevelZeroData:
497 | m_PersistentCalls:
498 | m_Calls: []
499 | onSetEquippedData:
500 | m_PersistentCalls:
501 | m_Calls: []
502 | onSetUnEquippedData:
503 | m_PersistentCalls:
504 | m_Calls: []
505 | onSetUnEquippableData:
506 | m_PersistentCalls:
507 | m_Calls: []
508 | onSetUnknowSourceData:
509 | m_PersistentCalls:
510 | m_Calls: []
511 | onSetUsableData:
512 | m_PersistentCalls:
513 | m_Calls: []
514 | onSetStorageItemData:
515 | m_PersistentCalls:
516 | m_Calls: []
517 | onNpcSellItemDialogAppear:
518 | m_PersistentCalls:
519 | m_Calls: []
520 | onNpcSellItemDialogDisappear:
521 | m_PersistentCalls:
522 | m_Calls: []
523 | onRefineItemDialogAppear:
524 | m_PersistentCalls:
525 | m_Calls: []
526 | onRefineItemDialogDisappear:
527 | m_PersistentCalls:
528 | m_Calls: []
529 | onDismantleItemDialogAppear:
530 | m_PersistentCalls:
531 | m_Calls: []
532 | onDismantleItemDialogDisappear:
533 | m_PersistentCalls:
534 | m_Calls: []
535 | onRepairItemDialogAppear:
536 | m_PersistentCalls:
537 | m_Calls: []
538 | onRepairItemDialogDisappear:
539 | m_PersistentCalls:
540 | m_Calls: []
541 | onEnhanceSocketItemDialogAppear:
542 | m_PersistentCalls:
543 | m_Calls: []
544 | onEnhanceSocketItemDialogDisappear:
545 | m_PersistentCalls:
546 | m_Calls: []
547 | onStorageDialogAppear:
548 | m_PersistentCalls:
549 | m_Calls: []
550 | onStorageDialogDisappear:
551 | m_PersistentCalls:
552 | m_Calls: []
553 | onEnterDealingState:
554 | m_PersistentCalls:
555 | m_Calls: []
556 | onExitDealingState:
557 | m_PersistentCalls:
558 | m_Calls: []
559 | clones:
560 | - {fileID: 114431633222429620}
561 | uiDragging: {fileID: 0}
562 | uiNextLevelItem: {fileID: 0}
563 | uiComparingEquipments: []
564 | showAmountWhenMaxIsOne: 0
565 | showLevelAsDefault: 0
566 | dontAppendRefineLevelToTitle: 0
567 | dontShowComparingEquipments: 0
568 | --- !u!114 &114274090299979142
569 | MonoBehaviour:
570 | m_ObjectHideFlags: 0
571 | m_CorrespondingSourceObject: {fileID: 0}
572 | m_PrefabInstance: {fileID: 0}
573 | m_PrefabAsset: {fileID: 0}
574 | m_GameObject: {fileID: 1464786769811892}
575 | m_Enabled: 1
576 | m_EditorHideFlags: 0
577 | m_Script: {fileID: 11500000, guid: 8acca1e657677894ab334e788517ce41, type: 3}
578 | m_Name:
579 | m_EditorClassIdentifier:
580 | uiCharacterItem: {fileID: 114987847931839752}
581 | doNotUnEquipItem: 0
582 | doNotSwapOrMergeItem: 0
583 | doNotEquipItem: 0
584 | doNotMoveToStorage: 0
585 | doNotMoveFromStorage: 0
586 | doNotSwapOrMergeStorageItem: 0
587 | doNotSwapOrMergeWithStorageItem: 0
588 | doNotSwapOrMergeWithInventoryItem: 0
589 | --- !u!114 &1702941059909545384
590 | MonoBehaviour:
591 | m_ObjectHideFlags: 0
592 | m_CorrespondingSourceObject: {fileID: 0}
593 | m_PrefabInstance: {fileID: 0}
594 | m_PrefabAsset: {fileID: 0}
595 | m_GameObject: {fileID: 1464786769811892}
596 | m_Enabled: 1
597 | m_EditorHideFlags: 0
598 | m_Script: {fileID: 11500000, guid: d4e908467a27b2147a3721bd88d3ce26, type: 3}
599 | m_Name:
600 | m_EditorClassIdentifier:
601 | leftClick:
602 | m_PersistentCalls:
603 | m_Calls: []
604 | middleClick:
605 | m_PersistentCalls:
606 | m_Calls: []
607 | rightClick:
608 | m_PersistentCalls:
609 | m_Calls:
610 | - m_Target: {fileID: 114987847931839752}
611 | m_TargetAssemblyTypeName: MultiplayerARPG.UICharacterItem, Assembly-CSharp
612 | m_MethodName: OnClickMoveFromStorage
613 | m_Mode: 1
614 | m_Arguments:
615 | m_ObjectArgument: {fileID: 0}
616 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
617 | m_IntArgument: 0
618 | m_FloatArgument: 0
619 | m_StringArgument:
620 | m_BoolArgument: 0
621 | m_CallState: 2
622 | --- !u!1 &1469840176515954
623 | GameObject:
624 | m_ObjectHideFlags: 0
625 | m_CorrespondingSourceObject: {fileID: 0}
626 | m_PrefabInstance: {fileID: 0}
627 | m_PrefabAsset: {fileID: 0}
628 | serializedVersion: 6
629 | m_Component:
630 | - component: {fileID: 224043564467093072}
631 | - component: {fileID: 222372955065324142}
632 | - component: {fileID: 114401993983943636}
633 | m_Layer: 5
634 | m_Name: Icon
635 | m_TagString: Untagged
636 | m_Icon: {fileID: 0}
637 | m_NavMeshLayer: 0
638 | m_StaticEditorFlags: 0
639 | m_IsActive: 1
640 | --- !u!224 &224043564467093072
641 | RectTransform:
642 | m_ObjectHideFlags: 0
643 | m_CorrespondingSourceObject: {fileID: 0}
644 | m_PrefabInstance: {fileID: 0}
645 | m_PrefabAsset: {fileID: 0}
646 | m_GameObject: {fileID: 1469840176515954}
647 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
648 | m_LocalPosition: {x: 0, y: 0, z: 0}
649 | m_LocalScale: {x: 1, y: 1, z: 1}
650 | m_Children: []
651 | m_Father: {fileID: 224322634317190788}
652 | m_RootOrder: 0
653 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
654 | m_AnchorMin: {x: 0, y: 0}
655 | m_AnchorMax: {x: 1, y: 1}
656 | m_AnchoredPosition: {x: 0, y: 0}
657 | m_SizeDelta: {x: 0, y: 0}
658 | m_Pivot: {x: 0.5, y: 0.5}
659 | --- !u!222 &222372955065324142
660 | CanvasRenderer:
661 | m_ObjectHideFlags: 0
662 | m_CorrespondingSourceObject: {fileID: 0}
663 | m_PrefabInstance: {fileID: 0}
664 | m_PrefabAsset: {fileID: 0}
665 | m_GameObject: {fileID: 1469840176515954}
666 | m_CullTransparentMesh: 0
667 | --- !u!114 &114401993983943636
668 | MonoBehaviour:
669 | m_ObjectHideFlags: 0
670 | m_CorrespondingSourceObject: {fileID: 0}
671 | m_PrefabInstance: {fileID: 0}
672 | m_PrefabAsset: {fileID: 0}
673 | m_GameObject: {fileID: 1469840176515954}
674 | m_Enabled: 1
675 | m_EditorHideFlags: 0
676 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
677 | m_Name:
678 | m_EditorClassIdentifier:
679 | m_Material: {fileID: 0}
680 | m_Color: {r: 1, g: 1, b: 1, a: 1}
681 | m_RaycastTarget: 0
682 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
683 | m_Maskable: 1
684 | m_OnCullStateChanged:
685 | m_PersistentCalls:
686 | m_Calls: []
687 | m_Sprite: {fileID: 21300000, guid: 611039964f3f4754b8d13eaca5d77f52, type: 3}
688 | m_Type: 0
689 | m_PreserveAspect: 0
690 | m_FillCenter: 1
691 | m_FillMethod: 4
692 | m_FillAmount: 1
693 | m_FillClockwise: 1
694 | m_FillOrigin: 0
695 | m_UseSpriteMesh: 0
696 | m_PixelsPerUnitMultiplier: 1
697 | --- !u!1 &1470456259545076
698 | GameObject:
699 | m_ObjectHideFlags: 0
700 | m_CorrespondingSourceObject: {fileID: 0}
701 | m_PrefabInstance: {fileID: 0}
702 | m_PrefabAsset: {fileID: 0}
703 | serializedVersion: 6
704 | m_Component:
705 | - component: {fileID: 224139374158611576}
706 | - component: {fileID: 222624830741935796}
707 | - component: {fileID: 114894893612556186}
708 | m_Layer: 5
709 | m_Name: Icon
710 | m_TagString: Untagged
711 | m_Icon: {fileID: 0}
712 | m_NavMeshLayer: 0
713 | m_StaticEditorFlags: 0
714 | m_IsActive: 1
715 | --- !u!224 &224139374158611576
716 | RectTransform:
717 | m_ObjectHideFlags: 0
718 | m_CorrespondingSourceObject: {fileID: 0}
719 | m_PrefabInstance: {fileID: 0}
720 | m_PrefabAsset: {fileID: 0}
721 | m_GameObject: {fileID: 1470456259545076}
722 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
723 | m_LocalPosition: {x: 0, y: 0, z: 0}
724 | m_LocalScale: {x: 1, y: 1, z: 1}
725 | m_Children: []
726 | m_Father: {fileID: 224796095283217002}
727 | m_RootOrder: 1
728 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
729 | m_AnchorMin: {x: 0, y: 0}
730 | m_AnchorMax: {x: 1, y: 1}
731 | m_AnchoredPosition: {x: 0, y: 0}
732 | m_SizeDelta: {x: 0, y: 0}
733 | m_Pivot: {x: 0.5, y: 0.5}
734 | --- !u!222 &222624830741935796
735 | CanvasRenderer:
736 | m_ObjectHideFlags: 0
737 | m_CorrespondingSourceObject: {fileID: 0}
738 | m_PrefabInstance: {fileID: 0}
739 | m_PrefabAsset: {fileID: 0}
740 | m_GameObject: {fileID: 1470456259545076}
741 | m_CullTransparentMesh: 0
742 | --- !u!114 &114894893612556186
743 | MonoBehaviour:
744 | m_ObjectHideFlags: 0
745 | m_CorrespondingSourceObject: {fileID: 0}
746 | m_PrefabInstance: {fileID: 0}
747 | m_PrefabAsset: {fileID: 0}
748 | m_GameObject: {fileID: 1470456259545076}
749 | m_Enabled: 1
750 | m_EditorHideFlags: 0
751 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
752 | m_Name:
753 | m_EditorClassIdentifier:
754 | m_Material: {fileID: 0}
755 | m_Color: {r: 1, g: 1, b: 1, a: 1}
756 | m_RaycastTarget: 0
757 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
758 | m_Maskable: 1
759 | m_OnCullStateChanged:
760 | m_PersistentCalls:
761 | m_Calls: []
762 | m_Sprite: {fileID: 21300000, guid: f72e834682cb1224d8ee12cc882a9420, type: 3}
763 | m_Type: 0
764 | m_PreserveAspect: 0
765 | m_FillCenter: 1
766 | m_FillMethod: 4
767 | m_FillAmount: 1
768 | m_FillClockwise: 1
769 | m_FillOrigin: 0
770 | m_UseSpriteMesh: 0
771 | m_PixelsPerUnitMultiplier: 1
772 | --- !u!1 &1485497579814196
773 | GameObject:
774 | m_ObjectHideFlags: 0
775 | m_CorrespondingSourceObject: {fileID: 0}
776 | m_PrefabInstance: {fileID: 0}
777 | m_PrefabAsset: {fileID: 0}
778 | serializedVersion: 6
779 | m_Component:
780 | - component: {fileID: 224802615376757424}
781 | - component: {fileID: 222986867476731786}
782 | - component: {fileID: 114733326873639686}
783 | - component: {fileID: 114555050221373458}
784 | - component: {fileID: 114914474213375914}
785 | m_Layer: 5
786 | m_Name: TextStack
787 | m_TagString: Untagged
788 | m_Icon: {fileID: 0}
789 | m_NavMeshLayer: 0
790 | m_StaticEditorFlags: 0
791 | m_IsActive: 1
792 | --- !u!224 &224802615376757424
793 | RectTransform:
794 | m_ObjectHideFlags: 0
795 | m_CorrespondingSourceObject: {fileID: 0}
796 | m_PrefabInstance: {fileID: 0}
797 | m_PrefabAsset: {fileID: 0}
798 | m_GameObject: {fileID: 1485497579814196}
799 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
800 | m_LocalPosition: {x: 0, y: 0, z: 0}
801 | m_LocalScale: {x: 1, y: 1, z: 1}
802 | m_Children: []
803 | m_Father: {fileID: 224796095283217002}
804 | m_RootOrder: 3
805 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
806 | m_AnchorMin: {x: 0, y: 0}
807 | m_AnchorMax: {x: 1, y: 1}
808 | m_AnchoredPosition: {x: 0, y: 0}
809 | m_SizeDelta: {x: 0, y: 0}
810 | m_Pivot: {x: 0.5, y: 0.5}
811 | --- !u!222 &222986867476731786
812 | CanvasRenderer:
813 | m_ObjectHideFlags: 0
814 | m_CorrespondingSourceObject: {fileID: 0}
815 | m_PrefabInstance: {fileID: 0}
816 | m_PrefabAsset: {fileID: 0}
817 | m_GameObject: {fileID: 1485497579814196}
818 | m_CullTransparentMesh: 0
819 | --- !u!114 &114733326873639686
820 | MonoBehaviour:
821 | m_ObjectHideFlags: 0
822 | m_CorrespondingSourceObject: {fileID: 0}
823 | m_PrefabInstance: {fileID: 0}
824 | m_PrefabAsset: {fileID: 0}
825 | m_GameObject: {fileID: 1485497579814196}
826 | m_Enabled: 1
827 | m_EditorHideFlags: 0
828 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
829 | m_Name:
830 | m_EditorClassIdentifier:
831 | m_Material: {fileID: 0}
832 | m_Color: {r: 1, g: 1, b: 1, a: 1}
833 | m_RaycastTarget: 0
834 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
835 | m_Maskable: 1
836 | m_OnCullStateChanged:
837 | m_PersistentCalls:
838 | m_Calls: []
839 | m_FontData:
840 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
841 | m_FontSize: 14
842 | m_FontStyle: 0
843 | m_BestFit: 0
844 | m_MinSize: 10
845 | m_MaxSize: 40
846 | m_Alignment: 7
847 | m_AlignByGeometry: 0
848 | m_RichText: 1
849 | m_HorizontalOverflow: 1
850 | m_VerticalOverflow: 0
851 | m_LineSpacing: 1
852 | m_Text: 0/0
853 | --- !u!114 &114555050221373458
854 | MonoBehaviour:
855 | m_ObjectHideFlags: 0
856 | m_CorrespondingSourceObject: {fileID: 0}
857 | m_PrefabInstance: {fileID: 0}
858 | m_PrefabAsset: {fileID: 0}
859 | m_GameObject: {fileID: 1485497579814196}
860 | m_Enabled: 1
861 | m_EditorHideFlags: 0
862 | m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
863 | m_Name:
864 | m_EditorClassIdentifier:
865 | m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
866 | m_EffectDistance: {x: 1, y: -1}
867 | m_UseGraphicAlpha: 1
868 | --- !u!114 &114914474213375914
869 | MonoBehaviour:
870 | m_ObjectHideFlags: 0
871 | m_CorrespondingSourceObject: {fileID: 0}
872 | m_PrefabInstance: {fileID: 0}
873 | m_PrefabAsset: {fileID: 0}
874 | m_GameObject: {fileID: 1485497579814196}
875 | m_Enabled: 1
876 | m_EditorHideFlags: 0
877 | m_Script: {fileID: 11500000, guid: d8355763b7cda344c9d206aa977ec27f, type: 3}
878 | m_Name:
879 | m_EditorClassIdentifier:
880 | unityText: {fileID: 114733326873639686}
881 | --- !u!1 &1511667013151664
882 | GameObject:
883 | m_ObjectHideFlags: 0
884 | m_CorrespondingSourceObject: {fileID: 0}
885 | m_PrefabInstance: {fileID: 0}
886 | m_PrefabAsset: {fileID: 0}
887 | serializedVersion: 6
888 | m_Component:
889 | - component: {fileID: 224322634317190788}
890 | - component: {fileID: 222957563490236438}
891 | - component: {fileID: 114325293607690556}
892 | - component: {fileID: 114431633222429620}
893 | - component: {fileID: 114727626418922918}
894 | m_Layer: 5
895 | m_Name: UIItemIcon_Draggable
896 | m_TagString: Untagged
897 | m_Icon: {fileID: 0}
898 | m_NavMeshLayer: 0
899 | m_StaticEditorFlags: 0
900 | m_IsActive: 1
901 | --- !u!224 &224322634317190788
902 | RectTransform:
903 | m_ObjectHideFlags: 0
904 | m_CorrespondingSourceObject: {fileID: 0}
905 | m_PrefabInstance: {fileID: 0}
906 | m_PrefabAsset: {fileID: 0}
907 | m_GameObject: {fileID: 1511667013151664}
908 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
909 | m_LocalPosition: {x: 0, y: 0, z: 0}
910 | m_LocalScale: {x: 1, y: 1, z: 1}
911 | m_Children:
912 | - {fileID: 224043564467093072}
913 | m_Father: {fileID: 224796095283217002}
914 | m_RootOrder: 2
915 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
916 | m_AnchorMin: {x: 0, y: 0}
917 | m_AnchorMax: {x: 1, y: 1}
918 | m_AnchoredPosition: {x: 0, y: 0}
919 | m_SizeDelta: {x: 0, y: 0}
920 | m_Pivot: {x: 0.5, y: 0.5}
921 | --- !u!222 &222957563490236438
922 | CanvasRenderer:
923 | m_ObjectHideFlags: 0
924 | m_CorrespondingSourceObject: {fileID: 0}
925 | m_PrefabInstance: {fileID: 0}
926 | m_PrefabAsset: {fileID: 0}
927 | m_GameObject: {fileID: 1511667013151664}
928 | m_CullTransparentMesh: 0
929 | --- !u!114 &114325293607690556
930 | MonoBehaviour:
931 | m_ObjectHideFlags: 0
932 | m_CorrespondingSourceObject: {fileID: 0}
933 | m_PrefabInstance: {fileID: 0}
934 | m_PrefabAsset: {fileID: 0}
935 | m_GameObject: {fileID: 1511667013151664}
936 | m_Enabled: 1
937 | m_EditorHideFlags: 0
938 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
939 | m_Name:
940 | m_EditorClassIdentifier:
941 | m_Material: {fileID: 0}
942 | m_Color: {r: 0.7411765, g: 0.7411765, b: 0.7411765, a: 1}
943 | m_RaycastTarget: 1
944 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
945 | m_Maskable: 1
946 | m_OnCullStateChanged:
947 | m_PersistentCalls:
948 | m_Calls: []
949 | m_Sprite: {fileID: 0}
950 | m_Type: 0
951 | m_PreserveAspect: 0
952 | m_FillCenter: 1
953 | m_FillMethod: 4
954 | m_FillAmount: 1
955 | m_FillClockwise: 1
956 | m_FillOrigin: 0
957 | m_UseSpriteMesh: 0
958 | m_PixelsPerUnitMultiplier: 1
959 | --- !u!114 &114431633222429620
960 | MonoBehaviour:
961 | m_ObjectHideFlags: 0
962 | m_CorrespondingSourceObject: {fileID: 0}
963 | m_PrefabInstance: {fileID: 0}
964 | m_PrefabAsset: {fileID: 0}
965 | m_GameObject: {fileID: 1511667013151664}
966 | m_Enabled: 1
967 | m_EditorHideFlags: 0
968 | m_Script: {fileID: 11500000, guid: a732866d921423d449d4fee0417113e9, type: 3}
969 | m_Name:
970 | m_EditorClassIdentifier:
971 | hideOnAwake: 0
972 | moveToLastSiblingOnShow: 0
973 | root: {fileID: 0}
974 | onShow:
975 | m_PersistentCalls:
976 | m_Calls: []
977 | onHide:
978 | m_PersistentCalls:
979 | m_Calls: []
980 | objectSelected: {fileID: 0}
981 | selectionManager: {fileID: 0}
982 | updateUIRepeatRate: 0.5
983 | formatKeyTitle:
984 | localeKey: 5
985 | customKey:
986 | formatKeyDescription:
987 | localeKey: 5
988 | customKey:
989 | formatKeyRarityTitle:
990 | localeKey: 66
991 | customKey:
992 | formatKeyLevel:
993 | localeKey: 9
994 | customKey:
995 | formatKeyRefineLevel:
996 | localeKey: 56
997 | customKey:
998 | formatKeyTitleWithRefineLevel:
999 | localeKey: 57
1000 | customKey:
1001 | formatKeySellPrice:
1002 | localeKey: 40
1003 | customKey:
1004 | formatKeyStack:
1005 | localeKey: 67
1006 | customKey:
1007 | formatKeyDurability:
1008 | localeKey: 68
1009 | customKey:
1010 | formatKeyWeight:
1011 | localeKey: 34
1012 | customKey:
1013 | formatKeyExp:
1014 | localeKey: 10
1015 | customKey:
1016 | formatKeyLockRemainsDuration:
1017 | localeKey: 5
1018 | customKey:
1019 | formatKeyBuilding:
1020 | localeKey: 214
1021 | customKey:
1022 | formatKeyPet:
1023 | localeKey: 215
1024 | customKey:
1025 | formatKeyMount:
1026 | localeKey: 216
1027 | customKey:
1028 | formatKeySkill:
1029 | localeKey: 217
1030 | customKey:
1031 | formatKeyCoolDownDuration:
1032 | localeKey: 45
1033 | customKey:
1034 | formatKeyCoolDownRemainsDuration:
1035 | localeKey: 5
1036 | customKey:
1037 | formatKeyItemType:
1038 | localeKey: 58
1039 | customKey:
1040 | uiTextTitle: {fileID: 0}
1041 | uiTextDescription: {fileID: 0}
1042 | uiTextRarity: {fileID: 0}
1043 | uiTextLevel: {fileID: 0}
1044 | imageIcon: {fileID: 114401993983943636}
1045 | imageRarity: {fileID: 0}
1046 | uiTextItemType: {fileID: 0}
1047 | uiTextSellPrice: {fileID: 0}
1048 | uiTextStack: {fileID: 0}
1049 | uiTextDurability: {fileID: 0}
1050 | uiGageDurability:
1051 | displayType: 0
1052 | textValue: {fileID: 0}
1053 | imageGage: {fileID: 0}
1054 | formatCurrentByMax:
1055 | localeKey: 8
1056 | customKey:
1057 | formatCurrentAmount: N0
1058 | formatMaxAmount: N0
1059 | formatPercentage:
1060 | localeKey: 6
1061 | customKey:
1062 | formatPercentageAmount: N0
1063 | uiTextWeight: {fileID: 0}
1064 | uiTextExp: {fileID: 0}
1065 | uiGageExp:
1066 | displayType: 0
1067 | textValue: {fileID: 0}
1068 | imageGage: {fileID: 0}
1069 | formatCurrentByMax:
1070 | localeKey: 8
1071 | customKey:
1072 | formatCurrentAmount: N0
1073 | formatMaxAmount: N0
1074 | formatPercentage:
1075 | localeKey: 6
1076 | customKey:
1077 | formatPercentageAmount: N0
1078 | uiTextLockRemainsDuration: {fileID: 0}
1079 | lockObjects: []
1080 | noLockObjects: []
1081 | uiRequirement: {fileID: 0}
1082 | uiIncreaseStats: {fileID: 0}
1083 | uiIncreaseStatsRate: {fileID: 0}
1084 | uiIncreaseAttributes: {fileID: 0}
1085 | uiIncreaseAttributesRate: {fileID: 0}
1086 | uiIncreaseResistances: {fileID: 0}
1087 | uiIncreaseArmors: {fileID: 0}
1088 | uiIncreaseDamages: {fileID: 0}
1089 | uiIncreaseSkillLevels: {fileID: 0}
1090 | uiEquipmentSet: {fileID: 0}
1091 | uiEquipmentSockets: {fileID: 0}
1092 | uiRefineItem: {fileID: 0}
1093 | uiDismantleItem: {fileID: 0}
1094 | uiRepairItem: {fileID: 0}
1095 | uiArmorAmount: {fileID: 0}
1096 | uiDamageAmount: {fileID: 0}
1097 | uiTextCurrentAmmo: {fileID: 0}
1098 | uiTextReserveAmmo: {fileID: 0}
1099 | uiTextSumAmmo: {fileID: 0}
1100 | requireAmmoSymbols: []
1101 | noRequireAmmoSymbols: []
1102 | gageAmmo:
1103 | displayType: 0
1104 | textValue: {fileID: 0}
1105 | imageGage: {fileID: 0}
1106 | formatCurrentByMax:
1107 | localeKey: 8
1108 | customKey:
1109 | formatCurrentAmount: N0
1110 | formatMaxAmount: N0
1111 | formatPercentage:
1112 | localeKey: 6
1113 | customKey:
1114 | formatPercentageAmount: N0
1115 | uiTextBuilding: {fileID: 0}
1116 | uiTextPet: {fileID: 0}
1117 | uiTextMount: {fileID: 0}
1118 | uiTextSkill: {fileID: 0}
1119 | uiTextCoolDownDuration: {fileID: 0}
1120 | uiTextCoolDownRemainsDuration: {fileID: 0}
1121 | imageCoolDownGage: {fileID: 0}
1122 | countDownObjects: []
1123 | noCountDownObjects: []
1124 | onSetLevelZeroData:
1125 | m_PersistentCalls:
1126 | m_Calls: []
1127 | onSetNonLevelZeroData:
1128 | m_PersistentCalls:
1129 | m_Calls: []
1130 | onSetEquippedData:
1131 | m_PersistentCalls:
1132 | m_Calls: []
1133 | onSetUnEquippedData:
1134 | m_PersistentCalls:
1135 | m_Calls: []
1136 | onSetUnEquippableData:
1137 | m_PersistentCalls:
1138 | m_Calls: []
1139 | onSetUnknowSourceData:
1140 | m_PersistentCalls:
1141 | m_Calls: []
1142 | onSetUsableData:
1143 | m_PersistentCalls:
1144 | m_Calls: []
1145 | onSetStorageItemData:
1146 | m_PersistentCalls:
1147 | m_Calls: []
1148 | onNpcSellItemDialogAppear:
1149 | m_PersistentCalls:
1150 | m_Calls: []
1151 | onNpcSellItemDialogDisappear:
1152 | m_PersistentCalls:
1153 | m_Calls: []
1154 | onRefineItemDialogAppear:
1155 | m_PersistentCalls:
1156 | m_Calls: []
1157 | onRefineItemDialogDisappear:
1158 | m_PersistentCalls:
1159 | m_Calls: []
1160 | onDismantleItemDialogAppear:
1161 | m_PersistentCalls:
1162 | m_Calls: []
1163 | onDismantleItemDialogDisappear:
1164 | m_PersistentCalls:
1165 | m_Calls: []
1166 | onRepairItemDialogAppear:
1167 | m_PersistentCalls:
1168 | m_Calls: []
1169 | onRepairItemDialogDisappear:
1170 | m_PersistentCalls:
1171 | m_Calls: []
1172 | onEnhanceSocketItemDialogAppear:
1173 | m_PersistentCalls:
1174 | m_Calls: []
1175 | onEnhanceSocketItemDialogDisappear:
1176 | m_PersistentCalls:
1177 | m_Calls: []
1178 | onStorageDialogAppear:
1179 | m_PersistentCalls:
1180 | m_Calls: []
1181 | onStorageDialogDisappear:
1182 | m_PersistentCalls:
1183 | m_Calls: []
1184 | onEnterDealingState:
1185 | m_PersistentCalls:
1186 | m_Calls: []
1187 | onExitDealingState:
1188 | m_PersistentCalls:
1189 | m_Calls: []
1190 | clones: []
1191 | uiDragging: {fileID: 0}
1192 | uiNextLevelItem: {fileID: 0}
1193 | uiComparingEquipments: []
1194 | showAmountWhenMaxIsOne: 0
1195 | showLevelAsDefault: 0
1196 | dontAppendRefineLevelToTitle: 0
1197 | dontShowComparingEquipments: 0
1198 | --- !u!114 &114727626418922918
1199 | MonoBehaviour:
1200 | m_ObjectHideFlags: 0
1201 | m_CorrespondingSourceObject: {fileID: 0}
1202 | m_PrefabInstance: {fileID: 0}
1203 | m_PrefabAsset: {fileID: 0}
1204 | m_GameObject: {fileID: 1511667013151664}
1205 | m_Enabled: 1
1206 | m_EditorHideFlags: 0
1207 | m_Script: {fileID: 11500000, guid: 31c6a0c56fcae894d9d023982b2fdbfb, type: 3}
1208 | m_Name:
1209 | m_EditorClassIdentifier:
1210 | rootTransform: {fileID: 0}
1211 | scrollRectAllowing: 0
1212 | scrollRect: {fileID: 0}
1213 | onStart:
1214 | m_PersistentCalls:
1215 | m_Calls: []
1216 | onBeginDrag:
1217 | m_PersistentCalls:
1218 | m_Calls: []
1219 | onEndDrag:
1220 | m_PersistentCalls:
1221 | m_Calls: []
1222 | requireDropArea: 0
1223 | --- !u!1 &1907501016766728
1224 | GameObject:
1225 | m_ObjectHideFlags: 0
1226 | m_CorrespondingSourceObject: {fileID: 0}
1227 | m_PrefabInstance: {fileID: 0}
1228 | m_PrefabAsset: {fileID: 0}
1229 | serializedVersion: 6
1230 | m_Component:
1231 | - component: {fileID: 224185969558672746}
1232 | - component: {fileID: 222116572587289088}
1233 | - component: {fileID: 114419691707077444}
1234 | m_Layer: 5
1235 | m_Name: BG
1236 | m_TagString: Untagged
1237 | m_Icon: {fileID: 0}
1238 | m_NavMeshLayer: 0
1239 | m_StaticEditorFlags: 0
1240 | m_IsActive: 1
1241 | --- !u!224 &224185969558672746
1242 | RectTransform:
1243 | m_ObjectHideFlags: 0
1244 | m_CorrespondingSourceObject: {fileID: 0}
1245 | m_PrefabInstance: {fileID: 0}
1246 | m_PrefabAsset: {fileID: 0}
1247 | m_GameObject: {fileID: 1907501016766728}
1248 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
1249 | m_LocalPosition: {x: 0, y: 0, z: 0}
1250 | m_LocalScale: {x: 1, y: 1, z: 1}
1251 | m_Children: []
1252 | m_Father: {fileID: 224551698098932226}
1253 | m_RootOrder: 0
1254 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
1255 | m_AnchorMin: {x: 0, y: 0}
1256 | m_AnchorMax: {x: 1, y: 1}
1257 | m_AnchoredPosition: {x: 0, y: 0}
1258 | m_SizeDelta: {x: -4, y: -4}
1259 | m_Pivot: {x: 0.5, y: 0.5}
1260 | --- !u!222 &222116572587289088
1261 | CanvasRenderer:
1262 | m_ObjectHideFlags: 0
1263 | m_CorrespondingSourceObject: {fileID: 0}
1264 | m_PrefabInstance: {fileID: 0}
1265 | m_PrefabAsset: {fileID: 0}
1266 | m_GameObject: {fileID: 1907501016766728}
1267 | m_CullTransparentMesh: 0
1268 | --- !u!114 &114419691707077444
1269 | MonoBehaviour:
1270 | m_ObjectHideFlags: 0
1271 | m_CorrespondingSourceObject: {fileID: 0}
1272 | m_PrefabInstance: {fileID: 0}
1273 | m_PrefabAsset: {fileID: 0}
1274 | m_GameObject: {fileID: 1907501016766728}
1275 | m_Enabled: 1
1276 | m_EditorHideFlags: 0
1277 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
1278 | m_Name:
1279 | m_EditorClassIdentifier:
1280 | m_Material: {fileID: 0}
1281 | m_Color: {r: 0.7411765, g: 0.7411765, b: 0.7411765, a: 1}
1282 | m_RaycastTarget: 0
1283 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
1284 | m_Maskable: 1
1285 | m_OnCullStateChanged:
1286 | m_PersistentCalls:
1287 | m_Calls: []
1288 | m_Sprite: {fileID: 0}
1289 | m_Type: 0
1290 | m_PreserveAspect: 0
1291 | m_FillCenter: 1
1292 | m_FillMethod: 4
1293 | m_FillAmount: 1
1294 | m_FillClockwise: 1
1295 | m_FillOrigin: 0
1296 | m_UseSpriteMesh: 0
1297 | m_PixelsPerUnitMultiplier: 1
1298 |
--------------------------------------------------------------------------------