diff --git a/Assets/Mods/Basic/Basic_Manifest.asset b/Assets/Mods/Basic/Basic_Manifest.asset index 05cf14f3..d3ae8dec 100644 --- a/Assets/Mods/Basic/Basic_Manifest.asset +++ b/Assets/Mods/Basic/Basic_Manifest.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:814ddd9859daca8ebeee25f33fff525b6fdf90a173a88c58ed1bda882929e328 -size 5129 +oid sha256:14da0842a068104eca8386999357d0c01d55b3e6c0115f7af1f0d94655064b6e +size 5419 diff --git a/Assets/Mods/Basic/Cards/Data/Enemies/Bosses/MarshalOfUnderworld/SkeletonGuard/CardData_Basic_SkeletonGuardDefense.asset b/Assets/Mods/Basic/Cards/Data/Enemies/Bosses/MarshalOfUnderworld/SkeletonGuard/CardData_Basic_SkeletonGuardDefense.asset index 5d1dd758..f1271d4a 100644 --- a/Assets/Mods/Basic/Cards/Data/Enemies/Bosses/MarshalOfUnderworld/SkeletonGuard/CardData_Basic_SkeletonGuardDefense.asset +++ b/Assets/Mods/Basic/Cards/Data/Enemies/Bosses/MarshalOfUnderworld/SkeletonGuard/CardData_Basic_SkeletonGuardDefense.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55b227319b6bfeef4410afab9743af64afc49c27412cff108107f04453e68356 -size 1648 +oid sha256:2745c7cfe8c05e6d170ba0b04cc6305ab81fb51e134edf0ea609bcd8606881f3 +size 1649 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_AcidArrow.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_AcidArrow.asset new file mode 100644 index 00000000..7247731e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_AcidArrow.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08665264881a9d89d757e014b28072c0eb83c4b45e6d5957fc7dd6a1de7d20d9 +size 1838 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_HeavySlash.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_AcidArrow.asset.meta similarity index 79% rename from Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_HeavySlash.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_AcidArrow.asset.meta index 5a08ed61..d66b2267 100644 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_HeavySlash.asset.meta +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_AcidArrow.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 99942e4ea875f154db87d2b649d86faf +guid: 19fe27e9da5cbf4419b8a72dd787e8af NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ArcaneMissiles.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ArcaneMissiles.asset new file mode 100644 index 00000000..7fa5bd33 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ArcaneMissiles.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47f4bbd30341861532867da3f3deb29137ae06e19e6c8bac4a5e51081d6d1dd6 +size 1757 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ArcaneMissiles.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ArcaneMissiles.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Blizzard.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Blizzard.asset new file mode 100644 index 00000000..14e5c551 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Blizzard.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d521958575b5d8cf82ed28df7a5ff3a399ddead8bf9fc95c725dd05ce204c77 +size 1803 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Blizzard.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Blizzard.asset.meta new file mode 100644 index 00000000..4d3fe764 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Blizzard.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33c6275aa8e58a845a8dd183c8e069a1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Bludgeon.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Bludgeon.asset new file mode 100644 index 00000000..1d1f6199 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Bludgeon.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bbbff84645028cc51a3250959f84f0e8bdc1fdcfe2b8a5da221f634088f2433 +size 1734 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_Bludgeon.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Bludgeon.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_Bludgeon.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Bludgeon.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Cutting.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Cutting.asset new file mode 100644 index 00000000..3fbd8011 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Cutting.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9ede964ef55b58bcf9e91991e8796d149e962431648e8700fbb6e71a7d99f6b +size 1695 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Cutting.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Cutting.asset.meta new file mode 100644 index 00000000..ff9c4ec4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Cutting.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 144bfa867b025484cae6ee78ab2d9569 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_DualStrike.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_DualStrike.asset new file mode 100644 index 00000000..ba32bdb0 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_DualStrike.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c40ddf1e4d062e9c08b96657c219d1790321d8ff4958405c390ce7ecd8d9db3 +size 1626 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_DualStrike.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_DualStrike.asset.meta new file mode 100644 index 00000000..96a89b3e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_DualStrike.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f6cad62bbfd6b84b823f2c08c454baf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_EyePoking.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_EyePoking.asset new file mode 100644 index 00000000..3ce6f398 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_EyePoking.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cef0757637604a943f6910bc5446aceba7dadea66d354fe4346d9ea562c22c81 +size 1705 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_EyePoking.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_EyePoking.asset.meta new file mode 100644 index 00000000..1ee23920 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_EyePoking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a90d968e0559d374db09cb11ee65a380 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBall.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBall.asset index fe4c4499..ed8f8182 100644 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBall.asset +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBall.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:870ef31b66bca340ad1c03fa1f589f68aad56b01c4d86eb7a233524a68fe5e21 -size 1889 +oid sha256:15bdddf9e06081827799efbebba77e92b5298816dfc747475612862fc4f6ec2e +size 1900 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBolt.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBolt.asset index 0747c29b..7d6ebf37 100644 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBolt.asset +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireBolt.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cccf742c9c09caca250da16e947b427987ecc9352b5c7ee417d936f1dc5eeef0 -size 1739 +oid sha256:5fd5e8f2498463a305e2fed6f92d79dba10b9b5852ec9016bed2d345eee5f559 +size 1750 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireRays.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireRays.asset index a4e77125..2f60f66c 100644 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireRays.asset +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FireRays.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:829b1a393cdf9c32e4f38e3d9c41d2d8539557a41990224164fa9c8d29a521f5 -size 1765 +oid sha256:ab2b4759e9d7d2cea6ac724f62a655392bb6302022107bc5fb54b5aa65ef0fa8 +size 1776 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FlameSpear.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FlameSpear.asset new file mode 100644 index 00000000..a3bc34b4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FlameSpear.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21b8f94c78544d33480998eab3083720da456e59d5f9dac611a02276719bc49b +size 1842 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FlameSpear.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FlameSpear.asset.meta new file mode 100644 index 00000000..400b4d34 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FlameSpear.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 599a525b6a61b054aacffec9e3c96a92 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FrenziedClawSlashes.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FrenziedClawSlashes.asset new file mode 100644 index 00000000..2692bf3b --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FrenziedClawSlashes.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4b7f9263a0bd58a3975b662f8e054a0ce3974882c5ba4f7a83caa3a83aa348b +size 1877 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FrenziedClawSlashes.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FrenziedClawSlashes.asset.meta new file mode 100644 index 00000000..7ac58643 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_FrenziedClawSlashes.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac605c3d1ec6cbd43bb1cd862daa9ff3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Laceration.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Laceration.asset new file mode 100644 index 00000000..3d2ce73c --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Laceration.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2070d86d8c992209184be124a087795e306c68b0a2bc08adea079065d29b508 +size 1749 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Laceration.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Laceration.asset.meta new file mode 100644 index 00000000..53d9bcb6 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Laceration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2515004a8323b914c96f1bb746df6b05 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PowerfulShot.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PowerfulShot.asset new file mode 100644 index 00000000..443cf975 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PowerfulShot.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8008dcebe3d105cb352da807b104a4bbc3fd62da4eb21d49504078b30a05135a +size 1654 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PowerfulShot.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PowerfulShot.asset.meta new file mode 100644 index 00000000..41b7ba93 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PowerfulShot.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17e1ad60506563e41bc17e2b71775636 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PreciseShot.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PreciseShot.asset new file mode 100644 index 00000000..d9e5d721 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PreciseShot.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9eb6814b6b2a6c6f0e1587deda4ad3971e7f9151563430e798a8cd8d68b8ce0 +size 1651 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PreciseShot.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PreciseShot.asset.meta new file mode 100644 index 00000000..ed660e7e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_PreciseShot.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 050b6d4c2cdb96b4a90645f8a57641dd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Prick.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Prick.asset deleted file mode 100644 index 7f602a10..00000000 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Prick.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7e4e099d0050e78299c130c07eb8c858140dffe672ed6117538d13f76a9c77e -size 1612 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_RayOfFrost.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_RayOfFrost.asset new file mode 100644 index 00000000..a25d0d82 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_RayOfFrost.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06fd0e512dc13d81461e3a68f17174072571a38174dc8025a4ac154e77751082 +size 1560 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_RayOfFrost.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_RayOfFrost.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_RayOfFrost.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_RayOfFrost.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_SandStorm.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_SandStorm.asset index d998ee76..1b7cf39e 100644 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_SandStorm.asset +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_SandStorm.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8233ccdcc5bf729e055fe79a6c86a9911c63803b99361d003a47fb41e043cbec -size 1801 +oid sha256:23b2f84d89946d57a50bddcbfc4f71ad728089c5d41fc8b6eaa0ad993781faaa +size 1804 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ShieldBash.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ShieldBash.asset new file mode 100644 index 00000000..572f1bf0 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ShieldBash.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d6017c763c3b6de2d278bcd943e05e4a3f1d70f3c9a143394dfb0dbfb82b118 +size 1699 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ShieldBash.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ShieldBash.asset.meta new file mode 100644 index 00000000..8c6408b9 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_ShieldBash.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81bec362a163a3943bd86b380f5c0a2f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Slash.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Slash.asset deleted file mode 100644 index 79e11907..00000000 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Slash.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9e748309f80484ec4dc563adbbb1bd8a7fe37fe75de3cc5a78e8da1143beb00 -size 1612 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Strike.asset b/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Strike.asset deleted file mode 100644 index 1d58c13c..00000000 --- a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Strike.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45bd36ca24ed8bb0131bc51b618397b92488c173dfed554d00b66dd7c648ccf9 -size 1619 diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic.meta b/Assets/Mods/Basic/Cards/Data/General/Basic.meta new file mode 100644 index 00000000..8fe3aac9 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bd8162b530fbdb2419e7e5be6580e022 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Defense.asset b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Defense.asset new file mode 100644 index 00000000..3be62798 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Defense.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfa7e6860bc43e151eac70915982defad678f5b54c15e61813a40bb8cf0c339d +size 1587 diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Defense.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Defense.asset.meta new file mode 100644 index 00000000..0bd640ea --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Defense.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f242ffdda819c5546ad85e861fdcd675 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Evasion.asset b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Evasion.asset new file mode 100644 index 00000000..452f677b --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Evasion.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f2c25bef9de0c140fd116a80e25c69460d0677d8c647a355f0129b3f7658bcf +size 1587 diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Evasion.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Evasion.asset.meta new file mode 100644 index 00000000..f7a3980e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Evasion.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb497720604643d4f9ac2e872572c319 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Prick.asset b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Prick.asset new file mode 100644 index 00000000..a5c81ffc --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Prick.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e7ea549f3e7a5cb1f3f3a098f4d507d80ea7eaab488920684287cd64fa184d7 +size 1601 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Prick.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Prick.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Prick.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Prick.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Slash.asset b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Slash.asset new file mode 100644 index 00000000..87ad7007 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Slash.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d51904e74681f6417610b13364b70a4032249ab6e4f743f74b4ba057bc654965 +size 1601 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Slash.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Slash.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Slash.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Slash.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Strike.asset b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Strike.asset new file mode 100644 index 00000000..3e38cc7a --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Strike.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e60744d298f3efd7edb27c38a45619b8468a31e14f0bbc7d83fb3e9b7a565f2 +size 1606 diff --git a/Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Strike.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Strike.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/General/Attack/CardData_Basic_Strike.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Basic/CardData_Basic_Strike.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Meditation.asset b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Meditation.asset new file mode 100644 index 00000000..73ccd5fd --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Meditation.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ba05ed7ac55e7bae56fc8748391bf59153a488c63fdf1d42796f8dfe7456083 +size 1611 diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Meditation.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Meditation.asset.meta new file mode 100644 index 00000000..c60ed912 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Meditation.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a71cd677f586cfc4aac9a21b778b30a6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_RainOfHealing.asset b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_RainOfHealing.asset new file mode 100644 index 00000000..b4f47537 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_RainOfHealing.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c27e80f7553784c008595db75b9f6f5516de01c5939706f2dc922aac6598e42a +size 1712 diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_RainOfHealing.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_RainOfHealing.asset.meta new file mode 100644 index 00000000..e00b3951 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_RainOfHealing.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9fd46a9d2cc3f04a9447ceebb8b3fca +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Stoneskin.asset b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Stoneskin.asset new file mode 100644 index 00000000..756e81f2 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Stoneskin.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e607c4057084e4f0ae597102528def2961c14c676d18d6e1e007de83512734 +size 1626 diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Stoneskin.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Stoneskin.asset.meta new file mode 100644 index 00000000..d3698cb4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_Stoneskin.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e5264a63055cab4f947b23ac3252ede +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_WarmUp.asset b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_WarmUp.asset new file mode 100644 index 00000000..8d9167f3 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_WarmUp.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:663119d36f05753e6238e0b12f29f51c9ea6ebad30a84f4142989810666cefa8 +size 1590 diff --git a/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_WarmUp.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_WarmUp.asset.meta new file mode 100644 index 00000000..e565b64e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Power/CardData_Basic_WarmUp.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1125bb63458cfe4d9aad92a42985095 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ActionSurge.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ActionSurge.asset new file mode 100644 index 00000000..276f4d83 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ActionSurge.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82e66b354799ba94fceb5f981ced4f1e4bf8879c30451eda66eacaa1b0d1e880 +size 1630 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ActionSurge.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ActionSurge.asset.meta new file mode 100644 index 00000000..bd8a31b4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ActionSurge.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 42845acd589691d4396cad3ae0ff6ce3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Anticipation.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Anticipation.asset new file mode 100644 index 00000000..078f1c2f --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Anticipation.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15d048cf2865cb114f0103ec285aa6cf67948e40956508d6be77e941652bd702 +size 1692 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Anticipation.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Anticipation.asset.meta new file mode 100644 index 00000000..2891eb55 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Anticipation.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 777569f504a2aa04da2a55ec86f7b86f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ArcaneRecovery.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ArcaneRecovery.asset new file mode 100644 index 00000000..4c9cab79 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ArcaneRecovery.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebd0094173c28d05196dc150d3e6d87b186cac71587708c5c332dce7c10185ce +size 1642 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ArcaneRecovery.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ArcaneRecovery.asset.meta new file mode 100644 index 00000000..dc9d39f1 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ArcaneRecovery.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd0a2281c7b34ca46931a4dc9daadce1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Bless.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Bless.asset index 6e7c5736..a86dc975 100644 --- a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Bless.asset +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Bless.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30ec754f76391ed2f59220b9c360cac6ae757e4053fb3fa12bf145e333d347c5 -size 1707 +oid sha256:2f289d7795fcc081eeccf2258f68e12f93bc8844deb6231d6f92cf4df996fd64 +size 1735 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Command.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Command.asset index 8d603785..deaf48bb 100644 --- a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Command.asset +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Command.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:877ceb46fd049e4ac544f2fe5e4ed14ac87c41222484d185c9a0edc8675ccdec -size 1759 +oid sha256:5399688e89cd96c997aaa78aa7c0cb5f1dd63a1a547abfb36c4065d301c5cb44 +size 1735 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Cover.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Cover.asset new file mode 100644 index 00000000..a19ffb1c --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Cover.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfae87669d8a98a54f520124375222e65c4d83e45f39226953892d578df57914 +size 1710 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_Cover.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Cover.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_Cover.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Cover.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Frostbite.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Frostbite.asset new file mode 100644 index 00000000..8f6f76e1 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Frostbite.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:355aed0052a76e51445468235723830d0b3e7ffc2a7733e58ff3a55cd7c5a963 +size 1879 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Frostbite.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Frostbite.asset.meta new file mode 100644 index 00000000..69f1ab76 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Frostbite.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 849a6823458f18046bc0bef33e92d0db +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Icebound.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Icebound.asset new file mode 100644 index 00000000..cc0527bd --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Icebound.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dba7aeeb703ed5e1d33e1235f959b077a6023181c8401aed9669fdf063800e59 +size 1794 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Icebound.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Icebound.asset.meta new file mode 100644 index 00000000..e8595634 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Icebound.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98203b0e93e452a4d86de79bff296315 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Recollection.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Recollection.asset new file mode 100644 index 00000000..53f3053e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Recollection.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e2083df0650e4762d4b3739a466f8741b616fefe5717e5762d01d086268f831 +size 1701 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Recollection.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Recollection.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Recollection.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Recollection.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Sanctuary.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Sanctuary.asset new file mode 100644 index 00000000..85262a30 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Sanctuary.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54b206b8c3cebdd98b5c3a180e804958283358beab591dcbf7637b2c894f0845 +size 1605 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_Sanctuary.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Sanctuary.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_Sanctuary.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Sanctuary.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Tactic.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Tactic.asset new file mode 100644 index 00000000..0f4a96ea --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Tactic.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39904f61ae32a004687c715997144f4b0b116420b135b1d8a67d3979efddc17f +size 1720 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/CardData_Basic_Tactic.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Tactic.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/CardData_Basic_Tactic.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_Tactic.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ThinkingCountermeasures.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ThinkingCountermeasures.asset new file mode 100644 index 00000000..9fd015d0 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ThinkingCountermeasures.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:695bac916849560ff83ffce058c20d7c3a8477dc45abf4f7533f21e2c943ff09 +size 1763 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_ThinkingCountermeasures.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ThinkingCountermeasures.asset.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_ThinkingCountermeasures.asset.meta rename to Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_ThinkingCountermeasures.asset.meta diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_VenomSpray.asset b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_VenomSpray.asset new file mode 100644 index 00000000..3970759e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_VenomSpray.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88809cd0805e6d0d42346caca0de7aa89e3d7bbce566a145dc9a4fc31864057e +size 1813 diff --git a/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_VenomSpray.asset.meta b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_VenomSpray.asset.meta new file mode 100644 index 00000000..55d121b1 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Data/General/Skill/CardData_Basic_VenomSpray.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0879ff9608873794bb856d446eadbc24 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_Bludgeon.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_Bludgeon.asset deleted file mode 100644 index c714b8d7..00000000 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_Bludgeon.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99a73261f7fbb9f2db32c51e1ae3fe82675b75419b32c4d9d5a84d6248402726 -size 1638 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_HeavySlash.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_HeavySlash.asset deleted file mode 100644 index 02cab69c..00000000 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_HeavySlash.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:467be1aa453c116f7e0515b2f376e43d87d471e8ef8d0e037973dff8c8fdf935 -size 1498 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_RayOfFrost.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_RayOfFrost.asset deleted file mode 100644 index 4a746433..00000000 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Attack/CardData_Basic_RayOfFrost.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b093b36d5c56d8adbfca771add058ca987bdc0394ba9c01c6c522a563d299239 -size 1228 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/CardData_Basic_Tactic.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/CardData_Basic_Tactic.asset deleted file mode 100644 index 4a7dad30..00000000 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/CardData_Basic_Tactic.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a606331278afd647d38004aae1b1acb993c3bdc73cb70e85d13f17356f8912ce -size 1532 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Cohesion.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Cohesion.asset index a48217c6..347e6229 100644 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Cohesion.asset +++ b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Cohesion.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd8fc41bab0f4f8a171a00fdbe9a1769708c4ba0408920caca401a370fd2e6f5 -size 1446 +oid sha256:4a363693aafadfbb73290a43ddaa29a0c39f58f48aaf6ae75afdc905b1fe0d88 +size 1531 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_FightingInspiration.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_FightingInspiration.asset index 30e18174..ce02e62a 100644 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_FightingInspiration.asset +++ b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_FightingInspiration.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e437baa3c88865d6c09f5b2158086e65d6abdddad992810c61972b466dacad3 -size 1541 +oid sha256:217fa5f097ea7a792f07b15190fb52367ec66ffcb7dc2a6108f1b4b24da7bcf5 +size 1626 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Guard.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Guard.asset index a1ea6739..c44b94d3 100644 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Guard.asset +++ b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Guard.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa2eefcaebdf4e108271b16884096ec067cb874c9c7933c241065f44de891413 -size 1479 +oid sha256:8863ad4a87c5efb598cf2e66157748ea9b4fdc8ecc5dee502a4739726990043c +size 1592 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Recollection.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Recollection.asset deleted file mode 100644 index 374ef234..00000000 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_Recollection.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a76e9cfeacd22321d687ff63c47b3fc8af032447d082f4a6b48c6d740ffa0b0 -size 1499 diff --git a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_ThinkingCountermeasures.asset b/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_ThinkingCountermeasures.asset deleted file mode 100644 index 77b6d991..00000000 --- a/Assets/Mods/Basic/Cards/Data/ObsoleteGeneral/Skill/CardData_Basic_ThinkingCountermeasures.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8a84c9dfa2fbadc5309bb830ed6b92516b9680ee153aee860ace5d8c0d4fe3b -size 1586 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_AmbushStance.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_AmbushStance.asset index 5e1ecdb5..0e7cd163 100644 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_AmbushStance.asset +++ b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Assassin/CardData_Basic_AmbushStance.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f85c061f5e3fd8a6209dd91fe97c087faa53feacb43bf3ce900e4ff04b76be82 -size 1671 +oid sha256:0b5cd7fd6f0a09f361d8e50293e2c812311446613b18579b71351d3a4c77fc98 +size 1680 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_Sanctuary.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_Sanctuary.asset deleted file mode 100644 index 821e3f84..00000000 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Cleric/CardData_Basic_Sanctuary.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:17ba04a32171ce0b8649b0481a23c0673f4901556cdb10355922357ef2c49b39 -size 1561 diff --git a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_Cover.asset b/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_Cover.asset deleted file mode 100644 index 42adcc05..00000000 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Knight/CardData_Basic_Cover.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3feacdbd05f10e63ec2d70d9b2deea02416122471713aff83538ae10efbb305a -size 1669 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 deleted file mode 100644 index 14b3c8da..00000000 --- a/Assets/Mods/Basic/Cards/Data/PlayerHeros/Mage/CardData_Basic_ArcaneMissiles.asset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9bb43b11e6a28721491de1b4e3ba895f8ba6aad928c738cb01078592a6b8a67 -size 1707 diff --git a/Assets/Mods/Basic/Cards/DefaultCollections/CardAttributesDefaultCollection.asset b/Assets/Mods/Basic/Cards/DefaultCollections/CardAttributesDefaultCollection.asset index 949de64c..7369eece 100644 --- a/Assets/Mods/Basic/Cards/DefaultCollections/CardAttributesDefaultCollection.asset +++ b/Assets/Mods/Basic/Cards/DefaultCollections/CardAttributesDefaultCollection.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e48ddec7338528c3ec33eea61e6e474e8b628a7ba4740321ff62a1007bfd7363 -size 862 +oid sha256:7f75050ff5fe7213df37e267c4c5bd519299a91f2a2e5328864e1cb17f89df2d +size 865 diff --git a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/GreatswordSweep.cs b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/GreatswordSweep.cs index 440c8f7c..c9ea22a5 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/GreatswordSweep.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/GreatswordSweep.cs @@ -29,7 +29,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/HellfireBlast.cs b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/HellfireBlast.cs index 5423a6ae..368f5f85 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/HellfireBlast.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/HellfireBlast.cs @@ -27,7 +27,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Strike(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/NecromanticInfusion.cs b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/NecromanticInfusion.cs index a6dcb44a..d09fb3c0 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/NecromanticInfusion.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/NecromanticInfusion.cs @@ -12,7 +12,7 @@ namespace Continentis.Mods.Basic.Cards public override CommandGroup PlayEffect(List targetList) { CommandGroup applyProwess = Cmd.Sequential( - Cmd.Do(() => CreateCharacterBuff(2).Apply(user, user, this)) + Cmd.Do(() => CreateCharacterBuff(2).Apply(user, user, this)) ); CommandGroup applyWeak = ForEachTarget(targetList, target => diff --git a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/WrathOfUnderworld.cs b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/WrathOfUnderworld.cs index 5b72b832..b5b0bdb3 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/WrathOfUnderworld.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Enemies/Bosses/MarshalOfUnderworld/WrathOfUnderworld.cs @@ -37,7 +37,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Sorcery(); + LogicComponent().SetDamage_Magic(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/AcidArrow.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/AcidArrow.cs new file mode 100644 index 00000000..9816376e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/AcidArrow.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Base; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 强酸箭矢:对单体目标先减少格挡,然后造成魔法伤害并施加腐蚀 Buff。 + /// + public class AcidArrow : CardLogicBase + { + private const string BLOCK_REDUCTION = "Block_Reduction"; + private const string BUFF_CORROSION_STACK = "Buff_Corrosion_Stack"; + + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + // 第一步:减少目标格挡,Clamp 至 0 + target.ModifyAndClampAttribute(CharacterAttributes.Block, -GetAttribute(BLOCK_REDUCTION)); + + // 第二步:造成伤害并施加腐蚀 + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + CreateCharacterBuff(GetAttribute(BUFF_CORROSION_STACK)).Apply(target, user, this); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Magic(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/AcidArrow.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/AcidArrow.cs.meta new file mode 100644 index 00000000..c6bfc554 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/AcidArrow.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f308be721a026ed449e5dfe317b5ad28 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/ArcaneMissiles.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ArcaneMissiles.cs new file mode 100644 index 00000000..94752588 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ArcaneMissiles.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 魔法飞弹:对单体敌人造成多段魔法伤害。 + /// + public class ArcaneMissiles : CardLogicBase + { + private const string ATTACK_COUNT = "Attack_Count"; + + private AttackContext MagicCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Magic); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, MagicCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(MagicCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => + { + CommandGroup perTargetGroup = Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack")); + + int attackCount = GetAttribute(ATTACK_COUNT); + for (int i = 0; i < attackCount; i++) + { + perTargetGroup.AddCommand(Cmd.After(0.4f, () => + { + AttackContext ctx = MagicCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + })); + } + + return perTargetGroup; + }); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Magic(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ArcaneMissiles.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/ArcaneMissiles.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Blizzard.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Blizzard.cs new file mode 100644 index 00000000..686d04f4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Blizzard.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using System.Linq; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Combat; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 暴风雪:对全体敌人造成伤害并附加冻结 Buff,同时对我方全体施加少量冻结 Buff。 + /// 卡牌数据配置 targetCount = -1、TargetEnemies,Logic 层自行查找友方角色。 + /// + public class Blizzard : CardLogicBase + { + private const string FREEZE_COUNT_ENEMY = "Freeze_Count_Enemy"; + private const string FREEZE_COUNT_ALLY = "Freeze_Count_Ally"; + + private AttackContext IceCtx => AttackContext.Default(card).WithDamageKeywords(CardKeywords.Ice); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + // 对全体敌人造成伤害 + 冻结 + AttackContext ctx = IceCtx; + int freezeCountEnemy = GetAttribute(FREEZE_COUNT_ENEMY); + foreach (CharacterBase target in targetList) + { + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + CreateCharacterBuff(freezeCountEnemy).Apply(target, user, this); + } + + // 对我方全体施加少量冻结(不造成伤害) + int freezeCountAlly = GetAttribute(FREEZE_COUNT_ALLY); + List allies = CombatMainManager.Instance.characterController.characters + .Where(c => user.IsAlly(c)).ToList(); + foreach (CharacterBase ally in allies) + { + CreateCharacterBuff(freezeCountAlly).Apply(ally, user, this); + } + }) + ); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Magic(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Blizzard.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Blizzard.cs.meta new file mode 100644 index 00000000..e777466f --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Blizzard.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f49c06988c3e6b741901925e81333585 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/HeavySlash.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Bludgeon.cs similarity index 80% rename from Assets/Mods/Basic/Cards/Scripts/Knight/HeavySlash.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/Bludgeon.cs index 5d524a78..262001e8 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/HeavySlash.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Bludgeon.cs @@ -7,7 +7,7 @@ using SLSFramework.General; namespace Continentis.Mods.Basic.Cards { - public class HeavySlash : CardLogicBase + public class Bludgeon : CardLogicBase { public override void SetUpLogicComponents() { @@ -18,14 +18,12 @@ namespace Continentis.Mods.Basic.Cards { CommandGroup mainGroup = ForEachTarget(targetList, target => Cmd.Parallel( new Cmd_PlayAnimation(user.characterView, "Attack"), - new Cmd_PlaySFX("SFX_Basic_SwordStrike"), - new Cmd_SpawnVFX("VFX_Basic_RedImpact"), Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target))) )); mainGroup.AddCommand(Cmd.Do(() => { - CreateCharacterBuff(false, 1).Apply(user, user, this); + CreateCharacterBuff(false, GetAttribute("Buff_Heavy_Stack")).Apply(user, user, this); })); return mainGroup; @@ -33,7 +31,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Bludgeon.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Bludgeon.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Bludgeon.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/Bludgeon.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/CinderStrike.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/CinderStrike.cs new file mode 100644 index 00000000..cd2126be --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/CinderStrike.cs @@ -0,0 +1,78 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 余烬打击:消耗一张手牌,对单体目标造成火焰伤害并施加灼烧 Buff。 + /// 若手牌中没有其他牌可消耗,跳过所有后续效果。 + /// + public class CinderStrike : CardLogicBase + { + private const string BUFF_BURN_STACK = "Buff_Burn_Stack"; + + private AttackContext FireCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Fire); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + AddLogicComponent() + .SetCondition(c => c != card) + .SetEffect(c => CommandQueueManager.Instance.AddCommand( + user.deckSubmodule.DiscardCard(c, true, 0f))); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, FireCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(FireCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + // 手牌中(排除自身)没有可弃的牌,跳过所有后续效果 + if (user.deckSubmodule.HandPile.Exclude(card).Count == 0) + { + return Cmd.Sequential(new Cmd_PlayAnimation(user.characterView, "Attack")); + } + + CommandGroup mainGroup = Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack") + ); + + // 弹出手牌选择 UI,强制选择 1 张弃掉 + LogicComponent() + .AddSelectionCommands(ref mainGroup, "Card_Basic_CinderStrike_SelectHandCards_Title".Localize(), 1, forceMax: true); + + // 弃牌完成后再造成伤害和灼烧 + mainGroup.AddCommand(Cmd.Do(() => + { + foreach (CharacterBase target in targetList) + { + AttackContext ctx = FireCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + CreateCharacterBuff(GetAttribute(BUFF_BURN_STACK)).Apply(target, user, this); + } + })); + + return mainGroup; + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Magic(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/CinderStrike.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/CinderStrike.cs.meta new file mode 100644 index 00000000..ff96c382 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/CinderStrike.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 64036b79902a63a478a1b8625393821e \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cleave.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cleave.cs index c7fccaac..286068cb 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cleave.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cleave.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Commands; @@ -7,11 +8,14 @@ using SLSFramework.General; namespace Continentis.Mods.Basic.Cards { /// - /// 顺劈斩:对全体敌人造成物理斩击伤害,数值受到力量和敏捷增减影响。 - /// AOE范围由卡牌数据的目标配置决定,Logic层无需额外处理。 + /// 顺劈斩:对全体敌人造成物理伤害。 + /// AOE 范围由卡牌数据的目标配置决定(targetCount = -1)。 /// public class Cleave : CardLogicBase { + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + public override void SetUpLogicComponents() { AddLogicComponent(); @@ -21,13 +25,17 @@ namespace Continentis.Mods.Basic.Cards { return Cmd.Sequential( new Cmd_PlayAnimation(user.characterView, "Attack"), - ForEachTarget(targetList, target => Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target)))) + ForEachTarget(targetList, target => Cmd.Do(() => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + })) ); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(); + LogicComponent().SetDamage_Physics(); } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cutting.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cutting.cs new file mode 100644 index 00000000..bc95b27b --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cutting.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 切割:对单体目标造成物理伤害,并施加流血 Buff。 + /// + public class Cutting : CardLogicBase + { + private const string BUFF_BLEED_STACK = "Buff_Bleed_Stack"; + + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + + CreateCharacterBuff(GetAttribute(BUFF_BLEED_STACK)).Apply(target, user, this); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Physics(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cutting.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cutting.cs.meta new file mode 100644 index 00000000..983b9236 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Cutting.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 56b6f69fd10dda2428fc2322c79ac20f \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/DualStrike.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/DualStrike.cs similarity index 90% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/DualStrike.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/DualStrike.cs index c3f8e1ab..cbdd37fc 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/DualStrike.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/DualStrike.cs @@ -15,9 +15,6 @@ namespace Continentis.Mods.Basic.Cards public override CommandGroup PlayEffect(List targetList) { - base.PlayEffect(targetList); - - // 对每个目标顺序执行两段攻击,每段各播一次动画 return ForEachTarget( targetList, target => Cmd.Sequential( @@ -35,7 +32,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Strike(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/DualStrike.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/DualStrike.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/DualStrike.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/DualStrike.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/EyePoking.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/EyePoking.cs new file mode 100644 index 00000000..f7a7c960 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/EyePoking.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 戳眼:对单体目标造成物理伤害,并施加目盲 Buff。 + /// + public class EyePoking : CardLogicBase + { + private const string BUFF_BLIND_COUNT = "Buff_Blind_Count"; + + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + + CreateCharacterBuff(GetAttribute(BUFF_BLIND_COUNT)).Apply(target, user, this); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Physics(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/EyePoking.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/EyePoking.cs.meta new file mode 100644 index 00000000..4c59faa4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/EyePoking.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2d510045193a3f74eb0c6af551bf047a \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBall.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBall.cs index 7ae30f27..cc1af597 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBall.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBall.cs @@ -76,9 +76,9 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { // 主伤害:奥术加成写入 Damage_Main - LogicComponent().SetDamage_Arcane(DAMAGE_MAIN); - // 溅射伤害:奥术加成写入 Damage_Others(数值由卡牌数据配置) - LogicComponent().SetDamage_Arcane(DAMAGE_OTHERS); + LogicComponent().SetDamage_Magic(DAMAGE_MAIN); + // 溅射伤害:魔法加成写入 Damage_Others(数值由卡牌数据配置) + LogicComponent().SetDamage_Magic(DAMAGE_OTHERS); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBolt.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBolt.cs index 2920ab54..874076b6 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBolt.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireBolt.cs @@ -30,7 +30,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireRays.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireRays.cs index fe52441b..1244d68f 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireRays.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FireRays.cs @@ -27,13 +27,13 @@ namespace Continentis.Mods.Basic.Cards /// 选中目标时更新伤害预览。 public override void TargetingEffect(CharacterBase target) { - card.SetAttribute("DisplayDamage", GetTargetedFinalDamage(target, FireCtx)); + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, FireCtx)); } /// 取消选中时以无目标模式刷新预览。 public override void UntargetingEffect() { - card.SetAttribute("DisplayDamage", GetNoTargetFinalDamage(FireCtx)); + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(FireCtx)); } public override CommandGroup PlayEffect(List targetList) @@ -47,14 +47,14 @@ namespace Continentis.Mods.Basic.Cards AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); int burnStacks = GetAttribute(BUFF_BURN_STACK); - CreateCharacterBuff(burnStacks).Apply(target, user); + CreateCharacterBuff(burnStacks).Apply(target, user, this); })) ); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FlameSpear.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FlameSpear.cs new file mode 100644 index 00000000..6c42c6a4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FlameSpear.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using Continentis.MainGame; +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 +{ + /// + /// 炎枪术:先削减目标的格挡值,再对目标造成大量火焰伤害并施加灼烧 Buff。 + /// 格挡削减不受伤害加成影响,直接扣减固定值。 + /// + public class FlameSpear : CardLogicBase + { + private const string BLOCK_REDUCTION = "Block_Reduction"; + private const string BUFF_BURN_STACK = "Buff_Burn_Stack"; + + private AttackContext FireCtx => AttackContext.Default(card) + .WithDamageKeywords("Fire"); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, FireCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(FireCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + // 削减格挡(直接扣减,不受任何加成影响) + int blockReduce = GetAttribute(BLOCK_REDUCTION); + int actualReduce = target.ModifyAndClampAttribute("Block", -blockReduce); + target.characterView.hudContainer.UpdateAllHUD(); + //Debug.Log($"[FlameSpear] 削减 {target.data.displayName} 的格挡 {actualReduce} 点。"); + + // 火焰伤害 + AttackContext ctx = FireCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + + // 灼烧 + int burnStacks = GetAttribute(BUFF_BURN_STACK); + CreateCharacterBuff(burnStacks).Apply(target, user, this); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Magic(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FlameSpear.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FlameSpear.cs.meta new file mode 100644 index 00000000..e907af53 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FlameSpear.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 566eda7acc1416e4d98d1dc9cf854013 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FrenziedClawSlashes.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FrenziedClawSlashes.cs new file mode 100644 index 00000000..5819d659 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FrenziedClawSlashes.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 狂乱爪击:对随机多个敌人(可重复)各造成一次物理伤害, + /// 每次伤害同时施加流血 Buff。 + /// 卡牌数据需配置 targetCount(攻击次数),关键词需包含 AllowDuplicateTargets 和 TargetEnemies。 + /// + public class FrenziedClawSlashes : CardLogicBase + { + private const string BUFF_BLEED_STACK = "Buff_Bleed_Stack"; + + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览(单次伤害值)。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + // targetList 由 SetRandomTargets + AllowDuplicateTargets 提供,可包含重复目标 + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + ForEachTarget(targetList, target => Cmd.Sequential( + Cmd.After(0.3f, () => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + + CreateCharacterBuff(GetAttribute(BUFF_BLEED_STACK)).Apply(target, user, this); + }) + )) + ); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Physics(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/FrenziedClawSlashes.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FrenziedClawSlashes.cs.meta new file mode 100644 index 00000000..96b9da9e --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/FrenziedClawSlashes.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0adba0210d9f6b54b92f8bf2ea31c2fe \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Frostbite.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Frostbite.cs new file mode 100644 index 00000000..08dc67ae --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Frostbite.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 冻伤:对单体目标造成冰属性伤害,并施加冻结和易伤 Buff。 + /// + public class Frostbite : CardLogicBase + { + private const string BUFF_FREEZE_COUNT = "Buff_Freeze_Count"; + private const string BUFF_VULNERABLE_COUNT = "Buff_Vulnerable_Count"; + + private AttackContext IceCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Ice); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, IceCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(IceCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + AttackContext ctx = IceCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + + CreateCharacterBuff(GetAttribute(BUFF_FREEZE_COUNT)).Apply(target, user, this); + CreateCharacterBuff(GetAttribute(BUFF_VULNERABLE_COUNT)).Apply(target, user, this); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Magic(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Frostbite.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Frostbite.cs.meta new file mode 100644 index 00000000..279a3c98 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Frostbite.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5f3c8dc84db536941908d431278e16f6 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Laceration.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Laceration.cs new file mode 100644 index 00000000..dd2130a8 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Laceration.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 裂伤:对单体目标造成物理伤害,施加易伤 Buff, + /// 并额外对目标施加等同于其身上易伤剩余回合数的流血层数。 + /// + public class Laceration : CardLogicBase + { + private const string BUFF_VULNERABLE_COUNT = "Buff_Vulnerable_Count"; + + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + + // 施加易伤 + CreateCharacterBuff(GetAttribute(BUFF_VULNERABLE_COUNT)).Apply(target, user, this); + + // 读取目标身上易伤的剩余回合数,以此作为流血层数 + if (target.combatBuffSubmodule.TryGetBuff(out Vulnerable vulnerable)) + { + int bleedStack = vulnerable.actionCountSubmodule.remainingCount; + if (bleedStack > 0) + { + CreateCharacterBuff(bleedStack).Apply(target, user, this); + } + } + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Physics(); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Laceration.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Laceration.cs.meta new file mode 100644 index 00000000..ca559e58 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/Laceration.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 158926b330501464fbe683ef9658f302 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/PowerfulShot.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PowerfulShot.cs new file mode 100644 index 00000000..402f9166 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PowerfulShot.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 强力射击:对单体目标造成物理伤害。 + /// + public class PowerfulShot : CardLogicBase + { + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Physics(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/PowerfulShot.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PowerfulShot.cs.meta new file mode 100644 index 00000000..34577a31 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PowerfulShot.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9bd02c9c4b934f74a88731bd08e0ba02 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/PreciseShot.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PreciseShot.cs new file mode 100644 index 00000000..83f96d44 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PreciseShot.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 精准射击:对单体目标造成物理伤害。 + /// + public class PreciseShot : CardLogicBase + { + private AttackContext PhysicsCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Physics); + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + /// 选中目标时更新伤害预览。 + public override void TargetingEffect(CharacterBase target) + { + card.SetAttribute("Display_Damage", GetTargetedFinalDamage(target, PhysicsCtx)); + } + + /// 取消选中时以无目标模式刷新预览。 + public override void UntargetingEffect() + { + card.SetAttribute("Display_Damage", GetNoTargetFinalDamage(PhysicsCtx)); + } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => + { + AttackContext ctx = PhysicsCtx; + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); + }) + )); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDamage_Physics(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/PreciseShot.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PreciseShot.cs.meta new file mode 100644 index 00000000..fa0a0bba --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/PreciseShot.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9018f86afc363b84f931bf84ee5ec705 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RayOfFrost.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/RayOfFrost.cs similarity index 65% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RayOfFrost.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/RayOfFrost.cs index a32b5dca..cdc4e820 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RayOfFrost.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/RayOfFrost.cs @@ -2,12 +2,15 @@ using System.Collections.Generic; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; using SLSFramework.General; namespace Continentis.Mods.Basic.Cards { public class RayOfFrost : CardLogicBase { + private const string BUFF_FREEZE_STACK = "Buff_Freeze_Stack"; + public override void SetUpLogicComponents() { AddLogicComponent(); @@ -15,17 +18,20 @@ namespace Continentis.Mods.Basic.Cards public override CommandGroup PlayEffect(List targetList) { - base.PlayEffect(targetList); - return ForEachTarget(targetList, target => Cmd.Parallel( new Cmd_PlayAnimation(user.characterView, "Attack"), - Cmd.After(0.2f, () => AttackTarget(target, GetTargetedFinalDamage(target))) + Cmd.Do(() => + { + AttackTarget(target, GetTargetedFinalDamage(target)); + int freezeStacks = GetAttribute(BUFF_FREEZE_STACK); + CreateCharacterBuff(freezeStacks).Apply(target, user, this); + }) )); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RayOfFrost.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/RayOfFrost.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RayOfFrost.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/RayOfFrost.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/SandStorm.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/SandStorm.cs index 4afef736..3040c4a7 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/SandStorm.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/SandStorm.cs @@ -9,12 +9,16 @@ using SLSFramework.General; namespace Continentis.Mods.Basic.Cards { /// - /// 沙暴:对全体敌人造成多段伤害,并附加致盲 Buff。 + /// 沙暴:对全体敌人造成多段土属性伤害,并施加目盲 Buff。 /// AOE 范围由卡牌数据的目标配置决定,动画只播放一次。 /// public class SandStorm : CardLogicBase { - private AttackContext EarthCtx => AttackContext.Default(card).WithDamageKeywords("Earth"); + private const string ATTACK_COUNT = "Attack_Count"; + private const string BUFF_BLIND_COUNT = "Buff_Blind_Count"; + + private AttackContext EarthCtx => AttackContext.Default(card) + .WithDamageKeywords(CardKeywords.Earth); public override void SetUpLogicComponents() { @@ -23,39 +27,38 @@ namespace Continentis.Mods.Basic.Cards public override CommandGroup PlayEffect(List targetList) { - int hitCount = GetAttribute("HitCount"); - + int hitCount = GetAttribute(ATTACK_COUNT); + CommandGroup hitsGroup = Cmd.Sequential(); for (int i = 0; i < hitCount; i++) { hitsGroup.AddCommand(Cmd.After(0.5f, () => { + AttackContext ctx = EarthCtx; foreach (CharacterBase target in targetList) { - AttackTarget(target, GetTargetedFinalDamage(target), EarthCtx); + AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx); } })); } - int blindCount = GetAttribute("Buff_Blind_Count"); - CommandGroup debuffGroup = Cmd.Sequential(Cmd.Do(() => - { - foreach (CharacterBase target in targetList) - { - CreateCharacterBuff(blindCount).Apply(target, user); - } - })); - return Cmd.Sequential( new Cmd_PlayAnimation(user.characterView, "Attack"), hitsGroup, - debuffGroup + Cmd.Do(() => + { + int blindCount = GetAttribute(BUFF_BLIND_COUNT); + foreach (CharacterBase target in targetList) + { + CreateCharacterBuff(blindCount).Apply(target, user, this); + } + }) ); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/SearingSlash.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/SearingSlash.cs index 27edb5d4..81c4be7b 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/SearingSlash.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/SearingSlash.cs @@ -62,14 +62,14 @@ namespace Continentis.Mods.Basic.Cards AttackTarget(target, GetTargetedFinalDamage(target, fireCtx), fireCtx); int burnStacks = GetAttribute(BUFF_BURN_STACK); - CreateCharacterBuff(burnStacks).Apply(target, user); + CreateCharacterBuff(burnStacks).Apply(target, user, this); }) )); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(DAMAGE_PHYSICS); + LogicComponent().SetDamage_Physics(DAMAGE_PHYSICS); LogicComponent().SetDamage_Default(DAMAGE_FIRE); } } diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Bludgeon.cs b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ShieldBash.cs similarity index 50% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Bludgeon.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Attack/ShieldBash.cs index c786bb9a..9e9a40e1 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Bludgeon.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ShieldBash.cs @@ -2,36 +2,34 @@ 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 Bludgeon : CardLogicBase + public class ShieldBash : CardLogicBase { public override void SetUpLogicComponents() { AddLogicComponent(); + AddLogicComponent(); } public override CommandGroup PlayEffect(List targetList) { - return ForEachTarget( - targetList, - target => Cmd.Sequential( - new Cmd_PlayAnimation(user.characterView, "Attack"), - Cmd.After(0.1f, () => - { - AttackTarget(target, GetTargetedFinalDamage(target)); - CreateCharacterBuff().Apply(target, user, this); - }) - ), - ExecutionMode.Sequential); + var mainGroup = ForEachTarget(targetList, target => Cmd.Parallel( + new Cmd_PlayAnimation(user.characterView, "Attack"), + Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target))) + )); + + mainGroup.AddCommand(Cmd.Do(() => user.AddBlock(GetAttribute("Block")))); + return mainGroup; } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Strike(); + LogicComponent().SetDamage_Physics(); + LogicComponent().SetBlock(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/ShieldBash.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ShieldBash.cs.meta new file mode 100644 index 00000000..d9461a00 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Attack/ShieldBash.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f863099274a14414b983c9bbdf54e480 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Basic.meta b/Assets/Mods/Basic/Cards/Scripts/General/Basic.meta new file mode 100644 index 00000000..f5fc88dd --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 356e1a6512dbf4648ae79f68e1ce0517 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Defense.cs b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Defense.cs similarity index 84% rename from Assets/Mods/Basic/Cards/Scripts/General/Defense.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Defense.cs index 30754a80..9e81ea91 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Defense.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Defense.cs @@ -15,16 +15,14 @@ namespace Continentis.Mods.Basic.Cards public override CommandGroup PlayEffect(List targetList) { - base.PlayEffect(targetList); - return Cmd.Parallel(new Cmd_PlayAnimation(user.characterView, "Skill"), - Cmd.After(0.2f, () => user.AddBlock(GetAttribute("Block"))) + Cmd.Do(() => user.AddBlock(GetAttribute("Block"))) ); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetBlock_Fortitude(); + LogicComponent().SetBlock(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Defense.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Defense.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Defense.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Defense.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Basic/Evasion.cs b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Evasion.cs new file mode 100644 index 00000000..b2a5a0a3 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Evasion.cs @@ -0,0 +1,31 @@ +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 Evasion : CardLogicBase + { + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + public override CommandGroup PlayEffect(List targetList) + { + base.PlayEffect(targetList); + + return Cmd.Parallel(new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => user.AddDodge(GetAttribute("Dodge"))) + ); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDodge(); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Basic/Evasion.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Evasion.cs.meta new file mode 100644 index 00000000..82510795 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Evasion.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 57c0b91cd3a1e63489ca8b048df1415a \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Prick.cs b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Prick.cs similarity index 86% rename from Assets/Mods/Basic/Cards/Scripts/General/Attack/Prick.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Prick.cs index b4875cf2..620ea436 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Prick.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Prick.cs @@ -18,17 +18,15 @@ namespace Continentis.Mods.Basic.Cards public override CommandGroup PlayEffect(List targetList) { - base.PlayEffect(targetList); - return ForEachTarget(targetList, target => Cmd.Parallel( new Cmd_PlayAnimation(user.characterView, "Attack"), - Cmd.After(0.1f, () => AttackTarget(target, GetTargetedFinalDamage(target))) + Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target))) )); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Prick(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Prick.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Prick.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Attack/Prick.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Prick.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Slash.cs b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Slash.cs similarity index 98% rename from Assets/Mods/Basic/Cards/Scripts/General/Attack/Slash.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Slash.cs index d1ddf8e4..6bc9b533 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Slash.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Slash.cs @@ -26,7 +26,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Slash.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Slash.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Attack/Slash.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Slash.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Strike.cs b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Strike.cs similarity index 98% rename from Assets/Mods/Basic/Cards/Scripts/General/Attack/Strike.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Strike.cs index f59619ce..29ccd3cd 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Strike.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Strike.cs @@ -28,7 +28,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Strike(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Attack/Strike.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Basic/Strike.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Attack/Strike.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Basic/Strike.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/Meditation.cs b/Assets/Mods/Basic/Cards/Scripts/General/Power/Meditation.cs new file mode 100644 index 00000000..b64e5c71 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/Meditation.cs @@ -0,0 +1,20 @@ +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 Meditation : CardLogicBase + { + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => CreateCharacterBuff(GetAttribute("Buff_Resonance_Stack")).Apply(user, user, this)) + ); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/Meditation.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Power/Meditation.cs.meta new file mode 100644 index 00000000..06d4dc18 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/Meditation.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d87b9c15198f97b4c8ebc8e0f45ccf25 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/RainOfHealing.cs b/Assets/Mods/Basic/Cards/Scripts/General/Power/RainOfHealing.cs new file mode 100644 index 00000000..bb6f9080 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/RainOfHealing.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 治疗之雨:能力牌,给使用者施加"祈雨"专注 Buff。 + /// 每回合开始时对全体友方回复 Heal_Amount 点生命,持续 Buff_Duration 回合。 + /// + public class RainOfHealing : CardLogicBase + { + private const string HEAL_AMOUNT = "Heal_Amount"; + private const string BUFF_PRAYINGFORRAIN_DURATION = "Buff_PrayingForRain_Count"; + + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => + { + CreateCharacterBuff( + GetAttribute(HEAL_AMOUNT), + GetAttribute(BUFF_PRAYINGFORRAIN_DURATION) + ).Apply(user, user, this); + }) + ); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/RainOfHealing.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Power/RainOfHealing.cs.meta new file mode 100644 index 00000000..d9e72afb --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/RainOfHealing.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 73b083d8ec0bbad4dbb0c99786f86844 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/Stoneskin.cs b/Assets/Mods/Basic/Cards/Scripts/General/Power/Stoneskin.cs new file mode 100644 index 00000000..13368dd3 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/Stoneskin.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; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 石肤术:对使用者施加坚韧 Buff(行动结束后获得格挡)。 + /// + public class Stoneskin : CardLogicBase + { + private const string BUFF_WITHSTAND_STACK = "Buff_Withstand_Stack"; + + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => CreateCharacterBuff(GetAttribute(BUFF_WITHSTAND_STACK)).Apply(user, user, this)) + ); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/Stoneskin.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Power/Stoneskin.cs.meta new file mode 100644 index 00000000..9afaae20 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/Stoneskin.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b6250880c19f25943ab087ca16993ac2 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/WarmUp.cs b/Assets/Mods/Basic/Cards/Scripts/General/Power/WarmUp.cs new file mode 100644 index 00000000..48a14042 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/WarmUp.cs @@ -0,0 +1,20 @@ +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 WarmUp : CardLogicBase + { + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => CreateCharacterBuff(GetAttribute("Buff_Strength_Stack")).Apply(user, user, this)) + ); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Power/WarmUp.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Power/WarmUp.cs.meta new file mode 100644 index 00000000..750408eb --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Power/WarmUp.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 02b6c4871a92a8643a2340a41bf762be \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/ActionSurge.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ActionSurge.cs new file mode 100644 index 00000000..f4a2a7a1 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ActionSurge.cs @@ -0,0 +1,20 @@ +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 ActionSurge : CardLogicBase + { + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => user.ModifyStamina(GetAttribute("Stamina_Recover"))) + ); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/ActionSurge.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ActionSurge.cs.meta new file mode 100644 index 00000000..ad84e9c7 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ActionSurge.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6384a21b043ec0344a37b7ae4c10885e \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/Anticipation.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Anticipation.cs new file mode 100644 index 00000000..7ae23250 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Anticipation.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using System.Linq; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Combat; +using Continentis.MainGame.Commands; +using SLSFramework.General; +using UnityEngine; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 预判:获得闪避值。 + /// 若本回合内没有任何敌人在使用者之前行动,则额外获得 Bonus_Dodge 的闪避值。 + /// + public class Anticipation : CardLogicBase + { + private const string BONUS_DODGE = "Bonus_Dodge"; + + public override void SetUpLogicComponents() + { + AddLogicComponent(); + } + + public override CommandGroup PlayEffect(List targetList) + { + base.PlayEffect(targetList); + + int baseDodge = GetAttribute("Dodge"); + int finalDodge = IsBeforeAnyEnemy() + ? Mathf.RoundToInt(baseDodge + GetAttribute(BONUS_DODGE)) + : baseDodge; + + return Cmd.Parallel( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => user.AddDodge(finalDodge)) + ); + } + + public override void ApplyAttributeChangesByCard() + { + LogicComponent().SetDodge(); + } + + /// + /// 判断本回合内是否没有任何敌方角色在使用者之前行动过。 + /// + private bool IsBeforeAnyEnemy() + { + int currentRound = CombatMainManager.Instance.currentRound; + int userActionIndex = user.recordSubmodule.currentAction; + + return !CombatMainManager.Instance.characterController.characters + .Any(c => c.fraction == Fraction.Enemy + && c.recordSubmodule.currentRound == currentRound + && c.recordSubmodule.currentAction < userActionIndex); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/Anticipation.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Anticipation.cs.meta new file mode 100644 index 00000000..739d8251 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Anticipation.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1ebac59694a161148a829240aa9d8ec2 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/ArcaneRecovery.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ArcaneRecovery.cs new file mode 100644 index 00000000..b9c5beb5 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ArcaneRecovery.cs @@ -0,0 +1,20 @@ +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 ArcaneRecovery : CardLogicBase + { + public override CommandGroup PlayEffect(List targetList) + { + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => user.ModifyMana(GetAttribute("Mana_Recover"))) + ); + } + } +} \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/ArcaneRecovery.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ArcaneRecovery.cs.meta new file mode 100644 index 00000000..b96c1601 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ArcaneRecovery.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5609f31a692c7f847ada725274e17d5d \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/Command.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Command.cs index 5d2b6523..27e4f4dd 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Skill/Command.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Command.cs @@ -11,12 +11,15 @@ using UnityEngine; namespace Continentis.Mods.Basic.Cards { /// - /// 命令术:对目标执行一次感知检定: - /// 对敌人:若感知低于{PerceptionThreshold_Remove},随机移除一个意图;若低于{PerceptionThreshold_Change},随机改变一个意图 - /// 对玩家英雄:若感知检定未通过,将一张"扼制"卡牌放入目标的抽牌堆 + /// 命令术:根据使用者与目标的等级差产生不同效果: + /// 对敌人:等级差达到 High 门槛时随机移除一个意图;达到 Low 门槛时随机改变一个意图。 + /// 对玩家英雄:等级差达到 High 门槛时将"扼制"卡牌放入目标抽牌堆;达到 Low 门槛时将"干扰"卡牌放入目标抽牌堆。 /// public class Command : CardLogicBase { + private const string LEVEL_GAP_LOW = "LevelGap_Low"; + private const string LEVEL_GAP_HIGH = "LevelGap_High"; + private static readonly Color HintGreen = new Color(0.2f, 0.85f, 0.3f); private static readonly Color HintRed = new Color(0.9f, 0.2f, 0.2f); @@ -48,7 +51,7 @@ namespace Continentis.Mods.Basic.Cards } /// - /// 检查场上是否存在感知低于阈值的可用目标。 + /// 检查场上是否存在等级差达到 Low 门槛的可用目标。 /// 有可用目标时返回绿色,无可用目标时返回红色。 /// public override Color? GetHintColor() @@ -58,36 +61,43 @@ namespace Continentis.Mods.Basic.Cards card.DetectTargetsValidity(out List valid, out _, out _); if (valid.Count == 0) return HintRed; - int changeThreshold = GetAttribute("Perception_Threshold_High"); + int userLevel = user.GetAttribute(CharacterAttributes.Level); + int gapLow = GetAttribute(LEVEL_GAP_LOW); bool hasEffectiveTarget = valid.Any(t => - t.GetAttribute(CharacterAttributes.Perception) < changeThreshold); + userLevel - t.GetAttribute(CharacterAttributes.Level) >= gapLow); return hasEffectiveTarget ? HintGreen : HintRed; } - /// 对敌方目标:根据感知检定移除或改变意图。 + /// 计算使用者与目标的等级差。 + private int GetLevelGap(CharacterBase target) + { + return user.GetAttribute(CharacterAttributes.Level) - target.GetAttribute(CharacterAttributes.Level); + } + + /// 对敌方目标:等级差达到 High 时移除意图,达到 Low 时改变意图。 private void PlayEffectOnEnemy(CharacterBase target) { - int removeThreshold = GetAttribute("Perception_Threshold_Low"); - int changeThreshold = GetAttribute("Perception_Threshold_High"); - int perception = target.GetAttribute(CharacterAttributes.Perception); + int levelGap = GetLevelGap(target); + int gapHigh = GetAttribute(LEVEL_GAP_HIGH); + int gapLow = GetAttribute(LEVEL_GAP_LOW); - if (perception < removeThreshold) + if (levelGap >= gapHigh) target.intentionSubmodule.RemoveRandomIntendedCard(); - else if (perception < changeThreshold) + else if (levelGap >= gapLow) target.intentionSubmodule.ChangeRandomIntendedCard(); } - /// 对玩家英雄:感知检定未通过时,向目标抽牌堆塞入一张"扼制"卡牌。 + /// 对玩家英雄:等级差达到 High 时塞入扼制,达到 Low 时塞入干扰。 private void PlayEffectOnPlayer(CharacterBase target) { - int stifleThreshold = GetAttribute("Perception_Threshold_Low"); - int disruptionThreshold = GetAttribute("Perception_Threshold_High"); - int perception = target.GetAttribute(CharacterAttributes.Perception); + int levelGap = GetLevelGap(target); + int gapHigh = GetAttribute(LEVEL_GAP_HIGH); + int gapLow = GetAttribute(LEVEL_GAP_LOW); - if (perception < stifleThreshold) + if (levelGap >= gapHigh) CardInstance.GenerateCardInstance(GetDerivativeCardData(0), target, Piles.Draw); - else if (perception < disruptionThreshold) + else if (levelGap >= gapLow) CardInstance.GenerateCardInstance(GetDerivativeCardData(1), target, Piles.Draw); } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/Cover.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Cover.cs similarity index 91% rename from Assets/Mods/Basic/Cards/Scripts/Knight/Cover.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Cover.cs index bc332d1b..8a413c0c 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/Cover.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Cover.cs @@ -19,13 +19,13 @@ namespace Continentis.Mods.Basic.Cards return ForEachTarget(targetList, target => Cmd.Parallel( new Cmd_PlayAnimation(user.characterView, "Skill"), Cmd.Do(() => user.AddBlock(GetAttribute("Block"))), - Cmd.Do(() => LogicComponent().GenerateProtection(user, target, GetAttribute("BuffCount_Protecting"))) + Cmd.Do(() => LogicComponent().GenerateProtection(user, target, GetAttribute("Buff_Protecting_Count"))) )); } public override void ApplyAttributeChangesByCard() { - LogicComponent().SetBlock_Fortitude(); + LogicComponent().SetBlock(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/Cover.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Cover.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/Knight/Cover.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Cover.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/Icebound.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Icebound.cs new file mode 100644 index 00000000..47467973 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Icebound.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using Continentis.MainGame.Card; +using Continentis.MainGame.Character; +using Continentis.MainGame.Commands; +using Continentis.Mods.Basic.Buffs; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Cards +{ + /// + /// 冰封术:对目标施加冻结和虚弱 Buff。 + /// + public class Icebound : CardLogicBase + { + private const string FREEZE_COUNT = "Buff_Freeze_Count"; + private const string WEAK_COUNT = "Buff_Weak_Count"; + + public override void SetUpLogicComponents() { } + + public override CommandGroup PlayEffect(List targetList) + { + return ForEachTarget(targetList, target => Cmd.Parallel( + new Cmd_PlayAnimation(user.characterView, "Cast"), + Cmd.Do(() => + { + CreateCharacterBuff(GetAttribute(FREEZE_COUNT)).Apply(target, user, this); + CreateCharacterBuff(GetAttribute(WEAK_COUNT)).Apply(target, user, this); + }) + )); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/Icebound.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Icebound.cs.meta new file mode 100644 index 00000000..97946ef4 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Icebound.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bd886cfe2c8877944b8e749f34849625 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Recollection.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Recollection.cs similarity index 70% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Recollection.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Recollection.cs index 658072fc..c20fcb9c 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Recollection.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Recollection.cs @@ -10,22 +10,23 @@ namespace Continentis.Mods.Basic.Cards { public override void SetUpLogicComponents() { - AddLogicComponent(); + var select = AddLogicComponent(); + select.selectEffect = SelectEffect; } public override CommandGroup PlayEffect(List targetList) { - base.PlayEffect(targetList); CommandGroup mainGroup = Cmd.Sequential(new Cmd_PlayAnimation(user.characterView, "Skill")); List discardedCards = user.deckSubmodule.DiscardPile; LogicComponent() - .AddSelectionCommands(ref mainGroup, discardedCards, "Select a non-status or non-curse card.", 1); + .AddSelectionCommands(ref mainGroup, discardedCards, + "Card_Basic_Recollection_SelectCustomCards_Title".Localize(card), GetAttribute("Draw_Card_Count")); return mainGroup; } - public void SelectEffect(CardInstance card) + private void SelectEffect(CardInstance card) { - CommandQueueManager.Instance.AddCommand(new Cmd_DrawCards(card.deck, new List() { card }, 0.1f)); + CommandQueueManager.Instance.AddCommand(new Cmd_DrawCards(card.deck, new List() { card })); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Recollection.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Recollection.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Recollection.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Recollection.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/Cleric/Sanctuary.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Sanctuary.cs similarity index 54% rename from Assets/Mods/Basic/Cards/Scripts/Cleric/Sanctuary.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Sanctuary.cs index e407173f..6f50a93d 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Cleric/Sanctuary.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Sanctuary.cs @@ -1,5 +1,3 @@ - - using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; @@ -7,16 +5,26 @@ using Continentis.MainGame.Character; using Continentis.MainGame.Commands; using SLSFramework.General; -namespace Continentis.Mods.Basic.Cards.Cleric +namespace Continentis.Mods.Basic.Cards { + /// + /// 庇护所:对目标施加弱驱散,每次使用后法力消耗增加 1。 + /// public class Sanctuary : CardLogicBase { public override CommandGroup PlayEffect(List targetList) { - return ForEachTarget(targetList, target => Cmd.Parallel( + CommandGroup mainGroup = ForEachTarget(targetList, target => Cmd.Parallel( new Cmd_PlayAnimation(user.characterView, "Skill"), Cmd.Do(() => target.combatBuffSubmodule.Dispel(BuffDispelLevel.Basic, user)) )); + + mainGroup.AddCommand(Cmd.Do(() => + { + ModifyAttribute(CardAttributes.ManaCost, 1); + })); + + return mainGroup; } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/Cleric/Sanctuary.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Sanctuary.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/Cleric/Sanctuary.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Sanctuary.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Tactic.cs similarity index 89% rename from Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Tactic.cs index 5355a4af..be3eba54 100644 --- a/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Tactic.cs @@ -19,9 +19,9 @@ namespace Continentis.Mods.Basic.Cards CommandGroup mainGroup = Cmd.Sequential(new Cmd_PlayAnimation(user.characterView, "Skill")); LogicComponent() - .AddSelectionCommands(ref mainGroup, "Card_Basic_Tactic_SelectionCommandTitle".Localize(), 1, true); + .AddSelectionCommands(ref mainGroup, "Card_Basic_Tactic_SelectHandCards_Title".Localize(), GetAttribute("Discard_Card_Count"), true); - mainGroup.AddCommand(new Cmd_DrawCards(user.deckSubmodule, 1)); + mainGroup.AddCommand(new Cmd_DrawCards(user.deckSubmodule, GetAttribute("Draw_Card_Count"))); return mainGroup; } diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/Tactic.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Tactic.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/Tactic.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/ThinkingCountermeasures.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ThinkingCountermeasures.cs similarity index 96% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/ThinkingCountermeasures.cs rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/ThinkingCountermeasures.cs index df7dd183..611a0053 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/ThinkingCountermeasures.cs +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ThinkingCountermeasures.cs @@ -10,7 +10,7 @@ namespace Continentis.Mods.Basic.Cards { public override CommandGroup PlayEffect(List targetList) { - return user.deckSubmodule.DrawCards(GetAttribute("DrawCardAmount")); + return user.deckSubmodule.DrawCards(GetAttribute("Draw_Card_Count")); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/ThinkingCountermeasures.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/ThinkingCountermeasures.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/ThinkingCountermeasures.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/General/Skill/ThinkingCountermeasures.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/VenomSpray.cs b/Assets/Mods/Basic/Cards/Scripts/General/Skill/VenomSpray.cs new file mode 100644 index 00000000..0fcad343 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/VenomSpray.cs @@ -0,0 +1,53 @@ +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 +{ + /// + /// 猛毒喷射:对主目标施加腐蚀 Buff, + /// 并从剩余敌人中随机选取 Extra_Target_Count 个额外目标(不可重复)同样施加腐蚀 Buff。 + /// targetCount = 1,玩家手动指定主目标;额外目标由 PlayEffect 内部随机决定。 + /// + public class VenomSpray : CardLogicBase + { + private const string BUFF_CORROSION_STACK = "Buff_Corrosion_Stack"; + private const string EXTRA_TARGET_COUNT = "Extra_Target_Count"; + + public override CommandGroup PlayEffect(List targetList) + { + CharacterBase mainTarget = targetList[0]; + int corrosionStack = GetAttribute(BUFF_CORROSION_STACK); + + // 从所有敌人中排除主目标,不放回随机抽取额外目标 + List pool = CombatMainManager.Instance.characterController.GetAllEnemies(user); + pool.Remove(mainTarget); + + int extraCount = Mathf.Min(GetAttribute(EXTRA_TARGET_COUNT), pool.Count); + List extraTargets = new List(); + for (int i = 0; i < extraCount; i++) + { + int index = Random.Range(0, pool.Count); + extraTargets.Add(pool[index]); + pool.RemoveAt(index); + } + + return Cmd.Sequential( + new Cmd_PlayAnimation(user.characterView, "Skill"), + Cmd.Do(() => + { + CreateCharacterBuff(corrosionStack).Apply(mainTarget, user, this); + foreach (CharacterBase extra in extraTargets) + { + CreateCharacterBuff(corrosionStack).Apply(extra, user, this); + } + }) + ); + } + } +} diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Skill/VenomSpray.cs.meta b/Assets/Mods/Basic/Cards/Scripts/General/Skill/VenomSpray.cs.meta new file mode 100644 index 00000000..8f1748b1 --- /dev/null +++ b/Assets/Mods/Basic/Cards/Scripts/General/Skill/VenomSpray.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a36b331b0e2b358438eed660fcf79847 \ 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 index f4d8b0df..02b41a5d 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/DivineSmite.cs @@ -37,7 +37,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(); + LogicComponent().SetDamage_Physics(); } } } \ 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 index 884cd68a..ec54ab49 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/EstablishFormation.cs @@ -31,7 +31,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetBlock_Fortitude(); + LogicComponent().SetBlock(); } } } \ 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 index 06ebaa99..7e1eb2dc 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/FirmBelief.cs @@ -31,7 +31,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetBlock_Fortitude(); + LogicComponent().SetBlock(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/HeavySlash.cs.meta b/Assets/Mods/Basic/Cards/Scripts/Knight/HeavySlash.cs.meta deleted file mode 100644 index d7324c09..00000000 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/HeavySlash.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 7232a7d96ede60443b2641d668301d06 \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfCourage.cs b/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfCourage.cs index 9a6bf679..0b871245 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfCourage.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/OathOfCourage.cs @@ -28,7 +28,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetBlock_Sorcery(); + LogicComponent().SetBlock(); } } } \ 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 329c08c2..1983d038 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Knight/UtmostStrike.cs @@ -30,7 +30,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Slash(); + LogicComponent().SetDamage_Physics(); } private bool SelectCondition(CardInstance card) diff --git a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs b/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs deleted file mode 100644 index 1acd2f18..00000000 --- a/Assets/Mods/Basic/Cards/Scripts/Mage/ArcaneMissiles.cs +++ /dev/null @@ -1,57 +0,0 @@ -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 - { - public override void SetUpLogicComponents() - { - AddLogicComponent(); - } - - public override CommandGroup PlayEffect(List targetList) - { - // 多段攻击:先等1秒(占位),再对每个目标依次连续打多段 - CommandGroup occupiedGroup = Cmd.Sequential( - Cmd.After(1f, () => - CommandQueueManager.Instance.AddCommand(Cmd.Do(() => - Debug.Log("插队指令,等待动画播放完毕"))) - ) - ); - - CommandGroup mainGroup = ForEachTarget(targetList, target => - { - CommandGroup perTargetGroup = Cmd.Sequential(new Cmd_PlayAnimation(user.characterView, "Attack")); - int attackCount = GetAttribute("AttackCount"); - for (int i = 0; i < attackCount; i++) - { - perTargetGroup.AddCommand(Cmd.After(0.4f, () => - { - AttackTarget(target, GetTargetedFinalDamage(target)); - Debug.Log("攻击命令触发"); - })); - } - return perTargetGroup; - }); - - CommandGroup finalGroup = Cmd.Sequential(Cmd.Do(() => Debug.Log("不插队指令"))); - - CommandGroup firstGroup = Cmd.Sequential( - Cmd.Do(() => Debug.Log("插队指令,抽牌")), - new Cmd_DrawCards(user.deckSubmodule, 1) - ); - - return Cmd.Sequential(occupiedGroup, mainGroup, finalGroup, firstGroup); - } - - public override void ApplyAttributeChangesByCard() - { - LogicComponent().SetDamage_Arcane(); - } - } -} \ 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 index d141da93..e6bf4c53 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/ElectricClaw.cs @@ -30,7 +30,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } \ 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 index caf90995..7f2f456e 100644 --- a/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs +++ b/Assets/Mods/Basic/Cards/Scripts/Mage/WitchcraftRay.cs @@ -23,7 +23,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/HiddenBlade.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/HiddenBlade.cs index 4be9c30f..2481853b 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/HiddenBlade.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/HiddenBlade.cs @@ -25,7 +25,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Prick(); + LogicComponent().SetDamage_Physics(); } } } diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Ignite.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Ignite.cs similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Ignite.cs rename to Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Ignite.cs diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Ignite.cs.meta b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Ignite.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Ignite.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Ignite.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/MudBarrier.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/MudBarrier.cs index 4fa0c9a3..ad6fa11e 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/MudBarrier.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/MudBarrier.cs @@ -25,7 +25,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetBlock_Arcane(); + LogicComponent().SetBlock(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RadiantBolt.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RadiantBolt.cs index 32edd6d9..1cbbee90 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RadiantBolt.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RadiantBolt.cs @@ -30,7 +30,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RecklessAssault.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RecklessAssault.cs index 3df40d47..539425e6 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RecklessAssault.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/RecklessAssault.cs @@ -25,7 +25,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Prick(); + LogicComponent().SetDamage_Physics(); } } } \ No newline at end of file diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Rouse.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Rouse.cs similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Rouse.cs rename to Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Rouse.cs diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Rouse.cs.meta b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Rouse.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Rouse.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Rouse.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Whimsy.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Whimsy.cs similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Whimsy.cs rename to Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Whimsy.cs diff --git a/Assets/Mods/Basic/Cards/Scripts/General/Whimsy.cs.meta b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Whimsy.cs.meta similarity index 100% rename from Assets/Mods/Basic/Cards/Scripts/General/Whimsy.cs.meta rename to Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/Whimsy.cs.meta diff --git a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/WindBlade.cs b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/WindBlade.cs index 6dbe7d5c..4af574c3 100644 --- a/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/WindBlade.cs +++ b/Assets/Mods/Basic/Cards/Scripts/ObsoleteGeneral/WindBlade.cs @@ -27,7 +27,7 @@ namespace Continentis.Mods.Basic.Cards public override void ApplyAttributeChangesByCard() { - LogicComponent().SetDamage_Arcane(); + LogicComponent().SetDamage_Magic(); } public override int GetTargetedFinalDamage(CharacterBase target, AttackContext ctx = null) diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs b/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs index 41bd3278..dccc0b23 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/Assassin/AmbushStance.cs @@ -1,4 +1,4 @@ -using Continentis.MainGame; +using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using SLSFramework.General; @@ -16,6 +16,8 @@ namespace Continentis.Mods.Basic.Buffs .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); this.iconSubmodule = new IconSubmodule(this); this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); + this.generalAttributeSubmodule = new GeneralAttributeSubmodule(this); + this.generalAttributeSubmodule.numericChange.Add("DodgeChanceOffset", stack); this.eventSubmodule = new EventSubmodule(this); this.eventSubmodule.onBeforePlayCard.Add("AmbushStance", new PrioritizedAction>(((card, targets) => { @@ -30,7 +32,7 @@ namespace Continentis.Mods.Basic.Buffs { existingBuff.unitedStackSubmodule.ModifyStack(this.unitedStackSubmodule.stackAmount); int newStack = existingBuff.unitedStackSubmodule.stackAmount; - existingBuff.coreAttributeSubmodule.numericChange["DodgeChanceOffset"] = newStack; + existingBuff.generalAttributeSubmodule.numericChange["DodgeChanceOffset"] = newStack; return false; } return true; diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs index 4c67ee72..47cd768f 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Bleed.cs @@ -1,12 +1,14 @@ -using System.Collections.Generic; using Continentis.MainGame; -using Continentis.MainGame.Card; using Continentis.MainGame.Character; using SLSFramework.General; using UnityEngine; namespace Continentis.Mods.Basic.Buffs { + /// + /// 流血:受到攻击时,额外受到等同于层数的伤害(响应式,不会递归触发)。 + /// 每次行动开始时层数减半(至少减 1)。 + /// public sealed class Bleed : CharacterCombatBuffBase { public Bleed(int stack) @@ -27,8 +29,13 @@ namespace Continentis.Mods.Basic.Buffs private void OnGetAttacked(AttackResult result) { + // 响应式 / 生命移除 / 反弹伤害不触发流血 + if (result.context.HasAnyTag(AttackTags.Reactive, AttackTags.HpRemoval, AttackTags.Reflected)) + return; + int stackAmount = unitedStackSubmodule.stackAmount; - result.attacker.Attack(attachedCharacter, stackAmount, null, false, true); + var ctx = new AttackContext().WithTag(AttackTags.Reactive).WithTag(AttackTags.GuaranteedHit); + attachedCharacter.Attack(attachedCharacter, stackAmount, ctx); } private void OnActionStart() @@ -40,8 +47,14 @@ namespace Continentis.Mods.Basic.Buffs public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { - //TODO - existingBuff = this; + MainGameManager.Instance.basePrefabs.GenerateInfoText("Bleed", attachedCharacter.characterView); + + if (FindExistingSameBuff(out existingBuff)) + { + existingBuff.unitedStackSubmodule.AddStack(this.unitedStackSubmodule.stackAmount); + return false; + } + return true; } } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs index a05c4811..09380476 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Freeze.cs @@ -18,6 +18,8 @@ namespace Continentis.Mods.Basic.Buffs this.actionCountSubmodule = new CountSubmodule(this, initialCount); actionCountSubmodule.onCountChanged = OnCountChanged; + + this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.generalAttributeSubmodule = new GeneralAttributeSubmodule(this); generalAttributeSubmodule.numericChange.Add("Speed", -initialCount); diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/PrayingForRain.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/PrayingForRain.cs new file mode 100644 index 00000000..2686b2bf --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/PrayingForRain.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using Continentis.MainGame; +using Continentis.MainGame.Character; +using Continentis.MainGame.Combat; +using SLSFramework.General; + +namespace Continentis.Mods.Basic.Buffs +{ + /// + /// 祈雨(专注):每回合开始时对全体友方(包括自身)回复少量生命值,持续若干回合。 + /// 属于专注类 Buff,个数上限由 MaximumFocusingBuffAmount 决定; + /// 若已有相同 Buff 存在则直接替换,不叠加持续时间。 + /// + public class PrayingForRain : CharacterCombatBuffBase + { + private readonly int healAmount; + + public PrayingForRain(int healAmount, int duration) + { + this.healAmount = healAmount; + + Initialize(BuffType.Focusing, BuffDispelLevel.Strong); + + this.contentSubmodule = new ContentSubmodule(this) + .AddParameterGetter("HealAmount", () => this.healAmount.ToString()) + .AddParameterGetter("Count", () => roundCountSubmodule.remainingCount.ToString()); + + this.iconSubmodule = new IconSubmodule(this); + + // 回合计数:框架每回合开始时自动 Update(),归零时移除 Buff + this.roundCountSubmodule = new CountSubmodule(this, duration); + + this.eventSubmodule = new EventSubmodule(this); + this.eventSubmodule.onRoundStart.Add("PrayingForRain_HealAllies", new PrioritizedAction(() => + { + List allies = CombatMainManager.Instance.characterController + .GetAllAllies(attachedCharacter, includeSelf: true); + + foreach (CharacterBase ally in allies) + { + ally.Heal(this.healAmount); + } + })); + } + + public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) + { + MainGameManager.Instance.basePrefabs.GenerateInfoText( + contentSubmodule.displayName, attachedCharacter.characterView); + + // 已有相同 Buff:直接替换(重置持续时间),不进行层数处理 + if (FocusingCheck(out existingBuff)) + { + existingBuff.roundCountSubmodule.Refresh( + roundCountSubmodule.maximumCount, keepMaximal: false); + return false; + } + + return true; + } + } +} diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/PrayingForRain.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/General/PrayingForRain.cs.meta new file mode 100644 index 00000000..3086269f --- /dev/null +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/PrayingForRain.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6c17e1ecf2b40374882e32a068ba9e8b \ No newline at end of file diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Prowess.cs b/Assets/Mods/Basic/Characters/CombatBuffs/General/Strength.cs similarity index 88% rename from Assets/Mods/Basic/Characters/CombatBuffs/General/Prowess.cs rename to Assets/Mods/Basic/Characters/CombatBuffs/General/Strength.cs index bf1d3c4d..eb76f08a 100644 --- a/Assets/Mods/Basic/Characters/CombatBuffs/General/Prowess.cs +++ b/Assets/Mods/Basic/Characters/CombatBuffs/General/Strength.cs @@ -6,9 +6,9 @@ using UnityEngine; namespace Continentis.Mods.Basic.Buffs { - public sealed class Prowess : CharacterCombatBuffBase, IBuffExtension_IntegerRange + public sealed class Strength : CharacterCombatBuffBase, IBuffExtension_IntegerRange { - public Prowess(int stack) + public Strength(int stack) { Initialize(BuffType.Positive, BuffDispelLevel.Strong); @@ -27,7 +27,7 @@ namespace Continentis.Mods.Basic.Buffs public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { - MainGameManager.Instance.basePrefabs.GenerateInfoText("Prowess", attachedCharacter.characterView); + MainGameManager.Instance.basePrefabs.GenerateInfoText("Strength", attachedCharacter.characterView); if (FindExistingSameBuff(out existingBuff)) { @@ -43,14 +43,14 @@ namespace Continentis.Mods.Basic.Buffs public void OnBecomePositive() { - contentSubmodule.originalFunctionText = "Buff_Basic_Prowess_FunctionTextPos".Localize(); + contentSubmodule.originalFunctionText = "Buff_Basic_Strength_FunctionTextPos".Localize(); buffType = BuffType.Positive; iconSubmodule.Update(); } public void OnBecomeNegative() { - contentSubmodule.originalFunctionText = "Buff_Basic_Prowess_FunctionTextNeg".Localize(); + contentSubmodule.originalFunctionText = "Buff_Basic_Strength_FunctionTextNeg".Localize(); buffType = BuffType.Negative; iconSubmodule.Update(); } diff --git a/Assets/Mods/Basic/Characters/CombatBuffs/General/Prowess.cs.meta b/Assets/Mods/Basic/Characters/CombatBuffs/General/Strength.cs.meta similarity index 100% rename from Assets/Mods/Basic/Characters/CombatBuffs/General/Prowess.cs.meta rename to Assets/Mods/Basic/Characters/CombatBuffs/General/Strength.cs.meta diff --git a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Soullies.asset b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Soullies.asset index 4ae54274..5d2e374c 100644 --- a/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Soullies.asset +++ b/Assets/Mods/Basic/Characters/Data/CharacterData_Basic_Soullies.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05f4606fd07bae3224da35def63477bfec0523a99073e584b462a5de31a1947f -size 5799 +oid sha256:69a9b06faf7a93f4bd8de9bff0497da5d549e75532ceb8660e34ecbb113d15b5 +size 4557 diff --git a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv index 6ae06524..0dd5e2a9 100644 --- a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv +++ b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralBuffs.csv @@ -30,7 +30,7 @@ Buff_Basic_Freeze_FunctionText,"Reduce Speed by $ParameterInt(""Count""), also r Buff_Basic_Nimble_DisplayName,Nimble,灵巧,靈巧,機敏,민첩,Khéo Léo,ความคล่องแคล่ว Buff_Basic_Nimble_FunctionTextPos,"Gain $ParameterInt(""Stack"") more dodge from cards.","从卡牌中获得的闪避增加$ParameterInt(""Stack"")点。","從卡牌中獲得的閃避增加$ParameterInt(""Stack"")點。","カードによる回避獲得量が$ParameterInt(""Stack"")点増加する。","카드로 얻는 회피가 $ParameterInt(""Stack"") 증가합니다.","Né Tránh nhận được từ lá bài tăng $ParameterInt(""Stack"") điểm.","การหลบหลีกที่ได้รับจากการ์ดเพิ่มขึ้น $ParameterInt(""Stack"") หน่วย" Buff_Basic_Nimble_FunctionTextNeg,"Gain $ParameterAbsInt(""Stack"") less dodge from cards.","从卡牌中获得的闪避减少$ParameterAbsInt(""Stack"")点。","從卡牌中獲得的閃避減少$ParameterAbsInt(""Stack"")點。","カードによる回避獲得量が$ParameterAbsInt(""Stack"")点減少する。","카드로 얻는 회피가 $ParameterAbsInt(""Stack"") 감소합니다.","Né Tránh nhận được từ bài giảm $ParameterAbsInt(""Stack"") điểm.","การหลบหลีกที่ได้รับจากการ์ดลดลง $ParameterAbsInt(""Stack"") หน่วย" -Buff_Basic_Prowess_DisplayName,Prowess,勇猛,勇猛,勇猛,용맹,Dũng Mãnh,ความกล้าหาญ +Buff_Basic_Prowess_DisplayName,Strength,力量,力量,強さ,힘,sức mạnh,ความแข็งแกร่ง Buff_Basic_Prowess_FunctionTextPos,"Deal $ParameterInt(""Stack"") more physical damage from cards.","从卡牌中造成的物理伤害增加$ParameterInt(""Stack"")点。","從卡牌中造成的物理傷害增加$ParameterInt(""Stack"")點。","カードによる物理ダメージが$ParameterInt(""Stack"")点増加する。","카드로 주는 물리 피해가 $ParameterInt(""Stack"") 증가합니다.","Sát thương vật lý gây ra từ lá bài tăng $ParameterInt(""Stack"") điểm.","ความเสียหายกายภาพจากปลการ์ดเพิ่มขึ้น $ParameterInt(""Stack"") หน่วย" Buff_Basic_Prowess_FunctionTextNeg,"Deal $ParameterAbsInt(""Stack"") less physical damage from cards.","从卡牌中造成的物理伤害减少$ParameterAbsInt(""Stack"")点。","從卡牌中造成的物理傷害減少$ParameterAbsInt(""Stack"")點。","カードによる物理ダメージが$ParameterAbsInt(""Stack"")点減少する。","카드로 주는 물리 피해가 $ParameterAbsInt(""Stack"") 감소합니다.","Sát thương vật lý từ bài giảm $ParameterAbsInt(""Stack"") điểm.","ความเสียหายกายภาพจากการ์ดลดลง $ParameterAbsInt(""Stack"") หน่วย" Buff_Basic_Resonance_DisplayName,Resonance,共鸣,共鳴,共鳴,공명,Cộng Hưởng,สะท้อน @@ -65,3 +65,5 @@ Buff_Basic_Blessing_DisplayName,Blessing,祝福,,,,, Buff_Basic_Blessing_FunctionText,"For $ParameterInt(""Duration"") turns, the next $ParameterInt(""Stack"") cards you play gain 1 universal offset.","在$ParameterInt(""Duration"")回合内,你打出的$ParameterInt(""Stack"")张卡牌获得1点基础通用增减益效果。",,,,, Buff_Basic_MarkOfRadiance_DisplayName,Mark Of Radiance,光耀印记,,,,, Buff_Basic_MarkOfRadiance_FunctionText,"Physics Attack deals $ParameterInt(""Stack"") more damage for $ParameterInt(""Count"") rounds.","物理攻击造成额外$ParameterInt(""Stack"")点伤害,持续$ParameterInt(""Count"")回合。",,,,, +Buff_Basic_PrayingForRain_DisplayName,Praying for Rain," 祈雨",,,,, +Buff_Basic_PrayingForRain_FunctionText,"Concentration. At the start of each round, restore $ParameterInt(""HealAmount"") health to all allies. ($ParameterInt(""Count"") rounds remaining)","专注。每回合开始时为全体友方回复$ParameterInt(""HealAmount"")点生命。(剩余$ParameterInt(""Count"")回合)",,,,, diff --git a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralCards.csv b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralCards.csv index 98754b3a..18e73887 100644 --- a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralCards.csv +++ b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralCards.csv @@ -1,22 +1,21 @@ Key,English,Simplified Chinese,Traditional Chinese,Japanese,Korean,Vietnamese,Thai -Card_Basic_Strike_DisplayName,Strike,打击,打擊,ストライク,타격,Đánh,โจมตี -Card_Basic_Strike_FunctionText,"$Keyword(""Strike""), deal $Attribute(""Damage"") damage.","$Keyword(""Strike""),造成$Attribute(""Damage"")点伤害。","$Keyword(""Strike""),造成$Attribute(""Damage"")點傷害。","$Keyword(""Strike"")、$Attribute(""Damage"")点のダメージを与える。","$Keyword(""Strike""), $Attribute(""Damage"")의 피해를 줍니다.","$Keyword(""Strike""), gây $Attribute(""Damage"") sát thương.","$Keyword(""Strike""), สร้างความเสียหาย $Attribute(""Damage"") หน่วย" +Card_Basic_Strike_DisplayName,Strike,打击,,,,, +Card_Basic_Strike_FunctionText,"Deal $Attribute(""Damage"") physics damage.","造成$Attribute(""Damage"")点物理伤害。",,,,, Card_Basic_Slash_DisplayName,Slash,斩击,,,,, -Card_Basic_Slash_FunctionText,"$Keyword(""Slash""), deal $Attribute(""Damage"") damage.","$Keyword(""Slash""),造成$Attribute(""Damage"")点伤害。",,,,, +Card_Basic_Slash_FunctionText,"Deal $Attribute(""Damage"") physics damage.","造成$Attribute(""Damage"")点物理伤害。",,,,, Card_Basic_Prick_DisplayName,Prick,突刺,,,,, -Card_Basic_Prick_FunctionText,"$Keyword(""Prick""), deal $Attribute(""Damage"") damage.","$Keyword(""Prick""),造成$Attribute(""Damage"")点伤害。",,,,, -Card_Basic_Defense_DisplayName,Defense,防御,防禦,防御,방어,Phòng Thủ,ป้องกัน -Card_Basic_Defense_FunctionText,"$Keyword(""Fortitude""), gain $Attribute(""Block"") block.","$Keyword(""Fortitude""), 获得 $Attribute(""Block"") 点格挡.","$Keyword(""Fortitude""), 獲得 $Attribute(""Block"") 點格擋.","$Keyword(""Fortitude"")、使用者は$Attribute(""Block"")点のブロックを得る。","$Keyword(""Fortitude""), 사용자는 $Attribute(""Block"") 방어도를 얻습니다.","$Keyword(""Fortitude""), người sử dụng nhận $Attribute(""Block"") Giáp.","$Keyword(""Fortitude""), ผู้ใช้ได้รับ $Attribute(""Block"") การป้องกัน" -Card_Basic_Guard_DisplayName,Guard,守护,守護,守護,수호,Hộ Vệ,ผู้พิทักษ์ -Card_Basic_Guard_FunctionText,"Protect target ally for $Attribute(""BuffCount_Protecting"") rounds.","保护目标队友$Attribute(""BuffCount_Protecting"")回合。","保護目標隊友$Attribute(""BuffCount_Protecting"")回合。","対象の味方を$Attribute(""BuffCount_Protecting"")ターン守る。","대상 아군을 $Attribute(""BuffCount_Protecting"")턴 동안 보호합니다.","Bảo vệ đồng minh mục tiêu trong $Attribute(""BuffCount_Protecting"") lượt.","ปกป้องเพื่อนร่วมทีมเป้าหมายเป็นเวลา $Attribute(""BuffCount_Protecting"") เทิร์น" +Card_Basic_Prick_FunctionText,"Deal $Attribute(""Damage"") physics damage.","造成$Attribute(""Damage"")点物理伤害。",,,,, +Card_Basic_Defense_DisplayName,Defense,防御,,,,, +Card_Basic_Defense_FunctionText,"Gain $Attribute(""Block"") block.","获得 $Attribute(""Block"") 点格挡.",,,,, +Card_Basic_Guard_DisplayName,Guard,守护,,,,, +Card_Basic_Guard_FunctionText,"Protect target ally for $Attribute(""BuffCount_Protecting"") rounds.","保护目标队友$Attribute(""BuffCount_Protecting"")回合。",,,,, Card_Basic_Bless_DisplayName,Bless,祝福术,,,,, Card_Basic_Bless_FunctionText,"Target allied character gain $Attribute(""Buff_Blessing_Stack"") Blessing.","目标友方角色获得$Attribute(""Buff_Blessing_Stack"") 层祝福。",,,,, -Card_Basic_Command_DisplayName,Command,命令术,命令術,コマンド,명령,Ra Lệnh,สั่งการ -Card_Basic_Command_FunctionText,"[Showcase] Perform a Perception check on the target; this may influence their Intent or insert a Status card into their Draw Pile. [/Showcase][Target: CombatNPC] Perform a Perception check on the target. If their Perception is below $Attribute(""Perception_Threshold_Low""), randomly remove one Intent; if below $Attribute(""Perception_Threshold_High""), randomly change one Intent. [/Target][Target: PlayerHero] Perform a Perception check on the target. If their Perception is below $Attribute(""Perception_Threshold_Low""), insert a Stifled card into the target's Draw Pile; if below $Attribute(""Perception_Threshold_High""), insert a Disrupted card into the target's Draw Pile. [/Target]","[Showcase]对目标进行感知检定,可能影响其意图或将状态卡牌放入抽牌堆。[/Showcase][Target: CombatNPC]对目标进行感知检定。若感知低于$Attribute(""Perception_Threshold_Low""),随机移除一个意图;若低于$Attribute(""Perception_Threshold_High""),随机改变一个意图。[/Target] -[Target: PlayerHero]对目标进行感知检定。若感知低于$Attribute(""Perception_Threshold_Low""),将一张扼制卡牌放入目标抽牌堆;若低于$Attribute(""Perception_Threshold_High""),将一张干扰卡牌放入目标的抽牌堆。[/Target]",,,,, -Card_Basic_Disturbed_DisplayName,Disturbed,干扰,干擾,妨害,방해,Gián Đoạn,รบกวน +Card_Basic_Command_DisplayName,Command,命令术,,,,, +Card_Basic_Command_FunctionText,"[Showcase] Compare your Level with the target's. If the level gap is large enough, this may influence their Intent or insert a Status card into their Draw Pile. [/Showcase][Target: CombatNPC] Compare your Level with the target's. If your Level exceeds theirs by $Attribute(""LevelGap_High"") or more, randomly remove one Intent; if by $Attribute(""LevelGap_Low"") or more, randomly change one Intent. [/Target][Target: PlayerHero] Compare your Level with the target's. If your Level exceeds theirs by $Attribute(""LevelGap_High"") or more, insert a Stifled card into the target's Draw Pile; if by $Attribute(""LevelGap_Low"") or more, insert a Disrupted card into the target's Draw Pile. [/Target]","[Showcase]根据你与目标的等级差产生效果,可能影响其意图或将状态卡牌放入抽牌堆。[/Showcase][Target: CombatNPC]将你的等级与目标进行比较。若你的等级比目标高$Attribute(""LevelGap_High"")级以上,随机移除一个意图;若高$Attribute(""LevelGap_Low"")级以上,随机改变一个意图。[/Target][Target: PlayerHero]将你的等级与目标进行比较。若你的等级比目标高$Attribute(""LevelGap_High"")级以上,将一张扼制卡牌放入目标抽牌堆;若高$Attribute(""LevelGap_Low"")级以上,将一张干扰卡牌放入目标的抽牌堆。[/Target]",,,,, +Card_Basic_Disturbed_DisplayName,Disturbed,干扰,,,,, Card_Basic_Disturbed_FunctionText,"$Keyword(""Exhaust"")","$Keyword(""Exhaust"")",,,,, -Card_Basic_Stifled_DisplayName,Stifled,扼制,扼制,抑制,억제,Kìm Hãm,สกัด +Card_Basic_Stifled_DisplayName,Stifled,扼制,,,,, Card_Basic_Stifled_FunctionText,"$Keyword(""Prerequisite""), $Keyword(""Exhaust""), cost 1 Stamina.","$Keyword(""Prerequisite""),$Keyword(""Exhaust""),消耗1体力。",,,,, Card_Basic_BasicHealing_DisplayName,Basic Healing,初级治疗术,,,,, Card_Basic_BasicHealing_FunctionText,"$Keyword(""Exhaust""), heal $Attribute(""HealAmount"") health.","$Keyword(""Exhaust""), 治疗 $Attribute(""HealAmount"") 点生命值。",,,,, @@ -27,12 +26,79 @@ Card_Basic_MarkOfRadiance_FunctionText,"Add $Attribute(""Buff_MarkOfRadiance_Sta Card_Basic_BasicPurification_DisplayName,Basic Purification,初级净化术,,,,, Card_Basic_BasicPurification_FunctionText,"Apply a basic dispel to the target, removing all dispellable buffs.",对目标施加弱驱散,移除所有可被驱散的Buff。,,,,, Card_Basic_Cleave_DisplayName,Cleave,顺劈斩,,,,, -Card_Basic_Cleave_FunctionText,"$Keyword(""Slash""), Deal $Attribute(""Damage"") physics damage to all enemies.","$Keyword(""Slash""),对全体敌人造成$Attribute(""Damage"")点物理伤害。",,,,, +Card_Basic_Cleave_FunctionText,"Deal $Attribute(""Damage"") physics damage to all enemies.","对全体敌人造成$Attribute(""Damage"")点物理伤害。",,,,, Card_Basic_SearingSlash_DisplayName,Searing Slash,炽焰斩,,,,, Card_Basic_SearingSlash_FunctionText,"Deal $Attribute(""Damage_Physics"") physical damage and $Attribute(""Damage_Fire"") fire damage, then apply $Attribute(""Buff_Burn_Stack"") stacks of Burn to the target.","造成$Attribute(""Damage_Physics"")点物理伤害和$Attribute(""Damage_Fire"")点火焰伤害,并对目标施加$Attribute(""Buff_Burn_Stack"")层灼烧。",,,,, Card_Basic_SandStorm_DisplayName,Sand Storm,沙暴,,,,, -Card_Basic_SandStorm_FunctionText,"$Keyword(""Arcane""). Deal $Attribute(""Damage"") damage $Attribute(""Hit_Count"") times to all enemies, then apply Blind for $Attribute(""Buff_Blind_Count"") rounds.","$Keyword(""Arcane"")。对全体敌人造成$Attribute(""Hit_Count"")次$Attribute(""Damage"")点伤害,并施加$Attribute(""Buff_Blind_Count"")回合的致盲。",,,,, +Card_Basic_SandStorm_FunctionText,"Deal $Attribute(""Damage"") damage $Attribute(""Attack_Count"") times to all enemies, then apply Blind for $Attribute(""Buff_Blind_Count"") rounds.","对全体敌人造成$Attribute(""Attack_Count"")次$Attribute(""Damage"")点伤害,并施加$Attribute(""Buff_Blind_Count"")回合的致盲。",,,,, Card_Basic_FireBall_DisplayName,Fireball,火球术,,,,, -Card_Basic_FireBall_FunctionText,"$Keyword(""Arcane""). Deal $Attribute(""Damage_Main"") fire damage to target and apply $Attribute(""Buff_Burn_Stack_Main"") stacks of Burn. Deal $Attribute(""Damage_Others"") fire damage to all other enemies and apply $Attribute(""Buff_Burn_Stack_Others"") stacks of Burn.","$Keyword(""Arcane"")。对目标造成$Attribute(""Damage_Main"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack_Main"")层灼烧,对其余所有敌人造成$Attribute(""Damage_Others"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack_Others"")层灼烧。",,,,, +Card_Basic_FireBall_FunctionText,"Deal $Attribute(""Damage_Main"") fire damage to target and apply $Attribute(""Buff_Burn_Stack_Main"") stacks of Burn. Deal $Attribute(""Damage_Others"") fire damage to all other enemies and apply $Attribute(""Buff_Burn_Stack_Others"") stacks of Burn.","对目标造成$Attribute(""Damage_Main"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack_Main"")层灼烧,对其余所有敌人造成$Attribute(""Damage_Others"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack_Others"")层灼烧。",,,,, Card_Basic_FireBolt_DisplayName,Fire Bolt,火焰箭,,,,, -Card_Basic_FireBolt_FunctionText,"$Keyword(""Arcane"")。 Deal $Attribute(""Damage"") fire damage to target and apply $Attribute(""Buff_Burn_Stack"") stacks of Burn.","$Keyword(""Arcane"")。对目标造成$Attribute(""Damage"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack"")层灼烧。",,,,, +Card_Basic_FireBolt_FunctionText,"Deal $Attribute(""Damage"") fire damage to target and apply $Attribute(""Buff_Burn_Stack"") stacks of Burn.","对目标造成$Attribute(""Damage"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack"")层灼烧。",,,,, +Card_Basic_FireRays_DisplayName,Fire Rays,火焰射线,,,,, +Card_Basic_FireRays_FunctionText,"Choose a target 3 times (may repeat). Each time, deal $Attribute(""Damage"") fire damage and apply $Attribute(""Buff_Burn_Stack"") stacks of Burn.","选择3次目标(可重复),每次对目标造成$Attribute(""Damage"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack"")层灼烧。",,,,, +Card_Basic_FlameSpear_DisplayName,Flame Spear,炎枪术,,,,, +Card_Basic_FlameSpear_FunctionText,"Reduce target's Block by $Attribute(""Block_Reduction""), then deal $Attribute(""Damage"") fire damage and apply $Attribute(""Buff_Burn_Stack"") stacks of Burn.","削减目标$Attribute(""Block_Reduction"")点格挡,然后对目标造成$Attribute(""Damage"")点火焰伤害并附加$Attribute(""Buff_Burn_Stack"")层灼烧。",,,,, +Card_Basic_RayOfFrost_DisplayName,Ray of Frost,冰冻射线,,,,, +Card_Basic_RayOfFrost_FunctionText,"Deal $Attribute(""Damage"") ice damage to target and apply $Attribute(""Buff_Freeze_Count"") rounds of Freeze.","对目标造成$Attribute(""Damage"")点寒冰伤害并附加$Attribute(""Buff_Freeze_Count"")回合的冻结。",,,,, +Card_Basic_Blizzard_DisplayName,Blizzard,暴风雪,,,,, +Card_Basic_Blizzard_FunctionText,"Deal $Attribute(""Damage"") ice damage to all enemies and apply Freeze $Attribute(""Freeze_Count_Enemy"") rounds. Also apply Freeze $Attribute(""Freeze_Count_Ally"") rounds to all allies.","对全体敌人造成$Attribute(""Damage"")点冰霜伤害并附加$Attribute(""Freeze_Count_Enemy"")回合的冻结,同时对我方全体施加$Attribute(""Freeze_Count_Ally"")回合的冻结。",,,,, +Card_Basic_Icebound_DisplayName,Icebound,冰封术,,,,, +Card_Basic_Icebound_FunctionText,"Apply Freeze for $Attribute(""Buff_Freeze_Count"") rounds and Weak for $Attribute(""Buff_Weak_Count"") rounds to target.","对目标施加$Attribute(""Buff_Freeze_Count"")回合的冻结和$Attribute(""Buff_Weak_Count"")回合的虚弱。",,,,, +Card_Basic_Bludgeon_DisplayName,Bludgeon,沉重一击,,,,, +Card_Basic_Bludgeon_FunctionText,"Deal $Attribute(""Damage"") physical damage. Apply $Attribute(""Buff_Heavy_Stack"") stack of Heavy to self.","造成$Attribute(""Damage"")点物理伤害,对自身施加$Attribute(""Buff_Heavy_Stack"")层沉重。",,,,, +Card_Basic_Meditation_DisplayName,Meditation,冥想,,,,, +Card_Basic_Meditation_FunctionText,"Gain $Attribute(""Buff_Resonance_Stack"") stacks of Resonance.","获得$Attribute(""Buff_Resonance_Stack"")层共鸣。",,,,, +Card_Basic_WarmUp_DisplayName,Warm Up,热身,,,,, +Card_Basic_WarmUp_FunctionText,"Gain $Attribute(""Buff_Strength_Stack"") stacks of Strength.","获得$Attribute(""Buff_Strength_Stack"")层力量。",,,,, +Card_Basic_ActionSurge_DisplayName,Action Surge,动作如潮,,,,, +Card_Basic_ActionSurge_FunctionText,"Recover $Attribute(""Stamina_Recover"") Stamina.","恢复$Attribute(""Stamina_Recover"")点体力。",,,,, +Card_Basic_ArcaneRecovery_DisplayName,Arcane Recovery,奥术复原,,,,, +Card_Basic_ArcaneRecovery_FunctionText,"Recover $Attribute(""Mana_Recover"") Mana.","恢复$Attribute(""Mana_Recover"")点法力。",,,,, +Card_Basic_Evasion_DisplayName,Evasion,闪躲,,,,, +Card_Basic_Evasion_FunctionText,"Gain $Attribute(""Dodge"") dodge.","获得$Attribute(""Dodge"")点闪避。",,,,, +Card_Basic_Recollection_DisplayName,Recollection,追忆,,,,, +Card_Basic_Recollection_FunctionText,"Choose $Attribute(""Draw_Card_Count"") card from your Discard Pile and add it to your hand.","从弃牌堆中选择$Attribute(""Draw_Card_Count"")张牌加入手牌。",,,,, +Card_Basic_Recollection_SelectCustomCards_Title,"Select $Attribute(""Draw_Card_Amount"") non-status or non-curse card.","选择$Attribute(""Draw_Card_Amount"")张非状态,非诅咒卡牌。",,,,, +Card_Basic_ThinkingCountermeasures_DisplayName,Thinking Countermeasures,思考对策,,,,, +Card_Basic_ThinkingCountermeasures_FunctionText,"Draw $Attribute(""Draw_Card_Count"") cards.","抽$Attribute(""Draw_Card_Count"")张牌。",,,,, +Card_Basic_Frostbite_DisplayName,Frostbite,冻伤,,,,, +Card_Basic_Frostbite_FunctionText," Deal $Attribute(""Damage"") ice damage. Apply $Attribute(""Buff_Freeze_Count"") stacks of Freeze and $Attribute(""Buff_Vulnerable_Count"") stacks of Vulnerable to the target.","造成$Attribute(""Damage"")点冰属性伤害。对目标施加$Attribute(""Buff_Freeze_Count"")层冻结和$Attribute(""Buff_Vulnerable_Count"")层易伤。",,,,, +Card_Basic_Sanctuary_DisplayName,Sanctuary,庇护术,,,,, +Card_Basic_Sanctuary_FunctionText,"$Keyword(""Reuseable""). $Keyword(""BasicDispel"") an ally or self. Every time played will add 1 mana cost.","$Keyword(""Reuseable"")。$Keyword(""BasicDispel"")自身或一名友方目标。每次使用后增加1点魔力消耗。",,,,, +Card_Basic_Laceration_DisplayName,Laceration,裂伤,,,,, +Card_Basic_Laceration_FunctionText,"Deal $Attribute(""Damage"") physical damage. Apply $Attribute(""Buff_Vulnerable_Count"") stacks of Vulnerable. Then apply Bleed equal to the target's Vulnerable count.","造成$Attribute(""Damage"")点物理伤害。施加$Attribute(""Buff_Vulnerable_Count"")层易伤,随后对目标施加等同于其易伤层数的流血。",,,,, +Card_Basic_Anticipation_DisplayName,Anticipation,预判,,,,, +Card_Basic_Anticipation_FunctionText,"Gain $Attribute(""Dodge"") Dodge. If no enemy has acted before you this round, gain an additional $Attribute(""Bonus_Dodge"") Dodge.","获得$Attribute(""Dodge"")点闪避值。若本回合内没有敌人在你之前行动,则额外获得$Attribute(""Bonus_Dodge"")的闪避值。",,,,, +Card_Basic_EyePoking_DisplayName,Eye Poking,戳眼,,,,, +Card_Basic_EyePoking_FunctionText,"Deal $Attribute(""Damage"") physical damage. Apply $Attribute(""Buff_Blind_Count"") stacks of Blind to the target.","造成$Attribute(""Damage"")点物理伤害。对目标施加$Attribute(""Buff_Blind_Count"")层目盲。",,,,, +Card_Basic_Cutting_DisplayName,Cutting,切割,,,,, +Card_Basic_Cutting_FunctionText,"Deal $Attribute(""Damage"") physical damage. Apply $Attribute(""Buff_Bleed_Stack"") stacks of Bleed to the target.","造成$Attribute(""Damage"")点物理伤害。对目标施加$Attribute(""Buff_Bleed_Stack"")层流血。",,,,, +Card_Basic_Stoneskin_DisplayName,Stoneskin,石肤术,,,,, +Card_Basic_Stoneskin_FunctionText,"Gain $Attribute(""Buff_Withstand_Stack"") stacks of Withstand.","获得$Attribute(""Buff_Withstand_Stack"")层抵御。",,,,, +Card_Basic_Tactic_DisplayName,Tactic,战术,,,,, +Card_Basic_Tactic_FunctionText,"Discard $Attribute(""Discard_Card_Count"") cards, draw $Attribute(""Draw_Card_Count"") cards.","丢弃$Attribute(""Discard_Card_Count"")张牌,抽$Attribute(""Draw_Card_Count"")张牌。",,,,, +Card_Basic_ArcaneMissiles_DisplayName,Arcane Missiles,奥术飞弹,,,,, +Card_Basic_ArcaneMissiles_FunctionText,"Deal $Attribute(""Damage"") damage for $Attribute(""Attack_Count"") times.","造成$Attribute(""Damage"")点伤害 $Attribute(""Attack_Count"")次。",,,,, +Card_Basic_Cover_DisplayName,Cover,援护,,,,, +Card_Basic_Cover_FunctionText,"Gain $Attribute(""Block"") Block. +Protect 1 allies for $Keyword(""Buff_Protecting_Count"") rounds.","获得$Attribute(""Block"")点格挡。守护1名队友$Attribute(""Buff_Protecting_Count"")回合。",,,,, +Card_Basic_PreciseShot_DisplayName,Precise Shot,精准射击,,,,, +Card_Basic_PreciseShot_FunctionText,"$Keyword(""GuaranteedHit""), deal $Attribute(""Damage"") physics damage.","$Keyword(""GuaranteedHit""),造成 $Attribute(""Damage"")点物理伤害。",,,,, +Card_Basic_PowerfulShot_DisplayName,Powerful Shot,强力射击,,,,, +Card_Basic_PowerfulShot_FunctionText,"$Keyword(""Penetration""), deal $Attribute(""Damage"") physics damage.","$Keyword(""Penetration""),造成 $Attribute(""Damage"")点物理伤害。",,,,, +Card_Basic_FrenziedClawSlashes_DisplayName,Frenzied Claw Slashes,狂乱爪击,,,,, +Card_Basic_FrenziedClawSlashes_FunctionText,"Hit random enemies $Attribute(""Target_Count"") times (may repeat). Each hit deals $Attribute(""Damage"") physical damage and applies $Attribute(""Buff_Bleed_Stack"") stacks of Bleed.","随机攻击敌人$Attribute(""Target_Count"")次(可重复),每次造成$Attribute(""Damage"")点物理伤害并施加$Attribute(""Buff_Bleed_Stack"")层流血。",,,,, +Card_Basic_VenomSpray_DisplayName,Venom Spray,猛毒喷射,,,,, +Card_Basic_VenomSpray_FunctionText,"Apply $Attribute(""Buff_Corrosion_Stack"") stacks of Corrosion to the target and $Attribute(""Extra_Target_Count"") other random enemy.","对目标和另$Attribute(""Extra_Target_Count"")个随机敌人各施加$Attribute(""Buff_Corrosion_Stack"")层腐蚀。",,,,, +Card_Basic_AcidArrow_DisplayName,Acid Arrow,强酸箭矢,,,,, +Card_Basic_AcidArrow_FunctionText,"Reduce target's block by $Attribute(""Block_Reduction""). Deal $Attribute(""Damage"") physics damage and apply $Attribute(""Buff_Corrosion_Stack"") stacks of Corrosion.","减少目标$Attribute(""Block_Reduction"")点格挡,造成$Attribute(""Damage"")点物理伤害并施加$Attribute(""Buff_Corrosion_Stack"")层腐蚀。",,,,, +Card_Basic_RainOfHealing_DisplayName,Rain of Healing,治疗之雨,,,,, +Card_Basic_RainOfHealing_FunctionText,"$Keyword(""Concentration""). At the start of each round, restore $Attribute(""Heal_Amount"") health to all allies for $Attribute(""Buff_PrayingForRain_Count"") rounds.","$Keyword(""Concentration"")。 每回合开始时为全体友方回复$Attribute(""Heal_Amount"")点生命,持续$Attribute(""Buff_PrayingForRain_Count"")回合。",,,,, +Card_Basic_ShieldBash_DisplayName,Shield Bask,盾击,,,,, +Card_Basic_ShieldBash_FunctionText,"Deal $Attribute(""Damage"") physics damage. Gain $Attribute(""Block"") block.","造成$Attribute(""Damage"")点物理伤害。获得 $Attribute(""Block"") 点格挡.",,,,, +Card_Basic_DualStrike_DisplayName,Dual Strike,双重打击,,,,, +Card_Basic_DualStrike_FunctionText,"Deal $Attribute(""Damage"") physics damage twice.","造成$Attribute(""Damage"")点物理伤害两次。",,,,, +Card_Basic_CinderStrike_DisplayName,Cinder Strike,余烬打击,,,,, +Card_Basic_CinderStrike_FunctionText,"Keyword(""Exhaust"") a card from your hand. Then deal $Attribute(""Damage"") fire damage and apply $Attribute(""Buff_Burn_Stack"") stacks of Burn. If no other cards are in hand, attack will be skipped.","消耗一张手牌后,对目标造成$Attribute(""Damage"")点火焰伤害并施加$Attribute(""Buff_Burn_Stack"")层灼烧。若无其他手牌,不会造成伤害和灼烧。",,,,, +Card_Basic_CinderStrike_SelectHandCards_Title,Select a card to exhaust,选择一张手牌消耗,,,,, diff --git a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv index dc4fab75..8dd29c9e 100644 --- a/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv +++ b/Assets/Mods/Basic/Localization/Basic/Localization_Basic_GeneralKeywords.csv @@ -1,16 +1,4 @@ Key,English,Simplified Chinese,Traditional Chinese,Japanese,Korean,Vietnamese,Thai -Keyword_Strike,Strike,打击,打擊,ストライク,타격,Đánh,โจมตี -Keyword_Strike_Description,This card's base attack attributes are adjusted by player's strength.,这张牌的基础攻击数值受到打出者的力量调整值影响。,這張牌的基礎攻擊數值受到打出者的力量調整值影響。,このカードの基本攻撃値は、使用者の筋力補正値の影響を受ける。,이 카드의 기본 공격력은 사용자의 힘 수치에 따라 조정됩니다.,Sát thương cơ bản của lá bài này được điều chỉnh bởi Sức Mạnh của người chơi.,ค่าพลังโจมตีพื้นฐานของการ์ดใบนี้จะถูกปรับตามค่า Strength ของผู้เล่น. -Keyword_Prick,Prick,突刺,突刺,刺突,찌르기,Đâm,แทง -Keyword_Prick_Description,This card's base attack attributes are adjusted by player's agility.,这张牌的基础攻击数值受到打出者的敏捷调整值影响。,這張牌的基礎攻擊數值受到打出者的敏捷調整值影響。,このカードの基本攻撃値は、使用者の敏捷補正値の影響を受ける。,이 카드의 기본 공격력은 사용자의 민첩 수치에 따라 조정됩니다.,Sát thương cơ bản của lá bài này được điều chỉnh bởi Nhanh Nhẹn của người chơi.,ค่าพลังโจมตีพื้นฐานของการ์ดใบนี้จะถูกปรับตามค่า Agility ของผู้เล่น. -Keyword_Slash,Slash,斩击,斬擊,斬撃,베기,Chém,ฟัน -Keyword_Slash_Description,This card's base attack attributes are adjusted by player's average value of strength and agility.,这张牌的基础攻击数值受到打出者的力量和敏捷的平均调整值影响。,這張牌的基礎攻擊數值受到打出者的力量和敏捷的平均調整值影響。,このカードの基本攻撃値は、使用者の筋力と敏捷の平均補正値の影響を受ける。,이 카드의 기본 공격력은 사용자의 힘과 민첩 평균 수치에 따라 조정됩니다.,Sát thương cơ bản của lá bài này được điều chỉnh bởi trung bình cộng Sức Mạnh và Nhanh Nhẹn của người chơi.,ค่าพลังโจมตีพื้นฐานของการ์ดใบนี้จะถูกปรับตามค่าเฉลี่ยของ Strength และ Agility ของผู้เล่น. -Keyword_Arcane,Arcane,奥术,奧術,アーケイン,비전,Ma Pháp,อาร์เคน -Keyword_Arcane_Description,This card's base attributes are adjusted by player's intelligence.,这张牌的基础数值受到打出者的智力调整值影响。,這張牌的基礎數值受到打出者的智力調整值影響。,このカードの基本値は、使用者の知力補正値の影響を受ける。,이 카드의 기본 수치는 사용자의 지능 수치에 따라 조정됩니다.,Chỉ số cơ bản của lá bài này được điều chỉnh bởi Trí Tuệ của người chơi.,ค่าพื้นฐานของการ์ดใบนี้จะถูกปรับตามค่า Intelligence ของผู้เล่น. -Keyword_Sorcery,Sorcery,契术,契術,ソーサリー,마법,Tà Thuật,เวทมนตร์ -Keyword_Sorcery_Description,This card's base attributes are adjusted by player's charisma.,这张牌的基础数值受到打出者的魅力调整值影响。,這張牌的基礎數值受到打出者的魅力調整值影響。,このカードの基本値は、使用者の魅力補正値の影響を受ける。,이 카드의 기본 수치는 사용자의 매력 수치에 따라 조정됩니다.,Chỉ số cơ bản của lá bài này được điều chỉnh bởi Hấp Dẫn của người chơi.,ค่าพื้นฐานของการ์ดใบนี้จะถูกปรับตามค่า Charisma ของผู้เล่น. -Keyword_Prediction,Prediction,预测,預測,予見,예측,Tiên Đoán,ทำนาย -Keyword_Prediction_Description,This card's base attributes are adjusted by player's perception.,这张牌的基础数值受到打出者的感知调整值影响。,這張牌的基礎數值受到打出者的感知調整值影響。,このカードの基本値は、使用者の感知補正値の影響を受ける。,이 카드의 기본 수치는 사용자의 감지 수치에 따라 조정됩니다.,Chỉ số cơ bản của lá bài này được điều chỉnh bởi Nhận Thức của người chơi.,ค่าพื้นฐานของการ์ดใบนี้จะถูกปรับตามค่า Perception ของผู้เล่น. Keyword_Exhaust,Exhaust,消耗,消耗,廃棄,소멸,Tiêu Hao,สลาย Keyword_Exhaust_Description,"After you play this card, it goes into the exhaust pile.",你打出这张牌之后,它进入消耗堆。,你打出這張牌之後,它進入消耗堆。,このカードをプレイした後、廃棄パイルに置かれる。,이 카드를 사용하면 소멸 카드 더미로 이동합니다.,"Sau khi đánh lá bài này, nó sẽ vào xấp bài tiêu hao.","หลังจากคุณเล่นการ์ดใบนี้, มันจะไปยังกองสลาย." Keyword_Instant,Instant,瞬发,瞬發,インスタント,즉발,Tức Thì,ทันที @@ -45,6 +33,9 @@ Keyword_Magic,Magic,魔法,,,,, Keyword_Magic_Description,This card is magic.,这是魔法类卡牌。,,,,, Keyword_Prerequisite,Prerequisite,先决,先決,前提,선결,Tiên Quyết,เงื่อนไขเบื้องต้น Keyword_Prerequisite,Prerequisite,先决,先決,前提条件,선결,Tiên Quyết,เงื่อนไขเบื้องต้น -Keyword_Prerequisite_Description,"You must play this card before playing any other card.","你必须先打出这张牌,才能打出其他牌。","你必須先打出這張牌,才能打出其他牌。","他のカードをプレイする前に、このカードをプレイしなければならない。","다른 카드를 사용하기 전에 이 카드를 먼저 사용해야 합니다.","Bạn phải đánh lá bài này trước khi đánh bất kỳ lá bài nào khác.","คุณต้องเล่นการ์ดใบนี้ก่อนจึงจะเล่นการ์ดอื่นได้." +Keyword_Prerequisite_Description,You must play this card before playing any other card.,你必须先打出这张牌,才能打出其他牌。,你必須先打出這張牌,才能打出其他牌。,他のカードをプレイする前に、このカードをプレイしなければならない。,다른 카드를 사용하기 전에 이 카드를 먼저 사용해야 합니다.,Bạn phải đánh lá bài này trước khi đánh bất kỳ lá bài nào khác.,คุณต้องเล่นการ์ดใบนี้ก่อนจึงจะเล่นการ์ดอื่นได้. Keyword_Prerequisite_Warning,Must play prerequisite card first!,必须先打出先决卡牌!,必須先打出先決卡牌!,前提条件のカードを先にプレイしてください!,선결 카드를 먼저 사용해야 합니다!,Phải đánh lá bài tiên quyết trước!,ต้องเล่นการ์ดเงื่อนไขเบื้องต้นก่อน! - +Keyword_BasicDispel,Basic Dispel,弱驱散,,,,, +Keyword_BasicDispel_Description,Remove dispellable negative buffs on Ally or positive buffs on Enemy.,如果允许,则移除友方的负面效果,或者敌方的正面效果。,,,,, +Keyword_StrongDispel,Strong Dispel,强驱散,,,,, +Keyword_StrongDispel_Description,Remove most dispellable negative buffs on Ally or positive buffs on Enemy.,移除友方的负面效果,或者敌方的正面效果。大多数效果都可被移除,,,,, diff --git a/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv b/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv index f4127ee3..40b4abe4 100644 --- a/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv +++ b/Assets/Mods/Basic/Localization/Player/Localization_Basic_ClericCards.csv @@ -6,9 +6,8 @@ Card_Basic_PrayerOfHealing_FunctionText,"$Keyword(""Exhaustible""): $Attribute(" Heal all allies for $Attribute(""Heal"") HP.","$Keyword(""Exhaustible""): $Attribute(""ExhaustibleCount"")\n治疗所有友方目标$Attribute(""Heal"")点生命值。","$Keyword(""Exhaustible""): $Attribute(""ExhaustibleCount"")\n治療所有友方目標$Attribute(""Heal"")點生命值。","$Keyword(""Exhaustible""): $Attribute(""ExhaustibleCount"")\n味方全員のHPを$Attribute(""Heal"")点回復する。","$Keyword(""Exhaustible""): $Attribute(""ExhaustibleCount"")\n모든 아군을 $Attribute(""Heal"")만큼 치유합니다.","$Keyword(""Exhaustible""): $Attribute(""ExhaustibleCount"")\nHồi $Attribute(""Heal"") máu cho tất cả đồng minh.","$Keyword(""Exhaustible""): $Attribute(""ExhaustibleCount"")\nรักษาเพื่อนร่วมทีมทั้งหมด $Attribute(""Heal"") หน่วย." Card_Basic_BlessedHolyWater_DisplayName,Blessed Holy Water,祝福圣水,祝福聖水,祝福された聖水,축복받은 성수,Nước Thánh Ban Phước,น้ำมนต์ศักดิ์สิทธิ์ Card_Basic_BlessedHolyWater_FunctionText,"Add 1 ""Holy Water"" to the shared deck.",将1张“圣水”加入公共牌组。,將1張「聖水」加入公共牌組。,「聖水」カード1枚を共通デッキに加える。,'성수' 카드 1장을 공용 덱에 추가합니다.,"Thêm 1 lá ""Nước Thánh"" vào bộ bài chung.","เพิ่มการ์ด ""น้ำมนต์"" 1 ใบลงในกองการ์ดรวม." -Card_Basic_Sanctuary_DisplayName,Sanctuary,庇护术,庇護術,サンクチュアリ,성역,Thánh Địa,สถานที่ศักดิ์สิทธิ์ -Card_Basic_Sanctuary_FunctionText,"$Keyword(""Purify"") an ally. -$Keyword(""Reuseable"").","$Keyword(""Purify"")一名友方目标。\n$Keyword(""Reuseable"")。","$Keyword(""Purify"")一名友方目標。\n$Keyword(""Reuseable"")。","味方1体を$Keyword(""Purify"")する。\n$Keyword(""Reuseable"")。","아군 1명을 $Keyword(""Purify"").\n$Keyword(""Reuseable"").","$Keyword(""Purify"") 1 đồng minh.\n$Keyword(""Reuseable"").","$Keyword(""Purify"") เพื่อนร่วมทีม 1 คน.\n$Keyword(""Reuseable"")." +,,,,,,, +,,,,,,, Card_Basic_ShieldOfDevotion_DisplayName,Shield Of Devotion,虔诚护盾,虔誠護盾,信仰の盾,경건의 방패,Khiên Sùng Kính,โล่แห่งศรัทธา Card_Basic_ShieldOfDevotion_FunctionText,"$Keyword(""Blessing""). Gain $Attribute(""BuffStack"") stacks of $Keyword(""Basic_Withstand"").","$Keyword(""Blessing"")。\n获得$Attribute(""BuffStack"")层$Keyword(""Basic_Withstand"")。","$Keyword(""Blessing"")。\n獲得$Attribute(""BuffStack"")層$Keyword(""Basic_Withstand"")。","$Keyword(""Blessing"")。\n$Attribute(""BuffStack"")層の$Keyword(""Basic_Withstand"")を得る。","$Keyword(""Blessing"")。\n$Attribute(""BuffStack"") 층의 $Keyword(""Basic_Withstand"") 효과를 얻습니다.","$Keyword(""Blessing"").\nNhận $Attribute(""BuffStack"") tầng $Keyword(""Basic_Withstand"").","$Keyword(""Blessing"").\nได้รับ $Keyword(""Basic_Withstand"") จำนวน $Attribute(""BuffStack"") ชั้น." diff --git a/Assets/Mods/Basic/Localization/Player/Localization_Basic_MageCards.csv b/Assets/Mods/Basic/Localization/Player/Localization_Basic_MageCards.csv index b13436c4..e656fc96 100644 --- a/Assets/Mods/Basic/Localization/Player/Localization_Basic_MageCards.csv +++ b/Assets/Mods/Basic/Localization/Player/Localization_Basic_MageCards.csv @@ -9,8 +9,8 @@ Card_Basic_FlameInscription_FunctionText,"Whenever you play a Spell Attack, appl Card_Basic_ConcentratedSpellcasting_DisplayName,Concentrated Spellcasting,集中施法,集中施法,集中詠唱,집중 시전,Tập Trung Niệm Chú,ร่ายเวทย์อย่างจดจ่อ Card_Basic_ConcentratedSpellcasting_FunctionText,"$Keyword(""Concentrate""). Gain $Attribute(""BuffStack_ConcentratedSpellcasting"") $Keyword(""Basic_ConcentratedSpellcasting"").","$Keyword(""Concentrate"")。\n获得$Attribute(""BuffStack_ConcentratedSpellcasting"")点$Keyword(""Basic_ConcentratedSpellcasting"")。","$Keyword(""Concentrate"")。\n獲得$Attribute(""BuffStack_ConcentratedSpellcasting"")點$Keyword(""Basic_ConcentratedSpellcasting"")。","$Keyword(""Concentrate"")。\n$Attribute(""BuffStack_ConcentratedSpellcasting"")点の$Keyword(""Basic_ConcentratedSpellcasting"")を得る。","$Keyword(""Concentrate"")。\n$Attribute(""BuffStack_ConcentratedSpellcasting"") 포인트의 $Keyword(""Basic_ConcentratedSpellcasting"") 효과를 얻습니다.","$Keyword(""Concentrate"").\nNhận $Attribute(""BuffStack_ConcentratedSpellcasting"") điểm $Keyword(""Basic_ConcentratedSpellcasting"").","$Keyword(""Concentrate"").\nได้รับ $Keyword(""Basic_ConcentratedSpellcasting"") จำนวน $Attribute(""BuffStack_ConcentratedSpellcasting"") แต้ม." -Card_Basic_ArcaneMissiles_DisplayName,Arcane Missiles,奥术飞弹,奧術飛彈,アーケインミサイル,비전 화살,Tên Lửa Ma Pháp,ศรเวทมนตร์ -Card_Basic_ArcaneMissiles_FunctionText,"Deal $Attribute(""Damage"") damage for $Attribute(""AttackCount"") times.","造成$Attribute(""Damage"")点伤害 $Attribute(""AttackCount"")次。","造成$Attribute(""Damage"")點傷害 $Attribute(""AttackCount"")次。","$Attribute(""Damage"")点のダメージを$Attribute(""AttackCount"")回与える。","$Attribute(""Damage"") 피해를 $Attribute(""AttackCount"")번 줍니다。","Gây $Attribute(""Damage"") sát thương $Attribute(""AttackCount"") lần.","สร้างความเสียหาย $Attribute(""Damage"") หน่วย $Attribute(""AttackCount"") ครั้ง." +,,,,,,, +,,,,,,, ,,,,,,, ,,,,,,, Card_Basic_Scorch_DisplayName,Scorch,烧焦,燒焦,焦熱,그슬리기,Thiêu Rụi,แผดเผา diff --git a/Assets/Mods/Basic/Rules/Basic_AttributeRulesCollection.cs b/Assets/Mods/Basic/Rules/Basic_AttributeRulesCollection.cs index ef05212d..1aae24cc 100644 --- a/Assets/Mods/Basic/Rules/Basic_AttributeRulesCollection.cs +++ b/Assets/Mods/Basic/Rules/Basic_AttributeRulesCollection.cs @@ -1,50 +1,8 @@ -using System.Collections.Generic; using Continentis.MainGame.Rules; -using SLSFramework.General; -using UnityEngine; namespace Continentis.Mods.Basic.Rules { public class Basic_AttributeRulesCollection : AttributeRulesCollectionBase { - public override void ApplyRules_ConvertCoreIntoGeneral(Dictionary core, Dictionary general) - { - if (core.TryGetValue("DisableConversion", out float value) && value > 0) //如果禁用属性转换,则直接返回 - { - return; - } - - float level = core["Level"]; - //general["MaximumHealth"] += Mathf.FloorToInt(level * 3); - //general["MaximumMana"] += Mathf.FloorToInt(level / 2); - - float strengthOffset = core["Strength"] - 12; - general["MaximumStamina"] += Mathf.FloorToInt(strengthOffset / 4); //最大行动点加成 - general["OffsetFromStrength"] += Mathf.FloorToInt(strengthOffset / 3); //来自核心属性(力量)的调整值 - - float agilityOffset = core["Agility"] - 12; - general["Speed"] += Mathf.FloorToInt(agilityOffset); //速度加成 - general["OffsetFromAgility"] += Mathf.FloorToInt(agilityOffset / 3); //来自核心属性(敏捷)的调整值 - - float intelligenceOffset = core["Intelligence"] - 12; - general["DeckCapacity"] += intelligenceOffset; - general["OffsetFromIntelligence"] += Mathf.FloorToInt(intelligenceOffset / 3); //来自核心属性(智力)的调整值 - general["ManaRecoverPerAction"] += Mathf.FloorToInt(intelligenceOffset / 6); //每回合恢复魔法值 - - float physiqueOffset = core["Physique"] - 12; - general["MaximumHealth"] += core["Physique"] * 6; //最大生命值加成 - Debug.Log("Physique Offset: " + physiqueOffset); - general["StaminaRecoverPerAction"] += Mathf.FloorToInt(physiqueOffset / 6); //每回合恢复行动点 - general["OffsetFromPhysique"] += Mathf.FloorToInt(physiqueOffset / 3); //来自核心属性(体质)的调整值 - - float perceptionOffset = core["Perception"] - 12; - general["DrawCardAmountPerAction"] += Mathf.FloorToInt(perceptionOffset / 6); //来自核心属性(感知)的每回合额外抽牌数量 - // TODO: 临时的测试加成已被移除,由角色默认属性或装备决定初始抽牌数 - general["Awareness"] += perceptionOffset; //增加感知 - general["OffsetFromPerception"] += Mathf.FloorToInt(perceptionOffset / 3); //来自核心属性(感知)的调整值 - - float charismaOffset = core["Charisma"] - 12; - general["OffsetFromCharisma"] += Mathf.FloorToInt(charismaOffset / 3); //来自核心属性(魅力)的调整值 - } } } \ No newline at end of file diff --git a/Assets/Resources/EditorBaseCollection.asset b/Assets/Resources/EditorBaseCollection.asset index ccccd1a6..86c2f466 100644 --- a/Assets/Resources/EditorBaseCollection.asset +++ b/Assets/Resources/EditorBaseCollection.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd2b6adcc7aa7dbb7909ae1ee866f5bc151c7116c075f40154674a2e6c9d7b1e -size 8389 +oid sha256:e24224866fbdb2c00c338a76d30c251df6ef203d7a278e84b900384a36e9a1c5 +size 7211 diff --git a/Assets/Scripts/MainGame/Base/EditorBaseCollection.cs b/Assets/Scripts/MainGame/Base/EditorBaseCollection.cs index 35424c5d..67946359 100644 --- a/Assets/Scripts/MainGame/Base/EditorBaseCollection.cs +++ b/Assets/Scripts/MainGame/Base/EditorBaseCollection.cs @@ -15,11 +15,7 @@ namespace Continentis.MainGame.Base public partial class EditorBaseCollection : BaseCollection { [Title("角色")] - [Tooltip("核心属性\nKey 为词条 ID(如 Strength),Value 为词条中文描述(如 力量)")] - [SerializedDictionarySettings("Key", "Description")] - public SerializedDictionary characterCoreAttributes = new SerializedDictionary(); - - [Tooltip("通用与状态属性\nKey 为词条 ID(如 Health),Value 为词条中文描述(如 角色生命值)")] + [Tooltip("角色属性\nKey 为词条 ID(如 Health),Value 为词条中文描述(如 角色生命值)")] [SerializedDictionarySettings("Key", "Description")] public SerializedDictionary characterGeneralAttributes = new SerializedDictionary(); @@ -81,15 +77,6 @@ namespace Continentis.MainGame.Base foreach (var coll in GetAllCollections()) { - if (coll.characterCoreAttributes != null) - { - allItems.AddRange(coll.characterCoreAttributes.Select(kvp => new ValueDropdownItem - { - Text = $"{kvp.Key} ({kvp.Value})", - Value = kvp.Key - })); - } - if (coll.characterGeneralAttributes != null) { allItems.AddRange(coll.characterGeneralAttributes.Select(kvp => new ValueDropdownItem @@ -176,24 +163,8 @@ namespace Continentis.MainGame.Base sb.AppendLine($" public static class {className}"); sb.AppendLine(" {"); - // 生成核心属性 - sb.AppendLine(" // ── 核心属性 (Core) ──────────────────────────────────"); - if (characterCoreAttributes != null) - { - foreach (var kvp in characterCoreAttributes) - { - if (string.IsNullOrWhiteSpace(kvp.Key)) continue; - if (!string.IsNullOrWhiteSpace(kvp.Value)) - { - sb.AppendLine($" /// {kvp.Value} "); - } - sb.AppendLine($" public const string {kvp.Key} = \"{kvp.Key}\";"); - sb.AppendLine(); - } - } - - // 生成通用属性 - sb.AppendLine(" // ── 通用属性 (General) ───────────────────────────────"); + // 生成属性 + sb.AppendLine(" // ── 属性 (General) ───────────────────────────────"); if (characterGeneralAttributes != null) { foreach (var kvp in characterGeneralAttributes) diff --git a/Assets/Scripts/MainGame/Base/GameAttributes.cs b/Assets/Scripts/MainGame/Base/GameAttributes.cs index 99cff763..81353e6c 100644 --- a/Assets/Scripts/MainGame/Base/GameAttributes.cs +++ b/Assets/Scripts/MainGame/Base/GameAttributes.cs @@ -12,77 +12,4 @@ namespace Continentis.MainGame public class GameAttributeCollectionAttribute : Attribute { } - - /// - /// 游戏通用属性名称常量。 - /// 请始终使用此类中的常量而非裸字符串访问属性,以避免 typo 错误。 - /// - [GameAttributeCollection] - public static class GameAttributes - { - // ── 生命值 ────────────────────────────────── - public const string Health = "Health"; - public const string MaximumHealth = "MaximumHealth"; - - // ── 资源 ──────────────────────────────────── - public const string Stamina = "Stamina"; - public const string MaximumStamina = "MaximumStamina"; - public const string StaminaRecoverPerAction = "StaminaRecoverPerAction"; - public const string Mana = "Mana"; - public const string MaximumMana = "MaximumMana"; - public const string ManaRecoverPerAction = "ManaRecoverPerAction"; - - // ── 防御 ──────────────────────────────────── - public const string Block = "Block"; - public const string TemporaryHealth = "TemporaryHealth"; - public const string Dodge = "Dodge"; - - public const string BlockGainOffset = "BlockGainOffset"; - public const string BlockGainMultiplier = "BlockGainMultiplier"; - public const string DodgeGainOffset = "DodgeGainOffset"; - public const string DodgeGainMultiplier = "DodgeGainMultiplier"; - public const string TemporaryHealthGainOffset = "TemporaryHealthGainOffset"; - public const string TemporaryHealthGainMultiplier = "TemporaryHealthGainMultiplier"; - - public const string KeepBlockOnActionStart = "KeepBlockOnActionStart"; - public const string KeepDodgeOnActionStart = "KeepDodgeOnActionStart"; - - // ── 速度与行动 ────────────────────────────── - public const string Speed = "Speed"; - public const string DrawCardAmountPerAction = "DrawCardAmountPerAction"; - public const string DeckCapacity = "DeckCapacity"; - - // ── 伤害调整(通用)────────────────────────── - public const string PhysicsDamageDealtOffset = "PhysicsDamageDealtOffset"; - public const string MagicDamageDealtOffset = "MagicDamageDealtOffset"; - public const string FinalDamageDealtMultiplier = "FinalDamageDealtMultiplier"; - public const string FinalDamageGainMultiplier = "FinalDamageGainMultiplier"; - public const string MagicDamageDealtMultiplier = "MagicDamageDealtMultiplier"; - public const string MagicDamageGainMultiplier = "MagicDamageGainMultiplier"; - - // ── 核心属性(角色创建时)────────────────────── - public const string Strength = "Strength"; - public const string Agility = "Agility"; - public const string Intelligence = "Intelligence"; - public const string Physique = "Physique"; - public const string Perception = "Perception"; - public const string Charisma = "Charisma"; - public const string Level = "Level"; - - // ── 感知与闪避检测 ────────────────────────── - public const string Awareness = "Awareness"; - public const string DodgeCheckStartDamageMultiplier = "DodgeCheckStartDamageMultiplier"; - -#if UNITY_EDITOR - /// - /// 提供给 Odin Inspector [ValueDropdown] 使用的方法。 - /// 从所有 Mod 的 EditorBaseCollection 资产中聚合角色属性(Core + General), - /// 覆盖旧的反射扫描方式,天然支持多 Mod 叠加,无需关心程序集加载顺序。 - /// - public static IEnumerable> GetAllAvailableAttributes() - { - return Continentis.MainGame.Base.EditorBaseCollection.GetCharacterAttributesDropdown(null); - } -#endif - } } diff --git a/Assets/Scripts/MainGame/Base/Interpreters/CardTextInterpreter.cs b/Assets/Scripts/MainGame/Base/Interpreters/CardTextInterpreter.cs index d5c1fd0f..5c48ea8b 100644 --- a/Assets/Scripts/MainGame/Base/Interpreters/CardTextInterpreter.cs +++ b/Assets/Scripts/MainGame/Base/Interpreters/CardTextInterpreter.cs @@ -54,9 +54,9 @@ namespace Continentis.MainGame { private static string GetAttribute(CardInstance card, string attributeName, bool higherIsBetter, bool inPercent) { - string displayName = "Display" + attributeName; - string baseName = "Base" + attributeName; - string baseOffsetName = "Base" + attributeName + "Offset"; + string displayName = "Display_" + attributeName; + string baseName = "Base_" + attributeName; + string baseOffsetName = "Base_" + attributeName + "_Offset"; if (!inPercent) { @@ -74,7 +74,7 @@ namespace Continentis.MainGame private static string GetAttribute(CardInstance card, string attributeName, bool inPercent) { - string displayName = "Display" + attributeName; + string displayName = "Display_" + attributeName; int displayValue = card.GetAttribute(displayName); return DynamicTextInterpreter.GetValue(displayValue, inPercent); } diff --git a/Assets/Scripts/MainGame/Card/CardAssistanceFunctions.cs b/Assets/Scripts/MainGame/Card/CardAssistanceFunctions.cs index 53cf2ce5..92678abb 100644 --- a/Assets/Scripts/MainGame/Card/CardAssistanceFunctions.cs +++ b/Assets/Scripts/MainGame/Card/CardAssistanceFunctions.cs @@ -61,8 +61,8 @@ namespace Continentis.MainGame.Card public void SetVariableAttribute(string attributeName, int baseOffset, bool additive = false, int originalValue = 0) { - var baseName = "Base" + attributeName; - var baseOffsetName = baseName + "Offset"; + var baseName = "Base_" + attributeName; + var baseOffsetName = "Base_" + attributeName + "_Offset"; if (!additive) originalValue = GetAttribute(baseName); diff --git a/Assets/Scripts/MainGame/Card/CardAttributes.cs b/Assets/Scripts/MainGame/Card/CardAttributes.cs index 300de954..f6f6c1f5 100644 --- a/Assets/Scripts/MainGame/Card/CardAttributes.cs +++ b/Assets/Scripts/MainGame/Card/CardAttributes.cs @@ -4,6 +4,7 @@ /// 基于 EditorBaseCollection 自动生成的卡牌属性常量字典。 /// 包含所有配置的 Key,以防止手写出现 Typo。 /// + [GameAttributeCollection] public static class CardAttributes { /// 体力值消耗 diff --git a/Assets/Scripts/MainGame/Card/CardKeywords.cs b/Assets/Scripts/MainGame/Card/CardKeywords.cs index a8233d5f..cd318ef2 100644 --- a/Assets/Scripts/MainGame/Card/CardKeywords.cs +++ b/Assets/Scripts/MainGame/Card/CardKeywords.cs @@ -17,16 +17,19 @@ /// 可选目标为全体角色 public const string TargetAll = "TargetAll"; - - /// 多目标选择时允许复选 - public const string AllowDuplicateTargets = "AllowDuplicateTargets"; - /// 物理 - public const string Physics = "Physics"; + /// 多目标选择时允许复选 + public const string AllowDuplicateTargets = "AllowDuplicateTargets"; + + /// 随机目标 + public const string RandomTarget = "RandomTarget"; /// 魔法 public const string Magic = "Magic"; + /// 物理 + public const string Physics = "Physics"; + /// public const string Wind = "Wind"; @@ -48,29 +51,11 @@ /// public const string Darkness = "Darkness"; - /// 打击(力量) - public const string Strike = "Strike"; + /// + public const string Poison = "Poison"; - /// 突刺(敏捷) - public const string Prick = "Prick"; - - /// 斩击(力量&敏捷) - public const string Slash = "Slash"; - - /// 奥术(智力) - public const string Arcane = "Arcane"; - - /// 邪术(魅力) - public const string Sorcery = "Sorcery"; - - /// 迅捷(敏捷) - public const string Swiftness = "Swiftness"; - - /// 坚韧(体质) - public const string Fortitude = "Fortitude"; - - /// 预判(感知) - public const string Prediction = "Prediction"; + /// 灵能 + public const string Psionics = "Psionics"; /// 消耗(打出后移至消耗堆) public const string Exhaust = "Exhaust"; @@ -101,5 +86,17 @@ /// 先决(在手牌中时,必须先打出此牌) public const string Prerequisite = "Prerequisite"; + + /// 弱驱散 + public const string BasicDispel = "BasicDispel"; + + /// 强驱散 + public const string StrongDispel = "StrongDispel"; + + /// 穿透(无视格挡) + public const string Penetration = "Penetration"; + + /// 必中(无视闪避) + public const string GuaranteedHit = "GuaranteedHit"; } } diff --git a/Assets/Scripts/MainGame/Card/CardSubmodules/AttributeSubmodule.cs b/Assets/Scripts/MainGame/Card/CardSubmodules/AttributeSubmodule.cs index a5837cfd..a3f91824 100644 --- a/Assets/Scripts/MainGame/Card/CardSubmodules/AttributeSubmodule.cs +++ b/Assets/Scripts/MainGame/Card/CardSubmodules/AttributeSubmodule.cs @@ -30,16 +30,16 @@ namespace Continentis.MainGame.Card foreach (KeyValuePair attribute in cardData.variableAttributes) { - string baseName = "Base" + attribute.Key; + string baseName = "Base_" + attribute.Key; originalAttributes.Add(baseName, attribute.Value); string mainName = attribute.Key; endowingAttributes.Add(mainName, baseName); - string baseOffset = "Base" + attribute.Key + "Offset"; + string baseOffset = "Base_" + attribute.Key + "_Offset"; endowingAttributes.Add(baseOffset, "0"); - string displayName = "Display" + attribute.Key; + string displayName = "Display_" + attribute.Key; endowingAttributes.Add(displayName, baseName); } @@ -64,7 +64,7 @@ namespace Continentis.MainGame.Card float final_pAccumulation = cha_pAccumulation + card_pAccumulation; float final_pMultiplication = cha_pMultiplication * card_pMultiplication; attributeGroup.ModifyAttribute(attributeName, final_numeric, final_pAccumulation, final_pMultiplication); - string displayAttributeName = "Display" + attributeName; + string displayAttributeName = "Display_" + attributeName; if(attributeGroup.current.ContainsKey(displayAttributeName)) { attributeGroup.SetAttribute(displayAttributeName, attributeGroup.current[attributeName]); @@ -87,7 +87,7 @@ namespace Continentis.MainGame.Card { owner.combatBuffSubmodule.GetAttributeChange(attributeName, out float numeric, out float pAccumulation, out float pMultiplication); attributeGroup.ModifyAttribute(attributeName, numeric, pAccumulation, pMultiplication); - string displayAttributeName = "Display" + attributeName; + string displayAttributeName = "Display_" + attributeName; if(attributeGroup.current.ContainsKey(displayAttributeName)) { attributeGroup.SetAttribute(displayAttributeName, attributeGroup.current[attributeName]); diff --git a/Assets/Scripts/MainGame/Card/CardView/HandCardView/HandCardView_Operations.cs b/Assets/Scripts/MainGame/Card/CardView/HandCardView/HandCardView_Operations.cs index f9cf3290..e47ac10b 100644 --- a/Assets/Scripts/MainGame/Card/CardView/HandCardView/HandCardView_Operations.cs +++ b/Assets/Scripts/MainGame/Card/CardView/HandCardView/HandCardView_Operations.cs @@ -107,9 +107,9 @@ namespace Continentis.MainGame.Card int targetCount = card.attributeSubmodule.targetCount; - if (targetCount > 1) + if (targetCount > 1 && !card.HasKeyword(CardKeywords.RandomTarget)) { - // 多目标模式:先执行通用的可打出校验 + // 多目标手动选择模式:先执行通用的可打出校验 if (!CheckCanStartPlay()) { ResetSelectionState(); @@ -255,7 +255,8 @@ namespace Continentis.MainGame.Card CombatUIManager.Instance.arrowsPage.otherPointerArrows.ForEach(arrow => { arrow.gameObject.SetActive(false); }); } } - else if (card.attributeSubmodule.targetCount == 0) + else if (card.attributeSubmodule.targetCount == 0 + || card.HasKeyword(CardKeywords.RandomTarget)) { Vector3 cardPosition = SpaceConverter.ScreenPointToUIPoint(arrowCanvasRect, eventData.position, uiCamera); cardTransform.position = cardPosition; @@ -289,7 +290,7 @@ namespace Continentis.MainGame.Card if (!CheckCanStartPlay()) return; - if (!card.HasKeyword("TargetSelf")) + if (!card.HasKeyword("TargetSelf") && !card.HasKeyword(CardKeywords.RandomTarget)) { if (!validTargets.Contains(hoveringCharacter)) { @@ -320,6 +321,10 @@ namespace Continentis.MainGame.Card { targetList.AddRange(validTargets); } + else if (card.HasKeyword(CardKeywords.RandomTarget)) + { + targetList.AddRange(card.SetRandomTargets(validTargets)); + } else if (card.HasKeyword("TargetSelf") && card.attributeSubmodule.targetCount == 0) { targetList.Add(card.user); diff --git a/Assets/Scripts/MainGame/Card/Editor/CardDataEditor.cs b/Assets/Scripts/MainGame/Card/Editor/CardDataEditor.cs index d891609d..62ea3d47 100644 --- a/Assets/Scripts/MainGame/Card/Editor/CardDataEditor.cs +++ b/Assets/Scripts/MainGame/Card/Editor/CardDataEditor.cs @@ -205,6 +205,54 @@ namespace Continentis.MainGame.Card } + [BoxGroup("Fundamental")] + [PropertyOrder(6)] + [Button("📄 打开逻辑脚本", ButtonSizes.Medium)] + [GUIColor(1f, 0.92f, 0.6f)] + [ShowIf("@!string.IsNullOrEmpty(className)")] + private void OpenCardLogicScript() + { + if (string.IsNullOrEmpty(className)) + { + Debug.LogWarning("[CardData] 尚未选择逻辑类,无法打开对应脚本。"); + return; + } + + // 根据 modName / categoryName / className 拼接可能的文件路径 + // 路径格式: Assets/Mods/{modName}/Cards/Scripts/{categoryName}/{className}.cs + // | Assets/Mods/{modName}/Cards/Scripts/{className}.cs (无分类时) + var candidatePaths = new List(); + + if (!string.IsNullOrEmpty(categoryName)) + candidatePaths.Add($"Assets/Mods/{modName}/Cards/Scripts/{categoryName}/{className}.cs"); + + candidatePaths.Add($"Assets/Mods/{modName}/Cards/Scripts/{className}.cs"); + + // 在全项目中也搜一遍(应对目录结构不规范的情况) + string[] guids = AssetDatabase.FindAssets($"{className} t:MonoScript"); + foreach (string guid in guids) + { + string p = AssetDatabase.GUIDToAssetPath(guid); + if (Path.GetFileNameWithoutExtension(p) == className) + candidatePaths.Add(p); + } + + foreach (string path in candidatePaths) + { + var script = AssetDatabase.LoadAssetAtPath(path); + if (script != null) + { + AssetDatabase.OpenAsset(script); + EditorGUIUtility.PingObject(script); + Debug.Log($"[CardData] 已打开逻辑脚本:{path}"); + return; + } + } + + Debug.LogError($"[CardData] 未找到逻辑类 '{className}' 对应的脚本文件。\n" + + $"已搜索路径:\n{string.Join("\n", candidatePaths)}"); + } + [BoxGroup("Display")] [PropertyOrder(11)] [Button("✨ 预览卡牌效果", ButtonSizes.Medium)] diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs index 8bd33038..c5203adb 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs @@ -9,12 +9,12 @@ namespace Continentis.MainGame.Card { protected override void TargetingEffect(CharacterBase target) { - card.SetAttribute("DisplayDamage", mainLogic.GetTargetedFinalDamage(target)); + card.SetAttribute("Display_Damage", mainLogic.GetTargetedFinalDamage(target)); } protected override void UntargetingEffect() { - card.SetAttribute("DisplayDamage", mainLogic.GetNoTargetFinalDamage()); + card.SetAttribute("Display_Damage", mainLogic.GetNoTargetFinalDamage()); } /// @@ -38,48 +38,20 @@ namespace Continentis.MainGame.Card } /// - /// 斩击伤害计算,伤害=基础伤害+(力量加成+敏捷加成)/2 + /// 物理伤害计算,伤害=基础伤害+物理伤害加成 /// - public void SetDamage_Slash(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) + public void SetDamage_Physics(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) { - float rawDamageOffsetFromStrength = user.GetRawAttribute("OffsetFromStrength"); - float rawDamageOffsetFromAgility = user.GetRawAttribute("OffsetFromAgility"); - SetDamage(Mathf.RoundToInt((rawDamageOffsetFromStrength + rawDamageOffsetFromAgility) / 2f), damageAttributeName, additive, originalDamage); - } - - /// - /// 打击伤害计算,伤害=基础伤害+力量加成 - /// - public void SetDamage_Strike(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) - { - int damageOffset = user.GetAttribute("OffsetFromStrength"); - SetDamage(damageOffset, damageAttributeName, additive, originalDamage); - } - - /// - /// 突刺伤害计算,伤害=基础伤害+敏捷加成 - /// - public void SetDamage_Prick(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) - { - int damageOffset = user.GetAttribute("OffsetFromAgility"); + int damageOffset = user.GetAttribute("PhysicsDamageDealtOffset"); SetDamage(damageOffset, damageAttributeName, additive, originalDamage); } /// - /// 奥术伤害计算,伤害=基础伤害+智力加成 + /// 魔法伤害计算,伤害=基础伤害+魔法伤害加成 /// - public void SetDamage_Arcane(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) + public void SetDamage_Magic(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) { - int damageOffset = user.GetAttribute("OffsetFromIntelligence"); - SetDamage(damageOffset, damageAttributeName, additive, originalDamage); - } - - /// - /// 契术伤害计算,伤害=基础伤害+魅力加成 - /// - public void SetDamage_Sorcery(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0) - { - int damageOffset = user.GetAttribute("OffsetFromCharisma"); + int damageOffset = user.GetAttribute("MagicDamageDealtOffset"); SetDamage(damageOffset, damageAttributeName, additive, originalDamage); } } diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Defense.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Defense.cs index d628d9cf..583da75c 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Defense.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Defense.cs @@ -10,15 +10,15 @@ namespace Continentis.MainGame.Card { if (card.HasAttribute("Block")) { - card.SetAttribute("DisplayBlock", card.GetAttribute("Block")); + card.SetAttribute("Display_Block", card.GetAttribute("Block")); } else if(card.HasAttribute("Dodge")) { - card.SetAttribute("DisplayDodge", card.GetAttribute("Dodge")); + card.SetAttribute("Display_Dodge", card.GetAttribute("Dodge")); } else if(card.HasAttribute("TemporaryHealth")) { - card.SetAttribute("DisplayTemporaryHealth", card.GetAttribute("TemporaryHealth")); + card.SetAttribute("Display_TemporaryHealth", card.GetAttribute("TemporaryHealth")); } } @@ -26,79 +26,34 @@ namespace Continentis.MainGame.Card { if (card.HasAttribute("Block")) { - card.SetAttribute("DisplayBlock", card.GetAttribute("Block")); + card.SetAttribute("Display_Block", card.GetAttribute("Block")); } else if(card.HasAttribute("Dodge")) { - card.SetAttribute("DisplayDodge", card.GetAttribute("Dodge")); + card.SetAttribute("Display_Dodge", card.GetAttribute("Dodge")); } else if(card.HasAttribute("TemporaryHealth")) { - card.SetAttribute("DisplayTemporaryHealth", card.GetAttribute("TemporaryHealth")); + card.SetAttribute("Display_TemporaryHealth", card.GetAttribute("TemporaryHealth")); } } /// - /// 设置格挡值,默认由体质加成 + /// 设置格挡值,加成来自 BlockGainOffset /// - public void SetBlock_Fortitude(bool additive = false, int originalBlock = 0) + public void SetBlock(bool additive = false, int originalBlock = 0) { - int blockOffsetFromPhysique = user.GetAttribute("OffsetFromPhysique"); - card.SetVariableAttribute("Block", blockOffsetFromPhysique, additive, originalBlock); + int blockOffset = user.GetAttribute("BlockGainOffset"); + card.SetVariableAttribute("Block", blockOffset, additive, originalBlock); } /// - /// 设置格挡值,由智力加成 + /// 设置闪避值,加成来自 DodgeGainOffset /// - public void SetBlock_Arcane(bool additive = false, int originalBlock = 0) + public void SetDodge(bool additive = false, int originalDodge = 0) { - int blockOffsetFromIntelligence = user.GetAttribute("OffsetFromIntelligence"); - card.SetVariableAttribute("Block", blockOffsetFromIntelligence, additive, originalBlock); - } - - /// - /// 设置格挡值,由魅力加成 - /// - public void SetBlock_Sorcery(bool additive = false, int originalBlock = 0) - { - int blockOffsetFromCharisma = user.GetAttribute("OffsetFromCharisma"); - card.SetVariableAttribute("Block", blockOffsetFromCharisma, additive, originalBlock); - } - - /// - /// 设置闪避值,由敏捷加成 - /// - public void SetDodge_Swiftness(bool additive = false, int originalDodge = 0) - { - int dodgeOffsetFromAgility = user.GetAttribute("OffsetFromAgility"); - card.SetVariableAttribute("Dodge", dodgeOffsetFromAgility, additive, originalDodge); - } - - /// - /// 设置闪避值,由智力加成 - /// - public void SetDodge_Arcane(bool additive = false, int originalDodge = 0) - { - int dodgeOffsetFromIntelligence = user.GetAttribute("OffsetFromIntelligence"); - card.SetVariableAttribute("Dodge", dodgeOffsetFromIntelligence, additive, originalDodge); - } - - /// - /// 设置闪避值,由魅力加成 - /// - public void SetDodge_Sorcery(bool additive = false, int originalDodge = 0) - { - int dodgeOffsetFromCharisma = user.GetAttribute("OffsetFromCharisma"); - card.SetVariableAttribute("Dodge", dodgeOffsetFromCharisma, additive, originalDodge); - } - - /// - /// 设置闪避值,由感知加成 - /// - public void SetDodge_Prediction(bool additive = false, int originalDodge = 0) - { - int dodgeOffsetFromPrediction = user.GetAttribute("OffsetFromPerception"); - card.SetVariableAttribute("Dodge", dodgeOffsetFromPrediction, additive, originalDodge); + int dodgeOffset = user.GetAttribute("DodgeGainOffset"); + card.SetVariableAttribute("Dodge", dodgeOffset, additive, originalDodge); } /// diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_LifeSteal.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_LifeSteal.cs index 66acfad3..2cdba979 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_LifeSteal.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_LifeSteal.cs @@ -7,12 +7,12 @@ namespace Continentis.MainGame.Card { protected override void TargetingEffect(CharacterBase target) { - card.SetAttribute("DisplayLifeStealPercent", GetLifeStealPercent()); + card.SetAttribute("Display_LifeStealPercent", GetLifeStealPercent()); } protected override void UntargetingEffect() { - card.SetAttribute("DisplayLifeStealPercent", card.GetRawAttribute("LifeStealPercent")); + card.SetAttribute("Display_LifeStealPercent", card.GetRawAttribute("LifeStealPercent")); } public float GetLifeStealPercent() diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectCustomCards.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectCustomCards.cs index 87b1652c..f25ca6da 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectCustomCards.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectCustomCards.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using Continentis.MainGame.Commands; @@ -10,6 +11,7 @@ namespace Continentis.MainGame.Card public class CardLogicComponent_SelectCustomCards : CardLogicComponentBase { public List selectedCards; + public Action selectEffect; /// /// 添加选择手牌的指令 @@ -24,24 +26,16 @@ namespace Continentis.MainGame.Card selectedCards = new List(); CustomCardSelectionInterface customCardSelector = CombatUIManager.Instance.combatMainPage.customCardSelector; - commandGroup.AddCommand(new Cmd_Function(() => + commandGroup.AddCommand(Cmd.Do(() => { customCardSelector.Setup(title, mainLogic.card, cardsToSelect, maxSelection, forceMax); })); commandGroup.AddCommand(new Cmd_WaitForUI(customCardSelector)); - commandGroup.AddCommand(new Cmd_Function(() => + commandGroup.AddCommand(Cmd.Do(() => { selectedCards = customCardSelector.selectedCards.ToList(); - selectedCards.ForEach(SelectEffect); + selectedCards.ForEach(selectEffect); })); } - - /// - /// 卡牌被选择后的效果 - /// - public void SelectEffect(CardInstance card) - { - - } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs index 1cf3152a..da4d7929 100644 --- a/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs +++ b/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_SelectHandCards.cs @@ -41,7 +41,7 @@ namespace Continentis.MainGame.Card selectedCards = new List(); HandCardSelectionInterface handCardSelector = CombatUIManager.Instance.combatMainPage.handCardSelector; - commandGroup.AddCommand(new Cmd_Function(() => + commandGroup.AddCommand(Cmd.Do(() => { handCardSelector.Setup(title, mainLogic.card, maxSelection, selectCondition, forceMax); if (!includeTeam) @@ -51,7 +51,7 @@ namespace Continentis.MainGame.Card } })); commandGroup.AddCommand(new Cmd_WaitForUI(handCardSelector)); - commandGroup.AddCommand(new Cmd_Function(() => + commandGroup.AddCommand(Cmd.Do(() => { selectedCards = handCardSelector.selectedCards.ToList(); selectedCards.ForEach(selectEffect); diff --git a/Assets/Scripts/MainGame/Character/CharacterAssistanceFunctions.cs b/Assets/Scripts/MainGame/Character/CharacterAssistanceFunctions.cs index 1f6a375d..518e443a 100644 --- a/Assets/Scripts/MainGame/Character/CharacterAssistanceFunctions.cs +++ b/Assets/Scripts/MainGame/Character/CharacterAssistanceFunctions.cs @@ -44,41 +44,31 @@ namespace Continentis.MainGame.Character public partial class CharacterBase { /// - /// 获取角色的属性值,自动判断属性组(Core/General) + /// 获取角色的属性值 /// public int GetAttribute(string attributeName, int defaultValue = 0) { - if (attributeSubmodule.coreAttributeGroup.current.ContainsKey(attributeName)) - { - return attributeSubmodule.GetCurrentCoreAttribute(attributeName); - } - if (attributeSubmodule.generalAttributeGroup.current.ContainsKey(attributeName)) { return attributeSubmodule.GetGeneralAttribute(attributeName); } - Debug.LogWarning($"Attribute {attributeName} not found in any attribute group."); + Debug.LogWarning($"Attribute {attributeName} not found in attribute group."); return defaultValue; } /// - /// 获取角色的原始属性值,自动判断属性组(Core/General) + /// 获取角色的原始属性值 /// 如果属性名包含“Multiplier”,默认值改为1 /// public float GetRawAttribute(string attributeName, float defaultValue = 0) { - if (attributeSubmodule.coreAttributeGroup.current.TryGetValue(attributeName, out float rawAttribute)) - { - return rawAttribute; - } - if (attributeSubmodule.generalAttributeGroup.current.TryGetValue(attributeName, out float attribute)) { return attribute; } - Debug.LogWarning($"Attribute {attributeName} not found in any attribute group."); + Debug.LogWarning($"Attribute {attributeName} not found in attribute group."); if(attributeName.Contains("Multiplier")) { @@ -89,47 +79,55 @@ namespace Continentis.MainGame.Character } /// - /// 设置角色的属性值,自动判断属性组(Core/General) + /// 设置角色的属性值 /// - /// - /// public void SetAttribute(string attributeName, int value) { - if (attributeSubmodule.coreAttributeGroup.current.ContainsKey(attributeName)) - { - attributeSubmodule.coreAttributeGroup.current[attributeName] = value; - return; - } - if (attributeSubmodule.generalAttributeGroup.current.ContainsKey(attributeName)) { attributeSubmodule.generalAttributeGroup.current[attributeName] = value; return; } - Debug.LogWarning($"Attribute {attributeName} not found in any attribute group."); + Debug.LogWarning($"Attribute {attributeName} not found in attribute group."); } /// - /// 修改角色的属性值,自动判断属性组(Core/General) + /// 修改角色的属性值 /// - /// - /// public void ModifyAttribute(string attributeName, int delta) { - if (attributeSubmodule.coreAttributeGroup.current.ContainsKey(attributeName)) - { - attributeSubmodule.coreAttributeGroup.current[attributeName] += delta; - return; - } - if (attributeSubmodule.generalAttributeGroup.current.ContainsKey(attributeName)) { attributeSubmodule.generalAttributeGroup.current[attributeName] += delta; return; } - Debug.LogWarning($"Attribute {attributeName} not found in any attribute group."); + Debug.LogWarning($"Attribute {attributeName} not found in attribute group."); + } + + + /// + /// 修改角色的属性值并进行范围限制 + /// + /// 实际的添加或减少的数值(可能因为范围限制而小于 delta) + public int ModifyAndClampAttribute(string attributeName, int delta, int min = 0, int max = int.MaxValue) + { + int currentAttribute = GetAttribute(attributeName); + int actualModifiedValue = delta; + if (delta < 0) + { + actualModifiedValue = Mathf.Min(-delta, currentAttribute - min); + } + else if (delta > 0) + { + actualModifiedValue = Mathf.Min(delta, max - currentAttribute); + } + + ModifyAttribute(attributeName, delta); + ClampAttribute(attributeName, min, max); + + return actualModifiedValue; } public void ClampAttribute(string attributeName, int min, int max) diff --git a/Assets/Scripts/MainGame/Character/CharacterBuff/BuffSubmodules.cs b/Assets/Scripts/MainGame/Character/CharacterBuff/BuffSubmodules.cs index d88ffa5f..617a8b52 100644 --- a/Assets/Scripts/MainGame/Character/CharacterBuff/BuffSubmodules.cs +++ b/Assets/Scripts/MainGame/Character/CharacterBuff/BuffSubmodules.cs @@ -17,36 +17,6 @@ namespace Continentis.MainGame.Character } } - /// - /// Buff的角色核心属性调整模块 - /// - public class CoreAttributeSubmodule : CharacterBuffSubmodule - { - public Dictionary numericChange; - public Dictionary percentageChangeOfAccumulation; - public Dictionary percentageChangeOfMultiplication; - - public CoreAttributeSubmodule(CharacterBuffBase buff) : base(buff) - { - this.numericChange = new Dictionary(); - this.percentageChangeOfAccumulation = new Dictionary(); - this.percentageChangeOfMultiplication = new Dictionary(); - } - - public List RefreshAllModifiedAttributes() - { - List modifiedAttributes = new List(); - modifiedAttributes.AddRange(numericChange.Select(kvp => kvp.Key)); - modifiedAttributes.AddRange(percentageChangeOfAccumulation.Select(kvp => kvp.Key)); - modifiedAttributes.AddRange(percentageChangeOfMultiplication.Select(kvp => kvp.Key)); - - modifiedAttributes.ForEach(attr => character.attributeSubmodule.RefreshCoreAttribute(attr)); - character.attributeSubmodule.RefreshAllGeneralAttributes(); //刷新核心属性后,需要刷新通用属性 - - return modifiedAttributes; - } - } - /// /// Buff的角色通常属性调整模块 /// diff --git a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs index 04551fed..761b07a3 100644 --- a/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs +++ b/Assets/Scripts/MainGame/Character/CharacterBuff/CharacterCombatBuffBase.cs @@ -27,7 +27,6 @@ namespace Continentis.MainGame.Character public UnitedStackSubmodule unitedStackSubmodule; public IndependentStackSubmodule independentStackSubmodule; - public CoreAttributeSubmodule coreAttributeSubmodule; public GeneralAttributeSubmodule generalAttributeSubmodule; public StatusSubmodule statusSubmodule; } @@ -187,14 +186,7 @@ namespace Continentis.MainGame.Character { private void RefreshAttributes() { - if (coreAttributeSubmodule != null) - { - coreAttributeSubmodule.RefreshAllModifiedAttributes(); - } - else - { - generalAttributeSubmodule?.RefreshAllModifiedAttributes(); - } + generalAttributeSubmodule?.RefreshAllModifiedAttributes(); } /// diff --git a/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributes.cs b/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributes.cs index 5ff43d11..e9c118eb 100644 --- a/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributes.cs +++ b/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributes.cs @@ -7,29 +7,10 @@ [GameAttributeCollection] public static class CharacterAttributes { - // ── 核心属性 (Core) ────────────────────────────────── + // ── 属性 (General) ─────────────────────────────── /// 等级 public const string Level = "Level"; - /// 力量 - public const string Strength = "Strength"; - - /// 敏捷 - public const string Agility = "Agility"; - - /// 智力 - public const string Intelligence = "Intelligence"; - - /// 体质 - public const string Physique = "Physique"; - - /// 感知 - public const string Perception = "Perception"; - - /// 魅力 - public const string Charisma = "Charisma"; - - // ── 通用属性 (General) ─────────────────────────────── /// 生命值 public const string Health = "Health"; @@ -72,8 +53,8 @@ /// 闪避 public const string Dodge = "Dodge"; - /// 护盾 - public const string Shield = "Shield"; + /// 临时生命 + public const string TemporaryHealth = "TemporaryHealth"; /// 回合开始时保留格挡 public const string KeepBlockOnActionStart = "KeepBlockOnActionStart"; @@ -87,9 +68,6 @@ /// 获得闪避偏移量 public const string DodgeGainOffset = "DodgeGainOffset"; - /// 获得护盾偏移量 - public const string ShieldGainOffset = "ShieldGainOffset"; - /// 闪避攻击前,闪避值乘以此值 public const string DodgeCheckStartDamageMultiplier = "DodgeCheckStartDamageMultiplier"; diff --git a/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributesDefaultCollection.cs b/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributesDefaultCollection.cs index 7708e344..75fe72c0 100644 --- a/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributesDefaultCollection.cs +++ b/Assets/Scripts/MainGame/Character/CharacterData/CharacterAttributesDefaultCollection.cs @@ -16,12 +16,7 @@ namespace Continentis.MainGame.Character [TitleGroup("属性模板")] [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "属性值")] - [LabelText("核心属性 (Core)")] - [Tooltip("对应 CharacterData.coreAttributes")] - public SerializableDictionary coreAttributes; - - [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "属性值")] - [LabelText("通常属性 (General)")] + [LabelText("属性 (General)")] [Tooltip("对应 CharacterData.generalAttributes")] public SerializableDictionary generalAttributes; diff --git a/Assets/Scripts/MainGame/Character/CharacterData/CharacterData.cs b/Assets/Scripts/MainGame/Character/CharacterData/CharacterData.cs index 9df4f91d..c0928630 100644 --- a/Assets/Scripts/MainGame/Character/CharacterData/CharacterData.cs +++ b/Assets/Scripts/MainGame/Character/CharacterData/CharacterData.cs @@ -72,11 +72,7 @@ namespace Continentis.MainGame.Character // ── Attributes ──────────────────────────────────────────────────────── [TabGroup("Data", "属性"), PropertyOrder(20)] - [Tooltip("角色的核心属性:支持智能下拉菜单")] - public SerializedDictionary coreAttributes = new SerializedDictionary(); - - [TabGroup("Data", "属性"), PropertyOrder(21)] - [Tooltip("角色的通常属性:支持智能下拉菜单")] + [Tooltip("角色的属性:支持智能下拉菜单")] public SerializedDictionary generalAttributes = new SerializedDictionary(); [TabGroup("Data", "属性"), PropertyOrder(22)] diff --git a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs index 36392f73..1c71c444 100644 --- a/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs +++ b/Assets/Scripts/MainGame/Character/CharacterMainFunctions.cs @@ -40,13 +40,13 @@ namespace Continentis.MainGame.Character } /// - /// 消耗体力 + /// 修改体力 /// - public void ModifyStamina(int staminaValue) + public void ModifyStamina(int staminaValue, bool clampMax = false) { ModifyAttribute("Stamina", staminaValue); - ClampAttribute("Stamina", 0, GetAttribute("MaximumStamina")); - + ClampAttribute("Stamina", 0, clampMax ? GetAttribute("MaximumStamina") : int.MaxValue); + if (this is PlayerHero) { CombatUIManager.Instance.combatMainPage.combatResourcesDisplayer.UpdateIcons(); @@ -64,11 +64,11 @@ namespace Continentis.MainGame.Character /// /// 消耗魔法 /// - public void ModifyMana(int manaValue) + public void ModifyMana(int manaValue, bool clampMax = false) { ModifyAttribute("Mana", manaValue); - ClampAttribute("Mana", 0, GetAttribute("MaximumMana")); - + ClampAttribute("Mana", 0, clampMax ? GetAttribute("MaximumMana") : int.MaxValue); + if (this is PlayerHero) { CombatUIManager.Instance.combatMainPage.combatResourcesDisplayer.UpdateIcons(); @@ -387,9 +387,9 @@ namespace Continentis.MainGame.Character /// /// 添加临时生命(不会自动清空) /// - public void AddShield(int shield, CharacterBase target = null) + public void AddTemporaryHealth(int tempHealth, CharacterBase target = null) { - int baseShieldAfterOffset = shield + GetAttribute("TemporaryHealthGainOffset"); + int baseShieldAfterOffset = tempHealth + GetAttribute("TemporaryHealthGainOffset"); int finalShield = Mathf.RoundToInt(baseShieldAfterOffset * GetRawAttribute("TemporaryHealthGainMultiplier", 1)); target ??= this; diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/AttributeSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/AttributeSubmodule.cs index 093dfd55..2cb2c19f 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/AttributeSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/AttributeSubmodule.cs @@ -1,15 +1,12 @@ using System.Collections.Generic; using System.Linq; -using Continentis.MainGame.Rules; using SLSFramework.General; -using Unity.VisualScripting; using UnityEngine; namespace Continentis.MainGame.Character { public partial class AttributeSubmodule : SubmoduleBase { - public AttributeGroup coreAttributeGroup; public AttributeGroup generalAttributeGroup; public AttributeSubmodule(CharacterBase character) : base(character) @@ -19,10 +16,7 @@ namespace Continentis.MainGame.Character private void Initialize(CharacterData characterData) { - coreAttributeGroup = new AttributeGroup(characterData.coreAttributes.ToDictionary()); generalAttributeGroup = new AttributeGroup(characterData.generalAttributes.ToDictionary()); - - RulesManager.Instance.attributeRulesMerger.convertCoreIntoGeneral(coreAttributeGroup.current, generalAttributeGroup.original); generalAttributeGroup.ApplyAllAttributes(); generalAttributeGroup.SetUpEndowments(characterData.runtimeGeneralAttributes.ToDictionary()); } @@ -30,16 +24,6 @@ namespace Continentis.MainGame.Character public partial class AttributeSubmodule { - public float GetRawCurrentCoreAttribute(string attributeName, float defaultValue = 0) - { - return coreAttributeGroup.current.GetValueOrDefault(attributeName, defaultValue); - } - - public int GetCurrentCoreAttribute(string attributeName, int defaultValue = 0) - { - return coreAttributeGroup.current.GetRoundValue(attributeName, defaultValue); - } - public float GetRawGeneralAttribute(string attributeName, float defaultValue = 0) { return generalAttributeGroup.current.GetValueOrDefault(attributeName, defaultValue); @@ -51,80 +35,6 @@ namespace Continentis.MainGame.Character } } - public partial class AttributeSubmodule - { - /// - /// 得出对某个核心属性的检定成功概率 - /// 计算方式为:达到需求值为100%,每低于1点属性值,成功率降低20%。 - /// - /// 属性名 - /// 需求值 - /// 设true为高于需求值算作通过(probability),如果为false,则最终概率为(1-probability) - /// 额外加成 - /// 最终概率 - public float Probability(string coreAttributeName, int requirement, bool higherPass = true, int additionalAmount = 0) - { - return Probability(GetCurrentCoreAttribute(coreAttributeName), requirement, higherPass, additionalAmount); - } - - /// - /// 对某个核心属性进行检定 - /// - /// 属性名 - /// 需求值 - /// 设true为高于需求值算作通过(probability),如果为false,则最终概率为(1-probability) - /// 额外加成 - /// 本次检定是否通过 - public bool Check(string coreAttributeName, int requirement, bool higherPass = true, int additionalAmount = 0) - { - return Check(GetCurrentCoreAttribute(coreAttributeName), requirement, higherPass, additionalAmount); - } - - private float Calculate(int value, int requirement) - { - int difference = value - requirement; - return Mathf.Clamp01(1 + difference * 0.2f); - } - - private float Probability(int attributeValue, int requirement, bool higherPass = true, int additionalAmount = 0) - { - float probability = Calculate(attributeValue + additionalAmount, requirement); - return higherPass ? probability : 1 - probability; - } - - private bool Check(int attributeValue, int requirement, bool higherPass = true, int additionalAmount = 0) - { - float baseProbability = Probability(attributeValue, requirement, higherPass, additionalAmount); - return baseProbability >= Random.Range(0f, 1f); - } - } - - public partial class AttributeSubmodule - { - public void RefreshCoreAttribute(string attributeName) - { - coreAttributeGroup.ResetAttribute(attributeName); - - owner.equipmentSubmodule.GetCoreAttributeChange(attributeName, out float e_numeric, out float e_pAccumulation, out float e_pMultiplication); - owner.combatBuffSubmodule.GetCoreAttributeChange(attributeName, out float cb_numeric, out float cb_pAccumulation, out float cb_pMultiplication); - - float numeric = e_numeric + cb_numeric; - float pAccumulation = e_pAccumulation + cb_pAccumulation; - float pMultiplication = e_pMultiplication * cb_pMultiplication; - coreAttributeGroup.ModifyAttribute(attributeName, numeric, pAccumulation, pMultiplication); - - RulesManager.Instance.attributeRulesMerger.convertCoreIntoGeneral(coreAttributeGroup.current, generalAttributeGroup.original); - } - - public void RefreshAllCoreAttributes() - { - foreach (string attributeName in coreAttributeGroup.current.Keys) - { - RefreshCoreAttribute(attributeName); - } - } - } - public partial class AttributeSubmodule { public void RefreshGeneralAttribute(string attributeName) @@ -138,8 +48,6 @@ namespace Continentis.MainGame.Character float pAccumulation = e_pAccumulation + cb_pAccumulation; float pMultiplication = e_pMultiplication * cb_pMultiplication; generalAttributeGroup.ModifyAttribute(attributeName, numeric, pAccumulation, pMultiplication); - - //Debug.Log($"Refreshed general attribute: {attributeName}, new value: {generalAttributeGroup.current[attributeName]}"); } public void RefreshAllGeneralAttributes() @@ -149,15 +57,5 @@ namespace Continentis.MainGame.Character RefreshGeneralAttribute(attributeName); } } - - private void ModifyGeneralAttributeFromEquipments(string attributeName) - { - /*EntityEquipmentModule equipmentModule = entity.equipmentModule; - equipmentModule.GetAttributeChange(attributeName, out int numericChange, - out float percentageChangeOfAccumulation, out float percentChangeOfMultiplication); - currentCombatAttributes[attributeName] += numericChange; - currentCombatAttributes[attributeName] = (int)((1 + percentageChangeOfAccumulation) * currentCombatAttributes[attributeName]); - currentCombatAttributes[attributeName] = (int)(percentChangeOfMultiplication * currentCombatAttributes[attributeName]);*/ - } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs index ddd9b83f..542c6cdd 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/CombatBuffSubmodule.cs @@ -106,25 +106,6 @@ namespace Continentis.MainGame.Character public partial class CombatBuffSubmodule { - public void GetCoreAttributeChange(string attributeName, out float numericChange, - out float percentageChangeOfAccumulation, out float percentChangeOfMultiplication) - { - numericChange = buffList.Where(buff => buff.coreAttributeSubmodule != null) - .SelectMany(buff => buff.coreAttributeSubmodule.numericChange) - .Where(change => change.Key == attributeName) - .Sum(change => change.Value); - - percentageChangeOfAccumulation = buffList.Where(buff => buff.coreAttributeSubmodule != null) - .SelectMany(buff => buff.coreAttributeSubmodule.percentageChangeOfAccumulation) - .Where(change => change.Key == attributeName) - .Sum(change => change.Value); - - percentChangeOfMultiplication = buffList.Where(buff => buff.coreAttributeSubmodule != null) - .SelectMany(buff => buff.coreAttributeSubmodule.percentageChangeOfMultiplication) - .Where(change => change.Key == attributeName) - .Aggregate, float>(1, (current, change) => current * change.Value); - } - public void GetGeneralAttributeChange(string attributeName, out float numericChange, out float percentageChangeOfAccumulation, out float percentChangeOfMultiplication) { diff --git a/Assets/Scripts/MainGame/Character/CharacterSubmodules/EquipmentSubmodule.cs b/Assets/Scripts/MainGame/Character/CharacterSubmodules/EquipmentSubmodule.cs index 99083050..65e3e5c5 100644 --- a/Assets/Scripts/MainGame/Character/CharacterSubmodules/EquipmentSubmodule.cs +++ b/Assets/Scripts/MainGame/Character/CharacterSubmodules/EquipmentSubmodule.cs @@ -17,25 +17,6 @@ namespace Continentis.MainGame.Character public partial class EquipmentSubmodule { - public void GetCoreAttributeChange(string attributeName, out float numericChanges, - out float percentageChangesOfAccumulation, out float percentChangesOfMultiplication) - { - numericChanges = currentEquipments - .SelectMany(eq => eq.coreAttributeSubmodule.numericChange) - .Where(change => change.Key == attributeName) - .Sum(change => change.Value); - - percentageChangesOfAccumulation = currentEquipments - .SelectMany(eq => eq.coreAttributeSubmodule.percentageChangeOfAccumulation) - .Where(change => change.Key == attributeName) - .Sum(change => change.Value); - - percentChangesOfMultiplication = currentEquipments - .SelectMany(ew => ew.coreAttributeSubmodule.percentageChangeOfMultiplication) - .Where(change => change.Key == attributeName) - .Aggregate, float>(1, (current, change) => current * change.Value); - } - public void GetGeneralAttributeChange(string attributeName, out float numericChanges, out float percentageChangesOfAccumulation, out float percentChangesOfMultiplication) { diff --git a/Assets/Scripts/MainGame/Character/Editor/CharacterDataEditor.cs b/Assets/Scripts/MainGame/Character/Editor/CharacterDataEditor.cs index 59d99492..5515ddba 100644 --- a/Assets/Scripts/MainGame/Character/Editor/CharacterDataEditor.cs +++ b/Assets/Scripts/MainGame/Character/Editor/CharacterDataEditor.cs @@ -164,11 +164,9 @@ namespace Continentis.MainGame.Character [GUIColor(0.7f, 1f, 0.7f)] public void PasteDefaultAttributes() { - if (coreAttributes == null) coreAttributes = new SLSUtilities.General.SerializedDictionary(); if (generalAttributes == null) generalAttributes = new SLSUtilities.General.SerializedDictionary(); if (runtimeGeneralAttributes == null) runtimeGeneralAttributes = new SLSUtilities.General.SerializedDictionary(); - coreAttributes.Clear(); generalAttributes.Clear(); runtimeGeneralAttributes.Clear(); @@ -181,18 +179,6 @@ namespace Continentis.MainGame.Character foreach (var coll in collections) { - if (coll.characterCoreAttributes != null) - { - foreach (var kvp in coll.characterCoreAttributes) - { - if (!coreAttributes.ContainsKey(kvp.Key)) - { - float defaultVal = kvp.Key.Contains("Multiplier") ? 1f : 0f; - coreAttributes.Add(kvp.Key, defaultVal); - } - } - } - if (coll.characterGeneralAttributes != null) { foreach (var kvp in coll.characterGeneralAttributes) @@ -220,7 +206,7 @@ namespace Continentis.MainGame.Character } EditorUtility.SetDirty(this); - Debug.Log($"[CharacterData] '{this.name}' 提取完毕。从 {collections.Count} 个主库中提取了 {coreAttributes.Count} 个核心属性,{generalAttributes.Count} 个通用属性以及 {runtimeGeneralAttributes.Count} 个运行时约束!"); + Debug.Log($"[CharacterData] '{this.name}' 提取完毕。从 {collections.Count} 个主库中提取了 {generalAttributes.Count} 个属性以及 {runtimeGeneralAttributes.Count} 个运行时约束!"); } // ── 内部共享辅助方法 ───────────────────────────────────────────────── diff --git a/Assets/Scripts/MainGame/Equipment/EquipmentBase.cs b/Assets/Scripts/MainGame/Equipment/EquipmentBase.cs index 6155b1ed..08c13f23 100644 --- a/Assets/Scripts/MainGame/Equipment/EquipmentBase.cs +++ b/Assets/Scripts/MainGame/Equipment/EquipmentBase.cs @@ -15,8 +15,7 @@ namespace Continentis.MainGame.Equipment [Header("Base Info")] public Guid equipmentID; public List tags; - [Header("Submodules")] public AttributeSubmodule coreAttributeSubmodule { get; private set; } - public AttributeSubmodule generalAttributeSubmodule { get; private set; } + [Header("Submodules")] public AttributeSubmodule generalAttributeSubmodule { get; private set; } public EventSubmodule eventSubmodule { get; private set; } public ContentSubmodule contentSubmodule { get; private set; } @@ -24,8 +23,6 @@ namespace Continentis.MainGame.Equipment { this.equipmentID = Guid.NewGuid(); this.tags = new List(equipmentData.tags); - this.coreAttributeSubmodule = new AttributeSubmodule(this, equipmentData.coreNumericChange, - equipmentData.corePercentageChangeOfAccumulation, equipmentData.corePercentageChangeOfMultiplication); this.generalAttributeSubmodule = new AttributeSubmodule(this, equipmentData.generalNumericChange, equipmentData.generalPercentageChangeOfAccumulation, equipmentData.generalPercentageChangeOfMultiplication); @@ -38,26 +35,12 @@ namespace Continentis.MainGame.Equipment if (character != null) { this.character = character; - this.character.equipmentSubmodule.currentEquipments.Add(this); //TODO: 后续换成装备函数 + this.character.equipmentSubmodule.currentEquipments.Add(this); - List coreNames = coreAttributeSubmodule.GetModifiedAttributeNames(); - - if (coreNames.Count > 0) + generalAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName => { - coreAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName => - { - this.character.attributeSubmodule.RefreshCoreAttribute(attributeName); - }); - - this.character.attributeSubmodule.RefreshAllGeneralAttributes(); - } - else - { - generalAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName => - { - this.character.attributeSubmodule.RefreshGeneralAttribute(attributeName); - }); - } + this.character.attributeSubmodule.RefreshGeneralAttribute(attributeName); + }); } } } diff --git a/Assets/Scripts/MainGame/Equipment/EquipmentData.cs b/Assets/Scripts/MainGame/Equipment/EquipmentData.cs index fd77da87..ec080cbf 100644 --- a/Assets/Scripts/MainGame/Equipment/EquipmentData.cs +++ b/Assets/Scripts/MainGame/Equipment/EquipmentData.cs @@ -64,41 +64,21 @@ namespace Continentis.MainGame.Equipment [LabelText("装备描述 Key")] public string equipmentDescription; - // ── 核心属性变化 ────────────────────────────────────────────────────── + // ── 属性变化 ────────────────────────────────────────────────────── - [TabGroup("Data", "核心属性"), PropertyOrder(20)] - [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "数值变化")] - [Tooltip("对角色 CoreAttributes 施加固定数值加成")] - [LabelText("数值变化 (Numeric)")] - public SerializableDictionary coreNumericChange = new SerializableDictionary(); - - [TabGroup("Data", "核心属性"), PropertyOrder(21)] - [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "百分比(累加)")] - [Tooltip("对角色 CoreAttributes 施加百分比累加加成(如 +10% 填写 0.1)")] - [LabelText("百分比变化—累加 (Accum%)")] - public SerializableDictionary corePercentageChangeOfAccumulation = new SerializableDictionary(); - - [TabGroup("Data", "核心属性"), PropertyOrder(22)] - [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "百分比(乘法)")] - [Tooltip("对角色 CoreAttributes 施加百分比乘法加成")] - [LabelText("百分比变化—乘法 (Multi%)")] - public SerializableDictionary corePercentageChangeOfMultiplication = new SerializableDictionary(); - - // ── 通用属性变化 ────────────────────────────────────────────────────── - - [TabGroup("Data", "通用属性"), PropertyOrder(30)] + [TabGroup("Data", "属性"), PropertyOrder(20)] [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "数值变化")] [Tooltip("对角色 GeneralAttributes 施加固定数值加成")] [LabelText("数值变化 (Numeric)")] public SerializableDictionary generalNumericChange = new SerializableDictionary(); - [TabGroup("Data", "通用属性"), PropertyOrder(31)] + [TabGroup("Data", "属性"), PropertyOrder(21)] [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "百分比(累加)")] [Tooltip("对角色 GeneralAttributes 施加百分比累加加成(如 +10% 填写 0.1)")] [LabelText("百分比变化—累加 (Accum%)")] public SerializableDictionary generalPercentageChangeOfAccumulation = new SerializableDictionary(); - [TabGroup("Data", "通用属性"), PropertyOrder(32)] + [TabGroup("Data", "属性"), PropertyOrder(22)] [DictionaryDrawerSettings(KeyLabel = "属性名", ValueLabel = "百分比(乘法)")] [Tooltip("对角色 GeneralAttributes 施加百分比乘法加成")] [LabelText("百分比变化—乘法 (Multi%)")] diff --git a/Assets/Scripts/MainGame/MainGameManager.cs b/Assets/Scripts/MainGame/MainGameManager.cs index fabe87cb..69ac7cce 100644 --- a/Assets/Scripts/MainGame/MainGameManager.cs +++ b/Assets/Scripts/MainGame/MainGameManager.cs @@ -113,7 +113,7 @@ namespace Continentis.MainGame continue; } - int maxHP = Mathf.RoundToInt(data.coreAttributes.TryGetValue("MaximumHealth", out float hp) ? hp : 0f); + int maxHP = Mathf.RoundToInt(data.generalAttributes.TryGetValue("MaximumHealth", out float hp) ? hp : 0f); HeroSave hero = new HeroSave(heroID, maxHP, maxHP); foreach (string cardID in data.initialDeckRef) diff --git a/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesCollectionBase.cs b/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesCollectionBase.cs index 970d5d4c..695efbd0 100644 --- a/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesCollectionBase.cs +++ b/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesCollectionBase.cs @@ -1,13 +1,6 @@ -using System.Collections.Generic; -using UnityEngine; - namespace Continentis.MainGame.Rules { public class AttributeRulesCollectionBase : RulesCollectionBase { - public virtual void ApplyRules_ConvertCoreIntoGeneral(Dictionary core, Dictionary general) - { - - } } } \ No newline at end of file diff --git a/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesMerger.cs b/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesMerger.cs index 7d1bba34..a8d38d9e 100644 --- a/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesMerger.cs +++ b/Assets/Scripts/MainGame/Rules/AttributeRules/AttributeRulesMerger.cs @@ -1,29 +1,19 @@ using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Events; namespace Continentis.MainGame.Rules { public class AttributeRulesMerger { public List rulesCollections; - - public UnityAction, Dictionary> convertCoreIntoGeneral; public AttributeRulesMerger() { rulesCollections = new List(); - convertCoreIntoGeneral = (coreAttributes, generalAttributes) => { }; } public void ApplyRules() { rulesCollections.Sort(); - - foreach (var rules in rulesCollections) - { - convertCoreIntoGeneral += rules.ApplyRules_ConvertCoreIntoGeneral; - } } } } \ No newline at end of file diff --git a/Assets/Scripts/SLSUtilities/General/StringExtension.cs b/Assets/Scripts/SLSUtilities/General/StringExtension.cs index 8d3a4b26..8b690a33 100644 --- a/Assets/Scripts/SLSUtilities/General/StringExtension.cs +++ b/Assets/Scripts/SLSUtilities/General/StringExtension.cs @@ -1,3 +1,5 @@ +using Continentis.MainGame; +using Continentis.MainGame.Card; using I2.Loc; using UnityEngine; @@ -20,6 +22,18 @@ namespace SLSFramework.General return original; } + /// + /// 本地化字符串,并使用卡牌上下文解析 $Attribute / $Keyword 等文本内函数 + /// + /// 本地化 Key + /// 提供属性上下文的卡牌实例 + /// 翻译并解析后的最终文本 + public static string Localize(this string original, CardInstance card) + { + string translated = original.Localize(); + return CardTextInterpreter.InterpretText(card, translated); + } + /// /// 本地化字符串,使用指定的根GameObject进行i2Loc参数替换 ///