主题
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; }技能施法阶段。
Link 双端
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)。
Link 双端
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触发),不响应抵达目标的情况。
Link 双端
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)属性
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)属性
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 : ResponseManagerGetOrCreateComponent 双端
csharp
public static ResponseManager GetOrCreateComponent<TComponent>(this Entity entity) where TComponent : ResponseManagerMoverResponseAction 双端
命名空间 GameCore.Behavior.Data.Enum
csharp
public enum MoverResponseAction移动器碰撞响应的处理方式。 定义当响应触发时,如何处理碰撞的移动器。
枚举值
None— 不处理移动器,让其继续移动。Nullify— 停止并移除移动器,但不影响宿主实体。 移动器将被标记为无效并停止运行。NullifyAndKillHost— 停止并移除移动器,同时杀死宿主实体。 通常用于击毁投射物的效果。ReflectToOriginalCaster— 将移动器反弹回原始施法者。 仅对所创建和发射的投射物有效。 仅在 位置有效。