Skip to content

GameCore.Behavior ​

AbilityStageResponseEvent 双端 ​

命名空间 GameCore.Behavior

csharp
public enum AbilityStageResponseEvent

技能施法阶段响应触发时机。

枚举值 ​

  • Preswing — 前摇阶段开始。
  • Cast — 施法阶段开始。
  • Channel — 引导阶段开始,技能正式生效。
  • Backswing — 后摇阶段开始。

GameDataOrderModifier 双端 ​

命名空间 GameCore.Behavior

csharp
public class GameDataOrderModifier : GameDataCategory<GameDataOrderModifier>, IGameDataCategory<GameDataOrderModifier>, IGameData<GameDataOrderModifier>, IGameData

指令修饰器:在技能/攻击指令执行时覆盖默认的投射物、受击者、动画或伤害响应。

构造函数 ​

GameDataOrderModifier 双端 ​

csharp
public GameDataOrderModifier(GameLink<GameDataOrderModifier, GameDataOrderModifier> link)

GameDataOrderModifier 双端 ​

csharp
public GameDataOrderModifier(IGameLink<GameDataOrderModifier> link)

属性 ​

RequireAttack 双端 ​

csharp
public bool RequireAttack { get; set; }

是否要求必须有攻击动作才能触发(用于近战判定)。

MissileModelOverride 双端 ​

csharp
public IGameLink<GameDataModel>? MissileModelOverride { get; set; }

覆盖默认投射物模型,用于替换技能原本的弹道外观。

ImpactActorsOverride 双端 ​

csharp
public List<IGameLink<GameDataActor>?>? ImpactActorsOverride { get; set; }

覆盖受击时生成的受击单位列表(如受击特效、受击音效等)。

AnimationOverride 双端 ​

csharp
public IGameLink<GameDataAnimation>? AnimationOverride { get; set; }

覆盖命中时的播放动画。

ImpactResponseDamage 双端 ​

csharp
public IGameLink<GameDataResponseDamage>? ImpactResponseDamage { get; set; }

命中时的伤害响应,用于修改或追加伤害(如暴击、吸血等)。

StackId 双端 ​

csharp
public string? StackId { get; set; }

堆叠 ID,相同 ID 的修饰器会合并计算(如多段伤害叠加)。

GameDataResponse 双端 ​

命名空间 GameCore.Behavior

csharp
public abstract class GameDataResponse<TResponseData, TResponseContext> : GameDataResponse, IGameData<TResponseData>, IGameData where TResponseData : GameDataResponse<TResponseData, TResponseContext> where TResponseContext : ResponseContext

泛型响应:支持概率判定与前置校验的响应实现。

构造函数 ​

GameDataResponse 双端 ​

csharp
protected GameDataResponse(IGameLink<GameDataResponse> link)

泛型响应:支持概率判定与前置校验的响应实现。

属性 ​

Chance 双端 ​

csharp
public Func<ResponseContext, Probability>? Chance { get; set; }

触发概率,返回 0~1 之间的值;不设置则视为 100% 触发。

Validators 双端 ​

csharp
public Func<ResponseContext, CmdResult>? Validators { get; set; }

前置校验,返回失败则跳过该响应(如法力不足、冷却中等)。

方法 ​

CreateResponse 双端 ​

csharp
public override Response CreateResponse(Unit host, IResponseOwner? owner = null)

Execute 仅服务端 ​

csharp
public abstract CmdResult Execute(TResponseContext responseContext)

Post 仅服务端 ​

csharp
public static void Post(IExecutionContext incomingContext, ITarget? defenderOverride = null)

GameDataResponseAbilityStage 双端 ​

命名空间 GameCore.Behavior

csharp
public class GameDataResponseAbilityStage : GameDataResponse<GameDataResponseAbilityStage, ResponseContextAbilityStage>, IGameData<GameDataResponseAbilityStage>, IGameData

技能施法阶段响应。可按技能分类筛选,并在前摇、施法、引导或后摇开始时触发。

构造函数 ​

