LordAshes-AssetNavigationGenerationExecutionLibraryPlugin_CCM icon

AssetNavigationGenerationExecutionLibraryPlugin CCM

CCM version of ANGEL for custom mini content including creatures, auras, effects and filters

Last updated 2 days ago
Total downloads 181
Total rating 1 
Categories Tweaks Networked Tools Integration Assets Minis Effects Props
Dependency string LordAshes-AssetNavigationGenerationExecutionLibraryPlugin_CCM-2.0.4
Dependants 0 other packages depend on this package

This mod requires the following mods to function

bbepisTaleSpire-BepInExPack-5.4.10 icon
bbepisTaleSpire-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.10
brcoding-SetInjectionFlagPlugin-2.3.0 icon
brcoding-SetInjectionFlagPlugin

Allows players to flag mods are installed

Preferred version: 2.3.0
LordAshes-FileAccessPlugin-1.7.1 icon
LordAshes-FileAccessPlugin

Provides standardized methods for accessing both local file and url resources. Automatically handles searching local folders for assets.

Preferred version: 1.7.1
LordAshes-LoggingPlugin-1.0.1 icon
LordAshes-LoggingPlugin

Provides unified logging functionality

Preferred version: 1.0.1
LordAshes-CommonCustomsMenuPlugin-1.0.5 icon
LordAshes-CommonCustomsMenuPlugin

Common menu for custom content plugins to register with.

Preferred version: 1.0.5

README

Asset Navigation and General Execution Library (ANGEL) Plugin

This unofficial TaleSpire pluigin provides a Common Customs Menu (CCM) version of ANGEL plugin for getting custom mini content into Talespire incluing creatures, auras, effects, and filters. Integrates with CCM to provide a common look and feel as other custom content plugins. Designed to be highly resilient to prevent breaking after BR updates.

Install

Use R2ModMan or similar installer to install this asset pack.

This plugins makes use of Asset Data Plugin and Hide Base Plugin if they are available. However, they are not an actual dependency (and thus not downloaded automatically) so that the plugin can still work (mostly) without them. As such, for ideal functionality, please download Hide Base Plugin and Asset Data Plugin (along with a message distributor like Chat Service Plugin).

Configuration

All keyboard bindings can be reconfigures in the plugin's configuration.

Usage

Open the Common Customs Menu to select assets.

Use keyboard shortcuts to activate actions. Actions are lised with default shortcut.

{LALT+1} = Animation 01 {LALT+2} = Animation 02 {LALT+3} = Animation 03 {LALT+4} = Animation 04 {LALT+5} = Animation 05 {LALT+6} = Animation 06 {LALT+7} = Animation 07 {LALT+8} = Prompt for Animation name {LALT+9} = Stop Animation {LALT+0} = Stop Animation (Used for Full Stop)

{LCTRL+1} = Audio 01 {LCTRL+2} = Audio 02 {LCTRL+3} = Audio 03 {LCTRL+4} = Audio 04 {LCTRL+5} = Audio 05 {LCTRL+6} = Audio 06 {LCTRL+7} = Audio 07 {LCTRL+8} = Prompt for Audio name {LCTRL+9} = Stop Audio {LCTRL+0} = Stop Audio (Used for Full Stop)

{LSHIFT+1} = Sequence 01 {LSHIFT+2} = Sequence 02 {LSHIFT+3} = Sequence 03 {LSHIFT+4} = Sequence 04 {LSHIFT+5} = Sequence 05 {LSHIFT+6} = Sequence 06 {LSHIFT+7} = Sequence 07 {LSHIFT+8} = Prompt for Sequence name {LSHIFT+9} = Stop Sequence {LSHIFT+0} = Stop Sequence (Used for Full Stop)

{RCTRL+1} = Analyze selected asset (result sent to logs) {RCTRL+2} = Rename asset (allows players to rename assets) {RCTRL+3} = Edit link (ANGEL information)

Asset Types

There are four base types in ANGEL:

