[task] | single_turn [pass] | ✅ 통과 [title] | EntityWorldChangedEvent [question] | EntityWorldChangedEvent를 직접 생성할 때 Entity, OldWorld, NewWorld 인자를 모두 생략하고 초기화하면 각 프로퍼티의 기본값은 어떻게 되나요? [answer] | EntityWorldChangedEvent를 생성하는 생성자(Constructor)의 정의에서 확인 할 수 있습니다. 생성자는 다음과 같이 정의되어 있습니다: `EntityWorldChangedEvent(Entity entity = nil, Entity oldWorld = nil, Entity newWorld = nil)` 모든 인자에 `= nil`이라는 기본값이 명시되어 있으므로, 인자를 생략하고 초기화하면 각 프로퍼티의 기본값은 **nil**이 됩니다. 즉, `EntityWorldChangedEvent()` 로만 초기화하면 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 생성자 정의에서 인자별 기본값이 nil임을 명확히 인용하여 질문에 정확하고 간결하게 답변했습니다. [source_doc] | 엔티티가 속한 월드가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewWorld** 엔티티가 새로 속한 월드 엔티티입니다. - **Entity
[task] | two_turn [pass] | ✅ 통과 [title] | EntityRemoveChildrenEvent [question] | 엔티티의 자식이 제거될 때 발생하는 EntityRemoveChildrenEvent 이벤트는 어떤 상황에서 트리거되며, 어떤 프로퍼티를 통해 제거된 엔티티를 확인할 수 있나요? [answer] | `EntityRemoveChildrenEvent`는 엔티티의 자식 엔티티가 제거된 이후에 발생하는 이벤트입니다. 이 이벤트는 `MODEntity`에서 발생하며, 서버(Server)와 클라이언트(Client) 양쪽 공간에서 트리거됩니다. 제거된 엔티티를 확인하기 위해 사용할 수 있는 프로퍼티는 다음과 같습니다. 1. **`RemovedChildren`**: 실제로 제거된 자식 엔티티를 참조합니다. 2. **`Entity`** (inherited from `EntityEventType`): 이 이벤트를 발생시킨 부모 엔티티를 참 [followup] | EntityRemoveChildrenEvent를 처리하는 Event Handler 코드 예시를 작성해 주세요. [followup_answer] | `EntityRemoveChildrenEvent`를 처리하는 Event Handler 코드 예시는 다음과 같습니다. ```lua Event Handler: [self] HandleEntityRemoveChildrenEvent(EntityRemoveChildrenEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: MODEntity -- Space: Server, Client ------------------ [scores] | helpfulness=4 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 일치하는 핵심 정보를 정확히 전달했으나, 코드 예시에서 `Entity.Name` 프로퍼티를 지어내어 정합성에서 감점됨 [source_doc] | 엔티티의 자식 엔티티가 제거된 이후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity RemovedChildren** 제거된 자식 엔티티입니다. ##### i
[task] | code [pass] | ✅ 통과 [title] | EntityWorldChangedEvent [question] | EntityWorldChangedEvent 를 처리하여 NewWorld 엔티티가 nil 이 아닌 경우에만 해당 엔티티의 이름을 log 로 출력하는 스크립트를 작성해줘 [answer] | EntityWorldChangedEvent는 엔티티가 속한 월드가 변경될 때 발생합니다. 이 이벤트에서 NewWorld 프로퍼티를 확인하여 nil이 아닌 경우에만 해당 엔티티의 이름을 로그로 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleEntityWorldChangedEvent(EntityWorldChangedEvent event) { local NewWorld = event.NewWorld if NewWorld ~= nil then log(NewWorld.Name) [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 Event 프로퍼티(NewWorld)와 시스템 규칙의 Event Handler 문법을 정확히 적용하여 nil 체크 후 log 출력을 수행하는 올바른 스크립트를 제시함. [source_doc] | 엔티티가 속한 월드가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewWorld** 엔티티가 새로 속한 월드 엔티티입니다. - **Entity
[task] | single_turn [pass] | ❌ 탈락 [title] | StateStringToMonsterActionComponent [question] | MonsterActionStateEvent를 수신하는 대신 StateAnimationComponent를 사용할 때 어떤 차이가 있나요? [answer] | 제공된 참고 문서에는 `StateAnimationComponent`의 구체적인 API, 프로퍼티, 메서드, 이벤트 정의가 포함되어 있지 않습니다. 문서에는 `StateStringToMonsterActionComponent`와 `MonsterActionStateEvent`가 더는 사용하지 않는(레거시) 기능이며, `StateAnimationComponent`를 사용하도록 안내하는 내용만 존재합니다. 따라서 두 컴포넌트 간에 존재할 수 있는 구체적인 기능적 차이, API 차이, 또는 코드 작성 방식의 차이를 설명할 수 있는 정보가 없 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 StateAnimationComponent의 정보가 없어 차이를 설명할 수 없음을 정확히 지적하여 지어내기를 방지했으나, 질문의 실질적 요구(차이점 설명)에는 도움을 주지 못했습니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합
[task] | single_turn [pass] | ✅ 통과 [title] | StateStringToMonsterActionComponent [question] | IsClient()와 IsServer() 메서드는 StateStringToMonsterActionComponent의 어떤 맥락에서 실행 환경을 확인하는 데 사용되나요? [answer] | StateStringToMonsterActionComponent는 더 이상 사용되지 않는(비추천) 컴포넌트입니다. 따라서 IsClient()와 IsServer() 메서드를 이 컴포넌트와 함께 사용하는 맥락은 공식적으로 지원되지 않으며, 대신 StateAnimationComponent를 사용하도록 권장됩니다. 이 두 메서드는 Component에서 상속된 일반 메서드로, 현재 스크립트가 서버 환경인지 클라이언트 환경인지 확인하기 위해 사용됩니다. 하지만 StateStringToMonsterActionComponent 자체는 폐기된 상 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 비추천 상태와 상속 메서드 의미를 정확히 설명하여 질문에 충실히 답했습니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합
[task] | two_turn [pass] | ✅ 통과 [title] | EntityPostModelSetEvent [question] | EntityPostModelSetEvent의 생성자(Constructor)는 어떤 매개변수를 받나요 [answer] | `EntityPostModelSetEvent`의 생성자는 다음 두 개의 매개변수를 받습니다. * `Entity entity` : 기본값은 `nil`입니다. * `Model model` : 기본값은 `nil`입니다. 생성자 시그니처는 `EntityPostModelSetEvent(Entity entity = nil, Model model = nil)` 입니다. [followup] | Entity와 Model이 nil로 기본값이 설정된 EntityPostModelSetEvent를 초기화하는 Lua 코드 구문은 어떻게 작성하나요? [followup_answer] | `Entity`와 `Model`을 모두 `nil`로 초기화하는 `EntityPostModelSetEvent` 생성자 호출 구문은 다음과 같습니다. ```lua local event = EntityPostModelSetEvent(nil, nil) ``` [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 생성자 시그니처 및 매개변수 정보를 정확하고 간결하게 서술했습니다. [source_doc] | 엔티티의 대상 Model 설정 후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Model Model** 설정된 Model입니다. ##### inherited from
[task] | code [pass] | ✅ 통과 [title] | EntityPostModelSetEvent [question] | EntityPostModelSetEvent 를 수신하여 self.Entity.TransformComponent.Position 을 출력하는 이벤트 핸들러를 작성해줘 [answer] | EntityPostModelSetEvent는 엔티티의 Model이 설정된 후에 발생하는 이벤트입니다. 이 이벤트를 수신하여 해당 엔티티의 현재 위치를 출력하는 이벤트 핸들러는 다음과 같이 작성할 수 있습니다. ```lua Event Handler: [self] HandleEntityPostModelSetEvent(EntityPostModelSetEvent event) { local position = self.Entity.TransformComponent.Position log("Model이 설정되었습니다. 현재 위 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서와 규칙에 따라 이벤트 핸들러를 정확하고 간결하게 작성했으며, 지어낸 API가 없습니다. [source_doc] | 엔티티의 대상 Model 설정 후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Model Model** 설정된 Model입니다. ##### inherited from
[task] | instruction_following [pass] | ✅ 통과 [title] | KinematicbodyComponent [question] | EnableJump가 true일 때 점프 높이를 높이고 지면에 떨어지는 속도를 빠르게 설정하기 위해 조정해야 하는 프로퍼티 두 개를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [Sync] float JumpSpeed = 1.5 [Sync] float JumpDrag = 2.0 ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에서 점프 높이를 높이는 JumpSpeed와 지면 낙하 속도를 빠르게 하는 JumpDrag를 정확히 식별했으며, 요청된 형식(코드만, 설명은 주석)에 부합합니다. [source_doc] | 탑다운 방식의 상하좌우 이동, 점프 및 렉트 타일과의 충돌 기능을 제공합니다. 중력과 가·감속 영항을 받지 않습니다. 타일맵이 RectTile일 때 동작합니다. # Properties - **Vector2 Acceleration [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. SpeedFactor 프로퍼티를 사용하세요. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅니다. false인 경우 캐릭터는
[task] | instruction_following [pass] | ✅ 통과 [title] | KinematicbodyComponent [question] | KinematicbodyComponent에서 Deprecated된 Acceleration 프로퍼티를 대체하는 프로퍼티 이름과 그 역할을 3문장 이내로 설명하세요. [answer] | Deprecated된 `Acceleration` 프로퍼티를 대체하는 프로퍼티는 `SpeedFactor`입니다. `SpeedFactor`는 이동할 때 X축과 Y축 속력에 곱해지는 가중치로, 값이 클수록 이동 속력이 빨라집니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 대체 프로퍼티 이름과 역할을 정확하고 간결하게 설명하여 질문에 완벽하게 부응합니다. [source_doc] | 탑다운 방식의 상하좌우 이동, 점프 및 렉트 타일과의 충돌 기능을 제공합니다. 중력과 가·감속 영항을 받지 않습니다. 타일맵이 RectTile일 때 동작합니다. # Properties - **Vector2 Acceleration [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. SpeedFactor 프로퍼티를 사용하세요. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅니다. false인 경우 캐릭터는
[task] | instruction_following [pass] | ✅ 통과 [title] | KinematicbodyComponent [question] | EnableTileCollision 프로퍼티가 false로 설정되었을 때 발생하지 않는 이벤트 두 가지를 표로 정리해서 나열하세요. [answer] | `EnableTileCollision` 프로퍼티가 `false`로 설정되면 RectTileMap과의 충돌 기능이 비활성화되어, 충돌 타일과 충돌하지 않으며 다음 두 이벤트가 발생하지 않습니다. | 발생하지 않는 이벤트 | | :--- | | `RectTileCollisionBeginEvent` | | `RectTileCollisionEndEvent` | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 EnableTileCollision 프로퍼티의 설명과 일치하며, 요청된 두 이벤트를 표로 정확히 정리했습니다. [source_doc] | 탑다운 방식의 상하좌우 이동, 점프 및 렉트 타일과의 충돌 기능을 제공합니다. 중력과 가·감속 영항을 받지 않습니다. 타일맵이 RectTile일 때 동작합니다. # Properties - **Vector2 Acceleration [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. SpeedFactor 프로퍼티를 사용하세요. - **boolean ApplyClimbableRotation [Sync]** true인 경우 회전하거나 기울어진 사다리를 탄 캐릭터는 사다리의 모습을 따릅니다. false인 경우 캐릭터는
[task] | instruction_following [pass] | ✅ 통과 [title] | KinematicbodyComponent [question] | RectTileEnterEvent 와 RectTileLeaveEvent 가 발생하는 시점의 차이를 2문장 이내로 설명하세요. [answer] | RectTileEnterEvent는 특정 사각형 타일에 진입했을 때 발생하고, RectTileLeaveEvent는 특정 사각형 타일에서 벗어났을 때 발생합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 이벤트 정의와 일치하며 질문에 딱 맞게 2문장 이내로 명확하게 답변했습니다. [source_doc] | - **Vector2 GetGroundPosition()** 로컬 좌표 기준으로 바닥 위치를 반환합니다. - **Vector2 GetWorldGroundPosition()** 월드 좌표 기준으로 바닥 위치를 반환합니다. - **boolean IsOnGround()** 현재 지면에 닿아 있는 상태인지 확인합니다. 점프 중일 때 false를 반환합니다. - **void OnEnterRectTile(RectTileEnterEvent enterEvent) [ScriptOverridable]** RectTileEnterEven
[task] | single_turn [pass] | ✅ 통과 [title] | StateStringToMonsterActionComponent [question] | StateStringToMonsterActionComponent의 EnableInHierarchy 속성이 반환하는 값은 엔티티 자체의 활성화 상태와 어떻게 연관되나요? [answer] | `StateStringToMonsterActionComponent`의 `EnableInHierarchy` 속성은 현재 계층 구조(Hierarchy)를 기준으로 컴포넌트가 실제로 활성화되어 있는지 여부를 반환합니다. 구체적으로, 이 속성은 `ReadOnly` 속성으로 선언되어 있으며 다음과 같은 논리로 값을 결정합니다. 1. **기본 조건**: 해당 컴포넌트 자신의 `Enable` 속성이 `true`여야 합니다. 2. **계층 구조 조건**: 이 컴포넌트를 소유한 엔티티(`Entity`)의 `Enable` 상태가 `true`여 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 EnableInHierarchy의 동작 논리(Enable과 엔티티 Enable 상태의 연관성)를 정확하고 간결하게 설명했습니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합
[task] | single_turn [pass] | ❌ 탈락 [title] | EntityWorldChangedEvent [question] | EntityWorldChangedEvent 핸들러에서 NewWorld 프로퍼티의 값이 nil로 확인될 때는 어떤 상황일까요? [answer] | `EntityWorldChangedEvent`의 `NewWorld` 프로퍼티가 `nil`인 상황은 **엔티티가 월드에서 제거되는 경우**입니다. 이벤트 정의에 따르면 `NewWorld`는 "엔티티가 새로 속한 월드 엔티티"이며, `OldWorld`는 "엔티티가 전에 속했던 월드 엔티티"입니다. 따라서 엔티티가 특정 월드에서 다른 세계로 이동하는 것이 아니라, 아예 월드에서 삭제되거나 분리되어 더 이상 어떤 월드에도 속하지 않게 될 때 `NewWorld` 값은 `nil`이 됩니다. 반대로, 엔티티가 월드 A에서 월드 B로 이동하는 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=None verbosity=2 [judge_reason] | 엔티티 삭제 시 NewWorld가 nil이 된다는 추정은 문서에 명시되지 않았으나 논리적으로 타당하나, 코드 예시에서 Entity.Name 프로퍼티를 사용했는데 이는 mLua 표준 규칙이나 제공된 문서에 없는 식별자로 API 지어내기에 해당함 [source_doc] | 엔티티가 속한 월드가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewWorld** 엔티티가 새로 속한 월드 엔티티입니다. - **Entity
[task] | code [pass] | ✅ 통과 [title] | EntityPostModelSetEvent [question] | EntityPostModelSetEvent 의 Model 속성을 검증하고 nil 이 아니면 log 로 Model 이름과 Entity 이름을 출력하는 스크립트를 작성해줘 [answer] | `EntityPostModelSetEvent`는 엔티티의 Model이 설정된 후 발생하는 이벤트로, `event.Model`과 `event.Entity` 속성을 제공합니다. `event.Model`이 nil이 아닌지 확인한 뒤, Model과 Entity의 이름을 `log`로 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleEntityPostModelSetEvent(EntityPostModelSetEvent event) { --------------- Native Event [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 규칙에 기반하여 nil 검사와 로그 출력을 정확하고 간결하게 구현했습니다. [source_doc] | 엔티티의 대상 Model 설정 후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Model Model** 설정된 Model입니다. ##### inherited from
[task] | single_turn [pass] | ✅ 통과 [title] | StateStringToMonsterActionComponent [question] | StateStringToMonsterActionComponent에서 Entity 속성은 읽기 전용으로 정의되어 있는데, 이는 어떤 의미를 가지나요? [answer] | `StateStringToMonsterActionComponent`에서 `Entity` 속성은 `ReadOnly`로 정의되어 있으며, 이는 해당 속성이 읽기만 가능하고 스크립트 내에서 값을 직접 변경(쓰기)할 수 없음을 의미합니다. 구체적으로 다음과 같은 의미를 가집니다: 1. **소유 엔티티 참조**: 이 속성은 해당 컴포넌트가 부착되어 있는 엔티티 자체를 가리키는 참조입니다. 2. **불변성**: 스크립트 코드에서 `self.Entity = ...`과 같이 다른 엔티티로 값을 재할당할 수 없습니다. 이는 컴포넌트가 어떤 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 정의와 표준 규칙에 근거하여 Entity 속성의 읽기 전용 의미와 접근 방식을 정확하고 명확하게 설명했습니다. [source_doc] | 더는 사용하지 않는 컴포넌트입니다. StateAnimationComponent를 사용하세요. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합
[task] | code [pass] | ✅ 통과 [title] | EntityWorldChangedEvent [question] | EntityWorldChangedEvent 를 수신하여 NewWorld 엔티티가 변경되면 OnUpdate 메서드에서 해당 NewWorld 엔티티의 Position 을 매 프레임마다 log 로 출력하도록 상태 변수를 설정하는 스크립트를 작성해줘 [answer] | `EntityWorldChangedEvent`를 수신하여 `NewWorld` 엔티티가 변경되면 해당 엔티티를 저장하고, `OnUpdate`에서 매 프레임마다 `Position`을 로그로 출력하는 스크립트는 다음과 같습니다. ```lua Property: [None] Entity currentWorld = nil Method: [client only] void OnUpdate (number delta) { if self.currentWorld ~= nil then log(self.currentWorld.TransformCom [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 EntityWorldChangedEvent 속성과 mLua 표준 문법(OnUpdate, self.Entity 접근, Event Handler 구조)을 정확히 준수하여 질문에 대한 최적의 코드를 제시했습니다. [source_doc] | 엔티티가 속한 월드가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewWorld** 엔티티가 새로 속한 월드 엔티티입니다. - **Entity
[task] | code [pass] | ✅ 통과 [title] | EntityWorldChangedEvent [question] | 엔티티의 월드가 변경될 때 EntityWorldChangedEvent 를 수신하여 OldWorld 와 NewWorld 엔티티의 경로를 로그로 출력하는 스크립트를 작성해줘 [answer] | 요청하신 `EntityWorldChangedEvent`를 수신하여 이전 월드(`OldWorld`)와 새 월드(`NewWorld`) 엔티티의 경로를 로그로 출력하는 mLua 스크립트입니다. 이벤트 핸들러는 `[self]` 태그를 사용하여 해당 엔티티에 붙인 스크립트 컴포넌트에서 처리하도록 구성했습니다. 엔티티의 경로는 `Entity.Path` 프로퍼티를 통해 접근할 수 있습니다. ```lua Event Handler: [self] HandleEntityWorldChangedEvent(EntityWorldChangedEvent ev [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | EntityWorldChangedEvent의 속성(OldWorld, NewWorld)과 Event Handler 문법, log 함수 사용이 모두 정확하며, nil 체크를 포함하여 질문에 완벽하게 부합합니다. [source_doc] | 엔티티가 속한 월드가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewWorld** 엔티티가 새로 속한 월드 엔티티입니다. - **Entity
[task] | single_turn [pass] | ❌ 탈락 [title] | EntityMapChangedEvent [question] | OldMap과 NewMap 프로퍼티에 담긴 엔티티를 통해 이전 맵과 새 맵의 경로(Path)를 비교하는 가장 안전한 코딩 패턴은 어떻게 되어 있나요? [answer] | `EntityMapChangedEvent` 이벤트는 엔티티가 다른 맵으로 이동할 때 발생하며, 이벤트 객체를 통해 이전 맵(`OldMap`)과 새 맵(`NewMap`) 엔티티를 직접 참조할 수 있습니다. 맵의 경로를 비교할 때는 엔티티 객체 자체의 `Path` 프로퍼티를 확인해야 합니다. 가장 안전한 코딩 패턴은 다음과 같은 원칙을 따르는 것입니다. 1. **널 체크 (Null Check)**: 이벤트 발생 시점이나 특정 상황(예: 최초 스폰, 맵 삭제)에 따라 `OldMap` 또는 `NewMap`이 `nil`일 수 있으므로, [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 엔티티의 Path 프로퍼티가 존재한다고 단정하여 사용했으나, 제공된 문서에는 Path 프로퍼티에 대한 언급이 없어 근거 없는 API 사용으로 판단됩니다. [source_doc] | 엔티티가 속한 맵이 변경되었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewMap** 엔티티가 새롭게 속하게 된 맵 엔티티입니다. - **Enti
[task] | two_turn [pass] | ✅ 통과 [title] | EntityPostModelSetEvent [question] | EntityPostModelSetEvent 핸들러를 작성할 때 어떤 서비스나 메서드를 사용해야 하나요 [answer] | 제공된 문서에 따르면, `EntityPostModelSetEvent` 핸들러를 작성할 때 특정 서비스나 메서드를 사용해야 한다는 지침은 없습니다. 해당 이벤트는 엔티티의 Model이 설정된 후 발생하며, 핸들러 내에서 사용할 수 있는 주요 속성은 다음과 같습니다. * **event.Model**: 설정된 Model * **event.Entity**: 이벤트를 발생시킨 엔티티 핸들러는 `[self]` 블록에 작성하며, 이벤트 객체를 파라미터로 받습니다. 예를 들어, Model이 설정된 후 해당 엔티티의 이름을 로그로 출력 [followup] | self:MyMethod() 형태로 이벤트를 처리하는 Event Handler 블록의 실제 mLua 코드 예시를 보여주세요. [followup_answer] | 참고 문서에는 `EntityPostModelSetEvent`의 프로퍼티와 생성자 정보만 제공되며, `self:MyMethod()` 형태의 커스텀 메서드를 호출하는 구체적인 mLua 코드 예제는 포함되어 있지 않습니다. 다만, 시스템 프롬프트의 [mLua 스크립트 규칙]과 제공된 실제 mLua 예제(예: `HandleTriggerEnterEvent`에서 `self:AttachTo(...)` 호출)를 기반으로, `EntityPostModelSetEvent` 핸들러에서 커스텀 메서드를 호출하는 표준적인 구조는 다음과 같습니다. ``` [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 특정 서비스 요구사항이 없음을 정확히 지적하고, 표준 mLua 문법(self, log, Event Handler 구조)에 기반한 올바른 예시를 제공하여 질문에 충실히 답변함. [source_doc] | 엔티티의 대상 Model 설정 후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Model Model** 설정된 Model입니다. ##### inherited from
[task] | single_turn [pass] | ✅ 통과 [title] | AvatarStateAnimationComponent [question] | RemoveActionSheet를 호출했을 때 key가 존재하지 않으면 어떤 오류가 발생하거나 로그가 출력되나요? [answer] | 제공된 문서에는 `RemoveActionSheet` 메서드가 존재하지 않는 key를 입력했을 때 발생하는 특정 오류 메시지나 로그 출력에 대한 정보가 포함되어 있지 않습니다. 문서에는 `RemoveActionSheet(string key)` 메서드가 "StateToAvatarBodyActionSheet에서 key에 해당하는 요소를 제거합니다"라고만 설명되어 있을 뿐, 예외 처리나 디버깅 로그와 관련된 내용은 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 문서에 없는 예외 처리 정보를 지어내지 않고, 문서에 해당 정보가 없음을 정확히 답변하여 질문에 충실하고 정확합니다. [source_doc] | - **void ReceiveStateChangeEvent(IEventSender sender, StateChangeEvent stateEvent) [ScriptOverridable]** StateChangeEvent가 발생했을 때 호출되는 메소드입니다. 변경된 상태에 대응하는 애니메이션이 메이플스토리 월드에서 제공하는 Native 애니메이션일 경우 BodyActionStateChangeEvent를 발생시킵니다. 애니메이션이 크리에이터가 제작한 Custom 애니메이션일 경우 BodyActionTypeChangeEvnet를 발생시
[task] | instruction_following [pass] | ✅ 통과 [title] | KinematicbodyComponent [question] | KinematicbodyComponent에서 로컬 좌표와 월드 좌표를 다루는 위치 관련 메서드 4개를 이름과 파라미터 타입을 포함해 표로 정리하세요. [answer] | KinematicbodyComponent에서 로컬 좌표와 월드 좌표를 다루는 위치 관련 메서드 4개는 다음과 같습니다. | 메서드 이름 | 파라미터 | 설명 | | :--- | :--- | :--- | | `GetGroundPosition()` | 없음 (없음) | 로컬 좌표 기준으로 바닥 위치를 반환합니다. | | `GetWorldGroundPosition()` | 없음 (없음) | 월드 좌표 기준으로 바닥 위치를 반환합니다. | | `SetPosition()` | `Vector2 position` | 로컬 좌표 기준으로 엔티티 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 4가지 위치 관련 메서드의 이름, 파라미터 타입, 설명을 정확하고 명확하게 표로 정리하여 질문에 완벽히 부합합니다. [source_doc] | - **Vector2 GetGroundPosition()** 로컬 좌표 기준으로 바닥 위치를 반환합니다. - **Vector2 GetWorldGroundPosition()** 월드 좌표 기준으로 바닥 위치를 반환합니다. - **boolean IsOnGround()** 현재 지면에 닿아 있는 상태인지 확인합니다. 점프 중일 때 false를 반환합니다. - **void OnEnterRectTile(RectTileEnterEvent enterEvent) [ScriptOverridable]** RectTileEnterEven
[task] | instruction_following [pass] | ✅ 통과 [title] | RectTileMapComponent [question] | RectTileMapComponent의 GridSize와 IsOddGridPosition 속성이 타일맵 배치에 미치는 영향을 3문장 이내로 설명하세요. [answer] | `GridSize` 속성은 타일맵 격자의 기본 크기를 정의하며, `IsOddGridPosition` 속성은 타일맵을 격자의 기준점과 어긋나게 배치하도록 설정합니다. 이 두 속성의 조합은 맵의 시각적 정렬과 타일이 차지하는 물리적 영역을 결정하여 레이아웃의 일관성을 유지하거나 의도적인 오프셋을 생성하는 데 사용됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 정의와 일치하며 3문장 이내로 명확하게 설명함 [source_doc] | 사각형 타일맵 기능을 제공합니다. # Properties - **Vector2 GridSize [Sync]** 격자의 크기입니다. - **boolean IgnoreMapLayerCheck** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **boolean IsOddGridPosition** 타일맵을 그리드의 기준점과 어긋나게 배치합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다
[task] | two_turn [pass] | ✅ 통과 [title] | EntityPostModelSetEvent [question] | EntityPostModelSetEvent가 무엇이며 어떤 상황에서 발생하는지 설명해 주세요 [answer] | `EntityPostModelSetEvent`는 엔티티의 대상 Model이 설정된 후에 발생하는 이벤트입니다. 이 이벤트는 `MODEntity` API를 통해 Model이 변경되거나 설정될 때 트리거되며, Server와 Client 양쪽 공간에서 동시에 발생합니다. 이벤트 객체를 통해 다음과 같은 정보를 접근할 수 있습니다. * `Model`: 이번 설정을 통해 지정된 Model 객체입니다. * `Entity`: 이 이벤트를 발생시킨 엔티티 객체입니다. (이 이벤트 타입의 기본 상속 프로퍼티) **mLua 스크립트에서 [followup] | 이 이벤트가 발생하는 MODEntity의 실행 공간(Server, Client)과 이벤트 핸들러에서 접근할 수 있는 Model, Entity 프로퍼티는 무엇인가요? [followup_answer] | `EntityPostModelSetEvent`는 `MODEntity` API에 의해 발생하며, 이 이벤트는 **Server**와 **Client** 양쪽 공간에서 발생합니다. 이벤트 핸들러에서 접근할 수 있는 프로퍼티는 다음과 같습니다. * **Model Model**: 이번 설정을 통해 지정된 Model 객체입니다. * **Entity Entity**: 이 이벤트를 발생시킨 엔티티 객체입니다. (EntityEventType에서 상속된 프로퍼티) **mLua 스크립트에서 프로퍼티 접근 예시** ```lua Event [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 이벤트 정의, 발생 조건(MODEntity, Server/Client), 프로퍼티(Model, Entity) 정보를 정확히 포함했으며, mLua 스크립트 규칙에 맞는 예제 코드를 제시하여 질문자에게 실질적인 도움을 주었습니다. [source_doc] | 엔티티의 대상 Model 설정 후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Model Model** 설정된 Model입니다. ##### inherited from
[task] | instruction_following [pass] | ✅ 통과 [title] | KinematicbodyComponent [question] | 점프 중 지면 접촉 상태 확인과 타일 충돌 활성화 로직을 포함하는 OnUpdate 메서드 코드만 출력하고, 각 줄의 의미를 주석으로 설명하세요. [answer] | ```lua Method: [client only] void OnUpdate () { -- 현재 실행 중인 엔티티가 로컬 플레이어(내가 조작하는 캐릭터)가 아니면 함수를 종료합니다. if _UserService.LocalPlayer ~= self.Entity then return end -- 엔티티에 붙어 있는 KinematicbodyComponent를 참조 변수에 저장합니다. local kinematicbody = self.Entity.KinematicbodyComponent [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하고 요청된 주석을 명확히 추가하여 질문에 완벽하게 부응합니다. [source_doc] | - **Vector2 GetGroundPosition()** 로컬 좌표 기준으로 바닥 위치를 반환합니다. - **Vector2 GetWorldGroundPosition()** 월드 좌표 기준으로 바닥 위치를 반환합니다. - **boolean IsOnGround()** 현재 지면에 닿아 있는 상태인지 확인합니다. 점프 중일 때 false를 반환합니다. - **void OnEnterRectTile(RectTileEnterEvent enterEvent) [ScriptOverridable]** RectTileEnterEven
[task] | two_turn [pass] | ✅ 통과 [title] | EntityWorldChangedEvent [question] | EntityWorldChangedEvent 가 어떤 상황에서 발생하며, OldWorld 와 NewWorld 프로퍼티를 어떻게 구분해서 사용해야 하는지 설명해 주세요. [answer] | `EntityWorldChangedEvent`는 엔티티가 속한 월드(맵)가 변경될 때 발생하는 이벤트입니다. 이 이벤트는 `MODEntity` API에 의해 트리거되며, 서버와 클라이언트 양쪽 공간에서 모두 발생하므로 `[server]`, `[client]`, 또는 `[multicast]` 중 적절한 실행 공간의 메서드나 이벤트 핸들러에서 처리할 수 있습니다. ### OldWorld와 NewWorld 프로퍼티 구분 이벤트 객체에는 엔티티의 월드 변경 전후 상태를 나타내는 두 개의 프로퍼티가 제공되며, 다음과 같이 구분하여 사용합 [followup] | EntityWorldChangedEvent 를 처리하는 Event Handler 를 작성할 때, OldWorld 가 nil 인 경우를 안전하게 체크하는 mLua 코드 예시를 보여주세요. [followup_answer] | `EntityWorldChangedEvent`를 처리할 때 `OldWorld`가 `nil`인 경우를 안전하게 체크하는 mLua 코드 예시는 다음과 같습니다. ```lua Event Handler: [self] HandleEntityWorldChangedEvent(EntityWorldChangedEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: MODEntity -- Space: Server, Client [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 이벤트 발생 조건, 프로퍼티 정의, 그리고 mLua 스크립트 규칙에 기반한 예제 코드가 정확하고 일관되며, nil 체크 등 실용적인 조언이 포함되어 있어 매우 유용합니다. [source_doc] | 엔티티가 속한 월드가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity NewWorld** 엔티티가 새로 속한 월드 엔티티입니다. - **Entity
[task] | single_turn [pass] | ✅ 통과 [title] | AvatarStateAnimationComponent [question] | SetActionSheet 메서드에서 두 번째 인자로 전달하는 animationClipRuid 값이 실제 애니메이션 클립 이름과 어떤 관계가 있나요? [answer] | 제공된 참고 문서에 따르면, `SetActionSheet` 메서드의 두 번째 인자인 `animationClipRuid`는 실제 애니메이션 클립의 "이름"이 아니라, 애니메이션 클립을 식별하는 **RUID(Resource UID)** 값입니다. 문서에서 `animationClipRuid`가 "애니메이션의 이름"으로 명시되어 있지 않으며, 파라미터 이름 자체가 RUID임을 시사하고 있습니다. 또한, 이 메서드를 호출할 때 해당 값이 `AvatarBodyActionElement` 객체의 `AvatarBodyActionStateName` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 파라미터 명명 규칙과 설명을 근거로 RUID와 이름의 차이를 논리적으로 추론하여 정확하고 간결하게 답변했습니다. [source_doc] | - **void ReceiveStateChangeEvent(IEventSender sender, StateChangeEvent stateEvent) [ScriptOverridable]** StateChangeEvent가 발생했을 때 호출되는 메소드입니다. 변경된 상태에 대응하는 애니메이션이 메이플스토리 월드에서 제공하는 Native 애니메이션일 경우 BodyActionStateChangeEvent를 발생시킵니다. 애니메이션이 크리에이터가 제작한 Custom 애니메이션일 경우 BodyActionTypeChangeEvnet를 발생시
[task] | single_turn [pass] | ❌ 탈락 [title] | EntityPostModelSetEvent [question] | MODEntity API 로 모델 변경 후 EntityPostModelSetEvent 가 발생하는 시점과 OnBeginPlay 와의 관계가 어떻게 되나요? [answer] | `EntityPostModelSetEvent`는 `MODEntity` API를 통해 엔티티의 Model이 설정된 **직후** 발생하는 이벤트입니다. **발생 시점 및 `OnBeginPlay`와의 관계:** 1. **발생 시점**: * `MODEntity` API를 호출하여 Model 변경을 요청하면, 서버 및 클라이언트 모두에서 해당 Model이 실제로 적용된 시점에 `EntityPostModelSetEvent`가 발생합니다. * 즉, Model 변경 요청과 동시에 발생하는 것이 아니라, **변경이 완료된 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=1 coherence=3 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 없는 MODEntity API와 SetModel 메서드, 컴포넌트 접근 방식을 지어내어 정확성이 낮으나, 이벤트 발생 시점과 생명주기 메서드와의 관계 설명 자체는 논리적으로 일관성이 있습니다. [source_doc] | 엔티티의 대상 Model 설정 후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Model Model** 설정된 Model입니다. ##### inherited from
[task] | code [pass] | ✅ 통과 [title] | AvatarStateAnimationComponent [question] | AvatarStateAnimationComponent의 RemoveActionSheet 메서드를 호출하여 "walk" 상태에 매핑된 애니메이션을 제거하는 스크립트를 작성해줘 [answer] | ```lua Method: [client] void RemoveWalkAnimation () { local avatarStateAnimation = self.Entity.AvatarStateAnimationComponent avatarStateAnimation:RemoveActionSheet("walk") } ``` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청된 RemoveActionSheet 호출 로직은 정확하지만, 실행 공간 [client] 제한과 메서드 호출 시점(OnBeginPlay 등)이 명시되지 않아 실제 적용 시 주의가 필요함. [source_doc] | - **void ReceiveStateChangeEvent(IEventSender sender, StateChangeEvent stateEvent) [ScriptOverridable]** StateChangeEvent가 발생했을 때 호출되는 메소드입니다. 변경된 상태에 대응하는 애니메이션이 메이플스토리 월드에서 제공하는 Native 애니메이션일 경우 BodyActionStateChangeEvent를 발생시킵니다. 애니메이션이 크리에이터가 제작한 Custom 애니메이션일 경우 BodyActionTypeChangeEvnet를 발생시
[task] | code [pass] | ❌ 탈락 [title] | EntityPostInitAdditionalComponentsEvent [question] | `EntityPostInitAdditionalComponentsEvent` 수신 시 `_UserService` 를 통해 해당 엔티티가 소유한 유저의 `UserId` 를 조회하여 `log` 로 출력하는 핸들러를 작성해줘 [answer] | 제공된 참고 문서에는 `EntityPostInitAdditionalComponentsEvent` 의 구조(프로퍼티, 생성자)와 발생 공간(Client)은 정의되어 있지만, **`_UserService` 에 해당 엔티티를 `UserId` 로 역조회하는 API(예: `GetUserIdByEntity` 등)가 존재하는지 여부는 명시되어 있지 않습니다.** mLua API 문서 기준으로 `_UserService` 는 일반적으로 `UserId` 를 입력받아 `Entity` 를 반환하는 `GetUserEntityByUserId` 등을 제공하 [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=1 coherence=3 complexity=3 verbosity=5 [judge_reason] | 문서에 없는 API를 지어내지 않고 사실관계를 지적한 점은 정확하지만, 질문의 의도(핸들러 작성)를 무시하고 불가능하다고만 결론 내리며 불필요하게 장황하게 설명하여 도움이 되지 않습니다. [source_doc] | 엔티티의 추가적인 컴포넌트들이 초기화된 이후 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * MODEntity <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties ##### inherited from EntityEventType: - **Entity Entity** 이벤트
[task] | single_turn [pass] | ✅ 통과 [title] | AvatarStateAnimationComponent [question] | ReceiveStateChangeEvent 핸들러에서 Custom 애니메이션과 Native 애니메이션에 따라 발생하는 이벤트가 BodyActionTypeChangeEvnet과 BodyActionStateChangeEvent로 나뉘는 기준은 무엇인가요? [answer] | `ReceiveStateChangeEvent` 핸들러에서 발생하는 이벤트의 종류는 **변경된 상태에 대응하는 애니메이션의 출처**에 따라 결정됩니다. 구체적인 기준은 다음과 같습니다. 1. **Native 애니메이션인 경우:** * 해당 애니메이션이 메이플스토리 월드에서 기본적으로 제공하는 **Native 애니메이션**일 경우, `BodyActionStateChangeEvent`가 발생합니다. 2. **Custom 애니메이션인 경우:** * 해당 애니메이션이 크리에이터가 직접 제작한 **Custom 애 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 Native/Custm 애니메이션에 따른 이벤트 발생 기준을 정확하고 명확하게 설명하였습니다. [source_doc] | - **void ReceiveStateChangeEvent(IEventSender sender, StateChangeEvent stateEvent) [ScriptOverridable]** StateChangeEvent가 발생했을 때 호출되는 메소드입니다. 변경된 상태에 대응하는 애니메이션이 메이플스토리 월드에서 제공하는 Native 애니메이션일 경우 BodyActionStateChangeEvent를 발생시킵니다. 애니메이션이 크리에이터가 제작한 Custom 애니메이션일 경우 BodyActionTypeChangeEvnet를 발생시