This commit is contained in:
SoulliesOfficial
2026-04-01 12:23:27 -04:00
parent aff7ac0e03
commit c3b1561375
933 changed files with 114333 additions and 119360 deletions

View File

@@ -1,5 +1,6 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="AUTODETECT_INDENTS" value="false" />
<option name="LINE_SEPARATOR" value="&#10;" />
</code_scheme>
</component>

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b4468c37c2d718a4896baa8c5aa2e2e8
guid: 5f450c4d504c155429525d6cafb559a3
folderAsset: yes
DefaultImporter:
externalObjects: {}

BIN
Assets/Editor/SpineSettings.asset LFS Normal file

Binary file not shown.

View File

@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: fdafa0de529482542a09dc14efb2df30
guid: 533d0f4f4288d294487d0ad718ca401e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ed82fe2a188a4644d8b3d3d050c27b6b
guid: a7c52880b67e94742a064239d52bce6f
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c7044ecc61fa0cf46b45952a00cc0b2b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ba055ff92c1fb1848ae1e7e237fd8e96
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 41905f57250b79f4d9a45760a69404a3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6dcbcf4b23fa5c14683dd4c672a355a2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 10155e26b33dc9e49bc26f0698541e89
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0074f5a36a3fd5047b1c5b62925de034
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: aec6d97928ecdce45a08985501a7c178
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 328b333793267d04ba4d957d31217cfa
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 48a4ac0baf58c4647ab6869808d7adb5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 453dc4e5f925c394ebaa2ca2794c5c27
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1449ff1d32fbc644a84d851bfd22738e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ffae3f8a902c3d4cbc8b48569767ac9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0e03740158f2bae4db3d35a67a131126
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ef857fcbf7ca41e41acfe24865f4de39
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a1cbb27d76e6e4040bbea23a47bf6e78
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: be5ecd63417c80a468548c7dae13161b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -27,7 +27,7 @@ namespace Continentis.Mods.Basic.Cards.Assassin
_sharpnessCount = 0;
if (user.combatBuffSubmodule.HasBuff<Buffs.Sharpness>())
_sharpnessCount = user.combatBuffSubmodule.GetBuff<Buffs.Sharpness>().unitedStackSubmodule.stackAmount;
user.Attack(target, GetTargetedFinalDamage(target));
AttackTarget(target, GetTargetedFinalDamage(target));
}),
Cmd.Do(() =>
CreateCharacterBuff<Buffs.Sharpness>(_sharpnessCount).Apply(user, user, this)

View File

@@ -20,7 +20,7 @@ namespace Continentis.Mods.Basic.Cards.Assassin
CommandGroup mainGroup = ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.After(0.2f, () => user.Attack(target, GetTargetedFinalDamage(target)))
Cmd.After(0.2f, () => AttackTarget(target, GetTargetedFinalDamage(target)))
));
mainGroup.AddCommand(Cmd.Do(() =>

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Continentis.MainGame;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using Continentis.MainGame.Commands;
@@ -19,13 +20,13 @@ namespace Continentis.Mods.Basic.Cards.Assassin
new Cmd_PlayAnimation(user.characterView, "Attack"),
new Cmd_PlaySFX("SFX_Basic_SwordStrike"),
new Cmd_SpawnVFX("VFX_Basic_RedImpact"),
Cmd.Do(() => user.Attack(target, GetTargetedFinalDamage(target)))
Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target)))
));
}
public override int GetTargetedFinalDamage(CharacterBase target, List<string> elementalTags = null)
public override int GetTargetedFinalDamage(CharacterBase target, AttackContext ctx = null)
{
var baseDamage = base.GetTargetedFinalDamage(target, elementalTags);
var baseDamage = base.GetTargetedFinalDamage(target, ctx);
var extraDamage = 0;
if (target.combatBuffSubmodule.HasBuff<Buffs.Corrosion>())
{

View File

@@ -19,7 +19,7 @@ namespace Continentis.Mods.Basic
CommandGroup mainGroup = ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.After(0.2f, () => user.Attack(target, GetTargetedFinalDamage(target)))
Cmd.After(0.2f, () => AttackTarget(target, GetTargetedFinalDamage(target)))
));
mainGroup.AddCommand(Cmd.Do(() =>

View File

@@ -18,7 +18,7 @@ namespace Continentis.Mods.Basic.Cards
// 动画先播,随后对所有目标同时发起攻击
CommandGroup attackAllTargets = ForEachTarget(
targetList,
target => Cmd.Sequential(Cmd.Do(() => user.Attack(target, GetTargetedFinalDamage(target)))),
target => Cmd.Sequential(Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target)))),
ExecutionMode.Parallel);
return Cmd.Sequential(

View File

@@ -19,7 +19,7 @@ namespace Continentis.Mods.Basic.Cards
return ForEachTarget(targetList, target =>
Cmd.After(0.2f, () =>
{
user.Attack(target, GetTargetedFinalDamage(target));
AttackTarget(target, GetTargetedFinalDamage(target));
CreateCharacterBuff<Burn>(GetAttribute("BuffStack_Burn")).Apply(target, user, this);
})
);

View File

@@ -27,7 +27,7 @@ namespace Continentis.Mods.Basic.Cards
for (int i = 0; i < attackCount; i++)
{
perTargetGroup.AddCommand(Cmd.After(0.4f, () =>
user.Attack(target, GetTargetedFinalDamage(target))
AttackTarget(target, GetTargetedFinalDamage(target))
));
}
return perTargetGroup;

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4bdfa3d6f97889c4192b3f89c9a5ab51
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -6,7 +6,11 @@ using SLSFramework.General;
namespace Continentis.Mods.Basic.Cards
{
public class Strike : CardLogicBase
/// <summary>
/// 顺劈斩:对全体敌人造成物理斩击伤害,数值受到力量和敏捷增减影响。
/// AOE范围由卡牌数据的目标配置决定Logic层无需额外处理。
/// </summary>
public class Cleave : CardLogicBase
{
public override void SetUpLogicComponents()
{
@@ -15,19 +19,15 @@ namespace Continentis.Mods.Basic.Cards
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
// 旧版使用 Cmd_PlayAnimation.AddAction 在动画 70% 处注入伤害,
// 现改为 Cmd.Parallel 同步触发动画与延迟伤害,保留 0.7s 等效延迟
return ForEachTarget(targetList, target => Cmd.Parallel(
return Cmd.Sequential(
new Cmd_PlayAnimation(user.characterView, "Attack"),
new Cmd_PlaySFX("SFX_Basic_SwordStrike"),
new Cmd_SpawnVFX("VFX_Basic_RedImpact"),
Cmd.After(0.7f, () => user.Attack(target, GetTargetedFinalDamage(target)))
));
ForEachTarget(targetList, target => Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target))))
);
}
public override void ApplyAttributeChangesByCard()
{
LogicComponent<CardLogicComponent_Attack>().SetDamage_Strike();
LogicComponent<CardLogicComponent_Attack>().SetDamage_Slash();
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 53886cfa8ac7b2f45ab5ca9a15bf4c30

View File

@@ -0,0 +1,84 @@
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
{
/// <summary>
/// 火球术:对指定目标造成主伤害并附加大量灼烧,对其余所有敌人造成溅射伤害并附加少量灼烧。
/// targetList[0] 为主目标,其余为溅射目标(由卡牌数据目标配置决定)。
/// </summary>
public class FireBall : CardLogicBase
{
private const string DAMAGE_MAIN = "Damage_Main";
private const string DAMAGE_OTHERS = "Damage_Others";
private const string BURN_STACK_MAIN = "Buff_Burn_Stack_Main";
private const string BURN_STACK_OTHERS = "Buff_Burn_Stack_Others";
private const string DISPLAY_DAMAGE_MAIN = "Display_Damage_Main";
private const string DISPLAY_DAMAGE_OTHERS = "Display_Damage_Others";
private AttackContext MainCtx => AttackContext.Default(card)
.WithDamageKeywords("Fire")
.WithBaseDamageAttribute(DAMAGE_MAIN);
private AttackContext OthersCtx => AttackContext.Default(card)
.WithDamageKeywords("Fire")
.WithBaseDamageAttribute(DAMAGE_OTHERS);
public override void SetUpLogicComponents()
{
AddLogicComponent<CardLogicComponent_Attack>();
}
/// <summary>选中主目标时,更新主目标与溅射目标的伤害预览。</summary>
public override void TargetingEffect(CharacterBase target)
{
card.SetAttribute(DISPLAY_DAMAGE_MAIN, GetTargetedFinalDamage(target, MainCtx));
card.SetAttribute(DISPLAY_DAMAGE_OTHERS, GetNoTargetFinalDamage(OthersCtx));
}
/// <summary>取消选中时,以无目标模式刷新两套伤害预览。</summary>
public override void UntargetingEffect()
{
card.SetAttribute(DISPLAY_DAMAGE_MAIN, GetNoTargetFinalDamage(MainCtx));
card.SetAttribute(DISPLAY_DAMAGE_OTHERS, GetNoTargetFinalDamage(OthersCtx));
}
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
CharacterBase mainTarget = targetList[0];
return Cmd.Sequential(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.Do(() =>
{
// 主目标:主伤害 + 大量灼烧
AttackContext mainCtx = MainCtx;
AttackTarget(mainTarget, GetTargetedFinalDamage(mainTarget, mainCtx), mainCtx);
CreateCharacterBuff<Burn>(GetAttribute(BURN_STACK_MAIN)).Apply(mainTarget, user, this);
// 溅射目标:溅射伤害 + 少量灼烧
AttackContext othersCtx = OthersCtx;
for (int i = 1; i < targetList.Count; i++)
{
CharacterBase other = targetList[i];
AttackTarget(other, GetTargetedFinalDamage(other, othersCtx), othersCtx);
CreateCharacterBuff<Burn>(GetAttribute(BURN_STACK_OTHERS)).Apply(other, user, this);
}
})
);
}
public override void ApplyAttributeChangesByCard()
{
// 主伤害:奥术加成写入 Damage_Main
LogicComponent<CardLogicComponent_Attack>().SetDamage_Arcane(DAMAGE_MAIN);
// 溅射伤害:奥术加成写入 Damage_Others数值由卡牌数据配置
LogicComponent<CardLogicComponent_Attack>().SetDamage_Arcane(DAMAGE_OTHERS);
}
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Continentis.MainGame;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using Continentis.MainGame.Commands;
@@ -7,7 +8,7 @@ using SLSFramework.General;
namespace Continentis.Mods.Basic.Cards
{
public class FireBall : CardLogicBase
public class FireBolt : CardLogicBase
{
public override void SetUpLogicComponents()
{
@@ -18,10 +19,11 @@ namespace Continentis.Mods.Basic.Cards
{
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.After(0.2f, () =>
Cmd.Do(() =>
{
user.Attack(target, GetTargetedFinalDamage(target));
CreateCharacterBuff<Burn>(GetAttribute("BuffStack_Burn")).Apply(target, user, this);
AttackContext mainCtx = AttackContext.Default(card).WithDamageKeywords("Fire");
AttackTarget(target, GetTargetedFinalDamage(target, mainCtx), mainCtx);
CreateCharacterBuff<Burn>(GetAttribute("Buff_Burn_Stack")).Apply(target, user, this);
})
));
}

View File

@@ -0,0 +1,60 @@
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
{
/// <summary>
/// 火焰射线:选择 3 次目标(可重复),对每个选中的目标造成火焰伤害并施加灼烧 Buff。
/// 卡牌数据需配置 targetCount = 3关键词需包含 AllowDuplicateTargets 和 TargetEnemies。
/// </summary>
public class FireRays : CardLogicBase
{
private const string BUFF_BURN_STACK = "Buff_Burn_Stack";
private AttackContext FireCtx => AttackContext.Default(card)
.WithDamageKeywords("Fire");
public override void SetUpLogicComponents()
{
AddLogicComponent<CardLogicComponent_Attack>();
}
/// <summary>选中目标时更新伤害预览。</summary>
public override void TargetingEffect(CharacterBase target)
{
card.SetAttribute("DisplayDamage", GetTargetedFinalDamage(target, FireCtx));
}
/// <summary>取消选中时以无目标模式刷新预览。</summary>
public override void UntargetingEffect()
{
card.SetAttribute("DisplayDamage", GetNoTargetFinalDamage(FireCtx));
}
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
// targetList 可包含重复目标(由多目标选择系统传入)
return Cmd.Sequential(
new Cmd_PlayAnimation(user.characterView, "Attack"),
ForEachTarget(targetList, target => Cmd.Do(() =>
{
AttackContext ctx = FireCtx;
AttackTarget(target, GetTargetedFinalDamage(target, ctx), ctx);
int burnStacks = GetAttribute(BUFF_BURN_STACK);
CreateCharacterBuff<Burn>(burnStacks).Apply(target, user);
}))
);
}
public override void ApplyAttributeChangesByCard()
{
LogicComponent<CardLogicComponent_Attack>().SetDamage_Arcane();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 15155284a8c7da44f958a40b7eb6846c

View File

@@ -6,6 +6,9 @@ using SLSFramework.General;
namespace Continentis.Mods.Basic.Cards
{
/// <summary>
/// 突刺:造成物理伤害,数值受到敏捷增减影响。
/// </summary>
public class Prick : CardLogicBase
{
public override void SetUpLogicComponents()
@@ -19,7 +22,7 @@ namespace Continentis.Mods.Basic.Cards
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.After(0.1f, () => user.Attack(target, GetTargetedFinalDamage(target)))
Cmd.After(0.1f, () => AttackTarget(target, GetTargetedFinalDamage(target)))
));
}

View File

@@ -0,0 +1,61 @@
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
{
/// <summary>
/// 沙暴:对全体敌人造成多段伤害,并附加致盲 Buff。
/// AOE 范围由卡牌数据的目标配置决定,动画只播放一次。
/// </summary>
public class SandStorm : CardLogicBase
{
private AttackContext EarthCtx => AttackContext.Default(card).WithDamageKeywords("Earth");
public override void SetUpLogicComponents()
{
AddLogicComponent<CardLogicComponent_Attack>();
}
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
int hitCount = GetAttribute("HitCount");
CommandGroup hitsGroup = Cmd.Sequential();
for (int i = 0; i < hitCount; i++)
{
hitsGroup.AddCommand(Cmd.After(0.5f, () =>
{
foreach (CharacterBase target in targetList)
{
AttackTarget(target, GetTargetedFinalDamage(target), EarthCtx);
}
}));
}
int blindCount = GetAttribute("Buff_Blind_Count");
CommandGroup debuffGroup = Cmd.Sequential(Cmd.Do(() =>
{
foreach (CharacterBase target in targetList)
{
CreateCharacterBuff<Blind>(blindCount).Apply(target, user);
}
}));
return Cmd.Sequential(
new Cmd_PlayAnimation(user.characterView, "Attack"),
hitsGroup,
debuffGroup
);
}
public override void ApplyAttributeChangesByCard()
{
LogicComponent<CardLogicComponent_Attack>().SetDamage_Arcane();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7dfda7769fd24c248aaa0e7b015d8610

View File

@@ -0,0 +1,76 @@
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
{
/// <summary>
/// 炽焰斩:对目标造成物理斩击伤害、火焰伤害,并施加灼烧 Buff。
/// 两次伤害分别走独立的属性修正通道,卡牌关键词仅作标记用途。
/// </summary>
public class SearingSlash : CardLogicBase
{
private const string DAMAGE_PHYSICS = "Damage_Physics";
private const string DAMAGE_FIRE = "Damage_Fire";
private const string BUFF_BURN_STACK = "Buff_Burn_Stack";
private AttackContext PhysicsCtx => AttackContext.Default(card)
.WithDamageKeywords("Physics")
.WithBaseDamageAttribute(DAMAGE_PHYSICS);
private AttackContext FireCtx => AttackContext.Default(card)
.WithDamageKeywords("Fire")
.WithBaseDamageAttribute(DAMAGE_FIRE);
public override void SetUpLogicComponents()
{
AddLogicComponent<CardLogicComponent_Attack>();
}
/// <summary>
/// 选中目标时更新两种伤害的预览数值。
/// </summary>
public override void TargetingEffect(CharacterBase target)
{
card.SetAttribute("Display_Damage_Physics", GetTargetedFinalDamage(target, PhysicsCtx));
card.SetAttribute("Display_Damage_Fire", GetTargetedFinalDamage(target, FireCtx));
}
/// <summary>
/// 取消选中目标时,以无目标模式重新计算预览数值。
/// </summary>
public override void UntargetingEffect()
{
card.SetAttribute("Display_Damage_Physics", GetNoTargetFinalDamage(PhysicsCtx));
card.SetAttribute("Display_Damage_Fire", GetNoTargetFinalDamage(FireCtx));
}
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
return ForEachTarget(targetList, target => Cmd.Sequential(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.Do(() =>
{
AttackContext physCtx = PhysicsCtx;
AttackTarget(target, GetTargetedFinalDamage(target, physCtx), physCtx);
AttackContext fireCtx = FireCtx;
AttackTarget(target, GetTargetedFinalDamage(target, fireCtx), fireCtx);
int burnStacks = GetAttribute(BUFF_BURN_STACK);
CreateCharacterBuff<Burn>(burnStacks).Apply(target, user);
})
));
}
public override void ApplyAttributeChangesByCard()
{
LogicComponent<CardLogicComponent_Attack>().SetDamage_Slash(DAMAGE_PHYSICS);
LogicComponent<CardLogicComponent_Attack>().SetDamage_Default(DAMAGE_FIRE);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 32b57059835baf64b967b999158d863f

View File

@@ -6,6 +6,9 @@ using SLSFramework.General;
namespace Continentis.Mods.Basic.Cards
{
/// <summary>
/// 斩击:造成物理伤害,数值受到力量和敏捷增减影响。
/// </summary>
public class Slash : CardLogicBase
{
public override void SetUpLogicComponents()
@@ -17,7 +20,7 @@ namespace Continentis.Mods.Basic.Cards
{
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.Do(() => user.Attack(target, GetTargetedFinalDamage(target)))
Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target)))
));
}

View File

@@ -2,12 +2,14 @@ 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 FireBolt : CardLogicBase
/// <summary>
/// 打击:造成物理伤害,数值受到力量增减影响。
/// </summary>
public class Strike : CardLogicBase
{
public override void SetUpLogicComponents()
{
@@ -16,21 +18,17 @@ namespace Continentis.Mods.Basic.Cards
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
base.PlayEffect(targetList);
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Attack"),
Cmd.After(0.2f, () =>
{
user.Attack(target, GetTargetedFinalDamage(target));
new Burn(GetAttribute("BuffLayer_Burn")).Apply(target, user, this);
})
//new Cmd_PlaySFX("SFX_Basic_SwordStrike"),
//new Cmd_SpawnVFX("VFX_Basic_RedImpact"),
Cmd.Do(() => AttackTarget(target, GetTargetedFinalDamage(target)))
));
}
public override void ApplyAttributeChangesByCard()
{
LogicComponent<CardLogicComponent_Attack>().SetDamage_Arcane();
LogicComponent<CardLogicComponent_Attack>().SetDamage_Strike();
}
}
}

View File

@@ -17,8 +17,7 @@ namespace Continentis.Mods.Basic.Cards
{
base.PlayEffect(targetList);
return Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Skill"),
return Cmd.Parallel(new Cmd_PlayAnimation(user.characterView, "Skill"),
Cmd.After(0.2f, () => user.AddBlock(GetAttribute("Block")))
);
}

View File

@@ -11,13 +11,9 @@ namespace Continentis.Mods.Basic.Cards
{
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
base.PlayEffect(targetList);
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Skill"),
Cmd.After(0.2f, () =>
CreateCharacterBuff<Burn>(GetAttribute("BuffStack_Burn")).Apply(target, user, this)
)
Cmd.After(0.2f, () => CreateCharacterBuff<Burn>(GetAttribute("BuffStack_Burn")).Apply(target, user, this))
));
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a0d1630d2beb7284b8c2aaf4be44c18b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 69daf5c683fd38742aaf8c22d2c0ebe3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,33 @@
using System.Collections.Generic;
using Continentis.MainGame.Base;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using Continentis.MainGame.Commands;
using SLSFramework.General;
namespace Continentis.Mods.Basic.Cards
{
/// <summary>
/// 初级侦测术:移除目标的 DodgeRemoveAmount 点闪避。
/// </summary>
public class BasicDetection : CardLogicBase
{
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Action"),
Cmd.Do(() => {
int amount = GetAttribute("DodgeRemoveAmount");
int currentDodge = target.GetAttribute(CharacterAttributes.Dodge);
int removeAmount = UnityEngine.Mathf.Min(amount, currentDodge);
if (removeAmount > 0)
{
target.ModifyAttribute(CharacterAttributes.Dodge, -removeAmount);
target.characterView.hudContainer.UpdateAllHUD();
}
})
));
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3b59594e6393ac740b545a5ccaba4e80

View File

@@ -0,0 +1,22 @@
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 BasicHealing : CardLogicBase
{
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Action"),
Cmd.Do(() =>
{
target.Heal(GetAttribute("HealAmount"));
})));
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5c53a310aa1468e48ab76ab5dc11bfd5

View File

@@ -0,0 +1,29 @@
using System.Collections.Generic;
using Continentis.MainGame;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using Continentis.MainGame.Commands;
using SLSFramework.General;
using UnityEngine;
namespace Continentis.Mods.Basic.Cards
{
/// <summary>
/// 初级净化术对目标施加弱驱散Basic移除所有可被弱驱散驱散的负面Buff。
/// 友方目标时驱散负面Buff敌方目标时驱散正面Buff由 Dispel 内部判定)。
/// </summary>
public class BasicPurification : CardLogicBase
{
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Action"),
Cmd.Do(() =>
{
List<CharacterCombatBuffBase> dispelled = target.combatBuffSubmodule.Dispel(BuffDispelLevel.Basic, user);
Debug.Log($"[BasicPurification] 对 {target.data.displayName} 执行弱驱散,移除了 {dispelled.Count} 个Buff。");
})
));
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f3172551bc0b3e044bc1245dd4981a25

View File

@@ -0,0 +1,28 @@
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
{
/// <summary>
/// 祝福术:目标的下{Buff_Blessing_Stack}张卡牌获得1点通用增益影响持续{Buff_Blessing_Duration}回合。
/// </summary>
public class Bless : CardLogicBase
{
public override CommandGroup PlayEffect(List<CharacterBase> targetList)
{
return ForEachTarget(targetList, target => Cmd.Parallel(
new Cmd_PlayAnimation(user.characterView, "Action"),
Cmd.Do(() =>
{
int stack = GetAttribute("Buff_Blessing_Stack");
int duration = GetAttribute("Buff_Blessing_Duration");
CreateCharacterBuff<Buffs.Blessing>(stack, duration).Apply(target, user, this);
})
));
}
}
}

Some files were not shown because too many files have changed in this diff Show More