+-------------+---------------------+-------------------+---------------------+
| Type (Kind) | Base                | Base Visibility   | Removal             |
+-------------+---------------------+-------------------+---------------------+
| Aura        | Selected Mini Base  | Visible           | Reselect Same Aura  |
| Creature    | New Base            | Visible           | Delete Base         |
| Effect      | Base                | Invisible         | Delete Base         |
| Filter      | Base                | Invisible         | Delete Base         |
+-------------+---------------------+-------------------+---------------------+

The Common Customs Menu may have other categories beyond these four but all ANGEL assets resolve down to one of these four kinds. For example, the Prop category may resolve down to Effect kind but a Prop category.

Asset Modifiers

When a asset is spawned, if the {SCROL LOCK} key is on, modifier mode is active. In this mode, pressing certain modifier keys (ALT, CTRL or SHIFT) casues the asset to be spawned as a different type (kind) than the content indicates.

This can be used in some niche situations such as when adding a familiar creature to active mini using Aura so that the familiar creature gets attached to the mini.

+--------------+---------------------+
| Modifier Key | Forced Type (Kind)  |
+--------------+---------------------+
| {LALT}       | Aura                |
| {LCTRL}      | Creature            |
| {RALT}       | Effect              |
| {LSHIFT}     | Filter              |
| {RCTRL}      | Prop (Effect)       |
+--------------+---------------------+

Dependencies

The main feature of CCM plugins is that they are designed to be resilient to breaking due to BR or other changes. For this reason, the CCM version of ANGEL plugin tries to minimize the number of dependencies on which it relies since each of those could be a future failure point.

However, on the other hand, you don't want to re-invent the wheel for functions that already exist becuaue then you have multiple places where code does need to be updated if that functionality even need to be changed.

To address this, ANGEL uses soft dependencies. These soft dependencies use reflection to try to access the dependency plugin without actually making it a required dependency. For example, when ANGEL plugin needs to hide the base of a mini, it uses the Hide Base plugin. However, instead of the plugin needing Hide Base Plugin (and thus crashing if Hide Base Plugin is not available or changed) it essentially says "here is some information for the Hide Base Plugin if it exists and knows how to handle the informaion". That way if the use does not have Hide Base Plugin or the Hide Base Plugin has changed for some reason, the ANGEL plugin can still work. It may not be able to hide the base, but it won't completely fail.

Info.txt Format

    "name": "Freya",
    "provider": "ANGEL",
    "filename": "X:/r2modmanPlus-local/TaleSpire/profiles/Default/BepInEx/plugins/[LocalContent]/CustomData/lafreyaanim01/lafreyaanim01",
    "pack": "[LocalContent]",
    "prefab": "lafreyaanim01",
    "kind": "Creature",
    "category": "Creature",
    "header": "Medieval Fantasy",
    "groupName": "Abyss",
    "description": "Freya for dangers of the abyss campaign",
    "tags": "God-Touched",
    "author": "Lord Ashes",
    "version": "1.0",
    "comment": "Daz Studio Genesis 8, Blender 2.9",
    "size": 1.0,
    "hasAnimations": false,
    "hasAudio": true,
    "hasBlendshapes": true,
    "variants": null,
    "chain": [
      {
        "prefab": "lafreyaanim01",
        "offsetPosX": 0.0,
        "offsetPosY": 1.0,
        "offsetPosZ": 0.0,
        "offsetRotX": 0.0,
        "offsetRotY": 0.0,
        "offsetRotZ": 0.0
      },
      {
        "prefab": "lafreyaanimowl01",
        "offsetPosX": 0.0,
        "offsetPosY": 0.1,
        "offsetPosZ": -0.2,
        "offsetRotX": 0.0,
        "offsetRotY": 0.0,
        "offsetRotZ": 0.0
      }
	],
    "animationOrder": null,
    "blendshapes": [
      {
        "name": "No Name",
        "elements": [
          {
            "audio": null,
            "animation": null,
            "style": 3,
            "delay": 0.0,
            "blendShapeIndex": 1,
            "start": 0.0,
            "end": 100.0,
            "step": 2.0
          }
        ]
      }
    ],
    "adjust": {
      "tX": 0.0,
      "tY": 0.0,
      "tZ": 0.0,
      "rW": 1.0,
      "rX": 0.0,
      "rY": 0.0,
      "rZ": 0.0,
      "sX": 1.0,
      "sY": 1.0,
      "sZ": 1.0
    }

