├── Assets ├── UIInventoryItemListManager.cs ├── PlayerModData │ ├── PlayerFileDefs.txt │ ├── myItems.xml │ └── myStatusMod.xml ├── ResolutionDialog │ ├── example.png │ ├── NewResolutionDialogAssembly.asmdef │ ├── Scripts │ │ ├── Settings.cs │ │ └── Controller │ │ │ ├── FpsLabel.cs │ │ │ ├── CreateEventSystemIfNoneExists.cs │ │ │ ├── ButtonHandler.cs │ │ │ └── PopupHandler.cs │ ├── README.md │ ├── LICENSE │ └── Todos.md ├── Resources │ ├── Abilities │ │ └── XML │ │ │ ├── abilities_emblems.xml │ │ │ └── multidlc_abilities.xml │ ├── BakedData │ │ └── bakedAbilities.dat │ ├── SpriteEffects │ │ ├── TVShader.cs │ │ ├── PivotHolder.prefab │ │ ├── FireBombEffectSystem.prefab │ │ └── AfterImageCreator.prefab │ ├── DLCResources │ │ ├── DLC1 │ │ │ ├── NPCs │ │ │ │ └── Shops │ │ │ │ │ └── exp_shops.xml │ │ │ ├── Dialogs │ │ │ │ └── XML │ │ │ │ │ ├── dialog_shara_preboss2_banditshelp.xml │ │ │ │ │ ├── dialog_shara_boss1_prefight.xml │ │ │ │ │ └── dialog_shara_preboss2_passage.xml │ │ │ ├── Localization │ │ │ │ └── perchance_mystery_item_flavor_table_jp_japan.txt │ │ │ ├── StatusEffects │ │ │ │ └── BakedStatusEffectDefinitions_DLC1.cs │ │ │ └── DungeonRooms │ │ │ │ └── XML │ │ │ │ └── exp_specialrooms.xml │ │ └── DLC2 │ │ │ ├── NPCs │ │ │ └── XML │ │ │ │ └── exp2_npcs.xml │ │ │ └── StatusEffects │ │ │ └── BakedStatusEffectDefinitions_DLC2.cs │ ├── ShepPrefabs │ │ ├── CSCBlockHolder.prefab │ │ ├── SubmenuAnchorObject.prefab │ │ └── TooltipAnchorRight.prefab │ ├── MyNewGrayscale.shader │ ├── SpriteGrayscale.shader │ ├── StatusEffects │ │ └── XML │ │ │ └── multidlc_groundeffects.xml │ ├── MapObjects │ │ └── SpriteFontManager.prefab │ └── CampaignSelectGrayscaler.shader ├── Image Reference │ ├── teleporter_puzzle_map.png │ └── robot_dungeon_bridge_area_combat_sector.jpg ├── SimpleDontDestroy.cs ├── ISelectableUIObject.cs ├── TDSlider.cs ├── ConditionalLocalizeAllChildrenToChinese.cs ├── ScrollbarResizerComponent.cs ├── ChampionData.cs ├── PhoneScriptManager.cs ├── FullScreenTexture.cs ├── FinalHubAreaStoryComponent.cs ├── TDScripts │ ├── CustomFunctionsFromXML │ │ ├── DialogCutsceneFunctions.cs │ │ ├── ItemNameGenerationFunctions.cs │ │ ├── MoveActorCustomFunctions.cs │ │ └── PostSummonFunctions.cs │ ├── AbilityEffects │ │ └── CombatBiography.cs │ ├── CraftingScripts │ │ ├── CraftingRecipe_OrbAndJobScrollToSkillOrb.cs │ │ ├── CraftingRecipe_ThreeOffhandsToOffhand.cs │ │ ├── CraftingRecipe_LucidOrbsToRegular.cs │ │ ├── CraftingRecipe_LucidShardsToLucidOrb.cs │ │ ├── CraftingRecipe_ThreeSeedsToRandomSeed.cs │ │ ├── CraftingRecipe_ThreeCommonArmorToRandomArmor.cs │ │ ├── CraftingRecipe_TwoRelicsToRelic.cs │ │ ├── CraftingRecipe_ThreeCommonWeaponsToRandomWeapon.cs │ │ ├── CraftingRecipe_GemLeavesToGems.cs │ │ ├── CraftingRecipe_ThreeScrollsAndGemToScroll.cs │ │ ├── CraftingRecipe_PotionsToElixir.cs │ │ └── CraftingRecipe_TwoAccessoriesAndGemToAccessory.cs │ └── DragonEvents │ │ └── DragonLimitBreaks.cs ├── SDK Mods │ └── read_file_chunk.cpp ├── radialmenu_assets.manifest ├── GenericButtonForUIObject.cs ├── PlatformHotbarSelectorLogic.cs ├── TextHelper.cs ├── Introloop │ └── Scripts │ │ ├── PositiveFloatAttribute.cs │ │ ├── IntroloopLogger.cs │ │ ├── ImportantIntAttribute.cs │ │ ├── IntroloopAudio.cs │ │ └── IntroloopSettings.cs ├── OptionLabelElemental.cs ├── InheritSpriteOrderScript.cs ├── GameLogScript_DataStructures.cs ├── GameModifierData.cs ├── UITopArea.cs ├── AutoRepoolSelf.cs ├── SimpleUICenterScript.cs ├── AutoDisableRenderer.cs ├── UIFilledBarScript.cs ├── ParticleScript.cs ├── Standard Assets │ ├── Editor │ │ ├── AssetBundleManager │ │ │ └── Editor │ │ │ │ └── AssetbundlesMenuItems.cs │ │ └── ImageEffects │ │ │ └── CreaseShadingEditor.cs │ └── AssetBundleManager │ │ └── Utility.cs ├── TDCharacterValidator.cs ├── GameLogDynamicCanvasScript.cs ├── PetListButton.cs ├── HUDPetReadout.cs ├── TDScrollbarManager.cs ├── JobAbilButtonScript.cs ├── TDSceneManager.cs ├── SnackBagUIScript.cs ├── Switch_SaveIconDisplay.cs ├── analog_move_tutorial.manifest ├── radialmenu_object.manifest ├── GridPrefabFollower.cs ├── ScriptableObject_MusicData.cs ├── OptionsUISliderComponent.cs ├── LanguageSelectorButton.cs ├── SpriteChildVisibility.cs ├── SwitchInputFieldCommunicator.cs ├── WrathBarScript.cs ├── ConditionalLocalizeToChineseFont.cs ├── MusicTrackData.cs ├── exp_abilities_monster.xml ├── UIManagerScript_PrettyLoading.cs ├── UIManagerScript_LoadingBar.cs ├── Pathfinding.cs ├── TDExpansion.cs ├── GameMasterScript_StringInitialization.cs ├── AfterImageEffectScript.cs ├── StringManager_TagManagement.cs ├── SimpleLightCycle.cs ├── CanvasParallaxScript.cs ├── FastTravelStuff.cs ├── GraphicsAndFramerateManager.cs ├── AARandomFunctionScript.cs ├── LogoSceneFader.cs ├── FastRNG.cs ├── SplashArtComponent.cs ├── GameMasterScript_Casino.cs ├── CanvasGroupFader.cs ├── SpriteFontManager.prefab ├── GameMasterScript_CutsceneAndAnimStates.cs ├── LogosSettings.lighting ├── MainSettings.lighting ├── GameMasterScript_TurnEnumerators.cs ├── OscillateMovement.cs ├── MasteriesBakedData.cs ├── MapTileDisplayable.cs ├── GameMasterScript_TurnEndFunctions.cs ├── OutOfBoundsUICheckScript.cs ├── PlayerMods_ListEntry.cs ├── CraftingRecipe_LucidOrbAndGemToRandomLucid.cs ├── ParallaxHandler.cs ├── AutoEatFoodLogic.cs ├── GameMasterScript_DataDictionaries.cs ├── ElementalAuraManager.cs ├── SpriteFontManager.cs ├── TooltipScript.cs ├── PlayerHUDStatsComponent.cs ├── GameMasterScript_ApplicationManagement.cs ├── ChampionMod.cs ├── TextEffects.cs ├── AuraAnimateScript.cs ├── UIManager.prefab └── DLCManager.prefab ├── README.md └── .gitignore /Assets/UIInventoryItemListManager.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Assets/PlayerModData/PlayerFileDefs.txt: -------------------------------------------------------------------------------- 1 | myStatusMod.xml STATUSEFFECTS 2 | myItems.xml ITEMS -------------------------------------------------------------------------------- /Assets/ResolutionDialog/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaversa/tangledeep/HEAD/Assets/ResolutionDialog/example.png -------------------------------------------------------------------------------- /Assets/Resources/Abilities/XML/abilities_emblems.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Assets/Resources/BakedData/bakedAbilities.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaversa/tangledeep/HEAD/Assets/Resources/BakedData/bakedAbilities.dat -------------------------------------------------------------------------------- /Assets/Image Reference/teleporter_puzzle_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaversa/tangledeep/HEAD/Assets/Image Reference/teleporter_puzzle_map.png -------------------------------------------------------------------------------- /Assets/Image Reference/robot_dungeon_bridge_area_combat_sector.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaversa/tangledeep/HEAD/Assets/Image Reference/robot_dungeon_bridge_area_combat_sector.jpg -------------------------------------------------------------------------------- /Assets/Resources/Abilities/XML/multidlc_abilities.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | skill_dualwielderbonus1 5 | dualwielderbonus1,dualwielderbonus1 6 | 7 | -------------------------------------------------------------------------------- /Assets/SimpleDontDestroy.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class SimpleDontDestroy : MonoBehaviour { 6 | 7 | // Use this for initialization 8 | void Start () { 9 | DontDestroyOnLoad(gameObject); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Assets/ISelectableUIObject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | public interface ISelectableUIObject 7 | { 8 | Sprite GetSpriteForUI(); 9 | string GetNameForUI(); 10 | string GetInformationForTooltip(); 11 | } 12 | -------------------------------------------------------------------------------- /Assets/TDSlider.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class TDSlider : Slider 7 | { 8 | public void OnMove() 9 | { 10 | // IGNORE KEY INPUT 11 | Debug.Log("Ignore normal axis input."); 12 | } 13 | } -------------------------------------------------------------------------------- /Assets/ConditionalLocalizeAllChildrenToChinese.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class ConditionalLocalizeAllChildrenToChinese : MonoBehaviour 6 | { 7 | // Start is called before the first frame update 8 | void Start() 9 | { 10 | 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Assets/ScrollbarResizerComponent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class ScrollbarResizerComponent : MonoBehaviour { 7 | 8 | // Use this for initialization 9 | void Start () { 10 | GetComponent().size = 0; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Assets/ChampionData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public struct ChampionData 6 | { 7 | public List name1; 8 | public List name2; 9 | public List name3; 10 | public List name4; 11 | public List name5; 12 | public List name6; 13 | } -------------------------------------------------------------------------------- /Assets/PhoneScriptManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class PhoneScriptManager : MonoBehaviour { 7 | 8 | public Canvas phoneCanvas; 9 | 10 | #if UNITY_IPHONE || UNITY_ANDROID 11 | private void Awake() 12 | { 13 | 14 | } 15 | #endif 16 | } 17 | -------------------------------------------------------------------------------- /Assets/FullScreenTexture.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class FullScreenTexture : MonoBehaviour 5 | { 6 | void Update() 7 | { 8 | float height = Camera.main.orthographicSize * 2f; 9 | float width = Camera.main.aspect * height; 10 | transform.localScale = new Vector3(width, height, 1f); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /Assets/FinalHubAreaStoryComponent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | //The final hub area has four sub-areas that can be cleared to change how the 6 | //final boss fights play out. This component exists to manage some of the 7 | //interactables in those hubs and 8 | public class FinalHubAreaStoryComponent : MonoBehaviour 9 | { 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Assets/TDScripts/CustomFunctionsFromXML/DialogCutsceneFunctions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | // Functions called with no arguments by DialogEventScripts 6 | // Otherwise, these are no different than any other Cutscenes. This is just a place to organize them better. 7 | 8 | public partial class Cutscenes : MonoBehaviour 9 | { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Assets/SDK Mods/read_file_chunk.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" { 5 | 6 | void TestPenif( const char* words) 7 | { 8 | NN_LOG(words); 9 | } 10 | 11 | void ReadFileChunk(nn::fs::FileHandle handle, int64_t offset, void* buffer, size_t size, int64_t buffer_offset) 12 | { 13 | nn::fs::ReadFile(handle, offset, (uint8_t*)buffer + buffer_offset, size); 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /Assets/TDScripts/AbilityEffects/CombatBiography.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | // *thonk* 6 | 7 | public enum CombatActions { MOVE, ATTACK, COUNT } 8 | 9 | public class CombatBiography 10 | { 11 | 12 | // Use this for initialization 13 | void Start () { 14 | 15 | } 16 | 17 | // Update is called once per frame 18 | void Update () { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Assets/PlayerModData/myItems.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | My New Accessory 6 | accessory_myitem1 7 | This is a description for my accessory. 8 | MySpriteLoL 9 | 0 10 | 1.3 11 | 100 12 | 13 | 14 | -------------------------------------------------------------------------------- /Assets/radialmenu_assets.manifest: -------------------------------------------------------------------------------- 1 | ManifestFileVersion: 0 2 | CRC: 2198453123 3 | Hashes: 4 | AssetFileHash: 5 | serializedVersion: 2 6 | Hash: a4d1b1e5127daff9b7a21859b571dd7f 7 | TypeTreeHash: 8 | serializedVersion: 2 9 | Hash: ea5a42e0fd8ea905efa7aa926a3b8944 10 | HashAppended: 0 11 | ClassTypes: 12 | - Class: 28 13 | Script: {instanceID: 0} 14 | - Class: 213 15 | Script: {instanceID: 0} 16 | Assets: 17 | - Assets/Resources/Spritesheets/radial_menu_sprites.png 18 | Dependencies: [] 19 | -------------------------------------------------------------------------------- /Assets/GenericButtonForUIObject.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class GenericButtonForUIObject : MonoBehaviour 7 | { 8 | public UIManagerScript.UIObject myUIobject; 9 | 10 | public void OnHoverAction() 11 | { 12 | if (!GameMasterScript.gameLoadSequenceCompleted) return; 13 | 14 | UIManagerScript.ChangeUIFocusAndAlignCursor(myUIobject); 15 | } 16 | 17 | public void OnExitAction() 18 | { 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Assets/Resources/SpriteEffects/TVShader.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [ExecuteInEditMode] 4 | public class TVShader : MonoBehaviour 5 | { 6 | public Material material; 7 | 8 | // Use this for initialization 9 | void Start() 10 | { 11 | //material = new Material(Shader.Find("Custom/CRTShader")); 12 | } 13 | 14 | public void OnRenderImage(RenderTexture source, RenderTexture destination) 15 | { 16 | material.SetTexture("_MainTex", source); 17 | Graphics.Blit(source, destination, material); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Assets/PlatformHotbarSelectorLogic.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class PlatformHotbarSelectorLogic : MonoBehaviour { 6 | 7 | public GameObject gamepadVersion; 8 | 9 | public GameObject kbMouseVersion; 10 | 11 | private void Awake() 12 | { 13 | if (PlatformVariables.USE_GAMEPAD_ONLY_HOTBAR_STYLE) 14 | { 15 | gamepadVersion.SetActive(true); 16 | } 17 | else 18 | { 19 | kbMouseVersion.SetActive(true); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Hello! Welcome to the codebase for TANGLEDEEP, a game by Impact Gameworks. This repository consists of all the game's code and resource (XML) files, as well as prefabs. However it does not include any audio, images, plugins, etc. 2 | 3 | The purpose of this repo is to share some insight into how the game works to interested parties, and - maybe - get a little help fixing some logical bugs that I can then integrate into the latest Steam, Switch, and PS4 releases. 4 | 5 | If you have any questions, please contact me below! 6 | 7 | Andrew Aversa 8 | Lead Developer 9 | admin@impactgameworks.com 10 | -------------------------------------------------------------------------------- /Assets/PlayerModData/myStatusMod.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | status_playermadestatus1 6 | This is the displayname 7 | This is the description 8 | This is the log text 9 | 1 10 | SkillIcons_81 11 | 1 12 | 13 | 1 14 | 15 | 1 16 | 17 | 18 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/NewResolutionDialogAssembly.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NewResolutionDialog", 3 | "references": [], 4 | "includePlatforms": [ 5 | "Editor", 6 | "LinuxStandalone64", 7 | "macOSStandalone", 8 | "WSA", 9 | "WindowsStandalone32", 10 | "WindowsStandalone64" 11 | ], 12 | "excludePlatforms": [], 13 | "allowUnsafeCode": false, 14 | "overrideReferences": false, 15 | "precompiledReferences": [], 16 | "autoReferenced": true, 17 | "defineConstraints": [], 18 | "versionDefines": [], 19 | "noEngineReferences": false 20 | } -------------------------------------------------------------------------------- /Assets/TextHelper.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | 6 | [System.Serializable] 7 | public class TextHelper : MonoBehaviour { 8 | 9 | public bool isDirty; 10 | public TextMeshProUGUI myTMPro; 11 | 12 | // Update is called once per frame 13 | void Update () { 14 | if (isDirty) 15 | { 16 | transform.position = transform.position; 17 | myTMPro.SetText(myTMPro.text); 18 | isDirty = false; 19 | } 20 | } 21 | 22 | public void SetDirty() 23 | { 24 | isDirty = true; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/Introloop/Scripts/PositiveFloatAttribute.cs: -------------------------------------------------------------------------------- 1 | /* 2 | /// Copyright (c) 2015 Sirawat Pitaksarit, Exceed7 Experiments LP 3 | /// http://www.exceed7.com/introloop 4 | */ 5 | 6 | #if UNITY_EDITOR 7 | using UnityEditor; 8 | #endif 9 | using UnityEngine; 10 | 11 | public class PositiveFloatAttribute : PropertyAttribute { 12 | 13 | public readonly string unit; 14 | 15 | public PositiveFloatAttribute () 16 | { 17 | } 18 | 19 | public PositiveFloatAttribute (string unit) 20 | { 21 | this.unit = unit; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /Assets/OptionLabelElemental.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | 6 | public class OptionLabelElemental : MonoBehaviour { 7 | 8 | public TextMeshProUGUI label_damage; 9 | public TextMeshProUGUI label_resist; 10 | 11 | // Use this for initialization 12 | void Start () { 13 | label_damage.text = StringManager.GetString("misc_generic_damage"); 14 | label_resist.text = StringManager.GetString("misc_generic_defense"); 15 | FontManager.LocalizeMe(label_damage, TDFonts.WHITE); 16 | FontManager.LocalizeMe(label_resist, TDFonts.WHITE); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Assets/InheritSpriteOrderScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class InheritSpriteOrderScript : MonoBehaviour { 6 | 7 | SpriteRenderer mySR; 8 | SpriteRenderer parentSR; 9 | bool initialized; 10 | 11 | // Use this for initialization 12 | void Awake () { 13 | mySR = GetComponent(); 14 | parentSR = transform.parent.GetComponent(); 15 | initialized = true; 16 | } 17 | 18 | // Update is called once per frame 19 | void Update () { 20 | if (!initialized) return; 21 | 22 | mySR.sortingOrder = parentSR.sortingOrder; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Assets/GameLogScript_DataStructures.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class GameLogScript 6 | { 7 | public class DividerDataPack 8 | { 9 | public int turnInserted; 10 | public GameObject obj; 11 | } 12 | public struct LogSpacingAndFontInfo 13 | { 14 | public int iLineSpacing; 15 | public int iFontSize; 16 | public int iMaxLinesOnScreen; 17 | public LogSpacingAndFontInfo(int spacing, int size, int maxOnScreen) 18 | { 19 | iLineSpacing = spacing; 20 | iFontSize = size; 21 | iMaxLinesOnScreen = maxOnScreen; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Assets/TDScripts/CustomFunctionsFromXML/ItemNameGenerationFunctions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class ItemNameGenerationFunctions 6 | { 7 | 8 | public static string BuildRuneOfKnowledgeName(Item itemBeingNamed) 9 | { 10 | string baseName = StringManager.GetString("exp_item_runeofknowledge"); 11 | string abilRef = itemBeingNamed.ReadActorDataString("teachskill"); 12 | AbilityScript template = GameMasterScript.masterAbilityList[abilRef]; 13 | baseName += ": " + template.abilityName; 14 | baseName = UIManagerScript.goldHexColor + baseName + ""; 15 | return baseName; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/Scripts/Settings.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace NewResolutionDialog.Scripts 6 | { 7 | public enum ResolutionDialogStyle 8 | { 9 | /// 10 | /// Use this as a first scene. Cannot be reopened once closed. 11 | /// 12 | LaunchDialog, 13 | 14 | /// 15 | /// Use this as a popup. Open it by pressing the corresponding key. 16 | /// 17 | PopupDialog 18 | } 19 | 20 | public class Settings : MonoBehaviour 21 | { 22 | public ResolutionDialogStyle dialogStyle = ResolutionDialogStyle.LaunchDialog; 23 | } 24 | } -------------------------------------------------------------------------------- /Assets/GameModifierData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class GameModifierData 6 | { 7 | public GameModifiers mod; 8 | public string modifierDescription; 9 | public bool enableAchievements; 10 | 11 | public GameModifierData(GameModifiers whichMod, bool chievos) 12 | { 13 | mod = whichMod; 14 | enableAchievements = chievos; 15 | } 16 | 17 | public string GetModifierDescription() 18 | { 19 | if (string.IsNullOrEmpty(modifierDescription)) 20 | { 21 | modifierDescription = StringManager.GetString("gamemods_" + mod.ToString().ToLowerInvariant()); 22 | } 23 | return modifierDescription; 24 | } 25 | } -------------------------------------------------------------------------------- /Assets/UITopArea.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | using UnityEngine.UI; 6 | 7 | [System.Serializable] 8 | public class UITopArea : MonoBehaviour { 9 | 10 | public TextMeshProUGUI charShortcut; 11 | public TextMeshProUGUI eqShortcut; 12 | public TextMeshProUGUI invShortcut; 13 | public TextMeshProUGUI skillShortcut; 14 | public TextMeshProUGUI rumorShortcut; 15 | public TextMeshProUGUI optionsShortcut; 16 | 17 | public TextMeshProUGUI[] shortcutText; 18 | 19 | void Start() 20 | { 21 | shortcutText = new TextMeshProUGUI[] { charShortcut, eqShortcut, invShortcut, skillShortcut, rumorShortcut, optionsShortcut }; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Assets/Introloop/Scripts/IntroloopLogger.cs: -------------------------------------------------------------------------------- 1 | /* 2 | /// Copyright (c) 2015 Sirawat Pitaksarit, Exceed7 Experiments LP 3 | /// http://www.exceed7.com/introloop 4 | */ 5 | 6 | using UnityEngine; 7 | using System.Collections; 8 | 9 | public static class IntroloopLogger { 10 | 11 | public static void Log(string logMessage) 12 | { 13 | if(IntroloopPlayer.Instance.introloopSettings.logInformation) 14 | { 15 | Debug.Log("[Introloop] " + logMessage); 16 | } 17 | } 18 | 19 | public static void LogError(string logMessage) 20 | { 21 | if(IntroloopPlayer.Instance.introloopSettings.logInformation) 22 | { 23 | Debug.Log("[Introloop] " + logMessage); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/README.md: -------------------------------------------------------------------------------- 1 | # UnityResolutionDialog 2 | 3 | ![Example Image](https://github.com/sitterheim/UnityResolutionDialog/blob/develop/example.png) 4 | 5 | Replacement for Unity's built-in resolution dialog (aka Screen Selector) that was removed in Unity 2019.3. Works both up front (simply make it the first scene) and as a popup dialog (default key: ESC). Intended for development / testing purposes but can also be used in production. 6 | 7 | # Installation 8 | Add this dependency to your ``manifest.json`` located at ``/Packages/manifest.json``: 9 | ``` 10 | { 11 | ... 12 | "dependencies": { 13 | ... 14 | "com.sitterheim.unityresolutiondialog": "https://github.com/sitterheim/UnityResolutionDialog.git#release/stable" 15 | } 16 | ... 17 | } 18 | ``` -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/NPCs/Shops/exp_shops.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | shop_randomany 5 | 6 | casino_1 7 | 1 8 | 1 9 | 99 10 | 25 11 | 30 12 | 0.75 13 | 3 14 | 0.1 15 | 1 16 | 0 17 | 18 | 10 19 | 120 20 | 200 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Assets/AutoRepoolSelf.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class AutoRepoolSelf : MonoBehaviour 6 | { 7 | public float timeUntilRepool = 5f; 8 | 9 | public string poolName; 10 | 11 | float timeAtEnable; 12 | 13 | bool waitingToGetRepooled; 14 | 15 | void OnEnable() 16 | { 17 | timeAtEnable = Time.time; 18 | waitingToGetRepooled = true; 19 | } 20 | 21 | // Update is called once per frame 22 | void Update() 23 | { 24 | if (!waitingToGetRepooled) return; 25 | 26 | if (Time.time - timeAtEnable >= timeUntilRepool) 27 | { 28 | waitingToGetRepooled = false; 29 | GameMasterScript.ReturnToStack(gameObject, poolName); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Assets/SimpleUICenterScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class SimpleUICenterScript : MonoBehaviour { 7 | 8 | int frames = 0; 9 | public bool xCenterOnly; 10 | RectTransform rt; 11 | 12 | // Use this for initialization 13 | void Start () { 14 | rt = gameObject.GetComponent(); 15 | } 16 | 17 | // Update is called once per frame 18 | void Update () { 19 | frames++; 20 | if (frames >= 5) 21 | { 22 | float yValue = rt.anchoredPosition.y; 23 | if (!xCenterOnly) 24 | { 25 | yValue = 0f; 26 | } 27 | rt.anchoredPosition = new Vector2(0f, yValue); 28 | frames = 0; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Assets/AutoDisableRenderer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class AutoDisableRenderer : MonoBehaviour 6 | { 7 | 8 | public SpriteRenderer myRenderer; 9 | 10 | public float disableAfterSeconds; 11 | 12 | float timeAtEnable; 13 | 14 | bool finished; 15 | 16 | /// 17 | /// This function is called when the object becomes enabled and active. 18 | /// 19 | void OnEnable() 20 | { 21 | timeAtEnable = Time.time; 22 | finished = false; 23 | } 24 | 25 | void Update() 26 | { 27 | if (finished) return;; 28 | if (Time.time - timeAtEnable >= disableAfterSeconds) 29 | { 30 | myRenderer.enabled = false; 31 | finished = true; 32 | } 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Assets/UIFilledBarScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using TMPro; 6 | 7 | [System.Serializable] 8 | public class UIFilledBarScript : MonoBehaviour { 9 | 10 | public Image fillbar; 11 | public Image iconRef; 12 | public TextMeshProUGUI textLabel; 13 | public TextMeshProUGUI textValue; 14 | 15 | // #todo - Cool bar animations, glimmers, shines etc 16 | 17 | public void UpdateFillAmount(float percentage) 18 | { 19 | percentage = Mathf.Clamp(percentage, 0f, 1f); 20 | fillbar.fillAmount = percentage; 21 | } 22 | 23 | public void SetLabel(string text) 24 | { 25 | textLabel.text = text; 26 | } 27 | 28 | public void SetTextValue(string text) 29 | { 30 | textValue.text = text; 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Assets/ParticleScript.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | public class ParticleScript : MonoBehaviour { 6 | 7 | private ParticleSystem ps; 8 | private Renderer rend; 9 | private float timer; 10 | 11 | public float lifetime; 12 | 13 | // Use this for initialization 14 | void Start () { 15 | ps = GetComponent(); 16 | rend = ps.GetComponent(); 17 | rend.sortingLayerName = "Foreground"; 18 | } 19 | 20 | void Awake () 21 | { 22 | timer = 0.0f; 23 | } 24 | 25 | // Update is called once per frame 26 | void Update () { 27 | if ((ps != null) && (lifetime > 0)) 28 | { 29 | timer += Time.deltaTime; 30 | if (timer >= lifetime) 31 | { 32 | Destroy(gameObject); 33 | } 34 | } 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/Scripts/Controller/FpsLabel.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | #pragma warning disable 0649 5 | 6 | namespace NewResolutionDialog.Scripts.Controller 7 | { 8 | public class FpsLabel : MonoBehaviour 9 | { 10 | [SerializeField] Text fpsLabel; 11 | [SerializeField] float updateRateSeconds = 0.5f; 12 | 13 | int frameCount = 0; 14 | float deltaTime = 0f; 15 | float fps = 0f; 16 | 17 | void Update() 18 | { 19 | frameCount++; 20 | deltaTime += Time.unscaledDeltaTime; 21 | if (deltaTime > updateRateSeconds) 22 | { 23 | fps = frameCount / deltaTime; 24 | frameCount = 0; 25 | deltaTime -= updateRateSeconds; 26 | } 27 | 28 | fpsLabel.text = string.Format("{0} fps", (int)(fps + 0.5f)); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Assets/Standard Assets/Editor/AssetBundleManager/Editor/AssetbundlesMenuItems.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System.Collections; 4 | 5 | namespace AssetBundles 6 | { 7 | public class AssetBundlesMenuItems 8 | { 9 | const string kSimulationMode = "Assets/AssetBundles/Simulation Mode"; 10 | 11 | [MenuItem(kSimulationMode)] 12 | public static void ToggleSimulationMode () 13 | { 14 | AssetBundleManager.SimulateAssetBundleInEditor = !AssetBundleManager.SimulateAssetBundleInEditor; 15 | } 16 | 17 | [MenuItem(kSimulationMode, true)] 18 | public static bool ToggleSimulationModeValidate () 19 | { 20 | Menu.SetChecked(kSimulationMode, AssetBundleManager.SimulateAssetBundleInEditor); 21 | return true; 22 | } 23 | 24 | [MenuItem ("Assets/AssetBundles/Build AssetBundles")] 25 | static public void BuildAssetBundles () 26 | { 27 | BuildScript.BuildAssetBundles(); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Assets/TDCharacterValidator.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | 6 | public class TDCharacterValidator : MonoBehaviour { 7 | 8 | static TMP_InputField myInputField; 9 | static TMP_FontAsset currentFont; 10 | 11 | void Awake() 12 | { 13 | if (myInputField == null) 14 | { 15 | myInputField = GetComponent(); 16 | } 17 | 18 | if (myInputField != null) 19 | { 20 | myInputField.onValidateInput = ValidateInput; 21 | } 22 | } 23 | 24 | static char ValidateInput(string text, int charIndex, char addedChar) 25 | { 26 | if (currentFont == null) 27 | { 28 | currentFont = FontManager.GetFontAsset(TDFonts.WHITE); 29 | } 30 | return currentFont.HasCharacter(addedChar) ? addedChar : '?'; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Assets/GameLogDynamicCanvasScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class GameLogDynamicCanvasScript : MonoBehaviour { 6 | 7 | public bool activeState = true; 8 | public CanvasGroup myCG; 9 | 10 | // Update is called once per frame 11 | void Update () { 12 | if (activeState && UIManagerScript.AnyInteractableWindowOpenExceptDialog()) 13 | { 14 | //Debug.Log("TURNED OFF"); 15 | activeState = false; 16 | myCG.alpha = 0f; 17 | myCG.blocksRaycasts = false; 18 | } 19 | if (!activeState && !UIManagerScript.AnyInteractableWindowOpenExceptDialog()) 20 | { 21 | //Debug.Log("TURNED ON"); 22 | activeState = true; 23 | myCG.alpha = 1f; 24 | myCG.blocksRaycasts = true; 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Assets/PetListButton.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using TMPro; 6 | 7 | [System.Serializable] 8 | public class PetListButton : MonoBehaviour { 9 | 10 | public int indexOfButtonInList; 11 | public Image parentImage; 12 | public Image childImage; 13 | public TextMeshProUGUI childButtonText; 14 | 15 | // Use this for initialization 16 | void Start () { 17 | 18 | } 19 | 20 | public void PopulateButtonContents(Monster petMon) 21 | { 22 | if (petMon == null) 23 | { 24 | Debug.Log("Pet button " + indexOfButtonInList + " cannot populate null monster obj."); 25 | return; 26 | } 27 | 28 | string monsterText = "" + petMon.displayName + ", " + StringManager.GetString("misc_xp_level") + " " + petMon.myStats.GetLevel() + " " + petMon.myTemplate.monsterName + "\n"; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Assets/HUDPetReadout.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using TMPro; 6 | 7 | [System.Serializable] 8 | public class HUDPetReadout : MonoBehaviour { 9 | 10 | public Monster attachedMonster; 11 | public Image monsterSprite; 12 | public TextMeshProUGUI nameText; 13 | public TextMeshProUGUI healthText; 14 | public TextMeshProUGUI turnsText; 15 | public Image healthBar; 16 | 17 | public void StartConversation() 18 | { 19 | if (attachedMonster == null) return; 20 | if (GameMasterScript.IsGameInCutsceneOrDialog()) return; 21 | PetPartyUIScript.StartPetBehaviorConversationFromRef(attachedMonster); 22 | } 23 | 24 | void Start() 25 | { 26 | FontManager.LocalizeMe(nameText, TDFonts.WHITE); 27 | FontManager.LocalizeMe(healthText, TDFonts.WHITE); 28 | FontManager.LocalizeMe(turnsText, TDFonts.WHITE); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Assets/TDScrollbarManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class TDScrollbarManager : MonoBehaviour { 6 | 7 | // Used for sub-windows within UI. If the mouse is in a special area, don't use normal TryScrollPool (etc) scrollbar calls. 8 | // In other words, this indicates if mouse is in a ScrollRect - override my custom functions 9 | public static bool mouseIsInSpecialScrollArea; 10 | 11 | public void MouseEnteredSpecialScrollArea() 12 | { 13 | mouseIsInSpecialScrollArea = true; 14 | } 15 | 16 | public void MouseExitedSpecialScrollArea() 17 | { 18 | mouseIsInSpecialScrollArea = false; 19 | } 20 | 21 | public static void SMouseEnteredSpecialScrollArea() 22 | { 23 | mouseIsInSpecialScrollArea = true; 24 | } 25 | 26 | public static void SMouseExitedSpecialScrollArea() 27 | { 28 | mouseIsInSpecialScrollArea = false; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Assets/JobAbilButtonScript.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | using System.Collections; 4 | 5 | public class JobAbilButtonScript : MonoBehaviour { 6 | 7 | Button myButton; 8 | public int myID; 9 | public bool knownSkillList; 10 | 11 | // Use this for initialization 12 | void Start() 13 | { 14 | myButton = GetComponent(); 15 | //myButton.onClick.AddListener(delegate () { ButtonClicked(); }); 16 | } 17 | 18 | public void ButtonClicked() 19 | { 20 | if (!knownSkillList) { 21 | UIManagerScript.SetJobAbilityListPosition(myID); 22 | //UIManagerScript.singletonUIMS.TryLearnJobAbility(myID); // Does this need to pass my ID? 23 | } 24 | else { 25 | UIManagerScript.SetJobAbilityListPosition(myID); 26 | UIManagerScript.DialogCursorConfirm(); 27 | } 28 | } 29 | 30 | void Destroy() 31 | { 32 | myButton.onClick.RemoveAllListeners(); 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/Scripts/Controller/CreateEventSystemIfNoneExists.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.EventSystems; 3 | 4 | namespace NewResolutionDialog.Scripts.Controller 5 | { 6 | [ExecuteInEditMode] 7 | public class CreateEventSystemIfNoneExists : MonoBehaviour 8 | { 9 | private void Awake() 10 | { 11 | // in case prefab gets dropped onto a scene, check if an event system exists and if not, create one 12 | // this is to avoid any issues due to a scene not having an event system because adding prefabs to a scene 13 | // apparently doesn't add the event system even if the prefab contains a canvas with UI controls 14 | if (FindObjectOfType() == null) 15 | { 16 | new GameObject("EventSystem", typeof(EventSystem), typeof(StandaloneInputModule)); 17 | Debug.Log("NewResolutionDialog added 'EventSystem' to Scene."); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Assets/TDSceneManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.SceneManagement; 5 | 6 | public class TDSceneManager : MonoBehaviour 7 | { 8 | public static string bufferDestinationScene; 9 | 10 | void Start() 11 | { 12 | StartCoroutine(WaitThenActuallySwitchScenes()); 13 | } 14 | 15 | IEnumerator WaitThenActuallySwitchScenes() 16 | { 17 | yield return new WaitForEndOfFrame(); 18 | SceneManager.LoadScene(bufferDestinationScene); 19 | } 20 | 21 | public static void LoadScene(string sceneName) 22 | { 23 | bufferDestinationScene = sceneName; 24 | SceneManager.LoadScene("BufferScene"); 25 | //SceneManager.LoadScene(sceneName); 26 | } 27 | 28 | public static AsyncOperation LoadSceneAsync(string sceneName) 29 | { 30 | bufferDestinationScene = sceneName; 31 | return SceneManager.LoadSceneAsync("BufferScene"); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Assets/SnackBagUIScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using System; 6 | 7 | public class SnackBagUIScript : MonoBehaviour { 8 | 9 | public static SnackBagUIScript singleton; 10 | 11 | public void OpenSnackBagUIFromButton(int dummy) 12 | { 13 | if (GameMasterScript.IsGameInCutsceneOrDialog()) return; 14 | 15 | UIManagerScript.singletonUIMS.CloseHotbarNavigating(); 16 | OpenSnackBagUI(); 17 | } 18 | 19 | public void OpenSnackBagUI() 20 | { 21 | if (GameMasterScript.IsGameInCutsceneOrDialog()) return; 22 | 23 | //Debug.Log("Sort snack bag inventory."); 24 | GameMasterScript.heroPCActor.myInventory.SortMyInventory(InventorySortTypes.CONSUMABLETYPE, true, false); 25 | 26 | UIManagerScript.OpenSnackBagFullScreenUI(); 27 | } 28 | 29 | // Use this for initialization 30 | void Start () { 31 | singleton = this; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Assets/Switch_SaveIconDisplay.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class Switch_SaveIconDisplay : MonoBehaviour 7 | { 8 | public Image myImage; 9 | public Animatable myAnim; 10 | 11 | private static Switch_SaveIconDisplay _instance; 12 | 13 | public void Start() 14 | { 15 | if (_instance != null) 16 | { 17 | Destroy(gameObject); 18 | return; 19 | } 20 | 21 | //Debug.Log("SaveIcon Start"); 22 | _instance = this; 23 | _instance.enabled = true; 24 | 25 | } 26 | 27 | public static void Hide() 28 | { 29 | //if (Debug.isDebugBuild) Debug.Log("HIDE save icon display at " + Time.realtimeSinceStartup); 30 | _instance.myImage.enabled = false; 31 | } 32 | 33 | public static void Show() 34 | { 35 | //if (Debug.isDebugBuild) Debug.Log("SHOW save icon display at " + Time.realtimeSinceStartup); 36 | _instance.myImage.enabled = true; 37 | _instance.myAnim.SetAnim("Default"); 38 | } 39 | } -------------------------------------------------------------------------------- /Assets/analog_move_tutorial.manifest: -------------------------------------------------------------------------------- 1 | ManifestFileVersion: 0 2 | CRC: 3415009808 3 | Hashes: 4 | AssetFileHash: 5 | serializedVersion: 2 6 | Hash: 6046c6e942abe93593398a60971205c9 7 | TypeTreeHash: 8 | serializedVersion: 2 9 | Hash: 835ce58ae5c997f0c657e7aff4cae416 10 | HashAppended: 0 11 | ClassTypes: 12 | - Class: 1 13 | Script: {instanceID: 0} 14 | - Class: 28 15 | Script: {instanceID: 0} 16 | - Class: 114 17 | Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 18 | - Class: 114 19 | Script: {fileID: 11500000, guid: 6852f3cc0f78fb841ad1a7850a8e7756, type: 3} 20 | - Class: 115 21 | Script: {instanceID: 0} 22 | - Class: 213 23 | Script: {instanceID: 0} 24 | - Class: 222 25 | Script: {instanceID: 0} 26 | - Class: 224 27 | Script: {instanceID: 0} 28 | Assets: 29 | - Assets/Resources/Art/UI/tutorial_analog_movement.png 30 | - Assets/Resources/ShepPrefabs/prefab_tutorial_showstickmoveimage.prefab 31 | - Assets/Resources/Art/UI/tutorial_movement_main.png 32 | Dependencies: [] 33 | -------------------------------------------------------------------------------- /Assets/radialmenu_object.manifest: -------------------------------------------------------------------------------- 1 | ManifestFileVersion: 0 2 | CRC: 2499585566 3 | Hashes: 4 | AssetFileHash: 5 | serializedVersion: 2 6 | Hash: 42112ed736b92d2dcaf6b04e162278ce 7 | TypeTreeHash: 8 | serializedVersion: 2 9 | Hash: 0dade847ade8e932804962bc9249ae59 10 | HashAppended: 0 11 | ClassTypes: 12 | - Class: 1 13 | Script: {instanceID: 0} 14 | - Class: 114 15 | Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 16 | - Class: 114 17 | Script: {fileID: 11500000, guid: 8d1359148ee9b344e97149dfa607fc38, type: 3} 18 | - Class: 114 19 | Script: {fileID: 11500000, guid: 462c2bb4753875d459378b93e0fe774e, type: 3} 20 | - Class: 115 21 | Script: {instanceID: 0} 22 | - Class: 213 23 | Script: {instanceID: 0} 24 | - Class: 222 25 | Script: {instanceID: 0} 26 | - Class: 224 27 | Script: {instanceID: 0} 28 | Assets: 29 | - Assets/Resources/ShepPrefabs/Switch_RadialMenu.prefab 30 | Dependencies: 31 | - C:/TangledeepSwitch/TangledeepSwitchFall2018/AssetBundles/Switch/radialmenu_assets 32 | -------------------------------------------------------------------------------- /Assets/Introloop/Scripts/ImportantIntAttribute.cs: -------------------------------------------------------------------------------- 1 | /* 2 | /// Copyright (c) 2015 Sirawat Pitaksarit, Exceed7 Experiments LP 3 | /// http://www.exceed7.com/introloop 4 | */ 5 | 6 | #if UNITY_EDITOR 7 | using UnityEditor; 8 | #endif 9 | using UnityEngine; 10 | 11 | public class ImportantIntAttribute : PropertyAttribute { 12 | 13 | public readonly string unit; 14 | public readonly int stepSize; 15 | 16 | public ImportantIntAttribute () 17 | { 18 | this.stepSize = 1; 19 | } 20 | 21 | public ImportantIntAttribute (int stepSize) 22 | { 23 | this.stepSize = stepSize; 24 | } 25 | 26 | public ImportantIntAttribute (string unit) 27 | { 28 | this.unit = unit; 29 | } 30 | 31 | public ImportantIntAttribute (string unit, int stepSize) 32 | { 33 | this.unit = unit; 34 | this.stepSize = stepSize; 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /Assets/GridPrefabFollower.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | [System.Serializable] 5 | public class GridPrefabFollower : MonoBehaviour { 6 | 7 | public float xOffset; 8 | public float yOffset; 9 | public bool quantizer; 10 | 11 | // Use this for initialization 12 | void Start () { 13 | //mc = GameObject.Find("Main Camera"); 14 | } 15 | 16 | // Update is called once per frame 17 | void Update () { 18 | gameObject.transform.rotation = Quaternion.identity; 19 | return; 20 | /* 21 | if (mc != null) 22 | { 23 | if (((quantizer) && (mc.transform.position.x % 0.5f <= 0.001f)) || (!quantizer)) 24 | { 25 | pos = mc.transform.position; 26 | pos.x += xOffset; 27 | pos.y += yOffset; 28 | pos.z = 0; 29 | transform.position = pos; 30 | gameObject.transform.rotation = Quaternion.identity; 31 | } 32 | } 33 | */ 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/Dialogs/XML/dialog_shara_preboss2_banditshelp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | dialog_shara_preboss2_banditshelp 5 | 1 6 | 1 7 | 1 8 | 1 9 | 10 | main 11 | BanditNeutralPortrait 12 | dialog_shara_preboss2_banditshelp_1 13 | 17 | 18 | 19 | 20 | main2 21 | SharaSmugPortrait 22 | dialog_shara_preboss2_banditshelp_2 23 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Assets/ScriptableObject_MusicData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | //Tangledeep specific info that wraps around a IntroloopAudioObject 6 | public class ScriptableObject_MusicData : ScriptableObject 7 | { 8 | [SerializeField] 9 | [Tooltip("The .wav to play.")] 10 | public AudioClip clip; 11 | 12 | [SerializeField] 13 | [Tooltip("Friendly name for track reference, ex (dungeontheme1)")] 14 | public string strReference; 15 | 16 | [SerializeField] 17 | [Tooltip("File name for actual track, ex (IRL DungeonMusic1 LP)")] 18 | public string strFileName; 19 | 20 | [SerializeField] 21 | [Tooltip("Should be added to the DungeonMusic list")] 22 | public bool isDungeonTrack; 23 | 24 | [SerializeField] 25 | [Tooltip("And if so, what is the minimum floor for this music to be played on?")] 26 | public int iMinimumFloor; 27 | 28 | [SerializeField] 29 | [Tooltip("Should be added to the ItemDream list")] 30 | public bool isItemDream; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Assets/OptionsUISliderComponent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class OptionsUISliderComponent : MonoBehaviour 7 | { 8 | public Slider mySlider; 9 | 10 | // Use this for initialization 11 | void Start () 12 | { 13 | mySlider.enabled = false; 14 | } 15 | 16 | // Update is called once per frame 17 | void Update () 18 | { 19 | 20 | } 21 | 22 | public void OnPointerEnter() 23 | { 24 | mySlider.enabled = true; 25 | 26 | //disable the focus if we're not it. This fixes the weirdness 27 | //players might see if they are bouncing from keyboard control 28 | //to mouse control. It will disable any other sliders 29 | //that have a highlight over them. 30 | if (UIManagerScript.highlightedOptionsObject != gameObject) 31 | { 32 | UIManagerScript.singletonUIMS.DeselectOptionsSlider(0); 33 | } 34 | } 35 | 36 | public void OnPointerExit() 37 | { 38 | mySlider.enabled = false; 39 | } 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Assets/LanguageSelectorButton.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | [System.Serializable] 7 | public class LanguageSelectorButton : MonoBehaviour { 8 | 9 | public EGameLanguage lang; 10 | public LanguageSelector parent; 11 | public Image myImage; 12 | public bool isVectorFont; 13 | 14 | public Sprite GetSprite() 15 | { 16 | return myImage.sprite; 17 | } 18 | 19 | public void OnClick() 20 | { 21 | TDPlayerPrefs.SetString(GlobalProgressKeys.LANGUAGE, lang.ToString()); 22 | StringManager.SetGameLanguage(lang); 23 | parent.OnLanguageSelected(); 24 | PlayerOptions.WriteOptionsToFile(); 25 | TDPlayerPrefs.Save(); 26 | } 27 | 28 | public void OnClick_JP(int value) 29 | { 30 | TDPlayerPrefs.SetInt(GlobalProgressKeys.VECTOR_JP, value); 31 | OnClick(); 32 | } 33 | 34 | public void OnClick_CN(int value) 35 | { 36 | TDPlayerPrefs.SetInt(GlobalProgressKeys.VECTOR_CN, 1); 37 | OnClick(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/Localization/perchance_mystery_item_flavor_table_jp_japan.txt: -------------------------------------------------------------------------------- 1 | output 2 | [opening][feeling][ending] 3 | 4 | opening 5 | [noun]にこれをもらった。 6 | [noun]が...これを私に。 7 | 旅の途中で見つけたもの。 8 | 気づいたら...これがリュックに入っていた。 9 | [noun]から受け取ったもの。 10 | [noun]が持っていけって。 11 | [noun]にもらったもの。 12 | [noun]からのプレゼント。 13 | [noun]が...渡してきたもの。 14 | [noun]が...冒険に役立てろって。 15 | これをくれたのは[noun]だった。 16 | [noun]からの贈りもの。 17 | 18 | feeling 19 | すごく寂しい場所で... 20 | なぜか孤独を感じて... 21 | すごく寒いところで... 22 | なぜか胸が暖かくなって... 23 | すごく懐かしい気がして... 24 | 他には誰もいなくて... 25 | 状況はよく...覚えてない... 26 | あの時はなぜか...ゾクッとして... 27 | どういうわけか、虚しさを感じて... 28 | よくわからないけど、不安に駆られて... 29 | なぜか見覚えのある場所で... 30 | あの時はすごく...複雑な気分で... 31 | 32 | ending 33 | 他には何も思い出せない。 34 | うまく言い表せない。 35 | あれは何だったんだろう? 36 | これってすごく...興味深いわ! 37 | 不思議なものね。 38 | あれって夢だったのかな? 39 | 不思議だけど...こういうことってあるのね。 40 | だめ...うまく思い出せないわ。 41 | あの感覚は...言葉にできない。 42 | 夢の中にいるみたいだった。 43 | すべてが漠然としていたの... 44 | 妙ね...まるで自分の記憶じゃないみたい。 45 | 46 | noun 47 | クールフロッグ 48 | シャラ 49 | キンピカエル 50 | 見知らぬ人 51 | 大きな影 52 | しゃべる鳥 53 | ダートビーク 54 | ケイティ 55 | 汚れたロボット 56 | 品のある老人 57 | 歩くカカシ 58 | 通りすがりの人 -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC2/NPCs/XML/exp2_npcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | exp_mon_frogdragon_name 5 | npc_babyfrogking 6 | BabyFrogDragon 7 | exp_dialog_frogking_town 8 | 1 9 | 1 10 | 11 | 12 | 13 | npc_npc_pinkslimepet_name 14 | npc_jellyboo_introdragon 15 | PinkSlime 16 | 1 17 | 18 | 19 | 20 | exp_npc_realjellydragon_name 21 | npc_jellyboo_beatdragon 22 | PinkSlime 23 | slimedragon_postvictory 24 | 1 25 | 1 26 | 27 | 28 | 29 | ???? 30 | npc_hologram 31 | MiraiHologram 32 | 1 33 | 34 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Steffen Itterheim 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 | -------------------------------------------------------------------------------- /Assets/SpriteChildVisibility.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class SpriteChildVisibility : MonoBehaviour { 6 | 7 | SpriteRenderer mySR; 8 | bool mySRFound; 9 | SpriteRenderer myParentSR; 10 | bool parentSRFound; 11 | 12 | // Update is called once per frame 13 | void Update () 14 | { 15 | if (!mySRFound) 16 | { 17 | mySR = GetComponent(); 18 | if (mySR != null) 19 | { 20 | mySRFound = true; 21 | } 22 | } 23 | if (!mySRFound) return; 24 | if (transform.parent == null) return; 25 | if (!parentSRFound) 26 | { 27 | myParentSR = transform.parent.GetComponent(); 28 | if (myParentSR != null) 29 | { 30 | parentSRFound = true; 31 | } 32 | } 33 | if (!parentSRFound) 34 | { 35 | return; 36 | } 37 | 38 | // Just have our renderer track our parent's renderer. Simple! 39 | mySR.enabled = myParentSR.enabled; 40 | 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Assets/SwitchInputFieldCommunicator.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | #if UNITY_SWITCH 6 | using nn.hid; 7 | #endif 8 | 9 | public class SwitchInputFieldCommunicator : MonoBehaviour 10 | { 11 | #if UNITY_SWITCH 12 | private NpadId npadId = NpadId.Invalid; 13 | private NpadState npadState = new NpadState(); 14 | private nn.swkbd.ShowKeyboardArg showKeyboardArg; 15 | #endif 16 | 17 | private void Start() 18 | { 19 | #if UNITY_SWITCH 20 | Npad.Initialize(); 21 | Npad.SetSupportedStyleSet(NpadStyle.Handheld | NpadStyle.JoyDual | NpadStyle.FullKey); 22 | NpadId[] npadIds = { NpadId.Handheld, NpadId.No1 }; 23 | Npad.SetSupportedIdType(npadIds); 24 | 25 | nn.swkbd.Swkbd.Initialize(ref showKeyboardArg, false, true); 26 | #endif 27 | } 28 | 29 | public void OnContentsChanged() 30 | { 31 | return; 32 | #if !UNITY_SWITCH 33 | return; 34 | #else 35 | if (UIManagerScript.textInputFieldIsActivated) 36 | { 37 | UIManagerScript.DeactivateTextInputField(); 38 | } 39 | #endif 40 | 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Assets/WrathBarScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class WrathBarScript : MonoBehaviour { 7 | 8 | public SpriteRenderer[] wrathCounters; 9 | 10 | 11 | public void SetWrathCharges(int num) 12 | { 13 | if (num < 0) num = 0; 14 | if (num > 5) num = 5; 15 | 16 | for (int i = 0; i < 5; i++) 17 | { 18 | wrathCounters[i].color = UIManagerScript.transparentColor; 19 | } 20 | 21 | for (int i = 0; i < 5; i++) 22 | { 23 | if (i < num) 24 | { 25 | wrathCounters[i].color = Color.white; 26 | } 27 | } 28 | } 29 | 30 | public void UpdateWrathCount(int amount) 31 | { 32 | if (!GameMasterScript.gameLoadSequenceCompleted) return; 33 | SetWrathCharges(amount); 34 | } 35 | 36 | public void ToggleWrathBar(bool state) 37 | { 38 | gameObject.SetActive(state); 39 | if (state && wrathCounters[0] == null) 40 | { 41 | Debug.Log("Wrath counter 1 is null"); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Assets/ConditionalLocalizeToChineseFont.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | 6 | public class ConditionalLocalizeToChineseFont : MonoBehaviour 7 | { 8 | 9 | bool checkedForChina; 10 | 11 | private void OnEnable() 12 | { 13 | TryLocalize(); 14 | } 15 | 16 | private void Start() 17 | { 18 | TryLocalize(); 19 | } 20 | 21 | void TryLocalize() 22 | { 23 | if (checkedForChina) return; 24 | 25 | if (StringManager.gameLanguage != EGameLanguage.zh_cn) 26 | { 27 | return; 28 | } 29 | 30 | TextMeshProUGUI localTMPro = GetComponent(); 31 | 32 | if (localTMPro == null) 33 | { 34 | return; 35 | } 36 | 37 | FontManager.LocalizeMe(localTMPro, TDFonts.WHITE); 38 | 39 | float sizeMax = localTMPro.fontSizeMax; 40 | sizeMax += 2f; 41 | localTMPro.fontSizeMax = sizeMax; 42 | 43 | float size = localTMPro.fontSize; 44 | size += 2f; 45 | localTMPro.fontSize = size; 46 | 47 | localTMPro.fontStyle = FontStyles.Normal; 48 | 49 | //checkedForChina = true; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Assets/MusicTrackData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class MusicTrackData 6 | { 7 | public AudioClip clip; 8 | public string trackFileName; 9 | public string refName; 10 | public int loopPoint; 11 | public bool looping; 12 | public int index; 13 | public string bundleName; 14 | 15 | //data to help select tracks when exploring areas that don't have 16 | //predefined tracks 17 | public bool isDungeonTrack; 18 | public bool isItemDreamTrack; 19 | public int iMinimumFloor; 20 | 21 | private static int iNextIndex = 0; 22 | public MusicTrackData(string filename, string reference, int loop, string bun = "audio") 23 | { 24 | trackFileName = filename; 25 | refName = reference; 26 | loopPoint = loop; 27 | looping = true; 28 | bundleName = bun; 29 | } 30 | 31 | public MusicTrackData(ScriptableObject_MusicData scmd) 32 | { 33 | clip = scmd.clip; 34 | trackFileName = scmd.strFileName; 35 | refName = scmd.strReference; 36 | isDungeonTrack = scmd.isDungeonTrack; 37 | isItemDreamTrack = scmd.isItemDream; 38 | iMinimumFloor = scmd.iMinimumFloor; 39 | 40 | bundleName = "music_" + refName.ToLower(); 41 | } 42 | } -------------------------------------------------------------------------------- /Assets/ResolutionDialog/Scripts/Controller/ButtonHandler.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.SceneManagement; 3 | using UnityEngine.UI; 4 | 5 | #pragma warning disable 0649 6 | 7 | namespace NewResolutionDialog.Scripts.Controller 8 | { 9 | public class ButtonHandler : MonoBehaviour 10 | { 11 | [SerializeField] Settings settings; 12 | [SerializeField] Button playButton; 13 | [SerializeField] Button quitButton; 14 | [SerializeField] Button closeButton; 15 | 16 | private void OnEnable() 17 | { 18 | var isLaunchScene = settings.dialogStyle == ResolutionDialogStyle.LaunchDialog; 19 | playButton.gameObject.SetActive(isLaunchScene); 20 | //quitButton.gameObject.SetActive(isLaunchScene); 21 | //closeButton.gameObject.SetActive(!isLaunchScene); 22 | } 23 | 24 | public void OnPlay() 25 | { 26 | // just load the next scene in the "included in build" scenes list 27 | SceneManager.LoadScene("Logos"); 28 | } 29 | 30 | public void OnQuit() 31 | { 32 | // either quit or leave pl ay mode 33 | #if UNITY_EDITOR 34 | UnityEditor.EditorApplication.isPlaying = false; 35 | #else 36 | Application.Quit(); 37 | #endif 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Assets/exp_abilities_monster.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | skill_expmon_healingwave_name 5 | skill_expmon_healingwave 6 | 4 7 | RECT 8 | 2 9 | 12 10 | INSTANT,TARGETED,TVISIBLEONLY,PERTARGETANIM,MONSTERAFFECTED,CENTERED,CURSORTARGET,SIMULTANEOUSANIM,LINEOFSIGHTREQ 11 | ALLY 12 | HEALHP 13 | 14 | CHANGESTAT 15 | chemistheal2 16 | ALL 17 | MYFACTION 18 | FervirRecovery,0.4 19 | 0.25 20 | 3|6 21 | HEALTH 22 | CUR 23 | 24 | 25 | 26 | 27 | 28 | abil_skill_fireburst_name 29 | skill_expmon_fireburstweaker 30 | 2 31 | 7 32 | INSTANT,TARGETED,TVISIBLEONLY,PERTARGETANIM,HEROAFFECTED,CENTERED,LINEOFSIGHTREQ,PLAYANIMONEMPTY,OVERRIDECHILDSFX,MONSTERFIXEDPOS 33 | 1 34 | BURST 35 | ENEMY 36 | ArtillerySFX 37 | fireburstclose 38 | 39 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/Scripts/Controller/PopupHandler.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.SceneManagement; 3 | using UnityEngine.UI; 4 | 5 | #pragma warning disable 0649 6 | 7 | namespace NewResolutionDialog.Scripts.Controller 8 | { 9 | /// 10 | /// Shows the popup at Start if the is set to 11 | /// 12 | /// 13 | /// 14 | /// 15 | public class PopupHandler : MonoBehaviour 16 | { 17 | [SerializeField] 18 | private Settings settings; 19 | 20 | [SerializeField] 21 | private Canvas dialogCanvas; 22 | 23 | public Toggle showAtNextLaunchToggle; 24 | 25 | private void Start() 26 | { 27 | dialogCanvas.enabled = settings.dialogStyle == ResolutionDialogStyle.LaunchDialog; 28 | } 29 | 30 | private void Awake() 31 | { 32 | if (PlayerPrefs.GetInt("skip_checkbox") == 1) 33 | { 34 | SceneManager.LoadScene("Logos"); 35 | } 36 | } 37 | 38 | public void OnToggleChanged() 39 | { 40 | PlayerPrefs.SetInt("skip_checkbox", showAtNextLaunchToggle.isOn ? 0 : 1); 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/StatusEffects/BakedStatusEffectDefinitions_DLC1.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class BakedStatusEffectDefinitions 6 | { 7 | // These status definitions are very simple and we don't need to take up XML space with them. 8 | // This function runs after the main LoadAllStatuses call runs. 9 | 10 | static readonly string[] permaBuffNoRunStatusesDLC1 = new string[] 11 | { 12 | "exp_status_improveddominate", 13 | "exp_status_necessarysacrifice", 14 | "dualwielderbonus2", 15 | "dualwielderbonus3", 16 | "emblem_dualwielderemblem_tier0_biography", 17 | "emblem_dualwielderemblem_tier1_glide", 18 | "relichunter", 19 | "menagerie", 20 | "treasuretracker", 21 | "scholar" 22 | }; 23 | 24 | static readonly string[] permaBuffNoRunStatusMultiDLC = new string[] 25 | { 26 | "dualwielderbonus1" 27 | }; 28 | 29 | public static void AddAllBakedStatusDefinitions_DLC1() 30 | { 31 | //if (DLCManager.CheckDLCInstalled(EDLCPackages.EXPANSION1)) 32 | { 33 | foreach (string abilRef in permaBuffNoRunStatusesDLC1) 34 | { 35 | SetupPermaBuffNoRunStatus(abilRef); 36 | } 37 | } 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Assets/UIManagerScript_PrettyLoading.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class UIManagerScript 6 | { 7 | static void DoLoadPrettyLoadingScreen() 8 | { 9 | //:( 10 | if (GameMasterScript.gmsSingleton == null || 11 | GameMasterScript.gmsSingleton.titleScreenGMS) 12 | { 13 | return; 14 | } 15 | 16 | if (PlatformVariables.LOAD_EVERYTHING_FROM_ASSET_BUNDLES) 17 | { 18 | var AB = TDAssetBundleLoader.GetBundleIfExists("nowloading_object"); 19 | var go = AB.LoadAsset("prefab_loadinglogo"); 20 | if (UIManagerScript.prettyLoadingArtComponent == null) 21 | { 22 | UIManagerScript.prettyLoadingArtComponent = Instantiate(go).GetComponent(); 23 | } 24 | } 25 | 26 | TurnOnPrettyLoading(); 27 | } 28 | 29 | public static void TurnOnPrettyLoading(float fFadeTime = 0f, float fillPerSecondTime = 0.2f) 30 | { 31 | prettyLoadingArtComponent.TurnOn(fFadeTime, fillPerSecondTime); 32 | } 33 | 34 | public static void TurnOffPrettyLoading(float fFadeTime = 0f, float fDelayBeforeFade = 0f) 35 | { 36 | prettyLoadingArtComponent.TurnOff(fFadeTime, fDelayBeforeFade); 37 | } 38 | } -------------------------------------------------------------------------------- /Assets/UIManagerScript_LoadingBar.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class UIManagerScript 6 | { 7 | public static void ToggleLoadingBar() 8 | { 9 | loadingGroup.GetComponent().alpha = Mathf.Abs(1.0f - loadingGroup.GetComponent().alpha); 10 | if (loadingGroup.GetComponent().alpha == 0f) 11 | { 12 | loadingGroup.SetActive(false); 13 | } 14 | else 15 | { 16 | loadingGroup.SetActive(true); 17 | } 18 | } 19 | 20 | public static void DisableLoadingBar() 21 | { 22 | //loadingGroup.SetActive(false); 23 | } 24 | 25 | public static void WriteLoadingText(string text) 26 | { 27 | prettyLoadingArtComponent.SetTextString(text, true); 28 | //loadingBarText.text = text; 29 | } 30 | 31 | public static void FillLoadingBar(float percent) 32 | { 33 | prettyLoadingArtComponent.SetFillRatio(percent); 34 | //loadingBar.fillAmount = percent; 35 | } 36 | 37 | public static void MoveLoadingBar(float percent) 38 | { 39 | prettyLoadingArtComponent.AdjustFillRatio(percent); 40 | } 41 | 42 | public static float GetLoadingBarFillValue() 43 | { 44 | return prettyLoadingArtComponent.GetFillRatio(); 45 | } 46 | } -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC2/StatusEffects/BakedStatusEffectDefinitions_DLC2.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class BakedStatusEffectDefinitions 6 | { 7 | static readonly string[] permaBuffNoRunStatusesDLC2 = new string[] 8 | { 9 | "whipmastery3", 10 | "xp2_echoingattack", 11 | "xp2_absorbingshield", 12 | //"xp2_zookeeper", 13 | "xp2_ricochet", 14 | "xp2_legends", 15 | "xp2_grandmaster", 16 | "xp2_dragons", 17 | "xp2_hydrating", 18 | "xp2_battlemage" 19 | }; 20 | 21 | static readonly HashSet dlc2statusesThatShouldStack = new HashSet 22 | { 23 | "xp2_dragons", 24 | "xp2_hydrating" 25 | }; 26 | 27 | public static void AddAllBakedStatusDefinitions_DLC2() 28 | { 29 | if (DLCManager.CheckDLCInstalled(EDLCPackages.EXPANSION2)) 30 | { 31 | foreach (string abilRef in permaBuffNoRunStatusesDLC2) 32 | { 33 | StatusEffect se = SetupPermaBuffNoRunStatus(abilRef); 34 | if (dlc2statusesThatShouldStack.Contains(abilRef)) 35 | { 36 | se.stackMultipleEffects = true; 37 | se.stackMultipleDurations = false; 38 | } 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Assets/Pathfinding.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using UnityEngine; 6 | 7 | 8 | public class Pathfinding 9 | { 10 | public static PFNode TileToNode(MapTileData mtd, Actor act) 11 | { 12 | PFNode pf = new PFNode(); 13 | pf.x = (int)mtd.pos.x; 14 | pf.y = (int)mtd.pos.y; 15 | if (mtd.tileType == TileTypes.WALL) pf.wall = true; 16 | else if (mtd.IsUnbreakableCollidable(act)) 17 | { 18 | pf.wall = true; 19 | } 20 | pf.lava = mtd.CheckTag(LocationTags.LAVA); 21 | pf.water = mtd.CheckTag(LocationTags.WATER); 22 | pf.mud = mtd.CheckTag(LocationTags.MUD); 23 | pf.elec = mtd.CheckTag(LocationTags.ELECTRIC); 24 | 25 | return pf; 26 | } 27 | 28 | public static PFNode GetNeighbor(Directions dir) 29 | { 30 | switch(dir) 31 | { 32 | case Directions.NORTH: 33 | 34 | break; 35 | } 36 | return null; 37 | } 38 | } 39 | 40 | public class PFNode 41 | { 42 | public int x; 43 | public int y; 44 | public int g; 45 | public int f; 46 | public int h; 47 | public bool wall; 48 | public bool open; 49 | public bool closed; 50 | public bool lava; 51 | public bool mud; 52 | public bool elec; 53 | public bool water; 54 | public PFNode parent; 55 | public PFNode child; 56 | } 57 | 58 | -------------------------------------------------------------------------------- /Assets/TDExpansion.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class TDExpansion : MonoBehaviour { 6 | 7 | public static bool IsExpansionActive(int expNumber) 8 | { 9 | return false; 10 | } 11 | 12 | public static void VerifyExpansionStuffOnLoad() 13 | { 14 | if (!IsExpansionActive(0)) return; 15 | /* if (GameMasterScript.heroPCActor.ReadActorData("boss4fight_phase2") >= 2 || // Beat final boss on this character. 16 | GameMasterScript.gmsSingleton.statsAndAchievements.stat_boss4defeated >= 1 || // Have the achievement 17 | MetaProgressScript.ReadMetaProgress("boss4fight_phase2") >= 2) 18 | { 19 | if (!GameMasterScript.heroPCActor.myInventory.HasItemByRef("item_sharaorb")) 20 | { 21 | Item orb = LootGeneratorScript.CreateItemFromTemplateRef("item_sharaorb", 1.0f, 0f, false); 22 | GameMasterScript.heroPCActor.myInventory.AddItemRemoveFromPrevCollection(orb, false); 23 | StringManager.SetTag(0, orb.displayName); 24 | StringManager.SetTag(1, orb.displayName); 25 | GameLogScript.LogWriteStringRef("log_corral_pickup"); 26 | } 27 | } */ 28 | } 29 | 30 | // Use this for initialization 31 | void Start () { 32 | 33 | } 34 | 35 | // Update is called once per frame 36 | void Update () { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Assets/Resources/ShepPrefabs/CSCBlockHolder.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1612204098233052} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1612204098233052 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224336489030337158} 22 | m_Layer: 5 23 | m_Name: CSCBlockHolder 24 | m_TagString: Untagged 25 | m_Icon: {fileID: 0} 26 | m_NavMeshLayer: 0 27 | m_StaticEditorFlags: 0 28 | m_IsActive: 1 29 | --- !u!224 &224336489030337158 30 | RectTransform: 31 | m_ObjectHideFlags: 1 32 | m_PrefabParentObject: {fileID: 0} 33 | m_PrefabInternal: {fileID: 100100000} 34 | m_GameObject: {fileID: 1612204098233052} 35 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 36 | m_LocalPosition: {x: 0, y: 0, z: 0} 37 | m_LocalScale: {x: 1, y: 1, z: 1} 38 | m_Children: [] 39 | m_Father: {fileID: 0} 40 | m_RootOrder: 0 41 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 42 | m_AnchorMin: {x: 0, y: 1} 43 | m_AnchorMax: {x: 0, y: 1} 44 | m_AnchoredPosition: {x: 72, y: -72} 45 | m_SizeDelta: {x: 100, y: 100} 46 | m_Pivot: {x: 0.5, y: 0.5} 47 | -------------------------------------------------------------------------------- /Assets/Resources/ShepPrefabs/SubmenuAnchorObject.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1679549399642864} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1679549399642864 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224639704920211248} 22 | m_Layer: 5 23 | m_Name: SubmenuAnchorObject 24 | m_TagString: Untagged 25 | m_Icon: {fileID: 0} 26 | m_NavMeshLayer: 0 27 | m_StaticEditorFlags: 0 28 | m_IsActive: 1 29 | --- !u!224 &224639704920211248 30 | RectTransform: 31 | m_ObjectHideFlags: 1 32 | m_PrefabParentObject: {fileID: 0} 33 | m_PrefabInternal: {fileID: 100100000} 34 | m_GameObject: {fileID: 1679549399642864} 35 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 36 | m_LocalPosition: {x: 0, y: 0, z: 0} 37 | m_LocalScale: {x: 1.000005, y: 1.000005, z: 1.000005} 38 | m_Children: [] 39 | m_Father: {fileID: 0} 40 | m_RootOrder: 0 41 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 42 | m_AnchorMin: {x: 0, y: 0} 43 | m_AnchorMax: {x: 0, y: 0} 44 | m_AnchoredPosition: {x: 1092.7, y: 654} 45 | m_SizeDelta: {x: 100, y: 100} 46 | m_Pivot: {x: 0.5, y: 0.5} 47 | -------------------------------------------------------------------------------- /Assets/Resources/ShepPrefabs/TooltipAnchorRight.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1954832697025440} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1954832697025440 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224267882638385376} 22 | m_Layer: 5 23 | m_Name: TooltipAnchorRight 24 | m_TagString: Untagged 25 | m_Icon: {fileID: 0} 26 | m_NavMeshLayer: 0 27 | m_StaticEditorFlags: 0 28 | m_IsActive: 1 29 | --- !u!224 &224267882638385376 30 | RectTransform: 31 | m_ObjectHideFlags: 1 32 | m_PrefabParentObject: {fileID: 0} 33 | m_PrefabInternal: {fileID: 100100000} 34 | m_GameObject: {fileID: 1954832697025440} 35 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 36 | m_LocalPosition: {x: 0, y: 0, z: 0} 37 | m_LocalScale: {x: 1.000005, y: 1.000005, z: 1.000005} 38 | m_Children: [] 39 | m_Father: {fileID: 0} 40 | m_RootOrder: 0 41 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 42 | m_AnchorMin: {x: 0, y: 0} 43 | m_AnchorMax: {x: 0, y: 0} 44 | m_AnchoredPosition: {x: 1650, y: 812} 45 | m_SizeDelta: {x: 100, y: 100} 46 | m_Pivot: {x: 0.5, y: 0.5} 47 | -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/DungeonRooms/XML/exp_specialrooms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | shara_campfire 7 | 9 8 | 9 9 | ..X.d.X.. 10 | ....A.... 11 | .X.....X. 12 | ....p.... 13 | ..T5..... 14 | .......w. 15 | XXX.X..w. 16 | BB..X.ww. 17 | ....X.ww. 18 | 19 | d 20 | STAIRS 21 | FORWARDS 22 | 23 | 24 | p 25 | PLAYERSTART 26 | 27 | 28 | w 29 | TERRAIN 30 | WATER 31 | GROUND 32 | 33 | 34 | B 35 | DESTRUCTIBLE 36 | exp1_decorative_bookshelf 37 | 38 | 39 | T 40 | MONSTER 41 | mon_targetdummy 42 | 43 | 44 | A 45 | DESTRUCTIBLE 46 | obj_regenfountain 47 | 48 | 49 | 5 50 | ITEM 51 | weapon_shortsword 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_StringInitialization.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class GameMasterScript 6 | { 7 | static void AssignAttributeAndElementStrings() 8 | { 9 | monsterAttributeNames = new string[(int)MonsterAttributes.COUNT]; 10 | monsterAttributeNames[0] = "GREEDY"; 11 | monsterAttributeNames[1] = "TIMID"; 12 | monsterAttributeNames[2] = "BERSERKER"; 13 | monsterAttributeNames[3] = "SNIPER"; 14 | monsterAttributeNames[4] = "LOVESBATTLES"; 15 | monsterAttributeNames[5] = "STALKER"; 16 | monsterAttributeNames[6] = "GANGSUP"; 17 | monsterAttributeNames[7] = "PREDATOR"; 18 | monsterAttributeNames[8] = "HEALER"; 19 | monsterAttributeNames[9] = "COMBINABLE"; 20 | monsterAttributeNames[10] = "RONIN"; 21 | 22 | elementNames = new string[(int)DamageTypes.COUNT]; 23 | elementNames[(int)DamageTypes.POISON] = StringManager.GetString("misc_dmg_poison"); 24 | elementNames[(int)DamageTypes.PHYSICAL] = StringManager.GetString("misc_dmg_physical"); 25 | elementNames[(int)DamageTypes.LIGHTNING] = StringManager.GetString("misc_dmg_lightning"); 26 | elementNames[(int)DamageTypes.FIRE] = StringManager.GetString("misc_dmg_fire"); 27 | elementNames[(int)DamageTypes.WATER] = StringManager.GetString("misc_dmg_water"); 28 | elementNames[(int)DamageTypes.SHADOW] = StringManager.GetString("misc_dmg_shadow"); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Assets/AfterImageEffectScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class AfterImageEffectScript : MonoBehaviour { 6 | 7 | 8 | float timeAtCreation; 9 | float animTime; 10 | bool initialized; 11 | bool finished; 12 | SpriteRenderer sr; 13 | 14 | // Use this for initialization 15 | public void Initialize(float aTime, SpriteRenderer sourceSR) 16 | { 17 | animTime = aTime; 18 | timeAtCreation = Time.time; 19 | initialized = true; 20 | finished = false; 21 | if (sr == null) 22 | { 23 | sr = GetComponent(); 24 | } 25 | sr.sprite = sourceSR.sprite; 26 | sr.flipX = sourceSR.flipX; 27 | sr.flipY = sourceSR.flipY; 28 | } 29 | 30 | void Start() 31 | { 32 | sr = GetComponent(); 33 | } 34 | 35 | // Update is called once per frame 36 | void Update () { 37 | 38 | if (!initialized) return; 39 | 40 | float pComplete = (Time.time - timeAtCreation) / animTime; 41 | if (pComplete > 1.0f) 42 | { 43 | pComplete = 1.0f; 44 | finished = true; 45 | } 46 | 47 | float srValue = 1f - pComplete - 0.15f; 48 | if (srValue < 0f) srValue = 0f; 49 | 50 | sr.color = new Color(1f, 1f, 1f, srValue); 51 | 52 | 53 | if (finished) 54 | { 55 | GameMasterScript.ReturnToStack(gameObject, "SingleAfterImagePrefab"); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Assets/StringManager_TagManagement.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System.Xml; 5 | using UnityEngine.Serialization; 6 | using System.IO; 7 | using System; 8 | using System.Diagnostics; 9 | using System.Linq; 10 | using System.Reflection; 11 | using System.Text.RegularExpressions; 12 | using System.Xml.Serialization; 13 | using System.Globalization; 14 | using Debug = UnityEngine.Debug; 15 | 16 | public partial class StringManager 17 | { 18 | public static void ClearTags() 19 | { 20 | for (int i = 0; i < mergeTags.Length; i++) 21 | { 22 | mergeTags[i] = String.Empty; 23 | } 24 | } 25 | 26 | public static string GetTag(int index) 27 | { 28 | if (index >= mergeTags.Length) return String.Empty; 29 | return mergeTags[index]; 30 | } 31 | 32 | public static void SetTag(int index, string content) 33 | { 34 | if (index >= mergeTags.Length) return; 35 | mergeTags[index] = content; 36 | } 37 | 38 | public static void ClearAndSetTag(int index, string content) 39 | { 40 | if (index >= mergeTags.Length) return; 41 | ClearTags(); 42 | mergeTags[index] = content; 43 | } 44 | 45 | public static string[] GetCopyOfCurrentMergeTags() 46 | { 47 | string[] copyOfTags = new string[mergeTags.Length]; 48 | for (int i = 0; i < copyOfTags.Length; i++) 49 | { 50 | copyOfTags[i] = mergeTags[i]; 51 | } 52 | return copyOfTags; 53 | } 54 | } -------------------------------------------------------------------------------- /Assets/SimpleLightCycle.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | [System.Serializable] 7 | public class SimpleLightCycle : MonoBehaviour { 8 | 9 | Image myImage; 10 | public float cycleTime; 11 | public float transOffset; 12 | bool fadeOut = true; 13 | float startCycleTime = 0f; 14 | 15 | // Use this for initialization 16 | 17 | void Start () { 18 | myImage = GetComponent(); 19 | startCycleTime = Time.time; 20 | } 21 | 22 | // Update is called once per frame 23 | void Update () { 24 | if (myImage != null) 25 | { 26 | float pcomplete = (Time.time - startCycleTime) / cycleTime; 27 | 28 | 29 | 30 | if (fadeOut) 31 | { 32 | float cSlerp = Mathfx.Sinerp(1f, 0.5f, pcomplete); 33 | //myImage.color = new Color(1f, 1f, 1f, 1f - (pcomplete / 2f)); 34 | myImage.color = new Color(1f, 1f, 1f, cSlerp + transOffset); 35 | } 36 | else 37 | { 38 | float cSlerp = Mathfx.Sinerp(0.5f, 1.0f, pcomplete); 39 | //myImage.color = new Color(1f, 1f, 1f, 0.5f + (pcomplete / 2f)); 40 | myImage.color = new Color(1f, 1f, 1f, cSlerp + transOffset); 41 | } 42 | 43 | if (pcomplete >= 1.0f) 44 | { 45 | startCycleTime = Time.time; 46 | fadeOut = !fadeOut; 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /.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/main/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Recordings can get excessive in size 18 | /[Rr]ecordings/ 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.csproj 36 | *.unityproj 37 | *.sln 38 | *.suo 39 | *.tmp 40 | *.user 41 | *.userprefs 42 | *.pidb 43 | *.booproj 44 | *.svd 45 | *.pdb 46 | *.mdb 47 | *.opendb 48 | *.VC.db 49 | 50 | # Unity3D generated meta files 51 | *.pidb.meta 52 | *.pdb.meta 53 | *.mdb.meta 54 | 55 | # Unity3D generated file on crash reports 56 | sysinfo.txt 57 | 58 | # Builds 59 | *.apk 60 | *.aab 61 | *.unitypackage 62 | *.app 63 | 64 | # Crashlytics generated file 65 | crashlytics-build.properties 66 | 67 | # Packed Addressables 68 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 69 | 70 | # Temporary auto-generated Android Assets 71 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 72 | /[Aa]ssets/[Ss]treamingAssets/aa/* 73 | -------------------------------------------------------------------------------- /Assets/ResolutionDialog/Todos.md: -------------------------------------------------------------------------------- 1 | Flow: 2 | 3 | - Populate dropdown lists 4 | do not make any changes yet! 5 | - Select current item 6 | happens initially 7 | happens after a change was made at the end of a "waitforendofframe" coroutine - for changes that take effect at the end of a frame (ie resolution) 8 | base this on current settings (ie sometimes a settings gets modified from the desired setting) 9 | apply changes without raising the OnValueChanges event 10 | - Update disabled status of controls 11 | - OnValueChanged 12 | apply value 13 | reset vsync state when quality level changes (override quality level's vsync) 14 | select current item (possibly next frame) 15 | update disabled status 16 | update Hz dropdown (when one of the following changed: resolution, vsync, fullscreen mode) 17 | 18 | Side-effects: 19 | 20 | Changes to the following items may cause other items to change or become irrelevant. 21 | 22 | - Resolution affects: 23 | Refresh rate 24 | - Refresh rate affects: 25 | calculated max fps (vsync count) 26 | - Fullscreenmode affects: 27 | resolution 28 | refresh rate (disable) 29 | vsync count (disable) 30 | - Vsync count affects: 31 | refresh rate (disable) 32 | calculated max fps (vsync count) 33 | - quality affects: 34 | reset vsync count to dialog's value as it may be changed by quality level 35 | - display affects: 36 | resolution 37 | refresh rate 38 | fullscreen mode (?) 39 | 40 | TODO 41 | 42 | Tasks: 43 | - popup funktion (play = ok) 44 | - popup key einstellbar 45 | 46 | Bugs: 47 | 48 | Idee: 49 | - Tool, das ausgibt welche Resolution was ist (Display, Screen, Window, Desktop, usw.) 50 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_OrbAndJobScrollToSkillOrb.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_OrbAndJobScrollToSkillOrb : CraftingRecipe { 6 | 7 | public Item jobScroll; 8 | public Item orbToUse; 9 | 10 | public override bool IsRecipePossible(List inputItems) 11 | { 12 | dictCachedItemsToUse.Clear(); 13 | bool hasScroll = false; 14 | bool hasOrb = false; 15 | 16 | foreach (Item itm in inputItems) 17 | { 18 | if (!hasOrb && !itm.IsLucidOrb() && !itm.IsJobSkillOrb() && itm.actorRefName == "orb_itemworld") 19 | { 20 | orbToUse = itm; 21 | hasOrb = true; 22 | } 23 | 24 | if (itm.actorRefName == "scroll_jobchange") 25 | { 26 | jobScroll = itm; 27 | hasScroll = true; 28 | } 29 | 30 | if (hasOrb && hasScroll) 31 | { 32 | dictCachedItemsToUse.Add(jobScroll, 1); 33 | dictCachedItemsToUse.Add(orbToUse, 1); 34 | return true; 35 | } 36 | } 37 | return false; 38 | } 39 | 40 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 41 | { 42 | Item newOrb = ItemWorldUIScript.CreateItemWorldOrb(1.6f, false, true); 43 | List returnItems = new List() { newOrb }; 44 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 45 | return returnItems; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Assets/Resources/SpriteEffects/PivotHolder.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &192908 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 5 9 | m_Component: 10 | - component: {fileID: 22495318} 11 | - component: {fileID: 22278754} 12 | m_Layer: 0 13 | m_Name: PivotHolder 14 | m_TagString: Untagged 15 | m_Icon: {fileID: 0} 16 | m_NavMeshLayer: 0 17 | m_StaticEditorFlags: 0 18 | m_IsActive: 1 19 | --- !u!222 &22278754 20 | CanvasRenderer: 21 | m_ObjectHideFlags: 1 22 | m_PrefabParentObject: {fileID: 0} 23 | m_PrefabInternal: {fileID: 100100000} 24 | m_GameObject: {fileID: 192908} 25 | --- !u!224 &22495318 26 | RectTransform: 27 | m_ObjectHideFlags: 1 28 | m_PrefabParentObject: {fileID: 0} 29 | m_PrefabInternal: {fileID: 100100000} 30 | m_GameObject: {fileID: 192908} 31 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 32 | m_LocalPosition: {x: 0, y: 0, z: 0} 33 | m_LocalScale: {x: 1, y: 1, z: 1} 34 | m_Children: [] 35 | m_Father: {fileID: 0} 36 | m_RootOrder: 0 37 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 38 | m_AnchorMin: {x: 0.5, y: 0.5} 39 | m_AnchorMax: {x: 0.5, y: 0.5} 40 | m_AnchoredPosition: {x: 1, y: 1} 41 | m_SizeDelta: {x: 100, y: 100} 42 | m_Pivot: {x: 0.5, y: 0.5} 43 | --- !u!1001 &100100000 44 | Prefab: 45 | m_ObjectHideFlags: 1 46 | serializedVersion: 2 47 | m_Modification: 48 | m_TransformParent: {fileID: 0} 49 | m_Modifications: [] 50 | m_RemovedComponents: [] 51 | m_ParentPrefab: {fileID: 0} 52 | m_RootGameObject: {fileID: 192908} 53 | m_IsPrefabParent: 1 54 | -------------------------------------------------------------------------------- /Assets/CanvasParallaxScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | [System.Serializable] 7 | public class CanvasParallaxScript : MonoBehaviour { 8 | 9 | public Vector3 startPosition; 10 | public float animationTime; 11 | 12 | float timeAtParallaxStart; 13 | bool animComplete; 14 | bool initialized; 15 | Vector3 finishPosition; 16 | 17 | void Start() 18 | { 19 | // Handle this on enable 20 | } 21 | 22 | void OnEnable() 23 | { 24 | } 25 | 26 | public void Initialize() 27 | { 28 | finishPosition = transform.localPosition; 29 | transform.localPosition = startPosition; 30 | timeAtParallaxStart = Time.time; 31 | initialized = true; 32 | animComplete = false; 33 | } 34 | 35 | void Update() 36 | { 37 | if (!initialized) return; 38 | if (!animComplete) 39 | { 40 | float percentComplete = (Time.time - timeAtParallaxStart) / animationTime; 41 | if (percentComplete > 1.0f) 42 | { 43 | percentComplete = 1.0f; 44 | animComplete = true; 45 | } 46 | float xLerp = Mathfx.Sinerp(startPosition.x, finishPosition.x, percentComplete); 47 | float yLerp = Mathfx.Sinerp(startPosition.y, finishPosition.y, percentComplete); 48 | //Vector3 newPos = Vector3.Lerp(startPosition, finishPosition, percentComplete); 49 | Vector3 newPos = new Vector3(xLerp, yLerp, 0f); 50 | transform.localPosition = newPos; 51 | } 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /Assets/FastTravelStuff.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class FastTravelStuff 6 | { 7 | 8 | public static bool initialized; 9 | 10 | static List waypointFloorIDsSorted; 11 | 12 | public static List GetWaypointIDList() 13 | { 14 | if (!initialized) 15 | { 16 | Initialize(); 17 | } 18 | return waypointFloorIDsSorted; 19 | } 20 | 21 | static void Initialize() 22 | { 23 | if (initialized) return; 24 | 25 | waypointFloorIDsSorted = new List() 26 | { 27 | 0, // town 28 | MapMasterScript.BRANCH_PASSAGE_POSTBOSS1, 29 | MapMasterScript.BRANCH_PASSAGE_POSTBOSS2, 30 | 101, // Katie area 31 | 104, // storeroom 32 | 102, // frog bog 33 | 105, // off the beaten path 34 | 106, // hilde area 35 | 107, // bottles brews 36 | 110, // casino 37 | 118, // pet shoppe 38 | 131, // magic merchant 39 | 207, // beastlake park 40 | 224, // frozen alcove 41 | 225, // desert area 42 | 16, // stone halls 43 | 212, // final hub 44 | 356, // realm of gods 1 45 | 360, // realm of gods 5 46 | 380, // frog dungeon 1 47 | 375, // bandit dungeon 1 48 | 385, // beast dungeon 1 49 | 390, // spirit dungeon 1 50 | 394, // jelly dungeon 1 51 | 370, // robot dungeon 1 52 | 53 | }; 54 | 55 | initialized = true; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /Assets/GraphicsAndFramerateManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class GraphicsAndFramerateManager 6 | { 7 | static int bufferedVSyncCount = 0; 8 | static int bufferedFrameRate = Application.targetFrameRate; 9 | 10 | const int FIXED_MOBILE_FRAMERATE = 60; 11 | 12 | public static void OnStartLoad() 13 | { 14 | if (PlatformVariables.FIXED_FRAMERATE) return; 15 | 16 | bufferedFrameRate = Application.targetFrameRate; 17 | SetApplicationFPS(-1); 18 | bufferedVSyncCount = QualitySettings.vSyncCount; 19 | 20 | if (!LogoSceneScript.globalIsSolsticeBuild && !LogoSceneScript.globalSolsticeDebug) 21 | { 22 | QualitySettings.vSyncCount = 0; 23 | } 24 | } 25 | 26 | public static void OnEndLoad() 27 | { 28 | 29 | if (PlatformVariables.FIXED_FRAMERATE) return; 30 | 31 | 32 | #if UNITY_ANDROID || UNITY_IPHONE 33 | SetApplicationFPS(FIXED_MOBILE_FRAMERATE); 34 | #else 35 | SetApplicationFPS(bufferedFrameRate); 36 | #endif 37 | 38 | if (!LogoSceneScript.globalIsSolsticeBuild && !LogoSceneScript.globalSolsticeDebug) 39 | { 40 | QualitySettings.vSyncCount = bufferedVSyncCount; 41 | } 42 | } 43 | 44 | public static void SetApplicationFPS(int value) 45 | { 46 | if (PlatformVariables.FIXED_FRAMERATE) 47 | { 48 | Application.targetFrameRate = 60; 49 | return; 50 | } 51 | Application.targetFrameRate = value; 52 | 53 | //if (Debug.isDebugBuild) Debug.Log("SET APPLICATION FPS TO: " + value); 54 | 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /Assets/TDScripts/DragonEvents/DragonLimitBreaks.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class DragonLimitBreaks 6 | { 7 | const int FIXED_ABILITY_RANGE = 2; 8 | 9 | /// 10 | /// Adds spaces based on ability into targeting for effect eff 11 | /// 12 | /// 13 | /// 14 | public static void AddTargetsForDragonBreak(AbilityScript triggeringAbility, EffectScript eff, Actor owner) 15 | { 16 | StringManager.SetTag(0, triggeringAbility.abilityName); 17 | GameLogScript.LogWriteStringRef("log_player_dragonbreak"); 18 | 19 | List targetSquares = UIManagerScript.singletonUIMS.CreateShapeTileList(triggeringAbility.boundsShape, triggeringAbility, owner.GetPos(), Directions.NORTH, FIXED_ABILITY_RANGE, false); 20 | eff.positions.Clear(); 21 | eff.targetActors.Clear(); 22 | foreach (Vector2 pos in targetSquares) 23 | { 24 | if (!MapMasterScript.activeMap.InBounds(pos)) continue; 25 | eff.positions.Add(pos); 26 | foreach(Actor act in MapMasterScript.GetTile(pos).GetAllActors()) 27 | { 28 | if (eff.targetActors.Contains(act)) continue; 29 | eff.targetActors.Add(act); 30 | } 31 | } 32 | 33 | if (triggeringAbility.CheckAbilityTag(AbilityTags.OVERRIDECHILDSFX)) 34 | { 35 | GameObject go = CombatManagerScript.GetEffect(triggeringAbility.sfxOverride); 36 | CombatManagerScript.TryPlayAbilitySFX(go, owner.GetPos(), triggeringAbility); 37 | } 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Assets/TDScripts/CustomFunctionsFromXML/MoveActorCustomFunctions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class PostMoveActorCustomFunctions 6 | { 7 | public static bool FancyTeleportFX(MoveActorEffect effect, Actor actorToProcess, Vector2 oldPos, Vector2 newPos) 8 | { 9 | if (actorToProcess.GetActorType() == ActorTypes.HERO) 10 | { 11 | actorToProcess.myAnimatable.SetAnim("UseItem"); 12 | } 13 | 14 | CombatManagerScript.GenerateSpecificEffectAnimation(oldPos, "TeleportUp", effect, true); 15 | CombatManagerScript.GenerateSpecificEffectAnimation(newPos, "TeleportDown", effect, true); 16 | 17 | return true; 18 | } 19 | 20 | public static bool TryAddBrushstrokeFromGlide(MoveActorEffect effect, Actor actorToProcess, Vector2 oldPos, Vector2 newPos) 21 | { 22 | if (GameMasterScript.heroPCActor.myStats.CheckHasStatusName("emblem_dualwielderemblem_tier1_glide")) 23 | { 24 | GameMasterScript.heroPCActor.myStats.AddStatusByRefAndLog("brushstroke_charge", GameMasterScript.heroPCActor, 99); 25 | } 26 | 27 | return true; 28 | } 29 | 30 | } 31 | 32 | public class MoveActorCustomFunctions { 33 | 34 | public static bool ValkyriePushCheck(MoveActorEffect effect) 35 | { 36 | foreach (Actor act in effect.targetActors) 37 | { 38 | if (MapMasterScript.GetGridDistance(act.GetPos(), effect.originatingActor.GetPos()) > 2) 39 | { 40 | //Debug.Log("Do not push " + act.actorRefName); 41 | effect.skipTargetActors.Add(act); 42 | } 43 | } 44 | 45 | return true; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Assets/AARandomFunctionScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | using System.IO; 6 | 7 | public class AARandomFunctionScript : MonoBehaviour 8 | { 9 | 10 | private void Start() 11 | { 12 | Debug.Log("Running."); 13 | } 14 | 15 | // Update is called once per frame 16 | void Update() 17 | { 18 | if (Input.GetKeyDown(KeyCode.KeypadEnter)) 19 | { 20 | SpecialFunction(rootPath); 21 | } 22 | } 23 | 24 | static string rootPath = "F:/ISWDEV/TokyoStrings/TokyoScoringStrings/Samples"; 25 | 26 | void SpecialFunction(string path) 27 | { 28 | 29 | FileInfo[] files = null; 30 | DirectoryInfo[] subDirs = null; 31 | 32 | DirectoryInfo root = new DirectoryInfo(path); 33 | 34 | // First, process all the files directly under this folder 35 | try 36 | { 37 | files = root.GetFiles("*"); 38 | Debug.Log("Done getting files in " + path + ", Count is " + files.Length); 39 | } 40 | // This is thrown if even one of the files requires permissions greater 41 | // than the application provides. 42 | catch (UnauthorizedAccessException e) 43 | { 44 | // This code just writes out the message and continues to recurse. 45 | // You may decide to do something different here. For example, you 46 | // can try to elevate your privileges and access the file again. 47 | Debug.Log(e.Message); 48 | } 49 | 50 | subDirs = root.GetDirectories(); 51 | 52 | Debug.Log("Done getting directories in " + path + ", count is " + subDirs.Length); 53 | 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Assets/LogoSceneFader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class LogoSceneFader : MonoBehaviour 7 | { 8 | public Image myImage; 9 | 10 | EFadeStates fadeState = EFadeStates.COUNT; 11 | 12 | float timeAtFade; 13 | 14 | float currentFadeTime; 15 | 16 | public void FadeOut(float time) 17 | { 18 | fadeState = EFadeStates.FADING_OUT; 19 | timeAtFade = Time.time; 20 | currentFadeTime = time; 21 | } 22 | 23 | public void FadeIn(float time) 24 | { 25 | fadeState = EFadeStates.FADING_IN; 26 | timeAtFade = Time.time; 27 | currentFadeTime = time; 28 | } 29 | 30 | private void Update() 31 | { 32 | if (fadeState != EFadeStates.FADING_IN && fadeState != EFadeStates.FADING_OUT) 33 | { 34 | return; 35 | } 36 | 37 | float pComplete = (Time.time - timeAtFade) / currentFadeTime; 38 | 39 | bool done = false; 40 | 41 | if (pComplete >= 1f) 42 | { 43 | done = true; 44 | pComplete = 1f; 45 | } 46 | 47 | float alphaValue = 0f; 48 | 49 | if (fadeState == EFadeStates.FADING_IN) 50 | { 51 | alphaValue = EasingFunction.Linear(0f, 1f, pComplete); 52 | } 53 | else 54 | { 55 | alphaValue = EasingFunction.Linear(1f, 0f, pComplete); 56 | } 57 | 58 | myImage.color = new Color(0f, 0f, 0f, alphaValue); 59 | 60 | if (done) 61 | { 62 | fadeState = EFadeStates.NOT_FADING; 63 | } 64 | } 65 | 66 | public void SetToBlack() 67 | { 68 | myImage.color = new Color(0f, 0f, 0f, 1f); 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_ThreeOffhandsToOffhand.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_ThreeOffhandsToOffhand : CraftingRecipe { 6 | 7 | public override bool IsRecipePossible(List inputItems) 8 | { 9 | dictCachedItemsToUse.Clear(); 10 | itemRefsUsed.Clear(); 11 | int countOfOffhands = 0; 12 | highestCVOfInputItems = 1.0f; 13 | 14 | foreach (Item itm in inputItems) 15 | { 16 | if (itm.itemType != ItemTypes.OFFHAND) continue; 17 | Offhand oh = itm as Offhand; 18 | if (oh.rarity != Rarity.COMMON) continue; 19 | countOfOffhands++; 20 | dictCachedItemsToUse.Add(itm, 1); 21 | itemRefsUsed.Add(itm.actorRefName); 22 | if (itm.challengeValue > highestCVOfInputItems) 23 | { 24 | highestCVOfInputItems = itm.challengeValue; 25 | } 26 | if (countOfOffhands == numIngredients) 27 | { 28 | return true; 29 | } 30 | } 31 | 32 | return false; 33 | } 34 | 35 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 36 | { 37 | Offhand lookupTemplate = GetPossibleItemRef("offhands", highestCVOfInputItems - 0.2f, highestCVOfInputItems) as Offhand; 38 | 39 | Offhand offhandToMake = new Offhand(); 40 | offhandToMake.CopyFromItem(lookupTemplate); 41 | offhandToMake.SetUniqueIDAndAddToDict(); 42 | List returnItems = new List() { offhandToMake }; 43 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 44 | return returnItems; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_LucidOrbsToRegular.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | // Takes ANY three Lucid Orbs and spits out a regular Orb of Reverie. 6 | 7 | public class CraftingRecipe_LucidOrbsToRegular : CraftingRecipe 8 | { 9 | public override bool IsRecipePossible(List inputItems) 10 | { 11 | dictCachedItemsToUse.Clear(); 12 | 13 | int countOfLucidOrbs = 0; 14 | int orbsRemainining = numIngredients; 15 | 16 | // Let's say we input: 17 | // Orb A qty = 2 18 | // Orb B qty = 2 19 | // Orb C qty = 1 20 | 21 | foreach(Item itm in inputItems) 22 | { 23 | if (!itm.IsLucidOrb()) continue; 24 | countOfLucidOrbs += itm.GetQuantity(); 25 | 26 | if (itm.GetQuantity() <= orbsRemainining) 27 | { 28 | dictCachedItemsToUse.Add(itm, itm.GetQuantity()); 29 | } 30 | else 31 | { 32 | dictCachedItemsToUse.Add(itm, orbsRemainining); // Don't ever use more than 3 orbs! 33 | } 34 | 35 | orbsRemainining -= itm.GetQuantity(); 36 | 37 | if (countOfLucidOrbs >= numIngredients) 38 | { 39 | return true; 40 | } 41 | } 42 | 43 | return false; 44 | } 45 | 46 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 47 | { 48 | Item newOrb = LootGeneratorScript.CreateItemFromTemplateRef("orb_itemworld", 1.0f, 0f, false); 49 | List returnItems = new List() { newOrb }; 50 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 51 | return returnItems; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Assets/FastRNG.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | using UnityEngine; 5 | 6 | public class XXHashRNG 7 | { 8 | private int position; 9 | private readonly uint seed; 10 | 11 | public XXHashRNG() : this(Environment.TickCount) { } 12 | public XXHashRNG(int seed) { this.seed = (uint)seed; } 13 | 14 | public bool TestOneIn(int odds) { return Value() * odds <= 1f; } 15 | public int Range(int min, int max) { 16 | if (max - min == 0) return 0; 17 | return min + (int)(GetHash(position++) % (max - min)); 18 | } 19 | public float Range(float min, float max) { return min + GetHash(position++) * (max - min) * (1.0f / uint.MaxValue); } 20 | 21 | public int Next(int max) 22 | { 23 | return Range(0, max); 24 | } 25 | 26 | public float Value() 27 | { 28 | return new FloatUnion(0x3F800000U | (GetHash(position++) >> 9)).FloatVal - 1.0f; 29 | } 30 | 31 | const uint PRIME32_2 = 2246822519U; 32 | const uint PRIME32_3 = 3266489917U; 33 | const uint PRIME32_4 = 668265263U; 34 | const uint PRIME32_5 = 374761393U; 35 | 36 | private uint GetHash(int buf) 37 | { 38 | uint h32 = seed + PRIME32_5; 39 | h32 += (uint)buf * PRIME32_3; 40 | h32 = ((h32 << 17) | (h32 >> 15)) * PRIME32_4; 41 | h32 ^= h32 >> 15; 42 | h32 *= PRIME32_2; 43 | h32 ^= h32 >> 13; 44 | h32 *= PRIME32_3; 45 | h32 ^= h32 >> 16; 46 | return h32; 47 | } 48 | 49 | [StructLayout(LayoutKind.Explicit)] 50 | public struct FloatUnion 51 | { 52 | [FieldOffset(0)] 53 | public readonly uint IntVal; 54 | [FieldOffset(0)] 55 | public readonly float FloatVal; 56 | 57 | public FloatUnion(uint intVal) 58 | { 59 | FloatVal = 0; 60 | IntVal = intVal; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_LucidShardsToLucidOrb.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_LucidShardsToLucidOrb : CraftingRecipe { 6 | 7 | float maxCV = 1.0f; 8 | 9 | public override bool IsRecipePossible(List inputItems) 10 | { 11 | dictCachedItemsToUse.Clear(); 12 | 13 | int countOfShards = 0; 14 | int shardsRemaining = 6; 15 | 16 | foreach (Item itm in inputItems) 17 | { 18 | if (itm.itemType != ItemTypes.CONSUMABLE) continue; 19 | if (itm.actorRefName != "item_lucidorb_shard") continue; 20 | countOfShards += itm.GetQuantity(); 21 | 22 | if (itm.challengeValue > maxCV) 23 | { 24 | maxCV = itm.challengeValue; 25 | } 26 | 27 | if (itm.GetQuantity() <= shardsRemaining) 28 | { 29 | dictCachedItemsToUse.Add(itm, itm.GetQuantity()); 30 | } 31 | else 32 | { 33 | dictCachedItemsToUse.Add(itm, shardsRemaining); // Don't ever use more than 6 shards! 34 | } 35 | 36 | shardsRemaining -= itm.GetQuantity(); 37 | 38 | if (countOfShards >= 6) 39 | { 40 | return true; 41 | } 42 | } 43 | 44 | return false; 45 | } 46 | 47 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 48 | { 49 | Item newOrb = ItemWorldUIScript.CreateItemWorldOrb(maxCV + 0.1f, true, false); 50 | List returnItems = new List() { newOrb }; 51 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 52 | return returnItems; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Assets/Resources/MyNewGrayscale.shader: -------------------------------------------------------------------------------- 1 | // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) 2 | 3 | Shader "Sprites/MyNewGrayscale" 4 | { 5 | Properties 6 | { 7 | [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} 8 | _Color("Tint", Color) = (1,1,1,1) 9 | [MaterialToggle] PixelSnap("Pixel snap", Float) = 0 10 | [HideInInspector] _RendererColor("RendererColor", Color) = (1,1,1,1) 11 | [HideInInspector] _Flip("Flip", Vector) = (1,1,1,1) 12 | [PerRendererData] _AlphaTex("External Alpha", 2D) = "white" {} 13 | [PerRendererData] _EnableExternalAlpha("Enable External Alpha", Float) = 0 14 | } 15 | 16 | SubShader 17 | { 18 | Tags 19 | { 20 | "Queue" = "Transparent" 21 | "IgnoreProjector" = "True" 22 | "RenderType" = "Transparent" 23 | "PreviewType" = "Plane" 24 | "CanUseSpriteAtlas" = "True" 25 | } 26 | 27 | Cull Off 28 | Lighting Off 29 | ZWrite Off 30 | Blend One OneMinusSrcAlpha 31 | 32 | CGPROGRAM 33 | #pragma surface surf Lambert vertex:vert nofog nolightmap nodynlightmap keepalpha noinstancing 34 | #pragma multi_compile _ PIXELSNAP_ON 35 | #pragma multi_compile _ ETC1_EXTERNAL_ALPHA 36 | #include "UnitySprites.cginc" 37 | 38 | struct Input 39 | { 40 | float2 uv_MainTex; 41 | fixed4 color; 42 | }; 43 | 44 | void vert(inout appdata_full v, out Input o) 45 | { 46 | v.vertex.xy *= _Flip.xy; 47 | 48 | #if defined(PIXELSNAP_ON) 49 | v.vertex = UnityPixelSnap(v.vertex); 50 | #endif 51 | 52 | UNITY_INITIALIZE_OUTPUT(Input, o); 53 | o.color = v.color * _Color * _RendererColor; 54 | } 55 | 56 | void surf(Input IN, inout SurfaceOutput o) 57 | { 58 | fixed4 c = SampleSpriteTexture(IN.uv_MainTex) * IN.color; 59 | o.Albedo = c.rgb * c.a; 60 | o.Alpha = c.a; 61 | } 62 | ENDCG 63 | } 64 | 65 | Fallback "Transparent/VertexLit" 66 | } 67 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_ThreeSeedsToRandomSeed.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_ThreeSeedsToRandomSeed : CraftingRecipe { 6 | 7 | public override bool IsRecipePossible(List inputItems) 8 | { 9 | dictCachedItemsToUse.Clear(); 10 | 11 | int countOfSeeds = 0; 12 | int seedsRemaining = 3; 13 | 14 | foreach (Item itm in inputItems) 15 | { 16 | 17 | if (itm.actorRefName.Contains("seeds_tree")) 18 | { 19 | countOfSeeds += itm.GetQuantity(); 20 | 21 | if (itm.GetQuantity() <= seedsRemaining) 22 | { 23 | dictCachedItemsToUse.Add(itm, itm.GetQuantity()); 24 | } 25 | else 26 | { 27 | dictCachedItemsToUse.Add(itm, seedsRemaining); 28 | } 29 | 30 | seedsRemaining -= itm.GetQuantity(); 31 | } 32 | 33 | if (seedsRemaining == 0 || countOfSeeds >= 3) 34 | { 35 | return true; 36 | } 37 | } 38 | 39 | return false; 40 | } 41 | 42 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 43 | { 44 | Consumable seedTemplate = GetPossibleItemRef("seeds", highestCVOfInputItems - 0.3f, highestCVOfInputItems) as Consumable; 45 | Item seed = LootGeneratorScript.CreateItemFromTemplateRef(seedTemplate.actorRefName, highestCVOfInputItems, 0f, true); 46 | LootGeneratorScript.MakeSeedsMagicalIfPossible(seed); 47 | List returnItems = new List() { seed }; 48 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 49 | return returnItems; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Assets/SplashArtComponent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | [System.Serializable] 7 | public class SplashArtComponent : MonoBehaviour { 8 | 9 | public Image myImage; 10 | public Sprite[] possibleSplashArts; 11 | public Image fillBar; 12 | public Image logoBGForFill; 13 | 14 | public float fillPercent; 15 | 16 | public CanvasGroup parentCG; 17 | 18 | bool fadingOut; 19 | float fadeOutTime; 20 | float timeAtFadeBegin; 21 | 22 | int framesToTurnOff = 3; 23 | 24 | public bool splashArtFadedOut; 25 | 26 | // Use this for initialization 27 | void Start () { 28 | myImage.sprite = possibleSplashArts[UnityEngine.Random.Range(0, possibleSplashArts.Length)]; 29 | } 30 | 31 | public void FadeOut(float time) 32 | { 33 | fadeOutTime = time; 34 | fadingOut = true; 35 | timeAtFadeBegin = Time.time; 36 | } 37 | 38 | void Update() 39 | { 40 | if (!fadingOut) return; 41 | float pComplete = (Time.time - timeAtFadeBegin) / fadeOutTime; 42 | parentCG.alpha = 1f - pComplete; 43 | if (pComplete >= 1.0f) 44 | { 45 | framesToTurnOff--; 46 | if (framesToTurnOff <= 0) 47 | { 48 | fadingOut = false; 49 | splashArtFadedOut = true; 50 | } 51 | } 52 | } 53 | 54 | public void SetLoadingBar(float percent) 55 | { 56 | fillPercent = percent; 57 | logoBGForFill.fillAmount = fillPercent; 58 | } 59 | 60 | public void MoveLoadingBar(float percent) 61 | { 62 | fillPercent += percent; 63 | if (fillPercent >= 1.0f) 64 | { 65 | fillPercent = 1.0f; 66 | } 67 | logoBGForFill.fillAmount = fillPercent; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_Casino.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class GameMasterScript 6 | { 7 | public void StartCasino(CasinoGameType whichGame, int startBet) 8 | { 9 | CasinoScript.SetGame(whichGame); 10 | 11 | switch (whichGame) 12 | { 13 | case CasinoGameType.SLOTS: 14 | CasinoScript.SetBet(startBet); 15 | UIManagerScript.OpenSlotsGame(); 16 | break; 17 | case CasinoGameType.BLACKJACK: 18 | CasinoScript.SetBet(startBet); 19 | UIManagerScript.OpenBlackjackGame(); 20 | break; 21 | case CasinoGameType.CEELO: 22 | CasinoScript.SetBet(startBet); 23 | UIManagerScript.OpenCeeloGame(); 24 | break; 25 | } 26 | } 27 | 28 | public void PlayCasinoGameWithSelectedBet() 29 | { 30 | PlayCasinoGame(CasinoScript.playerBet); 31 | } 32 | 33 | public void PlayCasinoGame(int bet) 34 | { 35 | if (heroPCActor.GetMoney() < bet) 36 | { 37 | UIManagerScript.PlaySound("Error"); 38 | GameLogScript.LogWriteStringRef("log_error_notenoughmoney"); 39 | return; 40 | } 41 | 42 | heroPCActor.ChangeMoney(-1 * bet); 43 | 44 | if (CasinoScript.curGameType == CasinoGameType.BLACKJACK) 45 | { 46 | UIManagerScript.SetBlackjackPlaying(true); 47 | } 48 | else if (CasinoScript.curGameType == CasinoGameType.CEELO) 49 | { 50 | UIManagerScript.SetCeeloPlaying(true); 51 | } 52 | 53 | CasinoScript.PlayCurrentGame(bet); 54 | } 55 | 56 | public void TakeCasinoAction(int action) 57 | { 58 | CasinoScript.TakeAction(action); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Assets/CanvasGroupFader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CanvasGroupFader : MonoBehaviour { 6 | 7 | CanvasGroup myCG; 8 | bool fading; 9 | bool fadingOut; // if false, then fadingIn 10 | float timeFadeStart; 11 | float totalFadeTime; 12 | 13 | // Use this for initialization 14 | void Awake () { 15 | if (myCG == null) 16 | { 17 | myCG = GetComponent(); 18 | } 19 | if (myCG == null) 20 | { 21 | Debug.Log(gameObject.name + " couldn't find own CanvasGroup?"); 22 | } 23 | } 24 | 25 | public void FadeIn(float time) 26 | { 27 | myCG.alpha = 0f; 28 | totalFadeTime = time; 29 | timeFadeStart = Time.time; 30 | fading = true; 31 | fadingOut = false; 32 | } 33 | 34 | public void SetAlpha(float value) 35 | { 36 | myCG.alpha = value; 37 | fading = false; 38 | fadingOut = false; 39 | } 40 | 41 | public void FadeOut(float time) 42 | { 43 | myCG.alpha = 1.0f; 44 | totalFadeTime = time; 45 | timeFadeStart = Time.time; 46 | fading = true; 47 | fadingOut = true; 48 | } 49 | 50 | // Update is called once per frame 51 | void Update () { 52 | if (!fading) return; 53 | 54 | float percentComplete = (Time.time - timeFadeStart) / totalFadeTime; 55 | if (percentComplete > 1.0f) 56 | { 57 | percentComplete = 1.0f; 58 | } 59 | 60 | if (fadingOut) 61 | { 62 | myCG.alpha = 1.0f - percentComplete; 63 | } 64 | else 65 | { 66 | myCG.alpha = percentComplete; 67 | } 68 | 69 | if (percentComplete == 1.0f) 70 | { 71 | fading = false; 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /Assets/Resources/SpriteGrayscale.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/GreyScaleFill" { 4 | Properties 5 | { 6 | [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} 7 | _Color("Tint", Color) = (1,1,1,1) 8 | [MaterialToggle] PixelSnap("Pixel snap", Float) = 0 9 | _GrayScale("Grayscale Percent Fill", Range(0.0, 1.0)) = 0.0 10 | } 11 | 12 | SubShader 13 | { 14 | Tags 15 | { 16 | "Queue" = "Transparent" 17 | "IgnoreProjector" = "True" 18 | "RenderType" = "Transparent" 19 | "PreviewType" = "Plane" 20 | "CanUseSpriteAtlas" = "True" 21 | } 22 | 23 | Cull Off 24 | Lighting Off 25 | ZWrite Off 26 | Blend One OneMinusSrcAlpha 27 | 28 | Pass 29 | { 30 | CGPROGRAM 31 | #pragma vertex vert 32 | #pragma fragment frag 33 | #pragma multi_compile _ PIXELSNAP_ON 34 | #pragma multi_compile _ GRAYSCALE_ON GRAYSCALE_OFF 35 | #include "UnityCG.cginc" 36 | 37 | struct appdata_t 38 | { 39 | float4 vertex : POSITION; 40 | float4 color : COLOR; 41 | float2 texcoord : TEXCOORD0; 42 | 43 | }; 44 | 45 | struct v2f 46 | { 47 | float4 vertex : SV_POSITION; 48 | fixed4 color : COLOR; 49 | half2 texcoord : TEXCOORD0; 50 | }; 51 | 52 | fixed4 _Color; 53 | float _GrayScale; 54 | 55 | v2f vert(appdata_t IN) 56 | { 57 | v2f OUT; 58 | OUT.vertex = UnityObjectToClipPos(IN.vertex); 59 | OUT.texcoord = IN.texcoord; 60 | OUT.color = IN.color * _Color; 61 | #ifdef PIXELSNAP_ON 62 | OUT.vertex = UnityPixelSnap(OUT.vertex); 63 | #endif 64 | 65 | return OUT; 66 | } 67 | 68 | sampler2D _MainTex; 69 | 70 | fixed4 frag(v2f IN) : SV_Target 71 | { 72 | fixed4 c = tex2D(_MainTex, IN.texcoord) * IN.color; 73 | c.rgb *= c.a; 74 | if (IN.texcoord.y > _GrayScale) { 75 | fixed avg = (c.r + c.g + c.b) / 3; 76 | c.rgb = avg; 77 | } 78 | return c; 79 | } 80 | ENDCG 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Assets/SpriteFontManager.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1085100878161456} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1085100878161456 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4005482790969632} 22 | - component: {fileID: 114990756643595478} 23 | m_Layer: 0 24 | m_Name: SpriteFontManager 25 | m_TagString: Untagged 26 | m_Icon: {fileID: 0} 27 | m_NavMeshLayer: 0 28 | m_StaticEditorFlags: 0 29 | m_IsActive: 1 30 | --- !u!4 &4005482790969632 31 | Transform: 32 | m_ObjectHideFlags: 1 33 | m_PrefabParentObject: {fileID: 0} 34 | m_PrefabInternal: {fileID: 100100000} 35 | m_GameObject: {fileID: 1085100878161456} 36 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 37 | m_LocalPosition: {x: 407.0665, y: 224.56836, z: 0} 38 | m_LocalScale: {x: 1, y: 1, z: 1} 39 | m_Children: [] 40 | m_Father: {fileID: 0} 41 | m_RootOrder: 0 42 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 43 | --- !u!114 &114990756643595478 44 | MonoBehaviour: 45 | m_ObjectHideFlags: 1 46 | m_PrefabParentObject: {fileID: 0} 47 | m_PrefabInternal: {fileID: 100100000} 48 | m_GameObject: {fileID: 1085100878161456} 49 | m_Enabled: 1 50 | m_EditorHideFlags: 0 51 | m_Script: {fileID: 11500000, guid: 04b4b416470443a4192f9e5535fa770c, type: 3} 52 | m_Name: 53 | m_EditorClassIdentifier: 54 | spriteFontAssets: 55 | - {fileID: 11400000, guid: d642fd3102069924594b51718df92589, type: 2} 56 | - {fileID: 11400000, guid: 477b09cbfb5ca42489bc308ab2118575, type: 2} 57 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_CutsceneAndAnimStates.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class GameMasterScript 6 | { 7 | public static bool IsGameInCutsceneOrDialog() 8 | { 9 | return IsNextTurnPausedByAnimations() || UIManagerScript.dialogBoxOpen; 10 | } 11 | 12 | public static bool IsNextTurnPausedByAnimations() 13 | { 14 | return gmsSingleton.animationPlaying || 15 | gmsSingleton.animatingActorsPreventingUpdate.Count != 0 || 16 | gmsSingleton.coroutinesPreventingUpdate.Count != 0; 17 | } 18 | 19 | public static void SetAnimationPlaying(bool play, bool fromCutscene = false) 20 | { 21 | gmsSingleton.animationPlaying = play; 22 | 23 | if (!play) 24 | { 25 | if (gmsSingleton.animationFromCutscene) 26 | { 27 | gmsSingleton.animationFromCutscene = false; 28 | } 29 | } 30 | else if (fromCutscene) 31 | { 32 | gmsSingleton.animationFromCutscene = true; 33 | } 34 | //Debug.Log("Animation: " + play + " FromCutscene: " + fromCutscene); 35 | } 36 | 37 | public static bool IsAnimationPlaying() 38 | { 39 | return gmsSingleton.animationPlaying; 40 | } 41 | 42 | public static bool IsAnimationPlayingFromCutscene() 43 | { 44 | return gmsSingleton.animationPlaying && gmsSingleton.animationFromCutscene; 45 | } 46 | public static void SetLevelChangeState(bool state) 47 | { 48 | levelChangeInProgress = state; 49 | } 50 | 51 | //This adds an actor to a watch list, and as long as it has queued animations or is moving, 52 | //the game will not update. 53 | public static void PauseUpdateForActorAnimation(Actor a) 54 | { 55 | gmsSingleton.animatingActorsPreventingUpdate.Add(a); 56 | } 57 | } -------------------------------------------------------------------------------- /Assets/Resources/StatusEffects/XML/multidlc_groundeffects.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | exp_obj_blackhole_name 6 | status_blackhole 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | DAMAGE 18 | exp_obj_blackhole_name 19 | eff_blackholedamage 20 | BlackHoleExtraEffect 21 | 0.4|1 22 | ADJACENT 23 | NOTMYFACTION 24 | SHADOW 25 | 26 | 27 | BlackHoleHit,0.1 28 | 29 | 30 | 31 | 32 | abil_skill_flameslash_name 33 | status_axeflameslash 34 | GROUNDBASEDEFFECT 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | DAMAGE 45 | abil_skill_flameslash_name 46 | eff_axeflameslashdmg 47 | 1.3|3 48 | SINGLE 49 | 50 | NOTMYFACTION 51 | FIRE 52 | 53 | 54 | 55 | 56 | 57 | effect_eff_inferno_name 58 | status_tyrantinferno 59 | GROUNDBASEDEFFECT,PLAYANIMONEMPTY 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | DAMAGE 69 | effect_eff_inferno_name 70 | eff_tyrantinferno 71 | 1|3 72 | ALL 73 | NOTMYFACTION 74 | FIRE 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /Assets/Introloop/Scripts/IntroloopAudio.cs: -------------------------------------------------------------------------------- 1 | /* 2 | /// Copyright (c) 2015 Sirawat Pitaksarit, Exceed7 Experiments LP 3 | /// http://www.exceed7.com/introloop 4 | */ 5 | 6 | using UnityEngine; 7 | using System.Collections; 8 | using System; 9 | 10 | public class IntroloopAudio : ScriptableObject 11 | { 12 | 13 | [SerializeField, Range(0,1)] 14 | private float volume; 15 | [SerializeField, Range(0.1f,3)] 16 | private float pitch = 1; 17 | 18 | [SerializeField] 19 | public AudioClip audioClip; 20 | [SerializeField,PositiveFloat] 21 | internal float introBoundary; 22 | [SerializeField,PositiveFloat] 23 | internal float loopingBoundary; 24 | [SerializeField] 25 | internal bool nonLooping; 26 | [SerializeField] 27 | internal bool loopWholeAudio; 28 | 29 | 30 | public float Volume { 31 | get { 32 | return this.volume; 33 | } 34 | set { 35 | this.volume = value; 36 | } 37 | } 38 | 39 | internal float Pitch { 40 | get { 41 | return this.pitch; 42 | } 43 | } 44 | 45 | internal float IntroLength 46 | { 47 | get{ 48 | return introBoundary/pitch; 49 | } 50 | } 51 | 52 | internal float LoopingLength 53 | { 54 | get{ 55 | return (loopingBoundary - introBoundary)/pitch; 56 | } 57 | } 58 | 59 | public float ClipLength 60 | { 61 | get{ 62 | return audioClip.length/pitch; 63 | } 64 | } 65 | 66 | //This is for timing the seam between intro and looping section instead of IntroLength 67 | //It intentionally does not get divided by pitch. Unity's audio position is not affected by pitch. 68 | internal float LoopBeginning 69 | { 70 | get{ 71 | return introBoundary; 72 | } 73 | } 74 | 75 | internal void Preload() 76 | { 77 | audioClip.LoadAudioData(); 78 | } 79 | 80 | internal void Unload() 81 | { 82 | audioClip.UnloadAudioData(); 83 | } 84 | } 85 | 86 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_ThreeCommonArmorToRandomArmor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_ThreeCommonArmorToRandomArmor : CraftingRecipe { 6 | 7 | List armorTypes; 8 | 9 | public override bool IsRecipePossible(List inputItems) 10 | { 11 | dictCachedItemsToUse.Clear(); 12 | itemRefsUsed.Clear(); 13 | int countOfArmor = 0; 14 | highestCVOfInputItems = 1.0f; 15 | armorTypes = new List(); 16 | 17 | foreach (Item itm in inputItems) 18 | { 19 | if (itm.itemType != ItemTypes.ARMOR) continue; 20 | Armor arm = itm as Armor; 21 | if (arm.rarity != Rarity.COMMON) continue; 22 | countOfArmor++; 23 | dictCachedItemsToUse.Add(itm, 1); 24 | itemRefsUsed.Add(itm.actorRefName); 25 | if (itm.challengeValue > highestCVOfInputItems) 26 | { 27 | highestCVOfInputItems = itm.challengeValue; 28 | } 29 | if (!armorTypes.Contains(arm.armorType)) 30 | { 31 | armorTypes.Add(arm.armorType); 32 | } 33 | if (countOfArmor == 3) 34 | { 35 | return true; 36 | } 37 | } 38 | 39 | return false; 40 | } 41 | 42 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 43 | { 44 | Armor lookupTemplate = GetPossibleItemRef("bodyarmor", highestCVOfInputItems - 0.2f, highestCVOfInputItems) as Armor; 45 | 46 | Armor armorToMake = new Armor(); 47 | armorToMake.CopyFromItem(lookupTemplate); 48 | armorToMake.SetUniqueIDAndAddToDict(); 49 | List returnItems = new List() { armorToMake }; 50 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 51 | return returnItems; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Assets/Resources/MapObjects/SpriteFontManager.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_SourcePrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1034132330002240} 13 | m_IsPrefabAsset: 1 14 | --- !u!1 &1034132330002240 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_CorrespondingSourceObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 6 20 | m_Component: 21 | - component: {fileID: 4500588851544228} 22 | - component: {fileID: 114904774395215702} 23 | m_Layer: 0 24 | m_Name: SpriteFontManager 25 | m_TagString: Untagged 26 | m_Icon: {fileID: 0} 27 | m_NavMeshLayer: 0 28 | m_StaticEditorFlags: 0 29 | m_IsActive: 1 30 | --- !u!4 &4500588851544228 31 | Transform: 32 | m_ObjectHideFlags: 1 33 | m_CorrespondingSourceObject: {fileID: 0} 34 | m_PrefabInternal: {fileID: 100100000} 35 | m_GameObject: {fileID: 1034132330002240} 36 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 37 | m_LocalPosition: {x: 407.0665, y: 224.56836, z: 0} 38 | m_LocalScale: {x: 1, y: 1, z: 1} 39 | m_Children: [] 40 | m_Father: {fileID: 0} 41 | m_RootOrder: 0 42 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 43 | --- !u!114 &114904774395215702 44 | MonoBehaviour: 45 | m_ObjectHideFlags: 1 46 | m_CorrespondingSourceObject: {fileID: 0} 47 | m_PrefabInternal: {fileID: 100100000} 48 | m_GameObject: {fileID: 1034132330002240} 49 | m_Enabled: 1 50 | m_EditorHideFlags: 0 51 | m_Script: {fileID: 11500000, guid: 04b4b416470443a4192f9e5535fa770c, type: 3} 52 | m_Name: 53 | m_EditorClassIdentifier: 54 | spriteFontAssets: 55 | - {fileID: 11400000, guid: d642fd3102069924594b51718df92589, type: 2} 56 | - {fileID: 11400000, guid: 477b09cbfb5ca42489bc308ab2118575, type: 2} 57 | - {fileID: 11400000, guid: 4c8c5c639b49ab541ac9cb7c2123e1ec, type: 2} 58 | -------------------------------------------------------------------------------- /Assets/LogosSettings.lighting: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!850595691 &4890085278179872738 4 | LightingSettings: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: LogosSettings 10 | serializedVersion: 3 11 | m_GIWorkflowMode: 0 12 | m_EnableBakedLightmaps: 1 13 | m_EnableRealtimeLightmaps: 1 14 | m_RealtimeEnvironmentLighting: 1 15 | m_BounceScale: 1 16 | m_AlbedoBoost: 1 17 | m_IndirectOutputScale: 1 18 | m_UsingShadowmask: 0 19 | m_BakeBackend: 0 20 | m_LightmapMaxSize: 1024 21 | m_BakeResolution: 40 22 | m_Padding: 2 23 | m_TextureCompression: 1 24 | m_AO: 0 25 | m_AOMaxDistance: 1 26 | m_CompAOExponent: 1 27 | m_CompAOExponentDirect: 0 28 | m_ExtractAO: 0 29 | m_MixedBakeMode: 1 30 | m_LightmapsBakeMode: 1 31 | m_FilterMode: 1 32 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} 33 | m_ExportTrainingData: 0 34 | m_TrainingDataDestination: TrainingData 35 | m_RealtimeResolution: 2 36 | m_ForceWhiteAlbedo: 0 37 | m_ForceUpdates: 0 38 | m_FinalGather: 0 39 | m_FinalGatherRayCount: 256 40 | m_FinalGatherFiltering: 1 41 | m_PVRCulling: 1 42 | m_PVRSampling: 1 43 | m_PVRDirectSampleCount: 32 44 | m_PVRSampleCount: 500 45 | m_PVREnvironmentSampleCount: 500 46 | m_PVREnvironmentReferencePointCount: 2048 47 | m_LightProbeSampleCountMultiplier: 4 48 | m_PVRBounces: 2 49 | m_PVRMinBounces: 2 50 | m_PVREnvironmentMIS: 0 51 | m_PVRFilteringMode: 2 52 | m_PVRDenoiserTypeDirect: 0 53 | m_PVRDenoiserTypeIndirect: 0 54 | m_PVRDenoiserTypeAO: 0 55 | m_PVRFilterTypeDirect: 0 56 | m_PVRFilterTypeIndirect: 0 57 | m_PVRFilterTypeAO: 0 58 | m_PVRFilteringGaussRadiusDirect: 1 59 | m_PVRFilteringGaussRadiusIndirect: 5 60 | m_PVRFilteringGaussRadiusAO: 2 61 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 62 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 63 | m_PVRFilteringAtrousPositionSigmaAO: 1 64 | -------------------------------------------------------------------------------- /Assets/MainSettings.lighting: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!850595691 &4890085278179872738 4 | LightingSettings: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: MainSettings 10 | serializedVersion: 3 11 | m_GIWorkflowMode: 0 12 | m_EnableBakedLightmaps: 1 13 | m_EnableRealtimeLightmaps: 1 14 | m_RealtimeEnvironmentLighting: 1 15 | m_BounceScale: 1 16 | m_AlbedoBoost: 1 17 | m_IndirectOutputScale: 1 18 | m_UsingShadowmask: 0 19 | m_BakeBackend: 0 20 | m_LightmapMaxSize: 1024 21 | m_BakeResolution: 40 22 | m_Padding: 2 23 | m_TextureCompression: 1 24 | m_AO: 0 25 | m_AOMaxDistance: 1 26 | m_CompAOExponent: 1 27 | m_CompAOExponentDirect: 0 28 | m_ExtractAO: 0 29 | m_MixedBakeMode: 1 30 | m_LightmapsBakeMode: 1 31 | m_FilterMode: 1 32 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} 33 | m_ExportTrainingData: 0 34 | m_TrainingDataDestination: TrainingData 35 | m_RealtimeResolution: 2 36 | m_ForceWhiteAlbedo: 0 37 | m_ForceUpdates: 0 38 | m_FinalGather: 0 39 | m_FinalGatherRayCount: 256 40 | m_FinalGatherFiltering: 1 41 | m_PVRCulling: 1 42 | m_PVRSampling: 1 43 | m_PVRDirectSampleCount: 32 44 | m_PVRSampleCount: 500 45 | m_PVREnvironmentSampleCount: 500 46 | m_PVREnvironmentReferencePointCount: 2048 47 | m_LightProbeSampleCountMultiplier: 4 48 | m_PVRBounces: 2 49 | m_PVRMinBounces: 2 50 | m_PVREnvironmentMIS: 0 51 | m_PVRFilteringMode: 2 52 | m_PVRDenoiserTypeDirect: 0 53 | m_PVRDenoiserTypeIndirect: 0 54 | m_PVRDenoiserTypeAO: 0 55 | m_PVRFilterTypeDirect: 0 56 | m_PVRFilterTypeIndirect: 0 57 | m_PVRFilterTypeAO: 0 58 | m_PVRFilteringGaussRadiusDirect: 1 59 | m_PVRFilteringGaussRadiusIndirect: 5 60 | m_PVRFilteringGaussRadiusAO: 2 61 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 62 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 63 | m_PVRFilteringAtrousPositionSigmaAO: 1 64 | -------------------------------------------------------------------------------- /Assets/Introloop/Scripts/IntroloopSettings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | /// Copyright (c) 2015 Sirawat Pitaksarit, Exceed7 Experiments LP 3 | /// http://www.exceed7.com/introloop 4 | */ 5 | 6 | using UnityEngine; 7 | using UnityEngine.Audio; 8 | 9 | public class IntroloopSettings : MonoBehaviour{ 10 | 11 | /// 12 | ///This is the path of IntroloopPlayer template relative to Resources folder. 13 | /// 14 | public static readonly string defaultTemplatePath = "Introloop/IntroloopPlayer"; 15 | 16 | /// 17 | ///The first call to IntroloopPlayer.Instance will spawn a GameObject of 18 | ///this name in your scene. 19 | /// 20 | public static readonly string defaultGameObjectName = "IntroloopPlayer"; 21 | 22 | /* Planned feature 23 | 24 | /// 25 | /// The ID of this IntroloopPlayer instance. Using the singleton accessor IntroloopPlayer.Instance will 26 | /// result in getting the player of ID 0. 27 | /// 28 | /// Get the player of another ID with IntroloopPlayer.InstanceID(id) 29 | /// 30 | /// In template prefab path, the prefab with matching instanceID will get copied to the one in scene. 31 | /// Use this fact to assign different AudioMixerGroup to each instance so you can get 32 | /// the high level control of each one separately! 33 | /// 34 | [ImportantInt] 35 | public int instanceID; 36 | 37 | */ 38 | 39 | [Space(8)] 40 | [Header("Settings")] 41 | 42 | /// 43 | ///Drag your AudioMixerGroup to this in IntroloopPlayer template. 44 | /// 45 | public AudioMixerGroup routeToMixerGroup; 46 | 47 | /// 48 | /// Method with "Fade" and without fade time parameter will use this length. 49 | /// 50 | [PositiveFloat("Sec.")] 51 | public float defaultFadeLength; 52 | 53 | /// 54 | /// Check this in your IntroloopPlayer template to log various debug data. 55 | /// 56 | public bool logInformation; 57 | } 58 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_TurnEnumerators.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | 6 | public partial class GameMasterScript 7 | { 8 | struct NextTurnInfoStruct_Switch_Terrible 9 | { 10 | public bool runASAP; 11 | public TurnData td; 12 | public bool newTurn; 13 | public int idxThread; 14 | } 15 | private NextTurnInfoStruct_Switch_Terrible terribleNextTurnInfo; 16 | 17 | IEnumerator WaitThenContinueTurn(TurnData td, float time, Actor actorWhoMovedTurn) 18 | { 19 | yield return new WaitForSeconds(time); 20 | td.actorThatInitiatedTurn = actorWhoMovedTurn; 21 | SetAnimationPlaying(false); 22 | TryNextTurn(td, false, UnityEngine.Random.Range(0, Int32.MaxValue)); 23 | } 24 | 25 | IEnumerator WaitCheckResultThenContinueTurn(CombatResult result, TurnData tData, float time, Actor initiator) 26 | { 27 | yield return new WaitForSeconds(time); 28 | tData.actorThatInitiatedTurn = initiator; 29 | SetAnimationPlaying(false); 30 | CombatResultsScript.CheckCombatResult(result, tData.GetSingleTargetActor(), MapMasterScript.activeMap); 31 | TryNextTurn(tData, false, UnityEngine.Random.Range(0, Int32.MaxValue)); 32 | } 33 | 34 | public IEnumerator WaitCheckResultsThenContinueTurn(List results, List targets, float time, TurnData td, Actor initiator, int iThreadIndex = 0) 35 | { 36 | #if UNITY_EDITOR 37 | //Debug.Log("Waiting " + time + " to continue turn " + turnNumber + " idx " + iThreadIndex); 38 | #endif 39 | yield return new WaitForSeconds(time); 40 | SetAnimationPlaying(false); 41 | td.actorThatInitiatedTurn = initiator; 42 | for (int i = 0; i < results.Count; i++) 43 | { 44 | CombatResultsScript.CheckCombatResult(results[i], targets[i], MapMasterScript.activeMap); 45 | } 46 | TryNextTurn(td, false, UnityEngine.Random.Range(0, Int32.MaxValue)); 47 | } 48 | 49 | } -------------------------------------------------------------------------------- /Assets/OscillateMovement.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class OscillateMovement : MonoBehaviour 6 | { 7 | 8 | public float loopTime = 0.5f; 9 | public float maxDistance = 0.2f; 10 | 11 | Vector2 startPosition; 12 | 13 | bool initialized = false; 14 | 15 | bool animatingUp = false; 16 | float timeAtStateChange = 0; 17 | 18 | // Start is called before the first frame update 19 | void Awake() 20 | { 21 | Initialize(); 22 | } 23 | 24 | void OnEnable() 25 | { 26 | Initialize(); 27 | } 28 | 29 | void Initialize() 30 | { 31 | if (!initialized) 32 | { 33 | startPosition = transform.localPosition; 34 | initialized = true; 35 | } 36 | 37 | StartAnimation(); 38 | } 39 | 40 | void StartAnimation() 41 | { 42 | animatingUp = false; 43 | timeAtStateChange = Time.time; 44 | } 45 | 46 | // Update is called once per frame 47 | void Update() 48 | { 49 | float time = Time.time; 50 | 51 | float pComplete = (time - timeAtStateChange) / loopTime; 52 | 53 | bool complete = false; 54 | 55 | if (pComplete >= 1f) 56 | { 57 | pComplete = 1f; 58 | complete = true; 59 | } 60 | 61 | Vector2 pos = transform.localPosition; 62 | float y = startPosition.y; 63 | 64 | if (animatingUp) 65 | { 66 | y = EasingFunction.EaseOutQuad(startPosition.y, startPosition.y + maxDistance, pComplete); 67 | } 68 | else 69 | { 70 | y = EasingFunction.EaseOutQuad(startPosition.y + maxDistance, startPosition.y, pComplete); 71 | } 72 | 73 | pos.y = y; 74 | 75 | transform.localPosition = pos; 76 | 77 | if (complete) 78 | { 79 | animatingUp = !animatingUp; 80 | timeAtStateChange = time; 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Assets/Resources/CampaignSelectGrayscaler.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/GreyScalePercent" { 4 | Properties 5 | { 6 | [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} 7 | _Color("Tint", Color) = (1,1,1,1) 8 | [MaterialToggle] PixelSnap("Pixel snap", Float) = 0 9 | _GrayScale("_GrayScale", Range(0.0, 1.0)) = 0.0 10 | } 11 | 12 | SubShader 13 | { 14 | Tags 15 | { 16 | "Queue" = "Transparent" 17 | "IgnoreProjector" = "True" 18 | "RenderType" = "Transparent" 19 | "PreviewType" = "Plane" 20 | "CanUseSpriteAtlas" = "True" 21 | } 22 | 23 | Cull Off 24 | Lighting Off 25 | ZWrite Off 26 | Blend One OneMinusSrcAlpha 27 | 28 | Pass 29 | { 30 | CGPROGRAM 31 | #pragma vertex vert 32 | #pragma fragment frag 33 | #pragma multi_compile _ PIXELSNAP_ON 34 | #pragma multi_compile _ GRAYSCALE_ON GRAYSCALE_OFF 35 | #include "UnityCG.cginc" 36 | 37 | struct appdata_t 38 | { 39 | float4 vertex : POSITION; 40 | float4 color : COLOR; 41 | float2 texcoord : TEXCOORD0; 42 | 43 | }; 44 | 45 | struct v2f 46 | { 47 | float4 vertex : SV_POSITION; 48 | fixed4 color : COLOR; 49 | half2 texcoord : TEXCOORD0; 50 | }; 51 | 52 | fixed4 _Color; 53 | float _GrayScale; 54 | 55 | v2f vert(appdata_t IN) 56 | { 57 | v2f OUT; 58 | OUT.vertex = UnityObjectToClipPos(IN.vertex); 59 | OUT.texcoord = IN.texcoord; 60 | OUT.color = IN.color * _Color; 61 | #ifdef PIXELSNAP_ON 62 | OUT.vertex = UnityPixelSnap(OUT.vertex); 63 | #endif 64 | 65 | return OUT; 66 | } 67 | 68 | sampler2D _MainTex; 69 | 70 | fixed4 frag(v2f IN) : SV_Target 71 | { 72 | fixed4 c = tex2D(_MainTex, IN.texcoord) * IN.color; 73 | c.rgb *= c.a; 74 | fixed madGray = (c.r + c.g + c.b) / 3; 75 | fixed4 avg; 76 | avg.r = lerp(c.r, madGray, _GrayScale); 77 | avg.g = lerp(c.g, madGray, _GrayScale); 78 | avg.b = lerp(c.b, madGray, _GrayScale); 79 | avg.a = c.a; 80 | c.rgb = avg; 81 | 82 | return c; 83 | } 84 | ENDCG 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Assets/MasteriesBakedData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class MasteriesBakedData { 6 | 7 | public static List allBaseWeaponMasteries = new List() 8 | { 9 | "skill_clawmastery1", "skill_swordmastery1", "skill_axemastery1", "skill_macemastery1", "skill_daggermastery1", 10 | "skill_staffmastery1", "skill_bowmastery1", "skill_spearmastery1", "skill_fistmastery1" 11 | }; 12 | 13 | public static List allArmorMasteries = new List() 14 | { 15 | "skill_lightarmormastery1", "skill_mediumarmormastery1", "skill_heavyarmormastery1" 16 | }; 17 | 18 | 19 | /// 20 | /// Game MUST be started with a heroPCActor for this to work! 21 | /// 22 | /// 23 | public static string GetUnknownWeaponMastery() 24 | { 25 | List availableMasteries = new List(); 26 | 27 | foreach (string str in MasteriesBakedData.allBaseWeaponMasteries) 28 | { 29 | if (!GameMasterScript.heroPCActor.myAbilities.HasAbilityRef(str)) 30 | { 31 | availableMasteries.Add(str); 32 | } 33 | } 34 | 35 | if (availableMasteries.Count == 0) return ""; 36 | return availableMasteries.GetRandomElement(); 37 | } 38 | 39 | /// 40 | /// Game MUST be started with a heroPCActor for this to work! 41 | /// 42 | /// 43 | public static string GetUnknownArmorMastery() 44 | { 45 | List availableMasteries = new List(); 46 | 47 | foreach (string str in MasteriesBakedData.allArmorMasteries) 48 | { 49 | if (!GameMasterScript.heroPCActor.myAbilities.HasAbilityRef(str)) 50 | { 51 | availableMasteries.Add(str); 52 | } 53 | } 54 | 55 | if (availableMasteries.Count == 0) return ""; 56 | return availableMasteries.GetRandomElement(); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_TwoRelicsToRelic.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | 6 | public class CraftingRecipe_TwoRelicsToRelic : CraftingRecipe 7 | { 8 | 9 | float totalCVOfRelics = 0f; 10 | 11 | public override bool IsRecipePossible(List inputItems) 12 | { 13 | dictCachedItemsToUse.Clear(); 14 | itemRefsUsed.Clear(); 15 | highestCVOfInputItems = 1.0f; 16 | totalCVOfRelics = 0f; 17 | 18 | foreach (Item itm in inputItems) 19 | { 20 | if (!itm.customItemFromGenerator) continue; 21 | 22 | dictCachedItemsToUse.Add(itm, 1); 23 | highestCVOfInputItems = itm.challengeValue; 24 | totalCVOfRelics += itm.challengeValue; 25 | 26 | if (dictCachedItemsToUse.Values.Count == 2) return true; 27 | } 28 | 29 | return false; 30 | } 31 | 32 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 33 | { 34 | float targetCV = (totalCVOfRelics / 2f); 35 | 36 | int targetRank = BalanceData.ConvertChallengeValueToRank(targetCV); 37 | 38 | if (UnityEngine.Random.Range(0, 2) == 0 && targetRank < 10) 39 | { 40 | targetCV += 0.05f; 41 | } 42 | 43 | 44 | Item copiedRelic = null; 45 | 46 | try 47 | { 48 | Item legRelic = LegendaryMaker.CreateNewLegendaryItem(UnityEngine.Random.Range(targetCV, targetCV)); 49 | copiedRelic = LootGeneratorScript.CreateItemFromTemplateRef(legRelic.actorRefName, targetCV, 0f, false, true); 50 | } 51 | catch(Exception e) 52 | { 53 | if (Debug.isDebugBuild) Debug.Log("Failed making random relic: " + e); 54 | copiedRelic = LootGeneratorScript.GenerateLoot(2f, 5f); 55 | } 56 | 57 | List returnItems = new List() { copiedRelic }; 58 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 59 | return returnItems; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Assets/MapTileDisplayable.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class MapTileDisplayable : MonoBehaviour { 5 | 6 | public bool alive; 7 | private Vector2 truePosition; 8 | private Vector2 drawPosition; 9 | private Vector2 gridPosition; 10 | public Vector2 posInArray; 11 | public bool visible; 12 | public bool blocking; 13 | public VisualTileType vttype; 14 | public TileTypes internalTileType; 15 | 16 | public bool childTileVisible; 17 | public bool childTileDisplayRadius; 18 | public bool childTileExplored; 19 | 20 | // Use this for initialization 21 | void Start () { 22 | 23 | } 24 | 25 | void Awake () 26 | { 27 | posInArray = new Vector2(); 28 | } 29 | 30 | public void SetPosInArray(int x, int y) 31 | { 32 | posInArray = new Vector2(x, y); 33 | } 34 | 35 | public void SetBlocking(bool block) 36 | { 37 | blocking = block; 38 | } 39 | 40 | public bool GetBlocking() 41 | { 42 | return blocking; 43 | } 44 | 45 | public void SetGridPosition(Vector2 pos) 46 | { 47 | gridPosition.x = pos.x; 48 | gridPosition.y = pos.y; 49 | } 50 | 51 | public Vector2 GetGridPosition() 52 | { 53 | return gridPosition; 54 | } 55 | 56 | public bool GetVisible() 57 | { 58 | return visible; 59 | } 60 | 61 | public void SetVisible(bool visible) 62 | { 63 | this.visible = visible; 64 | } 65 | 66 | public bool IsAlive() 67 | { 68 | return alive; 69 | } 70 | 71 | public void SetAlive(bool alive) 72 | { 73 | this.alive = alive; 74 | } 75 | 76 | public void SetDrawPosition(Vector2 pos) 77 | { 78 | drawPosition = pos; 79 | } 80 | 81 | public Vector2 GetDrawPosition() 82 | { 83 | return drawPosition; 84 | } 85 | 86 | public void SetTruePosition(Vector2 pos) 87 | { 88 | truePosition = pos; 89 | } 90 | 91 | public Vector2 GetTruePosition() 92 | { 93 | return truePosition; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_TurnEndFunctions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System.Reflection; 5 | using System; 6 | 7 | public partial class GameMasterScript 8 | { 9 | public Dictionary, string[]> dictEndOfTurnFunctions; 10 | 11 | public static void AddEndOfTurnFunction(Action newFunction, string[] args) 12 | { 13 | if (!gmsSingleton.dictEndOfTurnFunctions.ContainsKey(newFunction)) 14 | { 15 | gmsSingleton.dictEndOfTurnFunctions.Add(newFunction, args); 16 | } 17 | else 18 | { 19 | gmsSingleton.dictEndOfTurnFunctions[newFunction] = args; 20 | } 21 | } 22 | 23 | public void ProcessAllEndOfTurnFunctions() 24 | { 25 | // Check if active map adds its own function! 26 | if (!string.IsNullOrEmpty(MapMasterScript.activeMap.dungeonLevelData.script_onTurnEnd)) 27 | { 28 | Action myFunc; 29 | if (TDGenericFunctions.dictDelegates.TryGetValue(MapMasterScript.activeMap.dungeonLevelData.script_onTurnEnd, out myFunc)) 30 | { 31 | myFunc(new string[0]); 32 | } 33 | else 34 | { 35 | MethodInfo runscript = CustomAlgorithms.TryGetMethod(typeof(TDGenericFunctions), MapMasterScript.activeMap.dungeonLevelData.script_onTurnEnd); 36 | object[] paramList = new object[1]; 37 | paramList[0] = new string[0]; 38 | runscript.Invoke(null, paramList); 39 | } 40 | } 41 | 42 | // Runs all enqueued functions *in the order they were added* 43 | // These functions should live in TDGenericFunctions 44 | foreach (Action queuedAction in dictEndOfTurnFunctions.Keys) 45 | { 46 | string[] argsForAction = dictEndOfTurnFunctions[queuedAction]; 47 | queuedAction.Invoke(argsForAction); 48 | } 49 | 50 | // Now that all functions have been processed, clear the dictionary. 51 | dictEndOfTurnFunctions.Clear(); 52 | } 53 | } -------------------------------------------------------------------------------- /Assets/OutOfBoundsUICheckScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | 6 | public class OutOfBoundsUICheckScript : MonoBehaviour { 7 | 8 | TextMeshProUGUI[] myTMPro; 9 | bool initialized = false; 10 | bool textActive = true; 11 | 12 | const int FRAMES_TO_UPDATE = 4; 13 | int frameUpdate = 0; 14 | 15 | void Start() 16 | { 17 | myTMPro = GetComponentsInChildren(); 18 | initialized = true; 19 | } 20 | 21 | void SetTextActiveState(bool state) 22 | { 23 | if (textActive == state) 24 | { 25 | return; 26 | } 27 | 28 | textActive = state; 29 | for (int i = 0; i < myTMPro.Length; i++) 30 | { 31 | myTMPro[i].gameObject.SetActive(state); 32 | } 33 | } 34 | 35 | void Update () { 36 | if (!initialized) return; 37 | if (!GameMasterScript.gameLoadSequenceCompleted) return; 38 | 39 | // Don't need to recalculate this every frame, it's pretty expensive. 40 | frameUpdate++; 41 | if (frameUpdate < FRAMES_TO_UPDATE) 42 | { 43 | return; 44 | } 45 | frameUpdate = 0; 46 | Vector3 tPos = gameObject.transform.position; 47 | if (textActive) 48 | { 49 | if (tPos.y > Screen.height + 25f) 50 | { 51 | // We're off the screen. Can disable the object entirely? 52 | if (gameObject.activeSelf) 53 | { 54 | gameObject.SetActive(false); 55 | } 56 | SetTextActiveState(false); 57 | } 58 | else if (tPos.y < -50f) 59 | { 60 | // Text hasn't reached the bottom of screen yet. 61 | SetTextActiveState(false); 62 | } 63 | } 64 | else 65 | { 66 | if (tPos.y <= Screen.height + 25f && tPos.y >= -50f) 67 | { 68 | SetTextActiveState(true); 69 | } 70 | } 71 | 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Assets/PlayerMods_ListEntry.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | using UnityEngine.UI; 6 | 7 | public class PlayerMods_ListEntry : MonoBehaviour { 8 | 9 | public Image modIcon; 10 | public TextMeshProUGUI modName; 11 | public TextMeshProUGUI modDescription; 12 | public int modFileCount; 13 | public Toggle modToggle; 14 | 15 | public ModDataPack dataPack; 16 | 17 | bool dataLoaded = false; 18 | 19 | IEnumerator WaitThenCheckToggleValue() 20 | { 21 | yield return new WaitForSeconds(0.05f); 22 | OnToggleValueChanged(); 23 | } 24 | 25 | public void OnToggleValueChanged() 26 | { 27 | if (!dataLoaded && gameObject.activeSelf) 28 | { 29 | StartCoroutine(WaitThenCheckToggleValue()); 30 | return; 31 | } 32 | //Debug.Log("Toggle is " + modToggle.isOn + " datapack value was " + dataPack.enabled); 33 | dataPack.enabled = modToggle.isOn; 34 | if (dataPack.enabled) 35 | { 36 | UIManagerScript.PlayCursorSound("UITick"); 37 | } 38 | else 39 | { 40 | UIManagerScript.PlayCursorSound("UITock"); 41 | } 42 | RefreshHighlights(); 43 | } 44 | 45 | public void LoadModData() 46 | { 47 | modIcon.sprite = dataPack.logoSprite; 48 | modName.text = dataPack.modName; 49 | modDescription.text = dataPack.modDescription; 50 | modToggle.isOn = dataPack.enabled; 51 | dataLoaded = true; 52 | RefreshHighlights(); 53 | } 54 | 55 | void RefreshHighlights() 56 | { 57 | if (dataPack == null) 58 | { 59 | return; 60 | } 61 | switch (dataPack.enabled) 62 | { 63 | case true: 64 | modName.text = UIManagerScript.greenHexColor + dataPack.modName + " (Active!)"; 65 | break; 66 | case false: 67 | modName.text = dataPack.modName + " (Inactive)"; 68 | break; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Assets/Resources/SpriteEffects/FireBombEffectSystem.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &116086 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 100100000} 8 | serializedVersion: 5 9 | m_Component: 10 | - component: {fileID: 418978} 11 | - component: {fileID: 11482308} 12 | m_Layer: 0 13 | m_Name: FireBombEffectSystem 14 | m_TagString: Untagged 15 | m_Icon: {fileID: 0} 16 | m_NavMeshLayer: 0 17 | m_StaticEditorFlags: 0 18 | m_IsActive: 1 19 | --- !u!4 &418978 20 | Transform: 21 | m_ObjectHideFlags: 1 22 | m_PrefabParentObject: {fileID: 0} 23 | m_PrefabInternal: {fileID: 100100000} 24 | m_GameObject: {fileID: 116086} 25 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 26 | m_LocalPosition: {x: 0, y: 0, z: 0} 27 | m_LocalScale: {x: 1, y: 1, z: 1} 28 | m_Children: [] 29 | m_Father: {fileID: 0} 30 | m_RootOrder: 0 31 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 32 | --- !u!114 &11482308 33 | MonoBehaviour: 34 | m_ObjectHideFlags: 1 35 | m_PrefabParentObject: {fileID: 0} 36 | m_PrefabInternal: {fileID: 100100000} 37 | m_GameObject: {fileID: 116086} 38 | m_Enabled: 1 39 | m_EditorHideFlags: 0 40 | m_Script: {fileID: 11500000, guid: fbfcc75de3ad54e4bb9b4313ab5bdd6e, type: 3} 41 | m_Name: 42 | m_EditorClassIdentifier: 43 | mySpriteEffects: 44 | - spriteEffect: FireBombEffect 45 | randomSpawnXMin: -1 46 | randomSpawnXMax: 1 47 | randomSpawnYMin: -1 48 | randomSpawnYMax: 1 49 | numEffectTriggers: 4 50 | sequential: 1 51 | animDelay: 0.33 52 | overrideIndividualAudio: 0 53 | lifetime: 0 54 | refName: FireBombEffectSystem 55 | alwaysFlipAxes: 0 56 | randomlyFlipSpriteX: 0 57 | randomlyFlipSpriteY: 0 58 | loopAtEnd: 0 59 | setChildToParent: 0 60 | spawnTowardEdges: 0 61 | sparkleSystem: 0 62 | --- !u!1001 &100100000 63 | Prefab: 64 | m_ObjectHideFlags: 1 65 | serializedVersion: 2 66 | m_Modification: 67 | m_TransformParent: {fileID: 0} 68 | m_Modifications: [] 69 | m_RemovedComponents: [] 70 | m_ParentPrefab: {fileID: 0} 71 | m_RootGameObject: {fileID: 116086} 72 | m_IsPrefabParent: 1 73 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_ThreeCommonWeaponsToRandomWeapon.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_ThreeCommonWeaponsToRandomWeapon : CraftingRecipe { 6 | 7 | List wTypes; 8 | 9 | public override bool IsRecipePossible(List inputItems) 10 | { 11 | dictCachedItemsToUse.Clear(); 12 | itemRefsUsed.Clear(); 13 | int countOfWeapons = 0; 14 | highestCVOfInputItems = 1.0f; 15 | wTypes = new List(); 16 | 17 | foreach (Item itm in inputItems) 18 | { 19 | if (itm.itemType != ItemTypes.WEAPON) continue; 20 | Weapon w = itm as Weapon; 21 | if (w.rarity != Rarity.COMMON) continue; 22 | countOfWeapons++; 23 | dictCachedItemsToUse.Add(itm, 1); 24 | itemRefsUsed.Add(itm.actorRefName); 25 | if (itm.challengeValue > highestCVOfInputItems) 26 | { 27 | highestCVOfInputItems = itm.challengeValue; 28 | } 29 | if (!wTypes.Contains(w.weaponType)) 30 | { 31 | wTypes.Add(w.weaponType); 32 | } 33 | if (countOfWeapons == 3) 34 | { 35 | return true; 36 | } 37 | } 38 | 39 | return false; 40 | } 41 | 42 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 43 | { 44 | Weapon lookupTemplate = GetPossibleItemRef("weapons", highestCVOfInputItems - 0.2f, highestCVOfInputItems) as Weapon; 45 | while (wTypes.Contains(lookupTemplate.weaponType)) 46 | { 47 | lookupTemplate = GetPossibleItemRef("weapons", highestCVOfInputItems - 0.2f, highestCVOfInputItems) as Weapon; 48 | } 49 | 50 | Weapon weapToMake = new Weapon(); 51 | weapToMake.CopyFromItem(lookupTemplate); 52 | weapToMake.SetUniqueIDAndAddToDict(); 53 | List returnItems = new List() { weapToMake }; 54 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 55 | return returnItems; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Assets/CraftingRecipe_LucidOrbAndGemToRandomLucid.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_LucidOrbAndGemToRandomLucid : CraftingRecipe { 6 | 7 | public Item gemToUse; 8 | public Item orbToUse; 9 | 10 | public override bool IsRecipePossible(List inputItems) 11 | { 12 | dictCachedItemsToUse.Clear(); 13 | bool hasOrb = false; 14 | bool hasGem = false; 15 | 16 | foreach (Item itm in inputItems) 17 | { 18 | if (itm.IsLucidOrb()) 19 | { 20 | if (hasOrb) 21 | { 22 | if (itm.challengeValue > orbToUse.challengeValue) 23 | { 24 | orbToUse = itm; 25 | } 26 | } 27 | else 28 | { 29 | orbToUse = itm; 30 | hasOrb = true; 31 | } 32 | } 33 | 34 | if (itm.CheckTag((int)ItemFilters.GEM)) 35 | { 36 | if (hasGem) 37 | { 38 | if (itm.challengeValue > gemToUse.challengeValue) 39 | { 40 | gemToUse = itm; 41 | } 42 | } 43 | else 44 | { 45 | gemToUse = itm; 46 | hasGem = true; 47 | } 48 | } 49 | 50 | if (hasOrb && hasGem) 51 | { 52 | dictCachedItemsToUse.Add(orbToUse, 1); 53 | dictCachedItemsToUse.Add(gemToUse, 1); 54 | return true; 55 | } 56 | } 57 | 58 | return false; 59 | } 60 | 61 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 62 | { 63 | float cv = gemToUse.challengeValue; 64 | Item newOrb = ItemWorldUIScript.CreateItemWorldOrb(cv, true, false); 65 | List returnItems = new List() { newOrb }; 66 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 67 | return returnItems; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/Standard Assets/AssetBundleManager/Utility.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | #if UNITY_EDITOR 3 | using UnityEditor; 4 | #endif 5 | 6 | namespace AssetBundles 7 | { 8 | public class Utility 9 | { 10 | public const string AssetBundlesOutputPath = "AssetBundles"; 11 | 12 | public static string GetPlatformName() 13 | { 14 | #if UNITY_EDITOR 15 | return GetPlatformForAssetBundles(EditorUserBuildSettings.activeBuildTarget); 16 | #else 17 | return GetPlatformForAssetBundles(Application.platform); 18 | #endif 19 | } 20 | 21 | #if UNITY_EDITOR 22 | private static string GetPlatformForAssetBundles(BuildTarget target) 23 | { 24 | switch(target) 25 | { 26 | case BuildTarget.Android: 27 | return "Android"; 28 | case BuildTarget.iOS: 29 | return "iOS"; 30 | case BuildTarget.WebGL: 31 | return "WebGL"; 32 | //case BuildTarget.WebPlayer: 33 | // return "WebPlayer"; 34 | case BuildTarget.StandaloneWindows: 35 | case BuildTarget.StandaloneWindows64: 36 | return "Windows"; 37 | case BuildTarget.StandaloneOSXIntel: 38 | case BuildTarget.StandaloneOSXIntel64: 39 | case BuildTarget.StandaloneOSX: 40 | return "OSX"; 41 | // Add more build targets for your own. 42 | // If you add more targets, don't forget to add the same platforms to GetPlatformForAssetBundles(RuntimePlatform) function. 43 | default: 44 | return null; 45 | } 46 | } 47 | #endif 48 | 49 | private static string GetPlatformForAssetBundles(RuntimePlatform platform) 50 | { 51 | switch(platform) 52 | { 53 | case RuntimePlatform.Android: 54 | return "Android"; 55 | case RuntimePlatform.IPhonePlayer: 56 | return "iOS"; 57 | case RuntimePlatform.WebGLPlayer: 58 | return "WebGL"; 59 | //case RuntimePlatform.OSXWebPlayer: 60 | //case RuntimePlatform.WindowsWebPlayer: 61 | // return "WebPlayer"; 62 | case RuntimePlatform.WindowsPlayer: 63 | return "Windows"; 64 | case RuntimePlatform.OSXPlayer: 65 | return "OSX"; 66 | // Add more build targets for your own. 67 | // If you add more targets, don't forget to add the same platforms to GetPlatformForAssetBundles(RuntimePlatform) function. 68 | default: 69 | return null; 70 | } 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /Assets/ParallaxHandler.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class ParallaxHandler : MonoBehaviour { 7 | 8 | public float startXPosition; 9 | public float startYPosition; 10 | public float parallaxMult; 11 | public float playerMinX; 12 | public float playerMaxX; 13 | public float playerMinY; 14 | public float playerMaxY; 15 | public bool moveHorizontal; 16 | public bool moveVertical; 17 | 18 | // Update is called once per frame 19 | void Update () 20 | { 21 | if (UIManagerScript.globalDialogButtonResponse == DialogButtonResponse.BACKTOTITLE || !GameMasterScript.gameLoadSequenceCompleted || GameMasterScript.applicationQuittingOrChangingScenes) 22 | { 23 | return; 24 | } 25 | 26 | Vector2 pos = new Vector2(); 27 | Vector2 vFocusPosition = GameMasterScript.cameraScript.transform.position; 28 | 29 | //If the camera is in bounds, adjust accordingly 30 | if (vFocusPosition.x >= playerMinX && vFocusPosition.x <= playerMaxX) 31 | { 32 | pos.x = startXPosition - (vFocusPosition.x * parallaxMult); 33 | } 34 | else if (vFocusPosition.x < playerMinX) 35 | { 36 | pos.x = startXPosition - (playerMinX * parallaxMult); 37 | } 38 | else 39 | { 40 | pos.x = startXPosition - (playerMaxX * parallaxMult); 41 | } 42 | 43 | //Same with y values 44 | if (vFocusPosition.y >= playerMinY && vFocusPosition.y <= playerMaxY) 45 | { 46 | pos.y = startYPosition + (vFocusPosition.y * parallaxMult); 47 | } 48 | else if (vFocusPosition.y < playerMinY) 49 | { 50 | pos.y = startYPosition + (playerMinY * parallaxMult); 51 | } 52 | else 53 | { 54 | pos.y = startYPosition + (playerMaxY * parallaxMult); 55 | } 56 | 57 | if (!moveVertical) 58 | { 59 | pos.y = startYPosition; 60 | } 61 | if (!moveHorizontal) 62 | { 63 | pos.x = startXPosition; 64 | } 65 | 66 | transform.position = pos; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Assets/AutoEatFoodLogic.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public static class AutoEatFoodLogic 6 | { 7 | public const int AUTO_EAT_INTERVAL = 10; 8 | public const float MIN_HEALTH_EAT = 0.5f; 9 | 10 | public static void CheckForAndTryAutoEat() 11 | { 12 | if (!PlayerOptions.autoEatFood) 13 | { 14 | //Debug.Log("Options off."); 15 | return; 16 | } 17 | 18 | if (GameMasterScript.turnNumber - GameMasterScript.heroPCActor.lastTurnDamaged < AUTO_EAT_INTERVAL || 19 | GameMasterScript.heroPCActor.TurnsSinceLastCombatAction < AUTO_EAT_INTERVAL) 20 | { 21 | //Debug.Log("Too soon. " + GameMasterScript.turnNumber + " dmged " + GameMasterScript.heroPCActor.lastTurnDamaged + " last cmb: " + GameMasterScript.heroPCActor.TurnsSinceLastCombatAction); 22 | return; 23 | } 24 | 25 | if (GameMasterScript.heroPCActor.myStats.GetCurStatAsPercentOfMax(StatTypes.HEALTH) > MIN_HEALTH_EAT) 26 | { 27 | //Debug.Log("Health above min"); 28 | return; 29 | } 30 | 31 | if (!JobTrialScript.CanPlayerUseConsumable()) 32 | { 33 | //Debug.Log("No job trial"); 34 | return; 35 | } 36 | 37 | Item toEat = null; 38 | if (!CanEatFoodThisTurn(out toEat)) 39 | { 40 | //Debug.Log("Full or nothing to eat"); 41 | return; 42 | } 43 | 44 | GameMasterScript.gmsSingleton.ActuallyUseConsumable(toEat as Consumable); 45 | } 46 | 47 | static bool CanEatFoodThisTurn(out Item restorativeToUse) 48 | { 49 | restorativeToUse = null; 50 | if (GameMasterScript.heroPCActor.myStats.CheckHasStatusName("status_foodfull")) return false; 51 | 52 | if (GameMasterScript.heroPCActor.myInventory.HasAnyNonSpicedNonInstantRestorativeFood(out restorativeToUse)) 53 | { 54 | Item curry = null; 55 | if (GameMasterScript.heroPCActor.myInventory.GetCurry(out curry)) 56 | { 57 | restorativeToUse = curry; 58 | } 59 | return true; 60 | } 61 | 62 | return false; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Assets/TDScripts/CustomFunctionsFromXML/PostSummonFunctions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System.Linq; 5 | 6 | public class PostSummonFunctions 7 | { 8 | public static void AssignMeteorKeyAnimPositions(SummonActorEffect sae, Actor summonedActor) 9 | { 10 | int numMeteors = GameMasterScript.gmsSingleton.ReadTempGameData("num_meteors"); 11 | int meteorCounter = GameMasterScript.gmsSingleton.ReadTempGameData("meteor_counter"); 12 | 13 | if (meteorCounter >= numMeteors) 14 | { 15 | // Matched everything for this spellcast. 16 | return; 17 | } 18 | 19 | for (int i = 0; i < numMeteors; i++) 20 | { 21 | float xPos = GameMasterScript.gmsSingleton.ReadTempFloatData("meteor" + i + "x"); 22 | float yPos = GameMasterScript.gmsSingleton.ReadTempFloatData("meteor" + i + "y"); 23 | 24 | if (CustomAlgorithms.CompareFloats(summonedActor.GetPos().x, xPos) && CustomAlgorithms.CompareFloats(summonedActor.GetPos().y, yPos)) 25 | { 26 | summonedActor.SetActorData("meteoranim", 1); 27 | meteorCounter++; 28 | GameMasterScript.gmsSingleton.SetTempGameData("meteor_counter", meteorCounter); 29 | break; 30 | } 31 | } 32 | } 33 | 34 | public static void TryExtendCalligrapherSummon(SummonActorEffect sae, Actor summonedActor) 35 | { 36 | if (GameMasterScript.heroPCActor.myStats.CheckHasActiveStatusName("dualwielderbonus2")) 37 | { 38 | summonedActor.turnsToDisappear *= 2; 39 | summonedActor.maxTurnsToDisappear *= 2; 40 | } 41 | } 42 | 43 | public static void FillCombatBiography(SummonActorEffect sae, Actor summonedActor) 44 | { 45 | int strokesToWrite = 1; 46 | int statusCount = GameMasterScript.heroPCActor.myStats.CheckStatusQuantity("brushstroke_charge"); 47 | strokesToWrite += statusCount; 48 | GameMasterScript.heroPCActor.myStats.RemoveAllStatusByRef("brushstroke_charge"); 49 | if (strokesToWrite > 6) strokesToWrite = 6; 50 | summonedActor.SetActorData("brushstrokes", strokesToWrite); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_DataDictionaries.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public partial class GameMasterScript 6 | { 7 | public static Item GetItemFromRef(string refName) 8 | { 9 | if (refName == null) 10 | { 11 | Debug.Log("Cannot search for a null item!"); 12 | return null; 13 | } 14 | Item outItem; 15 | 16 | if (masterItemList.TryGetValue(refName, out outItem)) 17 | { 18 | return outItem; 19 | } 20 | else 21 | { 22 | //Debug.Log("Item not found: " + refName); 23 | return null; 24 | } 25 | } 26 | 27 | public static Conversation FindConversation(string refName) 28 | { 29 | Conversation outConvo; 30 | 31 | if (masterConversationList.TryGetValue(refName, out outConvo)) 32 | { 33 | return outConvo; 34 | } 35 | else 36 | { 37 | Debug.Log("Conversation " + refName + " not found."); 38 | return null; 39 | } 40 | } 41 | 42 | public static EffectScript GetEffectByRef(string refName) 43 | { 44 | EffectScript outEff; 45 | if (masterEffectList.TryGetValue(refName, out outEff)) 46 | { 47 | return outEff; 48 | } 49 | else 50 | { 51 | Debug.Log("Effect " + refName + " not found"); 52 | return null; 53 | } 54 | } 55 | 56 | public static StatusEffect FindStatusTemplateByName(string refName) 57 | { 58 | StatusEffect outSE; 59 | if (masterStatusList.TryGetValue(refName, out outSE)) 60 | { 61 | return outSE; 62 | } 63 | else 64 | { 65 | if (Debug.isDebugBuild && refName != "randomdebuff") Debug.Log("Couldn't find status template for " + refName); 66 | return null; 67 | } 68 | } 69 | 70 | public static ActorTable GetSpawnTable(string tableRef) 71 | { 72 | ActorTable returnElement; 73 | if (GameMasterScript.masterSpawnTableList.TryGetValue(tableRef, out returnElement)) 74 | { 75 | return returnElement; 76 | } 77 | 78 | return null; 79 | } 80 | } -------------------------------------------------------------------------------- /Assets/ElementalAuraManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class ElementalAuraManager : MonoBehaviour { 7 | 8 | public SpriteRenderer back; 9 | public SpriteRenderer front; 10 | 11 | public DamageTypes auraType; 12 | 13 | public const int NUM_FRAMES_IN_AURA = 16; 14 | public const int NUM_AURA_ELEMENTS = 5; 15 | public bool auraInitialized; 16 | public SpriteRenderer followSpriteRenderer; 17 | 18 | void Update() 19 | { 20 | if (followSpriteRenderer == null) return; 21 | 22 | back.color = followSpriteRenderer.color; 23 | front.color = followSpriteRenderer.color; 24 | back.enabled = followSpriteRenderer.enabled; 25 | front.enabled = followSpriteRenderer.enabled; 26 | 27 | } 28 | 29 | public void StopAndDie() 30 | { 31 | auraInitialized = false; 32 | GameMasterScript.ReturnToStack(gameObject, gameObject.name.Replace("(Clone)", string.Empty)); 33 | } 34 | 35 | public void UpdateSpriteOrder(int baseOrder) 36 | { 37 | back.sortingOrder = baseOrder - 1; 38 | front.sortingOrder = baseOrder + 1; 39 | } 40 | 41 | public void Initialize(DamageTypes element, SpriteRenderer followSR) 42 | { 43 | if (followSR == null) return; 44 | //if (auraInitialized) return; 45 | 46 | followSpriteRenderer = followSR; 47 | auraType = element; 48 | 49 | Animatable frontAnim = front.gameObject.GetComponent(); 50 | Animatable backAnim = back.gameObject.GetComponent(); 51 | 52 | for (int i = 0; i < NUM_FRAMES_IN_AURA; i++) 53 | { 54 | frontAnim.myAnimations[0].SetSpriteOnly(i, TDVisualEffects.GetElementalAuraSprite(element, true, i)); 55 | 56 | backAnim.myAnimations[0].SetSpriteOnly(i, TDVisualEffects.GetElementalAuraSprite(element, false, i)); 57 | } 58 | 59 | backAnim.SetAnim("Default"); 60 | frontAnim.SetAnim("Default"); 61 | 62 | gameObject.transform.localScale = Vector3.one; 63 | front.transform.localScale = Vector3.one; 64 | back.transform.localScale = Vector3.one; 65 | 66 | auraInitialized = true; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Assets/SpriteFontManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | using UnityEngine.UI; 6 | 7 | [System.Serializable] 8 | public class SpriteFontManager : MonoBehaviour { 9 | 10 | public TMP_SpriteAsset[] spriteFontAssets; 11 | 12 | Dictionary dictStringsToAssets; 13 | 14 | static SpriteFontManager singleton; 15 | 16 | // Use this for initialization 17 | void Awake () 18 | { 19 | if (singleton != null && singleton != this) 20 | { 21 | return; 22 | } 23 | dictStringsToAssets = new Dictionary(); 24 | for (int i = 0; i < spriteFontAssets.Length; i++) 25 | { 26 | dictStringsToAssets.Add(spriteFontAssets[i].name.ToLowerInvariant(), spriteFontAssets[i]); 27 | } 28 | DontDestroyOnLoad(this); 29 | 30 | singleton = this; 31 | } 32 | 33 | // Takes a DialogBoxScript and sets its TMPro text object's Sprite Font to the desired asset 34 | // Assets are assigned to the SpriteFontManager object in the editor 35 | 36 | // Possible assets and their sprites (0-index) are: 37 | // "HUDIcons" (Default): Timer, health, lightning bolt, Lv, boot/speed, JP, XP, gold coin 38 | // "type_icons" = Sword, fire, poison/acid, water, lightning, skull/shadow 39 | // "RingMenuSpritesheet" = flask, portal, frog, clock, nothing, bomb, bread, arrow, nothing, nothing 40 | public static void SetSpriteFontForDialogBox(DialogBoxScript dbs, string spriteFontAssetName) 41 | { 42 | if (singleton == null) return; 43 | singleton._SetSpriteFontForDialogBox(dbs, spriteFontAssetName); 44 | } 45 | 46 | void _SetSpriteFontForDialogBox(DialogBoxScript dbs, string spriteFontAssetName) 47 | { 48 | TMP_SpriteAsset retrievedAsset; 49 | if (dictStringsToAssets.TryGetValue(spriteFontAssetName.ToLowerInvariant(), out retrievedAsset)) 50 | { 51 | dbs.GetDialogText().spriteAsset = retrievedAsset; 52 | } 53 | else 54 | { 55 | Debug.LogError("WARNING! Sprite font asset " + spriteFontAssetName + " does not exist! Did you add it to the SpriteFontManager object in the editor?"); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/Dialogs/XML/dialog_shara_boss1_prefight.xml: -------------------------------------------------------------------------------- 1 | 2 | dialog_shara_boss1_prefight 3 | 1 4 | 1 5 | 1 6 | 1 7 | 8 | main 9 | BanditNeutralPortrait 10 | dialog_shara_boss1_prefight_1 11 | 15 | 16 | 17 | main2 18 | DirtbeakPortrait 19 | dialog_shara_boss1_prefight_2 20 | 24 | 25 | 26 | main3 27 | SharaAngryPortrait 28 | dialog_shara_boss1_prefight_3 29 | 33 | 34 | 35 | main4 36 | BanditNeutralPortrait 37 | dialog_shara_boss1_prefight_4 38 | 42 | 43 | 44 | main5 45 | DirtbeakPortrait 46 | dialog_shara_boss1_prefight_5 47 | 51 | 52 | 53 | main6 54 | SharaSurprisePortrait 55 | dialog_shara_boss1_prefight_6 56 | 60 | 61 | 62 | main7 63 | SharaSmugPortrait 64 | dialog_shara_boss1_prefight_7 65 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Assets/TooltipScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using TMPro; 5 | 6 | [System.Serializable] 7 | public class TooltipScript : MonoBehaviour { 8 | 9 | public const float FADE_IN_TIME = 0.18f; 10 | public const float DELAY_BEFORE_FADE = 0.32f; 11 | 12 | public float overrideFadeTime; 13 | public float overrideDelayTime; 14 | 15 | float fadeTime; 16 | float delayTime; 17 | 18 | public float timeAtEnable; 19 | public bool waitingToFade; 20 | 21 | public TextMeshProUGUI tooltipText; 22 | 23 | CanvasGroupFader cgf; 24 | 25 | // Use this for initialization 26 | void Start () { 27 | return; // 7/9/21 - Do we care about this at all? 28 | 29 | cgf = GetComponent(); 30 | if (tooltipText != null) 31 | { 32 | FontManager.LocalizeMe(tooltipText, TDFonts.WHITE); 33 | } 34 | fadeTime = FADE_IN_TIME; 35 | if (overrideFadeTime != 0) 36 | { 37 | fadeTime = overrideFadeTime; 38 | } 39 | delayTime = DELAY_BEFORE_FADE; 40 | if (overrideDelayTime != 0) 41 | { 42 | delayTime = overrideDelayTime; 43 | } 44 | } 45 | 46 | public void FadeInImmediately() 47 | { 48 | if (cgf == null) return; 49 | waitingToFade = false; 50 | cgf.SetAlpha(1f); 51 | } 52 | 53 | void OnEnable () 54 | { 55 | return; // 7/9/21 - Do we care about this at all? 56 | 57 | if (cgf == null) return; 58 | 59 | #if UNITY_SWITCH 60 | cgf.SetAlpha(1f); 61 | return; 62 | #else 63 | if (GameMasterScript.pretendSwitchEnabled) 64 | { 65 | cgf.SetAlpha(1f); 66 | return; 67 | } 68 | #endif 69 | cgf.SetAlpha(0f); 70 | timeAtEnable = Time.time; 71 | waitingToFade = true; 72 | } 73 | 74 | void Update () 75 | { 76 | return; // 7/9/21 - Do we care about this at all? 77 | 78 | if (waitingToFade) 79 | { 80 | float pComplete = (Time.time - timeAtEnable) / delayTime; 81 | if (pComplete >= 1.0f) 82 | { 83 | waitingToFade = false; 84 | cgf.FadeIn(fadeTime); 85 | } 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /Assets/Resources/DLCResources/DLC1/Dialogs/XML/dialog_shara_preboss2_passage.xml: -------------------------------------------------------------------------------- 1 | 2 | dialog_shara_preboss2_passage 3 | 1 4 | 1 5 | 1 6 | 7 | 8 | exit 9 | triggerpreboss2 10 | 1 11 | 12 | 13 | triggerpreboss2 14 | 1 15 | 16 | main 17 | BanditNeutralPortrait 18 | dialog_shara_preboss2_passage_1 19 | 23 | 24 | 25 | 26 | main2 27 | SharaSurprisePortrait 28 | dialog_shara_preboss2_passage_2 29 | 33 | 34 | 35 | 36 | main3 37 | BanditNeutralPortrait 38 | dialog_shara_preboss2_passage_3 39 | 43 | 44 | 45 | 46 | main4 47 | SharaThinkingPortrait 48 | dialog_shara_preboss2_passage_4 49 | 53 | 54 | 55 | 56 | main5 57 | BanditNeutralPortrait 58 | dialog_shara_preboss2_passage_5 59 | 63 | 64 | 65 | 66 | main6 67 | SharaSurprisePortrait 68 | dialog_shara_preboss2_passage_6 69 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /Assets/PlayerHUDStatsComponent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using TMPro; 6 | 7 | public class PlayerHUDStatsComponent : MonoBehaviour { 8 | 9 | public Image playerStaminaFill; 10 | public Image playerStaminaReservedFill; 11 | public Image playerHealthFill; 12 | public Image playerEnergyFill; 13 | public Image playerEnergyReservedFill; 14 | 15 | public Image playerLimitBreakFill; 16 | public GameObject limitBreakContainer; 17 | 18 | static PlayerHUDStatsComponent singleton; 19 | 20 | private void Start() 21 | { 22 | if (singleton != null && singleton != this) return; 23 | 24 | singleton = this; 25 | playerStaminaReservedFill.fillAmount = 0f; 26 | playerEnergyReservedFill.fillAmount = 0f; 27 | 28 | limitBreakContainer.SetActive(false); 29 | } 30 | 31 | public static void ToggleLimitBreak(bool state) 32 | { 33 | singleton.limitBreakContainer.SetActive(state); 34 | } 35 | 36 | public static void SetLimitBreakAmount(float amt) 37 | { 38 | float maxFillAmount = HeroPC.PERCENT_OF_HEALTH_LIMITBREAK; 39 | 40 | maxFillAmount -= (GameMasterScript.heroPCActor.myStats.CheckStatusQuantity("xp2_dragons") * 0.05f); 41 | 42 | amt = (amt / maxFillAmount); 43 | 44 | float prevAmount = singleton.playerLimitBreakFill.fillAmount; 45 | 46 | if (amt > 1f) 47 | { 48 | amt = 1f; 49 | } 50 | singleton.playerLimitBreakFill.fillAmount = amt; 51 | 52 | if (prevAmount < 1f && amt == 1f) 53 | { 54 | GameMasterScript.heroPCActor.OnLimitBreakReached(); 55 | } 56 | } 57 | 58 | public static void RefreshReservedEnergy(float energyReserved, float maxEnergy) 59 | { 60 | float percentOfMaxReserved = energyReserved / maxEnergy; 61 | singleton.playerEnergyReservedFill.fillAmount = percentOfMaxReserved; 62 | } 63 | 64 | public static void RefreshReservedStamina(float staminaReserved, float maxStamina) 65 | { 66 | float percentOfMaxReserved = staminaReserved / maxStamina; 67 | singleton.playerStaminaReservedFill.fillAmount = percentOfMaxReserved; 68 | } 69 | } 70 | 71 | public partial class UIManagerScript 72 | { 73 | public PlayerHUDStatsComponent hudPlayerStats; 74 | } 75 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_GemLeavesToGems.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | 6 | public class CraftingRecipe_GemLeavesToGems : CraftingRecipe { 7 | 8 | string refOfGemLeaf = ""; 9 | 10 | public override bool IsRecipePossible(List inputItems) 11 | { 12 | dictCachedItemsToUse.Clear(); 13 | int countOfGemLeaves = 0; 14 | int gemLeavesRemaining = numIngredients; 15 | refOfGemLeaf = ""; 16 | 17 | foreach (Item itm in inputItems) 18 | { 19 | if (itm.itemType != ItemTypes.CONSUMABLE) continue; 20 | 21 | if (string.IsNullOrEmpty(refOfGemLeaf)) 22 | { 23 | if (itm.actorRefName.Contains("cashcrop")) 24 | { 25 | refOfGemLeaf = itm.actorRefName; // we'll use this gem for the recipe 26 | } 27 | else 28 | { 29 | continue; 30 | } 31 | } 32 | else 33 | { 34 | if (itm.actorRefName != refOfGemLeaf) continue; // all gem must be the same 35 | } 36 | 37 | countOfGemLeaves += itm.GetQuantity(); 38 | 39 | if (itm.GetQuantity() <= gemLeavesRemaining) 40 | { 41 | dictCachedItemsToUse.Add(itm, itm.GetQuantity()); 42 | } 43 | else 44 | { 45 | dictCachedItemsToUse.Add(itm, gemLeavesRemaining); 46 | } 47 | 48 | gemLeavesRemaining -= itm.GetQuantity(); 49 | 50 | if (countOfGemLeaves >= numIngredients) 51 | { 52 | return true; 53 | } 54 | } 55 | 56 | return false; 57 | } 58 | 59 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 60 | { 61 | int gemLeafLevel = Int32.Parse(refOfGemLeaf.Substring(refOfGemLeaf.Length - 1, 1)); 62 | string gemRef = "item_gem" + gemLeafLevel; 63 | 64 | Consumable gem = LootGeneratorScript.CreateItemFromTemplateRef(gemRef, 1.0f, 0f, false) as Consumable; 65 | 66 | List returnItems = new List() { gem }; 67 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 68 | return returnItems; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Assets/GameMasterScript_ApplicationManagement.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.SceneManagement; 5 | using System; 6 | using Rewired; 7 | 8 | public partial class GameMasterScript 9 | { 10 | public void SaveAndQuitToTitle() 11 | { 12 | // Have to carefully manage Switch resources due to low RAM 13 | #if UNITY_SWITCH 14 | Switch_SaveDataHandler.FlushBytesLoadedAsync(); 15 | MapMasterScript.ReleaseAllTextures(); 16 | GC.Collect(); 17 | #endif 18 | SaveTheGame(autoSave: false); 19 | 20 | StartCoroutine(IWaitForSaveCompletionAndThenQuitToTitle()); 21 | } 22 | 23 | IEnumerator IWaitForSaveCompletionAndThenQuitToTitle() 24 | { 25 | while (CurrentSaveGameState != SaveGameState.NOT_SAVING) 26 | { 27 | yield return null; 28 | } 29 | ResetAllVariablesToGameLoad(); 30 | GameStartData.CurrentLoadState = LoadStates.BACK_TO_TITLE; 31 | applicationQuittingOrChangingScenes = true; 32 | LoadMainScene(); 33 | } 34 | 35 | public void SaveAndQuit() 36 | { 37 | SaveTheGame(autoSave: false); 38 | 39 | StartCoroutine(IWaitForSaveCompletionAndThenCloseApplication()); 40 | applicationQuittingOrChangingScenes = true; 41 | } 42 | 43 | IEnumerator IWaitForSaveCompletionAndThenCloseApplication() 44 | { 45 | while (CurrentSaveGameState != SaveGameState.NOT_SAVING) 46 | { 47 | yield return null; 48 | } 49 | Application.Quit(); 50 | } 51 | 52 | void OnApplicationFocus(bool hasFocus) 53 | { 54 | if (hasFocus) 55 | { 56 | tdHasFocus = true; 57 | TDInputHandler.IgnoreNextMouseAction(); 58 | MusicManagerScript.appHasFocus = true; 59 | //Debug.Log("Has focus!"); 60 | } 61 | else 62 | { 63 | tdHasFocus = false; 64 | MusicManagerScript.appHasFocus = false; 65 | //Debug.Log("No focus."); 66 | } 67 | } 68 | 69 | void OnDestroy() 70 | { 71 | 72 | #if UNITY_SWITCH 73 | ReInput.ControllerConnectedEvent -= OnControllerConnected; 74 | #else 75 | if (cMapper != null) 76 | { 77 | cMapper.restoreDefaultsDelegate -= OnRestoreDefaults; 78 | } 79 | #endif 80 | } 81 | } -------------------------------------------------------------------------------- /Assets/ChampionMod.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class ChampionMod 6 | { 7 | public string displayName; 8 | public string refName; 9 | public string accessoryRef; 10 | public float challengeValue; 11 | public float maxChallengeValue; 12 | public int exclusionGroup; 13 | public bool newGamePlusOnly; 14 | public bool displayNameOnHover; 15 | public List modPowers; 16 | 17 | public DamageTypes elementalAura; 18 | 19 | public bool shadowKingOnly; 20 | public bool memoryKingOnly; 21 | 22 | public Dictionary metaData; 23 | 24 | public static List modsForGodRealm = new List() 25 | { 26 | "monmod_hauler", 27 | "monmod_banisher", // stronger ver? 28 | "monmod_steeltoe", // stronger ver? 29 | "monmod_heavy2", 30 | "monmod_hurricane", 31 | "monmod_barrier", 32 | "monmod_illusionist", // stronger ver? 33 | "monmod_harrier", 34 | "monmod_blinking", 35 | "monmod_leadtouched", 36 | "monmod_regenerating2", 37 | "monmod_resbreaker", 38 | "monmod_frogmaster" // stronger ver? 39 | }; 40 | 41 | // you can only have one of these 42 | public static List godMods = new List() 43 | { 44 | "monmod_god_shadow", 45 | "monmod_god_fire", 46 | "monmod_god_water", 47 | "monmod_god_physical", 48 | "monmod_god_poison", 49 | "monmod_god_lightning" 50 | }; 51 | 52 | 53 | public ChampionMod() 54 | { 55 | metaData = new Dictionary(); 56 | modPowers = new List(); 57 | accessoryRef = null; 58 | maxChallengeValue = 99f; 59 | shadowKingOnly = false; 60 | displayNameOnHover = true; 61 | newGamePlusOnly = false; 62 | memoryKingOnly = false; 63 | elementalAura = DamageTypes.COUNT; // no aura by default 64 | } 65 | 66 | /// 67 | /// Returns TRUE if this mod is for 'god' monsters only 68 | /// 69 | /// 70 | public bool CheckGodsOnly() 71 | { 72 | int value; 73 | if (metaData.TryGetValue("godsonly", out value)) 74 | { 75 | return value == 1; 76 | } 77 | 78 | return false; 79 | } 80 | } -------------------------------------------------------------------------------- /Assets/TextEffects.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using TMPro; 4 | using UnityEngine.UI; 5 | 6 | [System.Serializable] 7 | public class TextEffects : MonoBehaviour { 8 | 9 | public float timeToFadeIn; 10 | float timeAtSpawn; 11 | bool fadingIn; 12 | bool started = false; 13 | CanvasRenderer myCanvasRenderer; 14 | float percentComplete; 15 | 16 | float timeFlashStart; 17 | public bool textFlash; 18 | public float flashCycleTime; 19 | bool flashDirection; // true is fading IN 20 | 21 | TextMeshProUGUI myText; 22 | 23 | // Use this for initialization 24 | void Start () { 25 | myCanvasRenderer = GetComponent(); 26 | myText = GetComponent(); 27 | myCanvasRenderer.SetAlpha(0.0f); 28 | timeAtSpawn = Time.fixedTime; 29 | started = true; 30 | fadingIn = true; 31 | if (textFlash) 32 | { 33 | flashDirection = false; 34 | timeFlashStart = Time.fixedTime; 35 | } 36 | } 37 | 38 | // Update is called once per frame 39 | void Update () 40 | { 41 | if (started && textFlash && !fadingIn) 42 | { 43 | percentComplete = (Time.fixedTime - timeFlashStart) / flashCycleTime; 44 | if (flashDirection) 45 | { 46 | myCanvasRenderer.SetAlpha(percentComplete); 47 | } 48 | else 49 | { 50 | myCanvasRenderer.SetAlpha(1f - percentComplete); 51 | } 52 | 53 | if (percentComplete >= 1.0f) 54 | { 55 | percentComplete = 0f; 56 | flashDirection = !flashDirection; 57 | timeFlashStart = Time.fixedTime; 58 | } 59 | 60 | } 61 | 62 | if (started && fadingIn) 63 | { 64 | percentComplete = (Time.fixedTime - timeAtSpawn) / timeToFadeIn; 65 | myCanvasRenderer.SetAlpha(percentComplete); 66 | if (percentComplete >= 1.0f) 67 | { 68 | fadingIn = false; 69 | } 70 | 71 | if (myText != null) 72 | { 73 | CanvasRenderer[] renderersOnMe = myText.GetComponentsInChildren(); 74 | foreach (var cr in renderersOnMe) 75 | { 76 | cr.SetAlpha(percentComplete); 77 | } 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_ThreeScrollsAndGemToScroll.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_ThreeScrollsAndGemToScroll : CraftingRecipe { 6 | 7 | public override bool IsRecipePossible(List inputItems) 8 | { 9 | dictCachedItemsToUse.Clear(); 10 | 11 | int countOfScrolls = 0; 12 | int scrollsRemaining = 3; 13 | Item gemUsed = null; 14 | 15 | foreach (Item itm in inputItems) 16 | { 17 | if (itm.CheckTag(ItemFilters.GEM)) 18 | { 19 | if (gemUsed != null) 20 | { 21 | if (itm.challengeValue > highestCVOfInputItems) 22 | { 23 | gemUsed = itm; 24 | highestCVOfInputItems = itm.challengeValue; 25 | } 26 | } 27 | else 28 | { 29 | gemUsed = itm; 30 | } 31 | } 32 | 33 | if (itm.actorRefName.Contains("scroll_")) 34 | { 35 | countOfScrolls += itm.GetQuantity(); 36 | 37 | if (itm.GetQuantity() <= scrollsRemaining) 38 | { 39 | dictCachedItemsToUse.Add(itm, itm.GetQuantity()); 40 | } 41 | else 42 | { 43 | dictCachedItemsToUse.Add(itm, scrollsRemaining); 44 | } 45 | 46 | scrollsRemaining -= itm.GetQuantity(); 47 | } 48 | 49 | if (countOfScrolls == 3 && gemUsed != null) 50 | { 51 | dictCachedItemsToUse.Add(gemUsed, 1); 52 | return true; 53 | } 54 | 55 | } 56 | 57 | return false; 58 | } 59 | 60 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 61 | { 62 | Consumable scrollTemplate = GetPossibleItemRef("scrolls", highestCVOfInputItems - 0.3f, highestCVOfInputItems) as Consumable; 63 | Consumable scrollToMake = new Consumable(); 64 | scrollToMake.CopyFromItem(scrollTemplate); 65 | scrollToMake.SetUniqueIDAndAddToDict(); 66 | 67 | List returnItems = new List() { scrollToMake }; 68 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 69 | return returnItems; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_PotionsToElixir.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_PotionsToElixir : CraftingRecipe { 6 | 7 | List requiredPotions = new List() 8 | { 9 | "potion_healing3", 10 | "potion_stamina3", 11 | "potion_energy3" 12 | }; 13 | 14 | public override bool IsRecipePossible(List inputItems) 15 | { 16 | Dictionary potionsRemaining = new Dictionary() 17 | { 18 | { "potion_healing3", 2 }, 19 | { "potion_stamina3", 2 }, 20 | { "potion_energy3", 2 } 21 | }; 22 | 23 | Dictionary countOfPotions = new Dictionary() 24 | { 25 | { "potion_healing3", 0 }, 26 | { "potion_stamina3", 0 }, 27 | { "potion_energy3", 0 } 28 | }; 29 | 30 | 31 | dictCachedItemsToUse.Clear(); 32 | 33 | foreach (Item itm in inputItems) 34 | { 35 | if (itm.itemType != ItemTypes.CONSUMABLE) continue; 36 | 37 | if (!requiredPotions.Contains(itm.actorRefName)) continue; 38 | 39 | if (potionsRemaining[itm.actorRefName] == 0) continue; 40 | 41 | countOfPotions[itm.actorRefName] += itm.GetQuantity(); 42 | 43 | if (itm.GetQuantity() <= potionsRemaining[itm.actorRefName]) 44 | { 45 | dictCachedItemsToUse.Add(itm, itm.GetQuantity()); 46 | } 47 | else 48 | { 49 | dictCachedItemsToUse.Add(itm, potionsRemaining[itm.actorRefName]); 50 | } 51 | 52 | potionsRemaining[itm.actorRefName] -= itm.GetQuantity(); 53 | } 54 | 55 | 56 | foreach(string potion in potionsRemaining.Keys) 57 | { 58 | if (potionsRemaining[potion] > 0) 59 | { 60 | return false; 61 | } 62 | } 63 | 64 | return true; 65 | } 66 | 67 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 68 | { 69 | Consumable potion = LootGeneratorScript.CreateItemFromTemplateRef("potion_elixir", 1.0f, 0f, false) as Consumable; 70 | 71 | List returnItems = new List() { potion }; 72 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 73 | return returnItems; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Assets/Standard Assets/Editor/ImageEffects/CreaseShadingEditor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEditor; 3 | using UnityEditor.AnimatedValues; 4 | using UnityEngine; 5 | 6 | namespace UnityStandardAssets.ImageEffects 7 | { 8 | [CustomEditor(typeof(CreaseShading))] 9 | class CreaseShadingEditor : Editor { 10 | SerializedObject serObj; 11 | 12 | SerializedProperty m_intensity; 13 | SerializedProperty m_softness; 14 | SerializedProperty m_spread; 15 | 16 | AnimBool m_showSoftnessWarning = new AnimBool(); 17 | AnimBool m_showSpreadWarning = new AnimBool(); 18 | 19 | private bool softnessWarningValue { get { return m_softness.intValue > 4; } } 20 | private bool spreadWarningValue { get { return m_spread.floatValue > 4; } } 21 | 22 | void OnEnable () { 23 | serObj = new SerializedObject (target); 24 | 25 | m_intensity = serObj.FindProperty("intensity"); 26 | m_softness = serObj.FindProperty("softness"); 27 | m_spread = serObj.FindProperty("spread"); 28 | 29 | m_showSoftnessWarning.valueChanged.AddListener(Repaint); 30 | m_showSpreadWarning.valueChanged.AddListener(Repaint); 31 | 32 | m_showSoftnessWarning.value = softnessWarningValue; 33 | m_showSpreadWarning.value = spreadWarningValue; 34 | } 35 | 36 | public override void OnInspectorGUI () { 37 | serObj.Update (); 38 | 39 | EditorGUILayout.Slider(m_intensity, -5.0f, 5.0f, new GUIContent("Intensity")); 40 | 41 | EditorGUILayout.IntSlider(m_softness, 0, 15, new GUIContent("Softness")); 42 | m_showSoftnessWarning.target = softnessWarningValue; 43 | if (EditorGUILayout.BeginFadeGroup(m_showSoftnessWarning.faded)) 44 | { 45 | EditorGUILayout.HelpBox("High Softness value might reduce performance.", MessageType.Warning, false); 46 | } 47 | EditorGUILayout.EndFadeGroup(); 48 | 49 | EditorGUILayout.Slider(m_spread, 0.0f, 50.0f, new GUIContent("Spread")); 50 | m_showSpreadWarning.target = spreadWarningValue; 51 | if (EditorGUILayout.BeginFadeGroup(m_showSpreadWarning.faded)) 52 | { 53 | EditorGUILayout.HelpBox("High Spread value might introduce visual artifacts.", MessageType.Warning, false); 54 | } 55 | EditorGUILayout.EndFadeGroup(); 56 | 57 | serObj.ApplyModifiedProperties (); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Assets/TDScripts/CraftingScripts/CraftingRecipe_TwoAccessoriesAndGemToAccessory.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class CraftingRecipe_TwoAccessoriesAndGemToAccessory : CraftingRecipe { 6 | 7 | Item gemToUse; 8 | 9 | public override bool IsRecipePossible(List inputItems) 10 | { 11 | dictCachedItemsToUse.Clear(); 12 | itemRefsUsed.Clear(); 13 | int countOfAccessories = 0; 14 | highestCVOfInputItems = 1.0f; 15 | 16 | foreach (Item itm in inputItems) 17 | { 18 | if (itm.CheckTag((int)ItemFilters.GEM)) 19 | { 20 | if (gemToUse == null) 21 | { 22 | gemToUse = itm; 23 | } 24 | else 25 | { 26 | if (gemToUse.challengeValue < itm.challengeValue) 27 | { 28 | gemToUse = itm; 29 | } 30 | } 31 | } 32 | 33 | else if (itm.itemType == ItemTypes.ACCESSORY) 34 | { 35 | Accessory acc = itm as Accessory; 36 | if (acc.rarity != Rarity.COMMON) continue; 37 | countOfAccessories++; 38 | dictCachedItemsToUse.Add(itm, 1); 39 | itemRefsUsed.Add(itm.actorRefName); 40 | if (itm.challengeValue > highestCVOfInputItems) 41 | { 42 | highestCVOfInputItems = itm.challengeValue; 43 | } 44 | } 45 | 46 | if (countOfAccessories == 2 && gemToUse != null) 47 | { 48 | dictCachedItemsToUse.Add(gemToUse, 1); 49 | return true; 50 | } 51 | 52 | } 53 | 54 | return false; 55 | } 56 | 57 | public override List MakeRecipe(List inputItems, out List unusedInputItems) 58 | { 59 | highestCVOfInputItems = (highestCVOfInputItems + gemToUse.challengeValue) / 2f; 60 | Accessory lookupTemplate = GetPossibleItemRef("accessories", highestCVOfInputItems - 0.2f, highestCVOfInputItems) as Accessory; 61 | 62 | Accessory accToMake = new Accessory(); 63 | accToMake.CopyFromItem(lookupTemplate); 64 | accToMake.SetUniqueIDAndAddToDict(); 65 | List returnItems = new List() { accToMake }; 66 | unusedInputItems = RemoveUsedItemsFromList(inputItems); 67 | return returnItems; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/AuraAnimateScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [System.Serializable] 6 | public class AuraAnimateScript : MonoBehaviour { 7 | 8 | SpriteRenderer sr; 9 | public float cycleTime; 10 | public float minOpacity; 11 | public float maxOpacity; 12 | float timeAtCycleStart; 13 | float valueRange; 14 | Color myColor; 15 | bool opacityUp; 16 | 17 | SpriteRenderer parentSR; 18 | private bool foundParentSR; 19 | private int attemptsToFindParentSR = 0; 20 | 21 | // Use this for initialization 22 | void Start () { 23 | sr = GetComponent(); 24 | timeAtCycleStart = Time.time; 25 | myColor = sr.color; 26 | myColor.a = minOpacity; 27 | opacityUp = true; 28 | valueRange = maxOpacity - minOpacity; 29 | } 30 | 31 | private void OnEnable() 32 | { 33 | parentSR = null; 34 | foundParentSR = false; 35 | attemptsToFindParentSR = 0; 36 | if (transform.parent != null) 37 | { 38 | parentSR = transform.parent.GetComponent(); 39 | if (parentSR != null) 40 | { 41 | foundParentSR = true; 42 | } 43 | } 44 | } 45 | 46 | // Update is called once per frame 47 | void Update () 48 | { 49 | // We're trying to connect to our parent SR a few times, because maybe there was a delay between initial OnEnable() and connecting this aura to a parent object 50 | if (!foundParentSR && attemptsToFindParentSR < 3) 51 | { 52 | OnEnable(); 53 | attemptsToFindParentSR++; 54 | } 55 | 56 | if (foundParentSR) 57 | { 58 | // We want the aura to be directly underneath us at all times, offset by -1 so we draw on top. 59 | sr.sortingOrder = parentSR.sortingOrder - 1; 60 | } 61 | 62 | 63 | float percentComplete = (Time.time - timeAtCycleStart) / cycleTime; 64 | bool finished = false; 65 | if (percentComplete >= 1.0f) 66 | { 67 | percentComplete = 1.0f; 68 | finished = true; 69 | } 70 | 71 | float opacityValue = Mathfx.Sinerp(0, valueRange, percentComplete); 72 | 73 | if (opacityUp) 74 | { 75 | myColor.a = minOpacity + opacityValue; 76 | } 77 | else 78 | { 79 | myColor.a = maxOpacity - opacityValue; 80 | } 81 | 82 | sr.color = myColor; 83 | 84 | if (finished) 85 | { 86 | timeAtCycleStart = Time.time; 87 | opacityUp = !opacityUp; 88 | } 89 | 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /Assets/UIManager.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1000012643686876} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1000012643686876 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4000010273995790} 22 | - component: {fileID: 114000014036831100} 23 | m_Layer: 0 24 | m_Name: UIManager 25 | m_TagString: Untagged 26 | m_Icon: {fileID: 0} 27 | m_NavMeshLayer: 0 28 | m_StaticEditorFlags: 0 29 | m_IsActive: 1 30 | --- !u!4 &4000010273995790 31 | Transform: 32 | m_ObjectHideFlags: 1 33 | m_PrefabParentObject: {fileID: 0} 34 | m_PrefabInternal: {fileID: 100100000} 35 | m_GameObject: {fileID: 1000012643686876} 36 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 37 | m_LocalPosition: {x: 12.395134, y: 4.333289, z: -1} 38 | m_LocalScale: {x: 1, y: 1, z: 1} 39 | m_Children: [] 40 | m_Father: {fileID: 0} 41 | m_RootOrder: 0 42 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 43 | --- !u!114 &114000014036831100 44 | MonoBehaviour: 45 | m_ObjectHideFlags: 1 46 | m_PrefabParentObject: {fileID: 0} 47 | m_PrefabInternal: {fileID: 100100000} 48 | m_GameObject: {fileID: 1000012643686876} 49 | m_Enabled: 1 50 | m_EditorHideFlags: 0 51 | m_Script: {fileID: 11500000, guid: e3cf4bc1e9238e5498f3e09183c4119b, type: 3} 52 | m_Name: 53 | m_EditorClassIdentifier: 54 | dialogWaitTime: 0 55 | typewriterTextSpeed: 0 56 | charactersPerTypewriterTick: 0 57 | typewriterCharsToPlaySound: 0 58 | isMouseOverUI: 0 59 | isMouseOverGameWorld: 0 60 | delayToFadeCombatLog: 0 61 | combatLogFadeOutTime: 0 62 | maxCombatLogAlpha: 0 63 | deltaTime: 0 64 | renderColumns: 24 65 | renderRows: 24 66 | editString: '> ...' 67 | uiDialogMenuCursor: {fileID: 0} 68 | cursorAudioComponent: {fileID: 0} 69 | uiDialogMenuCursorImage: {fileID: 0} 70 | draggingItemButtonIndex: 0 71 | draggingSkillButtonIndex: 0 72 | mouseCursorImageAsset: {fileID: 4900000, guid: d80b784de25057f49afceb4041b7e83e, 73 | type: 3} 74 | mainMouseCursor: {fileID: 0} 75 | targetingMouseCursor: {fileID: 0} 76 | lastPhysicalMousePosition: {x: 0, y: 0} 77 | framesSinceDragUp: 0 78 | dialogBoxTextText: {fileID: 0} 79 | -------------------------------------------------------------------------------- /Assets/DLCManager.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1483647772552126} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1483647772552126 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4275380963116610} 22 | - component: {fileID: 114923694483449272} 23 | m_Layer: 0 24 | m_Name: DLCManager 25 | m_TagString: Untagged 26 | m_Icon: {fileID: 0} 27 | m_NavMeshLayer: 0 28 | m_StaticEditorFlags: 0 29 | m_IsActive: 1 30 | --- !u!4 &4275380963116610 31 | Transform: 32 | m_ObjectHideFlags: 1 33 | m_PrefabParentObject: {fileID: 0} 34 | m_PrefabInternal: {fileID: 100100000} 35 | m_GameObject: {fileID: 1483647772552126} 36 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 37 | m_LocalPosition: {x: 0, y: 0, z: 0} 38 | m_LocalScale: {x: 1, y: 1, z: 1} 39 | m_Children: [] 40 | m_Father: {fileID: 0} 41 | m_RootOrder: 0 42 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 43 | --- !u!114 &114923694483449272 44 | MonoBehaviour: 45 | m_ObjectHideFlags: 1 46 | m_PrefabParentObject: {fileID: 0} 47 | m_PrefabInternal: {fileID: 100100000} 48 | m_GameObject: {fileID: 1483647772552126} 49 | m_Enabled: 1 50 | m_EditorHideFlags: 0 51 | m_Script: {fileID: 11500000, guid: e966039abf2a98f4b8bedc3d32590c7e, type: 3} 52 | m_Name: 53 | m_EditorClassIdentifier: 54 | considerAllDLCInstalled: 1 55 | packageDefinitions: 56 | - dlcFiles: 57 | - {fileID: 4900000, guid: f873f13d1f1d6f841953f51a049d5e55, type: 3} 58 | - {fileID: 4900000, guid: c2005c039afe62c44b98e8b4a52f8ac3, type: 3} 59 | - {fileID: 4900000, guid: 41f3d0337d1de4147ba8914159a15b0d, type: 3} 60 | - {fileID: 4900000, guid: eaddc40941d49024eb802776681fce73, type: 3} 61 | - {fileID: 4900000, guid: 18efe801ce2ffc941901a53a2a6684b6, type: 3} 62 | - {fileID: 4900000, guid: 55d545c5a85cddb40856b92db62fa54a, type: 3} 63 | - {fileID: 4900000, guid: 56a1f08c77926184589d4f457ea22d50, type: 3} 64 | - {fileID: 4900000, guid: 0b51679dc1b968c4bb4c1fa628f9c0e0, type: 3} 65 | - {fileID: 4900000, guid: 56513e65c67836c4e95993ea53a159f8, type: 3} 66 | - {fileID: 4900000, guid: ac615b9aaac5f8b4e97f58a9e1cfa103, type: 3} 67 | whichDLC: 0 68 | -------------------------------------------------------------------------------- /Assets/Resources/SpriteEffects/AfterImageCreator.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1502093903804372} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1502093903804372 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4709806912212470} 22 | - component: {fileID: 114613804480312280} 23 | - component: {fileID: 114141717964184510} 24 | m_Layer: 0 25 | m_Name: AfterImageCreator 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!4 &4709806912212470 32 | Transform: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | m_GameObject: {fileID: 1502093903804372} 37 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 38 | m_LocalPosition: {x: 0, y: 0, z: 0} 39 | m_LocalScale: {x: 1, y: 1, z: 1} 40 | m_Children: [] 41 | m_Father: {fileID: 0} 42 | m_RootOrder: 0 43 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 44 | --- !u!114 &114141717964184510 45 | MonoBehaviour: 46 | m_ObjectHideFlags: 1 47 | m_PrefabParentObject: {fileID: 0} 48 | m_PrefabInternal: {fileID: 100100000} 49 | m_GameObject: {fileID: 1502093903804372} 50 | m_Enabled: 1 51 | m_EditorHideFlags: 0 52 | m_Script: {fileID: 11500000, guid: 38e5f8a0fae7a4945a2eee39c62daf62, type: 3} 53 | m_Name: 54 | m_EditorClassIdentifier: 55 | useForPoolingOnly: 1 56 | refName: AfterImageCreator 57 | onDeathCreateSpriteEffect: 58 | spriteParent: {fileID: 0} 59 | followObject: {fileID: 0} 60 | onlyExtDestroy: 0 61 | animInitialized: 0 62 | offset: {x: 0, y: 0} 63 | baseRotation: 0 64 | randomColor: 0 65 | stackToTargetLocation: 0 66 | --- !u!114 &114613804480312280 67 | MonoBehaviour: 68 | m_ObjectHideFlags: 1 69 | m_PrefabParentObject: {fileID: 0} 70 | m_PrefabInternal: {fileID: 100100000} 71 | m_GameObject: {fileID: 1502093903804372} 72 | m_Enabled: 1 73 | m_EditorHideFlags: 0 74 | m_Script: {fileID: 11500000, guid: 0833ad616f6514c47aa635a88e0fdbe5, type: 3} 75 | m_Name: 76 | m_EditorClassIdentifier: 77 | imageFadeTime: 0.33 78 | mySpriteEffect: {fileID: 114141717964184510} 79 | --------------------------------------------------------------------------------