{"title":"Battle Timed Lock Actor Flag Review","subject":"actor +0x62 bit 0x02","summary":["actor +0x62 bit 0x02 is a timed command/action lock flag.","Most 0x02 producers pair it with +0x64 timer and +0x66 prior-status backup.","The common recovery path at 0x43512e decrements +0x64 and clears only bit 0x02 with &=0xfd after timer/random recovery.","The action-script gate at 0x40db36 tests mask 0x83, so 0x02 actors branch away from the normal action stream like 0x01 and 0x80 actors.","A special 0x0a state can carry bit 0x02 with timer 0, then transition into +0x2a=0x15 with a real timer before normal recovery."],"producerRows":[{"va":4410650,"source":"Smash eye-candy terminal state","status":"+0x2a=0x0f","timer":"+0x64=random(2)+2","flag":"+0x62|=0x02","meaning":"스마슈 눈요기 고유 모드가 끝 상태에 닿으면 timed command lock을 건다.","confidence":"확정: write path"},{"va":4410863,"source":"Linshang provoke duplicate roll","status":"+0x2a=0x14","timer":"+0x64=random(2)+2","flag":"+0x62|=0x02","meaning":"도발이 현재 모드와 같은 값을 다시 뽑으면 피곤함 계열 timed lock으로 전환한다.","confidence":"확정: write path"},{"va":4411271,"source":"status result 5","status":"+0x2a=0x1a","timer":"+0x64=random(3)+4","flag":"+0x62|=0x02","meaning":"전투 상태 result 5: 마비. 해독초/기공독치료에서 이 bit가 해제된다.","confidence":"확정: status mapping + bit write"},{"va":4411329,"source":"status result 6","status":"+0x2a=0x15","timer":"+0x64 += random(3)+4","flag":"+0x62|=0x02","meaning":"전투 상태 result 6: 졸림. 장기 command lock 계열이다.","confidence":"확정: status mapping + bit write"},{"va":4412003,"source":"Ataho drunk-mode failure check","status":"+0x2a=0x0a","timer":"+0x64=0","flag":"+0x62|=0x02","meaning":"0x0a는 timer 0인 중간 상태다. 같은 routine 후반에서 0x15 + timer로 넘어가는 경로가 있다.","confidence":"고신뢰"}],"consumerRows":[{"va":4411694,"consumer":"timed status recovery","condition":"if +0x64>0: decrement; recover when timer reaches 0 or random gate passes","effect":"restore +0x2a from +0x66 when present; clear +0x66/+0x64; +0x62&=0xfd","meaning":"일반 timed lock 해제 경로. bit 0x02만 지운다."},{"va":4411866,"consumer":"0x0a secondary transition","condition":"if +0x2a==0x0a and random(2)!=0","effect":"+0x2a=0x15; +0x64=random(3)+4; +0x65=0; +0x68=1","meaning":"timer 0인 0x0a lock은 바로 clear되지 않고 0x15 timed lock으로 승격될 수 있다."},{"va":4409750,"consumer":"antidote/paralysis cure","condition":"if +0x2a==0x1a","effect":"+0x62|=0x01, restore +0x2a from +0x66, clear +0x66/+0x64, +0x62&=0xfd","meaning":"마비 해제는 0x02를 지우고 0x01 one-turn latch를 세운다."},{"va":4250422,"consumer":"action-script current-order gate","condition":"test +0x62, 0x83","effect":"0x02가 세워진 actor는 normal action stream 대신 branch target으로 간다.","meaning":"timed lock actor는 명령/action script 진행에서 제외된다."}],"relatedFields":[["actor+0x2a","현재 자세/상태 id."],["actor+0x62 bit 0x02","timed command lock flag."],["actor+0x64","timed lock timer. 일반 회복 루틴은 이 값을 감소시키고 random gate를 통과하면 0x02를 지운다."],["actor+0x65","아타호 술취함 내부 누적치. 0x0a->0x15 전환에서 0으로 정리된다."],["actor+0x66","상태 진입 전 +0x2a 백업 슬롯."],["actor+0x68","표시/상태 갱신 dirty flag."],["actor+0x69","아타호 곤드레만드레 hazard check pending flag. 처리 뒤 0으로 정리된다."],["actor+0x26","timed recovery random gate에서 /10 기준값으로 쓰이는 actor stat word."]],"evidence":[{"label":"Smash eye-candy can produce timed lock 0x0f","range":"0x00434cbb..0x00434d8d","lines":["  434cc4:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434cc7:\t33 c9                \txor    ecx,ecx","  434cc9:\t8a 48 66             \tmov    cl,BYTE PTR [eax+0x66]","  434ccc:\t85 c9                \ttest   ecx,ecx","  434cce:\t0f 85 0c 00 00 00    \tjne    0x434ce0","  434d15:\te9 67 00 00 00       \tjmp    0x434d81","  434d1a:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434d1d:\tc6 40 2a 0f          \tmov    BYTE PTR [eax+0x2a],0xf","  434d21:\t6a 02                \tpush   0x2","  434d23:\te8 08 2a ff ff       \tcall   0x427730","  434d2e:\t83 c0 02             \tadd    eax,0x2","  434d31:\t8b 4d 0c             \tmov    ecx,DWORD PTR [ebp+0xc]","  434d34:\t88 41 64             \tmov    BYTE PTR [ecx+0x64],al","  434d37:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434d3a:\t33 c9                \txor    ecx,ecx","  434d3c:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  434d3f:\t80 c9 02             \tor     cl,0x2","  434d42:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434d45:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl","  434d7c:\te9 cc ff ff ff       \tjmp    0x434d4d","  434d81:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434d84:\tc6 40 68 01          \tmov    BYTE PTR [eax+0x68],0x1","  434d88:\t5f                   \tpop    edi","  434d89:\t5e                   \tpop    esi"]},{"label":"Linshang provoke duplicate roll can produce timed lock 0x14","range":"0x00434d8d..0x00434e29","lines":["  434dea:\te9 2e 00 00 00       \tjmp    0x434e1d","  434def:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434df2:\tc6 40 2a 14          \tmov    BYTE PTR [eax+0x2a],0x14","  434df6:\t6a 02                \tpush   0x2","  434df8:\te8 33 29 ff ff       \tcall   0x427730","  434e03:\t83 c0 02             \tadd    eax,0x2","  434e06:\t8b 4d 0c             \tmov    ecx,DWORD PTR [ebp+0xc]","  434e09:\t88 41 64             \tmov    BYTE PTR [ecx+0x64],al","  434e0c:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434e0f:\t33 c9                \txor    ecx,ecx","  434e11:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  434e14:\t80 c9 02             \tor     cl,0x2","  434e17:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434e1a:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl","  434e1d:\t8b 45 0c             \tmov    eax,DWORD PTR [ebp+0xc]","  434e20:\tc6 40 68 01          \tmov    BYTE PTR [eax+0x68],0x1","  434e24:\t5f                   \tpop    edi","  434e25:\t5e                   \tpop    esi"]},{"label":"battle status effect values 5/6 produce 0x02 locks","range":"0x00434f77..0x00435039","lines":["  434f82:\te9 83 00 00 00       \tjmp    0x43500a","  434f87:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  434f8a:\tc6 40 2a 1a          \tmov    BYTE PTR [eax+0x2a],0x1a","  434f8e:\t6a 03                \tpush   0x3","  434f90:\te8 9b 27 ff ff       \tcall   0x427730","  434fa7:\t33 c9                \txor    ecx,ecx","  434fa9:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  434fac:\t80 c9 02             \tor     cl,0x2","  434faf:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  434fb2:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl","  434fbc:\te9 62 00 00 00       \tjmp    0x435023","  434fc1:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  434fc4:\tc6 40 2a 15          \tmov    BYTE PTR [eax+0x2a],0x15","  434fc8:\t6a 03                \tpush   0x3","  434fca:\te8 61 27 ff ff       \tcall   0x427730","  434feb:\t33 c9                \txor    ecx,ecx","  434fed:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  434ff0:\t80 c9 02             \tor     cl,0x2","  434ff3:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  434ff6:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"]},{"label":"timed recovery clears bit 0x02","range":"0x0043512e..0x004351da","lines":["  435137:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  43513a:\t33 c9                \txor    ecx,ecx","  43513c:\t8a 48 64             \tmov    cl,BYTE PTR [eax+0x64]","  43513f:\t85 c9                \ttest   ecx,ecx","  435141:\t0f 84 93 00 00 00    \tje     0x4351da","  435147:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  43514a:\tfe 48 64             \tdec    BYTE PTR [eax+0x64]","  43514d:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435150:\t33 c9                \txor    ecx,ecx","  435152:\t66 8b 48 26          \tmov    cx,WORD PTR [eax+0x26]","  435156:\tbb 0a 00 00 00       \tmov    ebx,0xa","  43515b:\t8b c1                \tmov    eax,ecx","  435164:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435167:\t33 c9                \txor    ecx,ecx","  435169:\t8a 48 64             \tmov    cl,BYTE PTR [eax+0x64]","  43516c:\t85 c9                \ttest   ecx,ecx","  43516e:\t0f 84 2b 00 00 00    \tje     0x43519f","  435174:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435177:\t66 0f b6 40 64       \tmovzx  ax,BYTE PTR [eax+0x64]","  43517c:\t50                   \tpush   eax","  43517d:\te8 ae 25 ff ff       \tcall   0x427730","  43519f:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  4351a2:\t33 c9                \txor    ecx,ecx","  4351a4:\t8a 48 66             \tmov    cl,BYTE PTR [eax+0x66]","  4351a7:\t85 c9                \ttest   ecx,ecx","  4351a9:\t0f 84 13 00 00 00    \tje     0x4351c2","  4351af:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  4351b2:\t8a 40 66             \tmov    al,BYTE PTR [eax+0x66]","  4351b5:\t8b 4d 08             \tmov    ecx,DWORD PTR [ebp+0x8]","  4351b8:\t88 41 2a             \tmov    BYTE PTR [ecx+0x2a],al","  4351bb:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  4351be:\tc6 40 66 00          \tmov    BYTE PTR [eax+0x66],0x0","  4351c2:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  4351c5:\tc6 40 64 00          \tmov    BYTE PTR [eax+0x64],0x0","  4351c9:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  4351cc:\t33 c9                \txor    ecx,ecx","  4351ce:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  4351d1:\t80 e1 fd             \tand    cl,0xfd","  4351d4:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  4351d7:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl"]},{"label":"0x0a can turn into 0x15 timed lock","range":"0x004351da..0x00435290","lines":["  4351dd:\t33 c9                \txor    ecx,ecx","  4351df:\t8a 48 2a             \tmov    cl,BYTE PTR [eax+0x2a]","  4351e2:\t83 f9 0a             \tcmp    ecx,0xa","  4351e5:\t0f 85 40 00 00 00    \tjne    0x43522b","  4351eb:\t6a 02                \tpush   0x2","  4351fa:\t0f 84 2b 00 00 00    \tje     0x43522b","  435200:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435203:\tc6 40 2a 15          \tmov    BYTE PTR [eax+0x2a],0x15","  435207:\t6a 03                \tpush   0x3","  435209:\te8 22 25 ff ff       \tcall   0x427730","  435214:\t83 c0 04             \tadd    eax,0x4","  435217:\t8b 4d 08             \tmov    ecx,DWORD PTR [ebp+0x8]","  43521a:\t88 41 64             \tmov    BYTE PTR [ecx+0x64],al","  43521d:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435220:\tc6 40 65 00          \tmov    BYTE PTR [eax+0x65],0x0","  435224:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435227:\tc6 40 68 01          \tmov    BYTE PTR [eax+0x68],0x1","  43526a:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  43526d:\t33 c9                \txor    ecx,ecx","  43526f:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  435272:\t80 c9 02             \tor     cl,0x2","  435275:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  435278:\t88 48 62             \tmov    BYTE PTR [eax+0x62],cl","  43527b:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  43527e:\tc6 40 64 00          \tmov    BYTE PTR [eax+0x64],0x0","  435285:\tc6 40 68 01          \tmov    BYTE PTR [eax+0x68],0x1","  435289:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  43528c:\tc6 40 69 00          \tmov    BYTE PTR [eax+0x69],0x0"]},{"label":"action script gate includes bit 0x02 in mask 0x83","range":"0x0040db36..0x0040db8c","lines":["  40db5b:\t8b 45 fc             \tmov    eax,DWORD PTR [ebp-0x4]","  40db5e:\t33 c9                \txor    ecx,ecx","  40db60:\t8a 48 62             \tmov    cl,BYTE PTR [eax+0x62]","  40db63:\tf6 c1 83             \ttest   cl,0x83","  40db66:\t0f 84 14 00 00 00    \tje     0x40db80","  40db6c:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  40db6f:\t8b 40 40             \tmov    eax,DWORD PTR [eax+0x40]","  40db72:\t8b 40 04             \tmov    eax,DWORD PTR [eax+0x4]","  40db75:\t8b 4d 08             \tmov    ecx,DWORD PTR [ebp+0x8]","  40db78:\t89 41 40             \tmov    DWORD PTR [ecx+0x40],eax","  40db7b:\te9 07 00 00 00       \tjmp    0x40db87","  40db80:\t8b 45 08             \tmov    eax,DWORD PTR [ebp+0x8]","  40db83:\t83 40 40 08          \tadd    DWORD PTR [eax+0x40],0x8","  40db87:\t5f                   \tpop    edi","  40db88:\t5e                   \tpop    esi"]}]}