Chain Loading

The chain property can be used to load multiplpe assets in sequence. The chain property has the following format:

    "chain": [
      {
        "prefab": "lafreyaanim01",
        "offsetPosX": 0.0,
        "offsetPosY": 1.0,
        "offsetPosZ": 0.0,
        "offsetRotX": 0.0,
        "offsetRotY": 0.0,
        "offsetRotZ": 0.0
      },
      {
        "prefab": "lafreyaanimowl01",
        "offsetPosX": 0.0,
        "offsetPosY": 0.1,
        "offsetPosZ": -0.2,
        "offsetRotX": 0.0,
        "offsetRotY": 0.0,
        "offsetRotZ": 0.0
      },
      {
        "prefab": "lafreyaanimrat01",
        "offsetPosX": 0.0,
        "offsetPosY": 0.1,
        "offsetPosZ": 0.2,
        "offsetRotX": 0.0,
        "offsetRotY": 0.0,
        "offsetRotZ": 0.0
      }
	],

When an asset has the chain property set, the asset prefab is used to identify the asset but the asset's prefab is not used. Instead the main asset (placed by the user) uses the first prefab in the chain list and all other chain entries use the successive chain prefab entries. The overall asset prefab should be unique and not match any of the asset prefabs in the chain.

The offset specified for the first entry is where the first asset will be spawned in relation to the place the user clicked to spawn it. Typically this has a X and Z offset of 0 and positive Y offset. All successive assets are spawned based on the adjusted first asset. This has the effect of the first asset's adjustments being applied to all assets. This is also the reason why the first asset typically has a Y offset. This will cause all assets to inherit that offset. The reason why spawning assets off the ground (positive Y offset) is recommened is so that if there is a change in the elevation of the ground, assets will not get stuck in the ground. In the above example, the first asset would spawn 1.0 units off the ground. The second asset would spawn 1.1 units off the ground (1.0+0.1) and -0.2 units to the side. The third asset would spawn 1.1 units off the ground (1.0+0.1) and 0.2 units to the side.

The prefabs specified in the chain proeprty do not need to be part of that asset bundle. They can be part of any asset bundle that is properly registered. Ensure the provider property on the main Asset Info is set correctly to the provider of the prefab.

The spawned assets inherit the kind from the main asset (typically either CREATURE for encounters or EFFECT for stacks).

Limitations

In core Talespire, when a creature is flying and hidden, the base is not visible. In core Talespire, you can select the mini itself to bring up the radial menu to unhide or unfly the mini. However, ANGEL assets don't have a mini form in GM mode and thus it becomes impossible to select them to unhide or unfly them.

Until a better solution is implemented, if you hide a flying ANGEL asset it will stop flying. This ensures that the base is visible so that the mini can be unhidden.

Hacking ANGEL Information

ANGEL plugin stores the ANGEL information for each asset in the mini's LINK. You can edit the LINK using the Edit Link function (default RCTRL+3. The information is store after the real link if any and starts with either ?ANGEL= or ;ANGEL= depending if the actual link has any query parameters. This is followed by the ANGEL information in pairs. The two items in a pair are separated by a @ character while pairs are separated by the ; character. The pair info contain the kind of asset, which determines how it is spawned, the @ symbol, and then the prefab to be spawned. For example:

?ANGEL=CREATURE@laKnight01

Or

?ANGEL=CREATURE@laKnight01;AURA@laBless01

The kind MORPH is special. It is not rendered but is a placeholder for cycling between when the Cycle Morphs function is used. The kind TYPE is also special. It is not rendered. It is used for information only.