GameDataResponseAbilityStage 双端 ​

csharp
public GameDataResponseAbilityStage(GameLink<GameDataResponse, GameDataResponseAbilityStage> link)

GameDataResponseAbilityStage 双端 ​

csharp
public GameDataResponseAbilityStage(IGameLink<GameDataResponseAbilityStage> link)

属性 ​

CategoryFilter 双端 ​

csharp
public HashSetFilter<AbilityCategory>? CategoryFilter { get; set; }

仅响应满足筛选条件的技能分类;为空表示响应所有技能。

AbilityStage 双端 ​

csharp
public AbilityStageResponseEvent AbilityStage { get; set; }

技能施法阶段。

csharp
public new IGameLink<GameDataResponseAbilityStage> Link { get; }

方法 ​

CreateResponseContext 仅服务端 ​

csharp
protected internal override ResponseContext? CreateResponseContext(Response response, IExecutionContext incomingContext, ITarget? defenderOverride)

Execute 仅服务端 ​

csharp
public override CmdResult Execute(ResponseContextAbilityStage responseContext)

CreateResponse 仅服务端 ​

csharp
public override Response CreateResponse(Unit host, IResponseOwner? owner = null)

GameDataResponseDamage 双端 ​

命名空间 GameCore.Behavior

csharp
public class GameDataResponseDamage : GameDataResponse<GameDataResponseDamage, ResponseContextDamage>, IGameData<GameDataResponseDamage>, IGameData

伤害响应:在受到伤害时修改伤害数值(如减伤、反伤、吸血、暴击加成等)。

构造函数 ​

GameDataResponseDamage 双端 ​

csharp
public GameDataResponseDamage(GameLink<GameDataResponse, GameDataResponseDamage> link)

GameDataResponseDamage 双端 ​

csharp
public GameDataResponseDamage(IGameLink<GameDataResponseDamage> link)

属性 ​

Modification 双端 ​

csharp
public Func<ResponseContextDamage, double>? Modification { get; set; }

伤害修正值,在乘算前先加/减固定数值(如护甲减伤、固定吸收)。

Multiplier 双端 ​

csharp
public Func<ResponseContextDamage, double>? Multiplier { get; set; }

伤害乘数,在修正后乘以该系数(如 50% 减伤为 0.5,暴击 200% 为 2.0)。

csharp
public new IGameLink<GameDataResponseDamage> Link { get; }

方法 ​

CreateResponseContext 仅服务端 ​

csharp
protected internal override ResponseContext? CreateResponseContext(Response response, IExecutionContext incomingContext, ITarget? defenderOverride)

Execute 仅服务端 ​

csharp
public override CmdResult Execute(ResponseContextDamage responseContext)

字段 ​

ResponseDamageFlags 双端 ​

csharp
public ResponseDamageFlags ResponseDamageFlags

控制响应的伤害类型条件(致命/零伤/无效化)及是否强制暴击。

DamageType 双端 ​

csharp
public Dictionary<IGameLink<GameDataDamageType>, bool> DamageType

响应的伤害类型白名单,键为伤害类型,值为 true 时该类型才会被处理。

GameDataResponseMoverImpact 双端 ​

命名空间 GameCore.Behavior

csharp
public class GameDataResponseMoverImpact : GameDataResponse<GameDataResponseMoverImpact, ResponseContextMoverImpact>, IGameData<GameDataResponseMoverImpact>, IGameData

移动器碰撞响应配置。 当移动器(Mover)碰撞到实体或抵达目标时触发的响应。

备注

此响应适用于投射物类移动器的碰撞处理,支持以下功能: 停止并销毁移动器(Nullify) 销毁移动器并杀死宿主(NullifyAndKillHost) 反射投射物回原始施法者(ReflectToOriginalCaster) 响应触发时机: 当 DoImpactEntity 为 true 时:移动器碰撞中途实体时触发 当 DoImpactEntity 为 false 且 TreatMoverTargetArrivalAsImpact 为 true 时:移动器抵达目标时触发 预验证机制:在执行响应动作前,会预验证移动器的命中效果(ImpactEffect 或 FinalEffect) 能否成功对目标生效。只有预验证通过的命中才会触发响应,这可以防止反射本应无效的投射物。

