AchReactive
가이드

리액션과 기본 동작

ReactionEngine 실행 흐름과 제공되는 effect·condition·trigger.

실행 흐름

var engine = new ReactionEngine();
engine.Run("on_use", skillData, ctx);

Run(trigger, data, ctx)data.reactions 를 순회하며 각 리액션을 이렇게 처리합니다.

1. trigger 채널 이름 일치?            (아니면 skip)
2. 트리거 가드 통과?                  (TriggerRegistry, 없으면 통과)
3. 모든 조건(AND) 통과?               (ConditionRegistry)
4. 효과를 순서대로 실행               (EffectRegistry)

반환값은 실제로 실행된 리액션 수입니다.

ReactionContext

var ctx = new ReactionContext
{
    Source  = caster,     // 주체
    Target  = target,     // 단일 대상
    Targets = targets,    // 광역 대상 (있으면 우선)
    World   = world,      // 스폰/조회 경계
};

effect 는 ctx.Params 로 자기 인자를 읽습니다. 엔진이 항목마다 주입합니다.

기본 Effect

type설명params
damageatk*power + flat - def 만큼 hp 감소power, flat
healatk*power + flat 회복 (hp_max 상한)power, flat
set_stat스탯 기본값 설정stat, value
add_stat스탯 기본값 증감stat, delta
add_modifier스탯 수정자 추가 (버프 기본형)stat, modifier, value, source
remove_modifiersource 토큰의 수정자 제거source
spawnWorld 로 엔티티 스폰entityId
log디버그 로그message

modifier 값은 flat / percent_add / percent_mul 입니다. 대상은 Targets 가 있으면 전부, 없으면 Target 입니다.

기본 Condition

type설명params
always항상 참
alive / dead대상 생존/사망
chance확률 통과value (0~1)
hp_below / hp_aboveHP 비율 비교value (0~1)
stat_above / stat_below스탯 값 비교stat, value

조건은 별도 지정이 없으면 Target(없으면 Source)을 평가합니다.

기본 Trigger 가드

대부분의 트리거(on_use, on_hit, on_equip 등)는 채널 이름만으로 발동하므로 가드가 없습니다. 임계값 비교가 필요한 트리거만 가드를 둡니다.

type설명triggerParams
on_hp_belowSource HP 비율이 threshold 이하일 때만 발동threshold (0~1)

스탯 관례

기본 effect/condition 은 다음 키를 사용합니다 (StatKeys). 다른 체계를 쓰려면 effect 를 직접 등록해 덮어쓰면 됩니다.

의미
hp현재 체력 (리소스)
hp_max최대 체력 (비율 조건 분모)
atk공격력 (수정자 적용)
def방어력 (수정자 적용)

목차