diff --git a/Assets/ExportedMods/Basic.umod b/Assets/ExportedMods/Basic.umod index 3a5825a7..5f0e396a 100644 --- a/Assets/ExportedMods/Basic.umod +++ b/Assets/ExportedMods/Basic.umod @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e473e69bf6fb29bb5c91294a25b101432eb4c98227327a633b5c9ee355649750 -size 483294125 +oid sha256:f0eed223db84ff2e637144d06f0fd0616bd3336c818321f20d9939ba444b64d6 +size 484283232 diff --git a/Assets/Mods/Basic/Basic_CombatOrganizer.asset b/Assets/Mods/Basic/Basic_CombatOrganizer.asset index 613c4e00..979bbba1 100644 --- a/Assets/Mods/Basic/Basic_CombatOrganizer.asset +++ b/Assets/Mods/Basic/Basic_CombatOrganizer.asset @@ -17,3 +17,4 @@ MonoBehaviour: - CharacterData_Basic_Mage enemyCharacters: - CharacterData_Basic_MarshalOfTheUnderworld + - CharacterData_Basic_MarshalOfTheUnderworld diff --git a/Assets/Mods/Basic/Basic_Manifest.asset b/Assets/Mods/Basic/Basic_Manifest.asset index a7b3b168..089e63d5 100644 --- a/Assets/Mods/Basic/Basic_Manifest.asset +++ b/Assets/Mods/Basic/Basic_Manifest.asset @@ -53,13 +53,26 @@ MonoBehaviour: - CardData_Basic_BattlefieldExperience - CardData_Basic_BodyAsShield - CardData_Basic_Cover + - CardData_Basic_DivineSmite - CardData_Basic_EchoOfHonor + - CardData_Basic_EstablishFormation + - CardData_Basic_FirmBelief - CardData_Basic_GuardianAura - CardData_Basic_IronWall - CardData_Basic_KightDefense - CardData_Basic_KnightStrike - CardData_Basic_OathOfCourage + - CardData_Basic_OathOfHonor - CardData_Basic_Smite + - CardData_Basic_UtmostStrike + - CardData_Basic_ArcaneMissiles + - CardData_Basic_ConcentratedSpellcasting + - CardData_Basic_ElectricClaw + - CardData_Basic_FarSighted + - CardData_Basic_FireBall + - CardData_Basic_FlameInscription + - CardData_Basic_Haste + - CardData_Basic_Scorch characterDataIDList: - CharacterData_Basic_Knight - CharacterData_Basic_Mage diff --git a/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_SoulCleave/SoulCleave.cs b/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_SoulCleave/SoulCleave.cs index 8d2d0730..05bfc1bc 100644 --- a/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_SoulCleave/SoulCleave.cs +++ b/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_SoulCleave/SoulCleave.cs @@ -23,7 +23,7 @@ namespace Continentis.Mods.Basic.Cards CommandGroup mainGroup = TargetListCommandGroup(targetList, new Cmd_ParamFunction(0.2f, target => { - int hurt = user.Attack(target, GetFinalDamage(target)); + int hurt = user.Attack(target, GetFinalDamage(target)).hurtDamage; LogicComponent().LifeSteal(hurt); Basic_Hellfire hellfireBuff = target.combatBuffSubmodule.GetBuff(); diff --git a/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_WrathOfTheUnderworld/WrathOfTheUnderworld.cs b/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_WrathOfTheUnderworld/WrathOfTheUnderworld.cs index 5c053d2b..47b03faa 100644 --- a/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_WrathOfTheUnderworld/WrathOfTheUnderworld.cs +++ b/Assets/Mods/Basic/Cards/Data/MarshalOfTheUnderworld/Basic_WrathOfTheUnderworld/WrathOfTheUnderworld.cs @@ -25,7 +25,7 @@ namespace Continentis.Mods.Basic.Cards new Cmd_PlayAnimation(user.characterView, "Attack"), new Cmd_ParamFunction(0.5f, target => { - int hurt = user.Attack(target, GetFinalDamage(target)); + int hurt = user.Attack(target, GetFinalDamage(target)).hurtDamage; LogicComponent().LifeSteal(hurt); }) ); diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_DivineSmite.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_DivineSmite.asset new file mode 100644 index 00000000..07e09c6e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_DivineSmite.asset @@ -0,0 +1,67 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_DivineSmite + m_EditorClassIdentifier: + modName: Basic + className: DivineSmite + displayName: Card_Basic_DivineSmite_DisplayName + cardRarity: 10 + cardType: 0 + keywords: + - TargetEnemies + - Magic + cardSprite: {fileID: 21300000, guid: 7774035283803d64fadba0f707508368, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_DivineSmite_FunctionText + cardDescription: Card_Basic_Strike_Description + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Damage + Value: 30 + index: 0 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 3 + index: 2 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 3 + isKeyDuplicated: 0 + - Key: BuffCount_Protecting + Value: 1 + index: 4 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: + - VFX_Basic_RedImpact + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_DivineSmite.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_DivineSmite.asset.meta new file mode 100644 index 00000000..c4a88da4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_DivineSmite.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3291799bf92a714499649a7a1d84c202 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_EstablishFormation.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_EstablishFormation.asset new file mode 100644 index 00000000..63ecbc2a --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_EstablishFormation.asset @@ -0,0 +1,70 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_EstablishFormation + m_EditorClassIdentifier: + modName: Basic + className: EstablishFormation + displayName: Card_Basic_EstablishFormation_DisplayName + cardRarity: 20 + cardType: 10 + keywords: + - TargetSelf + - TargetAllies + cardSprite: {fileID: 21300000, guid: caca00477898a734a9cef651dad57771, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_EstablishFormation_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Block + Value: 10 + index: 0 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 2 + index: 1 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 3 + isKeyDuplicated: 0 + - Key: BuffStack_EstablishFormation + Value: 10 + index: 4 + isKeyDuplicated: 0 + - Key: BuffCount_EstablishFormation + Value: 1 + index: 5 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_EstablishFormation.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_EstablishFormation.asset.meta new file mode 100644 index 00000000..5c96e050 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_EstablishFormation.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f6a6407310530d49b0923ea5dc70098 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_FirmBelief.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_FirmBelief.asset new file mode 100644 index 00000000..2406ff30 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_FirmBelief.asset @@ -0,0 +1,65 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_FirmBelief + m_EditorClassIdentifier: + modName: Basic + className: FirmBelief + displayName: Card_Basic_FirmBelief_DisplayName + cardRarity: 20 + cardType: 10 + keywords: + - TargetSelf + cardSprite: {fileID: 21300000, guid: 921b6166c341bba47ba2c6ca81069754, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_FirmBelief_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Block + Value: 6 + index: 0 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 0 + index: 3 + isKeyDuplicated: 0 + - Key: DrawCardAmount + Value: 1 + index: 4 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_FirmBelief.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_FirmBelief.asset.meta new file mode 100644 index 00000000..ef156b84 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_FirmBelief.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 204d78c40b1985e43ab170ef6ffaef0c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_OathOfHonor.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_OathOfHonor.asset new file mode 100644 index 00000000..fc468788 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_OathOfHonor.asset @@ -0,0 +1,62 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_OathOfHonor + m_EditorClassIdentifier: + modName: Basic + className: OathOfHonor + displayName: Card_Basic_OathOfHonor_DisplayName + cardRarity: 0 + cardType: 10 + keywords: + - Exhaust + - TargetSelf + cardSprite: {fileID: 21300000, guid: e5967a626b6f39b49ba395ee29017963, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_OathOfHonor_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 0 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: StaminaRestore + Value: 3 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_OathOfHonor.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_OathOfHonor.asset.meta new file mode 100644 index 00000000..e58623f4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_OathOfHonor.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40fd724b5e9619f4690adce1fb2f1d55 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_UtmostStrike.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_UtmostStrike.asset new file mode 100644 index 00000000..83aa7a4d --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_UtmostStrike.asset @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_UtmostStrike + m_EditorClassIdentifier: + modName: Basic + className: UtmostStrike + displayName: Card_Basic_UtmostStrike_DisplayName + cardRarity: 20 + cardType: 0 + keywords: + - TargetEnemies + - Physics + cardSprite: {fileID: 21300000, guid: a50c84b115a45a6418e403875f537677, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_UtmostStrike_FunctionText + cardDescription: Card_Basic_Strike_Description + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Damage + Value: 32 + index: 0 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 3 + index: 1 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: + - VFX_Basic_RedImpact + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_UtmostStrike.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_UtmostStrike.asset.meta new file mode 100644 index 00000000..71ff1d73 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_UtmostStrike.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ac7c394c1daf85468a7388fb05c8128 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage.meta new file mode 100644 index 00000000..1188f845 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 942710a007ec6574b8c797bd3c6d2955 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset new file mode 100644 index 00000000..0edfc1e3 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset @@ -0,0 +1,66 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_ArcaneMissiles + m_EditorClassIdentifier: + modName: Basic + className: ArcaneMissiles + displayName: Card_Basic_ArcaneMissiles_DisplayName + cardRarity: 10 + cardType: 0 + keywords: + - TargetEnemies + - Magic + cardSprite: {fileID: 21300000, guid: b5dcc3f4b843f4a478e74bde005bf939, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_ArcaneMissiles_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Damage + Value: 3 + index: 0 + isKeyDuplicated: 0 + - Key: AttackCount + Value: 3 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 2 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 0 + index: 3 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 1 + index: 4 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset.meta new file mode 100644 index 00000000..f44397e2 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc732139e4407bd42a55e1a3da14e9f9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ConcentratedSpellcasting.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ConcentratedSpellcasting.asset new file mode 100644 index 00000000..e9475bde --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ConcentratedSpellcasting.asset @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_ConcentratedSpellcasting + m_EditorClassIdentifier: + modName: Basic + className: ConcentratedSpellcasting + displayName: Card_Basic_ConcentratedSpellcasting_DisplayName + cardRarity: 30 + cardType: 20 + keywords: + - TargetSelf + cardSprite: {fileID: 21300000, guid: a66dff9793512984cad7e7295d68eb1c, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_ConcentratedSpellcasting_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: BuffStack_ConcentratedSpellcasting + Value: 4 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ConcentratedSpellcasting.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ConcentratedSpellcasting.asset.meta new file mode 100644 index 00000000..d54a482e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ConcentratedSpellcasting.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7046b2e41dab39e4db95ee45aae96091 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ElectricClaw.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ElectricClaw.asset new file mode 100644 index 00000000..db537dd2 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ElectricClaw.asset @@ -0,0 +1,66 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_ElectricClaw + m_EditorClassIdentifier: + modName: Basic + className: ElectricClaw + displayName: Card_Basic_ElectricClaw_DisplayName + cardRarity: 20 + cardType: 0 + keywords: + - TargetEnemies + - Magic + cardSprite: {fileID: 21300000, guid: 37468a98d6a5a824d880a27afec07d29, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_ElectricClaw_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Damage + Value: 1 + index: 0 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 1 + index: 2 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 1 + index: 3 + isKeyDuplicated: 0 + - Key: BuffStack_Resonance + Value: 1 + index: 4 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ElectricClaw.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ElectricClaw.asset.meta new file mode 100644 index 00000000..f8a67db6 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ElectricClaw.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2984135812130794bba1b123c70ce67d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FarSighted.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FarSighted.asset new file mode 100644 index 00000000..64b72b7b --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FarSighted.asset @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_FarSighted + m_EditorClassIdentifier: + modName: Basic + className: FarSighted + displayName: Card_Basic_FarSighted_DisplayName + cardRarity: 20 + cardType: 10 + keywords: + - TargetSelf + cardSprite: {fileID: 21300000, guid: b07c10d1954a22246bac8ce4e1435846, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_FarSighted_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 0 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 0 + index: 2 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FarSighted.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FarSighted.asset.meta new file mode 100644 index 00000000..72d0fde6 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FarSighted.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 01ec1106ba7ed3f48a4b50624ac7df84 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FireBall.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FireBall.asset new file mode 100644 index 00000000..7055eefe --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FireBall.asset @@ -0,0 +1,66 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_FireBall + m_EditorClassIdentifier: + modName: Basic + className: FireBall + displayName: Card_Basic_FireBall_DisplayName + cardRarity: 10 + cardType: 0 + keywords: + - TargetEnemies + - Magic + cardSprite: {fileID: 21300000, guid: d29ead9d91b5ff0458f582889b916a1b, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_FireBall_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Damage + Value: 20 + index: 0 + isKeyDuplicated: 0 + - Key: BuffStack_Burn + Value: 5 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: -1 + index: 2 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 0 + index: 3 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 3 + index: 4 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FireBall.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FireBall.asset.meta new file mode 100644 index 00000000..5d0650e9 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FireBall.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88d6fdc840031454ea3508018811dbf1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FlameInscription.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FlameInscription.asset new file mode 100644 index 00000000..5dc9af9c --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FlameInscription.asset @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_FlameInscription + m_EditorClassIdentifier: + modName: Basic + className: FlameInscription + displayName: Card_Basic_FlameInscription_DisplayName + cardRarity: 30 + cardType: 20 + keywords: + - TargetSelf + cardSprite: {fileID: 21300000, guid: 28e24068cd6a78b448d1bf09241b6905, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_FlameInscription_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: BuffStack_FlameInscription + Value: 1 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FlameInscription.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FlameInscription.asset.meta new file mode 100644 index 00000000..5a94f164 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_FlameInscription.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b8b852e36b5c1543b4cdf41e122142d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Haste.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Haste.asset new file mode 100644 index 00000000..1d9f8fab --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Haste.asset @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_Haste + m_EditorClassIdentifier: + modName: Basic + className: Haste + displayName: Card_Basic_Haste_DisplayName + cardRarity: 40 + cardType: 20 + keywords: + - TargetSelf + cardSprite: {fileID: 21300000, guid: e2e4026735b7e4647958d875adedc902, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_Haste_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 2 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 0 + index: 2 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Haste.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Haste.asset.meta new file mode 100644 index 00000000..10adb6fd --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Haste.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd1fb7aba897de94bb2a21edcf08c8b5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_IdentifyWeakness.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_IdentifyWeakness.asset new file mode 100644 index 00000000..98ff02c2 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_IdentifyWeakness.asset @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_IdentifyWeakness + m_EditorClassIdentifier: + modName: Basic + className: IdentifyWeakness + displayName: Card_Basic_IdentifyWeakness_DisplayName + cardRarity: 10 + cardType: 10 + keywords: + - TargetEnemies + cardSprite: {fileID: 21300000, guid: adbc4094bbeee954fb923a3528191940, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_IdentifyWeakness_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 0 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 2 + isKeyDuplicated: 0 + - Key: BuffCount_Vulnerable + Value: 1 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_IdentifyWeakness.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_IdentifyWeakness.asset.meta new file mode 100644 index 00000000..c840e41e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_IdentifyWeakness.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bef72b5db9556244fa295703fe3cf189 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Scorch.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Scorch.asset new file mode 100644 index 00000000..ca8c6265 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Scorch.asset @@ -0,0 +1,62 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_Scorch + m_EditorClassIdentifier: + modName: Basic + className: Scorch + displayName: Card_Basic_Scorch_DisplayName + cardRarity: 20 + cardType: 10 + keywords: + - TargetEnemies + - Exhaust + cardSprite: {fileID: 21300000, guid: c7e0489a5e85e65499fcacddb7c1391e, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_Scorch_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: StaminaCost + Value: 0 + index: 0 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 2 + isKeyDuplicated: 0 + - Key: BuffStackAmplifier_Burn + Value: 1 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Scorch.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Scorch.asset.meta new file mode 100644 index 00000000..cddcc691 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_Scorch.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55d01675ed6c36b448c19cdd600d9da4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_WitchcraftRay.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_WitchcraftRay.asset new file mode 100644 index 00000000..0cffbee3 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_WitchcraftRay.asset @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9a4129cdd7011ca46b83d8c17d9f3623, type: 3} + m_Name: CardData_Basic_WitchcraftRay + m_EditorClassIdentifier: + modName: Basic + className: WitchcraftRay + displayName: Card_Basic_WitchcraftRay_DisplayName + cardRarity: 20 + cardType: 0 + keywords: + - TargetEnemies + - Magic + - Retain + cardSprite: {fileID: 21300000, guid: b5dcc3f4b843f4a478e74bde005bf939, type: 3} + cardLayoutTags: [] + functionText: Card_Basic_WitchcraftRay_FunctionText + cardDescription: + baseWeight: 1 + variableAttributes: + dictionaryList: + - Key: Damage + Value: 16 + index: 0 + isKeyDuplicated: 0 + - Key: TargetCount + Value: 1 + index: 1 + isKeyDuplicated: 0 + - Key: StaminaCost + Value: 0 + index: 2 + isKeyDuplicated: 0 + - Key: ManaCost + Value: 2 + index: 3 + isKeyDuplicated: 0 + dividerPosProp: 0.5 + originalAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + runtimeCurrentAttributes: + dictionaryList: [] + dividerPosProp: 0.5 + upgradeNode: + sourceCard: {fileID: 0} + isTerminalNode: 0 + isInfiniteUpgrade: 0 + maxUpgradeLevel: 0 + upgradeCards: [] + customDescriptions: [] + prefabRefs: [] + derivativeCardDataRefs: [] + derivativeCharacterDataRefs: [] diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_WitchcraftRay.asset.meta b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_WitchcraftRay.asset.meta new file mode 100644 index 00000000..be59df68 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_WitchcraftRay.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f2eadcedbe8dbf40827851283aa8a56 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs b/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs index 6962dcf3..4722dfef 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs @@ -30,7 +30,7 @@ namespace Continentis.Mods.Basic.Cards private void SelectEffect(CardInstance card) { - CommandQueueManager.Instance.AddCommand(user.deckSubmodule.DiscardCard(card), new CommandContext()); + CommandQueueManager.Instance.AddCommand(user.deckSubmodule.DiscardCard(card, true), new CommandContext()); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs new file mode 100644 index 00000000..7962b8ff --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Combat; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class DivineSmite : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Attack"), + new Cmd_PlaySFX("SFX_Basic_SwordStrike"), + new Cmd_SpawnVFX("VFX_Basic_RedImpact"), + new Cmd_ParamFunction(target => user.Attack(target, GetFinalDamage(target)))); + + foreach (CharacterBase protectTarget in CombatMainManager.Instance.characterController.GetAllAllies(user)) + { + Cmd_ParamFunction protectCommand = new Cmd_ParamFunction((target) => + { + LogicComponent().GenerateProtection(user, target, GetAttribute("BuffCount_Protecting")); + }); + protectCommand.selfContext.context["Target"] = protectTarget; + mainGroup.AddCommand(protectCommand); + } + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Slash(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs.meta new file mode 100644 index 00000000..9bb791d3 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e904dc1daa5821a408f2abd6f29c97a0 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs new file mode 100644 index 00000000..7dc7af94 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class EstablishFormation : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + base.PlayEffect(targetList); + + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_ParamFunction(0.2f, target => + { + target.AddBlock(GetAttribute("Block")); + int stack = GetAttribute("BuffStack_EstablishFormation"); + int count = GetAttribute("BuffCount_EstablishFormation"); + CreateCharacterBuff(stack, count).Apply(target, user, this); + })); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetBlock_Fortitude(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs.meta new file mode 100644 index 00000000..ac2eb6a5 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: eba3b7ce4bc2af042bf93ecb12fc9927 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs new file mode 100644 index 00000000..5bb1deb5 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class FirmBelief : CardLogicBase + { + public override void Initialize() + { + base.Initialize(); + this.eventSubmodule.onInitiativeDiscard.Add("FirmBelief_PlayWhenDiscard", + new PrioritizedCheckAndEffect(() => true, () => this.Play(new List(), user))); + } + + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = SingleCommandGroup( + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_Function(() => user.AddBlock(GetAttribute("Block"))), + new Cmd_Function(() => user.deckSubmodule.DrawCards(GetAttribute("DrawCardAmount")))); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetBlock_Fortitude(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs.meta new file mode 100644 index 00000000..496f1151 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a2f57e9784b12854c823cd5f661beced \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfHonor.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfHonor.cs new file mode 100644 index 00000000..b66a5450 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfHonor.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class OathOfHonor : CardLogicBase + { + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_Function(() => user.ModifyStamina(GetAttribute("StaminaRestore")))); + + return mainGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfHonor.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfHonor.cs.meta new file mode 100644 index 00000000..f5f0e736 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfHonor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9d72f88c86e4d994f874c94972855107 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs index 0f6d058b..45c5455f 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs @@ -1,16 +1,50 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; using UnityEngine; -public class UtmostStrike : MonoBehaviour +namespace Continentis.Mods.Basic.Cards { - // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() + public class UtmostStrike : CardLogicBase { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + AddLogicComponent().SetCondition(SelectCondition).SetEffect(SelectEffect); + } + + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Attack"), + new Cmd_PlaySFX("SFX_Basic_SwordStrike"), + new Cmd_SpawnVFX("VFX_Basic_RedImpact"), + new Cmd_ParamFunction(target => + { + user.Attack(target, GetFinalDamage(target)); + })); //对目标造成伤害 + + LogicComponent().AddSelectionCommands(ref mainGroup); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Slash(); + } + + private bool SelectCondition(CardInstance card) + { + return card.cardLogic.contentSubmodule.cardType is not CardType.Attack; + } + + private void SelectEffect(CardInstance card) + { + CommandQueueManager.Instance.AddCommand(user.deckSubmodule.DiscardCard(card, true), new CommandContext()); + } } - - // Update is called once per frame - void Update() - { - - } -} +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage.meta b/Assets/Mods/Basic/Cards/Scripts/Mage.meta new file mode 100644 index 00000000..117faac1 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b08dd6ea5797f55408bf6b6a69aeba15 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/Abundant.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/Abundant.cs new file mode 100644 index 00000000..3dd5fe9e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/Abundant.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class Abundant : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent().SetCondition(SelectCondition).SetEffect(SelectEffect); + } + + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential, + new Cmd_PlayAnimation(user.characterView, "Skill")); + LogicComponent().AddSelectionCommands(ref mainGroup); + + return mainGroup; + } + + private bool SelectCondition(CardInstance card) + { + return card.cardLogic.contentSubmodule.cardType is CardType.Attack && card.cardLogic.HasKeyword("Magic"); + } + + private void SelectEffect(CardInstance card) + { + /*if (card.cardLogic.HasAttribute("Damage")) + { + card.cardLogic.ModifyAttribute("Damage", GetAttribute("DamageIncrease")); + }*/ + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/Abundant.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/Abundant.cs.meta new file mode 100644 index 00000000..cc089302 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/Abundant.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e7de639785002bc4da8509809e5d12e5 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs new file mode 100644 index 00000000..67535ecb --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class ArcaneMissiles : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + base.PlayEffect(targetList); + + List templates = new List(); + templates.Add(new Cmd_PlayAnimation(user.characterView, "Attack")); + for (int i = 0; i < GetAttribute("AttackCount"); i++) //多段攻击(段数可变)情况的处理 + { + templates.Add(new Cmd_ParamFunction(0.4f, target => user.Attack(target, GetFinalDamage(target)))); + } + + CommandGroup mainGroup = TargetListCommandGroup(targetList, ExecutionMode.Sequential, ExecutionMode.Sequential, templates.ToArray()); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Arcane(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs.meta new file mode 100644 index 00000000..1df00405 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e2678a4ab435adf448a3c80f56c83f69 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ConcentratedSpellcasting.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/ConcentratedSpellcasting.cs new file mode 100644 index 00000000..fd026dcc --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ConcentratedSpellcasting.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class ConcentratedSpellcasting : CardLogicBase + { + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_Function(() => + { + CreateCharacterBuff(GetAttribute("BuffStack_ConcentratedSpellcasting")).Apply(user, user, this); + })); + + return mainGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ConcentratedSpellcasting.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/ConcentratedSpellcasting.cs.meta new file mode 100644 index 00000000..e0e7d675 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ConcentratedSpellcasting.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0ce9231a091a13f4d9183dbde66a1727 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs new file mode 100644 index 00000000..82e4d009 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class ElectricClaw : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Attack"), + new Cmd_ParamFunction(0.2f, target => + { + user.Attack(target, GetFinalDamage(target)); + })); + + mainGroup.AddCommand(new Cmd_Function(()=> + { + CreateCharacterBuff(GetAttribute("BuffStack_Resonance")).Apply(user, user, this); + })); + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Arcane(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs.meta new file mode 100644 index 00000000..1d98e421 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f3eb15b57f771d24bb972922dc3efaac \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/FarSighted.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/FarSighted.cs new file mode 100644 index 00000000..a71813fb --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/FarSighted.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class FarSighted : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent().SetEffect(SelectEffect); + } + + protected override CommandBase PlayEffect(List targetList) + { + base.PlayEffect(targetList); + CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential); + mainGroup.AddCommand(new Cmd_PlayAnimation(user.characterView, "Skill")); + LogicComponent() + .AddSelectionCommands(ref mainGroup, "Card_Basic_FarSighted_SelectionCommandTitle".Localize(), 1); + return mainGroup; + } + + private void SelectEffect(CardInstance card) + { + card.cardLogic.contentSubmodule.keywords.Add("Retain"); + card.cardLogic.contentSubmodule.originalFunctionText += " + $Keyword(\"Retain\")"; + CardTextInterpreter.InterpretText(card.cardLogic, true); + card.handCardView.Setup(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/FarSighted.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/FarSighted.cs.meta new file mode 100644 index 00000000..6f3ac9d5 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/FarSighted.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 239a74c46842bee4e8af12f846b405ab \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/FireBall.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/FireBall.cs new file mode 100644 index 00000000..e7b00a1f --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/FireBall.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class FireBall : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Attack"), + new Cmd_ParamFunction(0.2f, target => + { + user.Attack(target, GetFinalDamage(target)); + CreateCharacterBuff(GetAttribute("BuffStack_Burn")).Apply(target, user, this); + })); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Arcane(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/FireBall.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/FireBall.cs.meta new file mode 100644 index 00000000..3a2ed40f --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/FireBall.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 69f6031d6d6952b4e90185dbddd38070 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/FlameInscription.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/FlameInscription.cs new file mode 100644 index 00000000..2727f5bc --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/FlameInscription.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class FlameInscription : CardLogicBase + { + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_Function(() => + { + CreateCharacterBuff(GetAttribute("BuffStack_FlameInscription")).Apply(user, user, this); + })); + + return mainGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/FlameInscription.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/FlameInscription.cs.meta new file mode 100644 index 00000000..6b117ab9 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/FlameInscription.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 10c8d4faf49be8349ac092999f496973 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/Haste.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/Haste.cs new file mode 100644 index 00000000..acec543f --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/Haste.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class Haste : CardLogicBase + { + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = new CommandGroup(ExecutionMode.Sequential, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_Function(() => + { + CreateCharacterBuff().Apply(user, user, this); + })); + + return mainGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/Haste.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/Haste.cs.meta new file mode 100644 index 00000000..fbee2144 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/Haste.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 96144c951656fe845863917ab00c7643 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs new file mode 100644 index 00000000..6b822c54 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class IdentifyWeakness : CardLogicBase + { + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_ParamFunction(0.1f, target => + { + CreateCharacterBuff(GetAttribute("BuffCount_Vulnerable")).Apply(target, user, this); + })); + + return mainGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs.meta new file mode 100644 index 00000000..2dc88f9b --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/IdentifyWeakness.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e84e43305b792e14a94b6983d6fec4ae \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/Scorch.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/Scorch.cs new file mode 100644 index 00000000..4dad107e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/Scorch.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class Scorch : CardLogicBase + { + protected override CommandBase PlayEffect(List targetList) + { + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Skill"), + new Cmd_ParamFunction(0.1f, target => + { + if (target.combatBuffSubmodule.TryGetBuff(out Burn burn)) + { + int stacksToAdd = burn.unitedStackSubmodule.stackAmount * GetAttribute("BuffStackAmplifier_Burn"); + burn.unitedStackSubmodule.AddStack(stacksToAdd); + } + })); + + return mainGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/Scorch.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/Scorch.cs.meta new file mode 100644 index 00000000..d17f2979 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/Scorch.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f3bfc86c93def5944a54251d67a3f32a \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs new file mode 100644 index 00000000..84be2cdb --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + public class WitchcraftRay : CardLogicBase + { + protected override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + protected override CommandBase PlayEffect(List targetList) + { + base.PlayEffect(targetList); + + CommandGroup mainGroup = TargetListCommandGroup(targetList, + new Cmd_PlayAnimation(user.characterView, "Attack"), + new Cmd_ParamFunction(target => + { + user.Attack(target, GetFinalDamage(target)); + })); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Arcane(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs.meta new file mode 100644 index 00000000..a54b38ca --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0d7c96f898be9d544b7f154a88acdece \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Faint.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Faint.cs index 3080f418..48536aca 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Faint.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Faint.cs @@ -10,7 +10,7 @@ namespace Continentis.Mods.Basic.Cards public override void Initialize() { base.Initialize(); - eventSubmodule.onDraw.Add("Basic_Faint", new EventUnit(() => + eventSubmodule.onDraw.Add("Basic_Faint", new PrioritizedAction(() => { user.ModifyStamina(-1); })); diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Oblivion.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Oblivion.cs index da57c112..19242c1d 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Oblivion.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Oblivion.cs @@ -12,7 +12,7 @@ namespace Continentis.Mods.Basic.Cards public override void Initialize() { base.Initialize(); - eventSubmodule.onActionEnd.Add("Basic_Oblivion_ExhaustCard", new EventUnit(() => + eventSubmodule.onActionEnd.Add("Basic_Oblivion_ExhaustCard", new PrioritizedAction(() => { List handPile = user.deckSubmodule.HandPile; diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs index 919b89a9..bf591cfb 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs @@ -21,14 +21,14 @@ namespace Continentis.Mods.Basic.Buffs this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); - this.eventSubmodule.onActionStart.Add("Bleed", new EventUnit(OnActionStart)); - this.eventSubmodule.onGetAttacked.Add("Bleed", new EventUnit(OnGetAttacked)); + this.eventSubmodule.onActionStart.Add("Bleed", new PrioritizedAction(OnActionStart)); + this.eventSubmodule.onGetAttacked.Add("Bleed", new PrioritizedAction(OnGetAttacked)); } private void OnGetAttacked(AttackResult result) { int stackAmount = unitedStackSubmodule.stackAmount; - result.attacker.Attack(attachedCharacter, stackAmount, true); + result.attacker.Attack(attachedCharacter, stackAmount, false, true); } private void OnActionStart() diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Blind.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Blind.cs index 7ea507b4..c5ae44be 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Blind.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Blind.cs @@ -28,7 +28,7 @@ namespace Continentis.Mods.Basic.Buffs if (FindExistingSameBuff(out existingBuff)) { - existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule.stackAmount); + existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); existingBuff.actionCountSubmodule.AddRemainingCount(this.actionCountSubmodule.remainingCount); int remainingCount = existingBuff.actionCountSubmodule.remainingCount; diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs index eb758f05..da8da6cd 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Burn.cs @@ -21,8 +21,8 @@ namespace Continentis.Mods.Basic.Buffs this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); - this.eventSubmodule.onActionStart.Add("Burn", new EventUnit(OnActionStart)); - this.eventSubmodule.onAfterPlayCard.Add("Burn", new EventUnit>(OnAfterPlayCard)); + this.eventSubmodule.onActionStart.Add("Burn", new PrioritizedAction(OnActionStart)); + this.eventSubmodule.onAfterPlayCard.Add("Burn", new PrioritizedAction>(OnAfterPlayCard)); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) @@ -46,7 +46,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnAfterPlayCard(CardInstance card, List targets) { - sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, true); + sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, false, true); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Consolidate.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Consolidate.cs index 034c10ff..8ae7a006 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Consolidate.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Consolidate.cs @@ -10,7 +10,7 @@ namespace Continentis.Mods.Basic.Buffs { Initialize(BuffType.Positive, BuffDispelLevel.Strong); - this.contentSubmodule = new ContentSubmodule(this, false) + this.contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Count", () => roundCountSubmodule.remainingCount.ToString()); this.iconSubmodule = new IconSubmodule(this); diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs index c949b2ed..a8c245d8 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Corrosion.cs @@ -19,7 +19,7 @@ namespace Continentis.Mods.Basic.Buffs this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); - this.eventSubmodule.onActionStart.Add("Corrosion", new EventUnit(OnActionStart)); + this.eventSubmodule.onActionStart.Add("Corrosion", new PrioritizedAction(OnActionStart)); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) @@ -38,7 +38,7 @@ namespace Continentis.Mods.Basic.Buffs private void OnActionStart() { - sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, true); + sourceCharacter.Attack(attachedCharacter, unitedStackSubmodule.stackAmount, false, true); unitedStackSubmodule.ReduceStack(1); iconSubmodule.Update(); } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs index 5e2216c2..a05c4811 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs @@ -30,7 +30,7 @@ namespace Continentis.Mods.Basic.Buffs if (FindExistingSameBuff(out existingBuff)) { - existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule.stackAmount); + existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); existingBuff.actionCountSubmodule.AddRemainingCount(this.actionCountSubmodule.remainingCount); return false; } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs index f85faa1a..6ee01471 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs @@ -15,6 +15,10 @@ namespace Continentis.Mods.Basic.Buffs { Initialize(BuffType.Neutral, BuffDispelLevel.DeathOnly, 100); + this.protectingSources = new List(); + + this.statusSubmodule = new StatusSubmodule(this, StatusType.Protected); + this.contentSubmodule = new ContentSubmodule(this);//TODO: 以后增加角色的ContentSubmodule this.iconSubmodule = new IconSubmodule(this).SetTextFunctions(); @@ -36,6 +40,13 @@ namespace Continentis.Mods.Basic.Buffs public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + + if (attachedCharacter.combatBuffSubmodule.TryGetBuffs(out List conflictProtectings)) + { + //如果目标正在保护其他角色时,被保护,则应当将目标的所有Protecting Buff移除,以防止冲突. + Debug.Log($"Conflicted Protecting buffs found, count: {conflictProtectings.Count}. Removing all."); + conflictProtectings.For(cp => cp.Remove()); + } if (FindExistingSameBuff(out existingBuff)) { diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs index d62c2528..f2c4d4d0 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Protecting.cs @@ -1,5 +1,6 @@ using Continentis.MainGame; using Continentis.MainGame.Character; +using SLSFramework.General; using UnityEngine; namespace Continentis.Mods.Basic.Buffs @@ -34,6 +35,14 @@ namespace Continentis.Mods.Basic.Buffs public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + + if (attachedCharacter.combatBuffSubmodule.TryGetBuff(out Protected conflictProtected)) + { + //如果目标已经有Protected Buff,则应当将其移除,以防止冲突. + //使用移除所有保护者的方式来移除。 + Debug.Log($"Conflicted Protected buff found, with {conflictProtected.protectingSources.Count} protecting sources. Removing all."); + conflictProtected.protectingSources.For(ps => ps.Remove()); + } if (FindExistingSameBuff(out existingBuff)) { @@ -46,13 +55,12 @@ namespace Continentis.Mods.Basic.Buffs existProtecting.roundCountSubmodule.AddCount(this.roundCountSubmodule.remainingCount); return false; } - - this.protectedBuff ??= target.combatBuffSubmodule.GetBuff(); - this.protectedBuff.protectingSources.Add(this); return true; //独立处理,直接返回true } - Debug.Log("No existing same buff found."); + this.protectedBuff ??= target.combatBuffSubmodule.GetBuff(); + this.protectedBuff.protectingSources.Add(this); + Debug.Log(protectedBuff.protectingSources.Count); return true; } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Resonance.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Resonance.cs index 49b6527e..e16b196e 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Resonance.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Resonance.cs @@ -8,8 +8,6 @@ namespace Continentis.Mods.Basic.Buffs { public sealed class Resonance : CharacterCombatBuffBase, IBuffExtension_IntegerRange { - public Func GetDescription { get; set; } - public Resonance(int stack) { Initialize(BuffType.Positive, BuffDispelLevel.Strong); diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Withstand.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Withstand.cs index 766100e5..9af306a7 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Withstand.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Withstand.cs @@ -19,7 +19,7 @@ namespace Continentis.Mods.Basic.Buffs this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); - this.eventSubmodule.onActionEnd.Add("Withstand", new EventUnit(() => + this.eventSubmodule.onActionEnd.Add("Withstand", new PrioritizedAction(() => { attachedCharacter.AddBlock(this.unitedStackSubmodule.stackAmount, false); })); diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs new file mode 100644 index 00000000..44fc1c2c --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs @@ -0,0 +1,45 @@ +using Continentis.MainGame; +using Continentis.MainGame.Character; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Buffs +{ + public class EstablishFormation : CharacterCombatBuffBase + { + public EstablishFormation(int stack, int count) + { + Initialize(BuffType.Positive, BuffDispelLevel.Basic); + + this.contentSubmodule = new ContentSubmodule(this) + .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()) + .AddParameterGetter("Count", () => actionCountSubmodule.remainingCount.ToString()); + + this.iconSubmodule = new IconSubmodule(this); + + this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); + + this.actionCountSubmodule = new CountSubmodule(this, count); + + this.eventSubmodule = new EventSubmodule(this); + this.eventSubmodule.onGetAttacked.Add("EstablishFormation", new PrioritizedAction(atkResult => + { + attachedCharacter.Attack(atkResult.attacker, unitedStackSubmodule.stackAmount, false, true); + })); + } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + + if (FindExistingSameBuff(out existingBuff)) + { + existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); + existingBuff.actionCountSubmodule.PickHigherCount(this.actionCountSubmodule); + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs.meta new file mode 100644 index 00000000..32345682 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/EstablishFormation.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ac01d8c37325ef84c919257c58ddb968 \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/GuardianAura.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/GuardianAura.cs index 63ecb7cc..55267599 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/Knight/GuardianAura.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Knight/GuardianAura.cs @@ -20,7 +20,7 @@ namespace Continentis.Mods.Basic.Buffs this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); - this.eventSubmodule.onActionStart.Add("GuardianAura", new EventUnit(() => + this.eventSubmodule.onActionStart.Add("GuardianAura", new PrioritizedAction(() => { CombatMainManager.Instance.characterController.playerHeroes.ForEach(hero => { @@ -35,7 +35,7 @@ namespace Continentis.Mods.Basic.Buffs if (FocusingCheck(out existingBuff)) { - existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule.stackAmount); + existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); return false; } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage.meta b/Assets/Mods/Basic/Characters/CombatBuffs/Mage.meta new file mode 100644 index 00000000..39294463 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43d48e5f456693a4ca5fad27c40fda7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage/ConcentratedSpellcasting.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/ConcentratedSpellcasting.cs new file mode 100644 index 00000000..e8f93681 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/ConcentratedSpellcasting.cs @@ -0,0 +1,38 @@ +using Continentis.MainGame; +using Continentis.MainGame.Character; +using UnityEngine; + +namespace Continentis.Mods.Basic.Buffs +{ + public class ConcentratedSpellcasting : CharacterCombatBuffBase + { + public ConcentratedSpellcasting(int stack) + { + Initialize(BuffType.Focusing, BuffDispelLevel.Strong); + + this.contentSubmodule = new ContentSubmodule(this) + .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); + + this.iconSubmodule = new IconSubmodule(this); + + this.unitedStackSubmodule = new UnitedStackSubmodule(this, true, -1, stack, true); + + this.generalAttributeSubmodule = new GeneralAttributeSubmodule(this); + this.generalAttributeSubmodule.numericChange.Add("MagicDamageDealtOffset", stack); + } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + + if (FocusingCheck(out existingBuff)) + { + + existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule); + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage/ConcentratedSpellcasting.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/ConcentratedSpellcasting.cs.meta new file mode 100644 index 00000000..1da66593 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/ConcentratedSpellcasting.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 661b4fa4f14f5bf4da76a750f3738e1d \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage/FlameInscription.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/FlameInscription.cs new file mode 100644 index 00000000..97efbeab --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/FlameInscription.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Combat; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Buffs +{ + public class FlameInscription : CharacterCombatBuffBase + { + public FlameInscription(int stack) + { + Initialize(BuffType.Positive, BuffDispelLevel.Strong); + + this.contentSubmodule = new ContentSubmodule(this) + .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); + + this.iconSubmodule = new IconSubmodule(this); + + this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); + + this.eventSubmodule = new EventSubmodule(this); + this.eventSubmodule.onAfterPlayCard.Add("FlameInscription", + new PrioritizedAction>((card, targets) => + { + if (card.cardLogic.contentSubmodule.cardType == CardType.Attack && card.cardLogic.HasKeyword("Magic")) + { + List enemies = CombatMainManager.Instance.characterController.GetAllEnemies(attachedCharacter); + foreach (CharacterBase enemy in enemies) + { + CreateCharacterBuff(unitedStackSubmodule.stackAmount).Apply(enemy, attachedCharacter); + } + } + })); + } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + + if (FindExistingSameBuff(out existingBuff)) + { + existingBuff.unitedStackSubmodule.AddStack(this.unitedStackSubmodule.stackAmount); + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage/FlameInscription.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/FlameInscription.cs.meta new file mode 100644 index 00000000..e93d68db --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/FlameInscription.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 30a2988fc4787c14b860f6b235d44fac \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage/Haste.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/Haste.cs new file mode 100644 index 00000000..be70d237 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/Haste.cs @@ -0,0 +1,41 @@ +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Combat; +using SLSFramework.General; +using SLSFramework.UModAssistance; +using UnityEngine; + +namespace Continentis.Mods.Basic.Buffs +{ + public class Haste : CharacterCombatBuffBase + { + public Haste() + { + Initialize(BuffType.Focusing, BuffDispelLevel.Strong); + + this.contentSubmodule = new ContentSubmodule(this); + + this.iconSubmodule = new IconSubmodule(this); + + this.eventSubmodule = new EventSubmodule(this); + this.eventSubmodule.onRoundEnd.Add("Haste", new PrioritizedAction(() => + { + CardData whimsyData = ModManager.GetData("CardData_Basic_Whimsy"); + CardInstance.GenerateCardInstance(whimsyData, attachedCharacter.team, "Hand"); + })); + } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView); + + if (FocusingCheck(out existingBuff)) + { + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Mage/Haste.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/Haste.cs.meta new file mode 100644 index 00000000..90243d61 --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Mage/Haste.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f8f47dd84ab44ef4582075fdfe83f23b \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs b/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs index c8c6fd18..1cf9afdc 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/MarshalOfTheUnderworld/Basic_Hellfire.cs @@ -21,7 +21,7 @@ namespace Continentis.Mods.Basic.Buffs this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); - this.eventSubmodule.onAfterPlayCard.Add("Basic_Hellfire", new EventUnit>(OnAfterPlayCard)); + this.eventSubmodule.onAfterPlayCard.Add("Basic_Hellfire", new PrioritizedAction>(OnAfterPlayCard)); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) diff --git a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Knight.asset b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Knight.asset index 739cab04..38cf3034 100644 --- a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Knight.asset +++ b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Knight.asset @@ -201,14 +201,15 @@ MonoBehaviour: derivativeCardDataRefs: [] derivativeCharacterDataRefs: [] initialDeckRef: - - CardData_Basic_Whimsy - - CardData_Basic_Rouse - - CardData_Basic_Tactic - CardData_Basic_Cover - CardData_Basic_OathOfCourage - CardData_Basic_BattlefieldExperience - CardData_Basic_BodyAsShield - CardData_Basic_EchoOfHonor - CardData_Basic_IronWall + - CardData_Basic_FirmBelief + - CardData_Basic_UtmostStrike + - CardData_Basic_DivineSmite + - CardData_Basic_EstablishFormation hudDataRefs: - HUDData_Basic_Default diff --git a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Mage.asset b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Mage.asset index 8ecf6d8c..7fe5ccd1 100644 --- a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Mage.asset +++ b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Mage.asset @@ -25,31 +25,31 @@ MonoBehaviour: coreAttributes: dictionaryList: - Key: Level - Value: 0 + Value: 12 index: 0 isKeyDuplicated: 0 - Key: Strength - Value: 0 + Value: 12 index: 1 isKeyDuplicated: 0 - Key: Agility - Value: 0 + Value: 12 index: 2 isKeyDuplicated: 0 - Key: Intelligence - Value: 0 + Value: 18 index: 3 isKeyDuplicated: 0 - Key: Physique - Value: 0 + Value: 12 index: 4 isKeyDuplicated: 0 - Key: Perception - Value: 0 + Value: 18 index: 5 isKeyDuplicated: 0 - Key: Charisma - Value: 0 + Value: 18 index: 6 isKeyDuplicated: 0 dividerPosProp: 0.5 @@ -179,6 +179,10 @@ MonoBehaviour: Value: 0 index: 30 isKeyDuplicated: 0 + - Key: MaximumFocusingBuffAmount + Value: 1 + index: 31 + isKeyDuplicated: 0 dividerPosProp: 0.5 runtimeGeneralAttributes: dictionaryList: @@ -201,6 +205,15 @@ MonoBehaviour: derivativeCardDataRefs: [] derivativeCharacterDataRefs: [] initialDeckRef: - - CardData_Basic_HolyWaterPreparation + - CardData_Basic_Haste + - CardData_Basic_FarSighted + - CardData_Basic_FlameInscription + - CardData_Basic_ArcaneMissiles + - CardData_Basic_ConcentratedSpellcasting + - CardData_Basic_FireBall + - CardData_Basic_Scorch + - CardData_Basic_ElectricClaw + - CardData_Basic_IdentifyWeakness + - CardData_Basic_WitchcraftRay hudDataRefs: - HUDData_Basic_Default diff --git a/Assets/Mods/Basic/Equipments/Contents/Basic_SteelBracer/SteelBracer.cs b/Assets/Mods/Basic/Equipments/Contents/Basic_SteelBracer/SteelBracer.cs index 2c0537ee..ce7aca2a 100644 --- a/Assets/Mods/Basic/Equipments/Contents/Basic_SteelBracer/SteelBracer.cs +++ b/Assets/Mods/Basic/Equipments/Contents/Basic_SteelBracer/SteelBracer.cs @@ -12,7 +12,7 @@ namespace Continentis.Mods.Basic.Equipments public override void Initialize(CharacterBase character) { base.Initialize(character); - eventSubmodule.onCombatStart.InsertByPriority("SteelBracer_AddFirm", new EventUnit(() => + eventSubmodule.onCombatStart.InsertByPriority("SteelBracer_AddFirm", new PrioritizedAction(() => { new Firm(1).Apply(character); })); diff --git a/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset b/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset index fad4f784..4fb94758 100644 --- a/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset +++ b/Assets/Mods/Basic/Keywords/KeywordData_Basic_Default.asset @@ -92,5 +92,17 @@ MonoBehaviour: description: Keyword_Ethereal_Description index: 12 isKeyDuplicated: 0 + - Key: Physics + Value: + name: Keyword_Physics + description: Keyword_Physics_Description + index: 13 + isKeyDuplicated: 0 + - Key: Magic + Value: + name: Keyword_Magic + description: Keyword_Magic_Description + index: 14 + isKeyDuplicated: 0 dividerPosProp: 0.2 - keywordToAdd: + keywordToAdd: Magic diff --git a/Assets/Mods/Basic/References/Basic_EditKeywordsReference.asset b/Assets/Mods/Basic/References/Basic_EditKeywordsReference.asset index 9c4b55ce..ec604714 100644 --- a/Assets/Mods/Basic/References/Basic_EditKeywordsReference.asset +++ b/Assets/Mods/Basic/References/Basic_EditKeywordsReference.asset @@ -94,4 +94,12 @@ MonoBehaviour: Value: index: 19 isKeyDuplicated: 0 + - Key: Physics + Value: + index: 20 + isKeyDuplicated: 0 + - Key: Magic + Value: + index: 21 + isKeyDuplicated: 0 dividerPosProp: 0.3 diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_ConcentratedSpellcasting.png b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_ConcentratedSpellcasting.png new file mode 100644 index 00000000..c5733e99 Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_ConcentratedSpellcasting.png differ diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_ConcentratedSpellcasting.png.meta b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_ConcentratedSpellcasting.png.meta new file mode 100644 index 00000000..9eed063d --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_ConcentratedSpellcasting.png.meta @@ -0,0 +1,119 @@ +fileFormatVersion: 2 +guid: dd72527ca678e294ea29e142f5bb8828 +labels: +- UnityAI +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1024 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_EstablishFormation.png b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_EstablishFormation.png new file mode 100644 index 00000000..d7a900b1 Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_EstablishFormation.png differ diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_EstablishFormation.png.meta b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_EstablishFormation.png.meta new file mode 100644 index 00000000..9968a3d7 --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_EstablishFormation.png.meta @@ -0,0 +1,119 @@ +fileFormatVersion: 2 +guid: 483f48f74e788874e98b6a6fe58a13a7 +labels: +- UnityAI +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1024 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_FlameInscription.png b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_FlameInscription.png new file mode 100644 index 00000000..6196d07a Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_FlameInscription.png differ diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_FlameInscription.png.meta b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_FlameInscription.png.meta new file mode 100644 index 00000000..5751a064 --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_FlameInscription.png.meta @@ -0,0 +1,119 @@ +fileFormatVersion: 2 +guid: f1a7140a173a15e4dae15fc564270a3e +labels: +- UnityAI +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1024 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_Haste.png b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_Haste.png new file mode 100644 index 00000000..c4be1084 Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_Haste.png differ diff --git a/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_Haste.png.meta b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_Haste.png.meta new file mode 100644 index 00000000..7327a3d7 --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Buffs/BuffIcon_Basic_Haste.png.meta @@ -0,0 +1,119 @@ +fileFormatVersion: 2 +guid: 765be03a9c8ba27449d2e56e67951911 +labels: +- UnityAI +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1024 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/2024-04-26-161239_tPony-nai3_v4-1_102156755496204_02.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ArcaneMissiles.png similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/2024-04-26-161239_tPony-nai3_v4-1_102156755496204_02.png rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ArcaneMissiles.png diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/2024-04-26-161239_tPony-nai3_v4-1_102156755496204_02.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ArcaneMissiles.png.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/2024-04-26-161239_tPony-nai3_v4-1_102156755496204_02.png.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ArcaneMissiles.png.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00009-622427681.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ConcentratedSpellcasting.png similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00009-622427681.png rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ConcentratedSpellcasting.png diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00009-622427681.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ConcentratedSpellcasting.png.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00009-622427681.png.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ConcentratedSpellcasting.png.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00065-3230953026.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_DivineSmite.png similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00065-3230953026.png rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_DivineSmite.png diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00065-3230953026.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_DivineSmite.png.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00065-3230953026.png.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_DivineSmite.png.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_WrathOfTheUnderworld.jpeg b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ElectricClaw.jpeg similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_WrathOfTheUnderworld.jpeg rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ElectricClaw.jpeg diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_WrathOfTheUnderworld.jpeg.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ElectricClaw.jpeg.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_WrathOfTheUnderworld.jpeg.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_ElectricClaw.jpeg.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Cohesion.jpeg b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FarSighted.jpeg similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Cohesion.jpeg rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FarSighted.jpeg diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Cohesion.jpeg.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FarSighted.jpeg.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Cohesion.jpeg.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FarSighted.jpeg.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBolt.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBall.png similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBolt.png rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBall.png diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBolt.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBall.png.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBolt.png.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FireBall.png.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/Kitsune Girl_00006_.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FirmBelief.png similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/Kitsune Girl_00006_.png rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FirmBelief.png diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/Kitsune Girl_00006_.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FirmBelief.png.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/Kitsune Girl_00006_.png.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FirmBelief.png.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_AblazeInPurgatory.jpg b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FlameInscription.jpg similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_AblazeInPurgatory.jpg rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FlameInscription.jpg diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_AblazeInPurgatory.jpg.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FlameInscription.jpg.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_AblazeInPurgatory.jpg.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_FlameInscription.jpg.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00163-3767600071.jpg b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Haste.jpg similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00163-3767600071.jpg rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Haste.jpg diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00163-3767600071.jpg.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Haste.jpg.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00163-3767600071.jpg.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Haste.jpg.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/30b9f7a9-82ff-4d18-b593-81ab816f0700.jpeg b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_IdentifyWeakness.jpeg similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/30b9f7a9-82ff-4d18-b593-81ab816f0700.jpeg rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_IdentifyWeakness.jpeg diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/30b9f7a9-82ff-4d18-b593-81ab816f0700.jpeg.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_IdentifyWeakness.jpeg.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/30b9f7a9-82ff-4d18-b593-81ab816f0700.jpeg.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_IdentifyWeakness.jpeg.meta diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Scorch.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Scorch.png new file mode 100644 index 00000000..2200276c Binary files /dev/null and b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Scorch.png differ diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Scorch.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Scorch.png.meta new file mode 100644 index 00000000..68e7a85f --- /dev/null +++ b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_Scorch.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: c7e0489a5e85e65499fcacddb7c1391e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00029-2825373066.png b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_UtmostStrike.png similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00029-2825373066.png rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_UtmostStrike.png diff --git a/Assets/Mods/Basic/Sprites/Cards/AI/00029-2825373066.png.meta b/Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_UtmostStrike.png.meta similarity index 100% rename from Assets/Mods/Basic/Sprites/Cards/AI/00029-2825373066.png.meta rename to Assets/Mods/Basic/Sprites/Cards/AI/CardSprite_Basic_UtmostStrike.png.meta diff --git a/Assets/Prefabs/MainGame/UI/HUD/CharacterBuffIcon.prefab b/Assets/Prefabs/MainGame/UI/HUD/CharacterBuffIcon.prefab index 99d620a5..066792a5 100644 --- a/Assets/Prefabs/MainGame/UI/HUD/CharacterBuffIcon.prefab +++ b/Assets/Prefabs/MainGame/UI/HUD/CharacterBuffIcon.prefab @@ -107,8 +107,8 @@ RectTransform: - {fileID: 920228657745300743} - {fileID: 1747082771788019681} - {fileID: 6113508030280563894} - - {fileID: 1756108987000774744} - {fileID: 4394535306956244376} + - {fileID: 1756108987000774744} - {fileID: 1736650278207734920} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -133,11 +133,11 @@ MonoBehaviour: icon: {fileID: 7971846247660817733} textList: - {fileID: 579990427340730976} - - {fileID: 5917963190132043573} - {fileID: 5354402845376728499} + - {fileID: 5917963190132043573} - {fileID: 8374069862266419973} + infoBox: {fileID: 0} buffTypeBackground: {fileID: 6117051421535665525} - mainIcon: {fileID: 7971846247660817733} positive: {fileID: 21300000, guid: 472057be1c2d5c54d8230100608cc7f4, type: 3} negative: {fileID: 21300000, guid: afb6c0f951bca8b428842e1e2a096d2c, type: 3} neutral: {fileID: 21300000, guid: 674d738b53e3f304e82cd1d2e4afc5d4, type: 3} @@ -501,7 +501,7 @@ GameObject: - component: {fileID: 1605249978727425305} - component: {fileID: 5354402845376728499} m_Layer: 5 - m_Name: Text2 + m_Name: Text1 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -637,7 +637,7 @@ GameObject: - component: {fileID: 5779009048381839557} - component: {fileID: 5917963190132043573} m_Layer: 5 - m_Name: Text1 + m_Name: Text2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Scripts/MainGame/Base/Interpreters/BuffTextInterpreter.cs b/Assets/Scripts/MainGame/Base/Interpreters/BuffTextInterpreter.cs index 2914d717..a96d8c0e 100644 --- a/Assets/Scripts/MainGame/Base/Interpreters/BuffTextInterpreter.cs +++ b/Assets/Scripts/MainGame/Base/Interpreters/BuffTextInterpreter.cs @@ -28,6 +28,7 @@ namespace Continentis.MainGame TextInterpreter.SetFunction("ParameterPercent", new Func((paramName) => GetParameterPercent(buff, paramName))); TextInterpreter.SetFunction("ParameterFloat", new Func((paramName) => GetParameterFloat(buff, paramName))); TextInterpreter.SetFunction("ParameterString", new Func((paramName) => GetParameterString(buff, paramName))); + string descriptionToParse = buff.contentSubmodule.originalFunctionText; string result = DynamicTextInterpreter.Parse(TextInterpreter, descriptionToParse); buff.contentSubmodule.interpretedFunctionText = result; diff --git a/Assets/Scripts/MainGame/Buff/BuffBase.cs b/Assets/Scripts/MainGame/Buff/BuffBase.cs index f6cf69a8..bbfdf844 100644 --- a/Assets/Scripts/MainGame/Buff/BuffBase.cs +++ b/Assets/Scripts/MainGame/Buff/BuffBase.cs @@ -48,20 +48,20 @@ namespace Continentis.MainGame protected bool FindExistingSameBuff(out T2 existingBuff, List buffList) where T1 : BuffBase where T2 : BuffBase { existingBuff = null; - Debug.Log($"Searching for existing buff of type: {this.GetType()} in buff list of count: {buffList.Count}"); + //Debug.Log($"Searching for existing buff of type: {this.GetType()} in buff list of count: {buffList.Count}"); foreach (T1 buff in buffList) { - Debug.Log($"existing buff type: {buff.GetType().AssemblyQualifiedName}, this buff type: {this.GetType().AssemblyQualifiedName}"); + //Debug.Log($"existing buff type: {buff.GetType().AssemblyQualifiedName}, this buff type: {this.GetType().AssemblyQualifiedName}"); if (buff.GetType() == this.GetType()) { - Debug.Log("Found existing buff of the same type."); + //Debug.Log("Found existing buff of the same type."); existingBuff = buff as T2; - Debug.Log(existingBuff == null); + //Debug.Log(existingBuff == null); return true; } else { - Debug.Log("Buff types do not match."); + //Debug.Log("Buff types do not match."); } } diff --git a/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs b/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs index 1259d269..61de646b 100644 --- a/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs +++ b/Assets/Scripts/MainGame/Buff/BuffSubmodules.cs @@ -117,44 +117,44 @@ namespace Continentis.MainGame public class EventSubmodule : BuffSubmodule { - public OrderedDictionary onCombatStart; //战斗开始时 - public OrderedDictionary onCombatEnd; //战斗结束时 + public OrderedDictionary onCombatStart; //战斗开始时 + public OrderedDictionary onCombatEnd; //战斗结束时 - public OrderedDictionary onRoundStart; //每回合开始时 - public OrderedDictionary onRoundEnd; //每回合结束时 + public OrderedDictionary onRoundStart; //每回合开始时 + public OrderedDictionary onRoundEnd; //每回合结束时 - public OrderedDictionary onActionStart; //每次行动开始时 - public OrderedDictionary onActionEnd; //每次行动结束时 + public OrderedDictionary onActionStart; //每次行动开始时 + public OrderedDictionary onActionEnd; //每次行动结束时 - public OrderedDictionary> onOpponentDecideAction; //对手AI决定行动时,参数为对手,和原定的目标角色 + public OrderedDictionary> onOpponentDecideAction; //对手AI决定行动时,参数为对手,和原定的目标角色 - public OrderedDictionary> onGetAttacked; //被攻击后,参数为伤害结果 + public OrderedDictionary> onGetAttacked; //被攻击后,参数为伤害结果 - public OrderedDictionary> onDrawCard; //抽到卡牌时 - public OrderedDictionary>> onBeforePlayCard; //使用卡牌前,参数为目标列表 - public OrderedDictionary>> onAfterPlayCard; //使用卡牌后,参数为目标列表 - public OrderedDictionary> onDiscardCard; //卡牌被弃牌时 - public OrderedDictionary> onExhaustCard; //卡牌被消耗时 + public OrderedDictionary> onDrawCard; //抽到卡牌时 + public OrderedDictionary>> onBeforePlayCard; //使用卡牌前,参数为目标列表 + public OrderedDictionary>> onAfterPlayCard; //使用卡牌后,参数为目标列表 + public OrderedDictionary> onDiscardCard; //卡牌被弃牌时 + public OrderedDictionary> onExhaustCard; //卡牌被消耗时 public EventSubmodule(BuffBase buff) : base(buff) { - onCombatStart = new OrderedDictionary(); - onCombatEnd = new OrderedDictionary(); + onCombatStart = new OrderedDictionary(); + onCombatEnd = new OrderedDictionary(); - onRoundStart = new OrderedDictionary(); - onRoundEnd = new OrderedDictionary(); + onRoundStart = new OrderedDictionary(); + onRoundEnd = new OrderedDictionary(); - onActionStart = new OrderedDictionary(); - onActionEnd = new OrderedDictionary(); + onActionStart = new OrderedDictionary(); + onActionEnd = new OrderedDictionary(); - onGetAttacked = new OrderedDictionary>(); - onOpponentDecideAction = new OrderedDictionary>(); + onGetAttacked = new OrderedDictionary>(); + onOpponentDecideAction = new OrderedDictionary>(); - onDrawCard = new OrderedDictionary>(); - onBeforePlayCard = new OrderedDictionary>>(); - onAfterPlayCard = new OrderedDictionary>>(); - onDiscardCard = new OrderedDictionary>(); - onExhaustCard = new OrderedDictionary>(); + onDrawCard = new OrderedDictionary>(); + onBeforePlayCard = new OrderedDictionary>>(); + onAfterPlayCard = new OrderedDictionary>>(); + onDiscardCard = new OrderedDictionary>(); + onExhaustCard = new OrderedDictionary>(); } } @@ -252,6 +252,19 @@ namespace Continentis.MainGame remainingCount = Mathf.Min(remainingCount, maximumCount); onCountChanged?.Invoke(remainingCount); } + + /// + /// 选择更高的持续时间和剩余时间。 + /// + public void PickHigherCount(CountSubmodule other) + { + if (isInfinite) + { + return; + } + maximumCount = Mathf.Max(maximumCount, other.maximumCount); + remainingCount = Mathf.Max(remainingCount, other.remainingCount); + } } @@ -289,9 +302,9 @@ namespace Continentis.MainGame stackUpperLimit = keepMaximal ? Mathf.Max(stackUpperLimit, upperLimit) : upperLimit; } - public void PickHigherStack(int newAmount) + public void PickHigherStack(UnitedStackSubmodule other) { - stackAmount = Mathf.Max(stackAmount, newAmount); + stackAmount = Mathf.Max(stackAmount, other.stackAmount); if (stackUpperLimit > 0) { stackAmount = Mathf.Min(stackAmount, stackUpperLimit); @@ -339,6 +352,11 @@ namespace Continentis.MainGame IntegerRange.OnBecomeZero(); } } + + if(buff is CharacterBuffBase characterBuff) + { + characterBuff.iconSubmodule?.Update(); + } } public void ClearAllStacks() diff --git a/Assets/Scripts/MainGame/Card/CardInstance.cs b/Assets/Scripts/MainGame/Card/CardInstance.cs index 9aa5808c..8cea13e8 100644 --- a/Assets/Scripts/MainGame/Card/CardInstance.cs +++ b/Assets/Scripts/MainGame/Card/CardInstance.cs @@ -58,7 +58,7 @@ namespace Continentis.MainGame.Card public static CardInstance GenerateCardInstance(CardLogicBase logic, ICardOwner owner, string pileName, int index = -1) { CardInstance cardInstance = new CardInstance(logic, owner, pileName, index); - cardInstance.cardLogic.Initialize(); + //cardInstance.cardLogic.Initialize(); return cardInstance; } diff --git a/Assets/Scripts/MainGame/Card/CardLogicBase.cs b/Assets/Scripts/MainGame/Card/CardLogicBase.cs index 40d5f020..1c3374a7 100644 --- a/Assets/Scripts/MainGame/Card/CardLogicBase.cs +++ b/Assets/Scripts/MainGame/Card/CardLogicBase.cs @@ -86,7 +86,7 @@ namespace Continentis.MainGame.Card if (HasKeyword("Instant")) //如果是“瞬发”牌,添加抽牌后立刻打出的事件 { - eventSubmodule.onDraw.InsertByPriority("Instant", new EventUnit(() => + eventSubmodule.onDraw.InsertByPriority("Instant", new PrioritizedAction(() => { DetectTargetsValidity(out List valid, out _, out _); Play(SetRandomTargets(valid), user); diff --git a/Assets/Scripts/MainGame/Card/CardMainFunctions.cs b/Assets/Scripts/MainGame/Card/CardMainFunctions.cs index cb02fd0b..05234b71 100644 --- a/Assets/Scripts/MainGame/Card/CardMainFunctions.cs +++ b/Assets/Scripts/MainGame/Card/CardMainFunctions.cs @@ -246,7 +246,7 @@ namespace Continentis.MainGame.Card } else if(!HasKeyword("Reuse")) { - CommandQueueManager.Instance.AddCommand(playerHero.deckSubmodule.DiscardCard(cardInstance)); + CommandQueueManager.Instance.AddCommand(playerHero.deckSubmodule.DiscardCard(cardInstance, false)); CommandQueueManager.Instance.AddCommand(new Cmd_Function(() => { if (handCardView != null) diff --git a/Assets/Scripts/MainGame/Card/CardSubmodules/EventSubmodule.cs b/Assets/Scripts/MainGame/Card/CardSubmodules/EventSubmodule.cs index b4e7bfd5..62f82290 100644 --- a/Assets/Scripts/MainGame/Card/CardSubmodules/EventSubmodule.cs +++ b/Assets/Scripts/MainGame/Card/CardSubmodules/EventSubmodule.cs @@ -12,40 +12,40 @@ namespace Continentis.MainGame.Card public UnityAction onTargeting; //选中目标时 public UnityAction onUntargeting; //取消选中目标时 - public OrderedDictionary onCombatStart; //战斗开始时 - public OrderedDictionary onCombatEnd; //战斗结束时 + public OrderedDictionary onCombatStart; //战斗开始时 + public OrderedDictionary onCombatEnd; //战斗结束时 - public OrderedDictionary onRoundStart; //每回合开始时 - public OrderedDictionary onRoundEnd; //每回合结束时 + public OrderedDictionary onRoundStart; //每回合开始时 + public OrderedDictionary onRoundEnd; //每回合结束时 - public OrderedDictionary onActionStart; //每次行动开始时 - public OrderedDictionary onActionEnd; //每次行动结束时 + public OrderedDictionary onActionStart; //每次行动开始时 + public OrderedDictionary onActionEnd; //每次行动结束时 - public OrderedDictionary onDraw; //抽到此卡牌时 - public OrderedDictionary>> onBeforePlay; //使用此卡牌前,参数为目标列表 - public OrderedDictionary>> onAfterPlay; //使用此卡牌后,参数为目标列表 - public OrderedDictionary onDiscard; //此卡牌被弃牌时 - public OrderedDictionary onExhaust; //此卡牌被消耗时 + public OrderedDictionary onDraw; //抽到此卡牌时 + public OrderedDictionary>> onBeforePlay; //使用此卡牌前,参数为目标列表 + public OrderedDictionary>> onAfterPlay; //使用此卡牌后,参数为目标列表 + public OrderedDictionary onInitiativeDiscard; //此卡牌被主动弃牌时,如果读到任意一个true,打断弃牌行为,执行所有对应效果 + public OrderedDictionary onExhaust; //此卡牌被消耗时 public EventSubmodule(CardLogicBase card) : base(card) { onTargeting += card.TargetingEffect; onUntargeting = card.UntargetingEffect; - onCombatStart = new OrderedDictionary(); - onCombatEnd = new OrderedDictionary(); + onCombatStart = new OrderedDictionary(); + onCombatEnd = new OrderedDictionary(); - onRoundStart = new OrderedDictionary(); - onRoundEnd = new OrderedDictionary(); + onRoundStart = new OrderedDictionary(); + onRoundEnd = new OrderedDictionary(); - onActionStart = new OrderedDictionary(); - onActionEnd = new OrderedDictionary(); + onActionStart = new OrderedDictionary(); + onActionEnd = new OrderedDictionary(); - onDraw = new OrderedDictionary(); - onBeforePlay = new OrderedDictionary>>(); - onAfterPlay = new OrderedDictionary>>(); - onDiscard = new OrderedDictionary(); - onExhaust = new OrderedDictionary(); + onDraw = new OrderedDictionary(); + onBeforePlay = new OrderedDictionary>>(); + onAfterPlay = new OrderedDictionary>>(); + onInitiativeDiscard = new OrderedDictionary(); + onExhaust = new OrderedDictionary(); } } diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs index 195244a4..23f5b08d 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs @@ -51,5 +51,19 @@ namespace Continentis.MainGame.Card selectedCards.ForEach(selectEffect); })); } + + + /// + /// 添加选择手牌的指令(无UI,直接选择符合条件的卡牌) + /// + /// 目标指令组 + public void AddSelectionCommands(ref CommandGroup commandGroup) + { + selectedCards = user.deckSubmodule.HandPile.Filtered(selectCondition).ToList(); + commandGroup.AddCommand(new Cmd_Function(() => + { + selectedCards.ForEach(selectEffect); + })); + } } } diff --git a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterBuffBase.cs b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterBuffBase.cs index 0ef344a3..db1ed573 100644 --- a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterBuffBase.cs +++ b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterBuffBase.cs @@ -1,3 +1,4 @@ +using SLSFramework.UModAssistance; using UnityEngine; namespace Continentis.MainGame.Character @@ -20,4 +21,36 @@ namespace Continentis.MainGame.Character public abstract void Apply(CharacterBase attachedCharacter, CharacterBase sourceCharacter = null); } + + public partial class CharacterBuffBase + { + /// + /// 创建一个角色战斗Buff实例 + /// 注意,此函数依赖ModManager的类型注册功能,请确保在Mod加载时已注册对应Buff类型 + /// 此函数中的T并不是原型参数,而是获取Mod中注册的类型用的 + /// + public T CreateCharacterBuff(params object[] parameters) where T :CharacterCombatBuffBase + { + string buffTypeID = ModManager.GetTypeID(typeof(T)); + + if (string.IsNullOrEmpty(buffTypeID)) + { + Debug.LogError($"Failed to get buff name for type {typeof(T).FullName}"); + return null; + } + + return ModManager.CreateInstance(buffTypeID, parameters); + } + + public T CreateCharacterBuff(string buffTypeID, params object[] parameters) where T :CharacterCombatBuffBase + { + if (string.IsNullOrEmpty(buffTypeID)) + { + Debug.LogError($"Failed to get buff name for type {typeof(T).FullName}"); + return null; + } + + return ModManager.CreateInstance(buffTypeID, parameters); + } + } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs index fecbe7e1..a8c38d58 100644 --- a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs +++ b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs @@ -115,6 +115,13 @@ namespace Continentis.MainGame.Character /// public bool FocusingCheck(out CharacterCombatBuffBase existingBuff) { + if (buffType != BuffType.Focusing) + { + Debug.LogError("FocusingCheck只能用于专注类Buff"); + existingBuff = null; + return false; + } + // 移除超出上限的专注类Buff List focusingBuffs = attachedCharacter.combatBuffSubmodule.buffList.Where(buff => buff.buffType == BuffType.Focusing).ToList(); diff --git a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs index 3e765094..7ac45f03 100644 --- a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs +++ b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs @@ -76,7 +76,7 @@ namespace Continentis.MainGame.Character /// 是否无视格挡 /// 是否无视护盾 /// 实际造成的伤害 - public int Attack(CharacterBase target, int startDamage, bool ignoreDodge = false, bool ignoreBlock = false, bool ignoreShield = false) + public AttackResult Attack(CharacterBase target, int startDamage, bool triggerAttackEvent = true, bool ignoreDodge = false, bool ignoreBlock = false, bool ignoreShield = false) { eventSubmodule.onStartAttack.Invoke(new List { target }); @@ -106,9 +106,12 @@ namespace Continentis.MainGame.Character target.characterView.hudContainer.enablingHUDs["MainAttributesBar"].UpdateHud(); AttackResult attackResult = new AttackResult(this, startDamage, dodged, blocked, shielded, hurt); - eventSubmodule.onFinishAttack.Invoke(new List { target }, new List { attackResult }); - - return hurt; + if (triggerAttackEvent) + { + eventSubmodule.onFinishAttack.Invoke(new List { target }, new List { attackResult }); + } + + return attackResult; } /// diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs index 4e8d8dd5..df47262a 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs @@ -27,6 +27,19 @@ namespace Continentis.MainGame.Character { return (T)buffList.FindAll(x => x.GetType() == typeof(T)).Find(x => x.identification == identification); } + + public bool TryGetBuff(out T buff) where T : CharacterCombatBuffBase + { + buff = GetBuff(); + return buff != null; + } + + public bool TryGetBuffs(out List buffs) where T : CharacterCombatBuffBase + { + List foundBuffs = buffList.FindAll(x => x.GetType() == typeof(T)); + buffs = foundBuffs.Cast().ToList(); + return buffs.Count > 0; + } public bool HasBuff() where T : CharacterCombatBuffBase { diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/DeckSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/DeckSubmodule.cs index a3079784..e5402ede 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/DeckSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/DeckSubmodule.cs @@ -86,11 +86,11 @@ namespace Continentis.MainGame.Character card.cardLogic.Play(targetList, owner); } - public CommandGroup DiscardCard(CardInstance card, float interval = 0.1f) + public CommandGroup DiscardCard(CardInstance card, bool initiative, float interval = 0.1f) { CommandContext context = new CommandContext(); CommandGroup discardCardGroup = new CommandGroup(ExecutionMode.Sequential, context, - new Cmd_DiscardCards(card.deck, new List() { card }, interval), + new Cmd_DiscardCards(card.deck, new List() { card }, initiative, interval), new Cmd_Function(0, () => { //Debug.Log((context.sharedInfo["DrawnCards"] as List).Count); //TODO: 弃牌后的处理 @@ -99,7 +99,7 @@ namespace Continentis.MainGame.Character return discardCardGroup; } - public CommandGroup DiscardCards(List cards, float interval = 0.1f) + public CommandGroup DiscardCards(List cards,bool initiative, float interval = 0.1f) { Dictionary> groupedCards = cards.GroupBy(card => card.deck) .ToDictionary(group => group.Key, group => group.ToList()); @@ -107,7 +107,7 @@ namespace Continentis.MainGame.Character CommandGroup discardCardGroup = new CommandGroup(ExecutionMode.Sequential, context); foreach (var kvp in groupedCards) { - discardCardGroup.AddCommand(new Cmd_DiscardCards(kvp.Key, kvp.Value, interval)); + discardCardGroup.AddCommand(new Cmd_DiscardCards(kvp.Key, kvp.Value, initiative, interval)); } discardCardGroup.AddCommand(new Cmd_Function(0, () => { diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs index 48493232..8ad41896 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/EventSubmodule.cs @@ -8,52 +8,52 @@ namespace Continentis.MainGame.Character { public partial class EventSubmodule : SubmoduleBase { - public OrderedDictionary onCombatStart; //战斗开始时 - public OrderedDictionary onCombatEnd; //战斗结束时 + public OrderedDictionary onCombatStart; //战斗开始时 + public OrderedDictionary onCombatEnd; //战斗结束时 - public OrderedDictionary onRoundStart; //每回合开始时 - public OrderedDictionary onRoundEnd; //每回合结束时 + public OrderedDictionary onRoundStart; //每回合开始时 + public OrderedDictionary onRoundEnd; //每回合结束时 - public OrderedDictionary>> onStartAttack; //开始攻击时,参数为被攻击目标列表 - public OrderedDictionary, List>> onFinishAttack; //完成攻击时,参数为被攻击目标列表和对应的攻击结果列表 - public OrderedDictionary> onGetAttacked; //被攻击时,参数为攻击者和攻击结果 + public OrderedDictionary>> onStartAttack; //开始攻击时,参数为被攻击目标列表 + public OrderedDictionary, List>> onFinishAttack; //完成攻击时,参数为被攻击目标列表和对应的攻击结果列表 + public OrderedDictionary> onGetAttacked; //被攻击时,参数为攻击者和攻击结果 - public OrderedDictionary onActionStart; //每次行动开始时 - public OrderedDictionary onActionEnd; //每次行动结束时 + public OrderedDictionary onActionStart; //每次行动开始时 + public OrderedDictionary onActionEnd; //每次行动结束时 - public OrderedDictionary>> onBeforePlayCard; //使用卡牌前,参数为使用的卡牌 - public OrderedDictionary>> onAfterPlayCard; //使用卡牌后,参数为使用的卡牌 + public OrderedDictionary>> onBeforePlayCard; //使用卡牌前,参数为使用的卡牌 + public OrderedDictionary>> onAfterPlayCard; //使用卡牌后,参数为使用的卡牌 public EventSubmodule(CharacterBase character) : base(character) { - onCombatStart = new OrderedDictionary(); - onCombatEnd = new OrderedDictionary(); + onCombatStart = new OrderedDictionary(); + onCombatEnd = new OrderedDictionary(); - onRoundStart = new OrderedDictionary(); - onRoundEnd = new OrderedDictionary(); + onRoundStart = new OrderedDictionary(); + onRoundEnd = new OrderedDictionary(); - onActionStart = new OrderedDictionary(); - onActionEnd = new OrderedDictionary(); + onActionStart = new OrderedDictionary(); + onActionEnd = new OrderedDictionary(); - onStartAttack = new OrderedDictionary>>(); - onFinishAttack = new OrderedDictionary, List>>(); - onGetAttacked = new OrderedDictionary>(); + onStartAttack = new OrderedDictionary>>(); + onFinishAttack = new OrderedDictionary, List>>(); + onGetAttacked = new OrderedDictionary>(); - onBeforePlayCard = new OrderedDictionary>>(); - onAfterPlayCard = new OrderedDictionary>>(); + onBeforePlayCard = new OrderedDictionary>>(); + onAfterPlayCard = new OrderedDictionary>>(); - onActionStart.InsertByPriority("StaminaRecover", new EventUnit(() => + onActionStart.InsertByPriority("StaminaRecover", new PrioritizedAction(() => { owner.ModifyAttribute("Stamina", owner.GetAttribute("StaminaRecoverPerAction")); owner.ClampAttribute("Stamina", 0, owner.GetAttribute("MaximumStamina")); }, 999)); - onActionStart.InsertByPriority("ManaRecover", new EventUnit(() => + onActionStart.InsertByPriority("ManaRecover", new PrioritizedAction(() => { owner.ModifyAttribute("Mana", owner.GetAttribute("ManaRecoverPerAction")); owner.ClampAttribute("Mana", 0, owner.GetAttribute("MaximumMana")); }, 999)); - onActionStart.InsertByPriority("DefenseReset", new EventUnit(() => + onActionStart.InsertByPriority("DefenseReset", new PrioritizedAction(() => { if (owner.GetAttribute("KeepBlockOnActionStart") <= 0) { diff --git a/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs b/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs index 4303441e..7fc0f0e0 100644 --- a/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs +++ b/Assets/Scripts/MainGame/Combat/CombatCharacterController.cs @@ -169,4 +169,49 @@ namespace Continentis.MainGame.Combat } } } + + public partial class CombatCharacterController + { + public List GetAllAllies(CharacterBase character, bool includeSelf = false) + { + if (character.fraction is Fraction.Player or Fraction.Ally) + { + List alliesList = new List(playerHeroes); + alliesList.AddRange(npcs[Fraction.Ally]); + + if (!includeSelf) + { + alliesList.Remove(character); + } + + return alliesList; + } + else + { + return npcs[character.fraction].Cast().ToList(); + } + } + + public List GetAllEnemies(CharacterBase character) + { + if (character.fraction is Fraction.Player or Fraction.Ally) + { + return npcs[Fraction.Enemy].Cast().ToList(); + } + else if (character.fraction is Fraction.Enemy) + { + List enemiesList = new List(playerHeroes); + enemiesList.AddRange(npcs[Fraction.Ally]); + return enemiesList; + } + else // Neutral + { + List enemiesList = new List(); + enemiesList.AddRange(npcs[Fraction.Player]); + enemiesList.AddRange(npcs[Fraction.Ally]); + enemiesList.AddRange(npcs[Fraction.Enemy]); + return enemiesList; + } + } + } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Combat/CombatEventCollection.cs b/Assets/Scripts/MainGame/Combat/CombatEventCollection.cs index 5321392f..87b4db95 100644 --- a/Assets/Scripts/MainGame/Combat/CombatEventCollection.cs +++ b/Assets/Scripts/MainGame/Combat/CombatEventCollection.cs @@ -11,29 +11,29 @@ namespace Continentis.MainGame.Combat /// /// 战斗开始 /// - public OrderedDictionary onCombatStart; + public OrderedDictionary onCombatStart; /// /// 战斗结束 /// - public OrderedDictionary onCombatEnd; + public OrderedDictionary onCombatEnd; /// /// 回合开始 /// - public OrderedDictionary onRoundStart; + public OrderedDictionary onRoundStart; /// /// 回合结束 /// - public OrderedDictionary onRoundEnd; + public OrderedDictionary onRoundEnd; public CombatEventCollection() { - onCombatStart = new OrderedDictionary(); - onCombatEnd = new OrderedDictionary(); - onRoundStart = new OrderedDictionary(); - onRoundEnd = new OrderedDictionary(); + onCombatStart = new OrderedDictionary(); + onCombatEnd = new OrderedDictionary(); + onRoundStart = new OrderedDictionary(); + onRoundEnd = new OrderedDictionary(); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Combat/CombatMainManager.cs b/Assets/Scripts/MainGame/Combat/CombatMainManager.cs index 248ae3c6..5bf8e422 100644 --- a/Assets/Scripts/MainGame/Combat/CombatMainManager.cs +++ b/Assets/Scripts/MainGame/Combat/CombatMainManager.cs @@ -220,7 +220,7 @@ namespace Continentis.MainGame.Combat List cardToExhaust = handPile.Where(card => card.cardLogic.HasKeyword("Ethereal")).ToList(); //含有“虚无”关键词的卡牌 List cardsToDiscard = handPile.Except(cardToRetain).Except(cardToExhaust).ToList(); //其他卡牌,默认丢弃 CommandQueueManager.Instance.AddCommand(playerHero.deckSubmodule.ExhaustCards(cardToExhaust)); - CommandQueueManager.Instance.AddCommand(playerHero.deckSubmodule.DiscardCards(cardsToDiscard)); + CommandQueueManager.Instance.AddCommand(playerHero.deckSubmodule.DiscardCards(cardsToDiscard, false)); } characterController.actionOrderList.Remove(currentCharacter); diff --git a/Assets/Scripts/MainGame/Commands/Cmd_DiscardCards.cs b/Assets/Scripts/MainGame/Commands/Cmd_DiscardCards.cs index 20a4950d..ed6021a2 100644 --- a/Assets/Scripts/MainGame/Commands/Cmd_DiscardCards.cs +++ b/Assets/Scripts/MainGame/Commands/Cmd_DiscardCards.cs @@ -17,11 +17,14 @@ namespace Continentis.MainGame.Commands private readonly List cardsToDiscard; private readonly float interval; private readonly float singleCardAnimationDuration = 0.5f; // 单张卡牌的动画时长 + + private readonly bool isInitiative; - public Cmd_DiscardCards(DeckSubmodule deck, List cards, float interval) + public Cmd_DiscardCards(DeckSubmodule deck, List cards, bool isInitiative, float interval) { this.deck = deck; this.cardsToDiscard = cards; + this.isInitiative = isInitiative; this.interval = interval; } @@ -67,9 +70,19 @@ namespace Continentis.MainGame.Commands private IObservable DiscardCard(CardInstance card) { - deck.TransferCard(deck.Pile(card.cardLocation.pileName), deck.DiscardPile, card); - card.cardLogic.eventSubmodule.onDiscard.Invoke(); + if (isInitiative) + { + if (card.cardLogic.eventSubmodule.onInitiativeDiscard.GetChecks().Any()) // 如果主动弃牌后,有触发条件,则打断弃牌,直接触发效果 + { + CommandQueueManager.Instance.AddCommand(new Cmd_Function(() => + { + card.cardLogic.eventSubmodule.onInitiativeDiscard.GetEffects().ForEach(effect => effect.Invoke()); + })); + return Observable.Return(Unit.Default); + } + } + deck.TransferCard(deck.Pile(card.cardLocation.pileName), deck.DiscardPile, card); card.handCardView.TransferCardView(CombatUIManager.Instance.combatMainPage.discardPile); RectTransform cardTransform = card.handCardView.cardTransform; diff --git a/Assets/Scripts/MainGame/Commands/Cmd_ReboundCards.cs b/Assets/Scripts/MainGame/Commands/Cmd_ReboundCards.cs index 783ae4b9..e231262d 100644 --- a/Assets/Scripts/MainGame/Commands/Cmd_ReboundCards.cs +++ b/Assets/Scripts/MainGame/Commands/Cmd_ReboundCards.cs @@ -68,7 +68,7 @@ namespace Continentis.MainGame.Commands private IObservable DiscardCard(CardInstance card) { deck.TransferCard(deck.Pile(card.cardLocation.pileName), deck.DrawPile, card); - card.cardLogic.eventSubmodule.onDiscard.Invoke(); + //card.cardLogic.eventSubmodule.onInitiativeDiscard.Invoke(); card.handCardView.TransferCardView(CombatUIManager.Instance.combatMainPage.drawPile); diff --git a/Assets/Scripts/MainGame/Commands/Cmd_ReshuffleDeck.cs b/Assets/Scripts/MainGame/Commands/Cmd_ReshuffleDeck.cs index 127b2471..df0f701b 100644 --- a/Assets/Scripts/MainGame/Commands/Cmd_ReshuffleDeck.cs +++ b/Assets/Scripts/MainGame/Commands/Cmd_ReshuffleDeck.cs @@ -39,7 +39,7 @@ namespace Continentis.MainGame.Commands private IObservable MoveCardToDrawPile(CardInstance card) { deck.TransferCard(deck.DiscardPile, deck.DrawPile, card); - card.cardLogic.eventSubmodule.onDiscard.Invoke(); + //card.cardLogic.eventSubmodule.onInitiativeDiscard.Invoke(); card.handCardView.TransferCardView(CombatUIManager.Instance.combatMainPage.drawPile); diff --git a/Assets/Scripts/MainGame/Equipment/EquipmentSubmodules/EventSubmodule.cs b/Assets/Scripts/MainGame/Equipment/EquipmentSubmodules/EventSubmodule.cs index f5922df9..396f13de 100644 --- a/Assets/Scripts/MainGame/Equipment/EquipmentSubmodules/EventSubmodule.cs +++ b/Assets/Scripts/MainGame/Equipment/EquipmentSubmodules/EventSubmodule.cs @@ -8,33 +8,33 @@ namespace Continentis.MainGame.Equipment { public class EventSubmodule : SubmoduleBase { - public OrderedDictionary onCombatStart; //战斗开始时 - public OrderedDictionary onCombatEnd; //战斗结束时 + public OrderedDictionary onCombatStart; //战斗开始时 + public OrderedDictionary onCombatEnd; //战斗结束时 - public OrderedDictionary onRoundStart; //每回合开始时 - public OrderedDictionary onRoundEnd; //每回合结束时 + public OrderedDictionary onRoundStart; //每回合开始时 + public OrderedDictionary onRoundEnd; //每回合结束时 - public OrderedDictionary>> onStartAttack; //开始攻击时,参数为被攻击目标列表 - public OrderedDictionary, List>> onFinishAttack; //完成攻击时,参数为被攻击目标列表和对应的攻击结果列表 - public OrderedDictionary> onGetAttacked; //被攻击时,参数为攻击者和攻击结果 + public OrderedDictionary>> onStartAttack; //开始攻击时,参数为被攻击目标列表 + public OrderedDictionary, List>> onFinishAttack; //完成攻击时,参数为被攻击目标列表和对应的攻击结果列表 + public OrderedDictionary> onGetAttacked; //被攻击时,参数为攻击者和攻击结果 - public OrderedDictionary onActionStart; //每次行动开始时 - public OrderedDictionary onActionEnd; //每次行动结束时 + public OrderedDictionary onActionStart; //每次行动开始时 + public OrderedDictionary onActionEnd; //每次行动结束时 public EventSubmodule(EquipmentBase equipment) : base(equipment) { - onCombatStart = new OrderedDictionary(); - onCombatEnd = new OrderedDictionary(); + onCombatStart = new OrderedDictionary(); + onCombatEnd = new OrderedDictionary(); - onRoundStart = new OrderedDictionary(); - onRoundEnd = new OrderedDictionary(); + onRoundStart = new OrderedDictionary(); + onRoundEnd = new OrderedDictionary(); - onActionStart = new OrderedDictionary(); - onActionEnd = new OrderedDictionary(); + onActionStart = new OrderedDictionary(); + onActionEnd = new OrderedDictionary(); - onStartAttack = new OrderedDictionary>>(); - onFinishAttack = new OrderedDictionary, List>>(); - onGetAttacked = new OrderedDictionary>(); + onStartAttack = new OrderedDictionary>>(); + onFinishAttack = new OrderedDictionary, List>>(); + onGetAttacked = new OrderedDictionary>(); } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/UI/HUDPage/HUDElements/Icon/HUD_CharacterBuffIcon.cs b/Assets/Scripts/MainGame/UI/HUDPage/HUDElements/Icon/HUD_CharacterBuffIcon.cs index 683ce539..84baf076 100644 --- a/Assets/Scripts/MainGame/UI/HUDPage/HUDElements/Icon/HUD_CharacterBuffIcon.cs +++ b/Assets/Scripts/MainGame/UI/HUDPage/HUDElements/Icon/HUD_CharacterBuffIcon.cs @@ -31,6 +31,7 @@ namespace Continentis.MainGame.UI this.Priority = buff.Priority; buff.iconSubmodule.buffIcon = this; icon.sprite = buff.iconSubmodule.icon; + this.infoBox = null; PlayApplyAnimation(); UpdateIcon(); } @@ -43,6 +44,7 @@ namespace Continentis.MainGame.UI spreadImage.rectTransform.localScale = Vector3.zero; spreadImage.color = Color.white; spreadImage.DOColor(new Color(1f, 1f, 1f, 0f), 1.1f).SetEase(Ease.Linear).Play(); + spreadImage.maskable = false; spreadImage.rectTransform.DOScale(4f, 1.2f).SetEase(Ease.OutQuad).OnComplete(() => { LeanPool.Despawn(spreadImage.gameObject); @@ -63,6 +65,7 @@ namespace Continentis.MainGame.UI { string paramKey = synchronizedParameters[index]; Func func = buff.contentSubmodule.parameterGetters[paramKey]; + Debug.Log($"Updating buff icon text for parameter {paramKey} with func is {func == null}"); SetText(index, func); } @@ -94,8 +97,12 @@ namespace Continentis.MainGame.UI { GameObject infoBoxPrefab = MainGameManager.Instance.basePrefabs.informationBox; RectTransform canvasTransform = CombatUIManager.Instance.hudPage.rectTransform; - infoBox = LeanPool.Spawn(infoBoxPrefab, canvasTransform).GetComponent(); - + + if (infoBox == null) + { + infoBox = LeanPool.Spawn(infoBoxPrefab, canvasTransform).GetComponent(); + } + BuffTextInterpreter.InterpretText(buff); string dispelThreshold = buff.dispelThreshold switch { @@ -106,7 +113,7 @@ namespace Continentis.MainGame.UI _ => throw new ArgumentOutOfRangeException() }; dispelThreshold = dispelThreshold.Localize(); - + string finalDescription = buff.contentSubmodule.interpretedFunctionText + "\n" + dispelThreshold; infoBox.Initialize(buff.contentSubmodule.displayName, finalDescription, canvasTransform.InverseTransformPoint(rectTransform.position)); @@ -122,6 +129,20 @@ namespace Continentis.MainGame.UI LeanPool.Despawn(infoBox.gameObject); infoBox = null; } + else + { + Debug.LogWarning("InfoBox is already null on pointer exit."); + } + } + + private void OnDisable() + { + if (infoBox != null) + { + Debug.Log("Cleaning up InfoBox from OnDisable."); + LeanPool.Despawn(infoBox.gameObject); + infoBox = null; + } } } } \ No newline at end of file diff --git a/Assets/Scripts/ScriptExtensions/CommandQueue/CommandQueueManager.cs b/Assets/Scripts/ScriptExtensions/CommandQueue/CommandQueueManager.cs index 2e550b0f..1506c337 100644 --- a/Assets/Scripts/ScriptExtensions/CommandQueue/CommandQueueManager.cs +++ b/Assets/Scripts/ScriptExtensions/CommandQueue/CommandQueueManager.cs @@ -19,7 +19,7 @@ namespace SLSFramework.General // 队列的入口现在需要一个能接收 Context 的指令工厂 // 1. 我们使用一个标准的 Queue 来存储待执行的指令。 // 这比 Subject 更能明确地表达“队列”的意图。 - private readonly Queue> commandQueue = new Queue>(); + private readonly LinkedList> commandQueue = new LinkedList>(); // 2. 一个布尔值标志,用于追踪管理器当前是否正在执行一个指令。 private bool isBusy = false; @@ -71,10 +71,23 @@ namespace SLSFramework.General } public CommandBase AddCommand(CommandBase command, CommandContext context = null) + { + return AddCommand(command, true, context); + } + + public CommandBase AddCommand(CommandBase command, bool insertAtTail, CommandContext context = null) { context ??= new CommandContext(); // 将指令和其上下文入队 - commandQueue.Enqueue(Tuple.Create(command, context)); + if (insertAtTail) + { + commandQueue.AddLast(Tuple.Create(command, context)); + } + else + { + commandQueue.AddFirst(Tuple.Create(command, context)); + } + //Debug.Log($"[Queue] 添加指令: {command.GetType()},队列长度: {commandQueue.Count}"); // 尝试启动队列处理。 // 如果队列当前不忙,这个调用会立即开始处理我们刚刚添加的指令。 @@ -100,7 +113,8 @@ namespace SLSFramework.General // 4. 标记为“忙碌”,并从队列中取出下一个指令。 isBusy = true; - var nextEntry = commandQueue.Dequeue(); + var nextEntry = commandQueue.First.Value; + commandQueue.RemoveFirst(); var commandToExecute = nextEntry.Item1; var context = nextEntry.Item2; diff --git a/Assets/Scripts/ScriptExtensions/General/DictionaryExtension.cs b/Assets/Scripts/ScriptExtensions/General/DictionaryExtension.cs index 7270d4da..8467fd78 100644 --- a/Assets/Scripts/ScriptExtensions/General/DictionaryExtension.cs +++ b/Assets/Scripts/ScriptExtensions/General/DictionaryExtension.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using SoftCircuits.Collections; using UnityEngine; @@ -7,7 +8,7 @@ namespace SLSFramework.General { public static class DictionaryExtension { - public static void Invoke(this IDictionary dictionary) + public static void Invoke(this IDictionary dictionary) { foreach (var action in dictionary.Values) { @@ -15,7 +16,7 @@ namespace SLSFramework.General } } - public static void Invoke(this IDictionary> dictionary, T arg) + public static void Invoke(this IDictionary> dictionary, T arg) { foreach (var action in dictionary.Values) { @@ -23,7 +24,7 @@ namespace SLSFramework.General } } - public static void Invoke(this IDictionary> dictionary, T1 arg1, T2 arg2) + public static void Invoke(this IDictionary> dictionary, T1 arg1, T2 arg2) { foreach (var action in dictionary.Values) { @@ -82,6 +83,29 @@ namespace SLSFramework.General } } + public static class CheckAndEffectDictionaryExtension + { + public static List> GetChecks(this IDictionary dictionary) + { + return dictionary.Values.Select(checkAndEffect => checkAndEffect.check).ToList(); + } + + public static List GetEffects(this IDictionary dictionary) + { + return dictionary.Values.Select(checkAndEffect => checkAndEffect.effect).ToList(); + } + + public static void InvokeIfAnyConditionChecked(this IDictionary dictionary) + { + List> checks = dictionary.Values.Select(checkAndEffect => checkAndEffect.check).ToList(); + List effects = dictionary.Values.Select(checkAndEffect => checkAndEffect.effect).ToList(); + if (checks.Any()) + { + effects.ForEach(effect => effect.Invoke()); + } + } + } + public static class OrderedDictionaryExtension { /// diff --git a/Assets/Scripts/ScriptExtensions/General/GameEvent.cs b/Assets/Scripts/ScriptExtensions/General/GameEvent.cs index f89d77ef..f462ee47 100644 --- a/Assets/Scripts/ScriptExtensions/General/GameEvent.cs +++ b/Assets/Scripts/ScriptExtensions/General/GameEvent.cs @@ -6,12 +6,12 @@ using UnityEngine.Events; namespace SLSFramework.General { - public class EventUnit : IPrioritized + public class PrioritizedAction : IPrioritized { - private readonly UnityAction action; + private readonly Action action; public int Priority { get; set; } - public EventUnit(UnityAction action, int priority = 0) + public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; @@ -23,12 +23,12 @@ namespace SLSFramework.General } } - public class EventUnit : IPrioritized + public class PrioritizedAction : IPrioritized { - private readonly UnityAction action; + private readonly Action action; public int Priority { get; set; } - public EventUnit(UnityAction action, int priority = 0) + public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; @@ -40,12 +40,12 @@ namespace SLSFramework.General } } - public class EventUnit : IPrioritized + public class PrioritizedAction : IPrioritized { - private readonly UnityAction action; + private readonly Action action; public int Priority { get; set; } - public EventUnit(UnityAction action, int priority = 0) + public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; @@ -57,12 +57,12 @@ namespace SLSFramework.General } } - public class EventUnit : IPrioritized + public class PrioritizedAction : IPrioritized { - private readonly UnityAction action; + private readonly Action action; public int Priority { get; set; } - public EventUnit(UnityAction action, int priority = 0) + public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; @@ -74,6 +74,58 @@ namespace SLSFramework.General } } + public class PrioritizedFunc : IPrioritized + { + private readonly Func func; + public int Priority { get; set; } + + public PrioritizedFunc(Func func, int priority = 0) + { + this.func = func; + this.Priority = priority; + } + + public TR Invoke() + { + return func.Invoke(); + } + } + + public class PrioritizedFunc : IPrioritized + { + private readonly Func func; + public int Priority { get; set; } + + public PrioritizedFunc(Func func, int priority = 0) + { + this.func = func; + this.Priority = priority; + } + + public TR Invoke(T arg) + { + return func.Invoke(arg); + } + } + + public class PrioritizedFunc : IPrioritized + { + private readonly Func func; + public int Priority { get; set; } + + public PrioritizedFunc(Func func, int priority = 0) + { + this.func = func; + this.Priority = priority; + } + + public TR Invoke(T1 arg1, T2 arg2) + { + return func.Invoke(arg1, arg2); + } + } + + public class PrioritizedFunc : IPrioritized { private readonly Func func; @@ -90,5 +142,27 @@ namespace SLSFramework.General return func.Invoke(arg1, arg2, arg3); } } + + public class PrioritizedCheckAndEffect : IPrioritized + { + public readonly Func check; + public readonly Action effect; + public int Priority { get; set; } + + public PrioritizedCheckAndEffect(Func check, Action effect, int priority = 0) + { + this.check = check; + this.effect = effect; + this.Priority = priority; + } + + public void Invoke() + { + if (check.Invoke()) + { + effect.Invoke(); + } + } + } } diff --git a/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg new file mode 100644 index 00000000..732a23ae Binary files /dev/null and b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg differ diff --git a/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg.json b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg.json new file mode 100644 index 00000000..c81927f0 --- /dev/null +++ b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg.json @@ -0,0 +1,20 @@ +{ + "asset": "483f48f74e788874e98b6a6fe58a13a7", + "fileName": "019a39a6-683c-7c1f-b78d-09cbcfbd31d7.jpg", + "prompt": "A shield with spikes, representing \"Reflect damage\".", + "negativePrompt": "", + "model": "9118f8cf-d5fa-4ffe-91d5-9268467fcbe1", + "modelName": "Game Icons", + "customSeed": -1, + "w3CTraceId": "89a3ef2a2966aa8aa1c1ca77fe1f0fc9", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png new file mode 100644 index 00000000..d7a900b1 Binary files /dev/null and b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png differ diff --git a/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png.json b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png.json new file mode 100644 index 00000000..71b16691 --- /dev/null +++ b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png.json @@ -0,0 +1,20 @@ +{ + "asset": "483f48f74e788874e98b6a6fe58a13a7", + "fileName": "019a39a6-a13f-7ed5-ae30-f2bfbb4b65d6.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "1fd85d315e75e7d752682dafae8d84d4", + "refinementMode": "RemoveBackground", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/BuffIcon_Basic_Withstand 1.png b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/BuffIcon_Basic_Withstand 1.png new file mode 100644 index 00000000..98bae37e Binary files /dev/null and b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/BuffIcon_Basic_Withstand 1.png differ diff --git a/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/BuffIcon_Basic_Withstand 1.png.json b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/BuffIcon_Basic_Withstand 1.png.json new file mode 100644 index 00000000..1bd248ff --- /dev/null +++ b/GeneratedAssets/483f48f74e788874e98b6a6fe58a13a7/BuffIcon_Basic_Withstand 1.png.json @@ -0,0 +1,20 @@ +{ + "asset": "483f48f74e788874e98b6a6fe58a13a7", + "fileName": "BuffIcon_Basic_Withstand 1.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg new file mode 100644 index 00000000..a2c13a91 Binary files /dev/null and b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg differ diff --git a/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg.json b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg.json new file mode 100644 index 00000000..a76faade --- /dev/null +++ b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg.json @@ -0,0 +1,20 @@ +{ + "asset": "765be03a9c8ba27449d2e56e67951911", + "fileName": "019a39fc-1f9b-7f58-8644-10bc0fbd4e63.jpg", + "prompt": "a yellow silhouette of a running man, with speed lines, representing \"Haste\"", + "negativePrompt": "", + "model": "9118f8cf-d5fa-4ffe-91d5-9268467fcbe1", + "modelName": "Game Icons", + "customSeed": -1, + "w3CTraceId": "c66644636d0c8817a5b36f090790ce18", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-5774-7649-b518-0a218856d46e.png b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-5774-7649-b518-0a218856d46e.png new file mode 100644 index 00000000..c4be1084 Binary files /dev/null and b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-5774-7649-b518-0a218856d46e.png differ diff --git a/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-5774-7649-b518-0a218856d46e.png.json b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-5774-7649-b518-0a218856d46e.png.json new file mode 100644 index 00000000..39aaccd5 --- /dev/null +++ b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/019a39fc-5774-7649-b518-0a218856d46e.png.json @@ -0,0 +1,20 @@ +{ + "asset": "765be03a9c8ba27449d2e56e67951911", + "fileName": "019a39fc-5774-7649-b518-0a218856d46e.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "6ac6cde3fff699c85ba48d5e3d5122fc", + "refinementMode": "RemoveBackground", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/BuffIcon_Basic_Haste.png b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/BuffIcon_Basic_Haste.png new file mode 100644 index 00000000..85ed509d Binary files /dev/null and b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/BuffIcon_Basic_Haste.png differ diff --git a/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/BuffIcon_Basic_Haste.png.json b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/BuffIcon_Basic_Haste.png.json new file mode 100644 index 00000000..fd3ad757 --- /dev/null +++ b/GeneratedAssets/765be03a9c8ba27449d2e56e67951911/BuffIcon_Basic_Haste.png.json @@ -0,0 +1,20 @@ +{ + "asset": "765be03a9c8ba27449d2e56e67951911", + "fileName": "BuffIcon_Basic_Haste.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-9063-77e3-b2ca-27d03ed68699.jpg b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-9063-77e3-b2ca-27d03ed68699.jpg new file mode 100644 index 00000000..8a6e1cf7 Binary files /dev/null and b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-9063-77e3-b2ca-27d03ed68699.jpg differ diff --git a/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-9063-77e3-b2ca-27d03ed68699.jpg.json b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-9063-77e3-b2ca-27d03ed68699.jpg.json new file mode 100644 index 00000000..b3fc3ef0 --- /dev/null +++ b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-9063-77e3-b2ca-27d03ed68699.jpg.json @@ -0,0 +1,20 @@ +{ + "asset": "dd72527ca678e294ea29e142f5bb8828", + "fileName": "019a3a58-9063-77e3-b2ca-27d03ed68699.jpg", + "prompt": "a cyan crystal sphere with a shining star inside.", + "negativePrompt": "", + "model": "9118f8cf-d5fa-4ffe-91d5-9268467fcbe1", + "modelName": "Game Icons", + "customSeed": -1, + "w3CTraceId": "820a1333d3bd997355e1244d35e299f2", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-c591-7492-844e-f1770d08b8f9.png b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-c591-7492-844e-f1770d08b8f9.png new file mode 100644 index 00000000..c5733e99 Binary files /dev/null and b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-c591-7492-844e-f1770d08b8f9.png differ diff --git a/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-c591-7492-844e-f1770d08b8f9.png.json b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-c591-7492-844e-f1770d08b8f9.png.json new file mode 100644 index 00000000..428f6e8f --- /dev/null +++ b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/019a3a58-c591-7492-844e-f1770d08b8f9.png.json @@ -0,0 +1,20 @@ +{ + "asset": "dd72527ca678e294ea29e142f5bb8828", + "fileName": "019a3a58-c591-7492-844e-f1770d08b8f9.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "66d1018bb1da355cfc7a7730cfd9e317", + "refinementMode": "RemoveBackground", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/BuffIcon_Basic_ConcentratedSpellcasting.png b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/BuffIcon_Basic_ConcentratedSpellcasting.png new file mode 100644 index 00000000..71334535 Binary files /dev/null and b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/BuffIcon_Basic_ConcentratedSpellcasting.png differ diff --git a/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/BuffIcon_Basic_ConcentratedSpellcasting.png.json b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/BuffIcon_Basic_ConcentratedSpellcasting.png.json new file mode 100644 index 00000000..bad576af --- /dev/null +++ b/GeneratedAssets/dd72527ca678e294ea29e142f5bb8828/BuffIcon_Basic_ConcentratedSpellcasting.png.json @@ -0,0 +1,20 @@ +{ + "asset": "dd72527ca678e294ea29e142f5bb8828", + "fileName": "BuffIcon_Basic_ConcentratedSpellcasting.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-6935-707d-9500-db665e20bae4.jpg b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-6935-707d-9500-db665e20bae4.jpg new file mode 100644 index 00000000..943805a1 Binary files /dev/null and b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-6935-707d-9500-db665e20bae4.jpg differ diff --git a/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-6935-707d-9500-db665e20bae4.jpg.json b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-6935-707d-9500-db665e20bae4.jpg.json new file mode 100644 index 00000000..a2a63e5c --- /dev/null +++ b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-6935-707d-9500-db665e20bae4.jpg.json @@ -0,0 +1,20 @@ +{ + "asset": "f1a7140a173a15e4dae15fc564270a3e", + "fileName": "019a3a41-6935-707d-9500-db665e20bae4.jpg", + "prompt": "A badge with flame pattern on it.", + "negativePrompt": "", + "model": "9118f8cf-d5fa-4ffe-91d5-9268467fcbe1", + "modelName": "Game Icons", + "customSeed": -1, + "w3CTraceId": "250e4397d658a67acab189ba3fc1fb5b", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-b854-7134-bf0d-72c3efbed12d.png b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-b854-7134-bf0d-72c3efbed12d.png new file mode 100644 index 00000000..6196d07a Binary files /dev/null and b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-b854-7134-bf0d-72c3efbed12d.png differ diff --git a/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-b854-7134-bf0d-72c3efbed12d.png.json b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-b854-7134-bf0d-72c3efbed12d.png.json new file mode 100644 index 00000000..6bbbedc4 --- /dev/null +++ b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/019a3a41-b854-7134-bf0d-72c3efbed12d.png.json @@ -0,0 +1,20 @@ +{ + "asset": "f1a7140a173a15e4dae15fc564270a3e", + "fileName": "019a3a41-b854-7134-bf0d-72c3efbed12d.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "7607316df6c8199f49eaaf013d436649", + "refinementMode": "RemoveBackground", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file diff --git a/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/BuffIcon_Basic_Burn 1.png b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/BuffIcon_Basic_Burn 1.png new file mode 100644 index 00000000..64bdc413 Binary files /dev/null and b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/BuffIcon_Basic_Burn 1.png differ diff --git a/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/BuffIcon_Basic_Burn 1.png.json b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/BuffIcon_Basic_Burn 1.png.json new file mode 100644 index 00000000..8ef5e948 --- /dev/null +++ b/GeneratedAssets/f1a7140a173a15e4dae15fc564270a3e/BuffIcon_Basic_Burn 1.png.json @@ -0,0 +1,20 @@ +{ + "asset": "f1a7140a173a15e4dae15fc564270a3e", + "fileName": "BuffIcon_Basic_Burn 1.png", + "prompt": "", + "negativePrompt": "", + "model": "", + "modelName": "", + "customSeed": -1, + "w3CTraceId": "", + "refinementMode": "Generation", + "pixelateTargetSize": 0, + "pixelateKeepImageSize": false, + "pixelatePixelBlockSize": 0, + "pixelateMode": 0, + "pixelateOutlineThickness": 0, + "doodles": { + "m_Items": [] + }, + "upscaleFactor": 0 +} \ No newline at end of file