构造函数 ​

GameDataResponseMoverImpact 双端 ​

csharp
public GameDataResponseMoverImpact(GameLink<GameDataResponse, GameDataResponseMoverImpact> link)

GameDataResponseMoverImpact 双端 ​

csharp
public GameDataResponseMoverImpact(IGameLink<GameDataResponseMoverImpact> link)

属性 ​

Action 双端 ​

csharp
public MoverResponseAction Action { get; set; }

响应执行时对移动器采取的处理动作。

备注

可选值: None:不处理,移动器继续移动 Nullify:停止并移除移动器 NullifyAndKillHost:移除移动器并杀死宿主实体 ReflectToOriginalCaster:反射投射物回原始施法者(仅限 EffectLaunchMissile 发射的投射物)

TreatMoverTargetArrivalAsImpact 双端 ​

csharp
public bool TreatMoverTargetArrivalAsImpact { get; set; }

是否将MoverTarget抵达目标位置时视为碰撞事件。 当此属性为true时,满足以下所有条件则触发碰撞响应: 移动器是MoverTarget类型(以实体为目标的追踪型移动器) 移动器的DoImpactEntity为false(不碰撞中途实体) 移动器成功抵达目标位置,且Target为有效实体

备注

适用场景:追踪型投射物(如制导导弹、魔法飞弹)只在命中目标时产生效果,移动过程中不碰撞其他单位。 默认为true,确保即使DoImpactEntity关闭,抵达目标时仍能触发此响应。 设置为false时,此响应仅处理移动器中途的碰撞事件(通过ImpactEffect触发),不响应抵达目标的情况。

csharp
public new IGameLink<GameDataResponseMoverImpact> Link { get; }

方法 ​

CreateResponseContext 仅服务端 ​

csharp
protected internal override ResponseContext? CreateResponseContext(Response response, IExecutionContext incomingContext, ITarget? defenderOverride)

PreValidate 仅服务端 ​

csharp
protected static CmdResult PreValidate(ResponseContextMoverImpact responseContext)

Execute 仅服务端 ​

csharp
public override CmdResult Execute(ResponseContextMoverImpact responseContext)

GameDataResponseUnitDeath 双端 ​

命名空间 GameCore.Behavior

csharp
public class GameDataResponseUnitDeath : GameDataResponse<GameDataResponseUnitDeath, ResponseContextUnitDeath>, IGameData<GameDataResponseUnitDeath>, IGameData

单位死亡响应,在单位死亡时执行响应效果。

备注

Location 为 Defender 时响应 Host 自身死亡,为 Attacker 时响应 Host 作为 Killer 击杀单位。 无击杀者的死亡不触发 Attacker 侧响应。附加效果默认指向原死亡事件的另一方。

构造函数 ​

GameDataResponseUnitDeath 双端 ​

csharp
public GameDataResponseUnitDeath(GameLink<GameDataResponse, GameDataResponseUnitDeath> link)

GameDataResponseUnitDeath 双端 ​

csharp
public GameDataResponseUnitDeath(IGameLink<GameDataResponseUnitDeath> link)

属性 ​

csharp
public new IGameLink<GameDataResponseUnitDeath> Link { get; }

方法 ​

CreateResponseContext 仅服务端 ​

csharp
protected internal override ResponseContext? CreateResponseContext(Response response, IExecutionContext incomingContext, ITarget? defenderOverride)

Execute 仅服务端 ​

csharp
public override CmdResult Execute(ResponseContextUnitDeath responseContext)

CreateResponse 仅服务端 ​

csharp
public override Response CreateResponse(Unit host, IResponseOwner? owner = null)

ModificationManager 双端 ​

命名空间 GameCore.Behavior

csharp
public class ModificationManager

构造函数 ​

ModificationManager 双端 ​

csharp
public ModificationManager(Unit? modifyTarget, IExecutionContext executionContext, IUnitModificationData cache, int randomSeed)

属性 ​

ModifyTarget 双端 ​

csharp
public Unit? ModifyTarget { get; set; }

ExecutionContext 双端 ​

csharp
public IExecutionContext ExecutionContext { get; }

AppliedPropertyStack 双端 ​

csharp
public uint AppliedPropertyStack { get; set; }

IsStateApplied 双端 ​

csharp
public bool IsStateApplied { get; set; }

Cache 双端 ​

csharp
public IUnitModificationData Cache { get; }

Modifications 双端 ​

csharp
public HashSet<Modification> Modifications { get; set; }

方法 ​

Initialize 双端 ​

csharp
public void Initialize()

Reset 双端 ​

csharp
public void Reset()

UnApplyAll 仅服务端 ​

csharp
public void UnApplyAll()

ApplyPropertyChanges 仅服务端 ​

csharp
public void ApplyPropertyChanges(bool on, uint stack)

ApplyStateChanges 仅服务端 ​

csharp
public void ApplyStateChanges(bool on)

OrderModifier 双端 ​

命名空间 GameCore.Behavior

csharp
public class OrderModifier : IGameObject<GameDataOrderModifier>, IGameObject

构造函数 ​

OrderModifier 双端 ​

csharp
public OrderModifier(IGameLink<GameDataOrderModifier> link)

属性 ​

csharp
public IGameLink<GameDataOrderModifier> Link { get; }

Cache 双端 ​

csharp
public GameDataOrderModifier Cache { get; }

Response 双端 ​

命名空间 GameCore.Behavior

csharp
public class Response<TResponseData, TResponseContext> : Response where TResponseData : GameDataResponse<TResponseData, TResponseContext> where TResponseContext : ResponseContext

构造函数 ​

Response 双端 ​

csharp
public Response(Unit host, IGameLink<GameDataResponse> link, out Response response, IResponseOwner owner)

属性 ​

CurrentResponseContext 仅服务端 ​

csharp
protected virtual ResponseContext? CurrentResponseContext { get; set; }

IsActivated 仅服务端 ​

csharp
public bool IsActivated { get; }

方法 ​

DisposeManaged 双端 ​

csharp
protected override void DisposeManaged()

ExecuteChild 仅服务端 ​

csharp
public virtual CmdResult ExecuteChild(IGameLink<GameDataEffect> link, ITarget target, TResponseContext responseContext)

ResolveTarget 仅服务端 ​

csharp
protected virtual ITarget? ResolveTarget(TResponseContext responseContext)

Execute 仅服务端 ​

csharp
public CmdResult Execute(IExecutionContext incomingContext, ITarget? defenderOverride, ref TResponseContext? responseContext)

Validate 仅服务端 ​

csharp
public CmdResult Validate(TResponseContext responseContext)

ResponseContext 双端 ​

命名空间 GameCore.Behavior

csharp
public class ResponseContext

响应的上下文信息。 包含响应对象和传入响应的执行上下文,用于响应效果树中查询相关信息。

  • response — 触发的响应对象
  • incomingContext — 传入响应的执行上下文(引发响应的来源)
备注

Attacker/Defender 描述引发响应的原事件。响应附加效果的 Caster 来自 Response.Owner 的执行上下文, 默认目标由 Response.Location 选择事件另一方;不要将两条效果链的施法者与目标混用。 附加效果可通过 Effect.Shared.ResponseContext 读取本上下文。

构造函数 ​

ResponseContext 双端 ​

csharp
public ResponseContext(Response response, IExecutionContext incomingContext)

响应的上下文信息。 包含响应对象和传入响应的执行上下文,用于响应效果树中查询相关信息。

  • response — 触发的响应对象
  • incomingContext — 传入响应的执行上下文(引发响应的来源)
备注

Attacker/Defender 描述引发响应的原事件。响应附加效果的 Caster 来自 Response.Owner 的执行上下文, 默认目标由 Response.Location 选择事件另一方;不要将两条效果链的施法者与目标混用。 附加效果可通过 Effect.Shared.ResponseContext 读取本上下文。

属性 ​

Response 双端 ​

csharp
public Response Response { get; init; }

触发的响应对象。 可通过此属性访问响应的所有者(Owner)、宿主单位(Host)、 配置数据(Cache)等完整的响应信息。

Location 双端 ​

csharp
public ResponseLocation Location { get; }

Shared 双端 ​

csharp
public ExecutionParamShared? Shared { get; set; }

可选的响应附加效果树公共数据,不是引发响应的原效果树公共数据。 为空时,框架在创建附加效果时根据响应 Owner 新建共享数据;不保证创建后回填本属性。

IncomingContext 双端 ​

csharp
public IExecutionContext IncomingContext { get; init; }

传入响应的执行上下文(引发响应的来源,如造成伤害的效果)。

备注

具体类型由响应决定:伤害响应为伤害效果,技能阶段响应为技能指令,死亡响应为死亡单位。 它的 Caster/Target 属于原事件,不是响应附加效果的 Caster/Target;死亡响应的击杀者应读取 Killer。

Attacker 双端 ​

csharp
public virtual Entity Attacker { get; }

原事件的主动方;默认取 IncomingContext.Caster,不是响应附加效果的 Caster。 死亡等具体响应可以重写其含义。

Defender 双端 ​

csharp
public virtual ITarget Defender { get; }

原事件的被动方;默认取 IncomingContext.Target,不是响应附加效果的 Target。 可以是单位或位置等目标,具体响应可以重写其含义。

ResponseContextAbilityStage 双端 ​

命名空间 GameCore.Behavior

csharp
public sealed class ResponseContextAbilityStage : ResponseContext

技能施法阶段响应的上下文。

构造函数 ​

ResponseContextAbilityStage 双端 ​

csharp
public ResponseContextAbilityStage(Response response, IExecutionContext incomingContext, Ability ability, OrderStage stage, ITarget? defender)

技能施法阶段响应的上下文。

属性 ​

Ability 双端 ​

csharp
public Ability Ability { get; }

正在施放的技能实例。

Stage 双端 ​

csharp
public OrderStage Stage { get; }

当前施法阶段。

AbilityTarget 双端 ​

csharp
public ITarget? AbilityTarget { get; }

技能指令的目标。

Defender 双端 ​

csharp
public override ITarget Defender { get; }

ResponseContextDamage 双端 ​

命名空间 GameCore.Behavior

csharp
public class ResponseContextDamage : ResponseContext

构造函数 ​

ResponseContextDamage 双端 ​

csharp
public ResponseContextDamage(Response response, EffectDamage effectDamage)

属性 ​

EffectDamage 双端 ​

csharp
public EffectDamage EffectDamage { get; }

引发响应的伤害效果。

Damage 双端 ​

csharp
public Damage Damage { get; }

引发响应的伤害实例。

ResponseContextMoverImpact 双端 ​

命名空间 GameCore.Behavior

csharp
public class ResponseContextMoverImpact : ResponseContext

构造函数 ​

ResponseContextMoverImpact 双端 ​

csharp
public ResponseContextMoverImpact(Response response, Mover mover, ITarget impactTarget)

属性 ​

ImpactPreValidateResult 双端 ​

csharp
public CmdResult? ImpactPreValidateResult { get; set; }

命中效果预验证结果。

ImpactTarget 双端 ​

csharp
public ITarget ImpactTarget { get; }

命中响应中被命中的目标。

Mover 双端 ​

csharp
public Mover Mover { get; }

引发命中响应的移动器。

Defender 双端 ​

csharp
public override ITarget Defender { get; }

LaunchEffect 仅服务端 ​

csharp
public EffectLaunchMissile? LaunchEffect { get; }

引发响应的发射投射物效果。 如果移动器并非由投射物效果发射,则此属性为空。

ResponseContextUnitDeath 双端 ​

命名空间 GameCore.Behavior

csharp
public sealed class ResponseContextUnitDeath : ResponseContext

单位死亡响应的上下文。

备注

IncomingContext 为死亡单位,不是致死伤害效果。击杀者通过 Killer/KillerUnit 读取。 Location 为 Attacker 时匹配击杀者 Host,为 Defender 时匹配死亡单位 Host。 默认 Defender 侧的附加效果指向 Killer,无击杀者时回退死亡单位; 单位直接挂载的死亡自我复活应在效果节点显式选择 Caster。

构造函数 ​

ResponseContextUnitDeath 双端 ​

csharp
public ResponseContextUnitDeath(Response response, Unit unit, DeathType deathType, Entity? killer, IExecutionContext incomingContext)

单位死亡响应的上下文。

备注

IncomingContext 为死亡单位,不是致死伤害效果。击杀者通过 Killer/KillerUnit 读取。 Location 为 Attacker 时匹配击杀者 Host,为 Defender 时匹配死亡单位 Host。 默认 Defender 侧的附加效果指向 Killer,无击杀者时回退死亡单位; 单位直接挂载的死亡自我复活应在效果节点显式选择 Caster。

属性 ​

Unit 双端 ​

csharp
public Unit Unit { get; }

本次死亡的单位,也是此响应上下文的 Defender。

DeathType 双端 ​

csharp
public DeathType DeathType { get; }

单位死亡类型。

Killer 双端 ​

csharp
public Entity? Killer { get; }

造成单位死亡的实体。

KillerUnit 双端 ​

csharp
public Unit? KillerUnit { get; }

造成单位死亡的单位。

Attacker 双端 ​

csharp
public override Entity Attacker { get; }

死亡事件中的主动方;无击杀者时仅为目标解析回退到死亡单位,不触发 Attacker 侧响应。

Defender 双端 ​

csharp
public override ITarget Defender { get; }

原死亡事件的被动方,即死亡单位;不等于附加效果默认目标。

ResponseLocation 双端 ​

命名空间 GameCore.Behavior

csharp
public enum ResponseLocation

响应所在的原事件侧,同时决定附加效果的默认目标;不改变成本支付者 Host。

枚举值 ​

  • Attacker — 主动方侧;附加效果默认目标为 ResponseContext.Defender。
  • Defender — 被动方侧;附加效果默认目标为 ResponseContext.Attacker,不表示给自己执行。

ResponseManager 双端 ​

命名空间 GameCore.Behavior

csharp
public class ResponseManager : TagComponent, IObjectManager<Response>, IContextTypeService<Entity, ResponseManager>

构造函数 ​

ResponseManager 双端 ​

csharp
public ResponseManager(Entity host)

属性 ​

ObjectType 双端 ​

csharp
public static AttachedType ObjectType { get; }

方法 ​

GetAll 双端 ​

csharp
public HashSet<Response> GetAll()

CreateInstance 双端 ​

csharp
public static ResponseManager CreateInstance(Entity content)

ResponseManagerExtension 双端 ​

命名空间 GameCore.Behavior

csharp
public static class ResponseManagerExtension

方法 ​

GetComponent 双端 ​

csharp
public static ResponseManager? GetComponent<TComponent>(this Entity entity) where TComponent : ResponseManager

GetOrCreateComponent 双端 ​

csharp
public static ResponseManager GetOrCreateComponent<TComponent>(this Entity entity) where TComponent : ResponseManager

MoverResponseAction 双端 ​

命名空间 GameCore.Behavior.Data.Enum

csharp
public enum MoverResponseAction

移动器碰撞响应的处理方式。 定义当响应触发时,如何处理碰撞的移动器。

枚举值 ​

  • None — 不处理移动器,让其继续移动。
  • Nullify — 停止并移除移动器,但不影响宿主实体。 移动器将被标记为无效并停止运行。
  • NullifyAndKillHost — 停止并移除移动器,同时杀死宿主实体。 通常用于击毁投射物的效果。
  • ReflectToOriginalCaster — 将移动器反弹回原始施法者。 仅对所创建和发射的投射物有效。 仅在 位置有效。