From 85591c68ad5f7d7b0639d7bd3e89c6e0bf8e9c40 Mon Sep 17 00:00:00 2001 From: hided62 Date: Sun, 23 Aug 2026 16:26:09 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20Ref=20=EA=B2=8C=EC=9E=84=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=EA=B3=BC=20=EC=8B=9C=EB=82=98=EB=A6=AC=EC=98=A4=20?= =?UTF-8?q?=ED=92=80=20=ED=98=B8=ED=99=98=EC=9D=84=20=EB=B3=B4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 월 경계, 전투 기술 상한, 연감과 베팅·설문·경매 정산 순서를 Ref 계약에 맞춘다.\n\n시나리오 일반 풀을 ENGINE mutation과 logical tick 기반으로 직렬화하고 914·915 catalog 및 조건부 100기 pool 실행 경계를 추가한다.\n\n경매 worker는 세대별 durable event만 만들고 ENGINE이 row lock 후 상태 전이와 정산을 단일 transaction으로 소유한다. --- app/game-api/src/auction/worker.ts | 228 +- app/game-api/src/battleSim/environment.ts | 1 + app/game-api/src/daemon/databaseTransport.ts | 24 +- app/game-api/src/router/auction/index.ts | 30 +- app/game-api/src/router/inherit/index.ts | 21 +- app/game-api/src/router/join/index.ts | 57 +- app/game-api/src/router/npc/index.ts | 11 +- app/game-api/src/router/tournament/index.ts | 15 +- app/game-api/src/router/vote/index.ts | 164 +- app/game-api/src/router/yearbook/index.ts | 44 +- app/game-api/src/tournament/worker.ts | 1 + app/game-api/src/tournament/workerHelpers.ts | 15 +- app/game-api/src/turns/commandTable.ts | 27 +- app/game-api/test/auctionRouter.test.ts | 62 + .../test/auctionWorker.integration.test.ts | 30 +- app/game-api/test/auctionWorker.test.ts | 253 +- .../directMutationJournalInventory.test.ts | 2 +- app/game-api/test/idempotentTransport.test.ts | 109 + app/game-api/test/inheritRouter.test.ts | 31 +- app/game-api/test/router.test.ts | 36 + .../test/selectPool.integration.test.ts | 41 + app/game-api/test/selectPoolRng.test.ts | 20 +- app/game-api/test/tournamentRouter.test.ts | 42 +- app/game-api/test/tournamentWorker.test.ts | 18 + app/game-api/test/voteRouter.test.ts | 79 +- .../test/yearbookArchiveRouter.test.ts | 87 +- app/game-engine/src/auction/bidder.ts | 102 +- app/game-engine/src/auction/finalizer.ts | 401 +- app/game-engine/src/auction/opener.ts | 28 +- .../src/lifecycle/turnDaemonLifecycle.ts | 9 +- .../src/scenario/generalPoolLoader.ts | 58 +- .../src/turn/ai/generalAi/constraint.ts | 1 + app/game-engine/src/turn/ai/generalAi/core.ts | 8 +- .../ai/generalAi/general/economyActions.ts | 3 +- .../ai/generalAi/general/recruitActions.ts | 13 +- .../src/turn/ai/generalAi/nation/rewards.ts | 3 +- app/game-engine/src/turn/ai/policies.ts | 13 +- app/game-engine/src/turn/commandRegistry.ts | 38 +- app/game-engine/src/turn/databaseHooks.ts | 77 + app/game-engine/src/turn/inMemoryWorld.ts | 117 +- .../src/turn/joinCreateGeneralService.ts | 5 +- .../turn/monthlyCentennialAllStarAction.ts | 98 + .../src/turn/monthlyCreateManyNpcAction.ts | 78 +- .../src/turn/monthlyEventHandler.ts | 4 +- .../src/turn/monthlyNationBettingAction.ts | 8 +- .../src/turn/monthlyRaiseNpcNationAction.ts | 80 +- .../src/turn/reservedTurnHandler.ts | 19 + app/game-engine/src/turn/selectPoolService.ts | 479 +- app/game-engine/src/turn/turnDaemon.ts | 5 +- app/game-engine/src/turn/types.ts | 12 + .../src/turn/unificationHandler.ts | 3 +- .../src/turn/worldCommandHandler.ts | 413 +- app/game-engine/src/turn/worldLoader.ts | 31 +- app/game-engine/src/turn/yearbookHandler.ts | 66 +- .../test/auctionBidCompatibility.test.ts | 220 + .../auctionFinalizerCompatibility.test.ts | 446 ++ .../test/centennialAllStarPool.test.ts | 115 + .../generalAiLegacyDecisionParity.test.ts | 27 +- .../test/generalPoolLoader.test.ts | 31 + .../test/generalPoolSameTurn.test.ts | 214 + .../test/generalTurnLifecycle.test.ts | 27 +- .../test/inMemoryGeneralPool.test.ts | 273 + .../test/monthlyCatalogCoverage.test.ts | 75 +- .../monthlyCentennialAllStarAction.test.ts | 232 + .../test/monthlyCreateManyNpcAction.test.ts | 142 +- .../test/monthlyNationBettingAction.test.ts | 74 +- .../test/monthlyRaiseNpcNationAction.test.ts | 143 +- app/game-engine/test/refSourceRoot.ts | 45 + ...eClockShiftPersistence.integration.test.ts | 30 + .../scenario903GeneralPoolComposition.test.ts | 166 + app/game-engine/test/scenarioLoader.test.ts | 103 +- ...PoolReleasePersistence.integration.test.ts | 284 +- .../test/selectPoolReservation.test.ts | 252 + .../test/tournamentCommands.test.ts | 53 +- .../test/turnDaemonLifecycle.test.ts | 43 + .../test/unificationHandler.test.ts | 11 +- app/game-engine/test/voteReward.test.ts | 203 +- app/game-engine/test/yearbookHandler.test.ts | 192 + package.json | 1 + packages/common/src/turnDaemon/types.ts | 65 +- packages/infra/src/turnEngineDb.ts | 13 + packages/logic/src/actions/index.ts | 1 + .../logic/src/actions/turn/actionContext.ts | 3 + .../src/actions/turn/actionContextHelpers.ts | 1 + .../src/actions/turn/general/che_숙련전환.ts | 16 +- .../src/actions/turn/general/che_인재탐색.ts | 144 +- .../src/actions/turn/general/che_전투태세.ts | 2 +- .../src/actions/turn/general/che_징병.ts | 35 +- .../logic/src/actions/turn/generalPool.ts | 202 + .../src/actions/turn/nation/che_의병모집.ts | 217 +- .../logic/src/battleSimulator/processor.ts | 4 +- .../logic/src/items/che_능력치_무력_두강주.ts | 8 +- .../logic/src/items/che_능력치_지력_이강주.ts | 8 +- .../src/items/che_능력치_통솔_보령압주.ts | 8 +- .../logic/src/scenario/centennialAllStar.ts | 672 +++ packages/logic/src/scenario/index.ts | 1 + packages/logic/src/triggers/general.ts | 1 + packages/logic/src/war/actions.ts | 3 + packages/logic/src/war/aftermath.ts | 2 +- packages/logic/src/war/engine.ts | 12 +- packages/logic/src/war/types.ts | 1 + packages/logic/src/war/units/general.ts | 13 +- packages/logic/src/world/unitSet.ts | 15 +- .../test/actions/turn/generalPool.test.ts | 129 + .../turn/nationVolunteerRecruit.test.ts | 165 +- .../turn/talentScoutGeneralPool.test.ts | 229 + packages/logic/test/centennialAllStar.test.ts | 229 + packages/logic/test/crewTypeExecution.test.ts | 35 +- packages/logic/test/itemActionEvents.test.ts | 28 + packages/logic/test/warAftermath.test.ts | 58 +- packages/logic/test/warEngine.test.ts | 39 + resources/general-pool/SPoolUnderU100.json | 4688 +++++++++++++++++ resources/scenario/scenario_914.json | 134 + resources/scenario/scenario_915.json | 25 + 114 files changed, 13327 insertions(+), 901 deletions(-) create mode 100644 app/game-engine/src/turn/monthlyCentennialAllStarAction.ts create mode 100644 app/game-engine/test/auctionBidCompatibility.test.ts create mode 100644 app/game-engine/test/auctionFinalizerCompatibility.test.ts create mode 100644 app/game-engine/test/centennialAllStarPool.test.ts create mode 100644 app/game-engine/test/generalPoolSameTurn.test.ts create mode 100644 app/game-engine/test/inMemoryGeneralPool.test.ts create mode 100644 app/game-engine/test/monthlyCentennialAllStarAction.test.ts create mode 100644 app/game-engine/test/refSourceRoot.ts create mode 100644 app/game-engine/test/scenario903GeneralPoolComposition.test.ts create mode 100644 app/game-engine/test/selectPoolReservation.test.ts create mode 100644 app/game-engine/test/yearbookHandler.test.ts create mode 100644 packages/logic/src/actions/turn/generalPool.ts create mode 100644 packages/logic/src/scenario/centennialAllStar.ts create mode 100644 packages/logic/test/actions/turn/generalPool.test.ts create mode 100644 packages/logic/test/actions/turn/talentScoutGeneralPool.test.ts create mode 100644 packages/logic/test/centennialAllStar.test.ts create mode 100644 resources/general-pool/SPoolUnderU100.json create mode 100644 resources/scenario/scenario_914.json create mode 100644 resources/scenario/scenario_915.json diff --git a/app/game-api/src/auction/worker.ts b/app/game-api/src/auction/worker.ts index a4a50b39..eff528d6 100644 --- a/app/game-api/src/auction/worker.ts +++ b/app/game-api/src/auction/worker.ts @@ -1,7 +1,6 @@ import { createGamePostgresConnector, createRedisConnector, - GamePrisma, type GamePrismaClient, resolvePostgresConfigFromEnv, resolveRedisConfigFromEnv, @@ -9,7 +8,7 @@ import { import { resolveGameApiConfigFromEnv } from '../config.js'; import { createBestEffortResourceCloser } from '../services/bestEffortResourceCloser.js'; -import { loadCurrentGameTime } from '../services/gameClock.js'; +import { loadCurrentGameTime, type CurrentGameTime } from '../services/gameClock.js'; import { createPollingWorkerControl, waitForWorkerPoll } from '../services/pollingWorkerLifecycle.js'; import { buildAuctionTimerKeys } from './keys.js'; import { resolveAuctionTimerScore, seedAuctionTimers } from './scheduler.js'; @@ -29,27 +28,84 @@ interface RedisTimerClient { const AUCTION_FINALIZE_RECOVERY_LIMIT = 1; -const buildAuctionFinalizeRequestId = (auctionId: number, closeAt: Date, retry = 0): string => { - const generation = closeAt.getTime(); +interface AuctionFinalizeDeadline { + closeAt: Date; + closeTick: bigint | null; +} + +interface AuctionFinalizeCommand { + type: 'auctionFinalize'; + requestId: string; + auctionId: number; + expectedCloseAt: string; + expectedCloseTick?: number; +} + +interface AuctionFinalizeEventRecord { + target: string; + eventType: string; + payload: unknown; + status: string; + result: unknown; +} + +const readSafeCloseTick = (closeTick: bigint | null): number | undefined => { + if (closeTick === null) return undefined; + const value = Number(closeTick); + if (!Number.isSafeInteger(value)) { + throw new Error(`Auction close tick is unsafe: ${closeTick}`); + } + return value; +}; + +export const buildAuctionFinalizeRequestId = ( + auctionId: number, + deadline: AuctionFinalizeDeadline, + retry = 0 +): string => { + const generation = + deadline.closeTick === null ? deadline.closeAt.getTime().toString() : `tick:${deadline.closeTick.toString()}`; const base = `auction:finalize:${auctionId}:${generation}`; return retry > 0 ? `${base}:retry:${retry}` : base; }; +const buildLegacyAuctionFinalizeRequestId = (auctionId: number, closeAt: Date, retry = 0): string => { + const base = `auction:finalize:${auctionId}:${closeAt.getTime()}`; + return retry > 0 ? `${base}:retry:${retry}` : base; +}; + +const buildAuctionFinalizeCommand = ( + auctionId: number, + deadline: AuctionFinalizeDeadline, + requestId: string +): AuctionFinalizeCommand => ({ + type: 'auctionFinalize', + requestId, + auctionId, + expectedCloseAt: deadline.closeAt.toISOString(), + ...(deadline.closeTick === null ? {} : { expectedCloseTick: readSafeCloseTick(deadline.closeTick) }), +}); + const isMatchingAuctionFinalizeEvent = ( event: { target: string; eventType: string; payload: unknown }, - command: { type: 'auctionFinalize'; requestId: string; auctionId: number } + command: AuctionFinalizeCommand ): boolean => { const payload = event.payload; const payloadRecord = payload !== null && typeof payload === 'object' && !Array.isArray(payload) ? (payload as Record) : null; + const expectedGenerationMatches = + payloadRecord?.expectedCloseTick !== undefined + ? payloadRecord.expectedCloseTick === command.expectedCloseTick + : payloadRecord?.expectedCloseAt === undefined || payloadRecord.expectedCloseAt === command.expectedCloseAt; return ( event.target === 'ENGINE' && event.eventType === command.type && payloadRecord?.type === command.type && payloadRecord.requestId === command.requestId && - payloadRecord.auctionId === command.auctionId + payloadRecord.auctionId === command.auctionId && + expectedGenerationMatches ); }; @@ -80,6 +136,66 @@ const getNextDueMs = async (redis: RedisTimerClient, timerKey: string): Promise< return next[0]?.score ?? null; }; +export const reconcilePendingAuctionTimers = async (options: { + db: Pick; + redis: Pick; + timerKey: string; + auctionIds: readonly number[]; + gameTime: CurrentGameTime; +}): Promise<{ pendingIds: number[]; rescheduled: number }> => { + const auctionIds = [...new Set(options.auctionIds)]; + if (auctionIds.length === 0) { + return { pendingIds: [], rescheduled: 0 }; + } + const rows = await options.db.auction.findMany({ + where: { id: { in: auctionIds } }, + select: { id: true, status: true, closeAt: true, closeTick: true }, + }); + const pendingIds: number[] = []; + const timers: Array<{ score: number; value: string }> = []; + for (const row of rows) { + if (row.status !== 'OPEN' && row.status !== 'FINALIZING') { + continue; + } + const deadline = { closeAt: row.closeAt, closeTick: row.closeTick }; + const canonicalBase = buildAuctionFinalizeRequestId(row.id, deadline); + const legacyBase = buildLegacyAuctionFinalizeRequestId(row.id, row.closeAt); + const bases = [...new Set([canonicalBase, legacyBase])]; + const events = await options.db.inputEvent.findMany({ + where: { + OR: bases.flatMap((base) => [{ requestId: base }, { requestId: { startsWith: `${base}:retry:` } }]), + }, + select: { requestId: true, target: true, eventType: true, payload: true, status: true }, + orderBy: { sequence: 'desc' }, + }); + const hasPendingCurrentGeneration = events.some((event) => { + if (event.status !== 'PENDING' && event.status !== 'PROCESSING') return false; + return isMatchingAuctionFinalizeEvent( + event, + buildAuctionFinalizeCommand(row.id, deadline, event.requestId) + ); + }); + if (hasPendingCurrentGeneration) { + pendingIds.push(row.id); + continue; + } + timers.push({ + score: + row.status === 'FINALIZING' + ? (options.gameTime.tick ?? options.gameTime.now.getTime()) + : resolveAuctionTimerScore(options.gameTime, row.closeAt, row.closeTick), + value: String(row.id), + }); + } + if (pendingIds.length > 0) { + await options.redis.zRem(options.timerKey, pendingIds.map(String)); + } + if (timers.length > 0) { + await options.redis.zAdd(options.timerKey, timers); + } + return { pendingIds, rescheduled: timers.length }; +}; + export const processDueAuctionId = async (options: { db: GamePrismaClient; redis: RedisTimerClient; @@ -89,7 +205,7 @@ export const processDueAuctionId = async (options: { nowMs: number; nowTick?: number | null; historyNowMs?: number; -}): Promise<'FINALIZING' | 'RESCHEDULED' | 'IGNORED'> => { +}): Promise<'PENDING' | 'RESCHEDULED' | 'IGNORED'> => { const { db, redis, timerKey, historyKey, id, nowMs, nowTick = null, historyNowMs = nowMs } = options; const auctionId = Number(id); if (!Number.isSafeInteger(auctionId) || auctionId < 1) { @@ -97,73 +213,75 @@ export const processDueAuctionId = async (options: { } const now = new Date(nowMs); const outcome = await db.$transaction(async (transaction) => { - const updated = await transaction.$executeRaw( - GamePrisma.sql` - UPDATE auction - SET status = 'FINALIZING', - finalizing_at = ${now}, - updated_at = ${now} - WHERE id = ${auctionId} - AND status = 'OPEN' - AND ( - (close_tick IS NOT NULL AND close_tick <= ${nowTick === null ? null : BigInt(nowTick)}) - OR (close_tick IS NULL AND close_at <= ${now}) - ) - ` - ); - const current = await transaction.auction.findUnique({ where: { id: auctionId }, select: { status: true, closeAt: true, closeTick: true }, }); if (!current) { - if (updated > 0) { - throw new Error(`Auction disappeared after FINALIZING transition: ${auctionId}`); - } return { status: 'IGNORED' as const }; } if (current.status === 'OPEN') { - return { status: 'RESCHEDULED' as const, closeAt: current.closeAt, closeTick: current.closeTick }; + const isDue = + current.closeTick !== null && nowTick !== null + ? current.closeTick <= BigInt(nowTick) + : current.closeTick === null && current.closeAt.getTime() <= now.getTime(); + if (!isDue) { + return { status: 'RESCHEDULED' as const, closeAt: current.closeAt, closeTick: current.closeTick }; + } } - if (current.status !== 'FINALIZING') { + if (current.status !== 'OPEN' && current.status !== 'FINALIZING') { return { status: 'IGNORED' as const }; } + const deadline = { closeAt: current.closeAt, closeTick: current.closeTick }; for (let retry = 0; retry <= AUCTION_FINALIZE_RECOVERY_LIMIT; retry += 1) { - const requestId = buildAuctionFinalizeRequestId(auctionId, current.closeAt, retry); - const command = { type: 'auctionFinalize' as const, requestId, auctionId }; - const existing = await transaction.inputEvent.findUnique({ - where: { requestId }, - select: { target: true, eventType: true, payload: true, status: true, result: true }, - }); + const requestId = buildAuctionFinalizeRequestId(auctionId, deadline, retry); + const legacyRequestId = buildLegacyAuctionFinalizeRequestId(auctionId, current.closeAt, retry); + const candidateRequestIds = [...new Set([requestId, legacyRequestId])]; + let existing: AuctionFinalizeEventRecord | null = null; + let existingRequestId = requestId; + for (const candidateRequestId of candidateRequestIds) { + existing = await transaction.inputEvent.findUnique({ + where: { requestId: candidateRequestId }, + select: { target: true, eventType: true, payload: true, status: true, result: true }, + }); + if (existing) { + existingRequestId = candidateRequestId; + break; + } + } + const command = buildAuctionFinalizeCommand(auctionId, deadline, existingRequestId); if (!existing) { + const nextCommand = buildAuctionFinalizeCommand(auctionId, deadline, requestId); await transaction.inputEvent.create({ data: { requestId, target: 'ENGINE', - eventType: command.type, - payload: command, + eventType: nextCommand.type, + payload: { ...nextCommand }, }, }); - return { status: 'FINALIZING' as const }; + return { status: 'PENDING' as const }; } if (!isMatchingAuctionFinalizeEvent(existing, command)) { - throw new Error(`Conflicting durable auction finalization event: ${requestId}`); + throw new Error(`Conflicting durable auction finalization event: ${existingRequestId}`); } if (existing.status === 'PENDING' || existing.status === 'PROCESSING') { - return { status: 'FINALIZING' as const }; + return { status: 'PENDING' as const }; } if (existing.status === 'SUCCEEDED' && isSuccessfulAuctionFinalizeResult(existing.result, auctionId)) { - throw new Error(`Auction remained FINALIZING after successful durable event: ${requestId}`); + throw new Error( + `Auction remained ${current.status} after successful durable event: ${existingRequestId}` + ); } } throw new Error(`Auction finalization recovery exhausted: ${auctionId}`); }); - if (outcome.status === 'FINALIZING') { + if (outcome.status === 'PENDING') { // history retention은 운영 경과시간 기준이며 게임의 논리 시각과 분리한다. await redis.zAdd(historyKey, [{ score: historyNowMs, value: id }]); - return 'FINALIZING'; + return 'PENDING'; } if (outcome.status === 'RESCHEDULED') { const gameTime = await loadCurrentGameTime(db, now); @@ -198,6 +316,7 @@ export const runAuctionWorker = async (options: AuctionWorkerOptions = {}): Prom ]); let nextResyncAt = Date.now(); + const pendingFinalizationIds = new Set(); try { while (!control.signal.aborted) { @@ -205,20 +324,32 @@ export const runAuctionWorker = async (options: AuctionWorkerOptions = {}): Prom const gameTime = await loadCurrentGameTime(postgres.prisma, new Date(operationalNowMs)); const gameNowMs = gameTime.now.getTime(); const dueScore = gameTime.tick ?? gameNowMs; - const historyTrimBefore = operationalNowMs - config.auctionTimerRetentionSeconds * 1000; - if (historyTrimBefore > 0) { - await redis.client.zRemRangeByScore(keys.historyKey, 0, historyTrimBefore); - } if (operationalNowMs >= nextResyncAt) { await seedAuctionTimers(postgres.prisma, redis.client, keys); nextResyncAt = operationalNowMs + config.auctionTimerResyncMs; } - + if (pendingFinalizationIds.size > 0) { + const reconciliation = await reconcilePendingAuctionTimers({ + db: postgres.prisma, + redis: redis.client, + timerKey: keys.timerKey, + auctionIds: [...pendingFinalizationIds], + gameTime, + }); + pendingFinalizationIds.clear(); + for (const auctionId of reconciliation.pendingIds) { + pendingFinalizationIds.add(auctionId); + } + } + const historyTrimBefore = operationalNowMs - config.auctionTimerRetentionSeconds * 1000; + if (historyTrimBefore > 0) { + await redis.client.zRemRangeByScore(keys.historyKey, 0, historyTrimBefore); + } const dueIds = await popDueAuctionIds(redis.client, keys.timerKey, dueScore, 100); if (dueIds.length > 0) { for (const id of dueIds) { try { - await processDueAuctionId({ + const outcome = await processDueAuctionId({ db: postgres.prisma, redis: redis.client, timerKey: keys.timerKey, @@ -228,6 +359,9 @@ export const runAuctionWorker = async (options: AuctionWorkerOptions = {}): Prom nowTick: gameTime.tick, historyNowMs: operationalNowMs, }); + if (outcome === 'PENDING') { + pendingFinalizationIds.add(Number(id)); + } } catch (error) { const message = error instanceof Error ? error.message : 'Unknown auction worker error'; const trace = error instanceof Error ? error.stack : undefined; diff --git a/app/game-api/src/battleSim/environment.ts b/app/game-api/src/battleSim/environment.ts index 6a6056b6..de2baf56 100644 --- a/app/game-api/src/battleSim/environment.ts +++ b/app/game-api/src/battleSim/environment.ts @@ -112,6 +112,7 @@ export const buildBattleSimEnvironment = async ( maxAtmosByCommand: resolveNumber(constValues, ['maxAtmosByCommand'], DEFAULT_WAR_CONFIG.maxAtmosByCommand), maxTrainByWar: resolveNumber(constValues, ['maxTrainByWar'], DEFAULT_WAR_CONFIG.maxTrainByWar), maxAtmosByWar: resolveNumber(constValues, ['maxAtmosByWar'], DEFAULT_WAR_CONFIG.maxAtmosByWar), + maxTechLevel: resolveNumber(constValues, ['maxTechLevel'], 12), maxGeneralStat: resolveNumber(constValues, ['maxLevel'], LEGACY_DEFAULT_MAX_LEVEL), statUpgradeLimit: resolveNumber(constValues, ['upgradeLimit'], 30), castleCrewTypeId, diff --git a/app/game-api/src/daemon/databaseTransport.ts b/app/game-api/src/daemon/databaseTransport.ts index c075ceb5..e2ae7b6d 100644 --- a/app/game-api/src/daemon/databaseTransport.ts +++ b/app/game-api/src/daemon/databaseTransport.ts @@ -21,14 +21,26 @@ const stableJson = (value: unknown): string => { } return JSON.stringify(value) ?? 'null'; }; -const commandIdentityJson = (value: unknown): string => { +export const commandIdentityJson = (value: unknown): string => { + if (!value || typeof value !== 'object' || Array.isArray(value)) { + return stableJson(value); + } + const commandType = String(Reflect.get(value, 'type')); if ( - value && - typeof value === 'object' && - !Array.isArray(value) && - Reflect.get(value, 'type') === 'npcPossessGeneral' + [ + 'npcPossessGeneral', + 'selectPoolReserve', + 'selectPoolCreate', + 'selectPoolReselect', + 'voteReward', + 'auctionBid', + ].includes(commandType) ) { - const { acceptedGameAt: _acceptedGameAt, ...identity } = value as Record; + const { + acceptedGameAt: _acceptedGameAt, + acceptedGameTick: _acceptedGameTick, + ...identity + } = value as Record; return stableJson(identity); } return stableJson(value); diff --git a/app/game-api/src/router/auction/index.ts b/app/game-api/src/router/auction/index.ts index 823150de..a14b6049 100644 --- a/app/game-api/src/router/auction/index.ts +++ b/app/game-api/src/router/auction/index.ts @@ -43,6 +43,7 @@ interface AuctionRow { detail: unknown; status: string; closeAt: Date; + closeTick: bigint | null; } export interface AuctionDetail { @@ -55,6 +56,14 @@ export interface AuctionDetail { remainCloseDateExtensionCnt?: number | null; } +export const hasAuctionClosePassed = ( + auction: { closeAt: Date; closeTick: bigint | null }, + time: { now: Date; tick: number | null } +): boolean => + auction.closeTick !== null && time.tick !== null + ? auction.closeTick < BigInt(time.tick) + : auction.closeAt.getTime() < time.now.getTime(); + interface AuctionBidRow { id: number; generalId: number; @@ -109,7 +118,8 @@ const loadAuction = async (db: DatabaseClient, auctionId: number): Promise { const auth = requireAuth(ctx); @@ -372,8 +384,7 @@ export const auctionRouter = router({ } const gameTime = await loadCurrentGameTime(ctx.db); - const { now } = gameTime; - if (auction.closeAt <= now) { + if (hasAuctionClosePassed(auction, gameTime)) { throw new TRPCError({ code: 'BAD_REQUEST', message: '경매가 종료되었습니다.' }); } if (auction.hostGeneralId === general.id) { @@ -407,7 +418,7 @@ export const auctionRouter = router({ if (morePoint <= 0) { throw new TRPCError({ code: 'BAD_REQUEST', message: '입찰가가 유효하지 않습니다.' }); } - if (general.gold < morePoint) { + if (general.gold < morePoint + MIN_AUCTION_REMAINING_RESOURCE) { throw new TRPCError({ code: 'BAD_REQUEST', message: '금이 부족합니다.' }); } @@ -417,6 +428,7 @@ export const auctionRouter = router({ auctionId: auction.id, generalId: general.id, amount: input.amount, + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), tryExtendCloseDate: true, }); if (!result || result.type !== 'auctionBid') { @@ -448,8 +460,7 @@ export const auctionRouter = router({ } const gameTime = await loadCurrentGameTime(ctx.db); - const { now } = gameTime; - if (auction.closeAt <= now) { + if (hasAuctionClosePassed(auction, gameTime)) { throw new TRPCError({ code: 'BAD_REQUEST', message: '경매가 종료되었습니다.' }); } if (auction.hostGeneralId === general.id) { @@ -483,7 +494,7 @@ export const auctionRouter = router({ if (morePoint <= 0) { throw new TRPCError({ code: 'BAD_REQUEST', message: '입찰가가 유효하지 않습니다.' }); } - if (general.rice < morePoint) { + if (general.rice < morePoint + MIN_AUCTION_REMAINING_RESOURCE) { throw new TRPCError({ code: 'BAD_REQUEST', message: '쌀이 부족합니다.' }); } @@ -493,6 +504,7 @@ export const auctionRouter = router({ auctionId: auction.id, generalId: general.id, amount: input.amount, + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), tryExtendCloseDate: true, }); if (!result || result.type !== 'auctionBid') { @@ -524,8 +536,7 @@ export const auctionRouter = router({ } const gameTime = await loadCurrentGameTime(ctx.db); - const { now } = gameTime; - if (auction.closeAt <= now) { + if (hasAuctionClosePassed(auction, gameTime)) { throw new TRPCError({ code: 'BAD_REQUEST', message: '경매가 종료되었습니다.' }); } @@ -630,6 +641,7 @@ export const auctionRouter = router({ auctionId: auction.id, generalId: general.id, amount: input.amount, + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), tryExtendCloseDate: input.tryExtendCloseDate ?? false, }); if (!result || result.type !== 'auctionBid') { diff --git a/app/game-api/src/router/inherit/index.ts b/app/game-api/src/router/inherit/index.ts index 3bec23ca..cc5ffc77 100644 --- a/app/game-api/src/router/inherit/index.ts +++ b/app/game-api/src/router/inherit/index.ts @@ -11,6 +11,7 @@ import { WarTraitLoader, WAR_TRAIT_KEYS, isWarTraitKey, + isCentennialStatResetAllowed, } from '@sammo-ts/logic'; import type { InheritBuffType, ItemSlot, MessageDraft, MessageRecordDraft } from '@sammo-ts/logic'; import { simpleSerialize } from '@sammo-ts/logic/war/utils.js'; @@ -307,6 +308,7 @@ export const inheritRouter = router({ const resetTurnLevel = asNumber(asRecord(general.meta).inheritResetTurnTime, -1) + 1; const config = asRecord(worldState.config); + const canResetStat = isCentennialStatResetAllowed(config); const constValues = asRecord(config.const); const availableSpecialWar = Array.isArray(constValues.availableSpecialWar) ? constValues.availableSpecialWar.filter((key): key is string => typeof key === 'string') @@ -347,6 +349,7 @@ export const inheritRouter = router({ availableTargetGenerals: others, turnTimeZones: buildTurnTimeZoneList(Math.max(1, Math.round(worldState.tickSeconds / 60))), isUnited, + canResetStat, currentSpecialWar: general.special2Code ?? 'None', currentStat: { leadership: general.leadership, @@ -700,12 +703,6 @@ export const inheritRouter = router({ }); } - const currentPoint = await readInheritancePoint(ctx.db, userId, 'previous'); - const cost = bonusSum > 0 ? inheritConst.inheritBornStatPoint : 0; - if (currentPoint < cost) { - throw new TRPCError({ code: 'BAD_REQUEST', message: '유산 포인트가 부족합니다.' }); - } - const general = await ctx.db.general.findFirst({ where: { userId }, select: { id: true, npcState: true }, @@ -716,6 +713,18 @@ export const inheritRouter = router({ if (general.npcState >= 2) { throw new TRPCError({ code: 'BAD_REQUEST', message: 'NPC는 능력치 초기화를 할 수 없습니다.' }); } + if (!isCentennialStatResetAllowed(config)) { + throw new TRPCError({ + code: 'BAD_REQUEST', + message: '100기 올스타 장수는 능력치 초기화를 사용할 수 없습니다.', + }); + } + + const currentPoint = await readInheritancePoint(ctx.db, userId, 'previous'); + const cost = bonusSum > 0 ? inheritConst.inheritBornStatPoint : 0; + if (currentPoint < cost) { + throw new TRPCError({ code: 'BAD_REQUEST', message: '유산 포인트가 부족합니다.' }); + } const seasonValue = resolveSeasonValue(worldMeta); if (seasonValue !== null) { diff --git a/app/game-api/src/router/join/index.ts b/app/game-api/src/router/join/index.ts index 25fd88c3..01a09ffd 100644 --- a/app/game-api/src/router/join/index.ts +++ b/app/game-api/src/router/join/index.ts @@ -16,11 +16,7 @@ import { import { readInheritancePoint, resolveInheritConstants } from '../../services/inheritance.js'; import { loadAuthoritativeAccountIcon } from '../../services/accountIconSync.js'; import { loadCurrentGameTime } from '../../services/gameClock.js'; -import { - getSelectionPoolStatus, - reserveSelectionPool, - resolveSelectionMaxGeneral, -} from '@sammo-ts/game-engine/turn/selectPoolService.js'; +import { getSelectionPoolStatus, resolveSelectionMaxGeneral } from '@sammo-ts/game-engine/turn/selectPoolService.js'; import { ConflictingTurnDaemonCommandError, RejectedNpcPossessionCommandError, @@ -54,6 +50,31 @@ const resolveSelectionCommandResult = ( return { ok: true, generalId: result.generalId }; }; +const resolveSelectionReservationCommandResult = ( + result: Awaited> | null +) => { + if (!result) { + throw new TRPCError({ + code: 'TIMEOUT', + message: + '장수 선택 목록 요청은 접수됐지만 처리 결과를 아직 확인하지 못했습니다. 같은 요청으로 다시 시도해 주세요.', + }); + } + if (result.type !== 'selectPoolReserve') { + throw new TRPCError({ + code: 'INTERNAL_SERVER_ERROR', + message: '턴 데몬이 올바르지 않은 장수 선택 목록 결과를 반환했습니다.', + }); + } + if (!result.ok) { + throw new TRPCError({ code: result.code, message: result.reason }); + } + return result.reservation; +}; + +const resolveSelectionReservationRequestId = (contextRequestId: string | undefined, userId: string) => + contextRequestId ? `select-pool:${userId}:${contextRequestId}:reserve` : undefined; + const resolveSelectionRequestId = ( contextRequestId: string | undefined, userId: string, @@ -366,26 +387,22 @@ export const joinRouter = router({ }, }; }), - getSelectionPool: authedProcedure.mutation(async ({ ctx }) => { + getSelectionPool: engineAuthedProcedure.mutation(async ({ ctx }) => { const userId = ctx.auth?.user.id; if (!userId) { throw new TRPCError({ code: 'UNAUTHORIZED' }); } - const worldState = await ctx.db.worldState.findFirst(); - if (!worldState) { - throw new TRPCError({ - code: 'PRECONDITION_FAILED', - message: 'World state is not initialized.', - }); - } const gameTime = await loadCurrentGameTime(ctx.db); - return reserveSelectionPool({ - db: ctx.db, - worldState, + const commandRequestId = resolveSelectionReservationRequestId(ctx.requestId, userId); + const result = await ctx.turnDaemon.requestCommand({ + type: 'selectPoolReserve', + ...(commandRequestId ? { requestId: commandRequestId } : {}), userId, - now: gameTime.now, seedOwnerIdentity: ctx.auth?.user.legacyMemberNo ?? userId, + acceptedGameAt: gameTime.now.toISOString(), + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), }); + return resolveSelectionReservationCommandResult(result); }), selectPoolGeneral: engineAuthedProcedure .input( @@ -413,6 +430,7 @@ export const joinRouter = router({ }); } const commandRequestId = resolveSelectionRequestId(ctx.requestId, userId, input.clientRequestId, 'create'); + const gameTime = await loadCurrentGameTime(ctx.db); const result = await ctx.turnDaemon.requestCommand({ type: 'selectPoolCreate', ...(commandRequestId ? { requestId: commandRequestId } : {}), @@ -421,6 +439,8 @@ export const joinRouter = router({ uniqueName: input.uniqueName, personality: input.personality, seedOwnerIdentity: auth.user.legacyMemberNo ?? userId, + acceptedGameAt: gameTime.now.toISOString(), + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), ...(selectedIcon ? { ownerPicture: selectedIcon.picture, @@ -450,12 +470,15 @@ export const joinRouter = router({ input.clientRequestId, 'reselect' ); + const gameTime = await loadCurrentGameTime(ctx.db); const result = await ctx.turnDaemon.requestCommand({ type: 'selectPoolReselect', ...(commandRequestId ? { requestId: commandRequestId } : {}), userId, ownerDisplayName: auth.user.displayName, uniqueName: input.uniqueName, + acceptedGameAt: gameTime.now.toISOString(), + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), }); return resolveSelectionCommandResult(result, 'selectPoolReselect'); }), diff --git a/app/game-api/src/router/npc/index.ts b/app/game-api/src/router/npc/index.ts index 7cc6dac0..ec493c64 100644 --- a/app/game-api/src/router/npc/index.ts +++ b/app/game-api/src/router/npc/index.ts @@ -221,11 +221,14 @@ const resolveScenarioStat = (config: Record): { max: number; np }; }; -const resolveCommandEnv = (config: Record): { develCost: number; defaultCrewTypeId: number } => { +const resolveCommandEnv = ( + config: Record +): { develCost: number; defaultCrewTypeId: number; maxTechLevel: number } => { const constValues = asRecord(config.const ?? config.consts); return { develCost: resolveNumberFromKeys(constValues, ['develCost', 'develcost', 'develrate'], 0), defaultCrewTypeId: resolveNumberFromKeys(constValues, ['defaultCrewTypeId'], 0), + maxTechLevel: resolveNumberFromKeys(constValues, ['maxTechLevel'], 12), }; }; @@ -345,13 +348,14 @@ const buildZeroPolicy = async ( nationTech: number; develCost: number; defaultCrewTypeId: number; + maxTechLevel: number; unitSetName: string; } ): Promise => { - const { statMax, statNpcMax, nationTech, develCost, defaultCrewTypeId, unitSetName } = options; + const { statMax, statNpcMax, nationTech, develCost, defaultCrewTypeId, maxTechLevel, unitSetName } = options; const unitSet = await loadUnitSetDefinitionByName(unitSetName); const crewType = findCrewTypeById(unitSet, defaultCrewTypeId || unitSet.defaultCrewTypeId || 0); - const techCost = getTechCost(nationTech); + const techCost = getTechCost(nationTech, maxTechLevel); const next = clonePolicy(policy); if (next.reqNPCDevelGold === 0) { @@ -511,6 +515,7 @@ export const npcRouter = router({ nationTech, develCost: env.develCost, defaultCrewTypeId: env.defaultCrewTypeId, + maxTechLevel: env.maxTechLevel, unitSetName, }); diff --git a/app/game-api/src/router/tournament/index.ts b/app/game-api/src/router/tournament/index.ts index 2912a1bf..f6e9b698 100644 --- a/app/game-api/src/router/tournament/index.ts +++ b/app/game-api/src/router/tournament/index.ts @@ -29,6 +29,13 @@ const resolveNumber = (source: Record, keys: string[], fallback return fallback; }; +const resolveCurrentDevelCost = (worldState: { config?: unknown; meta?: unknown } | null): number => { + const config = asRecord(worldState?.config ?? {}); + const constValues = asRecord(config.const ?? config); + const configured = resolveNumber(constValues, ['develCost', 'develcost', 'develrate'], 0); + return resolveNumber(asRecord(worldState?.meta), ['develcost', 'develCost', 'develrate'], configured); +}; + const adminProcedure = authedProcedure.use(({ ctx, next }) => { const roles = ctx.auth?.user.roles ?? []; if (!hasAdminRole(roles, ctx.profile.name)) { @@ -403,9 +410,7 @@ export const tournamentRouter = router({ throw new TRPCError({ code: 'BAD_REQUEST', message: '참가 인원이 가득 찼습니다.' }); } - const config = asRecord(worldState?.config ?? {}); - const constValues = asRecord(config.const ?? config); - const develCost = resolveNumber(constValues, ['develCost', 'develcost', 'develrate'], 0); + const develCost = resolveCurrentDevelCost(worldState); const feeResult = await ctx.turnDaemon.requestCommand({ type: 'adjustGeneralResources', reason: 'tournamentJoin', @@ -462,9 +467,7 @@ export const tournamentRouter = router({ const [participants, bets] = await Promise.all([store.getParticipants(), store.getBettingEntries()]); const worldState = await ctx.db.worldState.findFirst(); - const config = asRecord(worldState?.config ?? {}); - const constValues = asRecord(config.const ?? config); - const develCost = resolveNumber(constValues, ['develCost', 'develcost', 'develrate'], 0); + const develCost = resolveCurrentDevelCost(worldState); const refundMap = new Map(); for (const participant of participants) { diff --git a/app/game-api/src/router/vote/index.ts b/app/game-api/src/router/vote/index.ts index a8884ed4..0eb358af 100644 --- a/app/game-api/src/router/vote/index.ts +++ b/app/game-api/src/router/vote/index.ts @@ -1,20 +1,8 @@ import { TRPCError } from '@trpc/server'; import { z } from 'zod'; -import { asRecord, LiteHashDRBG, RandUtil } from '@sammo-ts/common'; +import { asRecord } from '@sammo-ts/common'; import { GamePrisma } from '@sammo-ts/infra'; -import { - ITEM_KEYS, - addOccupiedUniqueItemKeys, - buildVoteUniqueSeed, - countOccupiedUniqueItems, - createItemModuleRegistry, - loadItemModules, - resolveUniqueConfig, - rollUniqueLottery, - type GeneralItemSlots, - type ItemModule, -} from '@sammo-ts/logic'; import { authedProcedure, router } from '../../trpc.js'; import { getMyGeneral } from '../shared/general.js'; @@ -40,15 +28,6 @@ const adminProcedure = authedProcedure.use(({ ctx, next }) => { return next(); }); -let itemRegistryPromise: Promise> | null = null; - -const getItemRegistry = async (): Promise> => { - if (!itemRegistryPromise) { - itemRegistryPromise = loadItemModules([...ITEM_KEYS]).then((modules) => createItemModuleRegistry(modules)); - } - return itemRegistryPromise; -}; - const resolveNumber = (source: Record, keys: string[], fallback: number): number => { for (const key of keys) { const value = source[key]; @@ -65,30 +44,9 @@ const resolveNumber = (source: Record, keys: string[], fallback return fallback; }; -const normalizeCode = (value: string | null | undefined): string | null => { - if (!value || value === 'None') { - return null; - } - return value; -}; - const normalizeOptions = (options: string[]): string[] => options.map((option) => option.trim()).filter((option) => option.length > 0); -const readMetaNumber = (meta: Record, key: string, fallback: number): number => { - const value = meta[key]; - if (typeof value === 'number' && Number.isFinite(value)) { - return Math.floor(value); - } - if (typeof value === 'string') { - const parsed = Number(value); - if (Number.isFinite(parsed)) { - return Math.floor(parsed); - } - } - return fallback; -}; - const parseOptions = (value: unknown): string[] => { if (Array.isArray(value)) { return value.filter((entry): entry is string => typeof entry === 'string'); @@ -138,11 +96,14 @@ type VotePollRow = { closed_at: Date | null; }; -const hasPollEnded = (poll: Pick, time: CurrentGameTime): boolean => +export const hasPollEnded = ( + poll: Pick, + time: CurrentGameTime +): boolean => Boolean(poll.closed_at) || (poll.end_tick !== null && time.tick !== null - ? poll.end_tick <= BigInt(time.tick) - : Boolean(poll.end_at && poll.end_at <= time.now)); + ? poll.end_tick < BigInt(time.tick) + : Boolean(poll.end_at && poll.end_at.getTime() < time.now.getTime())); const toGameTickOrNull = (time: CurrentGameTime, date: Date | null): bigint | null => { if (!date) return null; @@ -388,116 +349,12 @@ export const voteRouter = router({ } const general = await getMyGeneral(ctx); - const rows = await ctx.db.$queryRaw>(GamePrisma.sql` - INSERT INTO vote (vote_id, general_id, nation_id, selection) - VALUES ( - ${input.voteId}, - ${general.id}, - ${general.nationId}, - CAST(${JSON.stringify(sortedSelection)} AS jsonb) - ) - ON CONFLICT (vote_id, general_id) DO NOTHING - RETURNING id - `); - - if (!rows[0]?.id) { - throw new TRPCError({ code: 'BAD_REQUEST', message: '이미 설문조사를 완료하였습니다.' }); - } - - const worldState = await ctx.db.worldState.findFirst(); - if (!worldState) { - throw new TRPCError({ code: 'PRECONDITION_FAILED', message: 'World state is not initialized.' }); - } - - const worldMeta = asRecord(worldState.meta); - const config = asRecord(worldState.config); - const constValues = asRecord(config.const); - const develCost = resolveNumber( - worldMeta, - ['develcost', 'develCost'], - resolveNumber(constValues, ['develCost', 'develcost', 'develrate'], 0) - ); - const voteReward = develCost * 5; - - const scenarioMeta = asRecord(worldMeta.scenarioMeta); - const startYear = readMetaNumber(scenarioMeta, 'startYear', worldState.currentYear); - const initYear = readMetaNumber(worldMeta, 'initYear', startYear); - const initMonth = readMetaNumber(worldMeta, 'initMonth', 1); - const scenarioId = readMetaNumber(worldMeta, 'scenarioId', 0); - const hiddenSeed = worldMeta.hiddenSeed ?? worldMeta.seed ?? worldState.id; - - const itemRegistry = await getItemRegistry(); - const uniqueConfig = resolveUniqueConfig(constValues); - - const [generalRows, reservedUniqueRows] = await Promise.all([ - ctx.db.general.findMany({ - select: { - horseCode: true, - weaponCode: true, - bookCode: true, - itemCode: true, - }, - }), - ctx.db.auction.findMany({ - where: { - type: 'UNIQUE_ITEM', - status: { in: ['OPEN', 'FINALIZING'] }, - targetCode: { not: null }, - }, - select: { targetCode: true }, - }), - ]); - const generalItems: GeneralItemSlots[] = generalRows.map((row) => ({ - horse: normalizeCode(row.horseCode), - weapon: normalizeCode(row.weaponCode), - book: normalizeCode(row.bookCode), - item: normalizeCode(row.itemCode), - })); - - const occupiedUniqueCounts = countOccupiedUniqueItems(generalItems, itemRegistry); - addOccupiedUniqueItemKeys( - occupiedUniqueCounts, - reservedUniqueRows.map((row) => row.targetCode), - itemRegistry - ); - const userCount = await ctx.db.general.count({ where: { npcState: { lt: 2 } } }); - - const rngSeed = buildVoteUniqueSeed( - typeof hiddenSeed === 'string' || typeof hiddenSeed === 'number' ? hiddenSeed : String(hiddenSeed), - input.voteId, - general.id - ); - const rng = new RandUtil(LiteHashDRBG.build(rngSeed)); - const itemKey = rollUniqueLottery({ - rng, - config: uniqueConfig, - itemRegistry, - generalItems: { - horse: normalizeCode(general.horseCode), - weapon: normalizeCode(general.weaponCode), - book: normalizeCode(general.bookCode), - item: normalizeCode(general.itemCode), - }, - occupiedUniqueCounts, - scenarioId, - userCount, - currentYear: worldState.currentYear, - currentMonth: worldState.currentMonth, - startYear, - initYear, - initMonth, - acquireType: '설문조사', - }); - const rewardResult = await ctx.turnDaemon.requestCommand({ type: 'voteReward', voteId: input.voteId, generalId: general.id, - goldReward: voteReward, - unique: { - expected: Boolean(itemKey), - itemKey: itemKey ?? null, - }, + selection: sortedSelection, + ...(gameTime.tick === null ? {} : { acceptedGameTick: gameTime.tick }), }); if (!rewardResult || rewardResult.type !== 'voteReward') { @@ -559,6 +416,7 @@ export const voteRouter = router({ ) .mutation(async ({ ctx, input }) => { const general = await getMyGeneral(ctx); + const openerName = ctx.auth?.user.username ?? general.name; const options = normalizeOptions(input.options); if (options.length === 0) { throw new TRPCError({ code: 'BAD_REQUEST', message: '항목이 없습니다.' }); @@ -610,7 +468,7 @@ export const voteRouter = router({ ${multipleOptions}, ${input.revealMode}, ${general.id}, - ${general.name}, + ${openerName}, ${gameTime.now}, ${gameTime.tick === null ? null : BigInt(gameTime.tick)}, ${endAt}, diff --git a/app/game-api/src/router/yearbook/index.ts b/app/game-api/src/router/yearbook/index.ts index 162ca048..746e5c29 100644 --- a/app/game-api/src/router/yearbook/index.ts +++ b/app/game-api/src/router/yearbook/index.ts @@ -45,6 +45,9 @@ const recordHistoryAccess = async (ctx: GameApiContext): Promise => { const parseTextArray = (value: unknown): string[] => Array.isArray(value) ? value.filter((item): item is string => typeof item === 'string') : []; +const readStoredSnapshotNumber = (value: unknown): number | null => + typeof value === 'number' && Number.isFinite(value) ? value : null; + const parseYearbookNations = (value: unknown): YearbookNation[] => { if (!Array.isArray(value)) { return []; @@ -114,6 +117,7 @@ const buildNationSnapshot = async (ctx: GameApiContext) => { gold: true, rice: true, tech: true, + meta: true, }, orderBy: { id: 'asc' }, }), @@ -197,33 +201,45 @@ const buildNationSnapshot = async (ctx: GameApiContext) => { generalStatsByNation.set(general.nationId, entry); } - return nationRows.map((nation) => { + const projected = nationRows.map((nation) => { const generalStats = generalStatsByNation.get(nation.id) ?? { goldRice: 0, statPower: 0, expDed: 0, generalCount: 0, }; - const cityStats = cityStatsByNation.get(nation.id) ?? { popSum: 0, valueSum: 0, maxSum: 0 }; - const resource = Math.round(((nation.gold ?? 0) + (nation.rice ?? 0) + generalStats.goldRice) / 100); - const tech = nation.tech ?? 0; - const cityPower = - nation.level > 0 && cityStats.maxSum > 0 - ? Math.round((cityStats.popSum * cityStats.valueSum) / cityStats.maxSum / 100) - : 0; - const expDed = Math.round(generalStats.expDed / 100); - const power = Math.round((resource + tech + cityPower + generalStats.statPower + expDed) / 10); + const nationMeta = asRecord(nation.meta); + const storedPower = readStoredSnapshotNumber(nationMeta.power); + let power = 1; + if (nation.id !== 0) { + if (storedPower !== null) { + power = storedPower; + } else { + const cityStats = cityStatsByNation.get(nation.id) ?? { popSum: 0, valueSum: 0, maxSum: 0 }; + const resource = Math.round(((nation.gold ?? 0) + (nation.rice ?? 0) + generalStats.goldRice) / 100); + const tech = nation.tech ?? 0; + const cityPower = + nation.level > 0 && cityStats.maxSum > 0 + ? Math.round((cityStats.popSum * cityStats.valueSum) / cityStats.maxSum / 100) + : 0; + const expDed = Math.round(generalStats.expDed / 100); + power = Math.round((resource + tech + cityPower + generalStats.statPower + expDed) / 10); + } + } + const storedGeneralCount = readStoredSnapshotNumber(nationMeta.gennum); + const generalCount = nation.id === 0 ? 1 : (storedGeneralCount ?? generalStats.generalCount); return { id: nation.id, - name: nation.name, - color: nation.color, - level: nation.level, + name: nation.id === 0 ? '재야' : nation.name, + color: nation.id === 0 ? '#000000' : nation.color, + level: nation.id === 0 ? 0 : nation.level, power, - generalCount: generalStats.generalCount, + generalCount, cities: cityNamesByNation.get(nation.id) ?? [], }; }); + return projected.sort((left, right) => right.power - left.power); }; const readGlobalActionLogs = async (ctx: GameApiContext, year: number, month: number) => { diff --git a/app/game-api/src/tournament/worker.ts b/app/game-api/src/tournament/worker.ts index 04286cac..5c41f890 100644 --- a/app/game-api/src/tournament/worker.ts +++ b/app/game-api/src/tournament/worker.ts @@ -565,6 +565,7 @@ export const settleTournamentOutcome = async (options: { type: 'tournamentBettingPayout', requestId: `tournament:${settledState.bettingId}:betting-payout`, bettingId: settledState.bettingId, + tournamentType: settledState.type, payouts: payoutInfo.payouts, reason: 'winner_payout', }); diff --git a/app/game-api/src/tournament/workerHelpers.ts b/app/game-api/src/tournament/workerHelpers.ts index deabd118..816d9894 100644 --- a/app/game-api/src/tournament/workerHelpers.ts +++ b/app/game-api/src/tournament/workerHelpers.ts @@ -617,11 +617,22 @@ export const buildBettingPayouts = ( winnerId: number, entries: TournamentBetEntry[] ): { payouts: Array<{ generalId: number; amount: number }>; total: number; refundAll: boolean } => { - const total = entries.reduce((sum, entry) => sum + entry.amount, 0); + const aggregated = new Map(); + for (const entry of entries) { + const key = `${entry.generalId}:${entry.targetId}`; + const previous = aggregated.get(key); + if (previous) { + previous.amount += entry.amount; + } else { + aggregated.set(key, { ...entry }); + } + } + const normalizedEntries = [...aggregated.values()]; + const total = normalizedEntries.reduce((sum, entry) => sum + entry.amount, 0); if (total <= 0) { return { payouts: [], total: 0, refundAll: false }; } - const winners = entries.filter((entry) => entry.targetId === winnerId); + const winners = normalizedEntries.filter((entry) => entry.targetId === winnerId); const winnersTotal = winners.reduce((sum, entry) => sum + entry.amount, 0); if (winnersTotal <= 0) { // Legacy Betting::_calcRewardExclusive() builds a refund candidate list diff --git a/app/game-api/src/turns/commandTable.ts b/app/game-api/src/turns/commandTable.ts index 6e3fc6f3..3032c99e 100644 --- a/app/game-api/src/turns/commandTable.ts +++ b/app/game-api/src/turns/commandTable.ts @@ -396,6 +396,7 @@ const buildConstraintEnv = (worldState: WorldStateRow): Record relYear, join_mode: joinMode, openingPartYear: resolveNumber(constValues, ['openingPartYear'], 0), + maxTechLevel: resolveNumber(constValues, ['maxTechLevel'], 12), }; }; @@ -515,19 +516,31 @@ export const buildRecruitmentCommandInfo = (options: { const city = options.city ? mapCityRow(options.city) : undefined; const nation = options.nation ? mapNationRow(options.nation) : null; const cities = options.cities.map(mapCityRow); - const context = city ? { general, city, nation } : { general, nation }; - const command = new RecruitmentCommandResolver(options.generalActionModules ?? [], {}); - const tech = options.nation?.tech ?? 0; - const techAbility = getTechAbility(tech); + const commandEnv = buildCommandEnv(options.worldState); const constraintEnv = buildConstraintEnv(options.worldState); - const startYear = typeof constraintEnv.startYear === 'number' ? constraintEnv.startYear : undefined; + const configuredStartYear = typeof constraintEnv.startYear === 'number' ? constraintEnv.startYear : undefined; + const startYear = configuredStartYear ?? options.worldState.currentYear; + const context = { + general, + ...(city ? { city } : {}), + nation, + time: { + year: options.worldState.currentYear, + month: options.worldState.currentMonth, + startYear, + }, + maxTechLevel: commandEnv.maxTechLevel, + }; + const command = new RecruitmentCommandResolver(options.generalActionModules ?? [], commandEnv); + const tech = options.nation?.tech ?? 0; + const techAbility = getTechAbility(tech, commandEnv.maxTechLevel); const availabilityContext = { general, nation, map: options.map, cities, currentYear: options.worldState.currentYear, - ...(startYear === undefined ? {} : { startYear }), + ...(configuredStartYear === undefined ? {} : { startYear: configuredStartYear }), }; const crewTypes = options.unitSet.crewTypes ?? []; const armTypes = Object.entries(options.unitSet.armTypes ?? {}) @@ -565,7 +578,7 @@ export const buildRecruitmentCommandInfo = (options: { const currentCrewTypeName = crewTypes.find((crewType) => crewType.id === general.crewTypeId)?.name ?? '-'; return { - techLevel: getTechLevel(tech), + techLevel: getTechLevel(tech, commandEnv.maxTechLevel), leadership: command.resolveLeadership(context), fullLeadership: command.resolveFullLeadership(context), currentCrewTypeId: general.crewTypeId, diff --git a/app/game-api/test/auctionRouter.test.ts b/app/game-api/test/auctionRouter.test.ts index c96d36e7..b811269b 100644 --- a/app/game-api/test/auctionRouter.test.ts +++ b/app/game-api/test/auctionRouter.test.ts @@ -8,6 +8,7 @@ import { InMemoryFlushStore } from '../src/auth/flushStore.js'; import type { DatabaseClient, GameApiContext, GeneralRow } from '../src/context.js'; import type { TurnDaemonTransport } from '../src/daemon/transport.js'; import { appRouter } from '../src/router.js'; +import { hasAuctionClosePassed } from '../src/router/auction/index.js'; const buildGeneral = (overrides: Partial = {}): GeneralRow => ({ id: 7, @@ -80,6 +81,7 @@ const buildContext = (options: { isunited?: number; requestId?: string; transaction?: ReturnType; + clockTick?: number; }) => { const auth = options.auth === undefined ? buildAuth() : options.auth; const general = options.general === undefined ? buildGeneral() : options.general; @@ -106,6 +108,14 @@ const buildContext = (options: { currentYear: 200, currentMonth: 1, tickSeconds: 3600, + ...(options.clockTick === undefined + ? {} + : { + clockBaseTime: new Date('2026-07-26T00:00:00.000Z'), + clockTick: BigInt(options.clockTick), + clockMode: 'manual', + clockWallAnchor: new Date('2026-07-26T00:00:00.000Z'), + }), config: { const: { auctionName: ['청룡', '백호', '주작', '현무'], @@ -169,6 +179,20 @@ const buildContext = (options: { }; describe('auction router actor and permission boundaries', () => { + it('keeps the auction open through its authoritative close tick', () => { + const closeAt = new Date('2026-07-27T00:00:00.000Z'); + const auction = { closeAt, closeTick: 72_000_000n }; + + expect(hasAuctionClosePassed(auction, { now: closeAt, tick: 72_000_000 })).toBe(false); + expect( + hasAuctionClosePassed(auction, { + now: new Date(closeAt.getTime() + 1), + tick: 72_000_001, + }) + ).toBe(true); + expect(hasAuctionClosePassed({ closeAt, closeTick: null }, { now: closeAt, tick: null })).toBe(false); + }); + it('rejects unauthenticated auction reads', async () => { const fixture = buildContext({ auth: null }); @@ -329,6 +353,7 @@ describe('auction router actor and permission boundaries', () => { detail: { startBidAmount: 100, isReverse: false }, status: 'OPEN', closeAt: new Date(Date.now() + 60 * 60_000), + closeTick: 100n, }, ]; } @@ -346,6 +371,7 @@ describe('auction router actor and permission boundaries', () => { } return []; }, + clockTick: 100, }); await appRouter.createCaller(fixture.context).auction.bidUnique({ @@ -358,7 +384,43 @@ describe('auction router actor and permission boundaries', () => { auctionId: 31, generalId: 7, amount: 110, + acceptedGameTick: 100, tryExtendCloseDate: false, }); }); + + it('keeps the Ref 1000 gold reserve after a resource-auction bid', async () => { + const queryRaw = async (query: GamePrisma.Sql) => { + const text = sqlText(query); + if (text.includes('FROM auction') && text.includes('WHERE id =')) { + return [ + { + id: 31, + type: 'BUY_RICE', + targetCode: '100', + hostGeneralId: 88, + detail: { title: '쌀 100 경매', amount: 100, startBidAmount: 500, isReverse: false }, + status: 'OPEN', + closeAt: new Date(Date.now() + 60 * 60_000), + }, + ]; + } + if (text.includes('FROM auction_bid')) { + return []; + } + return []; + }; + const accepted = buildContext({ general: buildGeneral({ gold: 1_500 }), queryRaw }); + + await expect( + appRouter.createCaller(accepted.context).auction.bidBuyRice({ auctionId: 31, amount: 500 }) + ).resolves.toEqual({ ok: true }); + expect(accepted.requestCommand).toHaveBeenCalledOnce(); + + const rejected = buildContext({ general: buildGeneral({ gold: 1_499 }), queryRaw }); + await expect( + appRouter.createCaller(rejected.context).auction.bidBuyRice({ auctionId: 31, amount: 500 }) + ).rejects.toMatchObject({ code: 'BAD_REQUEST', message: '금이 부족합니다.' }); + expect(rejected.requestCommand).not.toHaveBeenCalled(); + }); }); diff --git a/app/game-api/test/auctionWorker.integration.test.ts b/app/game-api/test/auctionWorker.integration.test.ts index a5e0bf04..01a429aa 100644 --- a/app/game-api/test/auctionWorker.integration.test.ts +++ b/app/game-api/test/auctionWorker.integration.test.ts @@ -21,7 +21,7 @@ import type { GamePrisma } from '@sammo-ts/infra'; import type { MapDefinition, ScenarioConfig, ScenarioMeta, TurnSchedule } from '@sammo-ts/logic'; import { buildAuctionTimerKeys } from '../src/auction/keys.js'; -import { processDueAuctionId, runAuctionWorker } from '../src/auction/worker.js'; +import { buildAuctionFinalizeRequestId, processDueAuctionId, runAuctionWorker } from '../src/auction/worker.js'; const databaseUrl = process.env.INPUT_EVENT_DATABASE_URL; const liveDescribe = databaseUrl && process.env.REDIS_URL ? describe : describe.skip; @@ -80,8 +80,11 @@ liveDescribe('auction worker durable recovery', () => { return auction; }; - const requestIdFor = (auction: { id: number; closeAt: Date }): string => - `auction:finalize:${auction.id}:${auction.closeAt.getTime()}`; + const requestIdFor = (auction: { id: number; closeAt: Date; closeTick?: bigint | null }): string => + buildAuctionFinalizeRequestId(auction.id, { + closeAt: auction.closeAt, + closeTick: auction.closeTick ?? null, + }); const memoryRedis = () => ({ zRangeByScore: vi.fn(async () => []), @@ -91,7 +94,7 @@ liveDescribe('auction worker durable recovery', () => { zRemRangeByScore: vi.fn(async () => 0), }); - it('atomically moves OPEN to FINALIZING and creates one deterministic input event', async () => { + it('leaves OPEN and creates one deterministic input event', async () => { const auction = await createAuction('OPEN'); const redis = memoryRedis(); @@ -104,7 +107,7 @@ liveDescribe('auction worker durable recovery', () => { id: String(auction.id), nowMs: Date.now(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); await expect( processDueAuctionId({ db: connector.prisma, @@ -114,13 +117,13 @@ liveDescribe('auction worker durable recovery', () => { id: String(auction.id), nowMs: Date.now(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); const [storedAuction, events] = await Promise.all([ connector.prisma.auction.findUniqueOrThrow({ where: { id: auction.id } }), connector.prisma.inputEvent.findMany({ where: { requestId: requestIdFor(auction) } }), ]); - expect(storedAuction.status).toBe('FINALIZING'); + expect(storedAuction.status).toBe('OPEN'); expect(events).toHaveLength(1); expect(events[0]).toMatchObject({ target: 'ENGINE', @@ -130,6 +133,7 @@ liveDescribe('auction worker durable recovery', () => { type: 'auctionFinalize', requestId: requestIdFor(auction), auctionId: auction.id, + expectedCloseAt: auction.closeAt.toISOString(), }, }); }); @@ -191,7 +195,7 @@ liveDescribe('auction worker durable recovery', () => { id: String(auction.id), nowMs: Date.now(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); await expect( processDueAuctionId({ db: connector.prisma, @@ -201,7 +205,7 @@ liveDescribe('auction worker durable recovery', () => { id: String(auction.id), nowMs: Date.now(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); await expect( connector.prisma.inputEvent.findMany({ where: { requestId: { startsWith: requestId } }, @@ -258,7 +262,7 @@ liveDescribe('auction worker durable recovery', () => { id: String(auction.id), nowMs: Date.now(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); await expect( connector.prisma.inputEvent.findUnique({ where: { requestId: requestIdFor(auction) } }) @@ -531,7 +535,11 @@ liveDescribe('auction worker durable recovery', () => { where: { id: extensionAuction.id }, data: { closeAt: secondCloseAt, closeTick: BigInt(secondCloseTick) }, }); - const secondExtensionRequestId = requestIdFor({ id: extensionAuction.id, closeAt: secondCloseAt }); + const secondExtensionRequestId = requestIdFor({ + id: extensionAuction.id, + closeAt: secondCloseAt, + closeTick: BigInt(secondCloseTick), + }); await processDueAuctionId({ db: connector.prisma, redis: memoryRedis(), diff --git a/app/game-api/test/auctionWorker.test.ts b/app/game-api/test/auctionWorker.test.ts index cab054e9..a3ae0b86 100644 --- a/app/game-api/test/auctionWorker.test.ts +++ b/app/game-api/test/auctionWorker.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it, vi } from 'vitest'; import type { GamePrismaClient } from '@sammo-ts/infra'; -import { processDueAuctionId } from '../src/auction/worker.js'; +import { processDueAuctionId, reconcilePendingAuctionTimers } from '../src/auction/worker.js'; import { resolveAuctionSeedScore } from '../src/auction/scheduler.js'; const buildRedis = () => ({ @@ -32,14 +32,16 @@ const buildDb = (options: { const transaction = { $executeRaw: vi.fn(async () => options.updated), auction: { - findUnique: vi.fn(async () => options.auction ?? null), + findUnique: vi.fn(async () => + options.auction ? { ...options.auction, closeTick: options.auction.closeTick ?? null } : null + ), }, inputEvent: { findUnique: vi.fn( async ({ where }: { where: { requestId: string } }) => options.existingEvents?.find((event) => event.requestId === where.requestId) ?? null ), - create: vi.fn(async () => ({ sequence: 1n })), + create: vi.fn(async (_args?: { data: { eventType: string } }) => ({ sequence: 1n })), }, }; return { @@ -84,6 +86,108 @@ describe('auction worker clock-shift race', () => { ).toBe(36_000_000); }); + it('requeues an auction immediately after the engine commits an OPEN extension', async () => { + const redis = buildRedis(); + const closeAt = new Date('2099-01-01T00:00:00.000Z'); + const pendingRequestId = 'auction:finalize:8:tick:72000000'; + const db = { + auction: { + findMany: vi.fn(async () => [ + { id: 7, status: 'OPEN', closeAt, closeTick: 72_000_000n }, + { id: 8, status: 'FINALIZING', closeAt, closeTick: 72_000_000n }, + { id: 9, status: 'FINISHED', closeAt, closeTick: 72_000_000n }, + ]), + }, + inputEvent: { + findMany: vi.fn(async () => [ + { + requestId: pendingRequestId, + target: 'ENGINE', + eventType: 'auctionFinalize', + payload: { + type: 'auctionFinalize', + requestId: pendingRequestId, + auctionId: 8, + expectedCloseAt: closeAt.toISOString(), + expectedCloseTick: 72_000_000, + }, + status: 'PENDING', + }, + ]), + }, + } as unknown as Pick; + const now = new Date('2026-07-30T12:00:00.000Z'); + + await expect( + reconcilePendingAuctionTimers({ + db, + redis, + timerKey: 'timer', + auctionIds: [7, 8, 9], + gameTime: { + now, + wallNow: now, + tick: 36_000_000, + mode: 'manual', + running: false, + startsAt: null, + dateToTick: () => 72_000_000, + }, + }) + ).resolves.toEqual({ pendingIds: [8], rescheduled: 1 }); + expect(redis.zAdd).toHaveBeenCalledWith('timer', [{ score: 72_000_000, value: '7' }]); + expect(redis.zRem).toHaveBeenCalledWith('timer', ['8']); + }); + + it('ignores a prior pending generation and schedules the extended OPEN deadline', async () => { + const redis = buildRedis(); + const closeAt = new Date('2099-01-01T00:30:00.000Z'); + const previousRequestId = 'auction:finalize:7:tick:72000000'; + const db = { + auction: { + findMany: vi.fn(async () => [{ id: 7, status: 'OPEN', closeAt, closeTick: 108_000_000n }]), + }, + inputEvent: { + findMany: vi.fn(async () => [ + { + requestId: previousRequestId, + target: 'ENGINE', + eventType: 'auctionFinalize', + payload: { + type: 'auctionFinalize', + requestId: previousRequestId, + auctionId: 7, + expectedCloseAt: new Date('2099-01-01T00:00:00.000Z').toISOString(), + expectedCloseTick: 72_000_000, + }, + status: 'PENDING', + }, + ]), + }, + } as unknown as Pick; + const now = new Date('2026-07-30T12:00:00.000Z'); + + await expect( + reconcilePendingAuctionTimers({ + db, + redis, + timerKey: 'timer', + auctionIds: [7], + gameTime: { + now, + wallNow: now, + tick: 72_000_000, + mode: 'manual', + running: false, + startsAt: null, + dateToTick: () => 108_000_000, + }, + }) + ).resolves.toEqual({ pendingIds: [], rescheduled: 1 }); + expect(redis.zAdd).toHaveBeenCalledWith('timer', [{ score: 108_000_000, value: '7' }]); + expect(redis.zRem).not.toHaveBeenCalled(); + }); + it('requeues an OPEN auction at its current DB deadline when an old due score loses the race', async () => { const redis = buildRedis(); const closeAt = new Date('2026-07-30T12:15:00.000Z'); @@ -128,11 +232,11 @@ describe('auction worker clock-shift race', () => { expect(redis.zAdd).toHaveBeenCalledWith('timer', [{ score: 72_000_000, value: '7' }]); }); - it('commits the FINALIZING transition and durable command in one transaction before recording history', async () => { + it('leaves OPEN untouched and creates one durable command before recording history', async () => { const redis = buildRedis(); const closeAt = new Date('2026-07-30T11:00:00.000Z'); const requestId = `auction:finalize:7:${closeAt.getTime()}`; - const { db, transaction } = buildDb({ updated: 1, auction: { status: 'FINALIZING', closeAt } }); + const { db, transaction } = buildDb({ updated: 0, auction: { status: 'OPEN', closeAt } }); const nowMs = new Date('2026-07-30T12:00:00.000Z').getTime(); await expect( @@ -144,7 +248,7 @@ describe('auction worker clock-shift race', () => { id: '7', nowMs, }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); expect(redis.zAdd).toHaveBeenCalledWith('history', [{ score: nowMs, value: '7' }]); expect(transaction.inputEvent.create).toHaveBeenCalledWith({ @@ -152,15 +256,119 @@ describe('auction worker clock-shift race', () => { requestId, target: 'ENGINE', eventType: 'auctionFinalize', - payload: { type: 'auctionFinalize', requestId, auctionId: 7 }, + payload: { + type: 'auctionFinalize', + requestId, + auctionId: 7, + expectedCloseAt: closeAt.toISOString(), + }, }, }); + expect(transaction.$executeRaw).not.toHaveBeenCalled(); + }); + + it('enqueues finalization at the exact close tick without changing auction status', async () => { + const redis = buildRedis(); + const closeAt = new Date('2099-01-01T00:00:00.000Z'); + const requestId = 'auction:finalize:7:tick:72000000'; + const { db, transaction } = buildDb({ + updated: 0, + auction: { status: 'OPEN', closeAt, closeTick: 72_000_000n }, + }); + + await expect( + processDueAuctionId({ + db, + redis, + timerKey: 'timer', + historyKey: 'history', + id: '7', + nowMs: new Date('2042-01-01T00:00:00.000Z').getTime(), + nowTick: 72_000_000, + }) + ).resolves.toBe('PENDING'); + expect(transaction.inputEvent.create).toHaveBeenCalledWith({ + data: { + requestId, + target: 'ENGINE', + eventType: 'auctionFinalize', + payload: { + type: 'auctionFinalize', + requestId, + auctionId: 7, + expectedCloseAt: closeAt.toISOString(), + expectedCloseTick: 72_000_000, + }, + }, + }); + expect(transaction.$executeRaw).not.toHaveBeenCalled(); + }); + + it('keeps an already-enqueued bid ahead of finalization and does not block it out of band', async () => { + const redis = buildRedis(); + const closeAt = new Date('2026-07-30T11:00:00.000Z'); + const queuedTypes = ['auctionBid']; + const { db, transaction } = buildDb({ updated: 0, auction: { status: 'OPEN', closeAt } }); + + await expect( + processDueAuctionId({ + db, + redis, + timerKey: 'timer', + historyKey: 'history', + id: '7', + nowMs: new Date('2026-07-30T12:00:00.000Z').getTime(), + }) + ).resolves.toBe('PENDING'); + + const created = transaction.inputEvent.create.mock.calls[0]?.[0] as { data: { eventType: string } } | undefined; + if (created) queuedTypes.push(created.data.eventType); + expect(queuedTypes).toEqual(['auctionBid', 'auctionFinalize']); + expect(transaction.$executeRaw).not.toHaveBeenCalled(); + }); + + it('reuses the same pending OPEN-generation event after a worker retry or restart', async () => { + const redis = buildRedis(); + const closeAt = new Date('2026-07-30T11:00:00.000Z'); + const requestId = `auction:finalize:7:${closeAt.getTime()}`; + const { db, transaction } = buildDb({ + updated: 0, + auction: { status: 'OPEN', closeAt }, + existingEvents: [ + { + requestId, + target: 'ENGINE', + eventType: 'auctionFinalize', + payload: { + type: 'auctionFinalize', + requestId, + auctionId: 7, + expectedCloseAt: closeAt.toISOString(), + }, + status: 'PENDING', + result: null, + }, + ], + }); + + await expect( + processDueAuctionId({ + db, + redis, + timerKey: 'timer', + historyKey: 'history', + id: '7', + nowMs: new Date('2026-07-30T12:00:00.000Z').getTime(), + }) + ).resolves.toBe('PENDING'); + expect(transaction.inputEvent.create).not.toHaveBeenCalled(); + expect(transaction.$executeRaw).not.toHaveBeenCalled(); }); it('records operational history time separately from logical settlement time', async () => { const redis = buildRedis(); const closeAt = new Date('2026-07-30T11:00:00.000Z'); - const { db } = buildDb({ updated: 1, auction: { status: 'FINALIZING', closeAt } }); + const { db } = buildDb({ updated: 0, auction: { status: 'FINALIZING', closeAt } }); const logicalNowMs = new Date('0190-01-01T00:00:00.000Z').getTime(); const operationalNowMs = new Date('2026-07-30T12:00:00.000Z').getTime(); @@ -204,7 +412,7 @@ describe('auction worker clock-shift race', () => { id: '7', nowMs: new Date('2026-07-30T12:00:00.000Z').getTime(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); expect(transaction.inputEvent.create).not.toHaveBeenCalled(); expect(redis.zAdd).toHaveBeenCalledWith('history', [ @@ -241,14 +449,19 @@ describe('auction worker clock-shift race', () => { id: '7', nowMs: new Date('2026-07-30T12:00:00.000Z').getTime(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); expect(transaction.inputEvent.create).toHaveBeenCalledWith({ data: { requestId: retryRequestId, target: 'ENGINE', eventType: 'auctionFinalize', - payload: { type: 'auctionFinalize', requestId: retryRequestId, auctionId: 7 }, + payload: { + type: 'auctionFinalize', + requestId: retryRequestId, + auctionId: 7, + expectedCloseAt: closeAt.toISOString(), + }, }, }); }); @@ -260,8 +473,8 @@ describe('auction worker clock-shift race', () => { const previousRequestId = `auction:finalize:7:${previousCloseAt.getTime()}`; const requestId = `auction:finalize:7:${closeAt.getTime()}`; const { db, transaction } = buildDb({ - updated: 1, - auction: { status: 'FINALIZING', closeAt }, + updated: 0, + auction: { status: 'OPEN', closeAt }, existingEvents: [ { requestId: previousRequestId, @@ -283,22 +496,27 @@ describe('auction worker clock-shift race', () => { id: '7', nowMs: new Date('2026-07-30T12:00:00.000Z').getTime(), }) - ).resolves.toBe('FINALIZING'); + ).resolves.toBe('PENDING'); expect(transaction.inputEvent.create).toHaveBeenCalledWith({ data: { requestId, target: 'ENGINE', eventType: 'auctionFinalize', - payload: { type: 'auctionFinalize', requestId, auctionId: 7 }, + payload: { + type: 'auctionFinalize', + requestId, + auctionId: 7, + expectedCloseAt: closeAt.toISOString(), + }, }, }); }); - it('rolls the auction transition back when durable event creation fails', async () => { + it('does not touch auction status when durable event creation fails', async () => { const redis = buildRedis(); const closeAt = new Date('2026-07-30T11:00:00.000Z'); - const { db, transaction } = buildDb({ updated: 1, auction: { status: 'FINALIZING', closeAt } }); + const { db, transaction } = buildDb({ updated: 0, auction: { status: 'OPEN', closeAt } }); transaction.inputEvent.create.mockRejectedValueOnce(new Error('event insert failed')); await expect( @@ -313,5 +531,6 @@ describe('auction worker clock-shift race', () => { ).rejects.toThrow('event insert failed'); expect(redis.zAdd).not.toHaveBeenCalled(); + expect(transaction.$executeRaw).not.toHaveBeenCalled(); }); }); diff --git a/app/game-api/test/directMutationJournalInventory.test.ts b/app/game-api/test/directMutationJournalInventory.test.ts index b24800a6..9b524d5a 100644 --- a/app/game-api/test/directMutationJournalInventory.test.ts +++ b/app/game-api/test/directMutationJournalInventory.test.ts @@ -37,7 +37,6 @@ const classifications = { 'diplomacy.respondLetter', 'diplomacy.rollbackLetter', 'diplomacy.sendLetter', - 'join.getSelectionPool', 'join.listPossessCandidates', 'messages.readLatest', 'turns.repeatNation', @@ -63,6 +62,7 @@ const classifications = { 'general.vacation', 'inherit.openUniqueAuction', 'join.createGeneral', + 'join.getSelectionPool', 'join.possessGeneral', 'join.reselectPoolGeneral', 'join.selectPoolGeneral', diff --git a/app/game-api/test/idempotentTransport.test.ts b/app/game-api/test/idempotentTransport.test.ts index 34dce12c..66175310 100644 --- a/app/game-api/test/idempotentTransport.test.ts +++ b/app/game-api/test/idempotentTransport.test.ts @@ -2,6 +2,11 @@ import { describe, expect, it } from 'vitest'; import { IdempotentTurnDaemonTransport } from '../src/daemon/idempotentTransport.js'; import { InMemoryTurnDaemonTransport } from '../src/daemon/inMemoryTransport.js'; +import { + commandIdentityJson, + ConflictingTurnDaemonCommandError, + DatabaseTurnDaemonTransport, +} from '../src/daemon/databaseTransport.js'; describe('IdempotentTurnDaemonTransport', () => { it('derives stable ordered engine request IDs from the API input event', async () => { @@ -19,4 +24,108 @@ describe('IdempotentTurnDaemonTransport', () => { 'api-event:engine:0:vacation', ]); }); + + it('keeps the first durable acceptance tick authoritative across an idempotent retry', () => { + const auctionBid = { + type: 'auctionBid', + requestId: 'auction-bid', + auctionId: 31, + generalId: 7, + amount: 500, + acceptedGameTick: 100, + }; + expect(commandIdentityJson({ ...auctionBid, acceptedGameTick: 101 })).toBe(commandIdentityJson(auctionBid)); + expect(commandIdentityJson({ ...auctionBid, amount: 501 })).not.toBe(commandIdentityJson(auctionBid)); + + const voteReward = { + type: 'voteReward', + requestId: 'vote-reward', + voteId: 1, + generalId: 7, + selection: [0], + acceptedGameTick: 100, + }; + expect(commandIdentityJson({ ...voteReward, acceptedGameTick: 101 })).toBe(commandIdentityJson(voteReward)); + expect(commandIdentityJson({ ...voteReward, selection: [1] })).not.toBe(commandIdentityJson(voteReward)); + + const selectionCommands = [ + { + type: 'selectPoolReserve', + requestId: 'select-pool-reserve', + userId: 'user-7', + seedOwnerIdentity: 7, + acceptedGameAt: '0200-01-01T00:00:00.000Z', + acceptedGameTick: 100, + }, + { + type: 'selectPoolCreate', + requestId: 'select-pool-create', + userId: 'user-7', + ownerDisplayName: '사용자', + uniqueName: '풀장수', + personality: 'che_안전', + acceptedGameAt: '0200-01-01T00:00:00.000Z', + acceptedGameTick: 100, + }, + { + type: 'selectPoolReselect', + requestId: 'select-pool-reselect', + userId: 'user-7', + ownerDisplayName: '사용자', + uniqueName: '풀장수', + acceptedGameAt: '0200-01-01T00:00:00.000Z', + acceptedGameTick: 100, + }, + ]; + for (const command of selectionCommands) { + expect( + commandIdentityJson({ + ...command, + acceptedGameAt: '0200-01-01T00:01:00.000Z', + acceptedGameTick: 101, + }) + ).toBe(commandIdentityJson(command)); + expect(commandIdentityJson({ ...command, userId: 'other-user' })).not.toBe(commandIdentityJson(command)); + } + }); + + it('reuses a successful vote event when only the retry acceptance tick has changed', async () => { + const persistedPayload = { + type: 'voteReward' as const, + requestId: 'vote-reward', + voteId: 1, + generalId: 7, + selection: [0], + acceptedGameTick: 100, + }; + const create = async () => { + throw Object.assign(new Error('duplicate'), { code: 'P2002' }); + }; + const transport = new DatabaseTurnDaemonTransport( + { + inputEvent: { + create, + findUniqueOrThrow: async () => ({ eventType: 'voteReward', payload: persistedPayload }), + }, + } as any, + 100 + ); + + await expect( + transport.sendCommand({ + ...persistedPayload, + acceptedGameTick: 101, + }) + ).resolves.toBe('vote-reward'); + + for (const changedIdentity of [{ selection: [1] }, { voteId: 2 }, { generalId: 8 }]) { + await expect( + transport.sendCommand({ + ...persistedPayload, + ...changedIdentity, + acceptedGameTick: 101, + }) + ).rejects.toBeInstanceOf(ConflictingTurnDaemonCommandError); + } + }); }); diff --git a/app/game-api/test/inheritRouter.test.ts b/app/game-api/test/inheritRouter.test.ts index 0a3ed896..eb657c0a 100644 --- a/app/game-api/test/inheritRouter.test.ts +++ b/app/game-api/test/inheritRouter.test.ts @@ -110,6 +110,7 @@ const buildContext = (options: { rankRows?: Array<{ type: string; value: number }>; inheritanceLogs?: Array<{ id: number; year: number; month: number; text: string; createdAt: Date }>; configConst?: Record; + configMap?: Record; }) => { const auth = options.auth === undefined ? buildAuth() : options.auth; const general = options.general === undefined ? buildGeneral() : options.general; @@ -128,12 +129,14 @@ const buildContext = (options: { const inheritanceLogFindMany = vi.fn(async () => options.inheritanceLogs ?? []); const webPushOutboxCreateMany = vi.fn(async () => ({ count: 1 })); const activeWorldState = - options.configConst === undefined + options.configConst === undefined && options.configMap === undefined ? worldState : { ...worldState, config: { - const: options.configConst, + ...worldState.config, + ...(options.configConst === undefined ? {} : { const: options.configConst }), + ...(options.configMap === undefined ? {} : { map: options.configMap }), }, }; const messageRows: CapturedMessage[] = []; @@ -269,6 +272,30 @@ describe('inherit router actor and permission boundaries', () => { }); }); + it('reports and enforces the Ref S100 stat-reset ban without dispatching or charging', async () => { + const fixture = buildContext({ + configMap: { targetGeneralPool: 'SPoolUnderU100' }, + inheritancePoint: 0, + }); + const caller = appRouter.createCaller(fixture.context); + + await expect(caller.inherit.getStatus()).resolves.toMatchObject({ canResetStat: false }); + await expect( + caller.inherit.resetStat({ + leadership: 70, + strength: 45, + intel: 85, + inheritBonusStat: [2, 1, 1], + }) + ).rejects.toMatchObject({ + code: 'BAD_REQUEST', + message: '100기 올스타 장수는 능력치 초기화를 사용할 수 없습니다.', + }); + expect(fixture.requestCommand).not.toHaveBeenCalled(); + expect(fixture.pointUpsert).not.toHaveBeenCalled(); + expect(fixture.logCreate).not.toHaveBeenCalled(); + }); + it('projects every Ref inheritance source with its own coefficient and stored/calculated boundary', async () => { const fixture = buildContext({ general: buildGeneral({ diff --git a/app/game-api/test/router.test.ts b/app/game-api/test/router.test.ts index 13460138..cb96afc2 100644 --- a/app/game-api/test/router.test.ts +++ b/app/game-api/test/router.test.ts @@ -693,6 +693,42 @@ describe('appRouter', () => { ).rejects.toMatchObject({ code: 'FORBIDDEN' }); }); + it('queues selection-pool reservation with the authenticated actor and server logical time', async () => { + const transport = new InMemoryTurnDaemonTransport(); + const requestId = 'select-pool-reserve-http'; + const commandRequestId = `select-pool:user-1:${requestId}:reserve`; + const acceptedGameAt = '2026-07-30T12:00:00.000Z'; + const reservation = { + poolName: 'SPoolUnderU30', + hasGeneral: false, + validUntil: '2026-07-30T12:20:00.000Z', + candidates: [], + }; + transport.setCommandResult(commandRequestId, { + type: 'selectPoolReserve', + ok: true, + reservation, + }); + const state = { + ...buildWorldState(), + clockBaseTime: new Date(acceptedGameAt), + clockTick: 0n, + clockMode: 'manual', + clockWallAnchor: new Date(acceptedGameAt), + } as WorldStateRow; + const context = { ...buildContext({ state, transport }), requestId }; + + await expect(appRouter.createCaller(context).join.getSelectionPool()).resolves.toEqual(reservation); + expect(transport.commands.at(-1)?.command).toEqual({ + type: 'selectPoolReserve', + requestId: commandRequestId, + userId: 'user-1', + seedOwnerIdentity: 'user-1', + acceptedGameAt, + acceptedGameTick: 0, + }); + }); + it('queues turn daemon run commands', async () => { const transport = new InMemoryTurnDaemonTransport(); const caller = appRouter.createCaller(buildContext({ transport })); diff --git a/app/game-api/test/selectPool.integration.test.ts b/app/game-api/test/selectPool.integration.test.ts index 264be164..11df30cd 100644 --- a/app/game-api/test/selectPool.integration.test.ts +++ b/app/game-api/test/selectPool.integration.test.ts @@ -221,6 +221,25 @@ integration('scenario 903 select pool through the durable turn daemon', () => { expect(concurrentReservation).toEqual(firstReservation); expect(firstReservation.candidates).toHaveLength(14); expect(await db.selectPoolEntry.count({ where: { ownerUserId: userId } })).toBe(14); + const reservedNames = new Set(firstReservation.candidates.map((candidate) => candidate.uniqueName)); + expect( + runtime!.world + .listGeneralPoolCandidates(new Date(firstReservation.validUntil)) + ?.some((candidate) => reservedNames.has(candidate.uniqueName)) + ).toBe(false); + await expect( + db.inputEvent.findUniqueOrThrow({ + where: { requestId: `select-pool:${userId}:select-pool-reserve-a:reserve` }, + }) + ).resolves.toMatchObject({ + eventType: 'selectPoolReserve', + status: 'SUCCEEDED', + actorUserId: userId, + payload: { + acceptedGameAt: expect.any(String), + acceptedGameTick: expect.any(Number), + }, + }); const attempts = await Promise.allSettled([ appRouter.createCaller(buildContext('select-pool-create-a')).join.selectPoolGeneral({ @@ -290,6 +309,10 @@ integration('scenario 903 select pool through the durable turn daemon', () => { expect(initialRankRows.every(({ nationId, value }) => nationId === 0 && value === 0)).toBe(true); expect(await db.selectPoolEntry.count({ where: { generalId: initial.id } })).toBe(1); expect(await db.selectPoolEntry.count({ where: { ownerUserId: userId } })).toBe(0); + expect(runtime!.world.listGeneralPoolEntries()?.filter((entry) => entry.ownerUserId === userId)).toEqual([]); + expect( + runtime!.world.listGeneralPoolEntries()?.find((entry) => entry.generalId === initial.id)?.candidate.name + ).toBe(initial.name); expect( await db.logEntry.count({ where: { meta: { path: ['ownerUserId'], equals: userId } }, @@ -336,6 +359,16 @@ integration('scenario 903 select pool through the durable turn daemon', () => { .createCaller(buildContext('select-pool-reselect')) .join.reselectPoolGeneral({ uniqueName: target.uniqueName }) ).resolves.toEqual({ ok: true, generalId: initial.id }); + await expect( + db.inputEvent.findUniqueOrThrow({ where: { requestId: 'select-pool-reselect:join.reselectPoolGeneral' } }) + ).resolves.toMatchObject({ + eventType: 'selectPoolReselect', + actorUserId: userId, + payload: { + acceptedGameAt: expect.any(String), + acceptedGameTick: expect.any(Number), + }, + }); const updated = await db.general.findUniqueOrThrow({ where: { id: initial.id } }); expect(updated).toMatchObject({ @@ -368,6 +401,10 @@ integration('scenario 903 select pool through the durable turn daemon', () => { ownerUserId: null, reservedUntil: null, }); + expect(runtime!.world.listGeneralPoolEntries()?.filter((entry) => entry.ownerUserId === userId)).toEqual([]); + expect( + runtime!.world.listGeneralPoolEntries()?.find((entry) => entry.generalId === initial.id)?.uniqueName + ).toBe(target.uniqueName); expect( await db.logEntry.count({ where: { meta: { path: ['ownerUserId'], equals: userId } }, @@ -518,6 +555,10 @@ integration('scenario 903 select pool through the durable turn daemon', () => { status: 'SUCCEEDED', attempts: 1, actorUserId: otherUserId, + payload: { + acceptedGameAt: expect.any(String), + acceptedGameTick: expect.any(Number), + }, }); }, 30_000); diff --git a/app/game-api/test/selectPoolRng.test.ts b/app/game-api/test/selectPoolRng.test.ts index 9aa242de..306c3ed1 100644 --- a/app/game-api/test/selectPoolRng.test.ts +++ b/app/game-api/test/selectPoolRng.test.ts @@ -19,11 +19,11 @@ const loadWeightedRows = async (): Promise> => { const drawVector = async (hiddenSeed: string): Promise<{ selected: number[]; draws: number[] }> => { const weighted = await loadWeightedRows(); - const now = new Date('2026-07-30T03:34:56.000Z'); + const nowTick = 72_000_000; const draws: number[] = []; const selected = await claimWeightedSelectionCandidates({ weighted, - rng: new RandUtil(new LiteHashDRBG(buildSelectPoolSeed(hiddenSeed, 42, now))), + rng: new RandUtil(new LiteHashDRBG(buildSelectPoolSeed(hiddenSeed, 42, nowTick))), count: 14, claim: async () => true, onDraw: (candidate) => draws.push(candidate.id), @@ -33,21 +33,21 @@ const drawVector = async (hiddenSeed: string): Promise<{ selected: number[]; dra describe('select pool Ref RNG parity', () => { it('uses the legacy seed serialization and fixed UnderS30 draw vector', async () => { - const now = new Date('2026-07-30T03:34:56.000Z'); - expect(buildSelectPoolSeed('vector-hidden', 42, now)).toBe( - 'str(13,vector-hidden)|str(10,selectPool)|int(42)|str(19,2026-07-30 12:34:56)' + const nowTick = 72_000_000; + expect(buildSelectPoolSeed('vector-hidden', 42, nowTick)).toBe( + 'str(13,vector-hidden)|str(10,selectPool)|int(42)|int(72000000)' ); await expect(drawVector('vector-hidden')).resolves.toEqual({ - selected: [72, 1283, 110, 1659, 608, 1408, 1543, 1573, 1096, 1081, 278, 1256, 872, 1369], - draws: [72, 1283, 110, 1659, 608, 1408, 1543, 1573, 1096, 1081, 278, 1256, 872, 1369], + selected: [1547, 199, 1266, 756, 1741, 1435, 303, 753, 214, 576, 387, 388, 394, 252], + draws: [1547, 199, 1266, 756, 1741, 1435, 303, 753, 214, 576, 387, 388, 394, 252], }); }); it('consumes duplicate draws without removing the candidate from the weighted pool', async () => { - await expect(drawVector('vector-hidden-28')).resolves.toEqual({ - selected: [314, 865, 1485, 1382, 110, 550, 27, 368, 399, 1298, 152, 39, 189, 760], - draws: [314, 865, 1485, 1382, 110, 550, 27, 368, 399, 1298, 27, 152, 39, 189, 760], + await expect(drawVector('vector-hidden-2')).resolves.toEqual({ + selected: [1632, 543, 640, 1351, 691, 966, 1110, 1358, 224, 936, 262, 109, 852, 456], + draws: [1632, 543, 640, 1351, 691, 966, 1110, 1358, 224, 936, 262, 109, 966, 852, 456], }); }); }); diff --git a/app/game-api/test/tournamentRouter.test.ts b/app/game-api/test/tournamentRouter.test.ts index c822f77d..d0b08e2a 100644 --- a/app/game-api/test/tournamentRouter.test.ts +++ b/app/game-api/test/tournamentRouter.test.ts @@ -129,6 +129,7 @@ const buildContext = (options: { userId: string; roles?: string[]; develCost?: number; + currentDevelCost?: number; rankRows?: Array<{ generalId: number; type: string; value: number }>; }): GameApiContext => { const db = { @@ -142,7 +143,10 @@ const buildContext = (options: { findMany: async () => options.rankRows ?? [], }, worldState: { - findFirst: async () => ({ config: { const: { develCost: options.develCost ?? 200 } } }), + findFirst: async () => ({ + config: { const: { develCost: options.develCost ?? 200 } }, + ...(options.currentDevelCost === undefined ? {} : { meta: { develcost: options.currentDevelCost } }), + }), }, } as unknown as DatabaseClient; return { @@ -267,6 +271,42 @@ describe('tournament router permissions and mutations', () => { expect(snapshot.participants[0]!.groupId).toBeLessThan(8); }); + it('charges the current game_env develcost instead of the scenario snapshot', async () => { + const redis = new MemoryRedis(); + const transport = new TournamentTransport(); + const general = buildGeneral(1, 'user-1'); + transport.gold.set(general.id, general.gold); + await setTournamentFixture(redis, { + stage: 1, + phase: 0, + type: 0, + auto: true, + openYear: 193, + openMonth: 1, + termSeconds: 60, + nextAt: '2026-07-26T01:00:00.000Z', + }); + await redis.set('sammo:che:default:tournament:participants', '[]'); + const caller = appRouter.createCaller( + buildContext({ + redis, + transport, + generals: [general], + userId: 'user-1', + develCost: 200, + currentDevelCost: 64, + }) + ); + + await expect(caller.tournament.join()).resolves.toEqual({ ok: true, count: 1 }); + expect(transport.gold.get(general.id)).toBe(1_936); + expect(transport.commands).toContainEqual({ + type: 'adjustGeneralResources', + reason: 'tournamentJoin', + adjustments: [{ generalId: general.id, goldDelta: -64, minGoldAfter: 0 }], + }); + }); + it('serializes concurrent bets and enforces the legacy per-user 1000 limit', async () => { const redis = new MemoryRedis(); const transport = new TournamentTransport(); diff --git a/app/game-api/test/tournamentWorker.test.ts b/app/game-api/test/tournamentWorker.test.ts index 53cff127..bb633a2e 100644 --- a/app/game-api/test/tournamentWorker.test.ts +++ b/app/game-api/test/tournamentWorker.test.ts @@ -320,6 +320,24 @@ describe('tournament worker (in-memory)', () => { ).toEqual({ payouts: [], total: 300, refundAll: false }); }); + it('coalesces duplicate legacy rows before one winner payout and rounding', () => { + expect( + buildBettingPayouts(10, [ + { generalId: 1, targetId: 10, amount: 101 }, + { generalId: 1, targetId: 10, amount: 99 }, + { generalId: 2, targetId: 10, amount: 100 }, + { generalId: 3, targetId: 11, amount: 100 }, + ]) + ).toEqual({ + payouts: [ + { generalId: 1, amount: 267 }, + { generalId: 2, amount: 133 }, + ], + total: 400, + refundAll: false, + }); + }); + it('locks 64 applicants into eight groups of eight', async () => { const redis = new MemoryRedis(); const store = new TournamentStore(redis, buildTournamentKeys('test-groups')); diff --git a/app/game-api/test/voteRouter.test.ts b/app/game-api/test/voteRouter.test.ts index 75c2b253..a55ce09c 100644 --- a/app/game-api/test/voteRouter.test.ts +++ b/app/game-api/test/voteRouter.test.ts @@ -9,6 +9,7 @@ import { InMemoryFlushStore } from '../src/auth/flushStore.js'; import type { DatabaseClient, GameApiContext, GeneralRow } from '../src/context.js'; import type { TurnDaemonTransport } from '../src/daemon/transport.js'; import { appRouter } from '../src/router.js'; +import { hasPollEnded } from '../src/router/vote/index.js'; const poll = { id: 1, @@ -95,10 +96,11 @@ const buildContext = (options: { configConst?: Record; metaDevelCost?: number; auctionTargets?: string[]; + clockTick?: number; }) => { const auth = options.auth === undefined ? buildAuth() : options.auth; const general = options.general === undefined ? buildGeneral() : options.general; - const requestCommand = vi.fn(async () => ({ + const requestCommand = vi.fn(async (_command?: unknown) => ({ type: 'voteReward' as const, ok: true as const, voteId: 1, @@ -139,6 +141,14 @@ const buildContext = (options: { currentYear: 200, currentMonth: 1, tickSeconds: 3600, + ...(options.clockTick === undefined + ? {} + : { + clockBaseTime: new Date('0200-01-01T00:00:00.000Z'), + clockTick: BigInt(options.clockTick), + clockMode: 'manual', + clockWallAnchor: new Date('2026-07-26T00:00:00.000Z'), + }), config: { const: { develCost: 18, allItems: {}, ...(options.configConst ?? {}) } }, meta: { ...(options.metaDevelCost === undefined ? {} : { develcost: options.metaDevelCost }), @@ -201,6 +211,29 @@ const buildContext = (options: { }; describe('vote router actor and permission boundaries', () => { + it('keeps a poll open at its exact Ref end tick and closes it after that tick', () => { + const now = new Date('2026-07-26T00:00:00Z'); + const time = { + now, + wallNow: now, + tick: 100, + mode: 'manual' as const, + running: false, + startsAt: null, + dateToTick: () => 100, + }; + + expect(hasPollEnded({ closed_at: null, end_at: now, end_tick: 100n }, time)).toBe(false); + expect(hasPollEnded({ closed_at: null, end_at: now, end_tick: 99n }, time)).toBe(true); + expect(hasPollEnded({ closed_at: null, end_at: now, end_tick: null }, { ...time, tick: null })).toBe(false); + expect( + hasPollEnded( + { closed_at: null, end_at: now, end_tick: null }, + { ...time, now: new Date(now.getTime() + 1), tick: null } + ) + ).toBe(true); + }); + it('rejects unauthenticated survey access', async () => { const fixture = buildContext({ auth: null }); @@ -211,18 +244,20 @@ describe('vote router actor and permission boundaries', () => { it('uses only the general owned by the authenticated user for voting and reward dispatch', async () => { const owned = buildGeneral({ id: 7, userId: 'user-1', name: '유비' }); - const fixture = buildContext({ general: owned }); + const fixture = buildContext({ general: owned, clockTick: 100 }); await expect( appRouter.createCaller(fixture.context).vote.submitVote({ voteId: 1, selection: [0] }) ).resolves.toEqual({ ok: true, wonLottery: false }); - expect(fixture.requestCommand).toHaveBeenCalledWith( - expect.objectContaining({ - type: 'voteReward', - voteId: 1, - generalId: 7, - goldReward: 90, - }) + expect(fixture.requestCommand).toHaveBeenCalledWith({ + type: 'voteReward', + voteId: 1, + generalId: 7, + selection: [0], + acceptedGameTick: 100, + }); + expect(fixture.queryRaw.mock.calls.some(([query]) => sqlText(query).includes('INSERT INTO vote ('))).toBe( + false ); expect(fixture.changeJournal.snapshot()).toEqual([{ domain: 'front.general', entityId: 7 }]); expect(fixture.redisIncr).not.toHaveBeenCalled(); @@ -230,7 +265,10 @@ describe('vote router actor and permission boundaries', () => { }); it('publishes a global front-status projection after creating a survey', async () => { - const fixture = buildContext({ auth: buildAuth(['admin.survey.open']) }); + const auth = buildAuth(['admin.survey.open']); + auth.user.username = 'admin-account'; + auth.user.displayName = '관리자 표시명'; + const fixture = buildContext({ auth, general: buildGeneral({ name: '관리자 장수' }) }); await expect( appRouter.createCaller(fixture.context).vote.createPoll({ @@ -244,19 +282,22 @@ describe('vote router actor and permission boundaries', () => { expect(fixture.requestCommand).not.toHaveBeenCalled(); expect(fixture.redisIncr).not.toHaveBeenCalled(); expect(fixture.redisPublish).not.toHaveBeenCalled(); + const insert = fixture.queryRaw.mock.calls + .map(([query]) => query) + .find((query) => sqlText(query).includes('INSERT INTO vote_poll')); + expect(insert?.values).toContain('admin-account'); + expect(insert?.values).not.toContain('관리자 장수'); }); - it('uses the current world develcost for the legacy five-times survey reward', async () => { + it('reports the current world develcost as the legacy five-times survey reward', async () => { const fixture = buildContext({ metaDevelCost: 30, configConst: { develCost: 0 } }); await expect(appRouter.createCaller(fixture.context).vote.getVoteList()).resolves.toMatchObject({ voteReward: 150, }); - await appRouter.createCaller(fixture.context).vote.submitVote({ voteId: 1, selection: [0] }); - expect(fixture.requestCommand).toHaveBeenCalledWith(expect.objectContaining({ goldReward: 150 })); }); - it('includes active unique auctions in the API-side reward expectation', async () => { + it('leaves live reward and unique occupancy calculation to ENGINE', async () => { const fixture = buildContext({ configConst: { allItems: { weapon: { che_무기_12_칠성검: 1 } }, @@ -270,11 +311,11 @@ describe('vote router actor and permission boundaries', () => { await appRouter.createCaller(fixture.context).vote.submitVote({ voteId: 1, selection: [0] }); - expect(fixture.requestCommand).toHaveBeenCalledWith( - expect.objectContaining({ - unique: { expected: false, itemKey: null }, - }) - ); + expect(fixture.db.general.findMany).not.toHaveBeenCalled(); + expect(fixture.db.general.count).not.toHaveBeenCalled(); + expect(fixture.db.auction.findMany).not.toHaveBeenCalled(); + expect(fixture.requestCommand.mock.calls[0]?.[0]).not.toHaveProperty('goldReward'); + expect(fixture.requestCommand.mock.calls[0]?.[0]).not.toHaveProperty('unique'); }); it('rejects voting and comments when the authenticated user owns no general', async () => { diff --git a/app/game-api/test/yearbookArchiveRouter.test.ts b/app/game-api/test/yearbookArchiveRouter.test.ts index 46f4d9d6..c5bf25fa 100644 --- a/app/game-api/test/yearbookArchiveRouter.test.ts +++ b/app/game-api/test/yearbookArchiveRouter.test.ts @@ -97,6 +97,9 @@ const buildContext = ( hasGeneral?: boolean; worldMeta?: unknown; liveLogs?: { history: string[]; action: string[] }; + liveNations?: Array>; + liveCities?: Array>; + liveGenerals?: Array>; } = {} ): GameApiContext => { const db = { @@ -104,13 +107,13 @@ const buildContext = ( general: { findFirst: async ({ where }: { where: { userId: string } }) => options.hasGeneral === false ? null : { id: where.userId === 'owner-a' ? 1 : 2, userId: where.userId }, - findMany: async () => [], + findMany: async () => options.liveGenerals ?? [], }, city: { - findMany: async () => [], + findMany: async () => options.liveCities ?? [], }, nation: { - findMany: async () => [], + findMany: async () => options.liveNations ?? [], }, logEntry: { findMany: async ({ where }: { where: { category: unknown } }) => { @@ -326,4 +329,82 @@ describe('historical yearbook access from dynasty', () => { }, }); }); + + it('uses stored Ref nation projections, canonical neutral values, and descending power in the live month', async () => { + const zeroCityStats = { + population: 0, + agriculture: 0, + commerce: 0, + security: 0, + defence: 0, + wall: 0, + populationMax: 1, + agricultureMax: 1, + commerceMax: 1, + securityMax: 1, + defenceMax: 1, + wallMax: 1, + }; + const caller = appRouter.createCaller( + buildContext(authFor('owner-a'), { + liveNations: [ + { + id: 0, + name: '오염된 재야', + color: '#ffffff', + level: 9, + gold: 0, + rice: 0, + tech: 0, + meta: { power: 90, gennum: 90 }, + }, + { + id: 1, + name: '촉', + color: '#ff0000', + level: 7, + gold: 0, + rice: 0, + tech: 0, + meta: { power: 777, gennum: 9 }, + }, + { + id: 2, + name: '위', + color: '#0000ff', + level: 7, + gold: 0, + rice: 0, + tech: 0, + meta: { power: 0, gennum: 2 }, + }, + ], + liveCities: [ + { id: 0, name: '낙양', nationId: 0, ...zeroCityStats }, + { id: 1, name: '성도', nationId: 1, ...zeroCityStats }, + { id: 2, name: '허창', nationId: 2, ...zeroCityStats }, + ], + }) + ); + + const result = await caller.yearbook.getHistory({ year: 220, month: 1 }); + + expect(result).toMatchObject({ + notModified: false, + data: { + nations: [ + expect.objectContaining({ id: 1, power: 777, generalCount: 9 }), + expect.objectContaining({ + id: 0, + name: '재야', + color: '#000000', + level: 0, + power: 1, + generalCount: 1, + }), + expect.objectContaining({ id: 2, power: 0, generalCount: 2 }), + ], + }, + }); + }); }); diff --git a/app/game-engine/src/auction/bidder.ts b/app/game-engine/src/auction/bidder.ts index 4f0ac6a0..9c6a6586 100644 --- a/app/game-engine/src/auction/bidder.ts +++ b/app/game-engine/src/auction/bidder.ts @@ -1,10 +1,11 @@ import { randomUUID } from 'node:crypto'; import { createGamePostgresConnector, GamePrisma, type GamePrismaClient } from '@sammo-ts/infra'; -import { isItemKey, ItemLoader } from '@sammo-ts/logic'; +import { isItemKey, ItemLoader, type MessageDraft } from '@sammo-ts/logic'; import type { TurnDaemonCommand, TurnDaemonCommandResult } from '../lifecycle/types.js'; import type { InMemoryTurnWorld } from '../turn/inMemoryWorld.js'; +import type { TurnGeneral } from '../turn/types.js'; export interface AuctionBidder { bid( @@ -20,6 +21,7 @@ type AuctionStatus = 'OPEN' | 'FINALIZING' | 'FINISHED' | 'CANCELED'; const COEFF_EXTENSION_MINUTES_PER_BID = 1 / 6; const MIN_EXTENSION_MINUTES_PER_BID = 1; +export const MIN_AUCTION_REMAINING_RESOURCE = 1_000; interface AuctionRow { id: number; @@ -29,6 +31,7 @@ interface AuctionRow { detail: unknown; status: AuctionStatus; closeAt: Date; + closeTick: bigint | null; latestEventId: string; } @@ -40,12 +43,78 @@ interface AuctionBidRow { } interface AuctionDetail { + title?: string; isReverse?: boolean; startBidAmount?: number; finishBidAmount?: number | null; availableLatestBidCloseDate?: string | null; } +export const hasEnoughResourceForAuctionBid = (current: number, additionalBid: number): boolean => + Number.isFinite(current) && + Number.isFinite(additionalBid) && + additionalBid > 0 && + current >= additionalBid + MIN_AUCTION_REMAINING_RESOURCE; + +export const hasAuctionClosePassed = ( + auction: { closeAt: Date; closeTick: bigint | null }, + now: Date, + nowTick: number | null +): boolean => + auction.closeTick !== null && nowTick !== null + ? auction.closeTick < BigInt(nowTick) + : auction.closeAt.getTime() < now.getTime(); + +export const resolveAuctionBidTiming = ( + world: Pick, + processingNow: Date, + acceptedGameTick?: number +): { bidAt: Date; bidTick: number } => + acceptedGameTick === undefined + ? { bidAt: processingNow, bidTick: world.dateToGameTick(processingNow) } + : { bidAt: world.gameTickToDate(acceptedGameTick), bidTick: acceptedGameTick }; + +export const hasAuctionBidClosePassed = ( + auction: { closeAt: Date; closeTick: bigint | null }, + world: Pick, + processingNow: Date, + acceptedGameTick?: number +): boolean => { + const { bidAt, bidTick } = resolveAuctionBidTiming(world, processingNow, acceptedGameTick); + return hasAuctionClosePassed(auction, bidAt, bidTick); +}; + +export const buildAuctionOutbidRefundMessage = (options: { + auctionId: number; + title?: string; + bidder: TurnGeneral; + nation?: { name: string; color: string } | null; + time: Date; +}): MessageDraft => ({ + msgType: 'private', + src: { + generalId: 0, + generalName: '', + nationId: 0, + nationName: 'System', + color: '#000000', + icon: '', + }, + dest: { + generalId: options.bidder.id, + generalName: options.bidder.name, + nationId: options.bidder.nationId, + nationName: options.nation?.name ?? '재야', + color: options.nation?.color ?? '#000000', + icon: options.bidder.picture ?? '', + }, + text: `${options.auctionId}번 ${options.title ?? '경매'}에 상회입찰자가 나타났습니다.`, + time: new Date(options.time.getTime()), + validUntil: new Date('9999-12-31T00:00:00.000Z'), + option: {}, + sendDestOnly: true, +}); + const parseDetail = (detail: unknown): AuctionDetail => { if (!detail || typeof detail !== 'object') { return {}; @@ -106,6 +175,7 @@ const loadAuction = async (prisma: QueryClient, auctionId: number): Promise; + finalize( + command: Extract, + db?: GamePrisma.TransactionClient + ): Promise; close(): Promise; } @@ -31,6 +35,7 @@ interface AuctionRow { detail: unknown; status: AuctionStatus; closeAt: Date; + closeTick: bigint | null; } interface AuctionBidRow { @@ -59,6 +64,93 @@ const parseDetail = (detail: unknown): AuctionDetailResource => { return detail as AuctionDetailResource; }; +const toFiniteNumber = (value: unknown): number => { + const parsed = typeof value === 'string' ? Number(value) : value; + return typeof parsed === 'number' && Number.isFinite(parsed) ? parsed : 0; +}; + +const readRankTrackedAmount = (bid: AuctionBidRow): number => { + const meta = asRecord(bid.meta); + return Math.max(0, toFiniteNumber(meta.inheritSpentTrackedAmount)); +}; + +export const resolveAuctionResourceAmount = (detailAmount: unknown, targetCode: string | null): number | null => { + const detailValue = toFiniteNumber(detailAmount); + if (detailValue > 0) return detailValue; + const targetValue = toFiniteNumber(targetCode); + return targetValue > 0 ? targetValue : null; +}; + +export const isUniqueAuctionSupplyExhausted = (configuredAmount: number, occupiedAmount: number): boolean => + configuredAmount <= occupiedAmount; + +export const resolveUniqueSupplyRetryCloseAt = (now: Date, turnMinutes: number): Date => + new Date(now.getTime() + Math.max(1, turnMinutes) * 60_000); + +export const isAuctionFinalizeGenerationCurrent = ( + auction: Pick, + command: Pick, 'expectedCloseAt' | 'expectedCloseTick'> +): boolean => { + if (command.expectedCloseTick !== undefined) { + return auction.closeTick !== null && auction.closeTick === BigInt(command.expectedCloseTick); + } + if (command.expectedCloseAt !== undefined) { + return auction.closeAt.getTime() === new Date(command.expectedCloseAt).getTime(); + } + return true; +}; + +export const hasAuctionFinalizeDeadlineArrived = ( + auction: Pick, + now: Date, + nowTick: number +): boolean => + auction.closeTick === null ? auction.closeAt.getTime() <= now.getTime() : auction.closeTick <= BigInt(nowTick); + +export const buildAuctionBidderSystemMessage = (options: { + bidder: TurnGeneral; + nation?: { name: string; color: string } | null; + time: Date; + text: string; +}): MessageDraft => ({ + msgType: 'private', + src: { + generalId: 0, + generalName: '', + nationId: 0, + nationName: 'System', + color: '#000000', + icon: '', + }, + dest: { + generalId: options.bidder.id, + generalName: options.bidder.name, + nationId: options.bidder.nationId, + nationName: options.nation?.name ?? '재야', + color: options.nation?.color ?? '#000000', + icon: options.bidder.picture ?? '', + }, + text: options.text, + time: new Date(options.time.getTime()), + validUntil: new Date('9999-12-31T00:00:00.000Z'), + option: {}, + sendDestOnly: true, +}); + +export const buildAuctionCancellationMessage = (options: { + auctionId: number; + title?: string; + bidder: TurnGeneral; + nation?: { name: string; color: string } | null; + time: Date; +}): MessageDraft => + buildAuctionBidderSystemMessage({ + bidder: options.bidder, + nation: options.nation, + time: options.time, + text: `${options.auctionId}번 ${options.title ?? '경매'}가 취소되었습니다.`, + }); + const toTurnMinutes = (tickSeconds: number): number => Math.max(1, Math.round(tickSeconds / 60)); type AuctionDb = GamePrisma.TransactionClient; @@ -76,12 +168,48 @@ const pushLogs = (world: InMemoryTurnWorld, logs: LogEntryDraft[]): void => { } }; +export const buildUniqueAuctionInheritanceLogData = (options: { + userId: string; + year: number; + month: number; + itemName: string; + amount: number; +}) => ({ + userId: options.userId, + year: options.year, + month: options.month, + logType: 'inheritPoint', + text: `유니크 ${options.itemName} 경매로 ${options.amount} 포인트 사용`, +}); + +export const buildUniqueAuctionAwardLogs = (options: { + bidder: TurnGeneral; + nationName: string; + itemName: string; + itemRawName: string; +}): LogEntryDraft[] => { + const logger = new ActionLogger({ generalId: options.bidder.id, nationId: options.bidder.nationId }); + const josaYi = JosaUtil.pick(options.bidder.name, '이'); + const josaUl = JosaUtil.pick(options.itemRawName, '을'); + logger.pushGeneralActionLog(`${options.itemName}${josaUl} 습득했습니다!`); + logger.pushGeneralHistoryLog(`${options.itemName}${josaUl} 습득`); + logger.pushGlobalActionLog( + `${options.bidder.name}${josaYi} ${options.itemName}${josaUl} 습득했습니다!` + ); + logger.pushGlobalHistoryLog( + `【보물수배】${options.nationName}${options.bidder.name}${josaYi} ${options.itemName}${josaUl} 습득했습니다!` + ); + return logger.flush(); +}; + const refundInheritancePoint = async (options: { prisma: AuctionDb; userId: string; + generalId: number; amount: number; + rankTrackedAmount: number; }): Promise => { - const { prisma, userId, amount } = options; + const { prisma, userId, generalId, amount, rankTrackedAmount } = options; if (!userId || amount <= 0) { return; } @@ -95,6 +223,16 @@ const refundInheritancePoint = async (options: { updated_at = EXCLUDED.updated_at ` ); + if (rankTrackedAmount > 0) { + await prisma.$executeRaw( + GamePrisma.sql` + UPDATE rank_data + SET value = GREATEST(0, value - ${rankTrackedAmount}) + WHERE general_id = ${generalId} + AND type = 'inherit_spent_dyn' + ` + ); + } }; export const createAuctionFinalizer = async (options: { @@ -103,7 +241,6 @@ export const createAuctionFinalizer = async (options: { }): Promise => { const connector = createGamePostgresConnector({ url: options.databaseUrl }); await connector.connect(); - const prisma = connector.prisma; const world = options.world; const itemLoader = new ItemLoader(); @@ -115,8 +252,17 @@ export const createAuctionFinalizer = async (options: { }; return { - finalize: async (auctionId: number, commandDb): Promise => { - const db = commandDb ?? prisma; + finalize: async (command, commandDb): Promise => { + const auctionId = command.auctionId; + if (!commandDb) { + return { + type: 'auctionFinalize', + ok: false, + auctionId, + reason: '경매 확정은 ENGINE mutation transaction에서만 실행할 수 있습니다.', + }; + } + const db = commandDb; const rows = await db.$queryRaw( GamePrisma.sql` SELECT id, @@ -126,9 +272,11 @@ export const createAuctionFinalizer = async (options: { host_name as "hostName", detail, status, - close_at as "closeAt" + close_at as "closeAt", + close_tick as "closeTick" FROM auction WHERE id = ${auctionId} + FOR UPDATE ` ); const auction = rows[0]; @@ -145,7 +293,39 @@ export const createAuctionFinalizer = async (options: { return { type: 'auctionFinalize', ok: true, auctionId }; } - if (auction.status !== 'FINALIZING') { + const now = world.getGameNow(new Date()); + if (auction.status === 'OPEN') { + if (!isAuctionFinalizeGenerationCurrent(auction, command)) { + return { + type: 'auctionFinalize', + ok: false, + auctionId, + reason: '경매 마감 세대가 변경되었습니다.', + }; + } + const nowTick = world.dateToGameTick(now); + if (!hasAuctionFinalizeDeadlineArrived(auction, now, nowTick)) { + return { + type: 'auctionFinalize', + ok: false, + auctionId, + reason: '경매 마감 시각이 아직 지나지 않았습니다.', + }; + } + const transitioned = await db.$executeRaw( + GamePrisma.sql` + UPDATE auction + SET status = 'FINALIZING', + finalizing_at = ${now}, + updated_at = ${now} + WHERE id = ${auctionId} + AND status = 'OPEN' + ` + ); + if (transitioned !== 1) { + throw new Error(`경매 확정 상태 전이에 실패했습니다: ${auctionId}`); + } + } else if (auction.status !== 'FINALIZING') { return { type: 'auctionFinalize', ok: false, @@ -176,7 +356,6 @@ export const createAuctionFinalizer = async (options: { ); const highestBid = bidRows[0] ?? null; - const now = world.getGameNow(new Date()); const logs: LogEntryDraft[] = []; const globalLogger = new ActionLogger(); @@ -192,11 +371,76 @@ export const createAuctionFinalizer = async (options: { ); }; + const cancelWithEscrowRefund = async (options: { + bid: AuctionBidRow; + resourceAmount?: number | null; + refundResourceHost?: boolean; + }): Promise => { + const refundBidder = world.getGeneralById(options.bid.generalId); + if (!refundBidder) return false; + + const shouldRefundHost = + auction.type !== 'UNIQUE_ITEM' && options.refundResourceHost !== false && auction.hostGeneralId > 0; + const resourceAmount = options.resourceAmount ?? null; + const resourceHost = shouldRefundHost ? world.getGeneralById(auction.hostGeneralId) : null; + if (shouldRefundHost && (!resourceHost || resourceAmount === null || resourceAmount <= 0)) { + return false; + } + + if (auction.type === 'UNIQUE_ITEM') { + const bidderUserId = await getGeneralUserId(db, refundBidder.id); + if (!bidderUserId) return false; + const rankTrackedAmount = readRankTrackedAmount(options.bid); + await refundInheritancePoint({ + prisma: db, + userId: bidderUserId, + generalId: refundBidder.id, + amount: options.bid.amount, + rankTrackedAmount, + }); + world.updateGeneral(refundBidder.id, { + inheritancePoints: { + ...refundBidder.inheritancePoints, + previous: toFiniteNumber(refundBidder.inheritancePoints?.previous) + options.bid.amount, + }, + meta: { + ...refundBidder.meta, + inherit_spent_dyn: Math.max( + 0, + toFiniteNumber(refundBidder.meta.inherit_spent_dyn) - rankTrackedAmount + ), + }, + }); + } else { + const bidderResource = auction.type === 'BUY_RICE' ? 'gold' : 'rice'; + world.updateGeneral(refundBidder.id, { + [bidderResource]: refundBidder[bidderResource] + options.bid.amount, + }); + if (resourceHost && resourceAmount !== null) { + const hostResource = auction.type === 'BUY_RICE' ? 'rice' : 'gold'; + world.updateGeneral(resourceHost.id, { + [hostResource]: resourceHost[hostResource] + resourceAmount, + }); + } + } + + world.queueMessage( + buildAuctionCancellationMessage({ + auctionId: auction.id, + title: detail.title, + bidder: refundBidder, + nation: world.getNationById(refundBidder.nationId), + time: now, + }) + ); + await finalizeStatus('CANCELED'); + return true; + }; + if (!highestBid) { if (auction.type === 'BUY_RICE' || auction.type === 'SELL_RICE') { - const amount = detail.amount; - if (!amount || amount <= 0) { - await finalizeStatus('CANCELED'); + const amount = resolveAuctionResourceAmount(detail.amount, auction.targetCode); + if (amount === null) { return { type: 'auctionFinalize', ok: false, @@ -207,7 +451,6 @@ export const createAuctionFinalizer = async (options: { if (auction.hostGeneralId > 0) { const host = world.getGeneralById(auction.hostGeneralId); if (!host) { - await finalizeStatus('CANCELED'); return { type: 'auctionFinalize', ok: false, @@ -226,7 +469,22 @@ export const createAuctionFinalizer = async (options: { ); logs.push(...hostLogger.flush()); globalLogger.pushGlobalActionLog(`경매 ${auctionId}번이 유찰되었습니다.`, LogFormat.PLAIN); + world.queueMessage( + buildAuctionBidderSystemMessage({ + bidder: host, + nation: world.getNationById(host.nationId), + time: now, + text: `${auctionId}번 ${resourceKey === 'rice' ? '쌀' : '금'} 경매에 입찰이 없어 취소되었습니다.`, + }) + ); } + } else { + return { + type: 'auctionFinalize', + ok: false, + auctionId, + reason: '유니크 경매 입찰 정보가 없어 자동 환불할 수 없습니다.', + }; } logs.push(...globalLogger.flush()); @@ -255,6 +513,7 @@ export const createAuctionFinalizer = async (options: { GamePrisma.sql` UPDATE auction SET status = 'OPEN', + finalizing_at = NULL, detail = ${JSON.stringify(nextDetail)}::jsonb, close_at = ${nextCloseAt}, close_tick = ${BigInt(world.dateToGameTick(nextCloseAt))}, @@ -273,7 +532,6 @@ export const createAuctionFinalizer = async (options: { const bidder = world.getGeneralById(highestBid.generalId); if (!bidder) { - await finalizeStatus('CANCELED'); return { type: 'auctionFinalize', ok: false, @@ -283,9 +541,8 @@ export const createAuctionFinalizer = async (options: { } if (auction.type === 'BUY_RICE' || auction.type === 'SELL_RICE') { - const amount = detail.amount; - if (!amount || amount <= 0) { - await finalizeStatus('CANCELED'); + const amount = resolveAuctionResourceAmount(detail.amount, auction.targetCode); + if (amount === null) { return { type: 'auctionFinalize', ok: false, @@ -298,7 +555,11 @@ export const createAuctionFinalizer = async (options: { if (auction.hostGeneralId > 0) { const host = world.getGeneralById(auction.hostGeneralId); if (!host) { - await finalizeStatus('CANCELED'); + await cancelWithEscrowRefund({ + bid: highestBid, + resourceAmount: amount, + refundResourceHost: false, + }); return { type: 'auctionFinalize', ok: false, @@ -332,7 +593,7 @@ export const createAuctionFinalizer = async (options: { } else if (auction.type === 'UNIQUE_ITEM') { const itemKey = auction.targetCode; if (!itemKey) { - await finalizeStatus('CANCELED'); + await cancelWithEscrowRefund({ bid: highestBid }); return { type: 'auctionFinalize', ok: false, @@ -341,7 +602,7 @@ export const createAuctionFinalizer = async (options: { }; } if (!isItemKey(itemKey)) { - await finalizeStatus('CANCELED'); + await cancelWithEscrowRefund({ bid: highestBid }); return { type: 'auctionFinalize', ok: false, @@ -351,12 +612,7 @@ export const createAuctionFinalizer = async (options: { } const itemModule = await itemLoader.load(itemKey).catch(() => null); if (!itemModule) { - await finalizeStatus('CANCELED'); - await refundInheritancePoint({ - prisma: db, - userId: (await getGeneralUserId(db, bidder.id)) ?? '', - amount: highestBid.amount, - }); + await cancelWithEscrowRefund({ bid: highestBid }); return { type: 'auctionFinalize', ok: false, @@ -370,6 +626,42 @@ export const createAuctionFinalizer = async (options: { asRecord(world.getScenarioConfig().const), itemLoader ); + const configuredAmount = config.allItems[itemModule.slot]?.[itemKey] ?? 0; + const occupiedAmount = world + .listGenerals() + .filter((candidate) => candidate.role.items[itemModule.slot] === itemKey).length; + if (isUniqueAuctionSupplyExhausted(configuredAmount, occupiedAmount)) { + // Ref keeps the already-escrowed highest bid and retries the expired + // auction on later turn passes when every configured copy is held. + // This differs from same-slot ownership, which extends the deadline. + const turnMinutes = await resolveTurnMinutes(db); + const nextCloseAt = resolveUniqueSupplyRetryCloseAt(now, turnMinutes); + await db.$executeRaw( + GamePrisma.sql` + UPDATE auction + SET status = 'OPEN', + finalizing_at = NULL, + close_at = ${nextCloseAt}, + close_tick = ${BigInt(world.dateToGameTick(nextCloseAt))}, + updated_at = ${now} + WHERE id = ${auctionId} + ` + ); + world.queueMessage( + buildAuctionBidderSystemMessage({ + bidder, + nation: world.getNationById(bidder.nationId), + time: now, + text: '그 유니크는 모두 점유되었습니다.', + }) + ); + return { + type: 'auctionFinalize', + ok: false, + auctionId, + reason: '그 유니크는 모두 점유되었습니다.', + }; + } const scenarioMeta = asRecord(state.meta.scenarioMeta); const startYear = typeof scenarioMeta.startYear === 'number' && Number.isFinite(scenarioMeta.startYear) @@ -417,6 +709,7 @@ export const createAuctionFinalizer = async (options: { GamePrisma.sql` UPDATE auction SET status = 'OPEN', + finalizing_at = NULL, host_general_id = ${bidder.id === auction.hostGeneralId ? auction.hostGeneralId : 0}, host_name = ${bidder.id === auction.hostGeneralId ? auction.hostName : '(상인)'}, detail = ${JSON.stringify(nextDetail)}::jsonb, @@ -432,6 +725,14 @@ export const createAuctionFinalizer = async (options: { ); logs.push(...globalLogger.flush()); pushLogs(world, logs); + world.queueMessage( + buildAuctionBidderSystemMessage({ + bidder, + nation: world.getNationById(bidder.nationId), + time: now, + text: '유니크 아이템 소유 제한 상태입니다. 종료 시간이 연장됩니다.', + }) + ); return { type: 'auctionFinalize', ok: false, @@ -463,6 +764,7 @@ export const createAuctionFinalizer = async (options: { GamePrisma.sql` UPDATE auction SET status = 'OPEN', + finalizing_at = NULL, host_general_id = ${bidder.id === auction.hostGeneralId ? auction.hostGeneralId : 0}, host_name = ${bidder.id === auction.hostGeneralId ? auction.hostName : '(상인)'}, detail = ${JSON.stringify(nextDetail)}::jsonb, @@ -478,6 +780,17 @@ export const createAuctionFinalizer = async (options: { ); logs.push(...globalLogger.flush()); pushLogs(world, logs); + world.queueMessage( + buildAuctionBidderSystemMessage({ + bidder, + nation: world.getNationById(bidder.nationId), + time: now, + text: + currentItem === itemKey + ? '이미 그 유니크를 가지고 있습니다.' + : '이미 다른 유니크를 가지고 있습니다.', + }) + ); return { type: 'auctionFinalize', ok: false, @@ -499,28 +812,28 @@ export const createAuctionFinalizer = async (options: { itemInventory: nextBidder.itemInventory, }); - const bidderLogger = new ActionLogger({ generalId: bidder.id, nationId: bidder.nationId }); - const josaUl = JosaUtil.pick(itemModule.rawName, '을'); - bidderLogger.pushGeneralActionLog( - `유니크 경매 낙찰로 ${itemModule.name}${josaUl} 획득했습니다.`, - LogFormat.PLAIN + logs.push( + ...buildUniqueAuctionAwardLogs({ + bidder, + nationName: world.getNationById(bidder.nationId)?.name ?? '재야', + itemName: itemModule.name, + itemRawName: itemModule.rawName, + }) ); - logs.push(...bidderLogger.flush()); const bidderUserId = await getGeneralUserId(db, bidder.id); if (bidderUserId) { - const userIdNum = Number(bidderUserId); - if (Number.isFinite(userIdNum)) { - const userLogger = new UserLogger(userIdNum); - userLogger.push( - `유니크 ${itemModule.name} 경매로 ${highestBid.amount} 포인트 사용`, - 'inheritPoint' - ); - logs.push(...userLogger.flush()); - } + const state = world.getState(); + await db.inheritanceLog.create({ + data: buildUniqueAuctionInheritanceLogData({ + userId: bidderUserId, + year: state.currentYear, + month: state.currentMonth, + itemName: itemModule.name, + amount: highestBid.amount, + }), + }); } - - globalLogger.pushGlobalActionLog(`유니크 경매 ${auctionId}번이 성사되었습니다.`, LogFormat.PLAIN); } logs.push(...globalLogger.flush()); diff --git a/app/game-engine/src/auction/opener.ts b/app/game-engine/src/auction/opener.ts index e83c43f6..69117710 100644 --- a/app/game-engine/src/auction/opener.ts +++ b/app/game-engine/src/auction/opener.ts @@ -37,6 +37,12 @@ const fail = (reason: string): TurnDaemonCommandResult => ({ reason, }); +export const buildInitialUniqueAuctionBidMeta = (obfuscatedName: string, amount: number) => ({ + obfuscatedName, + tryExtendCloseDate: false, + inheritSpentTrackedAmount: amount, +}); + const openResourceAuction = async ( command: AuctionOpenCommand, world: InMemoryTurnWorld, @@ -257,7 +263,7 @@ const openUniqueAuction = async ( amount: command.amount, eventId, eventAt: now, - meta: { obfuscatedName: alias, tryExtendCloseDate: false }, + meta: buildInitialUniqueAuctionBidMeta(alias, command.amount), }, }, }, @@ -266,6 +272,26 @@ const openUniqueAuction = async ( where: { userId_key: { userId, key: 'previous' } }, data: { value: currentPoint - command.amount }, }); + await db.$executeRaw( + GamePrisma.sql` + INSERT INTO rank_data (nation_id, general_id, type, value) + VALUES (${general.nationId}, ${general.id}, 'inherit_spent_dyn', ${command.amount}) + ON CONFLICT (general_id, type) + DO UPDATE SET + nation_id = EXCLUDED.nation_id, + value = rank_data.value + EXCLUDED.value + ` + ); + world.updateGeneral(general.id, { + inheritancePoints: { + ...general.inheritancePoints, + previous: currentPoint - command.amount, + }, + meta: { + ...general.meta, + inherit_spent_dyn: readNumber(asRecord(general.meta), 'inherit_spent_dyn', 0) + command.amount, + }, + }); const logger = new ActionLogger(); const rawNameJosa = JosaUtil.pick(item.rawName, '라'); diff --git a/app/game-engine/src/lifecycle/turnDaemonLifecycle.ts b/app/game-engine/src/lifecycle/turnDaemonLifecycle.ts index 7ae38a7b..c3ae3878 100644 --- a/app/game-engine/src/lifecycle/turnDaemonLifecycle.ts +++ b/app/game-engine/src/lifecycle/turnDaemonLifecycle.ts @@ -388,7 +388,14 @@ export class TurnDaemonLifecycle { this.status.running = true; this.status.pendingReason = pending.reason; - const targetTime = pending.targetTime ?? new Date(startMs); + const requestedTargetTime = pending.targetTime ?? new Date(startMs); + const lastTurnTime = this.status.lastTurnTime ? new Date(this.status.lastTurnTime) : requestedTargetTime; + // A single Ref turn run never observes generals beyond the next monthly + // boundary before that boundary's monthly actions have completed. Keep + // explicit manual/poke targets on the same chronological boundary as the + // scheduled paths above. + const nextMonthTime = this.getNextTickTime(lastTurnTime); + const targetTime = new Date(Math.min(requestedTargetTime.getTime(), nextMonthTime.getTime())); const budget = pending.budget ?? this.options.defaultBudget; const checkpoint = this.status.checkpoint; let result: TurnRunResult; diff --git a/app/game-engine/src/scenario/generalPoolLoader.ts b/app/game-engine/src/scenario/generalPoolLoader.ts index 799d29bb..a391efb0 100644 --- a/app/game-engine/src/scenario/generalPoolLoader.ts +++ b/app/game-engine/src/scenario/generalPoolLoader.ts @@ -7,8 +7,8 @@ import { isEventDomesticTraitKey } from '@sammo-ts/logic'; import { resolveWorkspaceRoot } from '../paths.js'; const DEFAULT_GENERAL_POOL_ROOT = path.resolve(resolveWorkspaceRoot(), 'resources', 'general-pool'); -const SUPPORTED_POOL = 'SPoolUnderU30'; -const EXPECTED_COLUMNS = [ +const SUPPORTED_POOLS = new Set(['SPoolUnderU30', 'SPoolUnderU100']); +const BASE_COLUMNS = [ 'generalName', 'leadership', 'strength', @@ -18,6 +18,13 @@ const EXPECTED_COLUMNS = [ 'imgsvr', 'picture', ] as const; +const CENTENNIAL_COLUMNS = [ + ...BASE_COLUMNS, + 'sourcePhase', + 'sourceServerId', + 'sourceGeneralNo', + 'selectionReasons', +] as const; export interface GeneralPoolSeedEntry { uniqueName: string; @@ -31,38 +38,58 @@ export interface GeneralPoolLoaderOptions { const readPoolResource = async (filePath: string): Promise => JSON.parse(await fs.readFile(filePath, 'utf8')) as unknown; -const normalizePoolRow = (row: unknown, index: number): GeneralPoolSeedEntry => { - if (!Array.isArray(row) || row.length !== EXPECTED_COLUMNS.length) { - throw new Error(`General pool row ${index} does not match the expected ${EXPECTED_COLUMNS.length} columns.`); +const normalizePoolRow = ( + poolName: string, + columns: readonly string[], + row: unknown, + index: number +): GeneralPoolSeedEntry => { + if (!Array.isArray(row) || row.length !== columns.length) { + throw new Error(`General pool row ${index} does not match the expected ${columns.length} columns.`); } - const info = Object.fromEntries(EXPECTED_COLUMNS.map((column, columnIndex) => [column, row[columnIndex]])); - const uniqueName = info.generalName; - if (typeof uniqueName !== 'string' || uniqueName.length === 0) { + const info = Object.fromEntries(columns.map((column, columnIndex) => [column, row[columnIndex]])); + const generalName = info.generalName; + if (typeof generalName !== 'string' || generalName.length === 0) { throw new Error(`General pool row ${index} has no generalName.`); } + const uniqueName = poolName === 'SPoolUnderU100' ? `A100${String(index + 1).padStart(4, '0')}` : generalName; if (uniqueName.length > 20) { throw new Error(`General pool row ${index} has a generalName longer than the select_pool key.`); } + const isCentennial = poolName === 'SPoolUnderU100'; + const specialDomesticIsValid = + (isCentennial && info.specialDomestic === null) || + (typeof info.specialDomestic === 'string' && isEventDomesticTraitKey(info.specialDomestic)); if ( !Number.isInteger(info.leadership) || !Number.isInteger(info.strength) || !Number.isInteger(info.intel) || - typeof info.specialDomestic !== 'string' || - !isEventDomesticTraitKey(info.specialDomestic) || + !specialDomesticIsValid || !Array.isArray(info.dex) || info.dex.length !== 5 || info.dex.some((value) => typeof value !== 'number' || !Number.isInteger(value) || value < 0) || - info.dex.reduce((sum, value) => sum + Number(value), 0) <= 0 || + (!isCentennial && info.dex.reduce((sum, value) => sum + Number(value), 0) <= 0) || (info.imgsvr !== 0 && info.imgsvr !== 1) || typeof info.picture !== 'string' ) { throw new Error(`General pool row ${index} contains invalid candidate data.`); } + if ( + isCentennial && + (!Number.isInteger(info.sourcePhase) || + typeof info.sourceServerId !== 'string' || + !Number.isInteger(info.sourceGeneralNo) || + !Array.isArray(info.selectionReasons) || + info.selectionReasons.some((reason) => typeof reason !== 'string')) + ) { + throw new Error(`General pool row ${index} contains invalid source metadata.`); + } return { uniqueName, info: { ...info, uniqueName, + ...(isCentennial ? { event100Growth: true } : {}), }, }; }; @@ -71,7 +98,7 @@ export const loadGeneralPoolEntries = async ( poolName: string, options?: GeneralPoolLoaderOptions ): Promise => { - if (poolName !== SUPPORTED_POOL) { + if (!SUPPORTED_POOLS.has(poolName)) { throw new Error(`Unsupported general pool: ${poolName}.`); } const root = path.resolve(options?.generalPoolRoot ?? DEFAULT_GENERAL_POOL_ROOT); @@ -79,13 +106,14 @@ export const loadGeneralPoolEntries = async ( if (!isRecord(raw) || !Array.isArray(raw.columns) || !Array.isArray(raw.data)) { throw new Error(`General pool ${poolName} is not a valid resource.`); } + const expectedColumns = poolName === 'SPoolUnderU100' ? CENTENNIAL_COLUMNS : BASE_COLUMNS; if ( - raw.columns.length !== EXPECTED_COLUMNS.length || - raw.columns.some((column, index) => column !== EXPECTED_COLUMNS[index]) + raw.columns.length !== expectedColumns.length || + raw.columns.some((column, index) => column !== expectedColumns[index]) ) { throw new Error(`General pool ${poolName} has an unexpected column contract.`); } - const entries = raw.data.map(normalizePoolRow); + const entries = raw.data.map((row, index) => normalizePoolRow(poolName, expectedColumns, row, index)); if (new Set(entries.map((entry) => entry.uniqueName)).size !== entries.length) { throw new Error(`General pool ${poolName} contains duplicate unique names.`); } diff --git a/app/game-engine/src/turn/ai/generalAi/constraint.ts b/app/game-engine/src/turn/ai/generalAi/constraint.ts index d1899d86..78f8ae6c 100644 --- a/app/game-engine/src/turn/ai/generalAi/constraint.ts +++ b/app/game-engine/src/turn/ai/generalAi/constraint.ts @@ -33,6 +33,7 @@ export const resolveConstraintEnv = ( develCost: env.develCost, openingPartYear: env.openingPartYear, minAvailableRecruitPop: env.minAvailableRecruitPop, + maxTechLevel: env.maxTechLevel, ...(Number.isFinite(killturn) ? { killturn } : {}), }; }; diff --git a/app/game-engine/src/turn/ai/generalAi/core.ts b/app/game-engine/src/turn/ai/generalAi/core.ts index 67182b93..78fb59ed 100644 --- a/app/game-engine/src/turn/ai/generalAi/core.ts +++ b/app/game-engine/src/turn/ai/generalAi/core.ts @@ -115,7 +115,8 @@ export const resolveLegacyAiStatsWithModules = ( modules: TurnCommandEnv['generalActionModules'], worldRef: AiWorldView | null, world: TurnWorldState, - startYear: number + startYear: number, + maxTechLevel = 12 ) => { const maxLevel = Math.max(1, maxStatLevel); const clampStat = (value: number): number => Math.max(0, Math.min(value, maxLevel)); @@ -138,6 +139,7 @@ export const resolveLegacyAiStatsWithModules = ( month: world.currentMonth, startYear, }, + maxTechLevel, }; const rawStat = (statName: 'leadership' | 'strength' | 'intelligence'): number => general.stats[statName]; const calculate = ( @@ -699,7 +701,8 @@ export class GeneralAI { this.commandEnv.generalActionModules, this.worldRef, this.world, - this.startYear + this.startYear, + this.commandEnv.maxTechLevel ); } return resolveLegacyAiStats(general, this.nation, this.commandEnv.maxStatLevel ?? LEGACY_DEFAULT_MAX_LEVEL); @@ -726,6 +729,7 @@ export class GeneralAI { month: this.world.currentMonth, startYear: this.startYear, }, + maxTechLevel: this.commandEnv.maxTechLevel, }, '징집인구', 'score', diff --git a/app/game-engine/src/turn/ai/generalAi/general/economyActions.ts b/app/game-engine/src/turn/ai/generalAi/general/economyActions.ts index 798460ea..ecf328c1 100644 --- a/app/game-engine/src/turn/ai/generalAi/general/economyActions.ts +++ b/app/game-engine/src/turn/ai/generalAi/general/economyActions.ts @@ -70,13 +70,14 @@ export const do금쌀구매 = (ai: GeneralAI) => { } : {}), time: { year: ai.world.currentYear, month: ai.world.currentMonth, startYear: ai.startYear }, + maxTechLevel: ai.commandEnv.maxTechLevel, }; const recruitment = new RecruitmentCommandResolver(ai.commandEnv.generalActionModules ?? [], ai.commandEnv); const goldCost = crewType ? recruitment.getCost(recruitContext, crewType.id, crewAmount, crewType).gold * (ai.generalPolicy.can('모병') ? 2 : 1) : 0; - const riceCost = crewType ? (crewType.rice * getTechCost(tech) * crewAmount) / 100 : 0; + const riceCost = crewType ? (crewType.rice * getTechCost(tech, ai.commandEnv.maxTechLevel) * crewAmount) / 100 : 0; trace('recruit-cost', { crewTypeId: crewType?.id ?? null, crewCost: crewType?.cost ?? null, diff --git a/app/game-engine/src/turn/ai/generalAi/general/recruitActions.ts b/app/game-engine/src/turn/ai/generalAi/general/recruitActions.ts index 084b3468..2dd7a3de 100644 --- a/app/game-engine/src/turn/ai/generalAi/general/recruitActions.ts +++ b/app/game-engine/src/turn/ai/generalAi/general/recruitActions.ts @@ -87,6 +87,7 @@ export const do징병 = (ai: GeneralAI) => { month: ai.world.currentMonth, startYear: ai.startYear, }, + maxTechLevel: ai.commandEnv.maxTechLevel, }; const recruitment = new RecruitmentCommandResolver(ai.commandEnv.generalActionModules ?? [], ai.commandEnv); // The cached AI stat follows the scenario/global classification cap, while @@ -163,11 +164,17 @@ export const do징병 = (ai: GeneralAI) => { return null; } let picked = ai.rng.choiceUsingWeightPair( - candidates.map((crew) => [crew, getCrewTypePickScore(crew, tech, warConfig.armPerPhase)]) + candidates.map((crew) => [ + crew, + getCrewTypePickScore(crew, tech, warConfig.armPerPhase, ai.commandEnv.maxTechLevel), + ]) ); trace('crew-type', { armType, - candidates: candidates.map((crew) => [crew.id, getCrewTypePickScore(crew, tech, warConfig.armPerPhase)]), + candidates: candidates.map((crew) => [ + crew.id, + getCrewTypePickScore(crew, tech, warConfig.armPerPhase, ai.commandEnv.maxTechLevel), + ]), picked: picked.id, }); if (ai.generalPolicy.can('고급병종')) { @@ -203,7 +210,7 @@ export const do징병 = (ai: GeneralAI) => { const killCrew = readMetaNumber(generalMeta, 'rank_killcrew', readMetaNumber(generalMeta, 'killcrew', 0)); const deathCrew = readMetaNumber(generalMeta, 'rank_deathcrew', readMetaNumber(generalMeta, 'deathcrew', 0)); const expectedCrewLoss = Math.floor((crewAmount * killCrew * 1.2) / Math.max(deathCrew, 1)); - let riceCost = (picked.rice * getTechCost(tech) * expectedCrewLoss) / 100; + let riceCost = (picked.rice * getTechCost(tech, ai.commandEnv.maxTechLevel) * expectedCrewLoss) / 100; const remainingGold = ai.general.gold - fullLeadership * 3; const remainingRice = ai.general.rice - fullLeadership * 4; diff --git a/app/game-engine/src/turn/ai/generalAi/nation/rewards.ts b/app/game-engine/src/turn/ai/generalAi/nation/rewards.ts index 908f12a8..3b0462d2 100644 --- a/app/game-engine/src/turn/ai/generalAi/nation/rewards.ts +++ b/app/game-engine/src/turn/ai/generalAi/nation/rewards.ts @@ -56,7 +56,8 @@ const getCrewGoldCost = (ai: GeneralAI, general: TurnGeneral, baseMultiplier: nu // Keeping that operation order is observable at exact resource boundaries // (for example 3036 versus 3036.0000000000005). return ( - (((crewType?.cost ?? 0) * getTechCost(tech) * getFullLeadership(ai, general)) / 100) * + (((crewType?.cost ?? 0) * getTechCost(tech, ai.commandEnv.maxTechLevel) * getFullLeadership(ai, general)) / + 100) * 100 * baseMultiplier * finalMultiplier diff --git a/app/game-engine/src/turn/ai/policies.ts b/app/game-engine/src/turn/ai/policies.ts index 7bcd5858..e205afec 100644 --- a/app/game-engine/src/turn/ai/policies.ts +++ b/app/game-engine/src/turn/ai/policies.ts @@ -77,10 +77,7 @@ const USER_RULER_ACTION_FEATURE: Readonly { +export const canUseRulerAutomation = (general: TurnGeneral, feature: UserRulerAutomationFeature): boolean => { if (general.npcState >= 2) { return true; } @@ -316,8 +313,8 @@ export class AutorunNationPolicy { const stat = scenarioConfig.stat; if (this.reqNpcWarGold === 0 || this.reqNpcWarRice === 0) { const crewType = findCrewTypeById(unitSet, env.defaultCrewTypeId); - const baseGold = crewType ? crewType.cost * getTechCost(tech) * stat.npcMax : 0; - const baseRice = crewType ? crewType.rice * getTechCost(tech) * stat.npcMax : 0; + const baseGold = crewType ? crewType.cost * getTechCost(tech, env.maxTechLevel) * stat.npcMax : 0; + const baseRice = crewType ? crewType.rice * getTechCost(tech, env.maxTechLevel) * stat.npcMax : 0; if (this.reqNpcWarGold === 0) { this.reqNpcWarGold = roundTo(baseGold * 4, -2); } @@ -328,8 +325,8 @@ export class AutorunNationPolicy { if (this.reqHumanWarUrgentGold === 0 || this.reqHumanWarUrgentRice === 0) { const crewType = findCrewTypeById(unitSet, env.defaultCrewTypeId); - const baseGold = crewType ? crewType.cost * getTechCost(tech) * stat.max : 0; - const baseRice = crewType ? crewType.rice * getTechCost(tech) * stat.max : 0; + const baseGold = crewType ? crewType.cost * getTechCost(tech, env.maxTechLevel) * stat.max : 0; + const baseRice = crewType ? crewType.rice * getTechCost(tech, env.maxTechLevel) * stat.max : 0; if (this.reqHumanWarUrgentGold === 0) { this.reqHumanWarUrgentGold = roundTo(baseGold * 6, -2); } diff --git a/app/game-engine/src/turn/commandRegistry.ts b/app/game-engine/src/turn/commandRegistry.ts index cd6bb585..ba5bf014 100644 --- a/app/game-engine/src/turn/commandRegistry.ts +++ b/app/game-engine/src/turn/commandRegistry.ts @@ -23,6 +23,7 @@ const parseWith = (schema: z.ZodType, value: unknown): T | null => { }; const zFiniteNumber = z.number().finite(); +const zSafeInteger = zFiniteNumber.int().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER); const zRecord = z.record(z.string(), z.unknown()); const zRunReason = z.enum(['schedule', 'manual', 'poke']); @@ -35,6 +36,8 @@ const zTurnRunBudget = z.object({ const zAuctionFinalize = z.object({ type: z.literal('auctionFinalize'), auctionId: zFiniteNumber, + expectedCloseAt: z.string().refine(isCanonicalIsoTimestamp).optional(), + expectedCloseTick: zSafeInteger.optional(), }); const zAuctionOpen = z.object({ @@ -53,6 +56,7 @@ const zAuctionBid = z.object({ auctionId: zFiniteNumber, generalId: zFiniteNumber, amount: zFiniteNumber, + acceptedGameTick: zSafeInteger.optional(), tryExtendCloseDate: z.boolean().optional(), }); @@ -176,6 +180,7 @@ const zTournamentRefund = z.object({ const zTournamentBettingPayout = z.object({ type: z.literal('tournamentBettingPayout'), bettingId: zFiniteNumber.optional(), + tournamentType: zFiniteNumber.optional(), reason: z.string().optional(), payouts: z.array(z.object({ generalId: zFiniteNumber, amount: zFiniteNumber })).min(1), }); @@ -194,13 +199,8 @@ const zVoteReward = z.object({ type: z.literal('voteReward'), voteId: zFiniteNumber, generalId: zFiniteNumber, - goldReward: zFiniteNumber, - unique: z - .object({ - expected: z.boolean(), - itemKey: z.string().nullable().optional(), - }) - .optional(), + selection: z.array(zFiniteNumber.int()).min(1), + acceptedGameTick: zSafeInteger.optional(), }); const zSetNationMeta = z.object({ @@ -329,6 +329,19 @@ const zSelectPoolCreate = z ownerPicture: z.string().optional(), ownerImageServer: z.number().int().nonnegative().optional(), ownerIconRevision: z.string().refine(isCanonicalIsoTimestamp).optional(), + acceptedGameAt: z.string().refine(isCanonicalIsoTimestamp).optional(), + acceptedGameTick: zFiniteNumber.int().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER).optional(), + }) + .strict(); + +const zSelectPoolReserve = z + .object({ + type: z.literal('selectPoolReserve'), + requestId: z.string().optional(), + userId: z.string().min(1), + seedOwnerIdentity: z.union([z.string().min(1), zFiniteNumber]), + acceptedGameAt: z.string().refine(isCanonicalIsoTimestamp), + acceptedGameTick: zFiniteNumber.int().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER).optional(), }) .strict(); @@ -339,6 +352,8 @@ const zSelectPoolReselect = z userId: z.string().min(1), ownerDisplayName: z.string().min(1), uniqueName: z.string().min(1).max(20), + acceptedGameAt: z.string().refine(isCanonicalIsoTimestamp).optional(), + acceptedGameTick: zFiniteNumber.int().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER).optional(), }) .strict(); @@ -660,6 +675,14 @@ const normalizeSelectPoolCreate: CommandNormalizer<'selectPoolCreate'> = (envelo return { ...command, requestId: envelope.requestId }; }; +const normalizeSelectPoolReserve: CommandNormalizer<'selectPoolReserve'> = (envelope) => { + const command = parseWith(zSelectPoolReserve, envelope.command); + if (!command) { + return null; + } + return { ...command, requestId: envelope.requestId }; +}; + const normalizeSelectPoolReselect: CommandNormalizer<'selectPoolReselect'> = (envelope) => { const command = parseWith(zSelectPoolReselect, envelope.command); if (!command) { @@ -744,6 +767,7 @@ const normalizers: CommandNormalizerMap = { adjustGeneralIcon: normalizeAdjustGeneralIcon, joinCreateGeneral: normalizeJoinCreateGeneral, npcPossessGeneral: normalizeNpcPossessGeneral, + selectPoolReserve: normalizeSelectPoolReserve, selectPoolCreate: normalizeSelectPoolCreate, selectPoolReselect: normalizeSelectPoolReselect, getStatus: normalizeGetStatus, diff --git a/app/game-engine/src/turn/databaseHooks.ts b/app/game-engine/src/turn/databaseHooks.ts index 22d492ce..31c656c3 100644 --- a/app/game-engine/src/turn/databaseHooks.ts +++ b/app/game-engine/src/turn/databaseHooks.ts @@ -24,6 +24,7 @@ import { LogFormat, LogScope, sendMessage, + readScenarioGeneralPoolClaim, type City, type LogEntryDraft, type MessageRecordDraft, @@ -1192,6 +1193,21 @@ export const createDatabaseTurnHooks = async ( WHERE status = 'OPEN' ` ); + await prisma.$executeRaw( + GamePrisma.sql` + UPDATE select_pool + SET reserved_until_tick = CASE + WHEN reserved_until_tick IS NULL THEN NULL + ELSE reserved_until_tick + ${deltaTicks} + END, + reserved_until = CASE + WHEN reserved_until IS NULL THEN NULL + ELSE reserved_until + (${deltaSeconds} * INTERVAL '1 second') + END + WHERE general_id IS NULL + AND (reserved_until_tick IS NOT NULL OR reserved_until IS NOT NULL) + ` + ); } if ( @@ -1360,6 +1376,66 @@ export const createDatabaseTurnHooks = async ( createdDiplomacy.map((entry) => `${entry.fromNationId}:${entry.toNationId}`) ); + // Ref first claims a select_pool row and then finalizes it with the + // newly inserted general ID. Core computes the turn in memory, so + // perform the equivalent CAS in the same fenced flush transaction. + // Releasing deaths first also preserves same-batch pool reuse. + if (deletedGenerals.length > 0) { + await prisma.selectPoolEntry.updateMany({ + where: { generalId: { in: deletedGenerals } }, + data: { + generalId: null, + ownerUserId: null, + reservedUntil: null, + reservedUntilTick: null, + }, + }); + } + const createdGeneralPoolClaims = createdGenerals.flatMap((general) => { + const claim = readScenarioGeneralPoolClaim(general.meta); + return claim ? [{ general, claim }] : []; + }); + const claimedPoolIds = new Set(); + for (const { general, claim } of createdGeneralPoolClaims) { + if (claimedPoolIds.has(claim.poolEntryId)) { + throw new Error(`한 flush에서 select_pool 후보 ${claim.poolEntryId}를 중복 점유할 수 없습니다.`); + } + claimedPoolIds.add(claim.poolEntryId); + const claimedAt = new Date(claim.claimedAt); + const claimedAtTick = world.dateToGameTick(claimedAt); + if (!Number.isSafeInteger(claimedAtTick)) { + throw new Error( + `select_pool 후보 점유 tick이 안전한 정수 범위를 벗어났습니다: ${claim.uniqueName}` + ); + } + const occupied = await prisma.selectPoolEntry.updateMany({ + where: { + id: claim.poolEntryId, + uniqueName: claim.uniqueName, + OR: [ + { generalId: general.id }, + { + generalId: null, + OR: [ + { ownerUserId: null, reservedUntil: null, reservedUntilTick: null }, + { reservedUntilTick: { lt: BigInt(claimedAtTick) } }, + { reservedUntilTick: null, reservedUntil: { lt: claimedAt } }, + ], + }, + ], + }, + data: { + generalId: general.id, + ownerUserId: null, + reservedUntil: null, + reservedUntilTick: null, + }, + }); + if (occupied.count !== 1) { + throw new Error(`select_pool 후보를 점유하지 못했습니다: ${claim.uniqueName}`); + } + } + if (createdGenerals.length > 0) { await prisma.general.createMany({ data: createdGenerals.map(buildGeneralCreate), @@ -1426,6 +1502,7 @@ export const createDatabaseTurnHooks = async ( generalId: null, ownerUserId: null, reservedUntil: null, + reservedUntilTick: null, }, }); if (prisma.generalTurnRevision) { diff --git a/app/game-engine/src/turn/inMemoryWorld.ts b/app/game-engine/src/turn/inMemoryWorld.ts index d2a81299..be1ba617 100644 --- a/app/game-engine/src/turn/inMemoryWorld.ts +++ b/app/game-engine/src/turn/inMemoryWorld.ts @@ -4,11 +4,12 @@ import type { MessageDraft, Nation, ScenarioConfig, + ScenarioGeneralPoolCandidate, Troop, TurnSchedule, UnitSetDefinition, } from '@sammo-ts/logic'; -import { getNextTurnAt } from '@sammo-ts/logic'; +import { getNextTurnAt, readScenarioGeneralPoolClaim } from '@sammo-ts/logic'; import { GAME_TICKS_PER_TURN, GameClock, type GameClockMode } from '@sammo-ts/common'; import type { TurnCheckpoint } from '../lifecycle/types.js'; @@ -21,6 +22,7 @@ import type { TurnDiplomacy, TurnEvent, TurnGeneral, + TurnGeneralPoolEntry, TurnWorldSnapshot, TurnWorldState, } from './types.js'; @@ -154,6 +156,7 @@ export interface InMemoryTurnWorldStateSnapshot { schedule: TurnSchedule; state: TurnWorldState; worldConfig: Record; + generalPoolEntries: TurnWorldSnapshot['generalPoolEntries']; checkpoint?: TurnCheckpoint; generals: Array<[number, TurnGeneral]>; cities: Array<[number, City]>; @@ -491,6 +494,7 @@ export class InMemoryTurnWorld { private readonly pendingUnificationFinalizations: PendingUnificationFinalization[] = []; private pendingRealtimeBacklogShiftTicks = 0; private readonly scenarioConfig: ScenarioConfig; + private generalPoolEntries: TurnWorldSnapshot['generalPoolEntries']; private readonly worldConfig: Record; private readonly unitSet?: UnitSetDefinition; private checkpoint?: TurnCheckpoint; @@ -528,6 +532,13 @@ export class InMemoryTurnWorld { meta: { ...state.meta, lastTurnTime: lastTurnTime.toISOString() }, }; this.scenarioConfig = snapshot.scenarioConfig; + this.generalPoolEntries = snapshot.generalPoolEntries + ? snapshot.generalPoolEntries.map((entry) => ({ + ...entry, + reservedUntil: entry.reservedUntil ? new Date(entry.reservedUntil.getTime()) : null, + candidate: structuredClone(entry.candidate), + })) + : undefined; // Runtime callbacks created before the world keep the original object // reference. Mutate this object in place so a live settings action is // observed by monthly handlers without restarting the daemon. @@ -712,6 +723,14 @@ export class InMemoryTurnWorld { turnTime: clock.tickToDate(turnTick), }); } + for (const entry of this.generalPoolEntries ?? []) { + if (entry.reservedUntilTick !== null) { + entry.reservedUntilTick = clock.addTicks(entry.reservedUntilTick, shiftedTicks); + entry.reservedUntil = clock.tickToDate(entry.reservedUntilTick); + } else if (entry.reservedUntil) { + entry.reservedUntil = new Date(entry.reservedUntil.getTime() + shiftedMilliseconds); + } + } if (this.checkpoint) { const checkpointTick = clock.addTicks( this.checkpoint.turnTick ?? clock.dateToTick(new Date(this.checkpoint.turnTime)), @@ -738,6 +757,7 @@ export class InMemoryTurnWorld { schedule: this.schedule, state: this.state, worldConfig: this.worldConfig, + generalPoolEntries: this.generalPoolEntries, checkpoint: this.checkpoint, generals: Array.from(this.generals.entries()), cities: Array.from(this.cities.entries()), @@ -782,6 +802,7 @@ export class InMemoryTurnWorld { delete this.worldConfig[key]; } Object.assign(this.worldConfig, restored.worldConfig); + this.generalPoolEntries = restored.generalPoolEntries; this.checkpoint = restored.checkpoint; this.replaceMap(this.generals, restored.generals); this.replaceMap(this.cities, restored.cities); @@ -1036,6 +1057,80 @@ export class InMemoryTurnWorld { })); } + listGeneralPoolEntries(): TurnGeneralPoolEntry[] | undefined { + return this.generalPoolEntries?.map((entry) => ({ + ...entry, + reservedUntil: entry.reservedUntil ? new Date(entry.reservedUntil.getTime()) : null, + candidate: structuredClone(entry.candidate), + })); + } + + replaceGeneralPoolEntries(entries: readonly TurnGeneralPoolEntry[]): void { + this.generalPoolEntries = entries.map((entry) => ({ + ...entry, + reservedUntil: entry.reservedUntil ? new Date(entry.reservedUntil.getTime()) : null, + candidate: structuredClone(entry.candidate), + })); + } + + listGeneralPoolCandidates( + claimedAt: Date, + claimedAtTick = this.dateToGameTick(claimedAt) + ): ScenarioGeneralPoolCandidate[] | undefined { + if (!this.generalPoolEntries) { + return undefined; + } + if (!Number.isSafeInteger(claimedAtTick)) { + throw new Error(`General-pool claim tick must be a safe integer: ${claimedAtTick}`); + } + const claimsByEntryId = new Map(); + const currentNames = new Set(); + const prefixes: Partial> = { + 1: 'ⓝ', + 2: 'ⓝ', + 3: 'ⓜ', + 4: 'ⓖ', + 5: '㉥', + 6: 'ⓤ', + 9: 'ⓞ', + }; + for (const general of this.generals.values()) { + const claim = readScenarioGeneralPoolClaim(general.meta); + if (claim) { + claimsByEntryId.set(claim.poolEntryId, general.id); + } + const prefix = prefixes[general.npcState]; + currentNames.add( + prefix && general.name.startsWith(prefix) ? general.name.slice(prefix.length) : general.name + ); + } + + return this.generalPoolEntries + .filter((entry) => { + const linkedGeneralCanBeReused = + entry.generalId === null || this.deletedGeneralIds.has(entry.generalId); + if ( + !linkedGeneralCanBeReused || + claimsByEntryId.has(entry.id) || + currentNames.has(entry.uniqueName) || + currentNames.has(entry.candidate.name) + ) { + return false; + } + const isUnreserved = + entry.ownerUserId === null && entry.reservedUntil === null && entry.reservedUntilTick === null; + // Ref compares integer GameClock ticks and keeps a reservation + // valid at exact equality. Legacy rows without a tick fall + // back to the projected Date column. + const isExpired = + entry.reservedUntilTick !== null + ? entry.reservedUntilTick < claimedAtTick + : entry.reservedUntil !== null && entry.reservedUntil.getTime() < claimedAt.getTime(); + return isUnreserved || isExpired; + }) + .map((entry) => structuredClone(entry.candidate)); + } + listCities(): City[] { return Array.from(this.cities.values()).map((city) => ({ ...city })); } @@ -1346,6 +1441,11 @@ export class InMemoryTurnWorld { for (const auction of this.pendingNeutralAuctions) { auction.closeAt = shiftDate(auction.closeAt); } + for (const entry of this.generalPoolEntries ?? []) { + if (entry.reservedUntil) { + entry.reservedUntil = shiftDate(entry.reservedUntil); + } + } if (this.checkpoint) { const checkpointTime = shiftDate(new Date(this.checkpoint.turnTime)); this.checkpoint = { @@ -1441,6 +1541,8 @@ export class InMemoryTurnWorld { executeGeneralTurn(general: TurnGeneral): GeneralTurnExecution { const currentGeneral = this.generals.get(general.id) ?? general; + const executionYear = this.state.currentYear; + const executionMonth = this.state.currentMonth; const city = this.cities.get(currentGeneral.cityId); const nation = currentGeneral.nationId > 0 ? (this.nations.get(currentGeneral.nationId) ?? null) : null; @@ -1490,10 +1592,17 @@ export class InMemoryTurnWorld { } if (result.logs && result.logs.length > 0) { // Ref command logs use the executing general's pre-advance turntime. - // Preserve that per-entry occurrence time instead of replacing every - // log in the transaction with the shared completion cursor at flush. + // Preserve that per-entry occurrence time and calendar date instead + // of replacing them with the shared post-boundary flush context. for (const log of result.logs) { - this.pushLog(log, currentGeneral.turnTime); + this.pushLog( + { + ...log, + year: log.year ?? executionYear, + month: log.month ?? executionMonth, + }, + currentGeneral.turnTime + ); } } if (result.messages && result.messages.length > 0) { diff --git a/app/game-engine/src/turn/joinCreateGeneralService.ts b/app/game-engine/src/turn/joinCreateGeneralService.ts index 3936cd2d..f3898a9f 100644 --- a/app/game-engine/src/turn/joinCreateGeneralService.ts +++ b/app/game-engine/src/turn/joinCreateGeneralService.ts @@ -135,7 +135,10 @@ const resolveInheritConstants = (worldState: WorldStateRow): InheritConstants => const isSelectionPoolWorld = (worldState: WorldStateRow): boolean => { const config = asRecord(worldState.config); const map = asRecord(config.map); - return asNumber(config.npcMode, 0) === 2 && map.targetGeneralPool === 'SPoolUnderU30'; + return ( + asNumber(config.npcMode, 0) === 2 && + (map.targetGeneralPool === 'SPoolUnderU30' || map.targetGeneralPool === 'SPoolUnderU100') + ); }; const resolveMaxGeneral = (worldState: WorldStateRow): number => { diff --git a/app/game-engine/src/turn/monthlyCentennialAllStarAction.ts b/app/game-engine/src/turn/monthlyCentennialAllStarAction.ts new file mode 100644 index 00000000..1008e58a --- /dev/null +++ b/app/game-engine/src/turn/monthlyCentennialAllStarAction.ts @@ -0,0 +1,98 @@ +import { asNumber, asRecord } from '@sammo-ts/common'; +import { + CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT, + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + CENTENNIAL_ALL_STAR_POOL, + LogCategory, + LogFormat, + LogScope, + applyCentennialAllStarTarget, + readCentennialAllStarAux, + type CentennialAllStarRules, +} from '@sammo-ts/logic'; + +import type { InMemoryTurnWorld } from './inMemoryWorld.js'; +import type { MonthlyEventActionHandler } from './monthlyEventHandler.js'; + +const resolveRules = (world: InMemoryTurnWorld): CentennialAllStarRules => { + const scenario = world.getScenarioConfig(); + const configConst = asRecord(scenario.const); + return { + defaultStatMin: scenario.stat.min, + defaultStatMax: scenario.stat.max, + defaultStatTotal: scenario.stat.total, + maxStatLevel: asNumber(configConst.maxLevel, 255), + defaultSpecialDomestic: + typeof configConst.defaultSpecialDomestic === 'string' ? configConst.defaultSpecialDomestic : 'None', + dexLimit: asNumber(configConst.dexLimit, CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT), + }; +}; + +const resolveNpcDexTargetRatio = (world: InMemoryTurnWorld): number => { + const value = asNumber(asRecord(world.getScenarioConfig().map).centennialNpcDexTargetRatio, 0.4); + if (value < 0 || value > 1) { + throw new Error('centennialNpcDexTargetRatio must be between 0 and 1'); + } + return value; +}; + +export const createAdvanceCentennialAllStarHandler = (options: { + getWorld: () => InMemoryTurnWorld | null; +}): MonthlyEventActionHandler => { + return (_args, environment) => { + const world = options.getWorld(); + if (!world || asRecord(world.getScenarioConfig().map).targetGeneralPool !== CENTENNIAL_ALL_STAR_POOL) { + return; + } + const rules = resolveRules(world); + const npcDexTargetRatio = resolveNpcDexTargetRatio(world); + for (const general of world.listGenerals()) { + const aux = readCentennialAllStarAux(general.meta as Record); + if (!aux) { + continue; + } + const isGeneratedNpc = general.npcState === 3 || general.npcState === 4; + const result = applyCentennialAllStarTarget( + general, + aux.target, + { + startYear: environment.startyear, + year: environment.year, + month: environment.month, + }, + rules, + isGeneratedNpc ? CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER : 1, + isGeneratedNpc ? npcDexTargetRatio : 1 + ); + // progressMonth 같은 aux 필드도 월마다 영속화해야 하므로 실제 수치 + // 변화가 없는 경우에도 Ref General::applyDB()와 같이 dirty 처리한다. + world.updateGeneral(general.id, { + stats: result.stats, + role: result.role, + meta: result.meta, + }); + if (result.milestone <= result.previousMilestone) { + continue; + } + const percent = result.milestone * 20; + world.pushLog({ + scope: LogScope.GENERAL, + category: LogCategory.ACTION, + generalId: general.id, + text: `올스타 동조율이 ${percent}%에 도달했습니다!`, + format: LogFormat.PLAIN, + year: environment.year, + month: environment.month, + }); + world.pushLog({ + scope: LogScope.GENERAL, + category: LogCategory.HISTORY, + generalId: general.id, + text: `올스타 동조율 ${percent}% 달성`, + format: LogFormat.YEAR_MONTH, + year: environment.year, + month: environment.month, + }); + } + }; +}; diff --git a/app/game-engine/src/turn/monthlyCreateManyNpcAction.ts b/app/game-engine/src/turn/monthlyCreateManyNpcAction.ts index c538e16c..4d6d748b 100644 --- a/app/game-engine/src/turn/monthlyCreateManyNpcAction.ts +++ b/app/game-engine/src/turn/monthlyCreateManyNpcAction.ts @@ -1,5 +1,19 @@ import { GAME_TICKS_PER_TURN, JosaUtil, LiteHashDRBG, RandUtil, asRecord } from '@sammo-ts/common'; -import { LogCategory, LogFormat, LogScope, type TurnCommandEnv } from '@sammo-ts/logic'; +import { + buildScenarioGeneralPoolClaimMeta, + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + LogCategory, + LogFormat, + LogScope, + applyCentennialAllStarTarget, + initializeCentennialGeneratedNpc, + pickUniqueScenarioGeneralPoolCandidates, + readCentennialAllStarPoolTarget, + resolveCentennialAllStarRules, + resolveCentennialNpcDexTargetRatio, + type ScenarioGeneralPoolCandidate, + type TurnCommandEnv, +} from '@sammo-ts/logic'; import { simpleSerialize } from '@sammo-ts/logic/war/utils.js'; import type { InMemoryTurnWorld } from './inMemoryWorld.js'; @@ -113,19 +127,21 @@ const buildNpc = (options: { environment: MonthlyEventEnvironment; env: TurnCommandEnv; baseName: string; + candidate?: ScenarioGeneralPoolCandidate; }): TurnGeneral => { const { world, reservedTurns, rng, environment, env } = options; + const centennialTarget = readCentennialAllStarPoolTarget(options.candidate); const age = rng.nextRangeInt(20, 25); const bornYear = environment.year - age; const deadYear = environment.year + rng.nextRangeInt(10, 50); - const stats = buildNpcStats(rng, env); - const affinity = rng.nextRangeInt(1, 150); + const stats = centennialTarget ? buildNpcStats(rng, env) : (options.candidate?.stats ?? buildNpcStats(rng, env)); + const affinity = options.candidate?.affinity ?? rng.nextRangeInt(1, 150); const relativeYear = Math.max(environment.year - environment.startyear, 0); const configValues = asRecord(world.getScenarioConfig().const); const retirementYear = readLegacyNumber(configValues.retirementYear, 80); const specAge = buildSpecialityAge(retirementYear, age, relativeYear, 12); const specAge2 = buildSpecialityAge(retirementYear, age, relativeYear, 6); - const personality = rng.choice(env.availablePersonalities ?? ['che_안전']); + const personality = options.candidate?.personality ?? rng.choice(env.availablePersonalities ?? ['che_안전']); const cities = world.listCities(); if (cities.length === 0) { throw new Error('CreateManyNPC requires at least one city.'); @@ -145,7 +161,7 @@ const buildNpc = (options: { const turnTime = world.gameTickToDate(turnTick); const killturn = (deadYear - environment.year) * 12 + rng.nextRangeInt(0, 11) + environment.month - 1; const id = world.getNextGeneralId(); - const general: TurnGeneral = { + let general: TurnGeneral = { id, userId: null, name: `${NPC_NAME_PREFIX}${options.baseName}`, @@ -158,8 +174,12 @@ const buildNpc = (options: { officerLevel: 0, role: { personality, - specialDomestic: env.defaultSpecialDomestic, - specialWar: env.defaultSpecialWar, + specialDomestic: centennialTarget + ? env.defaultSpecialDomestic + : (options.candidate?.specialDomestic ?? env.defaultSpecialDomestic), + specialWar: centennialTarget + ? env.defaultSpecialWar + : (options.candidate?.specialWar ?? env.defaultSpecialWar), items: { horse: null, weapon: null, book: null, item: null }, }, injury: 0, @@ -174,7 +194,8 @@ const buildNpc = (options: { bornYear, deadYear, affinity, - picture: 'default.jpg', + picture: typeof options.candidate?.picture === 'string' ? options.candidate.picture : 'default.jpg', + imageServer: options.candidate?.imageServer ?? 0, triggerState: { flags: {}, counters: {}, @@ -193,13 +214,32 @@ const buildNpc = (options: { dedlevel: 1, specage: specAge, specage2: specAge2, - dex1: 0, - dex2: 0, - dex3: 0, - dex4: 0, - dex5: 0, + dex1: centennialTarget ? 0 : (options.candidate?.dex?.[0] ?? 0), + dex2: centennialTarget ? 0 : (options.candidate?.dex?.[1] ?? 0), + dex3: centennialTarget ? 0 : (options.candidate?.dex?.[2] ?? 0), + dex4: centennialTarget ? 0 : (options.candidate?.dex?.[3] ?? 0), + dex5: centennialTarget ? 0 : (options.candidate?.dex?.[4] ?? 0), + ...(options.candidate ? buildScenarioGeneralPoolClaimMeta(options.candidate, environment.turnTime) : {}), }, }; + if (centennialTarget) { + const scenario = world.getScenarioConfig(); + const rules = resolveCentennialAllStarRules(scenario, env.defaultSpecialDomestic); + const initialized = initializeCentennialGeneratedNpc(general, centennialTarget, rules); + const growth = applyCentennialAllStarTarget( + { ...general, ...initialized }, + centennialTarget, + { + startYear: environment.startyear, + year: environment.year, + month: environment.month, + }, + rules, + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + resolveCentennialNpcDexTargetRatio(scenario) + ); + general = { ...general, stats: growth.stats, role: growth.role, meta: growth.meta }; + } if (!world.addGeneral(general)) { throw new Error(`CreateManyNPC generated a duplicate general id: ${id}`); } @@ -241,8 +281,15 @@ export const createCreateManyNpcHandler = (options: { simpleSerialize(resolveHiddenSeed(world), 'CreateManyNPC', environment.year, environment.month) ) ); - const baseNames = pickNpcNames(rng, requestedCount, world.listGenerals(), options.env); - const created = baseNames.map((baseName) => + const generalPool = world.listGeneralPoolCandidates(environment.turnTime); + const candidates: Array<{ baseName: string; candidate?: ScenarioGeneralPoolCandidate }> = + generalPool === undefined + ? pickNpcNames(rng, requestedCount, world.listGenerals(), options.env).map((baseName) => ({ baseName })) + : pickUniqueScenarioGeneralPoolCandidates(rng, generalPool, requestedCount).map((candidate) => ({ + baseName: candidate.name, + candidate, + })); + const created = candidates.map(({ baseName, candidate }) => buildNpc({ world, reservedTurns: options.reservedTurns, @@ -250,6 +297,7 @@ export const createCreateManyNpcHandler = (options: { environment, env: options.env, baseName, + ...(candidate ? { candidate } : {}), }) ); diff --git a/app/game-engine/src/turn/monthlyEventHandler.ts b/app/game-engine/src/turn/monthlyEventHandler.ts index 5cc10654..6bd938fb 100644 --- a/app/game-engine/src/turn/monthlyEventHandler.ts +++ b/app/game-engine/src/turn/monthlyEventHandler.ts @@ -32,6 +32,7 @@ export const MONTHLY_EVENT_ACTION_CATALOG = [ 'ProcessSemiAnnual', 'ProcessWarIncome', 'CreateAdminNPC', + 'AdvanceCentennialAllStar', 'CreateManyNPC', 'RegNPC', 'RegNeutralNPC', @@ -233,8 +234,7 @@ export const createMonthlyEventHandler = (options: { // the previous monthly boundary even after turnDate() has advanced // year/month. Generated general turn times depend on this distinction. const legacyTurnTime = - context.legacyTurnTime ?? - new Date(context.turnTime.getTime() - world.getState().tickSeconds * 1_000); + context.legacyTurnTime ?? new Date(context.turnTime.getTime() - world.getState().tickSeconds * 1_000); for (const event of world.listEvents(targetCode)) { const environment: MonthlyEventEnvironment = { diff --git a/app/game-engine/src/turn/monthlyNationBettingAction.ts b/app/game-engine/src/turn/monthlyNationBettingAction.ts index 4707f454..d769b4bf 100644 --- a/app/game-engine/src/turn/monthlyNationBettingAction.ts +++ b/app/game-engine/src/turn/monthlyNationBettingAction.ts @@ -40,7 +40,11 @@ export const createOpenNationBettingHandler = (options: { .filter((nation) => nation.id > 0) .sort((left, right) => right.power - left.power) .map((nation) => { - const generalCount = generals.filter((general) => general.nationId === nation.id).length; + const storedGeneralCount = nation.meta.gennum; + const generalCount = + typeof storedGeneralCount === 'number' && Number.isFinite(storedGeneralCount) + ? storedGeneralCount + : generals.filter((general) => general.nationId === nation.id && general.npcState !== 5).length; const cityCount = cities.filter((city) => city.nationId === nation.id).length; return { title: nation.name, @@ -150,7 +154,7 @@ export const createFinishNationBettingHandler = (options: { id: bettingId, winnerNationIds: world .listNations() - .filter((nation) => nation.level > 0) + .filter((nation) => nation.id > 0 && nation.level > 0) .map((nation) => nation.id), year: environment.year, month: environment.month, diff --git a/app/game-engine/src/turn/monthlyRaiseNpcNationAction.ts b/app/game-engine/src/turn/monthlyRaiseNpcNationAction.ts index 2f5beb1e..c706a2c1 100644 --- a/app/game-engine/src/turn/monthlyRaiseNpcNationAction.ts +++ b/app/game-engine/src/turn/monthlyRaiseNpcNationAction.ts @@ -4,10 +4,17 @@ import { LogFormat, LogScope, AVAILABLE_NATION_TRAIT_KEYS, + CENTENNIAL_ALL_STAR_AUX_KEY, getCityDistance, + buildScenarioGeneralPoolClaimMeta, + initialCentennialAllStarAux, + pickUniqueScenarioGeneralPoolCandidates, + readCentennialAllStarPoolTarget, + resolveCentennialAllStarRules, type City, type MapDefinition, type Nation, + type ScenarioGeneralPoolCandidate, type TurnCommandEnv, } from '@sammo-ts/logic'; import { simpleSerialize } from '@sammo-ts/logic/war/utils.js'; @@ -126,8 +133,10 @@ const createNpcGeneral = (options: { bornYear: number; deadYear: number; killturn?: number; + candidate?: ScenarioGeneralPoolCandidate; }): TurnGeneral => { const { world, reservedTurns, rng, env, environment } = options; + const centennialTarget = readCentennialAllStarPoolTarget(options.candidate); const stats = buildNpcStats(rng, env, STAT_TYPE_WEIGHTS); const affinity = rng.nextRangeInt(1, 150); const personality = rng.choice(env.availablePersonalities ?? ['che_안전']); @@ -152,12 +161,9 @@ const createNpcGeneral = (options: { const turnTime = world.gameTickToDate(turnTick); const killturn = options.killturn ?? - (options.deadYear - environment.year) * 12 + - rng.nextRangeInt(0, 11) + - environment.month - - 1; + (options.deadYear - environment.year) * 12 + rng.nextRangeInt(0, 11) + environment.month - 1; const id = world.getNextGeneralId(); - const general: TurnGeneral = { + let general: TurnGeneral = { id, userId: null, name: `${NPC_PREFIX}${options.baseName}`, @@ -170,8 +176,12 @@ const createNpcGeneral = (options: { officerLevel: options.officerLevel, role: { personality, - specialDomestic: env.defaultSpecialDomestic, - specialWar: env.defaultSpecialWar, + specialDomestic: centennialTarget + ? env.defaultSpecialDomestic + : (options.candidate?.specialDomestic ?? env.defaultSpecialDomestic), + specialWar: centennialTarget + ? env.defaultSpecialWar + : (options.candidate?.specialWar ?? env.defaultSpecialWar), items: { horse: null, weapon: null, book: null, item: null }, }, injury: 0, @@ -186,7 +196,8 @@ const createNpcGeneral = (options: { bornYear: options.bornYear, deadYear: options.deadYear, affinity, - picture: 'default.jpg', + picture: typeof options.candidate?.picture === 'string' ? options.candidate.picture : 'default.jpg', + imageServer: options.candidate?.imageServer ?? 0, triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, lastTurn: { command: '휴식' }, turnTime, @@ -200,13 +211,23 @@ const createNpcGeneral = (options: { dedlevel: 1, specage: buildSpecialityAge(retirementYear, age, relativeYear, 12), specage2: buildSpecialityAge(retirementYear, age, relativeYear, 6), - dex1: 0, - dex2: 0, - dex3: 0, - dex4: 0, - dex5: 0, + dex1: centennialTarget ? 0 : (options.candidate?.dex?.[0] ?? 0), + dex2: centennialTarget ? 0 : (options.candidate?.dex?.[1] ?? 0), + dex3: centennialTarget ? 0 : (options.candidate?.dex?.[2] ?? 0), + dex4: centennialTarget ? 0 : (options.candidate?.dex?.[3] ?? 0), + dex5: centennialTarget ? 0 : (options.candidate?.dex?.[4] ?? 0), + ...(options.candidate ? buildScenarioGeneralPoolClaimMeta(options.candidate, environment.turnTime) : {}), }, }; + if (centennialTarget) { + const meta: TurnGeneral['meta'] = { ...general.meta }; + const mutableMeta: Record = meta; + mutableMeta[CENTENNIAL_ALL_STAR_AUX_KEY] = initialCentennialAllStarAux( + centennialTarget, + resolveCentennialAllStarRules(world.getScenarioConfig(), env.defaultSpecialDomestic) + ); + general = { ...general, meta }; + } if (!world.addGeneral(general)) { throw new Error(`RaiseNPCNation generated duplicate general id ${id}.`); } @@ -268,8 +289,7 @@ export const createRaiseNpcNationHandler = (options: { ); const currentLast = world.getState().meta.lastNationId; - const currentLastNumber = - typeof currentLast === 'number' && Number.isFinite(currentLast) ? currentLast : 0; + const currentLastNumber = typeof currentLast === 'number' && Number.isFinite(currentLast) ? currentLast : 0; const liveNationMax = world.listNations().reduce((maxId, nation) => Math.max(maxId, nation.id), 0); let resolvedLastNationId = Math.max(currentLastNumber, liveNationMax); const serverId = resolveServerId(world); @@ -342,17 +362,22 @@ export const createRaiseNpcNationHandler = (options: { deadYear: environment.year + 60, killturn: 240, }); - const subordinateNames = pickNpcNames( - rng, - Math.max(averageGeneralCount - 1, 0), - world.listGenerals(), - options.env - ); - for (const baseName of subordinateNames) { - const deadYear = - environment.year + - 10 + - Math.trunc(60 * (1 - Math.log2(rng.nextRange(1, 1024)) / 10)); + const subordinateCount = Math.max(averageGeneralCount - 1, 0); + const generalPool = world.listGeneralPoolCandidates(environment.turnTime); + const subordinateCandidates: Array<{ + baseName: string; + candidate?: ScenarioGeneralPoolCandidate; + }> = + generalPool === undefined + ? pickNpcNames(rng, subordinateCount, world.listGenerals(), options.env).map((baseName) => ({ + baseName, + })) + : pickUniqueScenarioGeneralPoolCandidates(rng, generalPool, subordinateCount).map((candidate) => ({ + baseName: candidate.name, + candidate, + })); + for (const { baseName, candidate } of subordinateCandidates) { + const deadYear = environment.year + 10 + Math.trunc(60 * (1 - Math.log2(rng.nextRange(1, 1024)) / 10)); createNpcGeneral({ world, reservedTurns: options.reservedTurns, @@ -365,11 +390,12 @@ export const createRaiseNpcNationHandler = (options: { officerLevel: 1, bornYear: environment.year - 20, deadYear, + ...(candidate ? { candidate } : {}), }); } world.updateNation(nationId, { chiefGeneralId: ruler.id, - meta: { ...nation.meta, gennum: 1 + subordinateNames.length }, + meta: { ...nation.meta, gennum: 1 + subordinateCandidates.length }, }); options.reservedTurns.ensureNationTurns(nationId, 12); options.reservedTurns.ensureNationTurns(nationId, 11); diff --git a/app/game-engine/src/turn/reservedTurnHandler.ts b/app/game-engine/src/turn/reservedTurnHandler.ts index bfac0e72..deaea81c 100644 --- a/app/game-engine/src/turn/reservedTurnHandler.ts +++ b/app/game-engine/src/turn/reservedTurnHandler.ts @@ -31,6 +31,7 @@ import { createItemModuleRegistry, loadItemModules, resolveUniqueConfig, + readScenarioGeneralPoolClaim, rollUniqueLottery, getNextTurnAt, getBillByLevel, @@ -509,6 +510,7 @@ type WorldView = { listNations(): Nation[]; listTroops(): Troop[]; listDiplomacy(): TurnDiplomacy[]; + listGeneralPoolCandidates(claimedAt: Date): ReturnType; }; const mergeStats = (base: TurnGeneral['stats'], patch: Partial): TurnGeneral['stats'] => ({ @@ -614,6 +616,20 @@ const createWorldOverlay = (world: InMemoryTurnWorld) => { ...entry, meta: { ...entry.meta }, })), + listGeneralPoolCandidates: (claimedAt) => { + const candidates = world.listGeneralPoolCandidates(claimedAt); + if (!candidates) { + return candidates; + } + const overlayClaimedIds = new Set(); + for (const general of generalOverrides.values()) { + const claim = readScenarioGeneralPoolClaim(general.meta); + if (claim) { + overlayClaimedIds.add(claim.poolEntryId); + } + } + return candidates.filter((candidate) => !overlayClaimedIds.has(candidate.poolEntryId)); + }, }; return { @@ -1080,6 +1096,7 @@ export const createReservedTurnHandler = async (options: { : {}), rng: actionRng, time: actionTime, + maxTechLevel: env.maxTechLevel, uniqueLottery, }; let specificContext = buildActionContext( @@ -1113,6 +1130,7 @@ export const createReservedTurnHandler = async (options: { nation: currentNation, rng: actionRng, time: actionTime, + maxTechLevel: env.maxTechLevel, }; specificContext = baseContext; } @@ -2418,6 +2436,7 @@ export const createImmediateGeneralActionExecutor = async (options: { month: state.currentMonth, startYear, }, + maxTechLevel: env.maxTechLevel, uniqueLottery, }; const actionContext = diff --git a/app/game-engine/src/turn/selectPoolService.ts b/app/game-engine/src/turn/selectPoolService.ts index 4e426bce..ceb255ba 100644 --- a/app/game-engine/src/turn/selectPoolService.ts +++ b/app/game-engine/src/turn/selectPoolService.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -import { asNumber, asRecord, JosaUtil, LiteHashDRBG, RandUtil } from '@sammo-ts/common'; +import { asNumber, asRecord, GAME_TICKS_PER_TURN, JosaUtil, LiteHashDRBG, RandUtil } from '@sammo-ts/common'; import { acquireGameSchemaAdvisoryXactLock, GamePrisma } from '@sammo-ts/infra'; import { EventDomesticTraitLoader, @@ -10,14 +10,25 @@ import { LogCategory, LogScope, PERSONALITY_TRAIT_KEYS, + CENTENNIAL_ALL_STAR_AUX_KEY, + CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT, + CENTENNIAL_ALL_STAR_POOL, + applyCentennialAllStarTarget, + calculateCentennialUserCurrentTargetStats, + calculateCentennialUserInitialStats, + buildScenarioGeneralPoolClaimMeta, + initialCentennialAllStarAux, + parseScenarioGeneralPoolCandidate, + prepareCentennialLegacyUserReselection, simpleSerialize, WarTraitLoader, } from '@sammo-ts/logic'; +import type { CentennialAllStarEnvironment, CentennialAllStarRules, CentennialAllStarTarget } from '@sammo-ts/logic'; import type { DatabaseClient, GamePrisma as GamePrismaTypes } from '@sammo-ts/infra'; import type { InMemoryTurnWorld } from './inMemoryWorld.js'; import { buildPrestartDeleteAfter } from './prestartDeletion.js'; -import type { TurnGeneral } from './types.js'; +import type { TurnGeneral, TurnGeneralPoolEntry } from './types.js'; type WorldStateRow = GamePrismaTypes.WorldStateGetPayload>; @@ -33,7 +44,8 @@ export class SelectPoolError extends Error { } } -const SUPPORTED_POOL = 'SPoolUnderU30'; +const LEGACY_SELECTION_POOL = 'SPoolUnderU30'; +const SUPPORTED_POOLS = new Set([LEGACY_SELECTION_POOL, CENTENNIAL_ALL_STAR_POOL]); const RESERVATION_COUNT = 14; const RESERVATION_TURN_MULTIPLIER = 2; const RESELECTION_TURN_MULTIPLIER = 12; @@ -41,7 +53,6 @@ const DEFAULT_MAX_GENERAL = 500; const DEFAULT_CREW_TYPE_ID = 1100; const MAX_GENERAL_TURNS = 30; const DEFAULT_TURN_ACTION = '휴식'; -const LEGACY_TIMEZONE_OFFSET_MS = 9 * 60 * 60 * 1000; const zCandidateInfo = z.object({ uniqueName: z.string().min(1), @@ -49,7 +60,7 @@ const zCandidateInfo = z.object({ leadership: z.number().int(), strength: z.number().int(), intel: z.number().int(), - specialDomestic: z.string().min(1), + specialDomestic: z.string().min(1).nullable(), specialWar: z.string().min(1).optional(), ego: z.string().min(1).optional(), experience: z.number().int().optional(), @@ -67,6 +78,7 @@ interface SelectPoolRow { ownerUserId: string | null; generalId: number | null; reservedUntil: Date | null; + reservedUntilTick: bigint | null; info: unknown; } @@ -76,8 +88,8 @@ export interface SelectPoolCandidateDto { leadership: number; strength: number; intel: number; - specialDomestic: string; - specialDomesticName: string; + specialDomestic: string | null; + specialDomesticName: string | null; specialDomesticInfo: string; specialWar: string | null; specialWarName: string | null; @@ -89,7 +101,7 @@ export interface SelectPoolCandidateDto { } export interface SelectPoolReservationDto { - poolName: typeof SUPPORTED_POOL; + poolName: string; hasGeneral: boolean; validUntil: string; candidates: SelectPoolCandidateDto[]; @@ -120,7 +132,8 @@ const resolveTurnTermMinutes = (worldState: WorldStateRow): number => { export const isSelectionPoolWorld = (worldState: WorldStateRow): boolean => { const config = asRecord(worldState.config); - return asNumber(config.npcMode, 0) === 2 && resolvePoolName(worldState) === SUPPORTED_POOL; + const poolName = resolvePoolName(worldState); + return asNumber(config.npcMode, 0) === 2 && poolName !== null && SUPPORTED_POOLS.has(poolName); }; export const resolveSelectionMaxGeneral = (worldState: WorldStateRow): number => { @@ -158,16 +171,61 @@ const parseCandidate = (row: Pick): Select return candidate; }; -const candidateWeight = (candidate: SelectPoolCandidateInfo): number => - candidate.dex.reduce((sum, value) => sum + value, 0); +export const calculateSelectionCandidateWeight = ( + poolName: string, + candidate: SelectPoolCandidateInfo, + ownerIsUser: boolean +): number => { + const dexWeight = candidate.dex.reduce((sum, value) => sum + value, 0); + if (poolName !== CENTENNIAL_ALL_STAR_POOL) { + return dexWeight; + } + const eligibleDexWeight = Math.max(100_000, dexWeight); + if (!ownerIsUser) { + return eligibleDexWeight; + } + const statTotal = candidate.leadership + candidate.strength + candidate.intel; + const normalizedStat = Math.min(1, Math.max(0, (statTotal - 160) / 30)); + return eligibleDexWeight * (1 + 0.5 * normalizedStat); +}; + +const resolveCentennialEnvironment = (worldState: WorldStateRow): CentennialAllStarEnvironment => { + const scenarioMeta = asRecord(asRecord(worldState.meta).scenarioMeta); + return { + startYear: Math.trunc(asNumber(scenarioMeta.startYear, worldState.currentYear)), + year: worldState.currentYear, + month: worldState.currentMonth, + }; +}; + +const resolveCentennialRules = (worldState: WorldStateRow): CentennialAllStarRules => { + const config = asRecord(worldState.config); + const stat = asRecord(config.stat); + const configConst = asRecord(config.const); + const defaultSpecialDomestic = configConst.defaultSpecialDomestic; + return { + defaultStatMin: asNumber(stat.min, 15), + defaultStatMax: asNumber(stat.max, 80), + defaultStatTotal: asNumber(stat.total, 165), + maxStatLevel: asNumber(configConst.maxLevel, 255), + defaultSpecialDomestic: typeof defaultSpecialDomestic === 'string' ? defaultSpecialDomestic : 'None', + dexLimit: asNumber(configConst.dexLimit, CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT), + }; +}; + +const asCentennialTarget = (candidate: SelectPoolCandidateInfo): CentennialAllStarTarget => ({ + ...candidate, + specialDomestic: candidate.specialDomestic, +}); const eventDomesticTraitLoader = new EventDomesticTraitLoader(); const warTraitLoader = new WarTraitLoader(); const toCandidateDto = async (candidate: SelectPoolCandidateInfo): Promise => { - const trait = isEventDomesticTraitKey(candidate.specialDomestic) - ? await eventDomesticTraitLoader.load(candidate.specialDomestic) - : null; + const trait = + candidate.specialDomestic && isEventDomesticTraitKey(candidate.specialDomestic) + ? await eventDomesticTraitLoader.load(candidate.specialDomestic) + : null; const warTrait = candidate.specialWar && isWarTraitKey(candidate.specialWar) ? await warTraitLoader.load(candidate.specialWar) @@ -179,7 +237,7 @@ const toCandidateDto = async (candidate: SelectPoolCandidateInfo): Promise>, - hasGeneral: boolean + rows: Array>, + hasGeneral: boolean, + worldState: WorldStateRow, + world: InMemoryTurnWorld ): Promise => { - const validUntil = rows[0]?.reservedUntil; - if (!validUntil) { + const first = rows[0]; + if (!first || (first.reservedUntilTick === null && first.reservedUntil === null)) { throw new SelectPoolError('INTERNAL_SERVER_ERROR', '장수 선택 후보의 유효기간이 없습니다.'); } - const expiresAt = validUntil; + const expiresAt = + first.reservedUntilTick === null + ? first.reservedUntil! + : world.gameTickToDate(toSafeReservationTick(first.reservedUntilTick, first.uniqueName)); + const poolName = resolvePoolName(worldState); + if (!poolName || !SUPPORTED_POOLS.has(poolName)) { + throw new SelectPoolError('PRECONDITION_FAILED', '선택 가능한 서버가 아닙니다'); + } + const centennialEnvironment = resolveCentennialEnvironment(worldState); + const centennialRules = resolveCentennialRules(worldState); const sorted = rows - .map((row) => ({ id: row.id, info: parseCandidate(row) })) - .sort((left, right) => candidateWeight(left.info) - candidateWeight(right.info) || left.id - right.id); + .map((row) => { + const raw = parseCandidate(row); + if (poolName !== CENTENNIAL_ALL_STAR_POOL) { + return { id: row.id, info: raw }; + } + const target = asCentennialTarget(raw); + const display = hasGeneral + ? calculateCentennialUserCurrentTargetStats(target, centennialEnvironment, centennialRules) + : calculateCentennialUserInitialStats(target, centennialRules); + return { + id: row.id, + info: { + ...raw, + leadership: display.leadership, + strength: display.strength, + intel: display.intel, + }, + }; + }) + .sort( + (left, right) => + left.info.dex.reduce((sum, value) => sum + value, 0) - + right.info.dex.reduce((sum, value) => sum + value, 0) || left.id - right.id + ); return Promise.all(sorted.map((entry) => toCandidateDto(entry.info))).then((candidates) => ({ - poolName: SUPPORTED_POOL, + poolName, hasGeneral, validUntil: expiresAt.toISOString(), candidates, })); }; -const formatLegacySeedTime = (value: Date): string => { - const pad = (part: number): string => String(part).padStart(2, '0'); - const koreaTime = new Date(value.getTime() + LEGACY_TIMEZONE_OFFSET_MS); - return `${koreaTime.getUTCFullYear()}-${pad(koreaTime.getUTCMonth() + 1)}-${pad( - koreaTime.getUTCDate() - )} ${pad(koreaTime.getUTCHours())}:${pad(koreaTime.getUTCMinutes())}:${pad(koreaTime.getUTCSeconds())}`; -}; - -export const buildSelectPoolSeed = (hiddenSeed: string | number, ownerIdentity: string | number, now: Date): string => - simpleSerialize(hiddenSeed, 'selectPool', ownerIdentity, formatLegacySeedTime(now)); +export const buildSelectPoolSeed = ( + hiddenSeed: string | number, + ownerIdentity: string | number, + nowTick: number +): string => simpleSerialize(hiddenSeed, 'selectPool', ownerIdentity, nowTick); export const claimWeightedSelectionCandidates = async (options: { weighted: [T, number][]; @@ -265,6 +351,27 @@ const getWorldHiddenSeed = (worldState: WorldStateRow): string | number => { : fail('INTERNAL_SERVER_ERROR', '장수 선택 비밀 seed가 설정되지 않았습니다.'); }; +const toSafeReservationTick = (value: bigint | number, uniqueName: string): number => { + const tick = Number(value); + if (!Number.isSafeInteger(tick)) { + fail('INTERNAL_SERVER_ERROR', `장수 선택 후보 ${uniqueName}의 예약 tick이 안전한 정수 범위를 벗어났습니다.`); + } + return tick; +}; + +const resolveAcceptedGameTick = (world: InMemoryTurnWorld, now: Date): number => { + const tick = world.dateToGameTick(now); + if (!Number.isSafeInteger(tick)) { + fail('INTERNAL_SERVER_ERROR', '장수 선택 예약 tick이 안전한 정수 범위를 벗어났습니다.'); + } + return tick; +}; + +const isReservationActive = (row: SelectPoolRow, now: Date, nowTick: number): boolean => + row.reservedUntilTick !== null + ? toSafeReservationTick(row.reservedUntilTick, row.uniqueName) >= nowTick + : row.reservedUntil !== null && row.reservedUntil.getTime() >= now.getTime(); + const lockSelectionUser = async (db: DatabaseClient, userId: string): Promise => { await acquireGameSchemaAdvisoryXactLock(db, `select-pool:user:${userId}`); }; @@ -273,14 +380,18 @@ const requireSelectionToken = async ( db: DatabaseClient, userId: string, uniqueName: string, - now: Date + now: Date, + nowTick: number ): Promise => { const token = await db.selectPoolEntry.findFirst({ where: { ownerUserId: userId, uniqueName, - reservedUntil: { gte: now }, generalId: null, + OR: [ + { reservedUntilTick: { gte: BigInt(nowTick) } }, + { reservedUntilTick: null, reservedUntil: { gte: now } }, + ], }, }); if (!token) { @@ -289,17 +400,44 @@ const requireSelectionToken = async ( return token as SelectPoolRow; }; +const mapSelectionPoolRow = (row: SelectPoolRow): TurnGeneralPoolEntry => ({ + id: row.id, + uniqueName: row.uniqueName, + ownerUserId: row.ownerUserId, + generalId: row.generalId, + reservedUntil: row.reservedUntil ? new Date(row.reservedUntil.getTime()) : null, + reservedUntilTick: + row.reservedUntilTick === null ? null : toSafeReservationTick(row.reservedUntilTick, row.uniqueName), + candidate: parseScenarioGeneralPoolCandidate({ id: row.id, uniqueName: row.uniqueName, info: row.info }), +}); + +const synchronizeSelectionPoolWorld = async ( + db: DatabaseClient, + world: InMemoryTurnWorld +): Promise => { + const rows = (await db.selectPoolEntry.findMany({ orderBy: { id: 'asc' } })) as SelectPoolRow[]; + world.replaceGeneralPoolEntries(rows.map(mapSelectionPoolRow)); + return rows; +}; + export const reserveSelectionPool = async (options: { db: DatabaseClient; + world: InMemoryTurnWorld; worldState: WorldStateRow; userId: string; now?: Date; + acceptedGameTick?: number; seedOwnerIdentity?: string | number; }): Promise => { - const { db, worldState, userId } = options; + const { db, world, worldState, userId } = options; requirePoolWorld(worldState); const now = options.now ?? new Date(); + const acceptedGameTick = options.acceptedGameTick ?? resolveAcceptedGameTick(world, now); + if (!Number.isSafeInteger(acceptedGameTick)) { + fail('INTERNAL_SERVER_ERROR', '장수 선택 예약 tick이 안전한 정수 범위를 벗어났습니다.'); + } await lockSelectionUser(db, userId); + await lockSelectionMutationTables(db); const general = await db.general.findFirst({ where: { userId }, select: { id: true, meta: true }, @@ -309,77 +447,94 @@ export const reserveSelectionPool = async (options: { fail('PRECONDITION_FAILED', '아직 다시 고를 수 없습니다'); } - const existing = await db.selectPoolEntry.findMany({ - where: { - ownerUserId: userId, - reservedUntil: { gte: now }, - generalId: null, - }, - orderBy: { id: 'asc' }, - }); + let currentRows = await synchronizeSelectionPoolWorld(db, world); + const existing = currentRows.filter( + (row) => row.ownerUserId === userId && row.generalId === null && isReservationActive(row, now, acceptedGameTick) + ); if (existing.length > 0) { - return toReservationDto(existing as SelectPoolRow[], Boolean(general)); + return toReservationDto(existing, Boolean(general), worldState, world); } await db.selectPoolEntry.updateMany({ where: { - reservedUntil: { lt: now }, generalId: null, + OR: [ + { reservedUntilTick: { lt: BigInt(acceptedGameTick) } }, + { reservedUntilTick: null, reservedUntil: { lt: now } }, + ], }, data: { ownerUserId: null, reservedUntil: null, + reservedUntilTick: null, }, }); - - const available = (await db.selectPoolEntry.findMany({ - where: { - ownerUserId: null, - reservedUntil: null, - generalId: null, - }, - orderBy: { id: 'asc' }, - })) as SelectPoolRow[]; + currentRows = await synchronizeSelectionPoolWorld(db, world); + const availableIds = new Set( + world.listGeneralPoolCandidates(now, acceptedGameTick)?.map((candidate) => candidate.poolEntryId) ?? [] + ); + const available = currentRows.filter( + (row) => + availableIds.has(row.id) && + row.ownerUserId === null && + row.reservedUntil === null && + row.reservedUntilTick === null && + row.generalId === null + ); if (available.length < RESERVATION_COUNT) { fail('PRECONDITION_FAILED', 'pool 부족'); } const rng = new RandUtil( - new LiteHashDRBG(buildSelectPoolSeed(getWorldHiddenSeed(worldState), options.seedOwnerIdentity ?? userId, now)) + new LiteHashDRBG( + buildSelectPoolSeed(getWorldHiddenSeed(worldState), options.seedOwnerIdentity ?? userId, acceptedGameTick) + ) ); - const weighted = available.map((row) => [row, candidateWeight(parseCandidate(row))] as [SelectPoolRow, number]); - const reservedUntil = new Date( - now.getTime() + resolveTurnTermMinutes(worldState) * RESERVATION_TURN_MULTIPLIER * 60_000 + const poolName = resolvePoolName(worldState)!; + const weighted = available.map( + (row) => + [row, calculateSelectionCandidateWeight(poolName, parseCandidate(row), true)] as [SelectPoolRow, number] ); + const reservedUntilTick = acceptedGameTick + RESERVATION_TURN_MULTIPLIER * GAME_TICKS_PER_TURN; + if (!Number.isSafeInteger(reservedUntilTick)) { + fail('INTERNAL_SERVER_ERROR', '장수 선택 예약 tick이 안전한 정수 범위를 벗어났습니다.'); + } + const reservedUntil = world.gameTickToDate(reservedUntilTick); const selected = await claimWeightedSelectionCandidates({ weighted, rng, count: RESERVATION_COUNT, - claim: async (candidate) => { - const claimed = await db.selectPoolEntry.updateMany({ - where: { - id: candidate.id, - ownerUserId: null, - reservedUntil: null, - generalId: null, - }, - data: { - ownerUserId: userId, - reservedUntil, - }, - }); - return claimed.count > 0; - }, + claim: async () => true, }); const reserved = selected.map((candidate) => ({ ...candidate, ownerUserId: userId, reservedUntil, + reservedUntilTick: BigInt(reservedUntilTick), })); if (reserved.length !== RESERVATION_COUNT) { fail('CONFLICT', '장수 선택 후보를 예약하지 못했습니다. 다시 시도해 주세요.'); } - return toReservationDto(reserved, Boolean(general)); + const reservation = await toReservationDto(reserved, Boolean(general), worldState, world); + const claimed = await db.selectPoolEntry.updateMany({ + where: { + id: { in: selected.map((candidate) => candidate.id) }, + ownerUserId: null, + reservedUntil: null, + reservedUntilTick: null, + generalId: null, + }, + data: { + ownerUserId: userId, + reservedUntil, + reservedUntilTick: BigInt(reservedUntilTick), + }, + }); + if (claimed.count !== RESERVATION_COUNT) { + throw new Error('장수 선택 후보의 DB 점유 수가 턴 데몬 선택 결과와 일치하지 않습니다.'); + } + await synchronizeSelectionPoolWorld(db, world); + return reservation; }; const lockSelectionMutationTables = async (db: DatabaseClient): Promise => { @@ -403,15 +558,25 @@ const assertGeneralIdSnapshotMatches = async (db: DatabaseClient, world: InMemor } }; -const clearUnusedReservations = async (db: DatabaseClient, userId: string, now: Date): Promise => { +const clearUnusedReservations = async ( + db: DatabaseClient, + userId: string, + now: Date, + nowTick: number +): Promise => { await db.selectPoolEntry.updateMany({ where: { generalId: null, - OR: [{ ownerUserId: userId }, { reservedUntil: { lt: now } }], + OR: [ + { ownerUserId: userId }, + { reservedUntilTick: { lt: BigInt(nowTick) } }, + { reservedUntilTick: null, reservedUntil: { lt: now } }, + ], }, data: { ownerUserId: null, reservedUntil: null, + reservedUntilTick: null, }, }); }; @@ -533,8 +698,10 @@ export const createGeneralFromSelectionPool = async (options: { const { db, world, worldState, userId, ownerDisplayName, uniqueName } = options; requirePoolWorld(worldState); const now = options.now ?? new Date(); + const nowTick = resolveAcceptedGameTick(world, now); await lockSelectionUser(db, userId); await lockSelectionMutationTables(db); + await synchronizeSelectionPoolWorld(db, world); await assertGeneralIdSnapshotMatches(db, world); if ( world.listGenerals().some((general) => general.userId === userId) || @@ -542,8 +709,15 @@ export const createGeneralFromSelectionPool = async (options: { ) { fail('PRECONDITION_FAILED', '이미 장수를 생성했습니다.'); } - const token = await requireSelectionToken(db, userId, uniqueName, now); + const token = await requireSelectionToken(db, userId, uniqueName, now, nowTick); const info = parseCandidate(token); + const poolName = resolvePoolName(worldState)!; + const isCentennial = poolName === CENTENNIAL_ALL_STAR_POOL; + const centennialTarget = isCentennial ? asCentennialTarget(info) : null; + const centennialRules = resolveCentennialRules(worldState); + const centennialInitialStats = centennialTarget + ? calculateCentennialUserInitialStats(centennialTarget, centennialRules) + : null; const config = asRecord(worldState.config); const configConst = asRecord(config.const); @@ -556,9 +730,22 @@ export const createGeneralFromSelectionPool = async (options: { const seedOwnerIdentity = options.seedOwnerIdentity ?? userId; const rng = resolvePoolRng(worldState, seedOwnerIdentity, uniqueName); const affinity = rng.nextRangeInt(1, 150); - const cities = await db.city.findMany({ select: { id: true, name: true }, orderBy: { id: 'asc' } }); + const allCities = await db.city.findMany({ + select: { id: true, name: true, level: true, nationId: true }, + orderBy: { id: 'asc' }, + }); + const centennialCities = allCities.filter((city) => city.level >= 5 && city.level <= 6); + const neutralCentennialCities = centennialCities.filter((city) => city.nationId === 0); + const cities = isCentennial + ? neutralCentennialCities.length > 0 + ? neutralCentennialCities + : centennialCities + : allCities; if (cities.length === 0) { - fail('PRECONDITION_FAILED', '생성 가능한 도시가 없습니다.'); + fail( + 'PRECONDITION_FAILED', + isCentennial ? '장수를 생성할 소·중성이 없습니다.' : '생성 가능한 도시가 없습니다.' + ); } const city = rng.choice(cities); const turnTime = buildInitialTurnTime(rng, worldState, now); @@ -575,12 +762,45 @@ export const createGeneralFromSelectionPool = async (options: { const imageServer = useOwnerPicture ? (options.ownerImageServer ?? 1) : info.imgsvr; const defaultSpecialWar = typeof configConst.defaultSpecialWar === 'string' ? configConst.defaultSpecialWar : 'None'; + const defaultSpecialDomestic = + typeof configConst.defaultSpecialDomestic === 'string' ? configConst.defaultSpecialDomestic : 'None'; const personality = resolveSelectedPersonality(worldState, seedOwnerIdentity, uniqueName, options.personality); // 모든 사용자 입력과 DB 선조건을 검증한 뒤에만 allocator를 변경한다. // SelectPoolError는 정상 command 결과로 commit되므로 이보다 먼저 // getNextGeneralId()를 호출하면 실패한 요청도 lastGeneralId를 소비한다. const generalId = world.getNextGeneralId(); + const generalMeta: TurnGeneral['meta'] = { + createdBy: 'select_pool', + ownerName: ownerDisplayName, + owner_name: ownerDisplayName, + killturn: 5, + specage: specialityAges.domestic, + specage2: specialityAges.war, + dex1: isCentennial ? 0 : info.dex[0], + dex2: isCentennial ? 0 : info.dex[1], + dex3: isCentennial ? 0 : info.dex[2], + dex4: isCentennial ? 0 : info.dex[3], + dex5: isCentennial ? 0 : info.dex[4], + next_change: nextChangeAt.toISOString(), + nextChangeAt: nextChangeAt.toISOString(), + prestart_delete_after: prestartDeleteAfter.toISOString(), + ...(useOwnerPicture && options.ownerIconRevision ? { accountIconUpdatedAt: options.ownerIconRevision } : {}), + npc_org: 0, + ...buildScenarioGeneralPoolClaimMeta( + parseScenarioGeneralPoolCandidate({ id: token.id, uniqueName: token.uniqueName, info: token.info }), + now + ), + }; + if (centennialTarget && centennialInitialStats) { + const mutableMeta: Record = generalMeta; + mutableMeta[CENTENNIAL_ALL_STAR_AUX_KEY] = initialCentennialAllStarAux( + centennialTarget, + centennialRules, + centennialInitialStats + ); + } + const general: TurnGeneral = { id: generalId, userId, @@ -595,9 +815,9 @@ export const createGeneralFromSelectionPool = async (options: { picture, imageServer, stats: { - leadership: info.leadership, - strength: info.strength, - intelligence: info.intel, + leadership: centennialInitialStats?.leadership ?? info.leadership, + strength: centennialInitialStats?.strength ?? info.strength, + intelligence: centennialInitialStats?.intel ?? info.intel, }, experience: info.experience ?? age * 100, dedication: info.dedication ?? age * 100, @@ -614,8 +834,8 @@ export const createGeneralFromSelectionPool = async (options: { startAge: age, role: { personality, - specialDomestic: info.specialDomestic, - specialWar: info.specialWar ?? defaultSpecialWar, + specialDomestic: isCentennial ? defaultSpecialDomestic : info.specialDomestic, + specialWar: isCentennial ? defaultSpecialWar : (info.specialWar ?? defaultSpecialWar), items: { horse: null, weapon: null, @@ -632,26 +852,7 @@ export const createGeneralFromSelectionPool = async (options: { lastTurn: { command: DEFAULT_TURN_ACTION }, penalty: {}, refreshScoreTotal: 0, - meta: { - createdBy: 'select_pool', - ownerName: ownerDisplayName, - owner_name: ownerDisplayName, - killturn: 5, - specage: specialityAges.domestic, - specage2: specialityAges.war, - dex1: info.dex[0], - dex2: info.dex[1], - dex3: info.dex[2], - dex4: info.dex[3], - dex5: info.dex[4], - next_change: nextChangeAt.toISOString(), - nextChangeAt: nextChangeAt.toISOString(), - prestart_delete_after: prestartDeleteAfter.toISOString(), - ...(useOwnerPicture && options.ownerIconRevision - ? { accountIconUpdatedAt: options.ownerIconRevision } - : {}), - npc_org: 0, - }, + meta: generalMeta, }; if (!world.addGeneral(general)) { throw new Error(`장수 번호 ${generalId}를 할당할 수 없습니다.`); @@ -674,13 +875,17 @@ export const createGeneralFromSelectionPool = async (options: { where: { id: token.id, ownerUserId: userId, - reservedUntil: { gte: now }, generalId: null, + OR: [ + { reservedUntilTick: { gte: BigInt(nowTick) } }, + { reservedUntilTick: null, reservedUntil: { gte: now } }, + ], }, data: { generalId, ownerUserId: null, reservedUntil: null, + reservedUntilTick: null, }, }); if (occupied.count === 0) { @@ -691,7 +896,8 @@ export const createGeneralFromSelectionPool = async (options: { update: { userId, lastRefresh: now }, create: { generalId, userId, lastRefresh: now }, }); - await clearUnusedReservations(db, userId, now); + await clearUnusedReservations(db, userId, now, nowTick); + await synchronizeSelectionPoolWorld(db, world); const ownerJosaYi = JosaUtil.pick(ownerDisplayName, '이'); const generalJosaRo = JosaUtil.pick(info.generalName, '로'); @@ -718,8 +924,10 @@ export const reselectGeneralFromSelectionPool = async (options: { const { db, world, worldState, userId, ownerDisplayName, uniqueName } = options; requirePoolWorld(worldState); const now = options.now ?? new Date(); + const nowTick = resolveAcceptedGameTick(world, now); await lockSelectionUser(db, userId); await lockSelectionMutationTables(db); + await synchronizeSelectionPoolWorld(db, world); const persistedGeneral = await db.general.findFirst({ where: { userId } }); const general = world.listGenerals().find((candidate) => candidate.userId === userId); if (!persistedGeneral || !general) { @@ -735,21 +943,26 @@ export const reselectGeneralFromSelectionPool = async (options: { if (nextChangeAt && nextChangeAt.getTime() > now.getTime()) { fail('PRECONDITION_FAILED', '아직 다시 고를 수 없습니다'); } - const token = await requireSelectionToken(db, userId, uniqueName, now); + const token = await requireSelectionToken(db, userId, uniqueName, now, nowTick); const info = parseCandidate(token); + const isCentennial = resolvePoolName(worldState) === CENTENNIAL_ALL_STAR_POOL; const provisionalGeneralId = -general.id; const claimed = await db.selectPoolEntry.updateMany({ where: { id: token.id, ownerUserId: userId, - reservedUntil: { gte: now }, generalId: null, + OR: [ + { reservedUntilTick: { gte: BigInt(nowTick) } }, + { reservedUntilTick: null, reservedUntil: { gte: now } }, + ], }, data: { generalId: provisionalGeneralId, ownerUserId: null, reservedUntil: null, + reservedUntilTick: null, }, }); if (claimed.count === 0) { @@ -757,7 +970,7 @@ export const reselectGeneralFromSelectionPool = async (options: { } await db.selectPoolEntry.updateMany({ where: { generalId: general.id }, - data: { generalId: null, ownerUserId: null, reservedUntil: null }, + data: { generalId: null, ownerUserId: null, reservedUntil: null, reservedUntilTick: null }, }); const finalized = await db.selectPoolEntry.updateMany({ where: { @@ -772,30 +985,51 @@ export const reselectGeneralFromSelectionPool = async (options: { throw new Error('장수 재선택 중 선택 후보 확정에 실패했습니다.'); } - const currentMeta = asRecord(general.meta); const cooldown = new Date( now.getTime() + resolveTurnTermMinutes(worldState) * RESELECTION_TURN_MULTIPLIER * 60_000 ); - const updatedMeta = { - ...currentMeta, + const centennialBaseGeneral = isCentennial + ? { + ...general, + meta: prepareCentennialLegacyUserReselection(general, resolveCentennialRules(worldState)), + } + : general; + const centennialGrowth = isCentennial + ? applyCentennialAllStarTarget( + centennialBaseGeneral, + asCentennialTarget(info), + resolveCentennialEnvironment(worldState), + resolveCentennialRules(worldState) + ) + : null; + const updatedMeta: TurnGeneral['meta'] = { + ...(centennialGrowth?.meta ?? general.meta), ownerName: ownerDisplayName, owner_name: ownerDisplayName, - dex1: info.dex[0], - dex2: info.dex[1], - dex3: info.dex[2], - dex4: info.dex[3], - dex5: info.dex[4], + ...(!isCentennial + ? { + dex1: info.dex[0], + dex2: info.dex[1], + dex3: info.dex[2], + dex4: info.dex[3], + dex5: info.dex[4], + } + : {}), next_change: cooldown.toISOString(), nextChangeAt: cooldown.toISOString(), + ...buildScenarioGeneralPoolClaimMeta( + parseScenarioGeneralPoolCandidate({ id: token.id, uniqueName: token.uniqueName, info: token.info }), + now + ), }; const updated = world.updateGeneral(general.id, { name: info.generalName, - stats: { + stats: centennialGrowth?.stats ?? { leadership: info.leadership, strength: info.strength, intelligence: info.intel, }, - role: { + role: centennialGrowth?.role ?? { ...general.role, personality: info.ego ?? general.role.personality, specialDomestic: info.specialDomestic, @@ -803,12 +1037,13 @@ export const reselectGeneralFromSelectionPool = async (options: { }, picture: info.picture, imageServer: info.imgsvr, - meta: updatedMeta as unknown as TurnGeneral['meta'], + meta: updatedMeta, }); if (!updated) { throw new Error('턴 데몬에서 장수 정보를 갱신하지 못했습니다.'); } - await clearUnusedReservations(db, userId, now); + await clearUnusedReservations(db, userId, now, nowTick); + await synchronizeSelectionPoolWorld(db, world); const ownerJosaYi = JosaUtil.pick(ownerDisplayName, '이'); const generalJosaRo = JosaUtil.pick(info.generalName, '로'); diff --git a/app/game-engine/src/turn/turnDaemon.ts b/app/game-engine/src/turn/turnDaemon.ts index 1ac57442..c02fa627 100644 --- a/app/game-engine/src/turn/turnDaemon.ts +++ b/app/game-engine/src/turn/turnDaemon.ts @@ -53,7 +53,7 @@ import { createAuctionBidder } from '../auction/bidder.js'; import { createNeutralAuctionRegistrar } from '../auction/neutralRegistrar.js'; import { createTournamentRewardFinalizer } from '../tournament/finalizer.js'; import { createTournamentAutoStartHandler } from './tournamentAutoStart.js'; -import { createYearbookHandler } from './yearbookHandler.js'; +import { createDynastyStatisticsHandler, createYearbookHandler } from './yearbookHandler.js'; import { createMonthlyEventHandler, createRandomizeCityTradeRateHandler, @@ -79,6 +79,7 @@ import { createFinishNationBettingHandler, createOpenNationBettingHandler } from import { createScoutBlockHandler } from './monthlyScoutBlockAction.js'; import { createAddGlobalBetrayHandler, createAssignGeneralSpecialityHandler } from './monthlySpecialityBetrayAction.js'; import { createLostUniqueItemHandler, createMergeInheritPointRankHandler } from './monthlyUniqueInheritAction.js'; +import { createAdvanceCentennialAllStarHandler } from './monthlyCentennialAllStarAction.js'; import { createNewYearHandler, createNoticeToHistoryLogHandler, @@ -386,6 +387,7 @@ const createMonthlyEventActions = (options: { }) ); eventActions.set('MergeInheritPointRank', createMergeInheritPointRankHandler({ getWorld: options.getWorld })); + eventActions.set('AdvanceCentennialAllStar', createAdvanceCentennialAllStarHandler({ getWorld: options.getWorld })); eventActions.set('ProcessIncome', createProcessIncomeActionHandler(options.incomeHandler)); eventActions.set('NoticeToHistoryLog', createNoticeToHistoryLogHandler({ getWorld: options.getWorld })); eventActions.set('NewYear', createNewYearHandler({ getWorld: options.getWorld })); @@ -464,6 +466,7 @@ const createMonthlyCalendarRuntime = async (options: { now: () => options.getWorld()?.getGameNow(new Date(options.clock.nowMs())) ?? new Date(options.clock.nowMs()), }); const calendarHandler = composeCalendarHandlers( + createDynastyStatisticsHandler({ getWorld: options.getWorld }).handler, options.monthlyEventHandler, options.hasEventAction('ProcessIncome') ? null : options.incomeHandler, createYearbookHandler({ profileName: options.profileName, getWorld: options.getWorld }).handler, diff --git a/app/game-engine/src/turn/types.ts b/app/game-engine/src/turn/types.ts index aa6e8ca1..6a41fe27 100644 --- a/app/game-engine/src/turn/types.ts +++ b/app/game-engine/src/turn/types.ts @@ -5,6 +5,7 @@ import type { Nation, ScenarioConfig, ScenarioMeta, + ScenarioGeneralPoolCandidate, Troop, UnitSetDefinition, WorldSnapshot, @@ -62,6 +63,16 @@ export interface TurnEvent { meta: Record; } +export interface TurnGeneralPoolEntry { + id: number; + uniqueName: string; + ownerUserId: string | null; + generalId: number | null; + reservedUntil: Date | null; + reservedUntilTick: number | null; + candidate: ScenarioGeneralPoolCandidate; +} + export interface PendingNeutralAuction { registrationKey: string; type: 'BUY_RICE' | 'SELL_RICE'; @@ -152,6 +163,7 @@ export interface TurnWorldSnapshot extends Omit< diplomacy: TurnDiplomacy[]; events: TurnEvent[]; initialEvents: TurnEvent[]; + generalPoolEntries?: TurnGeneralPoolEntry[]; generals: TurnGeneral[]; cities: City[]; nations: Nation[]; diff --git a/app/game-engine/src/turn/unificationHandler.ts b/app/game-engine/src/turn/unificationHandler.ts index f12b2e63..ecdafbf8 100644 --- a/app/game-engine/src/turn/unificationHandler.ts +++ b/app/game-engine/src/turn/unificationHandler.ts @@ -3,7 +3,7 @@ import { LogCategory, LogFormat, LogScope, type LogEntryDraft } from '@sammo-ts/ import type { InMemoryTurnWorld, TurnCalendarContext, TurnCalendarHandler } from './inMemoryWorld.js'; import type { PendingUnificationAuctionCancellation } from './types.js'; -import { queueYearbookSnapshot } from './yearbookHandler.js'; +import { queueYearbookSnapshot, updateDynastyStatistics } from './yearbookHandler.js'; const UNIFIER_POINT = 2000; const INVADER_MESSAGE_OPTIONS = [ @@ -67,6 +67,7 @@ export const createUnificationHandler = (options: { if (cities.length === 0 || cities.some((city) => city.nationId !== winner.id)) return; const serverId = resolveServerId(world, options.profileName); + updateDynastyStatistics(world); world.pushLog(buildNationHistoryLog(winner.id, winner.name)); const auctionCancellations = (await options.loadPendingUniqueAuctions?.()) ?? []; diff --git a/app/game-engine/src/turn/worldCommandHandler.ts b/app/game-engine/src/turn/worldCommandHandler.ts index db35d864..53ad3e1a 100644 --- a/app/game-engine/src/turn/worldCommandHandler.ts +++ b/app/game-engine/src/turn/worldCommandHandler.ts @@ -54,6 +54,7 @@ import { } from './scenarioStaticEvents.js'; import { createGeneralFromSelectionPool, + reserveSelectionPool, reselectGeneralFromSelectionPool, SelectPoolError, } from './selectPoolService.js'; @@ -158,6 +159,7 @@ const resolveCommandAcceptedAt = async ( | 'ensureDieOnPrestartStatus' | 'joinCreateGeneral' | 'npcPossessGeneral' + | 'selectPoolReserve' | 'selectPoolCreate' | 'selectPoolReselect' | 'adjustGeneralIcon'; @@ -183,6 +185,21 @@ const resolveCommandAcceptedAt = async ( return event.createdAt; }; +const resolveSelectionCommandAcceptedAt = async ( + db: DatabaseClient, + world: InMemoryTurnWorld, + command: Extract +): Promise => { + const operationalAcceptedAt = await resolveCommandAcceptedAt(db, command); + if (command.acceptedGameTick !== undefined) { + return world.gameTickToDate(command.acceptedGameTick); + } + if (command.acceptedGameAt !== undefined) { + return new Date(command.acceptedGameAt); + } + return world.getGameNow(operationalAcceptedAt); +}; + const resolveOperationalAcceptedAt = async ( db: DatabaseClient, command: Pick @@ -347,8 +364,7 @@ async function handleSelectPoolCreate( if (!worldState) { throw new Error('Selection-pool world state is missing.'); } - const operationalAcceptedAt = await resolveCommandAcceptedAt(db, command); - const acceptedAt = ctx.world.getGameNow(operationalAcceptedAt); + const acceptedAt = await resolveSelectionCommandAcceptedAt(db, ctx.world, command); try { return { type: 'selectPoolCreate', @@ -380,6 +396,45 @@ async function handleSelectPoolCreate( } } +async function handleSelectPoolReserve( + ctx: CommandHandlerContext, + command: Extract +): Promise { + const db = requireCommandDatabase(ctx); + const worldState = await db.worldState.findUnique({ + where: { id: ctx.world.getState().id }, + }); + if (!worldState) { + throw new Error('Selection-pool world state is missing.'); + } + const acceptedAt = await resolveSelectionCommandAcceptedAt(db, ctx.world, command); + try { + return { + type: 'selectPoolReserve', + ok: true, + reservation: await reserveSelectionPool({ + db, + world: ctx.world, + worldState, + userId: command.userId, + seedOwnerIdentity: command.seedOwnerIdentity, + now: acceptedAt, + ...(command.acceptedGameTick === undefined ? {} : { acceptedGameTick: command.acceptedGameTick }), + }), + }; + } catch (error) { + if (error instanceof SelectPoolError) { + return { + type: 'selectPoolReserve', + ok: false, + code: error.code, + reason: error.message, + }; + } + throw error; + } +} + async function handleSelectPoolReselect( ctx: CommandHandlerContext, command: Extract @@ -391,8 +446,7 @@ async function handleSelectPoolReselect( if (!worldState) { throw new Error('Selection-pool world state is missing.'); } - const operationalAcceptedAt = await resolveCommandAcceptedAt(db, command); - const acceptedAt = ctx.world.getGameNow(operationalAcceptedAt); + const acceptedAt = await resolveSelectionCommandAcceptedAt(db, ctx.world, command); try { return { type: 'selectPoolReselect', @@ -420,7 +474,10 @@ async function handleSelectPoolReselect( } interface AuctionFinalizer { - finalize(auctionId: number, db?: GamePrisma.TransactionClient): Promise; + finalize( + command: Extract, + db?: GamePrisma.TransactionClient + ): Promise; } interface AuctionBidder { @@ -1780,7 +1837,7 @@ async function handleAuctionFinalize( reason: '경매 확정기가 준비되지 않았습니다.', }; } - return ctx.auctionFinalizer.finalize(command.auctionId, ctx.commandDb); + return ctx.auctionFinalizer.finalize(command, ctx.commandDb); } async function handleAuctionOpen( @@ -2277,49 +2334,57 @@ async function handleTournamentBettingPayout( }; } + const tournamentName = ['전력전', '통솔전', '일기토', '설전'][command.tournamentType ?? -1] ?? '대회'; + const payoutsByGeneral = new Map(); + for (const payout of command.payouts) { + if ( + !payout || + typeof payout.generalId !== 'number' || + typeof payout.amount !== 'number' || + payout.amount <= 0 + ) { + continue; + } + payoutsByGeneral.set(payout.generalId, (payoutsByGeneral.get(payout.generalId) ?? 0) + payout.amount); + } + let processed = 0; let missing = 0; let totalPayout = 0; - const metaDeltas = new Map(); - - for (const payout of command.payouts) { - if (!payout || typeof payout.generalId !== 'number' || typeof payout.amount !== 'number') { - continue; - } - if (payout.amount <= 0) { - continue; - } - const general = world.getGeneralById(payout.generalId); + for (const [generalId, amount] of payoutsByGeneral) { + const general = world.getGeneralById(generalId); if (!general) { missing += 1; continue; } - world.updateGeneral(payout.generalId, { - gold: general.gold + payout.amount, + const shouldRecordRank = + general.npcState === 0 || + (general.npcState === 1 && + typeof general.meta.betgold === 'number' && + Number.isFinite(general.meta.betgold) && + general.meta.betgold > 0); + const nextMeta = { ...general.meta } as TurnGeneral['meta']; + if (shouldRecordRank) { + const currentBetwin = typeof nextMeta.betwin === 'number' ? Number(nextMeta.betwin) : 0; + const currentBetwingold = typeof nextMeta.betwingold === 'number' ? Number(nextMeta.betwingold) : 0; + nextMeta.betwin = currentBetwin + 1; + nextMeta.betwingold = currentBetwingold + amount; + } + world.updateGeneral(generalId, { + gold: general.gold + amount, + ...(shouldRecordRank ? { meta: nextMeta } : {}), }); processed += 1; - totalPayout += payout.amount; - const currentDelta = metaDeltas.get(payout.generalId) ?? { betwin: 0, betwingold: 0 }; - metaDeltas.set(payout.generalId, { - betwin: currentDelta.betwin + 1, - betwingold: currentDelta.betwingold + payout.amount, + totalPayout += amount; + world.pushLog({ + scope: LogScope.GENERAL, + category: LogCategory.ACTION, + format: LogFormat.EVENT_PLAIN, + generalId, + text: `${tournamentName}의 베팅 당첨 보상으로 ${amount.toLocaleString('ko-KR')}의 금 획득!`, + meta: {}, }); } - - for (const [generalId, delta] of metaDeltas) { - const general = world.getGeneralById(generalId); - if (!general) { - continue; - } - const nextMeta = { ...general.meta } as TurnGeneral['meta']; - const betwinKey = 'betwin'; - const betwingoldKey = 'betwingold'; - const currentBetwin = typeof nextMeta[betwinKey] === 'number' ? Number(nextMeta[betwinKey]) : 0; - const currentBetwingold = typeof nextMeta[betwingoldKey] === 'number' ? Number(nextMeta[betwingoldKey]) : 0; - nextMeta[betwinKey] = currentBetwin + delta.betwin; - nextMeta[betwingoldKey] = currentBetwingold + delta.betwingold; - world.updateGeneral(generalId, { meta: nextMeta }); - } return { type: 'tournamentBettingPayout', ok: true, @@ -2346,7 +2411,147 @@ async function handleTournamentReward( return ctx.tournamentRewardFinalizer.finalize(command, ctx.commandDb); } -// 설문 보상은 API에서 전달된 RNG 결과를 재검증한 뒤 월드에 반영한다. +type VoteSelectionPersistenceResult = 'inserted' | 'existing-match' | 'existing-mismatch' | 'missing'; + +const normalizePersistedVoteSelection = (value: unknown): number[] | null => { + let parsed = value; + if (typeof value === 'string') { + try { + parsed = JSON.parse(value) as unknown; + } catch { + return null; + } + } + if (!Array.isArray(parsed)) return null; + if (parsed.some((entry) => typeof entry !== 'number' || !Number.isInteger(entry))) return null; + const normalized = [...parsed].sort((left, right) => left - right); + return new Set(normalized).size === normalized.length ? normalized : null; +}; + +const voteSelectionsMatch = (stored: unknown, submitted: number[]): boolean => { + const normalized = normalizePersistedVoteSelection(stored); + return ( + normalized !== null && + normalized.length === submitted.length && + normalized.every((value, index) => value === submitted[index]) + ); +}; + +const readExistingVoteSelection = async ( + ctx: CommandHandlerContext, + command: Extract, + selection: number[] +): Promise> => { + if (!ctx.commandDb) return 'missing'; + const rows = await ctx.commandDb.$queryRaw>(GamePrisma.sql` + SELECT selection + FROM vote + WHERE vote_id = ${command.voteId} + AND general_id = ${command.generalId} + FOR UPDATE + `); + if (!rows[0]) return 'missing'; + return voteSelectionsMatch(rows[0].selection, selection) ? 'existing-match' : 'existing-mismatch'; +}; + +const insertVoteSelection = async ( + ctx: CommandHandlerContext, + command: Extract, + general: TurnGeneral, + selection: number[] +): Promise => { + if (!ctx.commandDb) { + return 'missing'; + } + const rows = await ctx.commandDb.$queryRaw>(GamePrisma.sql` + INSERT INTO vote (vote_id, general_id, nation_id, selection) + SELECT poll.id, + ${general.id}, + ${general.nationId}, + CAST(${JSON.stringify(selection)} AS jsonb) + FROM vote_poll poll + WHERE poll.id = ${command.voteId} + ON CONFLICT (vote_id, general_id) DO NOTHING + RETURNING id + `); + if (rows[0]?.id) return 'inserted'; + return readExistingVoteSelection(ctx, command, selection); +}; + +type VotePollValidationRow = { + options: unknown; + multipleOptions: number; + endAt: Date | null; + endTick: bigint | number | string | null; + closedAt: Date | null; +}; + +export const hasVotePollDeadlinePassed = ( + poll: Pick, + acceptedGameAt: Date, + acceptedGameTick: number +): boolean => { + const endTick = + poll.endTick === null ? null : typeof poll.endTick === 'bigint' ? poll.endTick : BigInt(poll.endTick); + return ( + poll.closedAt !== null || + (endTick !== null + ? endTick < BigInt(acceptedGameTick) + : Boolean(poll.endAt && poll.endAt.getTime() < acceptedGameAt.getTime())) + ); +}; + +const parseVoteOptionCount = (value: unknown): number => { + if (Array.isArray(value)) { + return value.filter((entry) => typeof entry === 'string').length; + } + if (typeof value !== 'string') return 0; + try { + const parsed = JSON.parse(value) as unknown; + return Array.isArray(parsed) ? parsed.filter((entry) => typeof entry === 'string').length : 0; + } catch { + return 0; + } +}; + +const validateVoteSelectionInTransaction = async ( + ctx: CommandHandlerContext, + command: Extract, + selection: number[] +): Promise => { + if (!ctx.commandDb) return '설문 응답 트랜잭션이 준비되지 않았습니다.'; + const rows = await ctx.commandDb.$queryRaw(GamePrisma.sql` + SELECT options, + multiple_options AS "multipleOptions", + end_at AS "endAt", + end_tick AS "endTick", + closed_at AS "closedAt" + FROM vote_poll + WHERE id = ${command.voteId} + FOR UPDATE + `); + const poll = rows[0]; + if (!poll) return '설문조사가 없습니다.'; + + const processingNow = ctx.world.getGameNow(new Date()); + const acceptedGameTick = command.acceptedGameTick ?? ctx.world.dateToGameTick(processingNow); + const acceptedGameAt = + command.acceptedGameTick === undefined ? processingNow : ctx.world.gameTickToDate(command.acceptedGameTick); + if (hasVotePollDeadlinePassed(poll, acceptedGameAt, acceptedGameTick)) { + return '설문조사가 종료되었습니다.'; + } + + const optionCount = parseVoteOptionCount(poll.options); + if (selection.some((value) => value < 0 || value >= optionCount)) { + return '선택한 항목이 없습니다.'; + } + if (poll.multipleOptions >= 1 && selection.length > poll.multipleOptions) { + return '선택한 항목이 너무 많습니다.'; + } + return null; +}; + +// 설문 응답과 보상은 같은 ENGINE mutation transaction에서 확정한다. async function handleVoteReward( ctx: CommandHandlerContext, command: Extract @@ -2367,7 +2572,8 @@ async function handleVoteReward( const metaRecord = asRecord(baseMeta); const existingRewards = asRecord(metaRecord.voteRewards); const rewardKey = String(command.voteId); - if (Object.prototype.hasOwnProperty.call(existingRewards, rewardKey)) { + const hasExistingReward = Object.prototype.hasOwnProperty.call(existingRewards, rewardKey); + const buildAlreadyAppliedResult = (): TurnDaemonCommandResult => { const existingValue = existingRewards[rewardKey]; const existingEntry = asRecord(existingValue); const existingItemKey = typeof existingEntry.itemKey === 'string' ? existingEntry.itemKey : null; @@ -2381,6 +2587,71 @@ async function handleVoteReward( itemKey: existingItemKey ?? null, alreadyApplied: true, }; + }; + + const sortedSelection = [...command.selection].sort((a, b) => a - b); + if ( + sortedSelection.length === 0 || + sortedSelection.some((value) => !Number.isInteger(value)) || + new Set(sortedSelection).size !== sortedSelection.length + ) { + return { + type: 'voteReward', + ok: false, + voteId: command.voteId, + generalId: command.generalId, + reason: '선택한 항목이 올바르지 않습니다.', + }; + } + if (!ctx.commandDb) { + return { + type: 'voteReward', + ok: false, + voteId: command.voteId, + generalId: command.generalId, + reason: '설문 응답 트랜잭션이 준비되지 않았습니다.', + }; + } + if (hasExistingReward) { + // The reward marker is the idempotency authority. Do not invent a vote + // row from a later retry when the original selection is unavailable. + return buildAlreadyAppliedResult(); + } + + const selectionError = await validateVoteSelectionInTransaction(ctx, command, sortedSelection); + let votePersistence: VoteSelectionPersistenceResult | null = null; + if (selectionError === '설문조사가 종료되었습니다.') { + // Before vote+reward became one ENGINE transaction, the API could + // persist the vote and fail before the reward command committed. A + // matching locked row is sufficient evidence to repair that partial + // even when the poll has since closed. + votePersistence = await readExistingVoteSelection(ctx, command, sortedSelection); + if (votePersistence === 'existing-mismatch') { + return { + type: 'voteReward', + ok: false, + voteId: command.voteId, + generalId: command.generalId, + reason: '이미 설문조사를 완료하였습니다.', + }; + } + if (votePersistence !== 'existing-match') { + return { + type: 'voteReward', + ok: false, + voteId: command.voteId, + generalId: command.generalId, + reason: selectionError, + }; + } + } else if (selectionError) { + return { + type: 'voteReward', + ok: false, + voteId: command.voteId, + generalId: command.generalId, + reason: selectionError, + }; } const worldState = world.getState(); @@ -2391,9 +2662,20 @@ async function handleVoteReward( const initMonth = readMetaNumber(worldMeta, 'initMonth', 1); const scenarioId = readMetaNumber(worldMeta, 'scenarioId', 0); const hiddenSeed = worldMeta.hiddenSeed ?? worldMeta.seed ?? worldState.id; + const configConst = asRecord(world.getScenarioConfig().const); + const configuredDevelCost = readMetaNumber( + configConst, + 'develCost', + readMetaNumber(configConst, 'develcost', readMetaNumber(configConst, 'develrate', 0)) + ); + const voteReward = + readMetaNumber( + worldMeta, + 'develcost', + readMetaNumber(worldMeta, 'develCost', readMetaNumber(worldMeta, 'develrate', configuredDevelCost)) + ) * 5; const itemRegistry = await getItemRegistry(); - const configConst = asRecord(world.getScenarioConfig().const); const uniqueConfig = resolveUniqueConfig(configConst); const generals = world.listGenerals(); const occupiedUniqueCounts = countOccupiedUniqueItems( @@ -2438,34 +2720,27 @@ async function handleVoteReward( acquireType: '설문조사', }); - const expectedUnique = command.unique?.expected ?? false; - const expectedItemKey = command.unique?.itemKey ?? null; - if (expectedUnique !== Boolean(itemKey)) { + const awardedItemModule = itemKey ? itemRegistry.get(itemKey) : null; + if (itemKey && !awardedItemModule) { return { type: 'voteReward', ok: false, voteId: command.voteId, generalId: command.generalId, - reason: '유니크 판정이 일치하지 않습니다.', + reason: '유니크 아이템을 찾을 수 없습니다.', }; } - if (expectedUnique) { - if (!expectedItemKey || !itemKey || expectedItemKey !== itemKey) { - return { - type: 'voteReward', - ok: false, - voteId: command.voteId, - generalId: command.generalId, - reason: '유니크 판정이 일치하지 않습니다.', - }; - } - } else if (itemKey) { + + if (votePersistence === null) { + votePersistence = await insertVoteSelection(ctx, command, general, sortedSelection); + } + if (votePersistence !== 'inserted' && votePersistence !== 'existing-match') { return { type: 'voteReward', ok: false, voteId: command.voteId, generalId: command.generalId, - reason: '유니크 판정이 일치하지 않습니다.', + reason: '이미 설문조사를 완료하였습니다.', }; } @@ -2488,36 +2763,26 @@ async function handleVoteReward( }; const patch: Partial = { - gold: general.gold + command.goldReward, + gold: general.gold + voteReward, meta: nextMeta, }; - if (itemKey) { - const itemModule = itemRegistry.get(itemKey); - if (!itemModule) { - return { - type: 'voteReward', - ok: false, - voteId: command.voteId, - generalId: command.generalId, - reason: '유니크 아이템을 찾을 수 없습니다.', - }; - } + if (itemKey && awardedItemModule) { const nextGeneral = { ...general, role: { ...general.role, items: { ...general.role.items } }, itemInventory: cloneItemInventory(ensureItemInventory(general)), }; - equipNewItem(nextGeneral, itemModule.slot, itemKey, { - ...(itemModule.initialCharges === undefined ? {} : { charges: itemModule.initialCharges }), + equipNewItem(nextGeneral, awardedItemModule.slot, itemKey, { + ...(awardedItemModule.initialCharges === undefined ? {} : { charges: awardedItemModule.initialCharges }), }); patch.role = nextGeneral.role; patch.itemInventory = nextGeneral.itemInventory; const nationName = world.getNationById(general.nationId)?.name ?? '재야'; const generalName = general.name; - const itemName = itemModule.name; - const itemRawName = itemModule.rawName; + const itemName = awardedItemModule.name; + const itemRawName = awardedItemModule.rawName; const josaYi = JosaUtil.pick(generalName, '이'); const josaUl = JosaUtil.pick(itemRawName, '을'); @@ -2677,6 +2942,8 @@ export const createTurnDaemonCommandHandler = (options: { handleJoinCreateGeneral(ctx, command as Extract), npcPossessGeneral: (command) => handleNpcPossessGeneral(ctx, command as Extract), + selectPoolReserve: (command) => + handleSelectPoolReserve(ctx, command as Extract), selectPoolCreate: (command) => handleSelectPoolCreate(ctx, command as Extract), selectPoolReselect: (command) => diff --git a/app/game-engine/src/turn/worldLoader.ts b/app/game-engine/src/turn/worldLoader.ts index ad73c36a..2a6caabc 100644 --- a/app/game-engine/src/turn/worldLoader.ts +++ b/app/game-engine/src/turn/worldLoader.ts @@ -17,11 +17,13 @@ import type { GeneralLastTurn, Nation, ScenarioConfig, + ScenarioGeneralPoolCandidate, ScenarioMeta, Troop, TriggerValue, } from '@sammo-ts/logic'; import { normalizeScenarioEffect } from '@sammo-ts/logic'; +import { parseScenarioGeneralPoolCandidate } from '@sammo-ts/logic'; import { projectItemSlots, readItemInventoryFromMeta } from '@sammo-ts/logic/items/index.js'; import { z } from 'zod'; import { GameClock, asRecord, isRecord, type GameClockMode } from '@sammo-ts/common'; @@ -30,7 +32,7 @@ import type { MapLoaderOptions } from '../scenario/mapLoader.js'; import { loadMapDefinitionByName } from '../scenario/mapLoader.js'; import type { UnitSetLoaderOptions } from '../scenario/unitSetLoader.js'; import { loadUnitSetDefinitionByName } from '../scenario/unitSetLoader.js'; -import type { TurnDiplomacy, TurnEvent, TurnGeneral, TurnWorldLoadResult } from './types.js'; +import type { TurnDiplomacy, TurnEvent, TurnGeneral, TurnGeneralPoolEntry, TurnWorldLoadResult } from './types.js'; import { readDiplomacyMeta } from '@sammo-ts/logic'; import { applyPersistedRankRowsToMeta } from './rankData.js'; @@ -360,6 +362,27 @@ const mapEventRow = (row: { meta: asRecord(row.meta), }); +const mapGeneralPoolRow = (row: { + id: number; + uniqueName: string; + ownerUserId: string | null; + generalId: number | null; + reservedUntil: Date | null; + reservedUntilTick: bigint | null; + info: JsonValue; +}): TurnGeneralPoolEntry => ({ + id: row.id, + uniqueName: row.uniqueName, + ownerUserId: row.ownerUserId, + generalId: row.generalId, + reservedUntil: row.reservedUntil, + reservedUntilTick: + row.reservedUntilTick === null + ? null + : toSafeTick(row.reservedUntilTick, `select_pool.reserved_until_tick(${row.id})`), + candidate: parseScenarioGeneralPoolCandidate(row) satisfies ScenarioGeneralPoolCandidate, +}); + const mapTroopRow = (row: TurnEngineTroopRow): Troop => ({ id: row.troopLeaderId, nationId: row.nationId, @@ -386,6 +409,7 @@ export const loadTurnWorldFromDatabase = async (options: TurnWorldLoaderOptions) diplomacyRows, troopRows, eventRows, + generalPoolRows, ] = await Promise.all([ prisma.general.findMany(), prisma.rankData.findMany(), @@ -398,6 +422,7 @@ export const loadTurnWorldFromDatabase = async (options: TurnWorldLoaderOptions) prisma.event.findMany({ orderBy: [{ priority: 'desc' }, { id: 'asc' }], }), + prisma.selectPoolEntry.findMany({ orderBy: { id: 'asc' } }), ]); const meta = asRecord(worldState.meta); @@ -465,6 +490,7 @@ export const loadTurnWorldFromDatabase = async (options: TurnWorldLoaderOptions) const worldConfig = asRecord(worldState.config); const scenarioConfig = mapScenarioConfig(worldState.config); + const targetGeneralPool = scenarioConfig.map.targetGeneralPool; const mapName = scenarioConfig.environment?.mapName ?? 'che'; const map = await loadMapDefinitionByName(mapName, options.mapOptions); const unitSetName = scenarioConfig.environment?.unitSet ?? 'che'; @@ -508,6 +534,9 @@ export const loadTurnWorldFromDatabase = async (options: TurnWorldLoaderOptions) diplomacy, events, initialEvents, + ...(typeof targetGeneralPool === 'string' + ? { generalPoolEntries: generalPoolRows.map(mapGeneralPoolRow) } + : {}), }, }; } finally { diff --git a/app/game-engine/src/turn/yearbookHandler.ts b/app/game-engine/src/turn/yearbookHandler.ts index 5959f4ae..c2ba1748 100644 --- a/app/game-engine/src/turn/yearbookHandler.ts +++ b/app/game-engine/src/turn/yearbookHandler.ts @@ -58,6 +58,9 @@ const resolveStartYear = (meta: Record): number => { return 0; }; +const readStoredSnapshotNumber = (value: unknown): number | null => + typeof value === 'number' && Number.isFinite(value) ? value : null; + const buildMapSnapshot = (world: InMemoryTurnWorld, year: number, month: number): YearbookMap => { const state = world.getState(); const cityList: MapCityCompact[] = world.listCities().map((city) => { @@ -134,40 +137,57 @@ const buildNationSnapshot = (world: InMemoryTurnWorld): YearbookNation[] => { generalStatsByNation.set(general.nationId, entry); } - return nations.map((nation) => { + const projected = nations.map((nation) => { const generalStats = generalStatsByNation.get(nation.id) ?? { goldRice: 0, statPower: 0, expDed: 0, generalCount: 0, }; - const cityStats = cityStatsByNation.get(nation.id) ?? { popSum: 0, valueSum: 0, maxSum: 0 }; - const resource = Math.round(((nation.gold ?? 0) + (nation.rice ?? 0) + generalStats.goldRice) / 100); - const tech = asNumber(asRecord(nation.meta).tech, 0); - const cityPower = - nation.level > 0 && cityStats.maxSum > 0 - ? Math.round((cityStats.popSum * cityStats.valueSum) / cityStats.maxSum / 100) - : 0; - const expDed = Math.round(generalStats.expDed / 100); - const power = Math.round((resource + tech + cityPower + generalStats.statPower + expDed) / 10); + const nationMeta = asRecord(nation.meta); + const storedPower = readStoredSnapshotNumber(nation.power); + let power = 1; + if (nation.id !== 0) { + if (storedPower !== null) { + power = storedPower; + } else { + // Old or malformed in-memory snapshots can lack the monthly + // nation projection. Only that absence uses the former derived + // value; current worlds archive the stored Ref-compatible value. + const cityStats = cityStatsByNation.get(nation.id) ?? { popSum: 0, valueSum: 0, maxSum: 0 }; + const resource = Math.round((nation.gold + nation.rice + generalStats.goldRice) / 100); + const tech = asNumber(nationMeta.tech, 0); + const cityPower = + nation.level > 0 && cityStats.maxSum > 0 + ? Math.round((cityStats.popSum * cityStats.valueSum) / cityStats.maxSum / 100) + : 0; + const expDed = Math.round(generalStats.expDed / 100); + power = Math.round((resource + tech + cityPower + generalStats.statPower + expDed) / 10); + } + } + const storedGeneralCount = readStoredSnapshotNumber(nationMeta.gennum); + const generalCount = nation.id === 0 ? 1 : (storedGeneralCount ?? generalStats.generalCount); return { id: nation.id, - name: nation.name, - color: nation.color, - level: nation.level, + name: nation.id === 0 ? '재야' : nation.name, + color: nation.id === 0 ? '#000000' : nation.color, + level: nation.id === 0 ? 0 : nation.level, power, - generalCount: generalStats.generalCount, + generalCount, cities: cityNamesByNation.get(nation.id) ?? [], }; }); + // Ref's getCurrentHistory() replaces nation 0 with its canonical static + // projection and then applies a stable descending-power sort. + return projected.sort((left, right) => right.power - left.power); }; const increment = (target: Record, key: string): void => { target[key] = (target[key] ?? 0) + 1; }; -const updateDynastyStatistics = (world: InMemoryTurnWorld): void => { +export const updateDynastyStatistics = (world: InMemoryTurnWorld): void => { const state = world.getState(); const previous = asRecord(state.meta.dynastyStatistics); const activeNations = world @@ -247,8 +267,22 @@ export const createYearbookHandler = (options: { beforeMonthChanged: (context) => { const world = options.getWorld(); if (!world) return; - updateDynastyStatistics(world); queueYearbookSnapshot(world, options.profileName, context.previousYear, context.previousMonth); }, }, }); + +export const createDynastyStatisticsHandler = (options: { + getWorld: () => InMemoryTurnWorld | null; +}): { handler: TurnCalendarHandler } => ({ + handler: { + // Ref calls checkStatistic() after turnDate() only when the newly + // entered month is January. Unification takes one additional sample. + onMonthChanged: (context) => { + if (context.currentMonth !== 1) return; + const world = options.getWorld(); + if (!world) return; + updateDynastyStatistics(world); + }, + }, +}); diff --git a/app/game-engine/test/auctionBidCompatibility.test.ts b/app/game-engine/test/auctionBidCompatibility.test.ts new file mode 100644 index 00000000..502cd818 --- /dev/null +++ b/app/game-engine/test/auctionBidCompatibility.test.ts @@ -0,0 +1,220 @@ +import { describe, expect, it, vi } from 'vitest'; + +vi.mock('@sammo-ts/infra', async (importOriginal) => { + const actual = (await importOriginal()) as Record; + return { + ...actual, + createGamePostgresConnector: vi.fn(() => ({ + connect: vi.fn(async () => undefined), + disconnect: vi.fn(async () => undefined), + prisma: {}, + })), + }; +}); + +import { + buildAuctionOutbidRefundMessage, + createAuctionBidder, + hasAuctionBidClosePassed, + hasAuctionClosePassed, + hasEnoughResourceForAuctionBid, + MIN_AUCTION_REMAINING_RESOURCE, +} from '../src/auction/bidder.js'; +import { normalizeTurnDaemonCommand } from '../src/turn/commandRegistry.js'; +import type { TurnGeneral } from '../src/turn/types.js'; + +const bidder: TurnGeneral = { + id: 7, + name: '관우', + nationId: 1, + cityId: 1, + troopId: 0, + stats: { leadership: 80, strength: 90, intelligence: 70 }, + turnTime: new Date('0190-01-01T00:00:00.000Z'), + recentWarTime: null, + role: { + items: { horse: null, weapon: null, book: null, item: null }, + personality: null, + specialDomestic: null, + specialWar: null, + }, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + meta: { killturn: 24 }, + penalty: {}, + officerLevel: 1, + experience: 0, + dedication: 0, + injury: 0, + gold: 2_000, + rice: 2_000, + crew: 0, + crewTypeId: 0, + train: 0, + atmos: 0, + age: 30, + npcState: 0, + picture: 'generals/7.png', +}; + +const runDelayedResourceBid = async (finishImmediately: boolean) => { + const acceptedAt = new Date('0190-02-01T00:00:00.000Z'); + const processingAt = new Date(acceptedAt.getTime() + 30 * 60_000); + const general = { + ...bidder, + role: { ...bidder.role, items: { ...bidder.role.items } }, + meta: { ...bidder.meta }, + }; + const world = { + getGameNow: () => processingAt, + gameTickToDate: (tick: number) => new Date(acceptedAt.getTime() + (tick - 100) * 1_000), + dateToGameTick: (date: Date) => 100 + Math.floor((date.getTime() - acceptedAt.getTime()) / 1_000), + getState: () => ({ tickSeconds: 600 }), + getGeneralById: (id: number) => (id === general.id ? general : null), + updateGeneral: (_id: number, patch: Partial) => Object.assign(general, patch), + }; + const executeRaw = vi.fn(async (_query: unknown) => 1); + const commandDb = { + $queryRaw: vi.fn(async (query: { strings: readonly string[] }) => { + const text = query.strings.join(' '); + if (text.includes('FROM auction') && !text.includes('auction_bid')) { + return [ + { + id: 31, + type: 'BUY_RICE', + targetCode: '100', + hostGeneralId: 88, + detail: { + title: '쌀 100 경매', + amount: 100, + isReverse: false, + startBidAmount: 100, + finishBidAmount: finishImmediately ? 500 : null, + }, + status: 'OPEN', + closeAt: new Date(acceptedAt.getTime() + 60_000), + closeTick: 160n, + latestEventId: 'previous-event', + }, + ]; + } + return []; + }), + $executeRaw: executeRaw, + $executeRawUnsafe: vi.fn(async () => 1), + }; + const auctionBidder = await createAuctionBidder({ + databaseUrl: 'postgresql://unused', + world: world as unknown as Parameters[0]['world'], + }); + const amount = finishImmediately ? 500 : 200; + const result = await auctionBidder.bid( + { + type: 'auctionBid', + auctionId: 31, + generalId: general.id, + amount, + acceptedGameTick: 100, + }, + commandDb as any + ); + await auctionBidder.close(); + + const statements = executeRaw.mock.calls.map( + ([query]) => query as { strings: readonly string[]; values: unknown[] } + ); + const insert = statements.find((query) => query.strings.join(' ').includes('INSERT INTO auction_bid')); + const update = statements.find((query) => query.strings.join(' ').includes('UPDATE auction')); + return { acceptedAt, processingAt, result, insert, update }; +}; + +describe('resource auction Ref compatibility', () => { + it('keeps the auction open through its exact close tick', () => { + const closeAt = new Date('0190-02-01T00:00:00.000Z'); + const auction = { closeAt, closeTick: 72_000_000n }; + + expect(hasAuctionClosePassed(auction, closeAt, 72_000_000)).toBe(false); + expect(hasAuctionClosePassed(auction, new Date(closeAt.getTime() + 1), 72_000_001)).toBe(true); + expect(hasAuctionClosePassed({ closeAt, closeTick: null }, closeAt, null)).toBe(false); + expect(hasAuctionClosePassed({ closeAt, closeTick: null }, new Date(closeAt.getTime() + 1), null)).toBe(true); + }); + + it('uses the durable API acceptance tick when queue processing crosses the close boundary', () => { + const closeAt = new Date('0190-02-01T00:00:00.000Z'); + const auction = { closeAt, closeTick: 72_000_000n }; + const world = { + dateToGameTick: () => 72_000_001, + gameTickToDate: (tick: number) => (tick === 72_000_000 ? closeAt : new Date(closeAt.getTime() + 1)), + }; + const processingNow = new Date(closeAt.getTime() + 1); + + expect(hasAuctionBidClosePassed(auction, world, processingNow, 72_000_000)).toBe(false); + expect(hasAuctionBidClosePassed(auction, world, processingNow)).toBe(true); + expect( + normalizeTurnDaemonCommand({ + requestId: 'auction-bid-accepted-tick', + sentAt: '2026-08-23T00:00:00.000Z', + command: { + type: 'auctionBid', + auctionId: 31, + generalId: 7, + amount: 500, + acceptedGameTick: 72_000_000, + }, + }) + ).toMatchObject({ acceptedGameTick: 72_000_000 }); + }); + + it('uses the accepted logical time for delayed extension and persisted bid timestamps', async () => { + const { acceptedAt, processingAt, result, insert, update } = await runDelayedResourceBid(false); + + expect(result).toMatchObject({ type: 'auctionBid', ok: true }); + expect(new Date(String(result && 'closeAt' in result ? result.closeAt : '')).getTime()).toBe( + acceptedAt.getTime() + 100_000 + ); + expect(insert?.values.filter((value): value is Date => value instanceof Date)).toEqual([acceptedAt]); + expect(update?.values.filter((value): value is Date => value instanceof Date)).toEqual([ + new Date(acceptedAt.getTime() + 100_000), + acceptedAt, + acceptedAt, + ]); + expect(update?.values).not.toContain(processingAt); + }); + + it('uses the accepted logical time for a delayed finish-price one-turn close', async () => { + const { acceptedAt, result, update } = await runDelayedResourceBid(true); + + expect(result).toMatchObject({ type: 'auctionBid', ok: true }); + expect(new Date(String(result && 'closeAt' in result ? result.closeAt : '')).getTime()).toBe( + acceptedAt.getTime() + 10 * 60_000 + ); + expect(update?.values[0]).toEqual(new Date(acceptedAt.getTime() + 10 * 60_000)); + }); + + it('requires the bidder to retain the default 1000 resource', () => { + expect(MIN_AUCTION_REMAINING_RESOURCE).toBe(1_000); + expect(hasEnoughResourceForAuctionBid(1_500, 500)).toBe(true); + expect(hasEnoughResourceForAuctionBid(1_499, 500)).toBe(false); + expect(hasEnoughResourceForAuctionBid(2_000, 0)).toBe(false); + }); + + it('builds the receiver-only system message used by Ref refundBid', () => { + const time = new Date('0190-02-01T00:00:00.000Z'); + const message = buildAuctionOutbidRefundMessage({ + auctionId: 31, + title: '쌀 100 경매', + bidder, + nation: { name: '촉', color: '#ff0000' }, + time, + }); + + expect(message).toMatchObject({ + msgType: 'private', + src: { generalId: 0, nationName: 'System' }, + dest: { generalId: 7, generalName: '관우', nationId: 1, nationName: '촉' }, + text: '31번 쌀 100 경매에 상회입찰자가 나타났습니다.', + sendDestOnly: true, + }); + expect(message.time).not.toBe(time); + expect(message.time).toEqual(time); + }); +}); diff --git a/app/game-engine/test/auctionFinalizerCompatibility.test.ts b/app/game-engine/test/auctionFinalizerCompatibility.test.ts new file mode 100644 index 00000000..71430579 --- /dev/null +++ b/app/game-engine/test/auctionFinalizerCompatibility.test.ts @@ -0,0 +1,446 @@ +import { describe, expect, it, vi } from 'vitest'; +import { LogCategory, LogFormat, LogScope } from '@sammo-ts/logic'; + +vi.mock('@sammo-ts/infra', async (importOriginal) => { + const actual = (await importOriginal()) as Record; + return { + ...actual, + createGamePostgresConnector: vi.fn(() => ({ + connect: vi.fn(async () => undefined), + disconnect: vi.fn(async () => undefined), + prisma: {}, + })), + }; +}); + +import { + buildAuctionCancellationMessage, + buildUniqueAuctionAwardLogs, + buildUniqueAuctionInheritanceLogData, + createAuctionFinalizer, + hasAuctionFinalizeDeadlineArrived, + isAuctionFinalizeGenerationCurrent, + isUniqueAuctionSupplyExhausted, + resolveAuctionResourceAmount, + resolveUniqueSupplyRetryCloseAt, +} from '../src/auction/finalizer.js'; +import { buildInitialUniqueAuctionBidMeta, openAuction } from '../src/auction/opener.js'; +import type { TurnGeneral } from '../src/turn/types.js'; + +describe('unique auction inheritance log compatibility', () => { + it('keeps the authenticated UUID owner instead of coercing it to a legacy number', () => { + const userId = '4c2f2f6d-8a37-4f22-a4f9-1a6f5e4c22ec'; + + expect( + buildUniqueAuctionInheritanceLogData({ + userId, + year: 193, + month: 7, + itemName: '논어(+7)', + amount: 6_000, + }) + ).toEqual({ + userId, + year: 193, + month: 7, + logType: 'inheritPoint', + text: '유니크 논어(+7) 경매로 6000 포인트 사용', + }); + }); + + it('tracks the complete opening bid so rollback can restore rank and point escrow', () => { + expect(buildInitialUniqueAuctionBidMeta('익명의 수배자', 6_000)).toEqual({ + obfuscatedName: '익명의 수배자', + tryExtendCloseDate: false, + inheritSpentTrackedAmount: 6_000, + }); + }); + + it('deducts and mirrors the initial unique bid in the same engine transaction', async () => { + const general = { + id: 7, + name: '관우', + nationId: 1, + role: { items: { horse: null, weapon: null, book: null, item: null } }, + inheritancePoints: { previous: 7_000 }, + meta: { killturn: 24, inherit_spent_dyn: 0 }, + } as unknown as TurnGeneral; + const captured: { + auction: { bids: { create: { meta: unknown } } } | null; + pointUpdate: { data: unknown } | null; + } = { auction: null, pointUpdate: null }; + const executedSql: string[] = []; + const db = { + auction: { + findFirst: async () => null, + create: async ({ data }: { data: Record }) => { + captured.auction = data as unknown as NonNullable; + return { id: 31 }; + }, + }, + inheritancePoint: { + update: async (args: Record) => { + captured.pointUpdate = args as unknown as NonNullable; + return args; + }, + }, + $queryRaw: async (query: { strings: readonly string[] }) => { + const text = query.strings.join(' '); + if (text.includes('user_id as "userId"')) return [{ userId: 'owner-uuid' }]; + if (text.includes('FROM inheritance_point')) return [{ value: 7_000 }]; + return []; + }, + $executeRaw: async (query: { strings: readonly string[] }) => { + executedSql.push(query.strings.join(' ')); + return 1; + }, + }; + const world = { + getGeneralById: (id: number) => (id === general.id ? general : null), + getScenarioConfig: () => ({ + const: { + inheritItemUniqueMinPoint: 5_000, + allItems: { weapon: { che_무기_12_칠성검: 1 } }, + }, + }), + listGenerals: () => [general], + getState: () => ({ + id: 1, + currentYear: 193, + currentMonth: 7, + tickSeconds: 600, + meta: { initYear: 190, initMonth: 1, hiddenSeed: 'seed' }, + }), + getGameNow: () => new Date('0193-07-01T00:00:00.000Z'), + dateToGameTick: (date: Date) => Math.floor(date.getTime() / 1_000), + updateGeneral: (_id: number, patch: Partial) => Object.assign(general, patch), + pushLog: () => {}, + }; + + const result = await openAuction( + { + type: 'auctionOpen', + auctionType: 'UNIQUE_ITEM', + generalId: general.id, + amount: 6_000, + itemKey: 'che_무기_12_칠성검', + }, + world as unknown as Parameters[1], + db as unknown as NonNullable[2]> + ); + + expect(result).toMatchObject({ type: 'auctionOpen', ok: true, auctionId: 31 }); + expect(captured.auction?.bids.create.meta).toEqual( + expect.objectContaining({ inheritSpentTrackedAmount: 6_000 }) + ); + expect(captured.pointUpdate?.data).toEqual({ value: 1_000 }); + expect(executedSql.some((text) => text.includes('INSERT INTO rank_data'))).toBe(true); + expect(general.inheritancePoints?.previous).toBe(1_000); + expect(general.meta.inherit_spent_dyn).toBe(6_000); + }); + + it('recovers a resource amount from the legacy target field when detail is malformed', () => { + expect(resolveAuctionResourceAmount(undefined, '1200')).toBe(1_200); + expect(resolveAuctionResourceAmount(900, '1200')).toBe(900); + expect(resolveAuctionResourceAmount(undefined, 'invalid')).toBeNull(); + }); + + it('uses the Ref-inclusive close boundary and the logical tick as the deadline generation', () => { + const closeAt = new Date('0193-07-01T00:00:00.000Z'); + const auction = { closeAt, closeTick: 72_000_000n }; + + expect(hasAuctionFinalizeDeadlineArrived(auction, closeAt, 71_999_999)).toBe(false); + expect(hasAuctionFinalizeDeadlineArrived(auction, closeAt, 72_000_000)).toBe(true); + expect( + isAuctionFinalizeGenerationCurrent(auction, { + expectedCloseAt: new Date(closeAt.getTime() + 60_000).toISOString(), + expectedCloseTick: 72_000_000, + }) + ).toBe(true); + expect(isAuctionFinalizeGenerationCurrent(auction, { expectedCloseTick: 72_000_001 })).toBe(false); + }); + + it('locks a due OPEN row, owns OPEN to FINALIZING, and settles through the same transaction client', async () => { + const closeAt = new Date('0193-07-01T00:00:00.000Z'); + const queryTexts: string[] = []; + const executeTexts: string[] = []; + const commandDb = { + $queryRaw: vi.fn(async (query: { strings: readonly string[] }) => { + const text = query.strings.join(' '); + queryTexts.push(text); + if (text.includes('FROM auction_bid')) return []; + return [ + { + id: 31, + type: 'BUY_RICE', + targetCode: '100', + hostGeneralId: 0, + hostName: '(상인)', + detail: { amount: 100 }, + status: 'OPEN', + closeAt, + closeTick: 72_000_000n, + }, + ]; + }), + $executeRaw: vi.fn(async (query: { strings: readonly string[] }) => { + executeTexts.push(query.strings.join(' ')); + return 1; + }), + }; + const world = { + getGameNow: () => closeAt, + dateToGameTick: () => 72_000_000, + pushLog: vi.fn(), + }; + const finalizer = await createAuctionFinalizer({ + databaseUrl: 'postgresql://unused', + world: world as unknown as Parameters[0]['world'], + }); + + await expect( + finalizer.finalize( + { + type: 'auctionFinalize', + auctionId: 31, + expectedCloseAt: closeAt.toISOString(), + expectedCloseTick: 72_000_000, + }, + commandDb as unknown as NonNullable[1]> + ) + ).resolves.toEqual({ type: 'auctionFinalize', ok: true, auctionId: 31 }); + expect(queryTexts[0]).toContain('FOR UPDATE'); + expect(executeTexts[0]).toContain("SET status = 'FINALIZING'"); + expect(executeTexts[1]).toContain('SET status ='); + expect(executeTexts[1]).toContain('finished_at'); + + await finalizer.close(); + }); + + it('leaves OPEN unchanged when the event generation is stale or the locked deadline is not due', async () => { + const closeAt = new Date('0193-07-01T00:00:00.000Z'); + const executeRaw = vi.fn(async () => 1); + const commandDb = { + $queryRaw: vi.fn(async () => [ + { + id: 31, + type: 'BUY_RICE', + targetCode: '100', + hostGeneralId: 0, + hostName: '(상인)', + detail: { amount: 100 }, + status: 'OPEN', + closeAt, + closeTick: 72_000_000n, + }, + ]), + $executeRaw: executeRaw, + }; + let nowTick = 71_999_999; + const world = { + getGameNow: () => closeAt, + dateToGameTick: () => nowTick, + }; + const finalizer = await createAuctionFinalizer({ + databaseUrl: 'postgresql://unused', + world: world as unknown as Parameters[0]['world'], + }); + const db = commandDb as unknown as NonNullable[1]>; + + await expect( + finalizer.finalize({ type: 'auctionFinalize', auctionId: 31, expectedCloseTick: 72_000_000 }, db) + ).resolves.toMatchObject({ ok: false, reason: '경매 마감 시각이 아직 지나지 않았습니다.' }); + nowTick = 72_000_000; + await expect( + finalizer.finalize({ type: 'auctionFinalize', auctionId: 31, expectedCloseTick: 71_999_999 }, db) + ).resolves.toMatchObject({ ok: false, reason: '경매 마감 세대가 변경되었습니다.' }); + expect(executeRaw).not.toHaveBeenCalled(); + + await finalizer.close(); + }); + + it('fails before settlement when the locked OPEN transition is not applied', async () => { + const closeAt = new Date('0193-07-01T00:00:00.000Z'); + const queryRaw = vi.fn(async (query: { strings: readonly string[] }) => { + if (query.strings.join(' ').includes('FROM auction_bid')) { + throw new Error('settlement query must not run'); + } + return [ + { + id: 31, + type: 'BUY_RICE', + targetCode: '100', + hostGeneralId: 0, + hostName: '(상인)', + detail: { amount: 100 }, + status: 'OPEN', + closeAt, + closeTick: null, + }, + ]; + }); + const commandDb = { $queryRaw: queryRaw, $executeRaw: vi.fn(async () => 0) }; + const world = { getGameNow: () => closeAt, dateToGameTick: () => 72_000_000 }; + const finalizer = await createAuctionFinalizer({ + databaseUrl: 'postgresql://unused', + world: world as unknown as Parameters[0]['world'], + }); + + await expect( + finalizer.finalize( + { type: 'auctionFinalize', auctionId: 31, expectedCloseAt: closeAt.toISOString() }, + commandDb as unknown as NonNullable[1]> + ) + ).rejects.toThrow('경매 확정 상태 전이에 실패했습니다: 31'); + expect(queryRaw).toHaveBeenCalledTimes(1); + + await finalizer.close(); + }); + + it('keeps both escrows and FINALIZING when a resource amount cannot be recovered', async () => { + const bidder = { + id: 7, + name: '관우', + nationId: 1, + gold: 1_000, + rice: 1_000, + } as TurnGeneral; + const host = { + id: 8, + name: '장비', + nationId: 1, + gold: 1_000, + rice: 1_000, + } as TurnGeneral; + const updateGeneral = vi.fn(); + const queueMessage = vi.fn(); + const world = { + getGameNow: () => new Date('0193-07-01T00:00:00.000Z'), + getGeneralById: (id: number) => (id === bidder.id ? bidder : id === host.id ? host : null), + getNationById: () => ({ name: '촉', color: '#ff0000' }), + updateGeneral, + queueMessage, + }; + const executeRaw = vi.fn(async () => 1); + const commandDb = { + $queryRaw: vi.fn(async (query: { strings: readonly string[] }) => + query.strings.join(' ').includes('FROM auction_bid') + ? [{ id: 41, generalId: bidder.id, amount: 500, meta: {} }] + : [ + { + id: 31, + type: 'BUY_RICE', + targetCode: 'invalid', + hostGeneralId: host.id, + hostName: host.name, + detail: { title: '손상된 경매', isReverse: false }, + status: 'FINALIZING', + closeAt: new Date('0193-07-01T00:00:00.000Z'), + closeTick: null, + }, + ] + ), + $executeRaw: executeRaw, + }; + const finalizer = await createAuctionFinalizer({ + databaseUrl: 'postgresql://unused', + world: world as unknown as Parameters[0]['world'], + }); + + await expect( + finalizer.finalize( + { type: 'auctionFinalize', auctionId: 31 }, + commandDb as unknown as NonNullable[1]> + ) + ).resolves.toMatchObject({ + type: 'auctionFinalize', + ok: false, + auctionId: 31, + reason: '경매 거래량 정보가 없습니다.', + }); + expect(executeRaw).not.toHaveBeenCalled(); + expect(updateGeneral).not.toHaveBeenCalled(); + expect(queueMessage).not.toHaveBeenCalled(); + expect(bidder.gold).toBe(1_000); + expect(host.rice).toBe(1_000); + + await finalizer.close(); + }); + + it('rejects a final award once the configured unique supply is occupied', () => { + expect(isUniqueAuctionSupplyExhausted(2, 1)).toBe(false); + expect(isUniqueAuctionSupplyExhausted(2, 2)).toBe(true); + expect(resolveUniqueSupplyRetryCloseAt(new Date('0193-07-01T00:00:00.000Z'), 10).toISOString()).toBe( + '0193-07-01T00:10:00.000Z' + ); + }); + + it('builds all four Ref award logs with the original formats and labels', () => { + const bidder = { + id: 7, + name: '관우', + nationId: 1, + } as TurnGeneral; + + expect( + buildUniqueAuctionAwardLogs({ + bidder, + nationName: '촉', + itemName: '칠성검(+12)', + itemRawName: '칠성검', + }) + ).toEqual([ + expect.objectContaining({ + scope: LogScope.GENERAL, + category: LogCategory.ACTION, + format: LogFormat.MONTH, + generalId: 7, + text: '칠성검(+12)을 습득했습니다!', + }), + expect.objectContaining({ + scope: LogScope.GENERAL, + category: LogCategory.HISTORY, + format: LogFormat.YEAR_MONTH, + generalId: 7, + text: '칠성검(+12)을 습득', + }), + expect.objectContaining({ + scope: LogScope.SYSTEM, + category: LogCategory.SUMMARY, + format: LogFormat.MONTH, + text: '관우가 칠성검(+12)을 습득했습니다!', + }), + expect.objectContaining({ + scope: LogScope.SYSTEM, + category: LogCategory.HISTORY, + format: LogFormat.YEAR_MONTH, + text: '【보물수배】관우가 칠성검(+12)을 습득했습니다!', + }), + ]); + }); + + it('builds the Ref cancellation refund message for the affected bidder only', () => { + const bidder = { + id: 7, + name: '관우', + nationId: 1, + picture: 'generals/7.png', + } as TurnGeneral; + const time = new Date('0193-07-01T00:00:00.000Z'); + + expect( + buildAuctionCancellationMessage({ + auctionId: 31, + title: '논어 경매', + bidder, + nation: { name: '촉', color: '#ff0000' }, + time, + }) + ).toMatchObject({ + msgType: 'private', + dest: { generalId: 7, nationId: 1, nationName: '촉' }, + text: '31번 논어 경매가 취소되었습니다.', + sendDestOnly: true, + }); + }); +}); diff --git a/app/game-engine/test/centennialAllStarPool.test.ts b/app/game-engine/test/centennialAllStarPool.test.ts new file mode 100644 index 00000000..69cd48b7 --- /dev/null +++ b/app/game-engine/test/centennialAllStarPool.test.ts @@ -0,0 +1,115 @@ +import { describe, expect, it } from 'vitest'; +import { LiteHashDRBG, RandUtil } from '@sammo-ts/common'; + +import { loadGeneralPoolEntries } from '../src/scenario/generalPoolLoader.js'; +import { + buildSelectPoolSeed, + calculateSelectionCandidateWeight, + claimWeightedSelectionCandidates, + type SelectPoolCandidateInfo, +} from '../src/turn/selectPoolService.js'; + +const toCandidate = (info: Record): SelectPoolCandidateInfo => { + const dex = info.dex; + if ( + typeof info.uniqueName !== 'string' || + typeof info.generalName !== 'string' || + typeof info.leadership !== 'number' || + typeof info.strength !== 'number' || + typeof info.intel !== 'number' || + (info.specialDomestic !== null && typeof info.specialDomestic !== 'string') || + !Array.isArray(dex) || + dex.length !== 5 || + dex.some((value) => typeof value !== 'number') || + (info.imgsvr !== 0 && info.imgsvr !== 1) || + typeof info.picture !== 'string' + ) { + throw new Error('invalid SPoolUnderU100 test entry'); + } + return { + uniqueName: info.uniqueName, + generalName: info.generalName, + leadership: info.leadership, + strength: info.strength, + intel: info.intel, + specialDomestic: info.specialDomestic, + dex: dex as [number, number, number, number, number], + imgsvr: info.imgsvr, + picture: info.picture, + }; +}; + +describe('SPoolUnderU100 deterministic selection', () => { + it('uses the Ref user/NPC weight contract including the zero-dex floor', () => { + const candidate = toCandidate({ + uniqueName: 'A1000001', + generalName: 'weight fixture', + leadership: 70, + strength: 60, + intel: 60, + specialDomestic: null, + dex: [0, 0, 0, 0, 0], + imgsvr: 0, + picture: '0', + }); + + expect(calculateSelectionCandidateWeight('SPoolUnderU100', candidate, false)).toBe(100_000); + expect(calculateSelectionCandidateWeight('SPoolUnderU100', candidate, true)).toBe(150_000); + }); + + it('keeps the fixed-seed 14-candidate draw stable', async () => { + const entries = await loadGeneralPoolEntries('SPoolUnderU100'); + const rows = entries.map((entry, index) => ({ id: index + 1, ...entry })); + const rng = new RandUtil(new LiteHashDRBG(buildSelectPoolSeed('s100-vector-hidden', 42, 72_000_000))); + const draws: string[] = []; + const selected = await claimWeightedSelectionCandidates({ + weighted: rows.map((row) => [ + row, + calculateSelectionCandidateWeight('SPoolUnderU100', toCandidate(row.info), true), + ]), + rng, + count: 14, + claim: async () => true, + onDraw: (candidate) => draws.push(candidate.uniqueName), + }); + + expect(selected.map((candidate) => candidate.uniqueName)).toEqual([ + 'A1004478', + 'A1000583', + 'A1002480', + 'A1001485', + 'A1002714', + 'A1004544', + 'A1000918', + 'A1004549', + 'A1003871', + 'A1002678', + 'A1000531', + 'A1003379', + 'A1004275', + 'A1003449', + ]); + expect(draws).toEqual(selected.map((candidate) => candidate.uniqueName)); + }); + + it('keeps duplicate draws in the RNG stream while claiming each row once', async () => { + const candidates = [ + { id: 1, uniqueName: 'first' }, + { id: 2, uniqueName: 'second' }, + ]; + const draws: string[] = []; + const selected = await claimWeightedSelectionCandidates({ + weighted: [ + [candidates[0]!, 3], + [candidates[1]!, 1], + ], + rng: new RandUtil(new LiteHashDRBG('s100-duplicate-retry-vector')), + count: 2, + claim: async () => true, + onDraw: (candidate) => draws.push(candidate.uniqueName), + }); + + expect(draws).toEqual(['first', 'first', 'first', 'first', 'first', 'first', 'first', 'second']); + expect(selected.map((candidate) => candidate.uniqueName)).toEqual(['first', 'second']); + }); +}); diff --git a/app/game-engine/test/generalAiLegacyDecisionParity.test.ts b/app/game-engine/test/generalAiLegacyDecisionParity.test.ts index c3b6fd4e..cab0554d 100644 --- a/app/game-engine/test/generalAiLegacyDecisionParity.test.ts +++ b/app/game-engine/test/generalAiLegacyDecisionParity.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import type { City, General, Nation } from '@sammo-ts/logic'; +import { loadItemModules, type City, type General, type Nation } from '@sammo-ts/logic'; import { createRefOrderedActionStack } from '@sammo-ts/logic/actionModules/bundle.js'; import { GeneralAI, shouldUseNationAi } from '../src/turn/ai/generalAi.js'; @@ -712,9 +712,7 @@ describe('legacy NPC user-chief promotion parity', () => { expect(run(2)).toEqual([]); expect(run(3)).toEqual([{ generalId: 2, officerLevel: 11, officerCity: 0, permission: 'ambassador' }]); expect(run(3, 0)).toEqual([]); - expect(run(3, 0, 1)).toEqual([ - { generalId: 2, officerLevel: 11, officerCity: 0, permission: 'ambassador' }, - ]); + expect(run(3, 0, 1)).toEqual([{ generalId: 2, officerLevel: 11, officerCity: 0, permission: 'ambassador' }]); }); it('keeps user-ruler duties individually disabled until each setting is enabled', () => { @@ -882,6 +880,27 @@ describe('legacy NPC AI final-decision parity', () => { effectiveLeadership: 85, }); }); + + it('passes scenario time and maximum tech level to year-scaling stat items', async () => { + const [leadershipWine] = await loadItemModules(['che_능력치_통솔_보령압주']); + expect(leadershipWine).toBeDefined(); + const modules = singleActionModuleStack(leadershipWine!); + const world = { + id: 1, + currentYear: 200, + currentMonth: 1, + tickSeconds: 600, + lastTurnTime: new Date('0200-01-01T00:00:00Z'), + meta: {}, + }; + + expect( + resolveLegacyAiStatsWithModules(baseGeneral(), baseNation(), 100, modules, null, world, 180, 15) + ).toMatchObject({ + fullLeadership: 80, + effectiveLeadership: 80, + }); + }); it.each([ ['Core scenario name', '강유'], ['Ref stored name', 'ⓝ강유'], diff --git a/app/game-engine/test/generalPoolLoader.test.ts b/app/game-engine/test/generalPoolLoader.test.ts index 0d7ff82c..ae574254 100644 --- a/app/game-engine/test/generalPoolLoader.test.ts +++ b/app/game-engine/test/generalPoolLoader.test.ts @@ -62,3 +62,34 @@ describe('SPoolUnderU30 resource', () => { await expect(loadGeneralPoolEntries('SPoolUnknown')).rejects.toThrow('Unsupported general pool'); }); }); + +describe('SPoolUnderU100 resource', () => { + it('preserves all 4,682 historical candidates and Ref A100 identifiers', async () => { + const entries = await loadGeneralPoolEntries('SPoolUnderU100'); + + expect(entries).toHaveLength(4_682); + expect(new Set(entries.map((entry) => entry.uniqueName)).size).toBe(4_682); + expect(entries[0]).toMatchObject({ + uniqueName: 'A1000001', + info: { + uniqueName: 'A1000001', + generalName: '1·조민', + leadership: 85, + strength: 69, + intel: 12, + specialDomestic: 'che_event_무쌍', + dex: [54_691, 398_024, 31_027, 89_301, 24_687], + sourcePhase: 1, + sourceServerId: 'che_180628_z9X4', + sourceGeneralNo: 3, + event100Growth: true, + }, + }); + expect(entries.at(-1)).toMatchObject({ + uniqueName: 'A1004682', + info: { generalName: '99·푸른양귀비', sourcePhase: 99 }, + }); + expect(entries.filter((entry) => (entry.info.dex as number[]).every((value) => value === 0))).toHaveLength(512); + expect(entries.filter((entry) => entry.info.specialDomestic === null)).toHaveLength(4); + }); +}); diff --git a/app/game-engine/test/generalPoolSameTurn.test.ts b/app/game-engine/test/generalPoolSameTurn.test.ts new file mode 100644 index 00000000..7b6b999e --- /dev/null +++ b/app/game-engine/test/generalPoolSameTurn.test.ts @@ -0,0 +1,214 @@ +import { describe, expect, it } from 'vitest'; +import { ConstantRNG, RandUtil, SequenceRNG } from '@sammo-ts/common'; +import { parseScenarioGeneralPoolCandidate, readScenarioGeneralPoolClaim, type TurnSchedule } from '@sammo-ts/logic'; + +import type { TurnGeneral, TurnGeneralPoolEntry, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; +import { createTurnTestHarness } from './helpers/turnTestHarness.js'; + +const start = new Date('0200-01-01T00:00:00.000Z'); +const schedule: TurnSchedule = { entries: [{ startMinute: 0, tickMinutes: 10 }] }; +const map = { + id: 'general-pool-same-turn', + name: '장수 pool 동일 턴 테스트', + cities: [ + { + id: 1, + name: '테스트성', + level: 1, + region: 1, + position: { x: 0, y: 0 }, + connections: [], + max: { + population: 50_000, + agriculture: 1_000, + commerce: 1_000, + security: 1_000, + defence: 1_000, + wall: 1_000, + }, + initial: { + population: 10_000, + agriculture: 500, + commerce: 500, + security: 500, + defence: 500, + wall: 500, + }, + }, + ], + defaults: { trust: 50, trade: 100, supplyState: 1, frontState: 0 }, +}; + +const buildRuler = (): TurnGeneral => ({ + id: 1, + userId: 'user-1', + name: '군주', + nationId: 1, + cityId: 1, + troopId: 0, + stats: { leadership: 80, strength: 70, intelligence: 60 }, + experience: 0, + dedication: 0, + officerLevel: 12, + role: { + personality: null, + specialDomestic: null, + specialWar: null, + items: { horse: null, weapon: null, book: null, item: null }, + }, + injury: 0, + gold: 2_000, + rice: 2_000, + crew: 0, + crewTypeId: 1, + train: 40, + atmos: 40, + age: 30, + npcState: 0, + bornYear: 170, + deadYear: 260, + affinity: 50, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + meta: { killturn: 24 }, + turnTime: start, +}); + +const buildPoolEntry = (id: number): TurnGeneralPoolEntry => { + const uniqueName = `후보${id}`; + return { + id, + uniqueName, + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ + id, + uniqueName, + info: { + generalName: uniqueName, + leadership: 70, + strength: 70, + intel: 10, + dex: [10, 10, 10, 10, 10], + imgsvr: 0, + picture: 'default.jpg', + }, + }), + }; +}; + +const buildSnapshot = (): TurnWorldSnapshot => ({ + scenarioConfig: { + stat: { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 75, npcMin: 10, chiefMin: 70 }, + iconPath: '', + map: { targetGeneralPool: 'SPoolUnderU30' }, + const: { + develCost: 100, + openingPartYear: 3, + defaultMaxGeneral: 500, + initialNationGenLimit: 10, + defaultNpcGold: 1_000, + defaultNpcRice: 1_000, + defaultCrewTypeId: 1, + retirementYear: 80, + availablePersonality: ['che_안전'], + }, + environment: { mapName: map.id, unitSet: 'test' }, + }, + scenarioMeta: { + title: '장수 pool 동일 턴 테스트', + startYear: 190, + life: null, + fiction: 0, + history: [], + ignoreDefaultEvents: false, + }, + map, + unitSet: { id: 'test', name: 'test', crewTypes: [] }, + nations: [ + { + id: 1, + name: '테스트국', + color: '#000000', + capitalCityId: 1, + chiefGeneralId: 1, + gold: 10_000, + rice: 10_000, + power: 0, + level: 1, + typeCode: 'che_중립', + meta: { + gennum: 1, + tech: 0, + strategic_cmd_limit: 0, + turn_last_12: { command: '의병모집', arg: {}, term: 2 }, + }, + }, + ], + cities: [ + { + id: 1, + name: '테스트성', + nationId: 1, + level: 1, + state: 0, + population: 10_000, + populationMax: 50_000, + agriculture: 500, + agricultureMax: 1_000, + commerce: 500, + commerceMax: 1_000, + security: 500, + securityMax: 1_000, + supplyState: 1, + frontState: 0, + defence: 500, + defenceMax: 1_000, + wall: 500, + wallMax: 1_000, + meta: { trust: 50, trade: 100, region: 1 }, + }, + ], + generals: [buildRuler()], + troops: [], + diplomacy: [], + events: [], + initialEvents: [], + generalPoolEntries: [1, 2, 3, 4].map(buildPoolEntry), +}); + +const buildState = (): TurnWorldState => ({ + id: 1, + currentYear: 200, + currentMonth: 1, + tickSeconds: 600, + lastTurnTime: start, + meta: { killturn: 24, hiddenSeed: 'general-pool-same-turn' }, +}); + +describe('scenario general pool within one reserved turn', () => { + it('does not let talent scouting reuse rows claimed earlier by volunteer recruitment', async () => { + const harness = await createTurnTestHarness({ + snapshot: buildSnapshot(), + state: buildState(), + schedule, + map, + reservedTurnStoreOptions: { maxGeneralTurns: 10, maxNationTurns: 12 }, + commandRngFactory: ({ actionKey }) => + actionKey === 'che_의병모집' + ? new RandUtil(new SequenceRNG([0, 0.26, 0.51, 0.76])) + : new RandUtil(new ConstantRNG(0)), + }); + harness.reservedTurnStore.getNationTurns(1, 12)[0] = { action: 'che_의병모집', args: {} }; + harness.reservedTurnStore.getGeneralTurns(1)[0] = { action: 'che_인재탐색', args: {} }; + + await harness.runOneTick(); + + const created = harness.world.peekDirtyState().createdGenerals; + const claims = created.map((general) => readScenarioGeneralPoolClaim(general.meta)); + expect(created.map((general) => general.npcState).sort()).toEqual([3, 4, 4, 4]); + expect(claims.every(Boolean)).toBe(true); + expect(new Set(claims.map((claim) => claim?.poolEntryId))).toEqual(new Set([1, 2, 3, 4])); + }); +}); diff --git a/app/game-engine/test/generalTurnLifecycle.test.ts b/app/game-engine/test/generalTurnLifecycle.test.ts index ce7a1eb8..dd14e599 100644 --- a/app/game-engine/test/generalTurnLifecycle.test.ts +++ b/app/game-engine/test/generalTurnLifecycle.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; import { LEGACY_RANK_DATA_TYPES } from '@sammo-ts/common'; -import type { TurnSchedule } from '@sammo-ts/logic'; +import { finalizeLogEntry, type TurnSchedule } from '@sammo-ts/logic'; import { rankMetaKey } from '../src/turn/rankData.js'; import type { TurnGeneral, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; @@ -159,7 +159,7 @@ const makeState = (meta: Record = {}): TurnWorldState => ({ }); describe('legacy general turn lifecycle', () => { - it('timestamps action logs with the executing general turn instead of the shared flush cursor', async () => { + it('timestamps action logs with the executing turn before the same run advances the month', async () => { const flushCursor = new Date('0200-01-01T00:35:00.000Z'); const generalTurnTime = new Date('0200-01-01T00:37:43.000Z'); const harness = await createTurnTestHarness({ @@ -175,7 +175,28 @@ describe('legacy general turn lifecycle', () => { const actionLog = harness.world .peekDirtyState() .logs.find((log) => log.text.includes('아무것도 실행하지 않았습니다.')); - expect(actionLog?.occurredAt).toEqual(generalTurnTime); + expect(harness.world.getState()).toMatchObject({ currentYear: 200, currentMonth: 2 }); + expect(actionLog).toMatchObject({ + year: 200, + month: 1, + occurredAt: generalTurnTime, + }); + if (!actionLog) { + throw new Error('expected the rest action log'); + } + const finalState = harness.world.getState(); + expect( + finalizeLogEntry(actionLog, { + year: finalState.currentYear, + month: finalState.currentMonth, + at: finalState.lastTurnTime, + }) + ).toMatchObject({ + year: 200, + month: 1, + text: '●1월:아무것도 실행하지 않았습니다.', + createdAt: generalTurnTime, + }); }); it('emits legacy plain logs when command gains cross experience and dedication levels', async () => { diff --git a/app/game-engine/test/inMemoryGeneralPool.test.ts b/app/game-engine/test/inMemoryGeneralPool.test.ts new file mode 100644 index 00000000..e5d302ae --- /dev/null +++ b/app/game-engine/test/inMemoryGeneralPool.test.ts @@ -0,0 +1,273 @@ +import { describe, expect, it } from 'vitest'; + +import { GAME_TICKS_PER_TURN } from '@sammo-ts/common'; +import { buildScenarioGeneralPoolClaimMeta, parseScenarioGeneralPoolCandidate, type City } from '@sammo-ts/logic'; + +import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; +import type { TurnGeneral, TurnGeneralPoolEntry, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; + +const claimedAt = new Date('0200-05-01T00:00:00.000Z'); + +const buildCandidateEntry = ( + id: number, + uniqueName: string, + patch: Partial = {} +): TurnGeneralPoolEntry => ({ + id, + uniqueName, + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ + id, + uniqueName, + info: { + generalName: uniqueName, + leadership: 70, + strength: 80, + intel: 10, + dex: [10, 20, 30, 40, 50], + imgsvr: 0, + picture: 'default.jpg', + }, + }), + ...patch, +}); + +const buildGeneral = (id: number, name: string, meta: TurnGeneral['meta']): TurnGeneral => ({ + id, + userId: null, + name, + nationId: 0, + cityId: 1, + troopId: 0, + stats: { leadership: 70, strength: 80, intelligence: 10 }, + experience: 2_000, + dedication: 2_000, + officerLevel: 0, + role: { + personality: null, + specialDomestic: null, + specialWar: null, + items: { horse: null, weapon: null, book: null, item: null }, + }, + injury: 0, + gold: 1_000, + rice: 1_000, + crew: 0, + crewTypeId: 0, + train: 0, + atmos: 0, + age: 20, + npcState: 0, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + turnTime: claimedAt, + meta, +}); + +const city: City = { + id: 1, + name: '도시', + nationId: 0, + level: 4, + state: 0, + population: 10_000, + populationMax: 20_000, + agriculture: 1_000, + agricultureMax: 2_000, + commerce: 1_000, + commerceMax: 2_000, + security: 1_000, + securityMax: 2_000, + supplyState: 1, + frontState: 0, + defence: 1_000, + defenceMax: 2_000, + wall: 1_000, + wallMax: 2_000, + meta: {}, +}; + +const buildWorld = ( + generalPoolEntries: TurnGeneralPoolEntry[], + generals: TurnGeneral[] = [], + stateOverride: Partial = {} +): InMemoryTurnWorld => { + const state: TurnWorldState = { + id: 1, + currentYear: 200, + currentMonth: 5, + tickSeconds: 600, + lastTurnTime: claimedAt, + meta: {}, + ...stateOverride, + }; + const snapshot: TurnWorldSnapshot = { + scenarioConfig: { + stat: { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 75, npcMin: 10, chiefMin: 70 }, + iconPath: '', + map: { targetGeneralPool: 'SPoolUnderU30' }, + const: {}, + environment: { mapName: 'test', unitSet: 'default' }, + }, + map: { + id: 'test', + name: 'test', + cities: [], + defaults: { trust: 50, trade: 100, supplyState: 1, frontState: 0 }, + }, + generals, + cities: [city], + nations: [], + troops: [], + diplomacy: [], + events: [], + initialEvents: [], + generalPoolEntries, + }; + return new InMemoryTurnWorld(state, snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] }, + }); +}; + +describe('in-memory scenario general pool availability', () => { + it('uses synchronized reselection rows while excluding live, orphaned, and active reservations', () => { + const oldEntry = buildCandidateEntry(1, '이전후보'); + const currentEntry = buildCandidateEntry(2, '현재후보'); + const legacyOccupiedEntry = buildCandidateEntry(3, '기존점유', { generalId: 2 }); + const expiredEntry = buildCandidateEntry(4, '만료예약', { + ownerUserId: 'expired-user', + reservedUntil: new Date(claimedAt.getTime() + 60_000), + reservedUntilTick: -1, + }); + const activeEntry = buildCandidateEntry(5, '활성예약', { + ownerUserId: 'active-user', + reservedUntil: new Date(claimedAt.getTime() - 60_000), + reservedUntilTick: 1, + }); + const orphanedEntry = buildCandidateEntry(6, '고아점유', { generalId: 999 }); + const exactDeadlineEntry = buildCandidateEntry(7, '동률예약', { + ownerUserId: 'exact-user', + reservedUntil: new Date(claimedAt.getTime() - 60_000), + reservedUntilTick: 0, + }); + const currentClaim = buildScenarioGeneralPoolClaimMeta(currentEntry.candidate, claimedAt); + const world = buildWorld( + [oldEntry, currentEntry, legacyOccupiedEntry, expiredEntry, activeEntry, orphanedEntry, exactDeadlineEntry], + [ + buildGeneral(1, '현재후보', { killturn: 100, ...currentClaim }), + buildGeneral(2, '기존점유', { killturn: 100 }), + ] + ); + + expect(world.listGeneralPoolCandidates(claimedAt)?.map((candidate) => candidate.uniqueName)).toEqual([ + '이전후보', + '만료예약', + ]); + }); + + it('reuses a linked row only when its general was deleted in the same in-memory batch', () => { + const linked = buildCandidateEntry(1, '삭제후보', { generalId: 1 }); + const world = buildWorld([linked], [buildGeneral(1, '삭제후보', { killturn: 100 })]); + + expect(world.listGeneralPoolCandidates(claimedAt)).toEqual([]); + expect(world.removeGeneral(1)).toBe(true); + expect(world.listGeneralPoolCandidates(claimedAt)?.map((candidate) => candidate.uniqueName)).toEqual([ + '삭제후보', + ]); + }); + + it('rebases reserved rows with the schedule and restores them on rollback', () => { + const reservedUntil = new Date(claimedAt.getTime() + 5 * 60_000); + const reserved = buildCandidateEntry(1, '예약후보', { + ownerUserId: 'active-user', + reservedUntil, + reservedUntilTick: GAME_TICKS_PER_TURN / 2, + }); + const unreserved = buildCandidateEntry(2, '미예약후보'); + const world = buildWorld([reserved, unreserved]); + const before = world.captureState(); + const probeAfterOriginalExpiry = new Date(claimedAt.getTime() + 10 * 60_000); + + world.shiftSchedule(15, claimedAt); + + expect(world.captureState().generalPoolEntries).toMatchObject([ + { + id: 1, + reservedUntil: new Date(reservedUntil.getTime() + 15 * 60_000), + reservedUntilTick: GAME_TICKS_PER_TURN / 2, + }, + { id: 2, reservedUntil: null, reservedUntilTick: null }, + ]); + expect( + world.listGeneralPoolCandidates(probeAfterOriginalExpiry)?.map((candidate) => candidate.uniqueName) + ).toEqual(['미예약후보']); + + world.restoreState(before); + + expect(world.captureState().generalPoolEntries).toMatchObject([ + { id: 1, reservedUntil, reservedUntilTick: GAME_TICKS_PER_TURN / 2 }, + { id: 2, reservedUntil: null, reservedUntilTick: null }, + ]); + expect( + world.listGeneralPoolCandidates(probeAfterOriginalExpiry)?.map((candidate) => candidate.uniqueName) + ).toEqual(['예약후보', '미예약후보']); + }); + + it('rebases tick-owned reservations with a long realtime backlog and restores exact expiry semantics', () => { + const originalReservedUntilTick = 2 * GAME_TICKS_PER_TURN; + const originalReservedUntil = new Date(claimedAt.getTime() + 20 * 60_000); + const reserved = buildCandidateEntry(1, '예약후보', { + ownerUserId: 'active-user', + reservedUntil: originalReservedUntil, + reservedUntilTick: originalReservedUntilTick, + }); + const world = buildWorld([reserved], [], { + clockBaseTime: claimedAt, + clockTick: 0, + clockMode: 'realtime', + clockWallAnchor: claimedAt, + lastTurnTick: 0, + }); + const before = world.captureState(); + const resumedAt = new Date(claimedAt.getTime() + 40 * 60_000); + + expect(world.rebaseRealtimeBacklog(resumedAt)).toMatchObject({ + skippedTurns: 4, + shiftedTicks: 4 * GAME_TICKS_PER_TURN, + }); + const rebasedReservedUntilTick = 6 * GAME_TICKS_PER_TURN; + const rebasedReservedUntil = world.gameTickToDate(rebasedReservedUntilTick); + expect(world.captureState().generalPoolEntries).toMatchObject([ + { + id: 1, + reservedUntilTick: rebasedReservedUntilTick, + reservedUntil: rebasedReservedUntil, + }, + ]); + expect(world.listGeneralPoolCandidates(resumedAt)).toEqual([]); + expect(world.listGeneralPoolCandidates(rebasedReservedUntil)).toEqual([]); + expect( + world + .listGeneralPoolCandidates(new Date(rebasedReservedUntil.getTime() + 1)) + ?.map((candidate) => candidate.uniqueName) + ).toEqual(['예약후보']); + + world.restoreState(before); + + expect(world.captureState().generalPoolEntries).toMatchObject([ + { + id: 1, + reservedUntilTick: originalReservedUntilTick, + reservedUntil: originalReservedUntil, + }, + ]); + expect(world.listGeneralPoolCandidates(originalReservedUntil)).toEqual([]); + expect( + world + .listGeneralPoolCandidates(new Date(originalReservedUntil.getTime() + 1)) + ?.map((candidate) => candidate.uniqueName) + ).toEqual(['예약후보']); + }); +}); diff --git a/app/game-engine/test/monthlyCatalogCoverage.test.ts b/app/game-engine/test/monthlyCatalogCoverage.test.ts index 68e94a40..db65eb6b 100644 --- a/app/game-engine/test/monthlyCatalogCoverage.test.ts +++ b/app/game-engine/test/monthlyCatalogCoverage.test.ts @@ -1,11 +1,12 @@ import { existsSync } from 'node:fs'; +import { readdir } from 'node:fs/promises'; +import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { describe, expect, it } from 'vitest'; -import { - MONTHLY_EVENT_ACTION_CATALOG, - type MonthlyEventActionName, -} from '../src/turn/monthlyEventHandler.js'; +import { resolveScenarioDefaultsPath } from '../src/scenario/scenarioLoader.js'; +import { MONTHLY_EVENT_ACTION_CATALOG, type MonthlyEventActionName } from '../src/turn/monthlyEventHandler.js'; +import { hasRefSourceRoot, resolveRefSourceRoot } from './refSourceRoot.js'; interface CatalogSegment { name: string; @@ -34,13 +35,7 @@ const segments = [ { name: 'city-economy-boundaries', kind: 'single-boundary', - actions: [ - 'RaiseDisaster', - 'UpdateCitySupply', - 'UpdateNationLevel', - 'ProcessSemiAnnual', - 'ProcessWarIncome', - ], + actions: ['RaiseDisaster', 'UpdateCitySupply', 'UpdateNationLevel', 'ProcessSemiAnnual', 'ProcessWarIncome'], coreEvidence: [ 'monthlyDisasterPersistence.integration.test.ts', 'monthlyCitySupplyPersistence.integration.test.ts', @@ -84,11 +79,7 @@ const segments = [ kind: 'multi-month', actions: ['RaiseInvader', 'AutoDeleteInvader', 'InvaderEnding'], coreEvidence: ['monthlyInvaderPersistence.integration.test.ts'], - refEvidence: [ - 'monthly_raise_invader.json', - 'monthly_auto_delete_invader.json', - 'monthly_invader_ending.json', - ], + refEvidence: ['monthly_raise_invader.json', 'monthly_auto_delete_invader.json', 'monthly_invader_ending.json'], }, { name: 'npc-troop-support', @@ -136,17 +127,62 @@ const segments = [ coreEvidence: ['monthlyUniqueInheritPersistence.integration.test.ts'], refEvidence: ['monthly_lost_unique_item.json', 'monthly_merge_inherit_point_rank.json'], }, + { + name: 'centennial-all-star-growth', + kind: 'multi-month', + actions: ['AdvanceCentennialAllStar'], + coreEvidence: ['monthlyCentennialAllStarAction.test.ts'], + refEvidence: ['CentennialAllStarGrowthTest.php', 'AdvanceCentennialAllStar.php'], + }, ] as const satisfies readonly CatalogSegment[]; +const KNOWN_MISSING_SCENARIO_RESOURCES = [] as const; +const KNOWN_MISSING_MONTHLY_ACTIONS = [] as const; + +const listBasenames = async (directory: string, pattern: RegExp): Promise => + (await readdir(directory, { withFileTypes: true })) + .filter((entry) => entry.isFile() && pattern.test(entry.name)) + .map((entry) => entry.name) + .sort(); + +const difference = (left: readonly string[], right: readonly string[]): string[] => { + const rightSet = new Set(right); + return left.filter((value) => !rightSet.has(value)).sort(); +}; + +const refSourceIt = hasRefSourceRoot() ? it : it.skip; + describe('monthly event catalog coverage', () => { - it('assigns every legacy action to exactly one dependency-safe segment', () => { + it('assigns every Core monthly action to exactly one dependency-safe segment', () => { const covered = segments.flatMap((segment) => segment.actions); - expect(covered).toHaveLength(29); - expect(new Set(covered).size).toBe(29); + expect(new Set(covered).size).toBe(covered.length); + expect(new Set(MONTHLY_EVENT_ACTION_CATALOG).size).toBe(MONTHLY_EVENT_ACTION_CATALOG.length); expect([...covered].sort()).toEqual([...MONTHLY_EVENT_ACTION_CATALOG].sort()); }); + refSourceIt('keeps the Core and Ref scenario resource catalogs complete', async () => { + const refScenarioDirectory = path.join(resolveRefSourceRoot(), 'hwe', 'scenario'); + const coreScenarioDirectory = path.dirname(resolveScenarioDefaultsPath()); + const [refScenarios, coreScenarios] = await Promise.all([ + listBasenames(refScenarioDirectory, /^scenario_\d+\.json$/), + listBasenames(coreScenarioDirectory, /^scenario_\d+\.json$/), + ]); + + expect(difference(refScenarios, coreScenarios)).toEqual([...KNOWN_MISSING_SCENARIO_RESOURCES]); + expect(difference(coreScenarios, refScenarios)).toEqual([]); + }); + + refSourceIt('keeps the Core and Ref monthly action catalogs complete', async () => { + const refActionDirectory = path.join(resolveRefSourceRoot(), 'hwe', 'sammo', 'Event', 'Action'); + const refActions = (await listBasenames(refActionDirectory, /\.php$/)).map((fileName) => + fileName.replace(/\.php$/, '') + ); + + expect(difference(refActions, MONTHLY_EVENT_ACTION_CATALOG)).toEqual([...KNOWN_MISSING_MONTHLY_ACTIONS]); + expect(difference(MONTHLY_EVENT_ACTION_CATALOG, refActions)).toEqual([]); + }); + it('keeps every core evidence file executable in this suite', () => { const testDirectory = fileURLToPath(new URL('.', import.meta.url)); const evidenceFiles = new Set(segments.flatMap((segment) => segment.coreEvidence)); @@ -170,6 +206,7 @@ describe('monthly event catalog coverage', () => { 'InvaderEnding', 'OpenNationBetting', 'FinishNationBetting', + 'AdvanceCentennialAllStar', ]); expect(specialDispositions).toEqual(['CreateAdminNPC', 'UnblockScoutAction']); expect(segments.every((segment) => segment.refEvidence.length > 0)).toBe(true); diff --git a/app/game-engine/test/monthlyCentennialAllStarAction.test.ts b/app/game-engine/test/monthlyCentennialAllStarAction.test.ts new file mode 100644 index 00000000..6621cdf8 --- /dev/null +++ b/app/game-engine/test/monthlyCentennialAllStarAction.test.ts @@ -0,0 +1,232 @@ +import { describe, expect, it } from 'vitest'; +import { + CENTENNIAL_ALL_STAR_AUX_KEY, + LogCategory, + LogFormat, + LogScope, + calculateCentennialUserInitialStats, + initialCentennialAllStarAux, + type CentennialAllStarRules, + type CentennialAllStarTarget, +} from '@sammo-ts/logic'; + +import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; +import { createAdvanceCentennialAllStarHandler } from '../src/turn/monthlyCentennialAllStarAction.js'; +import type { TurnEvent, TurnGeneral, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; + +const event: TurnEvent = { + id: 1, + targetCode: 'month', + priority: 8_000, + condition: true, + action: ['AdvanceCentennialAllStar'], + meta: {}, +}; + +const rules: CentennialAllStarRules = { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: 'None', + dexLimit: 1_000_000, +}; + +const target: CentennialAllStarTarget = { + uniqueName: 'A1000001', + generalName: '1·조민', + leadership: 100, + strength: 80, + intel: 10, + dex: [900_000, 800_000, 700_000, 600_000, 500_000], + specialDomestic: 'che_event_무쌍', +}; + +const withTargetMeta = ( + userInitialStats: ReturnType | null = null +): TurnGeneral['meta'] => { + const meta: TurnGeneral['meta'] = { + killturn: 5, + dex1: 0, + dex2: 0, + dex3: 0, + dex4: 0, + dex5: 0, + }; + const mutable: Record = meta; + mutable[CENTENNIAL_ALL_STAR_AUX_KEY] = initialCentennialAllStarAux(target, rules, userInitialStats); + return meta; +}; + +const buildGeneral = (options: { + id: number; + npcState: number; + stats: TurnGeneral['stats']; + meta?: TurnGeneral['meta']; +}): TurnGeneral => ({ + id: options.id, + userId: options.npcState === 0 ? `user-${options.id}` : null, + name: `장수${options.id}`, + nationId: 0, + cityId: 1, + troopId: 0, + stats: options.stats, + experience: 0, + dedication: 0, + officerLevel: 0, + role: { + personality: 'che_안전', + specialDomestic: 'None', + specialWar: 'None', + items: { horse: null, weapon: null, book: null, item: null }, + }, + injury: 0, + gold: 1_000, + rice: 1_000, + crew: 0, + crewTypeId: 1100, + train: 0, + atmos: 0, + age: 20, + startAge: 20, + npcState: options.npcState, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + meta: options.meta ?? { killturn: 5 }, + lastTurn: { command: '휴식' }, + turnTime: new Date('0186-01-01T00:00:00.000Z'), +}); + +const buildWorld = (generals: TurnGeneral[]): InMemoryTurnWorld => { + const state: TurnWorldState = { + id: 1, + currentYear: 186, + currentMonth: 1, + tickSeconds: 600, + lastTurnTime: new Date('0186-01-01T00:00:00.000Z'), + meta: { hiddenSeed: 'monthly-centennial-fixture' }, + }; + const scenarioConfig: TurnWorldSnapshot['scenarioConfig'] = { + stat: { total: 165, min: 15, max: 80, npcTotal: 150, npcMax: 75, npcMin: 10, chiefMin: 70 }, + iconPath: '.', + map: { targetGeneralPool: 'SPoolUnderU100', centennialNpcDexTargetRatio: 0.4 }, + const: { + maxLevel: 255, + defaultSpecialDomestic: 'None', + dexLimit: 1_000_000, + }, + environment: { mapName: 'test', unitSet: 'default' }, + }; + return new InMemoryTurnWorld( + state, + { + scenarioConfig, + map: { id: 'test', name: 'test', cities: [] }, + generals, + cities: [], + nations: [], + troops: [], + diplomacy: [], + events: [event], + initialEvents: [], + }, + { schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] } } + ); +}; + +describe('AdvanceCentennialAllStar monthly action', () => { + it('advances a user target, unlocks its trait, persists aux, and emits one milestone pair', async () => { + const initial = calculateCentennialUserInitialStats(target, rules); + const world = buildWorld([ + buildGeneral({ + id: 1, + npcState: 0, + stats: { + leadership: initial.leadership, + strength: initial.strength, + intelligence: initial.intel, + }, + meta: withTargetMeta(initial), + }), + ]); + const environment = { + year: 186, + month: 1, + startyear: 180, + currentEventID: 1, + turnTime: new Date('0186-01-01T00:00:00.000Z'), + }; + + await createAdvanceCentennialAllStarHandler({ getWorld: () => world })([], environment, event); + + const updated = world.getGeneralById(1)!; + expect(updated.role.specialDomestic).toBe('che_event_무쌍'); + expect([updated.meta.dex1, updated.meta.dex2, updated.meta.dex3, updated.meta.dex4, updated.meta.dex5]).toEqual( + [144_000, 128_000, 112_000, 96_000, 80_000] + ); + expect(world.peekDirtyState().generals).toHaveLength(1); + expect(world.peekDirtyState().logs).toEqual([ + expect.objectContaining({ + scope: LogScope.GENERAL, + category: LogCategory.ACTION, + generalId: 1, + text: '올스타 동조율이 40%에 도달했습니다!', + format: LogFormat.PLAIN, + }), + expect.objectContaining({ + scope: LogScope.GENERAL, + category: LogCategory.HISTORY, + generalId: 1, + text: '올스타 동조율 40% 달성', + format: LogFormat.YEAR_MONTH, + }), + ]); + }); + + it('uses the Ref .9 stat progress and .4 dex target only for generated NPCs', async () => { + const world = buildWorld([ + buildGeneral({ + id: 2, + npcState: 3, + stats: { leadership: 15, strength: 15, intelligence: 10 }, + meta: withTargetMeta(), + }), + buildGeneral({ + id: 3, + npcState: 2, + stats: { leadership: 50, strength: 50, intelligence: 50 }, + }), + buildGeneral({ + id: 4, + npcState: 6, + stats: { leadership: 15, strength: 15, intelligence: 10 }, + meta: withTargetMeta(), + }), + ]); + const environment = { + year: 195, + month: 1, + startyear: 180, + currentEventID: 1, + turnTime: new Date('0195-01-01T00:00:00.000Z'), + }; + + await createAdvanceCentennialAllStarHandler({ getWorld: () => world })([], environment, event); + + const npc = world.getGeneralById(2)!; + expect(npc.stats).toEqual({ leadership: 91, strength: 73, intelligence: 10 }); + expect([npc.meta.dex1, npc.meta.dex2, npc.meta.dex3, npc.meta.dex4, npc.meta.dex5]).toEqual([ + 360_000, 320_000, 280_000, 240_000, 200_000, + ]); + expect(world.getGeneralById(3)?.stats).toEqual({ leadership: 50, strength: 50, intelligence: 50 }); + const nationNpc = world.getGeneralById(4)!; + expect(nationNpc.stats).toEqual({ leadership: 100, strength: 80, intelligence: 10 }); + expect([ + nationNpc.meta.dex1, + nationNpc.meta.dex2, + nationNpc.meta.dex3, + nationNpc.meta.dex4, + nationNpc.meta.dex5, + ]).toEqual([900_000, 800_000, 700_000, 600_000, 500_000]); + expect(world.peekDirtyState().generals.map((entry) => entry.id)).toEqual([2, 4]); + }); +}); diff --git a/app/game-engine/test/monthlyCreateManyNpcAction.test.ts b/app/game-engine/test/monthlyCreateManyNpcAction.test.ts index 5cd7cdb1..ceab6680 100644 --- a/app/game-engine/test/monthlyCreateManyNpcAction.test.ts +++ b/app/game-engine/test/monthlyCreateManyNpcAction.test.ts @@ -1,11 +1,16 @@ import { describe, expect, it, vi } from 'vitest'; -import { LEGACY_RANDOM_GENERAL_FIRST_NAMES, LEGACY_RANDOM_GENERAL_LAST_NAMES, type City } from '@sammo-ts/logic'; +import { + LEGACY_RANDOM_GENERAL_FIRST_NAMES, + LEGACY_RANDOM_GENERAL_LAST_NAMES, + parseScenarioGeneralPoolCandidate, + type City, +} from '@sammo-ts/logic'; import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; import { createCreateManyNpcHandler } from '../src/turn/monthlyCreateManyNpcAction.js'; import { InMemoryReservedTurnStore } from '../src/turn/reservedTurnStore.js'; import { buildCommandEnv } from '../src/turn/reservedTurnCommands.js'; -import type { TurnGeneral, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; +import type { TurnGeneral, TurnGeneralPoolEntry, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; const buildCity = (id: number): City => ({ id, @@ -64,7 +69,12 @@ const buildGeneral = (id: number, patch: Partial = {}): TurnGeneral ...patch, }); -const buildHarness = (generals: TurnGeneral[] = [], cityCount = 2) => { +const buildHarness = ( + generals: TurnGeneral[] = [], + cityCount = 2, + generalPoolEntries?: TurnGeneralPoolEntry[], + poolName = 'SPoolUnderU30' +) => { const state: TurnWorldState = { id: 1, currentYear: 200, @@ -75,9 +85,17 @@ const buildHarness = (generals: TurnGeneral[] = [], cityCount = 2) => { }; const snapshot: TurnWorldSnapshot = { scenarioConfig: { - stat: { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 50, npcMin: 10, chiefMin: 70 }, + stat: + poolName === 'SPoolUnderU100' + ? { total: 165, min: 15, max: 80, npcTotal: 150, npcMax: 50, npcMin: 10, chiefMin: 70 } + : { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 50, npcMin: 10, chiefMin: 70 }, iconPath: '', - map: {}, + map: generalPoolEntries + ? { + targetGeneralPool: poolName, + ...(poolName === 'SPoolUnderU100' ? { centennialNpcDexTargetRatio: 0.4 } : {}), + } + : {}, const: { defaultStatNPCTotal: 150, defaultStatNPCMin: 10, @@ -103,6 +121,7 @@ const buildHarness = (generals: TurnGeneral[] = [], cityCount = 2) => { diplomacy: [], events: [], initialEvents: [], + ...(generalPoolEntries ? { generalPoolEntries } : {}), }; const world = new InMemoryTurnWorld(state, snapshot, { schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] }, @@ -132,6 +151,119 @@ const buildHarness = (generals: TurnGeneral[] = [], cityCount = 2) => { }; describe('CreateManyNPC monthly action', () => { + it('uses and consumes an available U30 candidate without random-name or random-stat fallback', async () => { + const info = { + generalName: '풀장수', + leadership: 69, + strength: 12, + intel: 80, + specialDomestic: 'che_event_징병', + dex: [10, 20, 30, 40, 50], + imgsvr: 1, + picture: 'pool.gif', + }; + const entry: TurnGeneralPoolEntry = { + id: 31, + uniqueName: info.generalName, + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ id: 31, uniqueName: info.generalName, info }), + }; + const { world, handler, environment } = buildHarness([buildGeneral(1)], 2, [entry]); + + await handler([1, 0], environment, { + id: 1, + targetCode: 'month', + priority: 1, + condition: true, + action: [], + meta: {}, + }); + + const created = world.peekDirtyState().createdGenerals[0]!; + expect(created).toMatchObject({ + name: 'ⓜ풀장수', + stats: { leadership: 69, strength: 12, intelligence: 80 }, + picture: 'pool.gif', + imageServer: 1, + role: { + specialDomestic: 'che_event_징병', + }, + meta: { + dex1: 10, + dex2: 20, + dex3: 30, + dex4: 40, + dex5: 50, + scenarioGeneralPoolClaim: { + poolEntryId: 31, + uniqueName: '풀장수', + claimedAt: environment.turnTime.toISOString(), + }, + }, + }); + expect(world.listGeneralPoolCandidates(environment.turnTime)).toEqual([]); + }); + + it('keeps the ordinary NPC RNG path before applying the S100 .9/.4 target', async () => { + const info = { + generalName: '100기후보', + leadership: 100, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [900_000, 800_000, 700_000, 600_000, 500_000], + imgsvr: 1, + picture: 'centennial.gif', + event100Growth: true, + }; + const entry: TurnGeneralPoolEntry = { + id: 100, + uniqueName: 'A1000100', + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ id: 100, uniqueName: 'A1000100', info }), + }; + const { world, handler, environment } = buildHarness([buildGeneral(1)], 2, [entry], 'SPoolUnderU100'); + const currentEnvironment = { ...environment, year: 195, month: 1, startyear: 180 }; + + await handler([1, 0], currentEnvironment, { + id: 1, + targetCode: 'month', + priority: 1, + condition: true, + action: [], + meta: {}, + }); + + const created = world.peekDirtyState().createdGenerals[0]!; + expect(created).toMatchObject({ + name: 'ⓜ100기후보', + stats: { leadership: 93, strength: 73 }, + picture: 'centennial.gif', + role: { specialDomestic: 'che_event_징병' }, + meta: { + dex1: 360_000, + dex2: 320_000, + dex3: 280_000, + dex4: 240_000, + dex5: 200_000, + scenarioGeneralPoolClaim: { poolEntryId: 100, uniqueName: 'A1000100' }, + event100_allstar: { + targetId: 'A1000100', + milestone: 4, + dexTargetRatio: 0.4, + }, + }, + }); + expect(created.stats.intelligence).toBeGreaterThanOrEqual(10); + expect(created.stats).not.toEqual({ leadership: 100, strength: 80, intelligence: 10 }); + }); + it('creates the legacy random-name NPC state and initializes all 30 reserved turns', async () => { const { world, reservedTurns, handler, environment } = buildHarness([buildGeneral(1)]); diff --git a/app/game-engine/test/monthlyNationBettingAction.test.ts b/app/game-engine/test/monthlyNationBettingAction.test.ts index ac76f46c..d9b7bf9e 100644 --- a/app/game-engine/test/monthlyNationBettingAction.test.ts +++ b/app/game-engine/test/monthlyNationBettingAction.test.ts @@ -90,7 +90,7 @@ const sourceEvent: TurnEvent = { meta: {}, }; -const buildWorld = () => { +const buildWorld = (options: { promotedNeutral?: boolean; generals?: TurnGeneral[]; nations?: Nation[] } = {}) => { const state: TurnWorldState = { id: 1, currentYear: 200, @@ -111,9 +111,13 @@ const buildWorld = () => { { scenarioConfig, map: { id: 'test', name: 'test', cities: [] }, - generals: [buildGeneral(1), buildGeneral(2)], + generals: options.generals ?? [buildGeneral(1), buildGeneral(2)], cities: [buildCity(1), buildCity(2)], - nations: [buildNation(1, 100), buildNation(2, 300)], + nations: options.nations ?? [ + ...(options.promotedNeutral ? [{ ...buildNation(0, 0), name: '재야', level: 1 }] : []), + buildNation(1, 100), + buildNation(2, 300), + ], troops: [], diplomacy: [], events: [sourceEvent], @@ -146,25 +150,18 @@ describe('nation betting monthly actions', () => { closeYearMonth: 2_424, bonusPoint: 500, }); - expect(dirty.pendingNationBettingOpens[0]?.candidates.map((candidate) => candidate.aux.nation)).toEqual([ - 2, 1, - ]); + expect(dirty.pendingNationBettingOpens[0]?.candidates.map((candidate) => candidate.aux.nation)).toEqual([2, 1]); expect(dirty.createdEvents).toEqual([ expect.objectContaining({ targetCode: 'DESTROY_NATION', priority: 1_000, condition: ['RemainNation', '<=', 1], - action: [ - ['FinishNationBetting', 5], - ['DeleteEvent'], - ], + action: [['FinishNationBetting', 5], ['DeleteEvent']], }), ]); expect(dirty.logs).toHaveLength(1); expect(dirty.messages).toHaveLength(2); - expect(dirty.messages[0]?.text).toBe( - '새로운 천통국 내기가 열렸습니다. 천통국 베팅란을 확인해주세요.' - ); + expect(dirty.messages[0]?.text).toBe('새로운 천통국 내기가 열렸습니다. 천통국 베팅란을 확인해주세요.'); await createFinishNationBettingHandler({ getWorld: () => world })([5], environment, sourceEvent); expect(world.peekDirtyState().pendingNationBettingFinishes).toEqual([ @@ -177,4 +174,55 @@ describe('nation betting monthly actions', () => { }, ]); }); + + it('never treats the synthetic neutral row as a nation-betting winner', async () => { + const world = buildWorld({ promotedNeutral: true }); + const environment = { + year: 200, + month: 1, + startyear: 190, + currentEventID: 7, + turnTime: new Date('0200-01-01T00:00:00.000Z'), + }; + + await createFinishNationBettingHandler({ getWorld: () => world })([5], environment, sourceEvent); + + expect(world.peekDirtyState().pendingNationBettingFinishes).toEqual([ + expect.objectContaining({ winnerNationIds: [1, 2] }), + ]); + }); + + it('uses stored gennum and excludes npc state 5 from the fallback candidate count', async () => { + const nationOne = buildNation(1, 100); + nationOne.meta = { ...nationOne.meta, gennum: 0 }; + const nationTwo = buildNation(2, 300); + const nationTwoMeta = { ...nationTwo.meta }; + delete nationTwoMeta.gennum; + nationTwo.meta = nationTwoMeta; + const npcFiveNationOne = { ...buildGeneral(3), nationId: 1, npcState: 5 }; + const npcFiveNationTwo = { ...buildGeneral(4), nationId: 2, npcState: 5 }; + const world = buildWorld({ + generals: [buildGeneral(1), buildGeneral(2), npcFiveNationOne, npcFiveNationTwo], + nations: [nationOne, nationTwo], + }); + const environment = { + year: 200, + month: 1, + startyear: 190, + currentEventID: 7, + turnTime: new Date('0200-01-01T00:00:00.000Z'), + }; + + await createOpenNationBettingHandler({ getWorld: () => world })([1, 500], environment, sourceEvent); + + const candidates = world.peekDirtyState().pendingNationBettingOpens[0]?.candidates; + expect(candidates?.find((candidate) => candidate.aux.nation === 1)).toMatchObject({ + info: '국력: 100
장수 수: 0
도시 수: 1', + aux: { gennum: 0 }, + }); + expect(candidates?.find((candidate) => candidate.aux.nation === 2)).toMatchObject({ + info: '국력: 300
장수 수: 1
도시 수: 1', + aux: { gennum: 1 }, + }); + }); }); diff --git a/app/game-engine/test/monthlyRaiseNpcNationAction.test.ts b/app/game-engine/test/monthlyRaiseNpcNationAction.test.ts index 340cd915..eca17664 100644 --- a/app/game-engine/test/monthlyRaiseNpcNationAction.test.ts +++ b/app/game-engine/test/monthlyRaiseNpcNationAction.test.ts @@ -1,11 +1,23 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { PERSONALITY_TRAIT_KEYS, type City, type MapDefinition, type Nation } from '@sammo-ts/logic'; +import { + parseScenarioGeneralPoolCandidate, + PERSONALITY_TRAIT_KEYS, + type City, + type MapDefinition, + type Nation, +} from '@sammo-ts/logic'; import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; import { createRaiseNpcNationHandler } from '../src/turn/monthlyRaiseNpcNationAction.js'; import { InMemoryReservedTurnStore } from '../src/turn/reservedTurnStore.js'; import { buildCommandEnv } from '../src/turn/reservedTurnCommands.js'; -import type { TurnEvent, TurnGeneral, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; +import type { + TurnEvent, + TurnGeneral, + TurnGeneralPoolEntry, + TurnWorldSnapshot, + TurnWorldState, +} from '../src/turn/types.js'; const buildCity = (id: number, nationId: number, level = 5): City => ({ id, @@ -119,7 +131,13 @@ const event: TurnEvent = { meta: {}, }; -const buildHarness = (archivedNationMaxId = 0, hiddenSeed = 'raise-npc-nation-fixture') => { +const buildHarness = ( + archivedNationMaxId = 0, + hiddenSeed = 'raise-npc-nation-fixture', + generalPoolEntries?: TurnGeneralPoolEntry[], + additionalGeneralCount = 0, + poolName = 'SPoolUnderU30' +) => { const state: TurnWorldState = { id: 1, currentYear: 200, @@ -132,7 +150,12 @@ const buildHarness = (archivedNationMaxId = 0, hiddenSeed = 'raise-npc-nation-fi scenarioConfig: { stat: { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 75, npcMin: 10, chiefMin: 70 }, iconPath: '.', - map: {}, + map: generalPoolEntries + ? { + targetGeneralPool: poolName, + ...(poolName === 'SPoolUnderU100' ? { centennialNpcDexTargetRatio: 0.4 } : {}), + } + : {}, const: { retirementYear: 80, availablePersonality: ['che_안전'], @@ -143,19 +166,22 @@ const buildHarness = (archivedNationMaxId = 0, hiddenSeed = 'raise-npc-nation-fi environment: { mapName: 'test', unitSet: 'default' }, }, map, - generals: [buildGeneral()], - cities: [ - buildCity(1, 1), - buildCity(2, 0), - buildCity(3, 0, 4), - buildCity(4, 0), - buildCity(5, 0, 4), + generals: [ + buildGeneral(), + ...Array.from({ length: additionalGeneralCount }, (_, index) => ({ + ...buildGeneral(), + id: index + 2, + name: `장수${index + 2}`, + officerLevel: 1, + })), ], + cities: [buildCity(1, 1), buildCity(2, 0), buildCity(3, 0, 4), buildCity(4, 0), buildCity(5, 0, 4)], nations: [buildNation(1)], troops: [], diplomacy: [], events: [event], initialEvents: [], + ...(generalPoolEntries ? { generalPoolEntries } : {}), }; const world = new InMemoryTurnWorld(state, snapshot, { schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] }, @@ -202,6 +228,94 @@ describe('RaiseNPCNation monthly action', () => { vi.restoreAllMocks(); }); + it('uses a U30 subordinate name/dex/special while preserving RaiseNPCNation random stats', async () => { + const info = { + generalName: '부장후보', + leadership: 99, + strength: 1, + intel: 1, + specialDomestic: 'che_event_징병', + dex: [10, 20, 30, 40, 50], + imgsvr: 1, + picture: 'subordinate.gif', + }; + const entry: TurnGeneralPoolEntry = { + id: 41, + uniqueName: info.generalName, + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ id: 41, uniqueName: info.generalName, info }), + }; + const { world, handler, environment } = buildHarness(0, 'raise-pool-fixture', [entry], 1); + + await handler([], environment, event); + + const subordinate = world.peekDirtyState().createdGenerals.find((general) => general.name === 'ⓤ부장후보'); + expect(subordinate).toMatchObject({ + name: 'ⓤ부장후보', + picture: 'subordinate.gif', + imageServer: 1, + role: { specialDomestic: 'che_event_징병' }, + meta: { + dex1: 10, + dex2: 20, + dex3: 30, + dex4: 40, + dex5: 50, + scenarioGeneralPoolClaim: { + poolEntryId: 41, + uniqueName: '부장후보', + }, + }, + }); + expect(subordinate?.stats).not.toEqual({ leadership: 99, strength: 1, intelligence: 1 }); + }); + + it('attaches the S100 target to a type-6 subordinate without applying current growth', async () => { + const info = { + generalName: '100기건국', + leadership: 100, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [900_000, 800_000, 700_000, 600_000, 500_000], + imgsvr: 1, + picture: 'centennial-ruler.gif', + event100Growth: true, + }; + const entry: TurnGeneralPoolEntry = { + id: 101, + uniqueName: 'A1000101', + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ id: 101, uniqueName: 'A1000101', info }), + }; + const { world, handler, environment } = buildHarness(0, 'raise-s100-fixture', [entry], 1, 'SPoolUnderU100'); + + await handler([], environment, event); + + const subordinate = world.peekDirtyState().createdGenerals.find((general) => general.name === 'ⓤ100기건국')!; + expect(subordinate.stats).not.toEqual({ leadership: 100, strength: 80, intelligence: 10 }); + expect(subordinate.role.specialDomestic).toBeNull(); + expect(subordinate.meta).toMatchObject({ + dex1: 0, + dex2: 0, + dex3: 0, + dex4: 0, + dex5: 0, + scenarioGeneralPoolClaim: { poolEntryId: 101, uniqueName: 'A1000101' }, + event100_allstar: { + targetId: 'A1000101', + progressMonth: -1, + milestone: 0, + }, + }); + }); + it('creates only distance-qualified NPC nations and initializes their ruler and turns', async () => { const { world, reservedTurns, handler, environment } = buildHarness(); @@ -265,12 +379,7 @@ describe('RaiseNPCNation monthly action', () => { }); expect(world.getCityById(5)?.nationId).toBe(0); expect(reservedTurns.getGeneralTurns(2)).toHaveLength(30); - expect(reservedTurns.peekDirtyState().nationInitializationKeys).toEqual([ - '2:12', - '2:11', - '2:10', - '2:9', - ]); + expect(reservedTurns.peekDirtyState().nationInitializationKeys).toEqual(['2:12', '2:11', '2:10', '2:9']); expect(dirty.logs).toEqual([ expect.objectContaining({ category: 'HISTORY', diff --git a/app/game-engine/test/refSourceRoot.ts b/app/game-engine/test/refSourceRoot.ts new file mode 100644 index 00000000..a4322dcf --- /dev/null +++ b/app/game-engine/test/refSourceRoot.ts @@ -0,0 +1,45 @@ +import { execFileSync } from 'node:child_process'; +import { existsSync } from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const CORE_REPOSITORY_ROOT = fileURLToPath(new URL('../../../', import.meta.url)); + +const refSourceCandidates = (): string[] => { + if (process.env.SAMMO_REF_ROOT) { + return [path.resolve(process.env.SAMMO_REF_ROOT)]; + } + + const candidates = [path.resolve(CORE_REPOSITORY_ROOT, '..', 'ref', 'sam')]; + try { + const commonDirectory = execFileSync('git', ['rev-parse', '--path-format=absolute', '--git-common-dir'], { + cwd: CORE_REPOSITORY_ROOT, + encoding: 'utf8', + stdio: ['ignore', 'pipe', 'ignore'], + }).trim(); + candidates.push(path.resolve(path.dirname(commonDirectory), '..', 'ref', 'sam')); + } catch { + // The ordinary sibling checkout remains the fallback outside a Git worktree. + } + + return [...new Set(candidates)]; +}; + +export const hasRefSourceRoot = (): boolean => { + if (process.env.SAMMO_REQUIRE_REF_SOURCE === '1' || process.env.SAMMO_REF_ROOT) { + return true; + } + return refSourceCandidates().some((candidate) => existsSync(candidate)); +}; + +export const resolveRefSourceRoot = (): string => { + const candidates = refSourceCandidates(); + const resolvedRoot = candidates.find((candidate) => existsSync(candidate)); + if (!resolvedRoot) { + if (process.env.SAMMO_REF_ROOT) { + throw new Error(`SAMMO_REF_ROOT does not exist: ${candidates[0]}`); + } + throw new Error(`Ref source checkout was not found. Checked: ${candidates.join(', ')}`); + } + return resolvedRoot; +}; diff --git a/app/game-engine/test/runtimeClockShiftPersistence.integration.test.ts b/app/game-engine/test/runtimeClockShiftPersistence.integration.test.ts index 1675a88b..f7c49205 100644 --- a/app/game-engine/test/runtimeClockShiftPersistence.integration.test.ts +++ b/app/game-engine/test/runtimeClockShiftPersistence.integration.test.ts @@ -21,6 +21,7 @@ const runtimeSettingsRequestId = 'integration:engine:runtime-game-settings'; const runtimeSettingsActionId = 'c9f68480-dba9-4e03-a62b-499e6234f18a'; const generalIds = [990_301, 990_302, 990_303, 990_304] as const; const runtimeSettingsLogText = 'runtime-settings-existing-log'; +const backlogPoolUniqueName = 'rebase-pool-990304'; const buildGeneral = (id: number, turnTime: Date): TurnGeneral => ({ @@ -86,6 +87,7 @@ integration('runtime clock shift persistence', () => { await db.message.deleteMany({ where: { mailbox: generalIds[2] } }); await db.logEntry.deleteMany({ where: { text: runtimeSettingsLogText } }); await db.auction.deleteMany({ where: { hostGeneralId: { in: [...generalIds] } } }); + await db.selectPoolEntry.deleteMany({ where: { uniqueName: backlogPoolUniqueName } }); await db.general.deleteMany({ where: { id: { in: [...generalIds] } } }); await db.worldState.deleteMany({ where: { @@ -100,6 +102,7 @@ integration('runtime clock shift persistence', () => { await db.message.deleteMany({ where: { mailbox: generalIds[2] } }); await db.logEntry.deleteMany({ where: { text: runtimeSettingsLogText } }); await db.auction.deleteMany({ where: { hostGeneralId: { in: [...generalIds] } } }); + await db.selectPoolEntry.deleteMany({ where: { uniqueName: backlogPoolUniqueName } }); await db.general.deleteMany({ where: { id: { in: [...generalIds] } } }); await db.worldState.deleteMany({ where: { @@ -351,6 +354,26 @@ integration('runtime clock shift persistence', () => { }) ) ); + const poolEntry = await db.selectPoolEntry.create({ + data: { + uniqueName: backlogPoolUniqueName, + ownerUserId: 'rebase-pool-user', + generalId: null, + reservedUntil: new Date('2099-09-01T00:10:00.000Z'), + reservedUntilTick: BigInt(2 * GAME_TICKS_PER_TURN), + info: { + uniqueName: backlogPoolUniqueName, + generalName: '재개예약후보', + leadership: 70, + strength: 70, + intel: 10, + specialDomestic: null, + dex: [10, 10, 10, 10, 10], + imgsvr: 0, + picture: 'default.jpg', + } as GamePrisma.InputJsonValue, + }, + }); const world = new InMemoryTurnWorld( { id: row.id, @@ -422,8 +445,15 @@ integration('runtime clock shift persistence', () => { closeTick: BigInt(2 * GAME_TICKS_PER_TURN), closeAt: new Date('2099-09-01T00:10:00.000Z'), }); + expect(await db.selectPoolEntry.findUniqueOrThrow({ where: { id: poolEntry.id } })).toMatchObject({ + ownerUserId: 'rebase-pool-user', + generalId: null, + reservedUntilTick: BigInt(9 * GAME_TICKS_PER_TURN), + reservedUntil: new Date('2099-09-01T00:45:00.000Z'), + }); await db.auction.deleteMany({ where: { id: { in: [openAuction.id, finishedAuction.id] } } }); + await db.selectPoolEntry.delete({ where: { id: poolEntry.id } }); await db.general.delete({ where: { id: general.id } }); await db.worldState.delete({ where: { id: row.id } }); }); diff --git a/app/game-engine/test/scenario903GeneralPoolComposition.test.ts b/app/game-engine/test/scenario903GeneralPoolComposition.test.ts new file mode 100644 index 00000000..a4cd1b7d --- /dev/null +++ b/app/game-engine/test/scenario903GeneralPoolComposition.test.ts @@ -0,0 +1,166 @@ +import { describe, expect, it, vi } from 'vitest'; +import { parseScenarioGeneralPoolCandidate, readScenarioGeneralPoolClaim, type City } from '@sammo-ts/logic'; + +import { loadGeneralPoolEntries } from '../src/scenario/generalPoolLoader.js'; +import { loadScenarioDefinitionById } from '../src/scenario/scenarioLoader.js'; +import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; +import { createCreateManyNpcHandler } from '../src/turn/monthlyCreateManyNpcAction.js'; +import { InMemoryReservedTurnStore } from '../src/turn/reservedTurnStore.js'; +import { buildCommandEnv } from '../src/turn/reservedTurnCommands.js'; +import type { TurnGeneralPoolEntry, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; + +const turnTime = new Date('0180-12-01T00:00:00.000Z'); + +const city: City = { + id: 1, + name: '테스트성', + nationId: 0, + level: 4, + state: 0, + population: 10_000, + populationMax: 20_000, + agriculture: 1_000, + agricultureMax: 2_000, + commerce: 1_000, + commerceMax: 2_000, + security: 1_000, + securityMax: 2_000, + supplyState: 1, + frontState: 0, + defence: 1_000, + defenceMax: 2_000, + wall: 1_000, + wallMax: 2_000, + meta: {}, +}; + +describe('scenario 903 general-pool composition', () => { + it('feeds the tracked U30 pool into the first 100-NPC event without losing candidate fields', async () => { + const [scenario, seeds] = await Promise.all([ + loadScenarioDefinitionById(903), + loadGeneralPoolEntries('SPoolUnderU30'), + ]); + expect(scenario.config.map.targetGeneralPool).toBe('SPoolUnderU30'); + const createEvent = scenario.events.find( + (event): event is unknown[] => + Array.isArray(event) && + event[0] === 'month' && + event.some((action) => Array.isArray(action) && action[0] === 'CreateManyNPC') + ); + expect(createEvent).toEqual([ + 'month', + 1_000, + ['Date', '==', null, 12], + ['CreateManyNPC', 100, 0], + ['DeleteEvent'], + ]); + const createAction = createEvent?.find( + (action): action is unknown[] => Array.isArray(action) && action[0] === 'CreateManyNPC' + ); + expect(createAction).toBeDefined(); + + const generalPoolEntries: TurnGeneralPoolEntry[] = seeds.map((seed, index) => ({ + id: index + 1, + uniqueName: seed.uniqueName, + ownerUserId: null, + generalId: null, + reservedUntil: null, + reservedUntilTick: null, + candidate: parseScenarioGeneralPoolCandidate({ id: index + 1, ...seed }), + })); + const map = { + id: 'scenario-903-pool-composition', + name: 'scenario 903 pool composition', + cities: [], + defaults: { trust: 50, trade: 100, supplyState: 1, frontState: 0 }, + }; + const state: TurnWorldState = { + id: 1, + currentYear: 180, + currentMonth: 12, + tickSeconds: 600, + lastTurnTime: turnTime, + meta: { hiddenSeed: 'scenario-903-pool-composition' }, + }; + const snapshot: TurnWorldSnapshot = { + scenarioConfig: scenario.config, + scenarioMeta: { + title: scenario.title, + startYear: scenario.startYear, + life: scenario.life, + fiction: scenario.fiction, + history: scenario.history, + ignoreDefaultEvents: scenario.ignoreDefaultEvents, + }, + map, + unitSet: { id: 'test', name: 'test', crewTypes: [] }, + generals: [], + cities: [city], + nations: [], + troops: [], + diplomacy: [], + events: [], + initialEvents: [], + generalPoolEntries, + }; + const world = new InMemoryTurnWorld(state, snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] }, + }); + const reservedTurns = new InMemoryReservedTurnStore( + { + generalTurn: { findMany: vi.fn(), deleteMany: vi.fn(), createMany: vi.fn() }, + nationTurn: { findMany: vi.fn(), deleteMany: vi.fn(), createMany: vi.fn() }, + } as never, + { maxGeneralTurns: 30, maxNationTurns: 12 } + ); + const handler = createCreateManyNpcHandler({ + getWorld: () => world, + reservedTurns, + env: buildCommandEnv(scenario.config), + }); + + await handler( + createAction!.slice(1), + { + year: 180, + month: 12, + startyear: 180, + currentEventID: 1, + turnTime, + }, + { + id: 1, + targetCode: 'month', + priority: 1_000, + condition: true, + action: [], + meta: {}, + } + ); + + const candidatesById = new Map(generalPoolEntries.map((entry) => [entry.id, entry.candidate])); + const created = world.peekDirtyState().createdGenerals; + expect(created).toHaveLength(100); + const claims = created.map((general) => readScenarioGeneralPoolClaim(general.meta)); + expect(new Set(claims.map((claim) => claim?.poolEntryId)).size).toBe(100); + for (const [index, general] of created.entries()) { + const claim = claims[index]; + expect(claim).not.toBeNull(); + const candidate = candidatesById.get(claim!.poolEntryId)!; + expect(general).toMatchObject({ + name: `ⓜ${candidate.name}`, + stats: candidate.stats, + picture: candidate.picture, + imageServer: candidate.imageServer, + role: { specialDomestic: candidate.specialDomestic }, + meta: { + dex1: candidate.dex?.[0], + dex2: candidate.dex?.[1], + dex3: candidate.dex?.[2], + dex4: candidate.dex?.[3], + dex5: candidate.dex?.[4], + }, + }); + } + }); +}); diff --git a/app/game-engine/test/scenarioLoader.test.ts b/app/game-engine/test/scenarioLoader.test.ts index a60cffeb..afb9eaa2 100644 --- a/app/game-engine/test/scenarioLoader.test.ts +++ b/app/game-engine/test/scenarioLoader.test.ts @@ -5,9 +5,31 @@ import { describe, expect, it } from 'vitest'; import { loadScenarioDefinitionById, resolveScenarioDefaultsPath } from '../src/scenario/scenarioLoader.js'; import { buildCommandEnv } from '../src/turn/reservedTurnCommands.js'; +import { hasRefSourceRoot, resolveRefSourceRoot } from './refSourceRoot.js'; type LoadedScenario = Awaited>; +interface ReferenceScenario914 { + title: string; + startYear: number; + map: Record; + history: string[]; + const: { + allItems: Record>; + [key: string]: unknown; + }; + events: unknown[]; +} + +interface ReferenceScenario915 { + title: string; + startYear: number; + map: Record; + history: string[]; + const: Record; + events: unknown[]; +} + const readItemSlot = (scenario: LoadedScenario, slot: string): Record => { const allItems = scenario.config.const.allItems as Record> | undefined; return allItems?.[slot] ?? {}; @@ -16,6 +38,8 @@ const readItemSlot = (scenario: LoadedScenario, slot: string): Record (scenario.config.const.availableSpecialWar as string[] | undefined) ?? []; +const refSourceIt = hasRefSourceRoot() ? it : it.skip; + describe('tracked scenario resources', () => { it('loads every scenario through its composed resource graph', async () => { const scenarioRoot = path.dirname(resolveScenarioDefaultsPath()); @@ -26,11 +50,88 @@ describe('tracked scenario resources', () => { .map((match) => Number(match[1])) .sort((left, right) => left - right); - expect(scenarioIds).toHaveLength(80); + expect(scenarioIds).toContain(914); + expect(scenarioIds).toContain(915); const scenarios = await Promise.all(scenarioIds.map((scenarioId) => loadScenarioDefinitionById(scenarioId))); expect(scenarios.every((scenario) => scenario.title.length > 0)).toBe(true); }); + refSourceIt('preserves the Ref scenario 915 S100 pool and event order exactly', async () => { + const referencePath = path.join(resolveRefSourceRoot(), 'hwe', 'scenario', 'scenario_915.json'); + const [scenario, referenceSource] = await Promise.all([ + loadScenarioDefinitionById(915), + fs.readFile(referencePath, 'utf8').then((raw) => JSON.parse(raw) as ReferenceScenario915), + ]); + + expect(scenario.title).toBe(referenceSource.title); + expect(scenario.startYear).toBe(referenceSource.startYear); + expect(scenario.config.map).toEqual(referenceSource.map); + expect(scenario.history).toEqual(referenceSource.history); + expect(scenario.config.const).toEqual(referenceSource.const); + expect(scenario.events).toEqual(referenceSource.events); + expect( + scenario.events + .filter((entry): entry is unknown[] => Array.isArray(entry) && entry[0] === 'month') + .map((entry) => ({ priority: entry[1], condition: entry[2], actions: entry.slice(3) })) + ).toEqual([ + { priority: 8_000, condition: true, actions: [['AdvanceCentennialAllStar']] }, + { + priority: 1_000, + condition: ['Date', '==', null, 12], + actions: [['CreateManyNPC', 100, 0], ['DeleteEvent']], + }, + { + priority: 1_000, + condition: ['Date', '==', 181, 1], + actions: [['RaiseNPCNation'], ['DeleteEvent']], + }, + { + priority: 999, + condition: ['Date', '==', 181, 1], + actions: [['OpenNationBetting', 4, 5_000], ['OpenNationBetting', 1, 2_000], ['DeleteEvent']], + }, + { + priority: 999, + condition: ['and', ['Date', '>=', 183, 1], ['RemainNation', '<=', 8]], + actions: [['OpenNationBetting', 1, 1_000], ['DeleteEvent']], + }, + ]); + }); + + refSourceIt('preserves the Ref scenario 914 item pool, monthly action order, and deletion markers', async () => { + const referencePath = path.join(resolveRefSourceRoot(), 'hwe', 'scenario', 'scenario_914.json'); + const [scenario, referenceSource] = await Promise.all([ + loadScenarioDefinitionById(914), + fs.readFile(referencePath, 'utf8').then((raw) => JSON.parse(raw) as ReferenceScenario914), + ]); + + expect(scenario.title).toBe(referenceSource.title); + expect(scenario.startYear).toBe(referenceSource.startYear); + expect(scenario.config.map).toEqual(referenceSource.map); + expect(scenario.history).toEqual(referenceSource.history); + expect(scenario.config.const).toEqual(referenceSource.const); + expect(scenario.config.const.allItems).toEqual(referenceSource.const.allItems); + for (const [slot, items] of Object.entries(referenceSource.const.allItems)) { + expect(Object.keys(readItemSlot(scenario, slot))).toEqual(Object.keys(items)); + } + expect(scenario.events).toEqual(referenceSource.events); + + const monthlyActionNames = scenario.events + .filter((event): event is unknown[] => Array.isArray(event) && event[0] === 'month') + .map((event) => + event + .slice(3) + .map((action) => (Array.isArray(action) && typeof action[0] === 'string' ? action[0] : null)) + ); + expect(monthlyActionNames).toEqual([ + ['CreateManyNPC', 'DeleteEvent'], + ['RaiseNPCNation', 'DeleteEvent'], + ['OpenNationBetting', 'OpenNationBetting', 'DeleteEvent'], + ['ChangeCity'], + ['ChangeCity'], + ]); + }); + it('opens nation betting in the first playable year of every scenario 29 variant', async () => { const scenarioIds = [2900, 2901, 2903, 2904]; const scenarios = await Promise.all(scenarioIds.map((scenarioId) => loadScenarioDefinitionById(scenarioId))); diff --git a/app/game-engine/test/selectPoolReleasePersistence.integration.test.ts b/app/game-engine/test/selectPoolReleasePersistence.integration.test.ts index 0cc5633e..019dc151 100644 --- a/app/game-engine/test/selectPoolReleasePersistence.integration.test.ts +++ b/app/game-engine/test/selectPoolReleasePersistence.integration.test.ts @@ -1,10 +1,7 @@ import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { - createGamePostgresConnector, - type GamePrisma, - type GamePrismaClient, -} from '@sammo-ts/infra'; +import { createGamePostgresConnector, type GamePrisma, type GamePrismaClient } from '@sammo-ts/infra'; +import { buildScenarioGeneralPoolClaimMeta } from '@sammo-ts/logic'; import { createDatabaseTurnHooks } from '../src/turn/databaseHooks.js'; import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; @@ -13,6 +10,10 @@ import { loadTurnWorldFromDatabase } from '../src/turn/worldLoader.js'; const databaseUrl = process.env.SELECT_POOL_DATABASE_URL; const integration = describe.skipIf(!databaseUrl); const generalId = 990_904; +const claimedGeneralId = 990_905; +const conflictedGeneralId = 990_906; +const protectedGeneralId = 990_907; +const laterGeneralId = 990_908; const cityId = 990_904; const scenarioCode = 'select-pool-release-integration'; @@ -36,9 +37,23 @@ integration('select pool release during general deletion', () => { await db.$executeRawUnsafe('DROP TABLE IF EXISTS "select_pool_delete_blocker"'); await db.selectPoolEntry.deleteMany({ - where: { uniqueName: 'release-candidate' }, + where: { + uniqueName: { + in: [ + 'release-candidate', + 'claim-candidate', + 'conflict-candidate', + 'early-protected-candidate', + 'later-free-candidate', + ], + }, + }, + }); + await db.general.deleteMany({ + where: { + id: { in: [generalId, claimedGeneralId, conflictedGeneralId, protectedGeneralId, laterGeneralId] }, + }, }); - await db.general.deleteMany({ where: { id: generalId } }); await db.city.deleteMany({ where: { id: cityId } }); await db.worldState.deleteMany({ where: { scenarioCode } }); @@ -154,6 +169,25 @@ integration('select pool release during general deletion', () => { } as GamePrisma.InputJsonValue, }, }); + await db.selectPoolEntry.createMany({ + data: ['claim-candidate', 'conflict-candidate'].map((uniqueName) => ({ + uniqueName, + ownerUserId: null, + generalId: null, + reservedUntil: null, + info: { + uniqueName, + generalName: uniqueName === 'claim-candidate' ? '점유후보' : '충돌후보', + leadership: 70, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [10, 20, 30, 40, 50], + imgsvr: 0, + picture: 'default.jpg', + } as GamePrisma.InputJsonValue, + })), + }); }); afterAll(async () => { @@ -163,9 +197,23 @@ integration('select pool release during general deletion', () => { } await db.$executeRawUnsafe('DROP TABLE IF EXISTS "select_pool_delete_blocker"'); await db.selectPoolEntry.deleteMany({ - where: { uniqueName: 'release-candidate' }, + where: { + uniqueName: { + in: [ + 'release-candidate', + 'claim-candidate', + 'conflict-candidate', + 'early-protected-candidate', + 'later-free-candidate', + ], + }, + }, + }); + await db.general.deleteMany({ + where: { + id: { in: [generalId, claimedGeneralId, conflictedGeneralId, protectedGeneralId, laterGeneralId] }, + }, }); - await db.general.deleteMany({ where: { id: generalId } }); await db.city.deleteMany({ where: { id: cityId } }); await db.worldState.deleteMany({ where: { scenarioCode } }); await closeDb?.(); @@ -201,14 +249,222 @@ integration('select pool release during general deletion', () => { special2Code: 'che_무쌍', }); const reloaded = await loadTurnWorldFromDatabase({ databaseUrl: databaseUrl! }); - expect( - reloaded.snapshot.generals.find((general) => general.id === generalId)?.role - ).toMatchObject({ + expect(reloaded.snapshot.generals.find((general) => general.id === generalId)?.role).toMatchObject({ specialDomestic: 'che_event_신산', specialWar: 'che_무쌍', }); }); + it('claims a pool row in the same fenced transaction that creates the NPC', async () => { + const loaded = await loadTurnWorldFromDatabase({ databaseUrl: databaseUrl! }); + const world = new InMemoryTurnWorld(loaded.state, loaded.snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 5 }] }, + }); + const candidate = world + .listGeneralPoolCandidates(loaded.state.lastTurnTime) + ?.find((entry) => entry.uniqueName === 'claim-candidate'); + expect(candidate).toBeDefined(); + const template = world.getGeneralById(generalId)!; + expect( + world.addGeneral({ + ...structuredClone(template), + id: claimedGeneralId, + userId: null, + name: 'ⓜ점유후보', + npcState: 3, + officerLevel: 0, + meta: { + ...template.meta, + ...buildScenarioGeneralPoolClaimMeta(candidate!, loaded.state.lastTurnTime), + }, + }) + ).toBe(true); + + const hooks = await createDatabaseTurnHooks(databaseUrl!, world); + try { + await hooks.hooks.flushChanges?.({ + lastTurnTime: loaded.state.lastTurnTime.toISOString(), + processedGenerals: 0, + processedTurns: 0, + durationMs: 0, + partial: false, + }); + } finally { + await hooks.close(); + } + + await expect(db.general.findUnique({ where: { id: claimedGeneralId } })).resolves.not.toBeNull(); + await expect( + db.selectPoolEntry.findUniqueOrThrow({ where: { uniqueName: 'claim-candidate' } }) + ).resolves.toMatchObject({ + generalId: claimedGeneralId, + ownerUserId: null, + reservedUntil: null, + reservedUntilTick: null, + }); + }); + + it('rolls back the NPC and pool mutation when a concurrent user reservation wins', async () => { + const loaded = await loadTurnWorldFromDatabase({ databaseUrl: databaseUrl! }); + const world = new InMemoryTurnWorld(loaded.state, loaded.snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 5 }] }, + }); + const candidate = world + .listGeneralPoolCandidates(loaded.state.lastTurnTime) + ?.find((entry) => entry.uniqueName === 'conflict-candidate'); + expect(candidate).toBeDefined(); + const template = world.getGeneralById(generalId)!; + expect( + world.addGeneral({ + ...structuredClone(template), + id: conflictedGeneralId, + userId: null, + name: 'ⓜ충돌후보', + npcState: 3, + officerLevel: 0, + meta: { + ...template.meta, + ...buildScenarioGeneralPoolClaimMeta(candidate!, loaded.state.lastTurnTime), + }, + }) + ).toBe(true); + const reservedUntil = new Date(loaded.state.lastTurnTime.getTime() + 60_000); + await db.selectPoolEntry.update({ + where: { uniqueName: 'conflict-candidate' }, + data: { ownerUserId: 'concurrent-user', reservedUntil }, + }); + + const hooks = await createDatabaseTurnHooks(databaseUrl!, world); + try { + await expect( + hooks.hooks.flushChanges?.({ + lastTurnTime: loaded.state.lastTurnTime.toISOString(), + processedGenerals: 0, + processedTurns: 0, + durationMs: 0, + partial: false, + }) + ).rejects.toThrow('select_pool 후보를 점유하지 못했습니다: conflict-candidate'); + } finally { + await hooks.close(); + } + + await expect(db.general.findUnique({ where: { id: conflictedGeneralId } })).resolves.toBeNull(); + await expect( + db.selectPoolEntry.findUniqueOrThrow({ where: { uniqueName: 'conflict-candidate' } }) + ).resolves.toMatchObject({ + generalId: null, + ownerUserId: 'concurrent-user', + reservedUntil, + }); + }); + + it('checks every NPC claim at its own claimedAt without clearing a later-expiring user reservation', async () => { + const earlyClaimedAt = new Date('2026-07-30T12:00:00.000Z'); + const reservedUntil = new Date('2026-07-30T12:05:00.000Z'); + const laterClaimedAt = new Date('2026-07-30T12:10:00.000Z'); + await db.selectPoolEntry.createMany({ + data: [ + { + uniqueName: 'early-protected-candidate', + ownerUserId: 'protected-user', + generalId: null, + reservedUntil, + info: { + uniqueName: 'early-protected-candidate', + generalName: '보호후보', + leadership: 70, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [10, 20, 30, 40, 50], + imgsvr: 0, + picture: 'default.jpg', + } as GamePrisma.InputJsonValue, + }, + { + uniqueName: 'later-free-candidate', + ownerUserId: null, + generalId: null, + reservedUntil: null, + info: { + uniqueName: 'later-free-candidate', + generalName: '후행후보', + leadership: 70, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [10, 20, 30, 40, 50], + imgsvr: 0, + picture: 'default.jpg', + } as GamePrisma.InputJsonValue, + }, + ], + }); + const loaded = await loadTurnWorldFromDatabase({ databaseUrl: databaseUrl! }); + const world = new InMemoryTurnWorld(loaded.state, loaded.snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 5 }] }, + }); + const entries = world.listGeneralPoolEntries()!; + const protectedCandidate = entries.find((entry) => entry.uniqueName === 'early-protected-candidate')!.candidate; + const laterCandidate = entries.find((entry) => entry.uniqueName === 'later-free-candidate')!.candidate; + const template = world.getGeneralById(generalId)!; + expect( + world.addGeneral({ + ...structuredClone(template), + id: protectedGeneralId, + userId: null, + name: 'ⓜ보호후보', + npcState: 3, + meta: { + ...template.meta, + ...buildScenarioGeneralPoolClaimMeta(protectedCandidate, earlyClaimedAt), + }, + }) + ).toBe(true); + expect( + world.addGeneral({ + ...structuredClone(template), + id: laterGeneralId, + userId: null, + name: 'ⓜ후행후보', + npcState: 3, + meta: { + ...template.meta, + ...buildScenarioGeneralPoolClaimMeta(laterCandidate, laterClaimedAt), + }, + }) + ).toBe(true); + + const hooks = await createDatabaseTurnHooks(databaseUrl!, world); + try { + await expect( + hooks.hooks.flushChanges?.({ + lastTurnTime: loaded.state.lastTurnTime.toISOString(), + processedGenerals: 0, + processedTurns: 0, + durationMs: 0, + partial: false, + }) + ).rejects.toThrow('select_pool 후보를 점유하지 못했습니다: early-protected-candidate'); + } finally { + await hooks.close(); + } + + await expect(db.general.findUnique({ where: { id: protectedGeneralId } })).resolves.toBeNull(); + await expect(db.general.findUnique({ where: { id: laterGeneralId } })).resolves.toBeNull(); + await expect( + db.selectPoolEntry.findUniqueOrThrow({ where: { uniqueName: 'early-protected-candidate' } }) + ).resolves.toMatchObject({ + generalId: null, + ownerUserId: 'protected-user', + reservedUntil, + }); + await expect( + db.selectPoolEntry.findUniqueOrThrow({ where: { uniqueName: 'later-free-candidate' } }) + ).resolves.toMatchObject({ generalId: null, ownerUserId: null, reservedUntil: null }); + }); + it('rolls back a failed flush, then releases all Ref fields before deleting the general', async () => { const loaded = await loadTurnWorldFromDatabase({ databaseUrl: databaseUrl! }); const world = new InMemoryTurnWorld(loaded.state, loaded.snapshot, { @@ -224,9 +480,7 @@ integration('select pool release during general deletion', () => { REFERENCES "general"("id") ON DELETE RESTRICT ) `); - await db.$executeRawUnsafe( - `INSERT INTO "select_pool_delete_blocker" ("general_id") VALUES (${generalId})` - ); + await db.$executeRawUnsafe(`INSERT INTO "select_pool_delete_blocker" ("general_id") VALUES (${generalId})`); await expect( hooks.hooks.flushChanges?.({ diff --git a/app/game-engine/test/selectPoolReservation.test.ts b/app/game-engine/test/selectPoolReservation.test.ts new file mode 100644 index 00000000..2fda41c0 --- /dev/null +++ b/app/game-engine/test/selectPoolReservation.test.ts @@ -0,0 +1,252 @@ +import { describe, expect, it } from 'vitest'; + +import { GAME_TICKS_PER_TURN } from '@sammo-ts/common'; +import { parseScenarioGeneralPoolCandidate } from '@sammo-ts/logic'; + +import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; +import { reserveSelectionPool } from '../src/turn/selectPoolService.js'; +import type { TurnGeneralPoolEntry, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; + +interface TestPoolRow { + id: number; + uniqueName: string; + ownerUserId: string | null; + generalId: number | null; + reservedUntil: Date | null; + reservedUntilTick: bigint | null; + info: Record; +} + +interface PoolWhere { + id?: { in: number[] }; + ownerUserId?: string | null; + generalId?: number | null; + reservedUntil?: null | { lt?: Date; gte?: Date }; + reservedUntilTick?: null | { lt?: bigint; gte?: bigint }; + OR?: PoolWhere[]; +} + +const acceptedAt = new Date('0200-05-01T00:00:00.000Z'); + +const buildRows = (): TestPoolRow[] => + Array.from({ length: 29 }, (_, index) => { + const uniqueName = `P${String(index + 1).padStart(2, '0')}`; + return { + id: index + 1, + uniqueName, + ownerUserId: index === 0 ? 'existing-user' : null, + generalId: null, + reservedUntil: index === 0 ? new Date(acceptedAt.getTime() + 30 * 60_000) : null, + reservedUntilTick: index === 0 ? 3_000_000n : null, + info: { + uniqueName, + generalName: uniqueName, + leadership: 70, + strength: 80, + intel: 10, + specialDomestic: null, + dex: [100 + index, 0, 0, 0, 0], + imgsvr: 0, + picture: 'default.jpg', + }, + }; + }); + +const buildWorld = (rows: TestPoolRow[]): InMemoryTurnWorld => { + const generalPoolEntries: TurnGeneralPoolEntry[] = rows.map((row) => ({ + id: row.id, + uniqueName: row.uniqueName, + ownerUserId: row.ownerUserId, + generalId: row.generalId, + reservedUntil: row.reservedUntil, + reservedUntilTick: row.reservedUntilTick === null ? null : Number(row.reservedUntilTick), + candidate: parseScenarioGeneralPoolCandidate(row), + })); + const state: TurnWorldState = { + id: 1, + currentYear: 200, + currentMonth: 5, + tickSeconds: 300, + lastTurnTime: acceptedAt, + meta: { hiddenSeed: 'selection-reservation-test' }, + }; + const snapshot: TurnWorldSnapshot = { + scenarioConfig: { + stat: { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 75, npcMin: 10, chiefMin: 70 }, + iconPath: '', + map: { targetGeneralPool: 'SPoolUnderU30' }, + const: {}, + environment: { mapName: 'test', unitSet: 'default' }, + }, + map: { + id: 'test', + name: 'test', + cities: [], + defaults: { trust: 50, trade: 100, supplyState: 1, frontState: 0 }, + }, + generals: [], + cities: [], + nations: [], + troops: [], + diplomacy: [], + events: [], + initialEvents: [], + generalPoolEntries, + }; + return new InMemoryTurnWorld(state, snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 5 }] }, + }); +}; + +const matchesPoolWhere = (row: TestPoolRow, where: PoolWhere): boolean => { + if (where.id && !where.id.in.includes(row.id)) { + return false; + } + if (where.ownerUserId !== undefined && row.ownerUserId !== where.ownerUserId) { + return false; + } + if (where.generalId !== undefined && row.generalId !== where.generalId) { + return false; + } + if (where.reservedUntil !== undefined) { + if (where.reservedUntil === null) { + if (row.reservedUntil !== null) { + return false; + } + } else if ( + row.reservedUntil === null || + (where.reservedUntil.lt !== undefined && row.reservedUntil >= where.reservedUntil.lt) || + (where.reservedUntil.gte !== undefined && row.reservedUntil < where.reservedUntil.gte) + ) { + return false; + } + } + if (where.reservedUntilTick !== undefined) { + if (where.reservedUntilTick === null) { + if (row.reservedUntilTick !== null) { + return false; + } + } else if ( + row.reservedUntilTick === null || + (where.reservedUntilTick.lt !== undefined && row.reservedUntilTick >= where.reservedUntilTick.lt) || + (where.reservedUntilTick.gte !== undefined && row.reservedUntilTick < where.reservedUntilTick.gte) + ) { + return false; + } + } + return where.OR === undefined || where.OR.some((alternative) => matchesPoolWhere(row, alternative)); +}; + +const buildDb = (rows: TestPoolRow[]) => ({ + $executeRaw: async () => 0, + general: { + findFirst: async () => null, + }, + selectPoolEntry: { + findMany: async () => structuredClone(rows), + updateMany: async (input: { where: PoolWhere; data: Partial }) => { + let count = 0; + for (const row of rows) { + if (!matchesPoolWhere(row, input.where)) { + continue; + } + Object.assign(row, input.data); + count += 1; + } + return { count }; + }, + }, +}); + +const worldState = { + currentYear: 200, + currentMonth: 5, + tickSeconds: 300, + config: { + npcMode: 2, + turnTermMinutes: 5, + map: { targetGeneralPool: 'SPoolUnderU30' }, + }, + meta: { hiddenSeed: 'selection-reservation-test' }, +}; + +describe('selection-pool reservation command state', () => { + it('excludes current reservations and keeps serialized users disjoint in DB and memory', async () => { + const rows = buildRows(); + const world = buildWorld(rows); + const db = buildDb(rows); + const reserve = (userId: string, acceptedGameTick: number) => + reserveSelectionPool({ + db: db as never, + world, + worldState: worldState as never, + userId, + seedOwnerIdentity: userId, + now: acceptedAt, + acceptedGameTick, + }); + + const first = await reserve('first-user', 0); + const retried = await reserve('first-user', 1); + const second = await reserve('second-user', 2); + + expect(retried).toEqual(first); + expect(first.candidates).toHaveLength(14); + expect(second.candidates).toHaveLength(14); + expect(new Set(first.candidates.map((candidate) => candidate.uniqueName))).not.toContain('P01'); + expect( + first.candidates.some((candidate) => + second.candidates.some((other) => other.uniqueName === candidate.uniqueName) + ) + ).toBe(false); + expect(rows.filter((row) => row.ownerUserId === 'first-user')).toHaveLength(14); + expect(rows.filter((row) => row.ownerUserId === 'second-user')).toHaveLength(14); + expect(rows.find((row) => row.ownerUserId === 'first-user')?.reservedUntilTick).toBe( + BigInt(2 * GAME_TICKS_PER_TURN) + ); + expect(first.validUntil).toBe(world.gameTickToDate(2 * GAME_TICKS_PER_TURN).toISOString()); + expect(world.listGeneralPoolCandidates(acceptedAt)).toEqual([]); + }); + + it('uses Ref nowTick equality and resynchronizes DB expiry into the in-memory pool', async () => { + const rows = buildRows(); + rows[0]!.ownerUserId = 'stale-user'; + rows[0]!.reservedUntil = new Date(acceptedAt.getTime() + 60 * 60_000); + rows[0]!.reservedUntilTick = -1n; + rows[1]!.ownerUserId = 'exact-user'; + rows[1]!.reservedUntil = new Date(acceptedAt.getTime() - 60_000); + rows[1]!.reservedUntilTick = 0n; + const world = buildWorld(rows); + const db = buildDb(rows); + const reserve = (userId: string, acceptedGameTick: number) => + reserveSelectionPool({ + db: db as never, + world, + worldState: worldState as never, + userId, + seedOwnerIdentity: userId, + now: acceptedAt, + acceptedGameTick, + }); + + const first = await reserve('first-user', 0); + + expect(rows[0]!.ownerUserId).not.toBe('stale-user'); + expect(rows[1]).toMatchObject({ ownerUserId: 'exact-user', reservedUntilTick: 0n }); + expect(first.candidates.map((candidate) => candidate.uniqueName)).not.toContain('P02'); + expect(first.validUntil).toBe(world.gameTickToDate(2 * GAME_TICKS_PER_TURN).toISOString()); + + await reserve('second-user', 1); + + expect(rows[1]!.ownerUserId).not.toBe('exact-user'); + const synchronizedById = new Map(world.listGeneralPoolEntries()?.map((entry) => [entry.id, entry])); + for (const row of rows) { + expect(synchronizedById.get(row.id)).toMatchObject({ + ownerUserId: row.ownerUserId, + generalId: row.generalId, + reservedUntil: row.reservedUntil, + reservedUntilTick: row.reservedUntilTick === null ? null : Number(row.reservedUntilTick), + }); + } + }); +}); diff --git a/app/game-engine/test/tournamentCommands.test.ts b/app/game-engine/test/tournamentCommands.test.ts index c00560af..571cf129 100644 --- a/app/game-engine/test/tournamentCommands.test.ts +++ b/app/game-engine/test/tournamentCommands.test.ts @@ -10,7 +10,7 @@ import { buildPersistedRankRows } from '../src/turn/rankData.js'; const schedule: TurnSchedule = { entries: [{ startMinute: 0, tickMinutes: 10 }] }; -const buildGeneral = (id: number, meta: Record = {}): TurnGeneral => ({ +const buildGeneral = (id: number, meta: Record = {}, npcState = 0): TurnGeneral => ({ id, name: `장수${id}`, nationId: 1, @@ -39,7 +39,7 @@ const buildGeneral = (id: number, meta: Record = {}): TurnGenera train: 0, atmos: 0, age: 30, - npcState: 0, + npcState, }); const buildWorld = ( @@ -106,10 +106,7 @@ describe('tournament world commands', () => { }); it('updates the persisted tt rank keys for a tournament match', async () => { - const world = buildWorld([ - buildGeneral(1, { ttg: 10, ttw: 2 }), - buildGeneral(2, { ttg: 5, ttl: 1 }), - ]); + const world = buildWorld([buildGeneral(1, { ttg: 10, ttw: 2 }), buildGeneral(2, { ttg: 5, ttl: 1 })]); const handler = createTurnDaemonCommandHandler({ world }); await expect( @@ -135,6 +132,7 @@ describe('tournament world commands', () => { handler.handle({ type: 'tournamentBettingPayout', bettingId: 1, + tournamentType: 0, payouts: [{ generalId: 1, amount: 500 }], }) ).resolves.toMatchObject({ ok: true, totalPayout: 500 }); @@ -144,6 +142,48 @@ describe('tournament world commands', () => { meta: { betwin: 3, betwingold: 600 }, }); expect(world.getGeneralById(1)?.meta).not.toHaveProperty('rank_betwin'); + expect(world.peekDirtyState().logs).toContainEqual( + expect.objectContaining({ + generalId: 1, + category: 'ACTION', + text: '전력전의 베팅 당첨 보상으로 500의 금 획득!', + }) + ); + }); + + it('pays every winner but records betting ranks only for Ref-eligible generals', async () => { + const world = buildWorld([ + buildGeneral(1, {}, 0), + buildGeneral(2, { betgold: 100 }, 1), + buildGeneral(3, { betgold: 100 }, 2), + ]); + const handler = createTurnDaemonCommandHandler({ world }); + + await expect( + handler.handle({ + type: 'tournamentBettingPayout', + bettingId: 1, + tournamentType: 3, + payouts: [ + { generalId: 1, amount: 2_000 }, + { generalId: 2, amount: 2_000 }, + { generalId: 3, amount: 2_000 }, + ], + }) + ).resolves.toMatchObject({ ok: true, processed: 3, totalPayout: 6_000 }); + + expect(world.getGeneralById(1)).toMatchObject({ gold: 3_000, meta: { betwin: 1, betwingold: 2_000 } }); + expect(world.getGeneralById(2)).toMatchObject({ + gold: 3_000, + meta: { betgold: 100, betwin: 1, betwingold: 2_000 }, + }); + expect(world.getGeneralById(3)).toMatchObject({ gold: 3_000, meta: { betgold: 100 } }); + expect(world.getGeneralById(3)?.meta).not.toHaveProperty('betwin'); + expect(world.peekDirtyState().logs.map((entry) => entry.text)).toEqual([ + '설전의 베팅 당첨 보상으로 2,000의 금 획득!', + '설전의 베팅 당첨 보상으로 2,000의 금 획득!', + '설전의 베팅 당첨 보상으로 2,000의 금 획득!', + ]); }); it('records all four tournament types and NPC betting for at least ten generals', async () => { @@ -174,6 +214,7 @@ describe('tournament world commands', () => { await handler.handle({ type: 'tournamentBettingPayout', bettingId: 1, + tournamentType: 0, payouts: generals.map((general) => ({ generalId: general.id, amount: 2_000 })), }); diff --git a/app/game-engine/test/turnDaemonLifecycle.test.ts b/app/game-engine/test/turnDaemonLifecycle.test.ts index 0b0e7e5b..b69f23fb 100644 --- a/app/game-engine/test/turnDaemonLifecycle.test.ts +++ b/app/game-engine/test/turnDaemonLifecycle.test.ts @@ -241,6 +241,49 @@ describe('TurnDaemonLifecycle', () => { expect(observedTargets[0]?.toISOString()).toBe('2042-01-01T02:59:59.999Z'); }); + it('limits an explicit manual run target to the next monthly boundary', async () => { + const lastTurnTime = new Date('2042-01-01T00:00:00.000Z'); + const requestedTarget = addMinutes(lastTurnTime, 180); + const queue = new InMemoryControlQueue(); + const processor: TurnProcessor = { + run: vi.fn(async (target): Promise => { + queue.enqueue({ type: 'shutdown', reason: 'verified' }); + return { + lastTurnTime: target.toISOString(), + processedGenerals: 1, + processedTurns: 1, + durationMs: 0, + partial: false, + }; + }), + }; + const lifecycle = new TurnDaemonLifecycle( + { + clock: new ManualClock(lastTurnTime.getTime()), + controlQueue: queue, + getNextTickTime: (value) => addMinutes(value, 60), + stateStore: { + loadLastTurnTime: async () => lastTurnTime, + loadNextGeneralTurnTime: async () => addMinutes(lastTurnTime, 30), + saveLastTurnTime: async () => {}, + loadCheckpoint: async () => undefined, + saveCheckpoint: async () => {}, + }, + processor, + }, + { + profile: 'manual-explicit-boundary', + defaultBudget: { budgetMs: 100, maxGenerals: 10, catchUpCap: 1 }, + } + ); + + lifecycle.requestRun('manual', requestedTarget); + await lifecycle.start(); + + expect(processor.run).toHaveBeenCalledOnce(); + expect((processor.run as ReturnType).mock.calls[0]?.[0]).toEqual(addMinutes(lastTurnTime, 60)); + }); + it('produces the same command, RNG, and resource state in realtime and manual modes', async () => { const start = new Date('2042-01-01T00:00:00.000Z'); const runMode = async (mode: 'realtime' | 'manual') => { diff --git a/app/game-engine/test/unificationHandler.test.ts b/app/game-engine/test/unificationHandler.test.ts index 5ca15663..79a7a3e6 100644 --- a/app/game-engine/test/unificationHandler.test.ts +++ b/app/game-engine/test/unificationHandler.test.ts @@ -193,7 +193,16 @@ describe('unification handler', () => { await world.advanceMonth(new Date('0190-07-01T00:00:00.000Z')); expect(observed).toEqual([{ isUnited: undefined, unifier: 2007, previous: 150, spent: 20 }]); - expect(world.getState().meta).toMatchObject({ isUnited: 2, isunited: 2, refreshLimit: 200 }); + expect(world.getState().meta).toMatchObject({ + isUnited: 2, + isunited: 2, + refreshLimit: 200, + dynastyStatistics: { + maxNationCount: 1, + maxGeneralCount: 1, + currentGeneralCount: 1, + }, + }); expect(world.getGeneralById(1)).toMatchObject({ inheritancePoints: { previous: 150, unifier: 2007, tournament: 11 }, meta: { inherit_earned_dyn: 2162.1, inherit_earned: 2167.1, inherit_spent: 20 }, diff --git a/app/game-engine/test/voteReward.test.ts b/app/game-engine/test/voteReward.test.ts index 402f9d06..5583dd4f 100644 --- a/app/game-engine/test/voteReward.test.ts +++ b/app/game-engine/test/voteReward.test.ts @@ -12,8 +12,9 @@ import { } from '@sammo-ts/logic'; import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; +import { normalizeTurnDaemonCommand } from '../src/turn/commandRegistry.js'; import type { TurnGeneral, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; -import { createTurnDaemonCommandHandler } from '../src/turn/worldCommandHandler.js'; +import { createTurnDaemonCommandHandler, hasVotePollDeadlinePassed } from '../src/turn/worldCommandHandler.js'; const buildGeneral = (id: number): TurnGeneral => ({ id, @@ -46,6 +47,39 @@ const buildGeneral = (id: number): TurnGeneral => ({ }); describe('voteReward command', () => { + it('keeps the wall-time fallback open at exact deadline equality', () => { + const deadline = new Date('0180-01-01T00:00:00.000Z'); + + expect(hasVotePollDeadlinePassed({ endAt: deadline, endTick: null, closedAt: null }, deadline, 0)).toBe(false); + expect( + hasVotePollDeadlinePassed( + { endAt: deadline, endTick: null, closedAt: null }, + new Date(deadline.getTime() + 1), + 0 + ) + ).toBe(true); + }); + + it('preserves the server-accepted game tick through durable command normalization', () => { + expect( + normalizeTurnDaemonCommand({ + requestId: 'vote-accepted-tick', + sentAt: '2026-08-23T00:00:00.000Z', + command: { + type: 'voteReward', + voteId: 1, + generalId: 1, + selection: [0], + acceptedGameTick: 100, + }, + }) + ).toMatchObject({ + type: 'voteReward', + requestId: 'vote-accepted-tick', + acceptedGameTick: 100, + }); + }); + it('applies gold, unique item, logs, and idempotency', async () => { const generals = [buildGeneral(1)]; const snapshot: TurnWorldSnapshot = { @@ -117,6 +151,7 @@ describe('voteReward command', () => { iconPath: '', map: {}, const: { + develCost: 100, allItems: { weapon: { che_무기_12_칠성검: 1, @@ -141,12 +176,18 @@ describe('voteReward command', () => { currentMonth: 1, tickSeconds: 3600, lastTurnTime: new Date('0180-01-01T00:00:00Z'), + clockBaseTime: new Date('0180-01-01T00:00:00Z'), + clockTick: 10_000, + clockMode: 'manual', + clockWallAnchor: new Date('2026-08-23T00:00:00Z'), meta: { hiddenSeed: 'seed', scenarioId: 200, initYear: 180, initMonth: 1, scenarioMeta: { startYear: 180 }, + // Simulate ENGINE processing after the yearly develcost update. + develcost: 120, }, }; @@ -179,19 +220,42 @@ describe('voteReward command', () => { expect(itemKey).toBe('che_무기_12_칠성검'); + let voteInserted = false; + let voteQueryCount = 0; + const commandDb = { + auction: { + findMany: async () => [], + }, + $queryRaw: async (query: { strings: readonly string[] }) => { + voteQueryCount += 1; + if (query.strings.join(' ').includes('SELECT options')) { + return [ + { + options: ['찬성'], + multipleOptions: 1, + endAt: null, + endTick: 0n, + closedAt: null, + }, + ]; + } + if (voteInserted) return []; + voteInserted = true; + return [{ id: 11 }]; + }, + }; const handler = createTurnDaemonCommandHandler({ world }); const command = { type: 'voteReward' as const, voteId: 1, generalId: 1, - goldReward: 500, - unique: { - expected: true, - itemKey, - }, + selection: [0], + // Ref accepts the request at exact equality. Engine processing may + // occur after the logical clock has advanced beyond the deadline. + acceptedGameTick: 0, }; - const result = await handler.handle(command); + const result = await handler.handle(command, { db: commandDb as any }); expect(result && result.type).toBe('voteReward'); if (!result || result.type !== 'voteReward' || !result.ok) { throw new Error('voteReward result missing'); @@ -199,7 +263,9 @@ describe('voteReward command', () => { expect(result.awardedUnique).toBe(true); const updated = world.getGeneralById(1); - expect(updated?.gold).toBe(1500); + // ENGINE is the single reward linearization point, so it uses the + // processing world's develcost (120 * 5), not an API projection. + expect(updated?.gold).toBe(1600); expect(updated?.role.items.weapon).toBe('che_무기_12_칠성검'); const meta = updated?.meta as Record; expect(meta.voteRewards).toMatchObject({ @@ -213,7 +279,7 @@ describe('voteReward command', () => { const logTexts = diff.logs.map((entry) => entry.text); expect(logTexts.some((text) => text.includes('【설문조사】'))).toBe(true); - const second = await handler.handle(command); + const second = await handler.handle(command, { db: commandDb as any }); expect(second && second.type).toBe('voteReward'); if (!second || second.type !== 'voteReward' || !second.ok) { throw new Error('voteReward second result missing'); @@ -221,7 +287,108 @@ describe('voteReward command', () => { expect(second.alreadyApplied).toBe(true); expect(second.itemKey).toBe('che_무기_12_칠성검'); const afterSecond = world.getGeneralById(1); - expect(afterSecond?.gold).toBe(1500); + expect(afterSecond?.gold).toBe(1600); + expect(voteQueryCount).toBe(2); + + const duplicateWorld = new InMemoryTurnWorld( + { ...state, meta: { ...state.meta } }, + { ...snapshot, generals: [buildGeneral(1)] as any }, + { schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] } } + ); + const duplicateHandler = createTurnDaemonCommandHandler({ world: duplicateWorld }); + const duplicateResult = await duplicateHandler.handle(command, { + db: { + auction: { findMany: async () => [] }, + $queryRaw: async (query: { strings: readonly string[] }) => { + const text = query.strings.join(' '); + if (text.includes('SELECT options')) { + return [ + { + options: ['찬성'], + multipleOptions: 1, + endAt: null, + endTick: 0n, + closedAt: null, + }, + ]; + } + if (text.includes('SELECT selection')) return [{ selection: [0] }]; + return []; + }, + } as any, + }); + expect(duplicateResult).toMatchObject({ + type: 'voteReward', + ok: true, + awardedUnique: true, + }); + expect(duplicateWorld.getGeneralById(1)?.gold).toBe(1600); + expect(duplicateWorld.getGeneralById(1)?.role.items.weapon).toBe('che_무기_12_칠성검'); + + const mismatchWorld = new InMemoryTurnWorld( + { ...state, meta: { ...state.meta } }, + { ...snapshot, generals: [buildGeneral(1)] as any }, + { schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] } } + ); + const mismatchHandler = createTurnDaemonCommandHandler({ world: mismatchWorld }); + const mismatchResult = await mismatchHandler.handle(command, { + db: { + auction: { findMany: async () => [] }, + $queryRaw: async (query: { strings: readonly string[] }) => { + const text = query.strings.join(' '); + if (text.includes('SELECT options')) { + return [ + { + options: ['찬성'], + multipleOptions: 1, + endAt: null, + endTick: 0n, + closedAt: null, + }, + ]; + } + if (text.includes('SELECT selection')) return [{ selection: [1] }]; + return []; + }, + } as any, + }); + expect(mismatchResult).toMatchObject({ + type: 'voteReward', + ok: false, + reason: '이미 설문조사를 완료하였습니다.', + }); + expect(mismatchWorld.getGeneralById(1)?.gold).toBe(1000); + expect(mismatchWorld.getGeneralById(1)?.role.items.weapon).toBeNull(); + expect(mismatchWorld.consumeDirtyState().logs).toEqual([]); + + const legacyLateWorld = new InMemoryTurnWorld( + { ...state, meta: { ...state.meta } }, + { ...snapshot, generals: [buildGeneral(1)] as any }, + { schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] } } + ); + const legacyLateHandler = createTurnDaemonCommandHandler({ world: legacyLateWorld }); + const { acceptedGameTick: _acceptedGameTick, ...legacyLateCommand } = command; + const legacyLateResult = await legacyLateHandler.handle(legacyLateCommand, { + db: { + $queryRaw: async (query: { strings: readonly string[] }) => + query.strings.join(' ').includes('SELECT options') + ? [ + { + options: ['찬성'], + multipleOptions: 1, + endAt: null, + endTick: 0n, + closedAt: null, + }, + ] + : [], + } as any, + }); + expect(legacyLateResult).toMatchObject({ + type: 'voteReward', + ok: false, + reason: '설문조사가 종료되었습니다.', + }); }); it('treats an active unique auction as occupied when revalidating the lottery', async () => { @@ -245,6 +412,7 @@ describe('voteReward command', () => { iconPath: '', map: {}, const: { + develCost: 100, allItems: { weapon: { che_무기_12_칠성검: 1 } }, maxUniqueItemLimit: [[-1, 1]], uniqueTrialCoef: 10, @@ -278,6 +446,18 @@ describe('voteReward command', () => { auction: { findMany: async () => [{ targetCode: 'che_무기_12_칠성검' }], }, + $queryRaw: async (query: { strings: readonly string[] }) => + query.strings.join(' ').includes('SELECT options') + ? [ + { + options: ['찬성'], + multipleOptions: 1, + endAt: null, + endTick: 0n, + closedAt: null, + }, + ] + : [{ id: 12 }], }; const result = await handler.handle( @@ -285,8 +465,7 @@ describe('voteReward command', () => { type: 'voteReward', voteId: 1, generalId: 1, - goldReward: 500, - unique: { expected: false, itemKey: null }, + selection: [0], }, { db: commandDb as any } ); diff --git a/app/game-engine/test/yearbookHandler.test.ts b/app/game-engine/test/yearbookHandler.test.ts new file mode 100644 index 00000000..e0d851af --- /dev/null +++ b/app/game-engine/test/yearbookHandler.test.ts @@ -0,0 +1,192 @@ +import { describe, expect, it } from 'vitest'; +import type { City, Nation } from '@sammo-ts/logic'; + +import { InMemoryTurnWorld } from '../src/turn/inMemoryWorld.js'; +import { createDynastyStatisticsHandler, queueYearbookSnapshot } from '../src/turn/yearbookHandler.js'; +import type { TurnGeneral, TurnWorldSnapshot, TurnWorldState } from '../src/turn/types.js'; + +const turnTime = new Date('0200-01-01T00:00:00.000Z'); + +const buildGeneral = (id: number, nationId: number): TurnGeneral => ({ + id, + name: `장수${id}`, + nationId, + cityId: nationId, + troopId: 0, + stats: { leadership: 80, strength: 70, intelligence: 60 }, + experience: 1_000, + dedication: 900, + officerLevel: 1, + role: { + personality: null, + specialDomestic: null, + specialWar: null, + items: { horse: null, weapon: null, book: null, item: null }, + }, + injury: 0, + gold: 2_000, + rice: 2_000, + crew: 0, + crewTypeId: 0, + train: 0, + atmos: 0, + age: 30, + npcState: nationId === 0 ? 2 : 0, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + meta: { killturn: 24 }, + turnTime, +}); + +const buildCity = (id: number, nationId: number): City => ({ + id, + name: `도시${id}`, + nationId, + level: 1, + state: 0, + population: 10_000, + populationMax: 20_000, + agriculture: 1_000, + agricultureMax: 2_000, + commerce: 1_000, + commerceMax: 2_000, + security: 1_000, + securityMax: 2_000, + supplyState: 1, + frontState: 0, + defence: 1_000, + defenceMax: 2_000, + wall: 1_000, + wallMax: 2_000, + meta: {}, +}); + +const buildNation = (id: number, power: number, meta: Nation['meta']): Nation => ({ + id, + name: id === 0 ? '재야' : `국가${id}`, + color: '#777777', + capitalCityId: id === 0 ? null : id, + chiefGeneralId: null, + gold: 10_000, + rice: 20_000, + power, + level: id === 0 ? 0 : 1, + typeCode: 'che_중립', + meta, +}); + +type YearbookNationProjection = { + id: number; + name: string; + color: string; + level: number; + power: number; + generalCount: number; +}; + +describe('yearbook nation projection', () => { + it('archives stored nation power/count, preserves zero, and fixes the synthetic neutral values', async () => { + const state: TurnWorldState = { + id: 1, + currentYear: 200, + currentMonth: 1, + tickSeconds: 600, + lastTurnTime: turnTime, + meta: { serverId: 'yearbook-projection-test' }, + }; + const snapshot: TurnWorldSnapshot = { + scenarioConfig: { + stat: { total: 300, min: 10, max: 100, npcTotal: 150, npcMax: 50, npcMin: 10, chiefMin: 70 }, + iconPath: '', + map: {}, + const: {}, + environment: { mapName: 'test', unitSet: 'test' }, + }, + scenarioMeta: { + title: '연감 테스트', + startYear: 200, + life: null, + fiction: 0, + history: [], + ignoreDefaultEvents: false, + }, + map: { id: 'test', name: 'test', cities: [] }, + nations: [ + { + ...buildNation(0, 90, { gennum: 90, tech: 90 }), + name: '오염된 재야', + color: '#ffffff', + level: 9, + }, + buildNation(1, 777, { gennum: 9, tech: 100 }), + buildNation(2, 0, { tech: 100 }), + ], + cities: [buildCity(0, 0), buildCity(1, 1), buildCity(2, 2)], + generals: [ + buildGeneral(1, 0), + buildGeneral(2, 0), + buildGeneral(3, 1), + buildGeneral(4, 2), + buildGeneral(5, 2), + ], + troops: [], + diplomacy: [], + events: [], + initialEvents: [], + }; + const world = new InMemoryTurnWorld(state, snapshot, { + schedule: { entries: [{ startMinute: 0, tickMinutes: 10 }] }, + }); + + queueYearbookSnapshot(world, 'che', 200, 1); + + const pending = world.peekDirtyState().pendingYearbookSnapshots[0]; + if (!pending) { + throw new Error('expected a queued yearbook snapshot'); + } + const nations = pending.nations as YearbookNationProjection[]; + expect(nations.map((nation) => nation.id)).toEqual([1, 0, 2]); + expect(nations).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: 0, + name: '재야', + color: '#000000', + level: 0, + power: 1, + generalCount: 1, + }), + expect.objectContaining({ id: 1, power: 777, generalCount: 9 }), + expect.objectContaining({ id: 2, power: 0, generalCount: 2 }), + ]) + ); + + // The contamination above exists only to exercise the archive + // projection. Runtime nation zero is normally level zero. + world.updateNation(0, { level: 0 }); + + const dynastyHandler = createDynastyStatisticsHandler({ getWorld: () => world }).handler; + await dynastyHandler.onMonthChanged?.({ + previousYear: 200, + previousMonth: 1, + currentYear: 200, + currentMonth: 2, + turnTime, + }); + expect(world.getState().meta.dynastyStatistics).toBeUndefined(); + + await dynastyHandler.onMonthChanged?.({ + previousYear: 200, + previousMonth: 12, + currentYear: 201, + currentMonth: 1, + turnTime, + }); + expect(world.getState().meta.dynastyStatistics).toMatchObject({ + maxNationCount: 2, + maxGeneralCount: 5, + currentGeneralCount: 5, + userGeneralCount: 3, + npcGeneralCount: 2, + }); + }); +}); diff --git a/package.json b/package.json index b43bb606..f652364e 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "sync:image": "node tools/sync-image-repository.mjs", "check:legacy:nation": "node tools/compare-command-constraints.mjs --include '^Nation/' --check && node tools/compare-command-logs.mjs --include '^Nation/' --mode action --check", "check:legacy:general": "node tools/compare-command-constraints.mjs --include '^General/' --check && node tools/compare-command-logs.mjs --include '^General/' --mode action --check && node tools/compare-general-turn-contracts.mjs --check", + "check:legacy:scenario": "SAMMO_REQUIRE_REF_SOURCE=1 pnpm --filter @sammo-ts/game-engine test monthlyCatalogCoverage.test.ts scenarioLoader.test.ts scenarioComposition.test.ts", "check:ref-compat-markers": "node tools/check-ref-compat-markers.mjs", "check:architecture": "node tools/check-package-boundaries.mjs", "check:typescript-toolchain": "node tools/check-typescript-toolchain.mjs", diff --git a/packages/common/src/turnDaemon/types.ts b/packages/common/src/turnDaemon/types.ts index 8b3aaf1b..e8e8c95f 100644 --- a/packages/common/src/turnDaemon/types.ts +++ b/packages/common/src/turnDaemon/types.ts @@ -54,6 +54,31 @@ export interface RuntimeGameSettingsPatch { autorunUser?: RuntimeAutorunUserSettings | null; } +export interface TurnDaemonSelectPoolCandidate { + uniqueName: string; + generalName: string; + leadership: number; + strength: number; + intel: number; + specialDomestic: string | null; + specialDomesticName: string | null; + specialDomesticInfo: string; + specialWar: string | null; + specialWarName: string | null; + specialWarInfo: string; + ego: string | null; + dex: [number, number, number, number, number]; + imageServer: 0 | 1; + picture: string; +} + +export interface TurnDaemonSelectPoolReservation { + poolName: string; + hasGeneral: boolean; + validUntil: string; + candidates: TurnDaemonSelectPoolCandidate[]; +} + export type TurnDaemonCommand = | { type: 'run'; @@ -118,7 +143,13 @@ export type TurnDaemonCommand = }; } | { type: 'dropItem'; requestId?: string; generalId: number; itemType: string } - | { type: 'auctionFinalize'; requestId?: string; auctionId: number } + | { + type: 'auctionFinalize'; + requestId?: string; + auctionId: number; + expectedCloseAt?: string; + expectedCloseTick?: number; + } | { type: 'auctionOpen'; requestId?: string; @@ -160,6 +191,7 @@ export type TurnDaemonCommand = type: 'tournamentBettingPayout'; requestId?: string; bettingId?: number; + tournamentType?: number; reason?: string; payouts: Array<{ generalId: number; @@ -181,11 +213,8 @@ export type TurnDaemonCommand = requestId?: string; voteId: number; generalId: number; - goldReward: number; - unique?: { - expected: boolean; - itemKey?: string | null; - }; + selection: number[]; + acceptedGameTick?: number; } | { type: 'setNationMeta'; @@ -280,6 +309,14 @@ export type TurnDaemonCommand = tokenNonce: number; acceptedGameAt?: string; } + | { + type: 'selectPoolReserve'; + requestId?: string; + userId: string; + seedOwnerIdentity: string | number; + acceptedGameAt: string; + acceptedGameTick?: number; + } | { type: 'selectPoolCreate'; requestId?: string; @@ -291,6 +328,8 @@ export type TurnDaemonCommand = ownerPicture?: string; ownerImageServer?: number; ownerIconRevision?: string; + acceptedGameAt?: string; + acceptedGameTick?: number; } | { type: 'selectPoolReselect'; @@ -298,6 +337,8 @@ export type TurnDaemonCommand = userId: string; ownerDisplayName: string; uniqueName: string; + acceptedGameAt?: string; + acceptedGameTick?: number; } | { type: 'auctionBid'; @@ -305,6 +346,7 @@ export type TurnDaemonCommand = auctionId: number; generalId: number; amount: number; + acceptedGameTick?: number; tryExtendCloseDate?: boolean; }; @@ -628,6 +670,17 @@ export type TurnDaemonCommandResult = code: 'BAD_REQUEST' | 'NOT_FOUND' | 'PRECONDITION_FAILED' | 'CONFLICT' | 'INTERNAL_SERVER_ERROR'; reason: string; } + | { + type: 'selectPoolReserve'; + ok: true; + reservation: TurnDaemonSelectPoolReservation; + } + | { + type: 'selectPoolReserve'; + ok: false; + code: 'BAD_REQUEST' | 'PRECONDITION_FAILED' | 'CONFLICT' | 'INTERNAL_SERVER_ERROR'; + reason: string; + } | { type: 'selectPoolCreate'; ok: true; diff --git a/packages/infra/src/turnEngineDb.ts b/packages/infra/src/turnEngineDb.ts index f9c47f04..7eb2b1b8 100644 --- a/packages/infra/src/turnEngineDb.ts +++ b/packages/infra/src/turnEngineDb.ts @@ -147,6 +147,16 @@ export interface TurnEngineEventRow { meta: JsonValue; } +export interface TurnEngineSelectPoolEntryRow { + id: number; + uniqueName: string; + ownerUserId: string | null; + generalId: number | null; + reservedUntil: Date | null; + reservedUntilTick: bigint | null; + info: JsonValue; +} + export interface TurnEngineGeneralTurnRow { generalId: number; turnIdx: number; @@ -460,6 +470,9 @@ export interface TurnEngineDatabaseClient { createMany(args: { data: TurnEngineEventCreateManyInput[] }): Promise; deleteMany(args?: unknown): Promise; }; + selectPoolEntry: { + findMany(args?: unknown): Promise; + }; logEntry: { createMany(args: { data: TurnEngineLogEntryCreateManyInput[] }): Promise; }; diff --git a/packages/logic/src/actions/index.ts b/packages/logic/src/actions/index.ts index 62ff2d7a..d4a344c3 100644 --- a/packages/logic/src/actions/index.ts +++ b/packages/logic/src/actions/index.ts @@ -2,6 +2,7 @@ export * from './definition.js'; export * from './engine.js'; export * from './turn/commandEnv.js'; export * from './turn/actionContext.js'; +export * from './turn/generalPool.js'; export * from './turn/commandModule.js'; export * from './turn/commandProfile.js'; export * from './turn/general/index.js'; diff --git a/packages/logic/src/actions/turn/actionContext.ts b/packages/logic/src/actions/turn/actionContext.ts index 5b5b4e22..c730b2cb 100644 --- a/packages/logic/src/actions/turn/actionContext.ts +++ b/packages/logic/src/actions/turn/actionContext.ts @@ -4,6 +4,7 @@ import type { ScenarioConfig } from '@sammo-ts/logic/scenario/types.js'; import type { ScenarioMeta } from '@sammo-ts/logic/world/types.js'; import type { MapDefinition, UnitSetDefinition } from '@sammo-ts/logic/world/types.js'; import type { GeneralWorldView } from '@sammo-ts/logic/triggers/general.js'; +import type { ScenarioGeneralPoolCandidate } from '@sammo-ts/logic/actions/turn/generalPool.js'; export interface ActionRandomSource { nextFloat1(): number; @@ -27,6 +28,7 @@ export type ActionContextBase = { month: number; startYear: number; }; + maxTechLevel?: number; }; export type ActionResolveContext = ActionContextBase & Record; @@ -50,6 +52,7 @@ export interface ActionContextWorldRef { toNationId: number; state: number; }>; + listGeneralPoolCandidates?(claimedAt: Date): ScenarioGeneralPoolCandidate[] | undefined; getDiplomacyEntry( fromNationId: number, toNationId: number diff --git a/packages/logic/src/actions/turn/actionContextHelpers.ts b/packages/logic/src/actions/turn/actionContextHelpers.ts index 18a85787..59a9eb3d 100644 --- a/packages/logic/src/actions/turn/actionContextHelpers.ts +++ b/packages/logic/src/actions/turn/actionContextHelpers.ts @@ -209,6 +209,7 @@ export const buildWarConfig = (scenarioConfig: ScenarioConfig, unitSet: UnitSetD maxAtmosByCommand: resolveNumber(constValues, ['maxAtmosByCommand'], DEFAULT_WAR_CONFIG.maxAtmosByCommand), maxTrainByWar: resolveNumber(constValues, ['maxTrainByWar'], DEFAULT_WAR_CONFIG.maxTrainByWar), maxAtmosByWar: resolveNumber(constValues, ['maxAtmosByWar'], DEFAULT_WAR_CONFIG.maxAtmosByWar), + maxTechLevel: resolveNumber(constValues, ['maxTechLevel'], DEFAULT_AFTER_CONFIG.maxTechLevel), maxGeneralStat: resolveNumber(constValues, ['maxLevel'], LEGACY_DEFAULT_MAX_LEVEL), statUpgradeLimit: resolveNumber(constValues, ['upgradeLimit'], 30), castleCrewTypeId, diff --git a/packages/logic/src/actions/turn/general/che_숙련전환.ts b/packages/logic/src/actions/turn/general/che_숙련전환.ts index be1304f0..668851f9 100644 --- a/packages/logic/src/actions/turn/general/che_숙련전환.ts +++ b/packages/logic/src/actions/turn/general/che_숙련전환.ts @@ -12,6 +12,7 @@ import { JosaUtil } from '@sammo-ts/common'; import { getMetaNumber, setMetaNumber, increaseMetaNumber } from '@sammo-ts/logic/war/utils.js'; import { z } from 'zod'; import { parseArgsWithSchema } from '../parseArgs.js'; +import { reconcileCentennialDexConversion } from '@sammo-ts/logic/scenario/centennialAllStar.js'; export interface DexTransferContext< TriggerState extends GeneralTriggerState = GeneralTriggerState, @@ -82,11 +83,24 @@ export class ActionDefinition< const srcKey = `dex${args.srcArmType}`; const destKey = `dex${args.destArmType}`; const srcDex = getMetaNumber(general.meta, srcKey, 0); + const destDex = getMetaNumber(general.meta, destKey, 0); const cutDex = Math.trunc(srcDex * DECREASE_COEFF); const addDex = Math.trunc(cutDex * CONVERT_COEFF); setMetaNumber(general.meta, srcKey, srcDex - cutDex); - setMetaNumber(general.meta, destKey, getMetaNumber(general.meta, destKey, 0) + addDex); + setMetaNumber(general.meta, destKey, destDex + addDex); + if (args.srcArmType <= 5 && args.destArmType <= 5) { + general.meta = reconcileCentennialDexConversion( + general.meta, + srcKey as `dex${1 | 2 | 3 | 4 | 5}`, + destKey as `dex${1 | 2 | 3 | 4 | 5}`, + srcDex, + srcDex - cutDex, + destDex, + destDex + addDex, + CONVERT_COEFF + ); + } const srcName = resolveArmTypeName(context.unitSet, args.srcArmType); const destName = resolveArmTypeName(context.unitSet, args.destArmType); diff --git a/packages/logic/src/actions/turn/general/che_인재탐색.ts b/packages/logic/src/actions/turn/general/che_인재탐색.ts index a603ebba..920ca320 100644 --- a/packages/logic/src/actions/turn/general/che_인재탐색.ts +++ b/packages/logic/src/actions/turn/general/che_인재탐색.ts @@ -20,22 +20,44 @@ import { createGeneralAddEffect } from '@sammo-ts/logic/actions/engine.js'; import { LogCategory, LogFormat, LogScope } from '@sammo-ts/logic/logging/types.js'; import { buildRecruitmentGeneral } from './recruitment.js'; import type { ActionContextBuilder } from '@sammo-ts/logic/actions/turn/actionContext.js'; -import { buildWorldSummary } from '@sammo-ts/logic/actions/turn/actionContextHelpers.js'; +import { buildWorldSummary, resolveStartYear } from '@sammo-ts/logic/actions/turn/actionContextHelpers.js'; import type { TurnCommandEnv } from '@sammo-ts/logic/actions/turn/commandEnv.js'; import { tryApplyUniqueLottery } from '@sammo-ts/logic/rewards/uniqueLottery.js'; import type { GeneralTurnCommandSpec } from './index.js'; +import { + buildScenarioGeneralPoolClaimMeta, + pickUniqueScenarioGeneralPoolCandidates, + resolveLegacyNpcStatTypeFromFixedStats, + type ScenarioGeneralPoolCandidate, +} from '@sammo-ts/logic/actions/turn/generalPool.js'; +import { + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + applyCentennialAllStarTarget, + initializeCentennialGeneratedNpc, + readCentennialAllStarPoolTarget, + resolveCentennialAllStarRules, + resolveCentennialNpcDexTargetRatio, + type CentennialAllStarRules, +} from '@sammo-ts/logic/scenario/centennialAllStar.js'; export interface TalentScoutArgs {} export interface TalentScoutCandidate { name: string; + poolEntryId?: number; + uniqueName?: string; stats?: Partial; + dex?: [number, number, number, number, number]; personality?: string | null; affinity?: number | null; specialDomestic?: string | null; specialWar?: string | null; picture?: number | string | null; + imageServer?: number; text?: string | null; + experience?: number; + dedication?: number; + sourceInfo?: Record; } export interface TalentScoutWorldSummary { @@ -50,9 +72,12 @@ export interface TalentScoutResolveContext< > extends GeneralActionResolveContext { currentYear: number; currentMonth: number; + startYear: number; retirementYear: number; + centennialRules: CentennialAllStarRules; + centennialNpcDexTargetRatio: number; worldSummary: TalentScoutWorldSummary; - generalPool?: TalentScoutCandidate[]; + generalPool?: ScenarioGeneralPoolCandidate[]; cityPool?: City[]; existingGeneralNames: string[]; createGeneralId: () => number; @@ -228,11 +253,10 @@ const resolveCandidate = ( return env.pickCandidate(context, rng); } const pool = context.generalPool ?? []; - if (pool.length === 0) { + if (context.generalPool === undefined) { return null; } - const idx = legacyChoiceIndex(rng, pool.length); - return pool[idx] ?? null; + return pickUniqueScenarioGeneralPoolCandidates(rng, pool, 1)[0] ?? null; }; const resolveSpawnCityId = ( @@ -371,51 +395,66 @@ export class ActionResolver< this.env.maxDeathYears ?? DEFAULT_DEATH_MAX ); const candidate = resolveCandidate(context, context.rng, this.env); + const centennialTarget = + candidate?.sourceInfo && candidate.uniqueName + ? readCentennialAllStarPoolTarget({ + uniqueName: candidate.uniqueName, + name: candidate.name, + sourceInfo: candidate.sourceInfo, + }) + : null; const firstNames = this.env.randomGeneralFirstNames ?? ['가']; const middleNames = this.env.randomGeneralMiddleNames ?? ['']; const lastNames = this.env.randomGeneralLastNames ?? ['가']; - let generatedName: string; - let duplicateLoopCount = 0; - while (true) { - generatedName = `${legacyChoice(context.rng, firstNames)}${legacyChoice( - context.rng, - middleNames - )}${legacyChoice(context.rng, lastNames)}`; - const duplicateCount = countLegacyNameDuplicates(context.existingGeneralNames, generatedName); - if (duplicateCount === 0) { - break; + let generatedName: string | null = null; + if (!candidate) { + let duplicateLoopCount = 0; + while (true) { + generatedName = `${legacyChoice(context.rng, firstNames)}${legacyChoice( + context.rng, + middleNames + )}${legacyChoice(context.rng, lastNames)}`; + const duplicateCount = countLegacyNameDuplicates(context.existingGeneralNames, generatedName); + if (duplicateCount === 0) { + break; + } + if (duplicateLoopCount >= 99 || duplicateCount < 2) { + generatedName += duplicateCount + 1; + break; + } + duplicateLoopCount += 1; } - if (duplicateLoopCount >= 99 || duplicateCount < 2) { - generatedName += duplicateCount + 1; - break; - } - duplicateLoopCount += 1; } const newGeneralId = context.createGeneralId(); - const resolvedCandidate: TalentScoutCandidate = candidate ?? { name: generatedName }; + const resolvedCandidate: TalentScoutCandidate = candidate ?? { name: generatedName! }; const affinity = randomRangeInt(context.rng, 1, 150); const npcStatTotal = this.env.npcStatTotal ?? 150; const npcStatMin = this.env.npcStatMin ?? 10; const npcStatMax = this.env.npcStatMax ?? 50; - const pickType = pickByWeight(context.rng, { 무: 6, 지: 6, 무지: 3 }); - const mainStat = npcStatMax - randomRangeInt(context.rng, 0, npcStatMin); - const otherStat = npcStatMin + randomRangeInt(context.rng, 0, Math.trunc(npcStatMin / 2)); - const subStat = npcStatTotal - mainStat - otherStat; - let generatedStats: StatBlock; - if (pickType === '무') { - generatedStats = { leadership: subStat, strength: mainStat, intelligence: otherStat }; - } else if (pickType === '지') { - generatedStats = { leadership: subStat, strength: otherStat, intelligence: mainStat }; + let pickType: '무' | '지' | '무지'; + let stats: StatBlock; + if (candidate?.stats && !centennialTarget) { + stats = resolveStats(context, context.rng, this.env, resolvedCandidate); + pickType = resolveLegacyNpcStatTypeFromFixedStats(context.rng, stats); } else { - generatedStats = { leadership: otherStat, strength: subStat, intelligence: mainStat }; + pickType = pickByWeight(context.rng, { 무: 6, 지: 6, 무지: 3 }); + const mainStat = npcStatMax - randomRangeInt(context.rng, 0, npcStatMin); + const otherStat = npcStatMin + randomRangeInt(context.rng, 0, Math.trunc(npcStatMin / 2)); + const subStat = npcStatTotal - mainStat - otherStat; + if (pickType === '무') { + stats = { leadership: subStat, strength: mainStat, intelligence: otherStat }; + } else if (pickType === '지') { + stats = { leadership: subStat, strength: otherStat, intelligence: mainStat }; + } else { + stats = { leadership: otherStat, strength: subStat, intelligence: mainStat }; + } } - const stats = candidate?.stats - ? resolveStats(context, context.rng, this.env, resolvedCandidate) - : generatedStats; const averageDex = context.worldSummary.averageDex ?? [0, 0, 0, 0, 0]; const dexTotal = averageDex[0] + averageDex[1] + averageDex[2] + averageDex[3]; let dex: [number, number, number, number, number]; - if (pickType === '무') { + if (candidate?.dex?.[0] && !centennialTarget) { + dex = candidate.dex; + } else if (pickType === '무') { const distributions = [ [(dexTotal * 5) / 8, dexTotal / 8, dexTotal / 8, dexTotal / 8], [dexTotal / 8, (dexTotal * 5) / 8, dexTotal / 8, dexTotal / 8], @@ -469,11 +508,14 @@ export class ActionResolver< dex5: dex[4], turnSecond, turnFraction, + ...(candidate && candidate.poolEntryId !== undefined && candidate.uniqueName + ? buildScenarioGeneralPoolClaimMeta(candidate as ScenarioGeneralPoolCandidate, context.turnTimeBase) + : {}), }; addMetaValue(meta, 'picture', resolvedCandidate.picture ?? null); addMetaValue(meta, 'text', resolvedCandidate.text ?? null); - const newGeneral = { + let newGeneral = { ...buildRecruitmentGeneral({ id: newGeneralId, name, @@ -485,8 +527,8 @@ export class ActionResolver< npcState: NPC_TYPE, gold: this.env.defaultNpcGold, rice: this.env.defaultNpcRice, - experience: age * 100, - dedication: age * 100, + experience: resolvedCandidate.experience || age * 100, + dedication: resolvedCandidate.dedication || age * 100, crewTypeId: this.env.defaultCrewTypeId, role: { personality, @@ -500,7 +542,25 @@ export class ActionResolver< bornYear: birthYear, deadYear: deathYear, affinity, + imageServer: resolvedCandidate.imageServer ?? 0, + picture: resolvedCandidate.picture ?? 'default.jpg', }; + if (centennialTarget) { + const initialized = initializeCentennialGeneratedNpc(newGeneral, centennialTarget, context.centennialRules); + const growth = applyCentennialAllStarTarget( + { ...newGeneral, ...initialized }, + centennialTarget, + { + startYear: context.startYear, + year: context.currentYear, + month: context.currentMonth, + }, + context.centennialRules, + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + context.centennialNpcDexTargetRatio + ); + newGeneral = { ...newGeneral, stats: growth.stats, role: growth.role, meta: growth.meta }; + } const recruitVerb = '발견'; const nameRa = JosaUtil.pick(name, '라'); @@ -578,10 +638,13 @@ export const actionContextBuilder: ActionContextBuilder = (base, options) => ({ ...base, currentYear: options.world.currentYear, currentMonth: options.world.currentMonth, + startYear: resolveStartYear(options.world, options.scenarioMeta), retirementYear: typeof options.scenarioConfig.const.retirementYear === 'number' ? options.scenarioConfig.const.retirementYear : 80, + centennialRules: resolveCentennialAllStarRules(options.scenarioConfig), + centennialNpcDexTargetRatio: resolveCentennialNpcDexTargetRatio(options.scenarioConfig), worldSummary: { ...buildWorldSummary(options.worldRef), averageDex: (() => { @@ -605,6 +668,11 @@ export const actionContextBuilder: ActionContextBuilder = (base, options) => ({ // AbsGeneralPool::checkDuplicatedCnt semantics; the duplicated ⓝ prefix in // GeneralBuilder::$prefixList intentionally counts NPC matches twice. existingGeneralNames: options.worldRef?.listGenerals().map(restoreLegacyStoredName) ?? [], + ...(() => { + const claimedAt = options.world.lastTurnTime ?? base.general.turnTime; + const generalPool = options.worldRef?.listGeneralPoolCandidates?.(claimedAt); + return generalPool === undefined ? {} : { generalPool }; + })(), createGeneralId: options.createGeneralId, turnTermMinutes: Math.max(1, Math.round(options.world.tickSeconds / 60)), // GeneralBuilder::build() derives a new NPC turn from gameStor.turntime, diff --git a/packages/logic/src/actions/turn/general/che_전투태세.ts b/packages/logic/src/actions/turn/general/che_전투태세.ts index 1cf63b4a..12eafbb7 100644 --- a/packages/logic/src/actions/turn/general/che_전투태세.ts +++ b/packages/logic/src/actions/turn/general/che_전투태세.ts @@ -68,7 +68,7 @@ export class ActionDefinition< ? (view.get({ kind: 'nation', id: ctx.nationId }) as Nation | null) : null; const crew = typeof general?.crew === 'number' ? general.crew : 0; - const techCost = getTechCost(readNationTech(nation)); + const techCost = getTechCost(readNationTech(nation), this.env.maxTechLevel); return Math.round((crew / 100) * 3 * techCost); }, nationRequirement), reqGeneralRice(() => 0), diff --git a/packages/logic/src/actions/turn/general/che_징병.ts b/packages/logic/src/actions/turn/general/che_징병.ts index 5e419091..8b63780d 100644 --- a/packages/logic/src/actions/turn/general/che_징병.ts +++ b/packages/logic/src/actions/turn/general/che_징병.ts @@ -39,6 +39,7 @@ export interface RecruitEnvironment { defaultAtmos?: number; minAvailableRecruitPop?: number; defaultTrust?: number; + maxTechLevel?: number; actionName?: '징병' | '모병'; } @@ -191,6 +192,12 @@ type RecruitCalcContext; city?: City; nation?: Nation | null; + time?: { + year: number; + month: number; + startYear: number; + }; + maxTechLevel?: number; }; const buildCalcContext = ( @@ -216,6 +223,25 @@ const buildCalcContext = ( if (nation !== undefined) { result.nation = nation; } + const year = + typeof ctx.env.currentYear === 'number' + ? ctx.env.currentYear + : typeof ctx.env.year === 'number' + ? ctx.env.year + : undefined; + const month = + typeof ctx.env.currentMonth === 'number' + ? ctx.env.currentMonth + : typeof ctx.env.month === 'number' + ? ctx.env.month + : undefined; + const startYear = typeof ctx.env.startYear === 'number' ? ctx.env.startYear : undefined; + if (year !== undefined && month !== undefined && startYear !== undefined) { + result.time = { year, month, startYear }; + } + if (typeof ctx.env.maxTechLevel === 'number') { + result.maxTechLevel = ctx.env.maxTechLevel; + } return result; }; @@ -247,7 +273,10 @@ export class CommandResolver, crewType: { armType: number; cost: number; rice: number } ): { gold: number; rice: number } { - const techCost = getTechCost(readNationTech(context.nation ?? null)); + const techCost = getTechCost( + readNationTech(context.nation ?? null), + context.maxTechLevel ?? this.env.maxTechLevel + ); return { gold: this.pipeline.onCalcDomestic(context, this.actionName, 'cost', crewType.cost * techCost, { armType: crewType.armType, @@ -282,7 +311,9 @@ export class CommandResolver; +} + +export interface ScenarioGeneralPoolClaim { + poolEntryId: number; + uniqueName: string; + claimedAt: string; +} + +const CLAIM_META_KEY = 'scenarioGeneralPoolClaim'; + +const readFiniteNumber = (value: unknown): number | null => + typeof value === 'number' && Number.isFinite(value) ? value : null; + +const readOptionalString = (value: unknown): string | null | undefined => { + if (value === null) { + return null; + } + return typeof value === 'string' ? value : undefined; +}; + +export const parseScenarioGeneralPoolCandidate = (entry: { + id: number; + uniqueName: string; + info: unknown; +}): ScenarioGeneralPoolCandidate => { + const info = asRecord(entry.info); + const name = typeof info.generalName === 'string' && info.generalName !== '' ? info.generalName : entry.uniqueName; + const leadership = readFiniteNumber(info.leadership); + const strength = readFiniteNumber(info.strength); + const intelligence = readFiniteNumber(info.intel); + const rawDex = Array.isArray(info.dex) ? info.dex.map(readFiniteNumber) : []; + const dex = + rawDex.length === 5 && rawDex.every((value): value is number => value !== null) + ? (rawDex as [number, number, number, number, number]) + : undefined; + const experience = readFiniteNumber(info.experience); + const dedication = readFiniteNumber(info.dedication); + const weight = readFiniteNumber(info.weight); + const imageServer = readFiniteNumber(info.imgsvr); + const specialDomestic = readOptionalString(info.specialDomestic); + const specialWar = readOptionalString(info.specialWar); + + return { + poolEntryId: entry.id, + uniqueName: entry.uniqueName, + name, + sourceInfo: structuredClone(info), + ...(leadership !== null && strength !== null && intelligence !== null + ? { + stats: { + leadership, + strength, + intelligence, + }, + } + : {}), + ...(dex ? { dex } : {}), + ...(specialDomestic !== undefined ? { specialDomestic } : {}), + ...(specialWar !== undefined ? { specialWar } : {}), + ...(imageServer !== null ? { imageServer } : {}), + ...(info.picture === null || typeof info.picture === 'string' || typeof info.picture === 'number' + ? { picture: info.picture } + : {}), + ...(experience !== null ? { experience } : {}), + ...(dedication !== null ? { dedication } : {}), + ...(weight !== null ? { weight } : {}), + }; +}; + +export const buildScenarioGeneralPoolClaimMeta = ( + candidate: ScenarioGeneralPoolCandidate, + claimedAt: Date +): Pick => ({ + [CLAIM_META_KEY]: { + poolEntryId: candidate.poolEntryId, + uniqueName: candidate.uniqueName, + claimedAt: claimedAt.toISOString(), + }, +}); + +export const readScenarioGeneralPoolClaim = (meta: Record): ScenarioGeneralPoolClaim | null => { + const raw = asRecord(meta[CLAIM_META_KEY]); + const poolEntryId = readFiniteNumber(raw.poolEntryId); + if ( + poolEntryId === null || + !Number.isSafeInteger(poolEntryId) || + poolEntryId <= 0 || + typeof raw.uniqueName !== 'string' || + raw.uniqueName === '' || + typeof raw.claimedAt !== 'string' || + Number.isNaN(new Date(raw.claimedAt).getTime()) + ) { + return null; + } + return { + poolEntryId, + uniqueName: raw.uniqueName, + claimedAt: raw.claimedAt, + }; +}; + +export const getScenarioGeneralPoolCandidateWeight = (candidate: ScenarioGeneralPoolCandidate): number => { + const weight = candidate.weight ?? candidate.dex?.reduce((sum, value) => sum + value, 0) ?? 0; + // SPoolUnderU100 gives NPC/system draws (owner <= 0) a minimum weight so + // zero-dex growth candidates remain selectable. User selection calculates + // its distinct owner-aware weight in selectPoolService. + return candidate.sourceInfo.event100Growth === true ? Math.max(100_000, weight) : weight; +}; + +const pickUsingWeightPair = (rng: RandomGenerator, values: Array<[T, number]>): T => { + let total = 0; + for (const [, weight] of values) { + if (weight > 0) { + total += weight; + } + } + let cursor = rng.nextFloat1() * total; + for (const [value, weight] of values) { + if (weight <= 0) { + if (cursor <= 0) { + return value; + } + continue; + } + if (cursor <= weight) { + return value; + } + cursor -= weight; + } + throw new Error('Unreachable weighted general-pool selection.'); +}; + +/** + * Ref keeps the original weighted array while retrying duplicate pool IDs. + * A duplicate draw therefore consumes RNG instead of shrinking the weights. + */ +export const pickUniqueScenarioGeneralPoolCandidates = ( + rng: RandomGenerator, + candidates: readonly ScenarioGeneralPoolCandidate[], + count: number +): ScenarioGeneralPoolCandidate[] => { + if (count <= 0) { + return []; + } + if (candidates.length < count) { + throw new Error('pool 부족'); + } + const weighted = candidates.map( + (candidate) => + [candidate, getScenarioGeneralPoolCandidateWeight(candidate)] as [ScenarioGeneralPoolCandidate, number] + ); + const selectedIds = new Set(); + const selected: ScenarioGeneralPoolCandidate[] = []; + while (selected.length < count) { + const candidate = pickUsingWeightPair(rng, weighted); + if (selectedIds.has(candidate.poolEntryId)) { + continue; + } + selectedIds.add(candidate.poolEntryId); + selected.push(candidate); + } + return selected; +}; + +export type LegacyNpcStatType = '무' | '지' | '무지'; + +export const resolveLegacyNpcStatTypeFromFixedStats = (rng: RandomGenerator, stats: StatBlock): LegacyNpcStatType => { + if (stats.leadership < 40) { + return '무지'; + } + if (stats.intelligence * 0.8 > stats.strength) { + return '지'; + } + if (stats.strength * 0.8 > stats.intelligence) { + return '무'; + } + return pickUsingWeightPair(rng, [ + ['무', stats.strength], + ['지', stats.intelligence], + ]); +}; diff --git a/packages/logic/src/actions/turn/nation/che_의병모집.ts b/packages/logic/src/actions/turn/nation/che_의병모집.ts index c2ac20e2..dc1eccfe 100644 --- a/packages/logic/src/actions/turn/nation/che_의병모집.ts +++ b/packages/logic/src/actions/turn/nation/che_의병모집.ts @@ -33,18 +33,38 @@ import { } from '@sammo-ts/logic/actions/turn/actionContextHelpers.js'; import type { TurnCommandEnv } from '@sammo-ts/logic/actions/turn/commandEnv.js'; import type { NationTurnCommandSpec } from './index.js'; +import { + buildScenarioGeneralPoolClaimMeta, + pickUniqueScenarioGeneralPoolCandidates, + resolveLegacyNpcStatTypeFromFixedStats, + type ScenarioGeneralPoolCandidate, +} from '@sammo-ts/logic/actions/turn/generalPool.js'; +import { + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + applyCentennialAllStarTarget, + initializeCentennialGeneratedNpc, + readCentennialAllStarPoolTarget, + resolveCentennialAllStarRules, + resolveCentennialNpcDexTargetRatio, + type CentennialAllStarRules, +} from '@sammo-ts/logic/scenario/centennialAllStar.js'; export interface VolunteerRecruitArgs {} export interface VolunteerRecruitCandidate { name: string; + poolEntryId?: number; + uniqueName?: string; stats?: Partial; + dex?: [number, number, number, number, number]; personality?: string | null; affinity?: number | null; specialDomestic?: string | null; specialWar?: string | null; picture?: number | string | null; + imageServer?: number; text?: string | null; + sourceInfo?: Record; } export interface VolunteerRecruitResolveContext< @@ -53,13 +73,16 @@ export interface VolunteerRecruitResolveContext< currentYear: number; currentMonth: number; startYear: number; + centennialRules: CentennialAllStarRules; + centennialNpcDexTargetRatio: number; averageNationGeneralCount: number; nationAverageStats?: StatBlock; nationAverageExperience?: number; nationAverageDedication?: number; nationAverageDex?: [number, number, number, number, number]; friendlyGenerals: Array>; - generalPool?: VolunteerRecruitCandidate[]; + generalPool?: ScenarioGeneralPoolCandidate[]; + existingGeneralNames?: string[]; createGeneralId: () => number; turnTermSeconds: number; turnTimeBase: Date; @@ -112,6 +135,18 @@ const DEFAULT_SPEC_AGE = 19; const DEFAULT_NPC_STAT_TOTAL = 150; const DEFAULT_NPC_STAT_MIN = 10; const DEFAULT_NPC_STAT_MAX = 75; +const NPC_NAME_PREFIXES = ['', 'ⓝ', 'ⓝ', 'ⓜ', 'ⓖ', '㉥', 'ⓤ', 'ⓞ'] as const; +const NPC_STATE_NAME_PREFIXES: Readonly> = { + 0: '', + 1: 'ⓝ', + 2: 'ⓝ', + 3: 'ⓜ', + 4: 'ⓖ', + 5: '㉥', + 6: 'ⓤ', + 9: 'ⓞ', +}; +const STORED_NAME_PREFIXES = new Set(Object.values(NPC_STATE_NAME_PREFIXES).filter(Boolean)); const addMetaValue = ( meta: Record, @@ -146,6 +181,43 @@ const legacyChoiceIndex = (rng: RandomGenerator, length: number): number => { const legacyChoice = (rng: RandomGenerator, values: readonly T[]): T => values[legacyChoiceIndex(rng, values.length)]!; +const restoreLegacyStoredName = (general: Pick): string => { + if (STORED_NAME_PREFIXES.has(general.name[0] ?? '')) { + return general.name; + } + return `${NPC_STATE_NAME_PREFIXES[general.npcState] ?? ''}${general.name}`; +}; + +const countLegacyNameDuplicates = (names: readonly string[], candidate: string): number => + NPC_NAME_PREFIXES.reduce( + (total, prefix) => total + names.filter((name) => name.startsWith(`${prefix}${candidate}`)).length, + 0 + ); + +const pickLegacyRandomNames = ( + rng: RandomGenerator, + count: number, + existingNames: readonly string[], + firstNames: readonly string[], + middleNames: readonly string[], + lastNames: readonly string[] +): string[] => + Array.from({ length: count }, () => { + let loopCount = 0; + while (true) { + let name = `${legacyChoice(rng, firstNames)}${legacyChoice(rng, middleNames)}${legacyChoice(rng, lastNames)}`; + const duplicateCount = countLegacyNameDuplicates(existingNames, name); + if (duplicateCount === 0) { + return name; + } + if (loopCount >= 99 || duplicateCount < 2) { + name += duplicateCount + 1; + return name; + } + loopCount += 1; + } + }); + const pickByWeight = (rng: RandomGenerator, weights: Record): T => { const entries = Object.entries(weights) as Array<[T, number]>; const first = entries[0]; @@ -208,12 +280,10 @@ const resolveCandidate = ( if (env.pickCandidate) { return env.pickCandidate(context, rng); } - const pool = context.generalPool ?? []; - if (pool.length === 0) { + if (context.generalPool === undefined) { return null; } - const idx = rng.nextInt(0, pool.length); - return pool[idx] ?? null; + return pickUniqueScenarioGeneralPoolCandidates(rng, context.generalPool, 1)[0] ?? null; }; const resolveStats = ( @@ -357,44 +427,81 @@ export class ActionResolver< const firstNames = this.env.randomGeneralFirstNames ?? ['가']; const middleNames = this.env.randomGeneralMiddleNames ?? ['']; const lastNames = this.env.randomGeneralLastNames ?? ['가']; - const candidates = Array.from({ length: createCount }, () => { - const selected = resolveCandidate(context, context.rng, this.env); - if (selected) { - return selected; - } - return { - name: `${legacyChoice(context.rng, firstNames)}${legacyChoice( + const candidates: VolunteerRecruitCandidate[] = this.env.pickCandidate + ? Array.from( + { length: createCount }, + () => + resolveCandidate(context, context.rng, this.env) ?? { + name: pickLegacyRandomNames( + context.rng, + 1, + context.existingGeneralNames ?? [], + firstNames, + middleNames, + lastNames + )[0]!, + } + ) + : context.generalPool === undefined + ? pickLegacyRandomNames( context.rng, - middleNames - )}${legacyChoice(context.rng, lastNames)}`, - }; - }); + createCount, + context.existingGeneralNames ?? [], + firstNames, + middleNames, + lastNames + ).map((name) => ({ name })) + : pickUniqueScenarioGeneralPoolCandidates(context.rng, context.generalPool, createCount); for (const candidate of candidates) { + const centennialTarget = + candidate.sourceInfo && candidate.uniqueName + ? readCentennialAllStarPoolTarget({ + uniqueName: candidate.uniqueName, + name: candidate.name, + sourceInfo: candidate.sourceInfo, + }) + : null; const newGeneralId = context.createGeneralId(); const name = this.env.decorateName ? this.env.decorateName(candidate.name, NPC_TYPE) : `ⓖ${candidate.name}`; const birthYear = context.currentYear - baseAge; const deathYear = context.currentYear + deathYears; const killturn = randomRangeInt(context.rng, killTurnMin, killTurnMax); const affinity = candidate.affinity ?? randomRangeInt(context.rng, 1, 150); - const generated = buildLegacyRandomStats(context.rng, this.env); - const stats = candidate.stats ? resolveStats(context, context.rng, this.env, candidate) : generated.stats; + let pickType: '무' | '지' | '무지'; + let stats: StatBlock; + if (candidate.stats && !centennialTarget) { + stats = resolveStats(context, context.rng, this.env, candidate); + pickType = resolveLegacyNpcStatTypeFromFixedStats(context.rng, stats); + } else { + const generated = buildLegacyRandomStats(context.rng, this.env); + pickType = generated.pickType; + stats = generated.stats; + } const averageDex = context.nationAverageDex ?? [0, 0, 0, 0, 0]; const dexTotal = averageDex[0] + averageDex[1] + averageDex[2] + averageDex[3]; - const rawDex: [number, number, number, number] = - generated.pickType === '무' - ? legacyChoice(context.rng, [ - [(dexTotal * 5) / 8, dexTotal / 8, dexTotal / 8, dexTotal / 8], - [dexTotal / 8, (dexTotal * 5) / 8, dexTotal / 8, dexTotal / 8], - [dexTotal / 8, dexTotal / 8, (dexTotal * 5) / 8, dexTotal / 8], - ]) - : [dexTotal / 8, dexTotal / 8, dexTotal / 8, (dexTotal * 5) / 8]; - const dex: [number, number, number, number] = [ - Math.trunc(rawDex[0]), - Math.trunc(rawDex[1]), - Math.trunc(rawDex[2]), - Math.trunc(rawDex[3]), - ]; + let dex: [number, number, number, number, number]; + if (candidate.dex?.[0] && !centennialTarget) { + dex = candidate.dex; + } else { + const rawDex: [number, number, number, number] = + pickType === '무' + ? legacyChoice(context.rng, [ + [(dexTotal * 5) / 8, dexTotal / 8, dexTotal / 8, dexTotal / 8], + [dexTotal / 8, (dexTotal * 5) / 8, dexTotal / 8, dexTotal / 8], + [dexTotal / 8, dexTotal / 8, (dexTotal * 5) / 8, dexTotal / 8], + ]) + : pickType === '지' + ? [dexTotal / 8, dexTotal / 8, dexTotal / 8, (dexTotal * 5) / 8] + : [dexTotal / 4, dexTotal / 4, dexTotal / 4, dexTotal / 4]; + dex = [ + Math.trunc(rawDex[0]), + Math.trunc(rawDex[1]), + Math.trunc(rawDex[2]), + Math.trunc(rawDex[3]), + Math.trunc(averageDex[4]), + ]; + } const personality = candidate.personality ?? legacyChoice(context.rng, this.env.availablePersonalities ?? ['che_안전']); const turnSecond = randomRangeInt(context.rng, 0, context.turnTermSeconds - 1); @@ -416,9 +523,12 @@ export class ActionResolver< dex2: dex[1], dex3: dex[2], dex4: dex[3], - dex5: Math.trunc(averageDex[4]), + dex5: dex[4], turnSecond, turnFraction, + ...(candidate.poolEntryId !== undefined && candidate.uniqueName + ? buildScenarioGeneralPoolClaimMeta(candidate as ScenarioGeneralPoolCandidate, context.turnTimeBase) + : {}), }; addMetaValue(meta, 'affinity', affinity); addMetaValue(meta, 'picture', candidate.picture ?? null); @@ -428,7 +538,10 @@ export class ActionResolver< addMetaValue(meta, 'specage2', DEFAULT_SPEC_AGE); addMetaValue(meta, 'text', candidate.text ?? null); - const newGeneral = { + const averageExperience = Math.trunc(context.nationAverageExperience ?? 0); + const averageDedication = Math.trunc(context.nationAverageDedication ?? 0); + + let newGeneral = { ...buildRecruitmentGeneral({ id: newGeneralId, name, @@ -440,8 +553,10 @@ export class ActionResolver< npcState: NPC_TYPE, gold: this.env.defaultNpcGold, rice: this.env.defaultNpcRice, - experience: Math.trunc(context.nationAverageExperience ?? 0), - dedication: Math.trunc(context.nationAverageDedication ?? 0), + // GeneralBuilder::build() uses PHP's falsy `?: age * 100` + // after setExpDed(), including when a nation's averages are 0. + experience: averageExperience || baseAge * 100, + dedication: averageDedication || baseAge * 100, crewTypeId: this.env.defaultCrewTypeId, role: { personality, @@ -454,7 +569,29 @@ export class ActionResolver< ...(turnTick === undefined ? {} : { turnTick }), bornYear: birthYear, deadYear: deathYear, + imageServer: candidate.imageServer ?? 0, + picture: candidate.picture ?? 'default.jpg', }; + if (centennialTarget) { + const initialized = initializeCentennialGeneratedNpc( + newGeneral, + centennialTarget, + context.centennialRules + ); + const growth = applyCentennialAllStarTarget( + { ...newGeneral, ...initialized }, + centennialTarget, + { + startYear: context.startYear, + year: context.currentYear, + month: context.currentMonth, + }, + context.centennialRules, + CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER, + context.centennialNpcDexTargetRatio + ); + newGeneral = { ...newGeneral, stats: growth.stats, role: growth.role, meta: growth.meta }; + } effects.push(createGeneralAddEffect(newGeneral)); } @@ -521,12 +658,20 @@ export const actionContextBuilder: ActionContextBuilder = (base, options) => { currentYear: options.world.currentYear, currentMonth: options.world.currentMonth, startYear: resolveStartYear(options.world, options.scenarioMeta), + centennialRules: resolveCentennialAllStarRules(options.scenarioConfig), + centennialNpcDexTargetRatio: resolveCentennialNpcDexTargetRatio(options.scenarioConfig), averageNationGeneralCount: buildAverageNationGeneralCount(options.worldRef), nationAverageStats: nationSummary.averageStats, nationAverageExperience: nationSummary.averageExperience, nationAverageDedication: nationSummary.averageDedication, nationAverageDex: nationSummary.averageDex, friendlyGenerals, + existingGeneralNames: options.worldRef?.listGenerals().map(restoreLegacyStoredName) ?? [], + ...(() => { + const claimedAt = options.world.lastTurnTime ?? base.general.turnTime; + const generalPool = options.worldRef?.listGeneralPoolCandidates?.(claimedAt); + return generalPool === undefined ? {} : { generalPool }; + })(), createGeneralId: options.createGeneralId, turnTermSeconds: Math.max(1, Math.round(options.world.tickSeconds)), turnTimeBase: options.world.lastTurnTime ?? base.general.turnTime, diff --git a/packages/logic/src/battleSimulator/processor.ts b/packages/logic/src/battleSimulator/processor.ts index 4a826e6f..bb649ab3 100644 --- a/packages/logic/src/battleSimulator/processor.ts +++ b/packages/logic/src/battleSimulator/processor.ts @@ -286,6 +286,7 @@ const resolveCityRiceConsumption = (options: { castleCrewTypeId: number; year: number; startYear: number; + maxTechLevel?: number; }): number => { const cityReport = options.battle.reports.find((report: WarUnitReport) => report.type === 'city'); if (!cityReport) { @@ -304,7 +305,7 @@ const resolveCityRiceConsumption = (options: { let rice = (cityReport.killed / 100) * 0.8; rice *= riceCoef; - rice *= getTechCost(tech); + rice *= getTechCost(tech, options.maxTechLevel); rice *= trainAtmos / 100 - 0.2; return Math.round(rice); }; @@ -454,6 +455,7 @@ export const processBattleSimJob = ( castleCrewTypeId: payload.config.castleCrewTypeId, year: payload.time.year, startYear: payload.time.startYear, + ...(payload.config.maxTechLevel === undefined ? {} : { maxTechLevel: payload.config.maxTechLevel }), }); defenderAvgRice += (defenderRiceInit - defenderRiceAfter + cityRice) * weight; diff --git a/packages/logic/src/items/che_능력치_무력_두강주.ts b/packages/logic/src/items/che_능력치_무력_두강주.ts index 7d1a2070..cbe81ee4 100644 --- a/packages/logic/src/items/che_능력치_무력_두강주.ts +++ b/packages/logic/src/items/che_능력치_무력_두강주.ts @@ -21,16 +21,16 @@ export const itemModule: ItemModule = { reqSecu: 0, unique: false, onCalcStat: function ( - _context: GeneralActionContext | WarActionContext, + context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: unknown, aux?: unknown ): unknown { if (statName === 'strength') { const auxObj = aux as Record | undefined; - const year = resolveNumber(auxObj?.['year']); - const startYear = resolveNumber(auxObj?.['startYear']); - const maxTechLevel = resolveNumber(auxObj?.['maxTechLevel'], 12); + const year = resolveNumber(context.time?.year, resolveNumber(auxObj?.['year'])); + const startYear = resolveNumber(context.time?.startYear, resolveNumber(auxObj?.['startYear'])); + const maxTechLevel = resolveNumber(context.maxTechLevel, resolveNumber(auxObj?.['maxTechLevel'], 12)); const relYear = Math.max(0, year - startYear); const bonus = 5 + clamp(Math.floor(relYear / 4), 0, maxTechLevel); diff --git a/packages/logic/src/items/che_능력치_지력_이강주.ts b/packages/logic/src/items/che_능력치_지력_이강주.ts index 0c093387..4a45076a 100644 --- a/packages/logic/src/items/che_능력치_지력_이강주.ts +++ b/packages/logic/src/items/che_능력치_지력_이강주.ts @@ -21,16 +21,16 @@ export const itemModule: ItemModule = { reqSecu: 0, unique: false, onCalcStat: function ( - _context: GeneralActionContext | WarActionContext, + context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: unknown, aux?: unknown ): unknown { if (statName === 'intelligence') { const auxObj = aux as Record | undefined; - const year = resolveNumber(auxObj?.['year']); - const startYear = resolveNumber(auxObj?.['startYear']); - const maxTechLevel = resolveNumber(auxObj?.['maxTechLevel'], 12); + const year = resolveNumber(context.time?.year, resolveNumber(auxObj?.['year'])); + const startYear = resolveNumber(context.time?.startYear, resolveNumber(auxObj?.['startYear'])); + const maxTechLevel = resolveNumber(context.maxTechLevel, resolveNumber(auxObj?.['maxTechLevel'], 12)); const relYear = Math.max(0, year - startYear); const bonus = 5 + clamp(Math.floor(relYear / 4), 0, maxTechLevel); diff --git a/packages/logic/src/items/che_능력치_통솔_보령압주.ts b/packages/logic/src/items/che_능력치_통솔_보령압주.ts index 47d49b68..ce242e64 100644 --- a/packages/logic/src/items/che_능력치_통솔_보령압주.ts +++ b/packages/logic/src/items/che_능력치_통솔_보령압주.ts @@ -21,16 +21,16 @@ export const itemModule: ItemModule = { reqSecu: 0, unique: false, onCalcStat: function ( - _context: GeneralActionContext | WarActionContext, + context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: unknown, aux?: unknown ): unknown { if (statName === 'leadership') { const auxObj = aux as Record | undefined; - const year = resolveNumber(auxObj?.['year']); - const startYear = resolveNumber(auxObj?.['startYear']); - const maxTechLevel = resolveNumber(auxObj?.['maxTechLevel'], 12); + const year = resolveNumber(context.time?.year, resolveNumber(auxObj?.['year'])); + const startYear = resolveNumber(context.time?.startYear, resolveNumber(auxObj?.['startYear'])); + const maxTechLevel = resolveNumber(context.maxTechLevel, resolveNumber(auxObj?.['maxTechLevel'], 12)); const relYear = Math.max(0, year - startYear); const bonus = 5 + clamp(Math.floor(relYear / 4), 0, maxTechLevel); diff --git a/packages/logic/src/scenario/centennialAllStar.ts b/packages/logic/src/scenario/centennialAllStar.ts new file mode 100644 index 00000000..fb0b1d8d --- /dev/null +++ b/packages/logic/src/scenario/centennialAllStar.ts @@ -0,0 +1,672 @@ +import { asNumber, asRecord } from '@sammo-ts/common'; + +import type { General, GeneralMeta, GeneralRole, StatBlock } from '../domain/entities.js'; +import { LEGACY_DEFAULT_MAX_LEVEL } from './constants.js'; + +export const CENTENNIAL_ALL_STAR_POOL = 'SPoolUnderU100'; +export const CENTENNIAL_ALL_STAR_AUX_KEY = 'event100_allstar'; +export const CENTENNIAL_ALL_STAR_TRAIT_UNLOCK_PROGRESS = 0.4; +export const CENTENNIAL_ALL_STAR_NPC_PROGRESS_MULTIPLIER = 0.9; +export const CENTENNIAL_ALL_STAR_DEFAULT_GROWTH_YEARS = 15; +export const CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT = 1_000_000; + +export const isCentennialAllStarActive = (scenarioConfig: unknown): boolean => + asRecord(asRecord(scenarioConfig).map).targetGeneralPool === CENTENNIAL_ALL_STAR_POOL; + +export const isCentennialStatResetAllowed = (scenarioConfig: unknown): boolean => + !isCentennialAllStarActive(scenarioConfig); + +const STAT_KEYS = ['leadership', 'strength', 'intel'] as const; +const DEX_KEYS = ['dex1', 'dex2', 'dex3', 'dex4', 'dex5'] as const; + +type CentennialStatKey = (typeof STAT_KEYS)[number]; +type CentennialDexKey = (typeof DEX_KEYS)[number]; + +export interface CentennialAllStarTarget { + uniqueName: string; + generalName?: string; + leadership: number; + strength: number; + intel: number; + dex: readonly [number, number, number, number, number]; + specialDomestic?: string | null; + [key: string]: unknown; +} + +export interface CentennialAllStarPoolCandidate { + uniqueName: string; + name: string; + sourceInfo: Record; +} + +export interface CentennialAllStarEnvironment { + startYear: number; + year: number; + month: number; +} + +export interface CentennialAllStarRules { + defaultStatMin: number; + defaultStatMax: number; + defaultStatTotal: number; + maxStatLevel: number; + defaultSpecialDomestic: string | null; + dexLimit?: number; +} + +export interface CentennialAllStarScenarioConfig { + stat: { + min: number; + max: number; + total: number; + }; + const: Record; + map: Record; +} + +export interface CentennialAllStarAux { + targetId: string; + target: CentennialAllStarTarget; + granted: Record; + dexConsumed: Record; + dexFloor: Record; + progressMonth: number; + milestone: number; + naturalSpecialDomestic: string | null; + eventSpecialDomestic: string | null; + userInitialStats: Record | null; + dexTargetRatio: number; +} + +export interface CentennialAllStarApplyResult { + stats: StatBlock; + role: GeneralRole; + meta: GeneralMeta; + progress: number; + milestone: number; + previousMilestone: number; + targetChanged: boolean; + changed: boolean; +} + +export const resolveCentennialAllStarRules = ( + config: CentennialAllStarScenarioConfig, + fallbackSpecialDomestic: string | null = null +): CentennialAllStarRules => ({ + defaultStatMin: config.stat.min, + defaultStatMax: config.stat.max, + defaultStatTotal: config.stat.total, + maxStatLevel: asNumber(config.const.maxLevel, LEGACY_DEFAULT_MAX_LEVEL), + defaultSpecialDomestic: + typeof config.const.defaultSpecialDomestic === 'string' + ? config.const.defaultSpecialDomestic + : fallbackSpecialDomestic, + dexLimit: asNumber(config.const.dexLimit, CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT), +}); + +export const resolveCentennialNpcDexTargetRatio = (config: CentennialAllStarScenarioConfig): number => { + const ratio = asNumber(config.map.centennialNpcDexTargetRatio, 0.4); + if (ratio < 0 || ratio > 1) { + throw new Error('centennialNpcDexTargetRatio must be between 0 and 1'); + } + return ratio; +}; + +const emptyGranted = (): CentennialAllStarAux['granted'] => ({ + leadership: 0, + strength: 0, + intel: 0, + dex1: 0, + dex2: 0, + dex3: 0, + dex4: 0, + dex5: 0, +}); + +const emptyDex = (): Record => ({ + dex1: 0, + dex2: 0, + dex3: 0, + dex4: 0, + dex5: 0, +}); + +const readFiniteNumber = (source: Record, key: string, fallback = 0): number => { + const value = source[key]; + if (typeof value === 'number' && Number.isFinite(value)) { + return value; + } + if (typeof value === 'string' && value.trim() !== '') { + const parsed = Number(value); + if (Number.isFinite(parsed)) { + return parsed; + } + } + return fallback; +}; + +const readIntegerRecord = (raw: unknown, keys: readonly Key[]): Record => { + const source = asRecord(raw); + return Object.fromEntries( + keys.map((key) => [key, Math.max(0, Math.trunc(readFiniteNumber(source, key)))]) + ) as Record; +}; + +const normalizeTarget = (raw: unknown, fallback?: CentennialAllStarTarget): CentennialAllStarTarget => { + const source = asRecord(raw); + const dex = Array.isArray(source.dex) ? source.dex : fallback?.dex; + const uniqueName = typeof source.uniqueName === 'string' ? source.uniqueName : fallback?.uniqueName; + if (!uniqueName || !dex || dex.length !== DEX_KEYS.length) { + if (fallback) { + return fallback; + } + throw new Error('100기 올스타 목표 정보가 올바르지 않습니다.'); + } + const normalizedDex = dex.map((value) => + typeof value === 'number' && Number.isFinite(value) ? Math.trunc(value) : Number.NaN + ); + if (normalizedDex.some((value) => !Number.isInteger(value) || value < 0)) { + throw new Error(`100기 올스타 숙련 목표가 올바르지 않습니다: ${uniqueName}`); + } + const readTargetStat = (key: CentennialStatKey): number => { + const value = source[key] ?? fallback?.[key]; + if (typeof value !== 'number' || !Number.isFinite(value)) { + throw new Error(`100기 올스타 능력 목표가 올바르지 않습니다: ${uniqueName}`); + } + return Math.trunc(value); + }; + return { + ...(fallback ?? {}), + ...source, + uniqueName, + leadership: readTargetStat('leadership'), + strength: readTargetStat('strength'), + intel: readTargetStat('intel'), + dex: normalizedDex as [number, number, number, number, number], + specialDomestic: + typeof source.specialDomestic === 'string' || source.specialDomestic === null + ? source.specialDomestic + : (fallback?.specialDomestic ?? null), + }; +}; + +export const readCentennialAllStarPoolTarget = ( + candidate: CentennialAllStarPoolCandidate | null | undefined +): CentennialAllStarTarget | null => { + if (!candidate || candidate.sourceInfo.event100Growth !== true) { + return null; + } + return normalizeTarget({ + ...candidate.sourceInfo, + uniqueName: candidate.uniqueName, + generalName: candidate.name, + }); +}; + +export const initialCentennialAllStarAux = ( + target: CentennialAllStarTarget, + rules: Pick, + userInitialStats: Record | null = null +): CentennialAllStarAux => { + const granted = emptyGranted(); + if (userInitialStats) { + for (const key of STAT_KEYS) { + const initial = userInitialStats[key] ?? rules.defaultStatMin; + granted[key] = Math.max(0, initial - Math.min(initial, rules.defaultStatMin)); + } + } + return { + targetId: target.uniqueName, + target, + granted, + dexConsumed: emptyDex(), + dexFloor: emptyDex(), + progressMonth: -1, + milestone: 0, + naturalSpecialDomestic: null, + eventSpecialDomestic: null, + userInitialStats, + dexTargetRatio: 1, + }; +}; + +export const readCentennialAllStarAux = ( + meta: Record, + fallbackTarget?: CentennialAllStarTarget +): CentennialAllStarAux | null => { + const source = asRecord(meta[CENTENNIAL_ALL_STAR_AUX_KEY]); + if (Object.keys(source).length === 0 && !fallbackTarget) { + return null; + } + const target = normalizeTarget(source.target, fallbackTarget); + const rawInitial = asRecord(source.userInitialStats); + const userInitialStats = Object.keys(rawInitial).length + ? (Object.fromEntries(STAT_KEYS.map((key) => [key, Math.trunc(readFiniteNumber(rawInitial, key))])) as Record< + CentennialStatKey, + number + >) + : null; + return { + targetId: typeof source.targetId === 'string' ? source.targetId : target.uniqueName, + target, + granted: readIntegerRecord(source.granted, [...STAT_KEYS, ...DEX_KEYS]), + dexConsumed: readIntegerRecord(source.dexConsumed, DEX_KEYS), + dexFloor: readIntegerRecord(source.dexFloor, DEX_KEYS), + progressMonth: Math.trunc(readFiniteNumber(source, 'progressMonth', -1)), + milestone: Math.trunc(readFiniteNumber(source, 'milestone')), + naturalSpecialDomestic: + typeof source.naturalSpecialDomestic === 'string' ? source.naturalSpecialDomestic : null, + eventSpecialDomestic: typeof source.eventSpecialDomestic === 'string' ? source.eventSpecialDomestic : null, + userInitialStats, + dexTargetRatio: readFiniteNumber(source, 'dexTargetRatio', 1), + }; +}; + +export const calculateCentennialUserInitialStats = ( + target: CentennialAllStarTarget, + rules: Pick +): Record => { + const targets = {} as Record; + const bases = {} as Record; + for (const key of STAT_KEYS) { + const value = Math.min(rules.defaultStatMax, Math.max(0, Math.trunc(target[key]))); + targets[key] = value; + bases[key] = Math.min(value, rules.defaultStatMin); + } + const targetTotal = STAT_KEYS.reduce((sum, key) => sum + targets[key], 0); + const desiredTotal = Math.min(rules.defaultStatTotal, targetTotal); + const baseTotal = STAT_KEYS.reduce((sum, key) => sum + bases[key], 0); + const capacityTotal = targetTotal - baseTotal; + if (capacityTotal <= 0 || desiredTotal <= baseTotal) { + return bases; + } + + const ratio = (desiredTotal - baseTotal) / capacityTotal; + const result = {} as Record; + const fractions = STAT_KEYS.map((key, order) => { + const raw = bases[key] + (targets[key] - bases[key]) * ratio; + result[key] = Math.floor(raw); + return { key, fraction: raw - result[key], order }; + }).sort((left, right) => right.fraction - left.fraction || left.order - right.order); + let remainder = desiredTotal - STAT_KEYS.reduce((sum, key) => sum + result[key], 0); + for (const { key } of fractions) { + if (remainder <= 0) { + break; + } + if (result[key] >= targets[key]) { + continue; + } + result[key] += 1; + remainder -= 1; + } + return result; +}; + +export const calculateCentennialProgress = ( + environment: CentennialAllStarEnvironment, + progressMultiplier = 1, + growthYears = CENTENNIAL_ALL_STAR_DEFAULT_GROWTH_YEARS +): number => { + if (progressMultiplier < 0 || progressMultiplier > 1) { + throw new Error('progress multiplier must be between 0 and 1'); + } + if (growthYears <= 0) { + throw new Error('growthYears must be positive'); + } + if (environment.month < 1 || environment.month > 12) { + throw new Error('month must be between 1 and 12'); + } + const elapsedMonths = Math.max(0, (environment.year - environment.startYear) * 12 + environment.month - 1); + // Ref caps the common calendar progress first and applies the NPC + // multiplier afterwards. Generated M/G generals therefore remain at a + // permanent 90% stat target even after the fifteenth year. + return Math.min(1, elapsedMonths / (growthYears * 12)) * progressMultiplier; +}; + +export const centennialStatFloor = (target: number, minimum: number, progress: number): number => { + const normalizedProgress = Math.max(0, Math.min(1, progress)); + if (target <= minimum) { + return target; + } + return Math.min(target, Math.floor(minimum + (target - minimum) * normalizedProgress)); +}; + +export const centennialDexFloor = (target: number, progress: number): number => { + const normalizedProgress = Math.max(0, Math.min(1, progress)); + return Math.min(target, Math.floor(target * normalizedProgress * normalizedProgress)); +}; + +export const calculateCentennialDexTargetFloor = ( + target: number, + environment: CentennialAllStarEnvironment, + targetRatio = 1, + dexLimit = CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT +): number => { + if (targetRatio < 0 || targetRatio > 1) { + throw new Error('dex target ratio must be between 0 and 1'); + } + const capped = Math.min(dexLimit, Math.max(0, Math.trunc(target))); + const scaled = Math.floor(capped * targetRatio); + // Ref는 M/G장의 0.9 배율을 능력치에만 적용하고 숙련 진행률은 공통값을 쓴다. + return centennialDexFloor(scaled, calculateCentennialProgress(environment)); +}; + +const advance = (current: number, granted: number, floor: number): { value: number; granted: number } => { + const delta = Math.max(0, floor - current); + return { value: current + delta, granted: Math.max(0, granted) + delta }; +}; + +const replaceTarget = (current: number, oldGranted: number, newFloor: number): { value: number; granted: number } => { + const organic = Math.max(0, current - Math.max(0, oldGranted)); + const value = Math.max(organic, newFloor); + return { value, granted: value - organic }; +}; + +export const calculateCentennialUserCurrentTargetStats = ( + target: CentennialAllStarTarget, + environment: CentennialAllStarEnvironment, + rules: CentennialAllStarRules +): Record => { + const initial = calculateCentennialUserInitialStats(target, rules); + const progress = calculateCentennialProgress(environment); + return Object.fromEntries( + STAT_KEYS.map((key) => [ + key, + Math.max( + initial[key], + centennialStatFloor( + Math.min(rules.maxStatLevel, Math.max(0, Math.trunc(target[key]))), + rules.defaultStatMin, + progress + ) + ), + ]) + ) as Record; +}; + +export const calculateCentennialLegacyUserGrant = ( + current: number, + eventGrant: number, + rules: Pick +): number => { + const normalizedEventGrant = Math.max(0, Math.trunc(eventGrant)); + const beforeEventGrant = Math.max(0, Math.trunc(current) - normalizedEventGrant); + const replaceableInitialGrant = Math.max( + 0, + Math.min(beforeEventGrant, rules.defaultStatMax) - Math.min(beforeEventGrant, rules.defaultStatMin) + ); + return normalizedEventGrant + replaceableInitialGrant; +}; + +/** + * Ref's first S100 deployment did not persist userInitialStats. Before the + * first reselection it treats the ordinary creation-range portion as an event + * grant, so changing targets cannot preserve those points as organic growth. + */ +export const prepareCentennialLegacyUserReselection = ( + general: Pick, + rules: Pick +): GeneralMeta => { + const rawAuxValue = (general.meta as Record)[CENTENNIAL_ALL_STAR_AUX_KEY]; + if (!rawAuxValue || typeof rawAuxValue !== 'object' || Array.isArray(rawAuxValue)) { + return general.meta; + } + const rawAux = asRecord(rawAuxValue); + const rawInitial = rawAux.userInitialStats; + if (rawInitial && typeof rawInitial === 'object' && !Array.isArray(rawInitial)) { + return general.meta; + } + + const rawGranted = asRecord(rawAux.granted); + const granted = readIntegerRecord(rawGranted, [...STAT_KEYS, ...DEX_KEYS]); + const currentStats: Record = { + leadership: general.stats.leadership, + strength: general.stats.strength, + intel: general.stats.intelligence, + }; + const legacyInitialStats = {} as Record; + for (const key of STAT_KEYS) { + const current = Math.trunc(currentStats[key]); + const oldEventGrant = Math.max(0, Math.trunc(readFiniteNumber(rawGranted, key))); + granted[key] = calculateCentennialLegacyUserGrant(current, granted[key], rules); + const beforeEventGrant = Math.max(0, current - oldEventGrant); + legacyInitialStats[key] = Math.min(beforeEventGrant, rules.defaultStatMax); + } + + const meta: GeneralMeta = { ...general.meta }; + const mutableMeta: Record = meta; + mutableMeta[CENTENNIAL_ALL_STAR_AUX_KEY] = { + ...rawAux, + granted, + userInitialStats: legacyInitialStats, + }; + return meta; +}; + +export const applyCentennialAllStarTarget = ( + general: Pick, + target: CentennialAllStarTarget, + environment: CentennialAllStarEnvironment, + rules: CentennialAllStarRules, + progressMultiplier = 1, + dexTargetRatio = 1 +): CentennialAllStarApplyResult => { + const progress = calculateCentennialProgress(environment, progressMultiplier); + const progressMonth = Math.floor( + Math.max(0, (environment.year - environment.startYear) * 12 + environment.month - 1) * progressMultiplier + ); + const previousAux = readCentennialAllStarAux(general.meta as Record, target); + const aux = previousAux ?? initialCentennialAllStarAux(target, rules); + const targetChanged = aux.targetId !== target.uniqueName; + const granted = { ...aux.granted }; + const dexConsumed = targetChanged ? emptyDex() : { ...aux.dexConsumed }; + const dexFloor = { ...aux.dexFloor }; + const isUserTarget = aux.userInitialStats !== null; + const nextUserInitialStats = + targetChanged && isUserTarget ? calculateCentennialUserInitialStats(target, rules) : aux.userInitialStats; + const dexTargetRatioChanged = aux.dexTargetRatio !== dexTargetRatio; + const userCurrentTargetStats = isUserTarget + ? calculateCentennialUserCurrentTargetStats(target, environment, rules) + : null; + const stats = { ...general.stats }; + const role = { ...general.role, items: { ...general.role.items } }; + const meta: GeneralMeta = { ...general.meta }; + const mutableMeta: Record = meta; + let changed = dexTargetRatioChanged; + + const statProperty: Record = { + leadership: 'leadership', + strength: 'strength', + intel: 'intelligence', + }; + for (const key of STAT_KEYS) { + const targetValue = Math.min(rules.maxStatLevel, Math.max(0, Math.trunc(target[key]))); + const floor = userCurrentTargetStats?.[key] ?? centennialStatFloor(targetValue, rules.defaultStatMin, progress); + const property = statProperty[key]; + const current = stats[property]; + const result = targetChanged + ? replaceTarget(current, granted[key], floor) + : advance(current, granted[key], floor); + if (result.value !== current) { + stats[property] = result.value; + changed = true; + } + granted[key] = result.granted; + } + + for (const [index, key] of DEX_KEYS.entries()) { + const floor = Math.max( + 0, + calculateCentennialDexTargetFloor( + target.dex[index]!, + environment, + dexTargetRatio, + rules.dexLimit ?? CENTENNIAL_ALL_STAR_DEFAULT_DEX_LIMIT + ) - dexConsumed[key] + ); + dexFloor[key] = floor; + const current = Math.trunc(readFiniteNumber(mutableMeta, key)); + const result = + targetChanged || dexTargetRatioChanged + ? replaceTarget(current, granted[key], floor) + : advance(current, granted[key], floor); + if (result.value !== current) { + mutableMeta[key] = result.value; + changed = true; + } + granted[key] = result.granted; + } + + let naturalSpecialDomestic = aux.naturalSpecialDomestic; + let eventSpecialDomestic = aux.eventSpecialDomestic; + if (targetChanged && eventSpecialDomestic !== null && role.specialDomestic === eventSpecialDomestic) { + role.specialDomestic = naturalSpecialDomestic ?? rules.defaultSpecialDomestic; + eventSpecialDomestic = null; + changed = true; + } + const targetSpecial = target.specialDomestic; + if ( + progress >= CENTENNIAL_ALL_STAR_TRAIT_UNLOCK_PROGRESS && + typeof targetSpecial === 'string' && + targetSpecial !== '' + ) { + if (naturalSpecialDomestic === null) { + naturalSpecialDomestic = role.specialDomestic; + } + if (role.specialDomestic !== targetSpecial) { + role.specialDomestic = targetSpecial; + changed = true; + } + eventSpecialDomestic = targetSpecial; + } + + const previousMilestone = aux.milestone; + const milestone = Math.min(5, Math.floor(progress * 5 + 0.0000001)); + const nextAux: CentennialAllStarAux = { + ...aux, + targetId: target.uniqueName, + target, + granted, + dexConsumed, + dexFloor, + progressMonth: Math.max(aux.progressMonth, progressMonth), + milestone: Math.max(previousMilestone, milestone), + naturalSpecialDomestic, + eventSpecialDomestic, + userInitialStats: nextUserInitialStats, + dexTargetRatio, + }; + mutableMeta[CENTENNIAL_ALL_STAR_AUX_KEY] = nextAux; + + return { + stats, + role, + meta, + progress, + milestone, + previousMilestone, + targetChanged, + changed: changed || targetChanged || milestone > previousMilestone, + }; +}; + +export const calculateCentennialGeneratedNpcInitialStats = ( + target: CentennialAllStarTarget, + generated: StatBlock +): StatBlock => { + const keyOrder = Object.fromEntries(STAT_KEYS.map((key, index) => [key, index])) as Record< + CentennialStatKey, + number + >; + const targetOrder = [...STAT_KEYS].sort( + (left, right) => target[right] - target[left] || keyOrder[left] - keyOrder[right] + ); + const generatedValues = [generated.leadership, generated.strength, generated.intelligence].sort( + (left, right) => right - left + ); + const values = Object.fromEntries(targetOrder.map((key, index) => [key, generatedValues[index]!])) as Record< + CentennialStatKey, + number + >; + return { + leadership: values.leadership, + strength: values.strength, + intelligence: values.intel, + }; +}; + +export const initializeCentennialGeneratedNpc = ( + general: Pick, + target: CentennialAllStarTarget, + rules: CentennialAllStarRules +): Pick => { + const meta: GeneralMeta = { ...general.meta }; + const mutableMeta: Record = meta; + Object.assign(mutableMeta, { + dex1: 0, + dex2: 0, + dex3: 0, + dex4: 0, + dex5: 0, + [CENTENNIAL_ALL_STAR_AUX_KEY]: initialCentennialAllStarAux(target, rules), + }); + return { + stats: calculateCentennialGeneratedNpcInitialStats(target, general.stats), + role: { ...general.role, items: { ...general.role.items } }, + meta, + }; +}; + +export const reconcileCentennialDexConversion = ( + metaInput: GeneralMeta, + sourceKey: CentennialDexKey, + destinationKey: CentennialDexKey, + sourceBefore: number, + sourceAfter: number, + destinationBefore: number, + destinationAfter: number, + convertCoefficient: number +): GeneralMeta => { + if (!DEX_KEYS.includes(sourceKey) || !DEX_KEYS.includes(destinationKey) || sourceKey === destinationKey) { + throw new Error('invalid dex conversion keys'); + } + if (convertCoefficient < 0 || convertCoefficient > 1) { + throw new Error('dex conversion coefficient must be between 0 and 1'); + } + const sourceDecrease = Math.max(0, sourceBefore - sourceAfter); + const destinationIncrease = Math.max(0, destinationAfter - destinationBefore); + if (sourceDecrease === 0 && destinationIncrease === 0) { + return metaInput; + } + const aux = readCentennialAllStarAux(metaInput as Record); + if (!aux) { + return metaInput; + } + const granted = { ...aux.granted }; + const dexConsumed = { ...aux.dexConsumed }; + const sourceGrantedBefore = Math.min(Math.max(0, sourceBefore), Math.max(0, granted[sourceKey])); + const eventGrantRemoved = sourceBefore > 0 ? Math.trunc((sourceDecrease * sourceGrantedBefore) / sourceBefore) : 0; + const sourceGrantedAfter = Math.max(0, sourceGrantedBefore - eventGrantRemoved); + const destinationGrantedBefore = Math.min(Math.max(0, destinationBefore), Math.max(0, granted[destinationKey])); + let eventGrantTransferred = + sourceBefore > 0 ? Math.trunc((destinationIncrease * sourceGrantedBefore) / sourceBefore) : 0; + eventGrantTransferred = Math.min(destinationIncrease, eventGrantRemoved, eventGrantTransferred); + granted[sourceKey] = sourceGrantedAfter; + granted[destinationKey] = Math.min(Math.max(0, destinationAfter), destinationGrantedBefore + eventGrantTransferred); + + const sourceFloor = Math.max(0, aux.dexFloor[sourceKey] ?? sourceBefore); + const gapBefore = Math.max(0, sourceFloor - sourceBefore); + const gapAfter = Math.max(0, sourceFloor - sourceAfter); + dexConsumed[sourceKey] = Math.max(0, dexConsumed[sourceKey] + Math.max(0, gapAfter - gapBefore)); + const meta: GeneralMeta = { ...metaInput }; + const mutableMeta: Record = meta; + mutableMeta[CENTENNIAL_ALL_STAR_AUX_KEY] = { + ...aux, + granted, + dexConsumed, + }; + return meta; +}; + +export const centennialRecordableValue = (current: number, granted: number): number => + Math.max(0, current - Math.max(0, granted)); diff --git a/packages/logic/src/scenario/index.ts b/packages/logic/src/scenario/index.ts index 57d4892c..1af70763 100644 --- a/packages/logic/src/scenario/index.ts +++ b/packages/logic/src/scenario/index.ts @@ -2,3 +2,4 @@ export * from './types.js'; export * from './parseScenario.js'; export * from './scenarioEffect.js'; export * from './constants.js'; +export * from './centennialAllStar.js'; diff --git a/packages/logic/src/triggers/general.ts b/packages/logic/src/triggers/general.ts index f08a9c52..8ee1c112 100644 --- a/packages/logic/src/triggers/general.ts +++ b/packages/logic/src/triggers/general.ts @@ -43,6 +43,7 @@ export interface GeneralActionContext { @@ -13,6 +14,8 @@ export interface WarActionContext; + time?: WarTimeContext; + maxTechLevel?: number; } export interface WarActionModule { diff --git a/packages/logic/src/war/aftermath.ts b/packages/logic/src/war/aftermath.ts index bb5aca03..61ac98e0 100644 --- a/packages/logic/src/war/aftermath.ts +++ b/packages/logic/src/war/aftermath.ts @@ -520,7 +520,7 @@ export const resolveWarAftermath = [] = []; @@ -770,7 +773,8 @@ export const resolveDefenderOrder = + pipeline: WarActionPipeline, + private readonly time?: WarTimeContext ) { super(rng, config, crewType, logger, isAttacker, nation); this.actionPipeline = pipeline; @@ -89,6 +90,8 @@ export class WarUnitGeneral< log: this.logger, rng: this.rng, unit: this, + ...(this.time ? { time: this.time } : {}), + maxTechLevel: this.config.maxTechLevel ?? 12, }; } @@ -243,13 +246,13 @@ export class WarUnitGeneral< ratio = 50 + ratio / 2; } - const attack = this.getCrewType().attack + getTechAbility(tech); + const attack = this.getCrewType().attack + getTechAbility(tech, this.config.maxTechLevel); return attack * (ratio / 100); } public override getComputedDefence(): number { const tech = resolveNationTech(this.nation); - const defence = this.getCrewType().defence + getTechAbility(tech); + const defence = this.getCrewType().defence + getTechAbility(tech, this.config.maxTechLevel); const crew = this.general.crew / (7000 / 30) + 70; return defence * (crew / 100); } @@ -407,7 +410,7 @@ export class WarUnitGeneral< rice *= 0.8; } rice *= this.getCrewType().rice; - rice *= getTechCost(resolveNationTech(this.nation)); + rice *= getTechCost(resolveNationTech(this.nation), this.config.maxTechLevel); rice = this.actionPipeline.onCalcStat(this.getActionContext(), 'killRice', rice); return rice; } diff --git a/packages/logic/src/world/unitSet.ts b/packages/logic/src/world/unitSet.ts index 57f6e696..22e1bba4 100644 --- a/packages/logic/src/world/unitSet.ts +++ b/packages/logic/src/world/unitSet.ts @@ -170,12 +170,19 @@ export const getTechLevel = (tech: number, maxLevel = DEFAULT_MAX_TECH_LEVEL): n return Math.max(0, Math.min(level, maxLevel)); }; -export const getTechAbility = (tech: number): number => getTechLevel(tech) * 25; +export const getTechAbility = (tech: number, maxLevel = DEFAULT_MAX_TECH_LEVEL): number => + getTechLevel(tech, maxLevel) * 25; -export const getTechCost = (tech: number): number => 1 + getTechLevel(tech) * 0.15; +export const getTechCost = (tech: number, maxLevel = DEFAULT_MAX_TECH_LEVEL): number => + 1 + getTechLevel(tech, maxLevel) * 0.15; -export const getCrewTypePickScore = (crewType: CrewTypeDefinition, tech: number, armPerPhase: number): number => { - let score = armPerPhase + crewType.attack + crewType.defence + getTechAbility(tech) * 2; +export const getCrewTypePickScore = ( + crewType: CrewTypeDefinition, + tech: number, + armPerPhase: number, + maxTechLevel = DEFAULT_MAX_TECH_LEVEL +): number => { + let score = armPerPhase + crewType.attack + crewType.defence + getTechAbility(tech, maxTechLevel) * 2; score *= 1 + crewType.speed / 2; score /= Math.max(1 - crewType.avoid / 100, 0.1); score *= 1 + crewType.magicCoef / 2; diff --git a/packages/logic/test/actions/turn/generalPool.test.ts b/packages/logic/test/actions/turn/generalPool.test.ts new file mode 100644 index 00000000..2baee1c3 --- /dev/null +++ b/packages/logic/test/actions/turn/generalPool.test.ts @@ -0,0 +1,129 @@ +import { describe, expect, it } from 'vitest'; + +import { + buildScenarioGeneralPoolClaimMeta, + getScenarioGeneralPoolCandidateWeight, + parseScenarioGeneralPoolCandidate, + pickUniqueScenarioGeneralPoolCandidates, + readScenarioGeneralPoolClaim, + resolveLegacyNpcStatTypeFromFixedStats, + type ScenarioGeneralPoolCandidate, +} from '../../../src/actions/turn/generalPool.js'; + +const candidate = (poolEntryId: number, name: string, weight: number): ScenarioGeneralPoolCandidate => ({ + poolEntryId, + uniqueName: name, + name, + dex: [weight, 0, 0, 0, 0], + sourceInfo: {}, +}); + +describe('scenario general pool', () => { + it('keeps the Ref weighted array and consumes duplicate draws before selecting a new row', () => { + const draws = [0, 0, 0.75]; + let drawCount = 0; + const rng = { + nextFloat1: () => { + const value = draws[drawCount]; + drawCount += 1; + return value ?? 0; + }, + nextBool: () => false, + nextInt: () => 0, + }; + + expect(pickUniqueScenarioGeneralPoolCandidates(rng, [candidate(1, '갑', 1), candidate(2, '을', 1)], 2)).toEqual( + [expect.objectContaining({ poolEntryId: 1 }), expect.objectContaining({ poolEntryId: 2 })] + ); + expect(drawCount).toBe(3); + }); + + it('fails with the Ref pool-shortage message instead of using a random-name fallback', () => { + const rng = { nextFloat1: () => 0, nextBool: () => false, nextInt: () => 0 }; + expect(() => pickUniqueScenarioGeneralPoolCandidates(rng, [candidate(1, '갑', 1)], 2)).toThrow('pool 부족'); + }); + + it('keeps zero-dex centennial NPC candidates selectable with the Ref minimum weight', () => { + const centennial = { + ...candidate(3, '성장후보', 0), + sourceInfo: { event100Growth: true }, + }; + let draws = 0; + const rng = { + nextFloat1: () => { + draws += 1; + return 0; + }, + nextBool: () => false, + nextInt: () => 0, + }; + + expect(getScenarioGeneralPoolCandidateWeight(centennial)).toBe(100_000); + expect(pickUniqueScenarioGeneralPoolCandidates(rng, [centennial], 1)).toEqual([centennial]); + expect(draws).toBe(1); + }); + + it('parses the U30 builder fields and round-trips the persisted claim marker', () => { + const parsed = parseScenarioGeneralPoolCandidate({ + id: 17, + uniqueName: '풀장수', + info: { + generalName: '풀장수', + leadership: 69, + strength: 12, + intel: 80, + specialDomestic: 'che_event_징병', + dex: [1, 2, 3, 4, 5], + imgsvr: 1, + picture: 'pool.gif', + }, + }); + const claimedAt = new Date('0200-05-01T00:00:00.000Z'); + const meta = { killturn: 1, ...buildScenarioGeneralPoolClaimMeta(parsed, claimedAt) }; + + expect(parsed).toMatchObject({ + poolEntryId: 17, + uniqueName: '풀장수', + name: '풀장수', + stats: { leadership: 69, strength: 12, intelligence: 80 }, + dex: [1, 2, 3, 4, 5], + specialDomestic: 'che_event_징병', + imageServer: 1, + picture: 'pool.gif', + }); + expect(readScenarioGeneralPoolClaim(meta)).toEqual({ + poolEntryId: 17, + uniqueName: '풀장수', + claimedAt: claimedAt.toISOString(), + }); + }); + + it('only consumes a stat-type draw for an ambiguous fixed-stat candidate', () => { + let draws = 0; + const rng = { + nextFloat1: () => { + draws += 1; + return 0; + }, + nextBool: () => false, + nextInt: () => 0, + }; + + expect( + resolveLegacyNpcStatTypeFromFixedStats(rng, { + leadership: 70, + strength: 80, + intelligence: 10, + }) + ).toBe('무'); + expect(draws).toBe(0); + expect( + resolveLegacyNpcStatTypeFromFixedStats(rng, { + leadership: 70, + strength: 50, + intelligence: 50, + }) + ).toBe('무'); + expect(draws).toBe(1); + }); +}); diff --git a/packages/logic/test/actions/turn/nationVolunteerRecruit.test.ts b/packages/logic/test/actions/turn/nationVolunteerRecruit.test.ts index 290612c3..b3aef5e5 100644 --- a/packages/logic/test/actions/turn/nationVolunteerRecruit.test.ts +++ b/packages/logic/test/actions/turn/nationVolunteerRecruit.test.ts @@ -2,6 +2,7 @@ import { ConstantRNG, RandUtil } from '@sammo-ts/common'; import { describe, expect, it } from 'vitest'; import type { General, Nation } from '../../../src/domain/entities.js'; +import { parseScenarioGeneralPoolCandidate } from '../../../src/actions/turn/generalPool.js'; import { ActionResolver, type VolunteerRecruitEnvironment, @@ -80,10 +81,19 @@ describe('nation volunteer recruitment lifespan', () => { currentYear: 190, currentMonth: 1, startYear: 180, + centennialRules: { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: null, + dexLimit: 1_000_000, + }, + centennialNpcDexTargetRatio: 0.4, averageNationGeneralCount: 0, nationAverageStats: { leadership: 50, strength: 50, intelligence: 50 }, - nationAverageExperience: 1_000, - nationAverageDedication: 1_000, + nationAverageExperience: 0, + nationAverageDedication: 0, nationAverageDex: [100, 100, 100, 100, 100], friendlyGenerals: [general], createGeneralId: () => 2, @@ -104,10 +114,161 @@ describe('nation volunteer recruitment lifespan', () => { name: 'ⓖ장수', bornYear: 170, deadYear: 200, + experience: 2_000, + dedication: 2_000, meta: { birthYear: 170, deathYear: 200, }, }); }); + + it('uses a U30 candidate batch while keeping the Ref volunteer overrides', () => { + const resolver = new ActionResolver([], environment); + const turnTimeBase = new Date('0190-01-01T00:00:00.000Z'); + const poolCandidate = parseScenarioGeneralPoolCandidate({ + id: 17, + uniqueName: '의병후보', + info: { + generalName: '의병후보', + leadership: 70, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [11, 22, 33, 44, 55], + imgsvr: 1, + picture: 'volunteer.gif', + }, + }); + const context = { + general: structuredClone(general), + nation: structuredClone(nation), + rng: new RandUtil(new ConstantRNG(0)), + addLog: () => undefined, + currentYear: 190, + currentMonth: 1, + startYear: 180, + centennialRules: { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: null, + dexLimit: 1_000_000, + }, + centennialNpcDexTargetRatio: 0.4, + averageNationGeneralCount: 0, + nationAverageStats: { leadership: 50, strength: 50, intelligence: 50 }, + nationAverageExperience: 1_000, + nationAverageDedication: 1_000, + nationAverageDex: [100, 100, 100, 100, 100], + friendlyGenerals: [general], + generalPool: [poolCandidate], + existingGeneralNames: ['군주'], + createGeneralId: () => 2, + turnTermSeconds: 60, + turnTimeBase, + ticksPerSecond: 1, + } as VolunteerRecruitResolveContext; + + const outcome = resolver.resolve(context, {}); + const createdEffect = outcome.effects.find((effect) => effect.type === 'general:add'); + expect(createdEffect?.type).toBe('general:add'); + if (!createdEffect || createdEffect.type !== 'general:add') { + return; + } + + expect(createdEffect.general).toMatchObject({ + name: 'ⓖ의병후보', + stats: { leadership: 70, strength: 80, intelligence: 10 }, + picture: 'volunteer.gif', + imageServer: 1, + role: { specialDomestic: null, specialWar: null }, + meta: { + dex1: 11, + dex2: 22, + dex3: 33, + dex4: 44, + dex5: 55, + scenarioGeneralPoolClaim: { + poolEntryId: 17, + uniqueName: '의병후보', + claimedAt: turnTimeBase.toISOString(), + }, + }, + }); + }); + + it('generates ordinary volunteer stats and dex before applying the S100 .9/.4 target', () => { + const resolver = new ActionResolver([], environment); + const turnTimeBase = new Date('0195-01-01T00:00:00.000Z'); + const poolCandidate = parseScenarioGeneralPoolCandidate({ + id: 101, + uniqueName: 'A1000101', + info: { + uniqueName: 'A1000101', + generalName: '100기의병', + leadership: 100, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [900_000, 800_000, 700_000, 600_000, 500_000], + imgsvr: 1, + picture: 'centennial-volunteer.gif', + event100Growth: true, + }, + }); + const context = { + general: structuredClone(general), + nation: structuredClone(nation), + rng: new RandUtil(new ConstantRNG(0)), + addLog: () => undefined, + currentYear: 195, + currentMonth: 1, + startYear: 180, + centennialRules: { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: null, + dexLimit: 1_000_000, + }, + centennialNpcDexTargetRatio: 0.4, + averageNationGeneralCount: 0, + nationAverageStats: { leadership: 50, strength: 50, intelligence: 50 }, + nationAverageExperience: 1_000, + nationAverageDedication: 1_000, + nationAverageDex: [100, 100, 100, 100, 100], + friendlyGenerals: [general], + generalPool: [poolCandidate], + existingGeneralNames: ['군주'], + createGeneralId: () => 2, + turnTermSeconds: 60, + turnTimeBase, + ticksPerSecond: 1, + } as VolunteerRecruitResolveContext; + + const outcome = resolver.resolve(context, {}); + const createdEffect = outcome.effects.find((effect) => effect.type === 'general:add'); + expect(createdEffect?.type).toBe('general:add'); + if (!createdEffect || createdEffect.type !== 'general:add') { + return; + } + + expect(createdEffect.general).toMatchObject({ + name: 'ⓖ100기의병', + stats: { leadership: 91, strength: 73, intelligence: 10 }, + role: { specialDomestic: 'che_event_징병' }, + meta: { + dex1: 360_000, + dex2: 320_000, + dex3: 280_000, + dex4: 240_000, + dex5: 200_000, + scenarioGeneralPoolClaim: { poolEntryId: 101, uniqueName: 'A1000101' }, + event100_allstar: { targetId: 'A1000101', milestone: 4, dexTargetRatio: 0.4 }, + }, + }); + }); }); diff --git a/packages/logic/test/actions/turn/talentScoutGeneralPool.test.ts b/packages/logic/test/actions/turn/talentScoutGeneralPool.test.ts new file mode 100644 index 00000000..405832d7 --- /dev/null +++ b/packages/logic/test/actions/turn/talentScoutGeneralPool.test.ts @@ -0,0 +1,229 @@ +import { ConstantRNG, RandUtil } from '@sammo-ts/common'; +import { describe, expect, it } from 'vitest'; + +import { ActionResolver, type TalentScoutResolveContext } from '../../../src/actions/turn/general/che_인재탐색.js'; +import { parseScenarioGeneralPoolCandidate } from '../../../src/actions/turn/generalPool.js'; +import type { City, General } from '../../../src/domain/entities.js'; + +const general: General = { + id: 1, + name: '탐색자', + nationId: 1, + cityId: 3, + troopId: 0, + stats: { leadership: 70, strength: 70, intelligence: 70 }, + experience: 1_000, + dedication: 1_000, + officerLevel: 1, + role: { + personality: null, + specialDomestic: null, + specialWar: null, + items: { horse: null, weapon: null, book: null, item: null }, + }, + injury: 0, + gold: 1_000, + rice: 1_000, + crew: 0, + crewTypeId: 0, + train: 0, + atmos: 0, + age: 30, + npcState: 0, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + meta: { killturn: 24 }, +}; + +const city: City = { + id: 3, + name: '탐색도시', + nationId: 1, + level: 4, + state: 0, + population: 10_000, + populationMax: 20_000, + agriculture: 1_000, + agricultureMax: 2_000, + commerce: 1_000, + commerceMax: 2_000, + security: 1_000, + securityMax: 2_000, + supplyState: 1, + frontState: 0, + defence: 1_000, + defenceMax: 2_000, + wall: 1_000, + wallMax: 2_000, + meta: {}, +}; + +describe('talent scout scenario general pool', () => { + it('keeps the U30 fixed stats and dex while applying the Ref scout overrides', () => { + const resolver = new ActionResolver([], { + develCost: 100, + maxGeneral: 100, + defaultNpcGold: 1_000, + defaultNpcRice: 1_000, + defaultCrewTypeId: 0, + defaultSpecialDomestic: null, + defaultSpecialWar: null, + availablePersonalities: ['che_안전'], + }); + const turnTimeBase = new Date('0190-01-01T00:00:00.000Z'); + const poolCandidate = parseScenarioGeneralPoolCandidate({ + id: 23, + uniqueName: '탐색후보', + info: { + generalName: '탐색후보', + leadership: 70, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [12, 24, 36, 48, 60], + imgsvr: 1, + picture: 'scout.gif', + }, + }); + const context = { + general: structuredClone(general), + rng: new RandUtil(new ConstantRNG(0)), + addLog: () => undefined, + currentYear: 190, + currentMonth: 1, + startYear: 180, + retirementYear: 80, + centennialRules: { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: null, + dexLimit: 1_000_000, + }, + centennialNpcDexTargetRatio: 0.4, + worldSummary: { + totalGeneralCount: 0, + totalNpcCount: 0, + averageStats: { leadership: 50, strength: 50, intelligence: 50 }, + averageDex: [100, 100, 100, 100, 100], + }, + generalPool: [poolCandidate], + cityPool: [city], + existingGeneralNames: ['탐색자'], + createGeneralId: () => 2, + turnTermMinutes: 10, + turnTimeBase, + ticksPerSecond: 1, + } as TalentScoutResolveContext; + + const outcome = resolver.resolve(context, {}); + const createdEffect = outcome.effects.find((effect) => effect.type === 'general:add'); + expect(createdEffect?.type).toBe('general:add'); + if (!createdEffect || createdEffect.type !== 'general:add') { + return; + } + + expect(createdEffect.general).toMatchObject({ + name: 'ⓜ탐색후보', + stats: { leadership: 70, strength: 80, intelligence: 10 }, + picture: 'scout.gif', + imageServer: 1, + role: { specialDomestic: null, specialWar: null }, + meta: { + dex1: 12, + dex2: 24, + dex3: 36, + dex4: 48, + dex5: 60, + scenarioGeneralPoolClaim: { + poolEntryId: 23, + uniqueName: '탐색후보', + claimedAt: turnTimeBase.toISOString(), + }, + }, + }); + }); + + it('generates ordinary stats and dex before applying the S100 .9/.4 target', () => { + const resolver = new ActionResolver([], { + develCost: 100, + maxGeneral: 100, + defaultNpcGold: 1_000, + defaultNpcRice: 1_000, + defaultCrewTypeId: 0, + defaultSpecialDomestic: null, + defaultSpecialWar: null, + availablePersonalities: ['che_안전'], + }); + const turnTimeBase = new Date('0195-01-01T00:00:00.000Z'); + const poolCandidate = parseScenarioGeneralPoolCandidate({ + id: 100, + uniqueName: 'A1000100', + info: { + uniqueName: 'A1000100', + generalName: '100기탐색', + leadership: 100, + strength: 80, + intel: 10, + specialDomestic: 'che_event_징병', + dex: [900_000, 800_000, 700_000, 600_000, 500_000], + imgsvr: 1, + picture: 'centennial-scout.gif', + event100Growth: true, + }, + }); + const context = { + general: structuredClone(general), + rng: new RandUtil(new ConstantRNG(0)), + addLog: () => undefined, + currentYear: 195, + currentMonth: 1, + startYear: 180, + retirementYear: 80, + centennialRules: { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: null, + dexLimit: 1_000_000, + }, + centennialNpcDexTargetRatio: 0.4, + worldSummary: { + totalGeneralCount: 0, + totalNpcCount: 0, + averageStats: { leadership: 50, strength: 50, intelligence: 50 }, + averageDex: [100, 100, 100, 100, 100], + }, + generalPool: [poolCandidate], + cityPool: [city], + existingGeneralNames: ['탐색자'], + createGeneralId: () => 2, + turnTermMinutes: 10, + turnTimeBase, + ticksPerSecond: 1, + } as TalentScoutResolveContext; + + const outcome = resolver.resolve(context, {}); + const createdEffect = outcome.effects.find((effect) => effect.type === 'general:add'); + expect(createdEffect?.type).toBe('general:add'); + if (!createdEffect || createdEffect.type !== 'general:add') { + return; + } + + expect(createdEffect.general).toMatchObject({ + name: 'ⓜ100기탐색', + stats: { leadership: 91, strength: 73, intelligence: 10 }, + role: { specialDomestic: 'che_event_징병' }, + meta: { + dex1: 360_000, + dex2: 320_000, + dex3: 280_000, + dex4: 240_000, + dex5: 200_000, + scenarioGeneralPoolClaim: { poolEntryId: 100, uniqueName: 'A1000100' }, + event100_allstar: { targetId: 'A1000100', milestone: 4, dexTargetRatio: 0.4 }, + }, + }); + }); +}); diff --git a/packages/logic/test/centennialAllStar.test.ts b/packages/logic/test/centennialAllStar.test.ts new file mode 100644 index 00000000..ac5cc061 --- /dev/null +++ b/packages/logic/test/centennialAllStar.test.ts @@ -0,0 +1,229 @@ +import { describe, expect, it } from 'vitest'; + +import type { General } from '../src/domain/entities.js'; +import { + CENTENNIAL_ALL_STAR_AUX_KEY, + applyCentennialAllStarTarget, + calculateCentennialGeneratedNpcInitialStats, + calculateCentennialLegacyUserGrant, + calculateCentennialProgress, + calculateCentennialUserInitialStats, + initialCentennialAllStarAux, + prepareCentennialLegacyUserReselection, + readCentennialAllStarPoolTarget, + readCentennialAllStarAux, + reconcileCentennialDexConversion, + type CentennialAllStarRules, + type CentennialAllStarTarget, +} from '../src/scenario/centennialAllStar.js'; + +const rules: CentennialAllStarRules = { + defaultStatMin: 15, + defaultStatMax: 80, + defaultStatTotal: 165, + maxStatLevel: 255, + defaultSpecialDomestic: 'None', + dexLimit: 1_000_000, +}; + +const target = (overrides: Partial = {}): CentennialAllStarTarget => ({ + uniqueName: 'A1000001', + generalName: '1·조민', + leadership: 100, + strength: 80, + intel: 10, + dex: [900_000, 800_000, 700_000, 600_000, 500_000], + specialDomestic: 'che_event_무쌍', + ...overrides, +}); + +const general = (overrides: Partial = {}): General => ({ + id: 1, + name: '장수', + nationId: 0, + cityId: 1, + troopId: 0, + stats: { leadership: 15, strength: 15, intelligence: 10 }, + experience: 0, + dedication: 0, + officerLevel: 0, + role: { + personality: 'che_안전', + specialDomestic: 'None', + specialWar: 'None', + items: { horse: null, weapon: null, book: null, item: null }, + }, + injury: 0, + gold: 1_000, + rice: 1_000, + crew: 0, + crewTypeId: 1100, + train: 0, + atmos: 0, + age: 20, + npcState: 0, + triggerState: { flags: {}, counters: {}, modifiers: {}, meta: {} }, + meta: { killturn: 5, dex1: 0, dex2: 0, dex3: 0, dex4: 0, dex5: 0 }, + ...overrides, +}); + +const metaWithAux = (aux: ReturnType, killturn = 5): General['meta'] => { + const meta: General['meta'] = { killturn, dex1: 0, dex2: 0, dex3: 0, dex4: 0, dex5: 0 }; + const mutable: Record = meta; + mutable[CENTENNIAL_ALL_STAR_AUX_KEY] = aux; + return meta; +}; + +describe('100기 올스타 성장 계약', () => { + it('uses the Ref 15-year linear milestones and shaped user allocation', () => { + expect(calculateCentennialProgress({ startYear: 180, year: 180, month: 1 })).toBe(0); + expect(calculateCentennialProgress({ startYear: 180, year: 183, month: 1 })).toBeCloseTo(0.2); + expect(calculateCentennialProgress({ startYear: 180, year: 186, month: 1 })).toBeCloseTo(0.4); + expect(calculateCentennialProgress({ startYear: 180, year: 195, month: 1 })).toBe(1); + expect(calculateCentennialProgress({ startYear: 180, year: 220, month: 1 }, 0.9)).toBe(0.9); + expect(calculateCentennialUserInitialStats(target({ leadership: 80, strength: 70, intel: 50 }), rules)).toEqual( + { leadership: 65, strength: 58, intel: 42 } + ); + }); + + it('recognizes only the S100 source marker as a Centennial pool target', () => { + expect( + readCentennialAllStarPoolTarget({ + uniqueName: target().uniqueName, + name: target().generalName!, + sourceInfo: { ...target(), event100Growth: true }, + }) + ).toMatchObject(target()); + expect( + readCentennialAllStarPoolTarget({ + uniqueName: 'legacy', + name: 'legacy', + sourceInfo: { ...target(), event100Growth: false }, + }) + ).toBeNull(); + }); + + it('marks the legacy creation range as replaceable before first reselection', () => { + expect(calculateCentennialLegacyUserGrant(90, 10, rules)).toBe(75); + const legacyMeta = metaWithAux({ + ...initialCentennialAllStarAux(target(), rules), + granted: { + ...initialCentennialAllStarAux(target(), rules).granted, + leadership: 10, + }, + userInitialStats: null, + }); + const prepared = prepareCentennialLegacyUserReselection( + general({ + stats: { leadership: 90, strength: 50, intelligence: 10 }, + meta: legacyMeta, + }), + rules + ); + const aux = readCentennialAllStarAux(prepared)!; + + expect(aux.granted.leadership).toBe(75); + expect(aux.granted.strength).toBe(35); + expect(aux.granted.intel).toBe(0); + expect(aux.userInitialStats).toEqual({ leadership: 80, strength: 50, intel: 10 }); + }); + + it('keeps generated NPC stat RNG output while mapping its strong axes to the target', () => { + expect( + calculateCentennialGeneratedNpcInitialStats(target(), { + leadership: 72, + strength: 66, + intelligence: 12, + }) + ).toEqual({ leadership: 72, strength: 66, intelligence: 12 }); + + const npc = general({ + npcState: 3, + stats: { leadership: 72, strength: 66, intelligence: 12 }, + meta: metaWithAux(initialCentennialAllStarAux(target(), rules), 120), + }); + const result = applyCentennialAllStarTarget( + npc, + target(), + { startYear: 180, year: 195, month: 1 }, + rules, + 0.9, + 0.4 + ); + expect(result.stats).toEqual({ leadership: 91, strength: 73, intelligence: 12 }); + expect([result.meta.dex1, result.meta.dex2, result.meta.dex3, result.meta.dex4, result.meta.dex5]).toEqual([ + 360_000, 320_000, 280_000, 240_000, 200_000, + ]); + expect(result.milestone).toBe(4); + }); + + it('unlocks the historical trait at 40% and preserves organic growth on reselection', () => { + const firstTarget = target(); + const initial = calculateCentennialUserInitialStats(firstTarget, rules); + const first = general({ + stats: { + leadership: initial.leadership, + strength: initial.strength, + intelligence: initial.intel, + }, + meta: metaWithAux(initialCentennialAllStarAux(firstTarget, rules, initial)), + }); + const grown = applyCentennialAllStarTarget(first, firstTarget, { startYear: 180, year: 186, month: 1 }, rules); + expect(grown.role.specialDomestic).toBe('che_event_무쌍'); + expect(grown.milestone).toBe(2); + + const oldGranted = readCentennialAllStarAux(grown.meta)!.granted.leadership; + const organicLeadership = grown.stats.leadership + 100; + const changed = applyCentennialAllStarTarget( + { + ...first, + stats: { ...grown.stats, leadership: organicLeadership }, + role: grown.role, + meta: grown.meta, + }, + target({ + uniqueName: 'A1000002', + leadership: 70, + strength: 60, + intel: 50, + specialDomestic: 'che_event_견고', + }), + { startYear: 180, year: 186, month: 1 }, + rules + ); + expect(changed.stats.leadership).toBe(organicLeadership - oldGranted); + expect(changed.role.specialDomestic).toBe('che_event_견고'); + expect(changed.targetChanged).toBe(true); + }); + + it('does not refill an event-backed dex floor after 숙련전환 consumes it', () => { + const dexTarget = target({ dex: [1_000_000, 0, 0, 0, 0] }); + const base = general({ + meta: metaWithAux(initialCentennialAllStarAux(dexTarget, rules)), + }); + const full = applyCentennialAllStarTarget(base, dexTarget, { startYear: 180, year: 195, month: 1 }, rules); + const convertedMeta = { + ...full.meta, + dex1: 600_000, + dex2: 360_000, + }; + const reconciled = reconcileCentennialDexConversion( + convertedMeta, + 'dex1', + 'dex2', + 1_000_000, + 600_000, + 0, + 360_000, + 0.9 + ); + const afterMonth = applyCentennialAllStarTarget( + { ...base, stats: full.stats, role: full.role, meta: reconciled }, + dexTarget, + { startYear: 180, year: 195, month: 2 }, + rules + ); + expect(afterMonth.meta.dex1).toBe(600_000); + expect(afterMonth.meta.dex2).toBe(360_000); + }); +}); diff --git a/packages/logic/test/crewTypeExecution.test.ts b/packages/logic/test/crewTypeExecution.test.ts index 72fb885d..abfd928e 100644 --- a/packages/logic/test/crewTypeExecution.test.ts +++ b/packages/logic/test/crewTypeExecution.test.ts @@ -13,7 +13,13 @@ import { computeBattleOrder, resolveWarBattle } from '../src/war/engine.js'; import { createWarTriggerEnv, WarTriggerCaller } from '../src/war/triggers.js'; import type { WarEngineConfig } from '../src/war/types.js'; import { WarUnitCity, WarUnitGeneral, type WarUnit } from '../src/war/units.js'; -import { getCrewTypePickScore, parseUnitSetDefinition } from '../src/world/unitSet.js'; +import { + getCrewTypePickScore, + getTechAbility, + getTechCost, + getTechLevel, + parseUnitSetDefinition, +} from '../src/world/unitSet.js'; import type { CrewTypeDefinition, UnitSetDefinition } from '../src/world/types.js'; const config: WarEngineConfig = { @@ -393,6 +399,20 @@ describe('crew type war triggers', () => { }); describe('crew type numeric policy', () => { + it('uses the scenario 913 maximum tech level for ability and cost', () => { + expect(getTechLevel(13_000, 15)).toBe(13); + expect(getTechAbility(13_000, 15)).toBe(325); + expect(getTechCost(13_000, 15)).toBe(2.95); + + expect(getTechLevel(15_000, 15)).toBe(15); + expect(getTechAbility(15_000, 15)).toBe(375); + expect(getTechCost(15_000, 15)).toBe(3.25); + + expect(getTechLevel(15_000)).toBe(12); + expect(getTechAbility(15_000)).toBe(300); + expect(getTechCost(15_000)).toBe(2.8); + }); + it('matches the legacy pickScore formula including magicCoef', () => { const wizard = crewType(1400, 4, '귀병', { attack: 80, @@ -404,4 +424,17 @@ describe('crew type numeric policy', () => { const expected = ((500 + 80 + 80 + 75 * 2) * (1 + 7 / 2) * (1 + 0.5 / 2)) / (1 - 0.05); expect(getCrewTypePickScore(wizard, 3000, 500)).toBeCloseTo(expected); }); + + it('uses the scenario maximum tech level in the crew pick score', () => { + const wizard = crewType(1400, 4, '귀병', { + attack: 80, + defence: 80, + speed: 7, + avoid: 5, + magicCoef: 0.5, + }); + const expected = ((500 + 80 + 80 + 375 * 2) * (1 + 7 / 2) * (1 + 0.5 / 2)) / (1 - 0.05); + + expect(getCrewTypePickScore(wizard, 15_000, 500, 15)).toBeCloseTo(expected); + }); }); diff --git a/packages/logic/test/itemActionEvents.test.ts b/packages/logic/test/itemActionEvents.test.ts index daee0fa4..4c720c76 100644 --- a/packages/logic/test/itemActionEvents.test.ts +++ b/packages/logic/test/itemActionEvents.test.ts @@ -12,6 +12,9 @@ import { createItemActionModules, createItemModuleRegistry } from '../src/items/ import { getEquippedItemInstance } from '../src/items/inventory.js'; import { itemModule as dogiModule } from '../src/items/che_보물_도기.js'; import { itemModule as strategyItemModule } from '../src/items/che_계략_이추.js'; +import { itemModule as leadershipWineModule } from '../src/items/che_능력치_통솔_보령압주.js'; +import { itemModule as strengthWineModule } from '../src/items/che_능력치_무력_두강주.js'; +import { itemModule as intelligenceWineModule } from '../src/items/che_능력치_지력_이강주.js'; import { LogFormat } from '../src/logging/types.js'; const BASE_ENV: TurnCommandEnv = { @@ -109,6 +112,31 @@ const dogiCatalog: Record = { }, }; +const scalingStatItems = [ + { module: leadershipWineModule, statName: 'leadership' as const }, + { module: strengthWineModule, statName: 'strength' as const }, + { module: intelligenceWineModule, statName: 'intelligence' as const }, +]; + +describe('year-scaling stat items', () => { + it.each([ + { year: 180, startYear: 180, maxTechLevel: 12, expected: 75 }, + { year: 200, startYear: 180, maxTechLevel: 12, expected: 80 }, + { year: 260, startYear: 180, maxTechLevel: 12, expected: 87 }, + { year: 260, startYear: 180, maxTechLevel: 15, expected: 90 }, + ])('applies +5, four-year growth, and the $maxTechLevel cap', ({ year, startYear, maxTechLevel, expected }) => { + const context = { + general: makeGeneral(null), + time: { year, month: 1, startYear }, + maxTechLevel, + }; + + for (const { module, statName } of scalingStatItems) { + expect(module.onCalcStat?.(context, statName, 70)).toBe(expected); + } + }); +}); + const createItemOnlyStack = (items: ReturnType['general']) => { const noOp = {}; return createRefOrderedActionStack({ diff --git a/packages/logic/test/warAftermath.test.ts b/packages/logic/test/warAftermath.test.ts index 8c81aa6f..a2482f95 100644 --- a/packages/logic/test/warAftermath.test.ts +++ b/packages/logic/test/warAftermath.test.ts @@ -8,7 +8,7 @@ import type { UnitSetDefinition } from '../src/world/types.js'; import { resolveWarAftermath } from '../src/war/aftermath.js'; import type { WarAftermathConfig } from '../src/war/types.js'; import { LogFormat } from '../src/logging/types.js'; -import { buildWarAftermathConfig } from '../src/actions/turn/actionContextHelpers.js'; +import { buildWarAftermathConfig, buildWarConfig } from '../src/actions/turn/actionContextHelpers.js'; import type { ScenarioConfig } from '../src/scenario/types.js'; const buildUnitSet = (): UnitSetDefinition => ({ @@ -137,6 +137,62 @@ describe('war aftermath', () => { expect(config.maxTechLevel).toBe(12); }); + it('propagates the scenario maximum tech level to battle and aftermath configs', () => { + const scenarioConfig: ScenarioConfig = { + stat: { total: 0, min: 0, max: 0, npcTotal: 0, npcMax: 0, npcMin: 0, chiefMin: 0 }, + iconPath: '', + map: {}, + const: { maxTechLevel: 15 }, + environment: { mapName: 'test', unitSet: 'test' }, + }; + + expect(buildWarConfig(scenarioConfig, buildUnitSet()).maxTechLevel).toBe(15); + expect(buildWarAftermathConfig(scenarioConfig, 999).maxTechLevel).toBe(15); + }); + + it('uses the scenario maximum tech level for supply-city rice consumption', () => { + const attackerNation = buildNation(1); + const defenderNation = buildNation(2); + defenderNation.meta.tech = 15_000; + const attackerCity = buildCity(1, 1); + const defenderCity = buildCity(2, 2); + defenderCity.meta.supply = 1; + const attacker = buildGeneral(1, 1, 1); + + resolveWarAftermath({ + battle: { + attacker, + defenders: [], + defenderCity, + logs: [], + conquered: false, + reports: [ + { + id: defenderCity.id, + type: 'city', + name: defenderCity.name, + isAttacker: false, + killed: 100, + dead: 0, + phase: 1, + }, + ], + }, + attackerNation, + defenderNation, + attackerCity, + defenderCity, + nations: [attackerNation, defenderNation], + cities: [attackerCity, defenderCity], + generals: [attacker], + unitSet: buildUnitSet(), + config: { ...buildConfig(), maxTechLevel: 15 }, + time: { year: 200, month: 1, startYear: 180 }, + }); + + expect(defenderNation.rice).toBe(985); + }); + it('updates tech and diplomacy deltas', () => { const attackerNation = buildNation(1); const defenderNation = buildNation(2); diff --git a/packages/logic/test/warEngine.test.ts b/packages/logic/test/warEngine.test.ts index eccc16d8..8d37a064 100644 --- a/packages/logic/test/warEngine.test.ts +++ b/packages/logic/test/warEngine.test.ts @@ -166,6 +166,45 @@ const buildGeneral = (strength: number): General => ({ }); describe('war triggers', () => { + it('passes battle time and maximum tech level to year-scaling stat items', async () => { + const general = buildGeneral(80); + const [leadershipWine] = await loadItemModules(['che_능력치_통솔_보령압주']); + expect(leadershipWine).toBeDefined(); + const unit = new WarUnitGeneral( + new RandUtil(new ConstantRNG(0)), + { ...buildConfig(), maxTechLevel: 15 }, + general, + buildCity(), + buildNation(), + true, + new WarCrewType(buildUnitSet().crewTypes![0]!), + new ActionLogger({ generalId: 1, nationId: 1 }), + new WarActionPipeline([leadershipWine!]), + { year: 260, month: 1, startYear: 180 } + ); + + expect(unit.getComputedStat('leadership', general.stats.leadership, { withInjury: false })).toBe(90); + }); + + it('uses the battle config maximum tech level for combat ability', () => { + const nation = buildNation(); + nation.meta.tech = 15_000; + const unit = new WarUnitGeneral( + new RandUtil(new ConstantRNG(0)), + { ...buildConfig(), maxTechLevel: 15 }, + buildGeneral(80), + buildCity(), + nation, + true, + new WarCrewType(buildUnitSet().crewTypes![0]!), + new ActionLogger({ generalId: 1, nationId: 1 }), + new WarActionPipeline([]), + { year: 200, month: 1, startYear: 180 } + ); + + expect(unit.getComputedAttack()).toBeCloseTo(608, 12); + }); + it('normalizes accumulated dexterity to the PHP SQL float precision', () => { const general = buildGeneral(80); general.meta.dex4 = 14_677.199999999997; diff --git a/resources/general-pool/SPoolUnderU100.json b/resources/general-pool/SPoolUnderU100.json new file mode 100644 index 00000000..e596079c --- /dev/null +++ b/resources/general-pool/SPoolUnderU100.json @@ -0,0 +1,4688 @@ +{ + "excludedEventPhases": [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95], + "columns": ["generalName", "leadership", "strength", "intel", "specialDomestic", "dex", "imgsvr", "picture", "sourcePhase", "sourceServerId", "sourceGeneralNo", "selectionReasons"], + "data": [ + ["1·조민", 85, 69, 12, "che_event_무쌍", [54691, 398024, 31027, 89301, 24687], 1, "55617fd.png?=20180630", 1, "che_180628_z9X4", 3, ["hall:dex1", "hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["1·하루", 77, 77, 10, "che_event_견고", [49781, 447666, 81863, 89704, 170291], 1, "3aa501a.jpg?=20180710", 1, "che_180628_z9X4", 4, ["hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["1·먹고튄다", 81, 72, 11, "che_event_돌격", [21814, 369560, 15221, 74569, 36015], 1, "c096284.jpg?=20180629", 1, "che_180628_z9X4", 5, ["hall:dex2"]], + ["1·소금ㄴㄴ염", 88, 68, 10, "che_event_격노", [14255, 33412, 198801, 39121, 243290], 1, "fb0d354.jpg?=20180629", 1, "che_180628_z9X4", 6, ["hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:tlrate"]], + ["1·SARS", 52, 30, 83, "che_event_신산", [13983, 51943, 16887, 272296, 24209], 0, "default.jpg", 1, "che_180628_z9X4", 7, ["chief:9"]], + ["1·니노미야아스카", 72, 82, 10, "che_event_견고", [34935, 31645, 475305, 84914, 66071], 1, "59bc7e3.jpg?=20180628", 1, "che_180628_z9X4", 8, ["chief:12", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum"]], + ["1·이드", 71, 86, 10, "che_event_위압", [31794, 771290, 45847, 120990, 34428], 1, "7cbc70f.jpg?=20180708", 1, "che_180628_z9X4", 11, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["1·평민킬러", 71, 83, 11, "che_event_돌격", [399767, 36713, 64437, 81230, 20257], 1, "6add0f.jpg?=20180515", 1, "che_180628_z9X4", 14, ["hall:dex1", "hall:killnum"]], + ["1·살수묵랑", 71, 85, 10, "che_event_징병", [17803, 62496, 303653, 88778, 29276], 1, "a9298fc.png?=20180628", 1, "che_180628_z9X4", 15, ["hall:dex3", "hall:firenum", "hall:tprate"]], + ["1·죽음의 별", 72, 10, 85, "che_event_신중", [37180, 29723, 96050, 353137, 25977], 1, "6532f29.jpg?=20180628", 1, "che_180628_z9X4", 19, ["hall:dex4"]], + ["1·호시노 루리", 85, 70, 11, "che_event_척사", [27525, 590785, 47483, 117144, 146758], 1, "e728603.jpg?=20180713", 1, "che_180628_z9X4", 20, ["chief:11", "hall:betwin", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["1·뒈코뭐리", 70, 10, 84, "che_event_신산", [44689, 36359, 28357, 313820, 41801], 1, "97ec8a1.png?=20180628", 1, "che_180628_z9X4", 22, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4"]], + ["1·꽁치", 69, 86, 10, "che_event_돌격", [8159, 57830, 144615, 32030, 17901], 1, "ca6391e.jpg?=20180711", 1, "che_180628_z9X4", 24, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:killrate", "hall:tprate"]], + ["1·돌려돌려돌림판", 73, 10, 84, "che_event_필살", [45091, 105611, 63987, 669570, 23342], 0, "default.jpg", 1, "che_180628_z9X4", 25, ["hall:betgold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["1·만샘", 71, 10, 81, "che_event_귀병", [0, 6243, 0, 16558, 0], 1, "37d189c.jpg?=20180420", 1, "che_180628_z9X4", 28, ["hall:betwin"]], + ["1·삼남매아빠", 87, 68, 10, "che_event_견고", [3011, 57971, 168061, 51030, 28879], 0, "default.jpg", 1, "che_180628_z9X4", 29, ["hall:tlrate"]], + ["1·홈", 71, 10, 84, "che_event_반계", [63332, 52361, 18238, 258378, 22237], 1, "fc4c099.jpg?=20180630", 1, "che_180628_z9X4", 30, ["hall:dex1"]], + ["1·하우젤", 83, 73, 10, "che_event_견고", [9640, 282753, 32486, 46108, 48603], 1, "edb7b8f.jpg?=20180628", 1, "che_180628_z9X4", 32, ["hall:dex2"]], + ["1·제노에이지", 69, 10, 87, "che_event_반계", [6970, 66356, 31132, 249008, 37834], 1, "e90f675.jpg?=20180713", 1, "che_180628_z9X4", 33, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tirate", "hall:ttrate"]], + ["1·마스", 91, 11, 10, "che_event_무쌍", [2333, 3055, 0, 2330, 452014], 1, "5f739d7.gif?=20180712", 1, "che_180628_z9X4", 34, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["1·뽀빠이", 68, 83, 10, "che_event_저격", [7460, 65561, 57381, 28194, 16111], 1, "2eb5589.png?=20180702", 1, "che_180628_z9X4", 35, ["hall:tprate"]], + ["1·코사카우미", 76, 10, 80, "che_event_신중", [13115, 14190, 4337, 61830, 357074], 1, "ccc7692.jpg?=20180628", 1, "che_180628_z9X4", 39, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:ttrate", "hall:winrate"]], + ["1·료우기시키", 70, 83, 11, "che_event_의술", [334576, 19445, 27287, 45017, 33727], 1, "21b50f8.jpg?=20180628", 1, "che_180628_z9X4", 40, ["hall:dex1", "hall:killrate"]], + ["1·니쉬", 70, 84, 10, "che_event_저격", [58525, 40543, 122529, 31799, 27288], 1, "aef78f7.jpg?=20180628", 1, "che_180628_z9X4", 41, ["hall:dex1", "hall:tprate"]], + ["1·춤추는곰돌이강슬기", 71, 85, 10, "che_event_돌격", [14623, 44238, 364737, 71354, 52162], 1, "214e682.jpg?=20180709", 1, "che_180628_z9X4", 42, ["hall:dex3", "hall:dex5", "hall:killnum", "hall:killrate", "hall:tprate", "hall:winrate"]], + ["1·이빌라이져", 69, 84, 10, "che_event_징병", [32806, 208458, 7833, 39657, 24775], 0, "default.jpg", 1, "che_180628_z9X4", 43, ["hall:tprate"]], + ["1·칸자키 란코", 69, 11, 85, "che_event_격노", [31239, 23167, 14054, 322927, 44759], 1, "ad53ac0.jpg?=20180708", 1, "che_180628_z9X4", 47, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:firenum"]], + ["1·견고", 73, 81, 11, "che_event_필살", [315554, 37306, 106669, 60814, 36308], 0, "default.jpg", 1, "che_180628_z9X4", 48, ["hall:dedication", "hall:dex1", "hall:experience"]], + ["1·독고다이", 70, 84, 10, "che_event_징병", [7805, 52596, 264410, 79684, 23412], 0, "default.jpg", 1, "che_180628_z9X4", 50, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:dex3", "hall:tprate"]], + ["1·ㅇㄷㅇㄷ", 70, 10, 83, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 1, "che_180628_z9X4", 51, ["hall:experience"]], + ["1·첫기는잠입이제맛", 11, 72, 81, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 1, "che_180628_z9X4", 52, ["hall:firenum"]], + ["1·피피미", 80, 73, 10, "che_event_견고", [33230, 77710, 232993, 54304, 42731], 1, "aeb592.png?=20180629", 1, "che_180628_z9X4", 55, ["hall:dex3", "hall:firenum"]], + ["1·Tiasse", 79, 74, 10, "che_event_척사", [0, 32371, 21087, 0, 126195], 1, "7ebcf8a.jpg?=20180713", 1, "che_180628_z9X4", 57, ["hall:dex5", "hall:killrate", "hall:winrate"]], + ["1·마르", 72, 11, 81, "che_event_신중", [6329, 26749, 54384, 277444, 31517], 1, "3da8a49.jpg?=20180417", 1, "che_180628_z9X4", 59, ["hall:dex4"]], + ["1·노이어", 81, 72, 11, "che_event_견고", [26847, 141906, 31976, 49329, 11615], 0, "default.jpg", 1, "che_180628_z9X4", 63, ["hall:ttrate"]], + ["1·아소", 82, 10, 72, "che_event_징병", [14824, 66603, 34577, 274537, 17255], 1, "3d22492.jpg?=20180417", 1, "che_180628_z9X4", 64, ["hall:tlrate"]], + ["1·미스티", 87, 67, 10, "che_event_위압", [378651, 68043, 59721, 96238, 23956], 0, "default.jpg", 1, "che_180628_z9X4", 65, ["hall:dex1", "hall:killcrew", "hall:tlrate", "hall:warnum"]], + ["1·무장", 72, 10, 83, "che_event_징병", [9269, 30696, 26088, 296119, 30616], 0, "default.jpg", 1, "che_180628_z9X4", 67, ["hall:dex4", "hall:tirate"]], + ["1·물자조달쟁이", 71, 10, 83, "che_event_필살", [16354, 49134, 67257, 316348, 34250], 1, "3679089.jpg?=20180629", 1, "che_180628_z9X4", 68, ["hall:dex4", "hall:tirate"]], + ["1·사이키쿠스오", 69, 85, 10, "che_event_격노", [30845, 277427, 23274, 46460, 20044], 1, "76bcc11.jpg?=20180628", 1, "che_180628_z9X4", 69, ["hall:dex2", "hall:tprate"]], + ["1·Hide_D", 13, 69, 83, "che_event_척사", [0, 0, 1963, 0, 0], 1, "21d378f.jpg?=20180630", 1, "che_180628_z9X4", 70, ["hall:tirate"]], + ["1·아린", 13, 66, 81, "che_event_격노", [0, 0, 0, 0, 0], 1, "5804813.png?=20180629", 1, "che_180628_z9X4", 71, ["hall:tirate"]], + ["1·오다에리나", 75, 77, 12, "che_event_격노", [14744, 282180, 13513, 60424, 38930], 1, "37df877.jpg?=20180628", 1, "che_180628_z9X4", 73, ["chief:10", "hall:dex2"]], + ["1·야포", 69, 11, 83, "che_event_반계", [4541, 25297, 18959, 190505, 33514], 0, "default.jpg", 1, "che_180628_z9X4", 74, ["hall:tirate", "hall:winrate"]], + ["1·카오스피닉스", 71, 10, 83, "che_event_신중", [44331, 48376, 19179, 385408, 34139], 1, "2af0641.jpg?=20180706", 1, "che_180628_z9X4", 75, ["chief:7", "hall:dex4"]], + ["1·DZTO", 85, 67, 10, "che_event_돌격", [0, 135326, 41808, 17914, 27379], 1, "9c05100.jpg?=20180706", 1, "che_180628_z9X4", 76, ["hall:tlrate", "hall:ttrate"]], + ["1·화애루용병2", 10, 68, 82, "che_event_환술", [0, 0, 0, 0, 0], 0, "default.jpg", 1, "che_180628_z9X4", 78, ["hall:tirate"]], + ["1·리즈나", 71, 85, 10, "che_event_무쌍", [154806, 160366, 170422, 34193, 57545], 1, "6ef3386.jpg?=20180630", 1, "che_180628_z9X4", 79, ["hall:dex1", "hall:dex5", "hall:firenum", "hall:killnum", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["1·이치코", 72, 80, 10, "che_event_저격", [205187, 17782, 46838, 53075, 15721], 1, "ef6aac8.jpg?=20180628", 1, "che_180628_z9X4", 81, ["hall:dex1"]], + ["1·핫산", 19, 67, 79, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 1, "che_180628_z9X4", 83, ["hall:dedication"]], + ["1·망포", 77, 77, 10, "che_event_징병", [54497, 12612, 280281, 74044, 40149], 1, "bc427b1.jpg?=20180713", 1, "che_180628_z9X4", 84, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex3"]], + ["1·륜", 71, 10, 85, "che_event_징병", [44874, 18503, 19522, 190353, 10757], 1, "96061d5.jpg?=20180708", 1, "che_180628_z9X4", 85, ["hall:tirate", "hall:ttrate"]], + ["1·우사밍성인", 10, 67, 83, "che_event_필살", [0, 0, 0, 0, 0], 1, "baa3ab6.jpg?=20180629", 1, "che_180628_z9X4", 86, ["hall:tirate"]], + ["1·아사기리 겐", 69, 11, 86, "che_event_신중", [11990, 55291, 25184, 247169, 40450], 0, "default.jpg", 1, "che_180628_z9X4", 90, ["hall:ttrate"]], + ["1·캐로", 68, 9, 85, "che_event_반계", [0, 10460, 3148, 55941, 506], 0, "default.jpg", 1, "che_180628_z9X4", 96, ["hall:tirate"]], + ["1·개발살", 69, 84, 10, "che_event_저격", [3555, 74423, 19016, 28167, 2612], 0, "default.jpg", 1, "che_180628_z9X4", 98, ["hall:tprate"]], + ["1·늘모", 82, 72, 10, "che_event_무쌍", [0, 82347, 145492, 28974, 45695], 0, "default.jpg", 1, "che_180628_z9X4", 100, ["hall:firenum", "hall:ttrate"]], + ["1·Card", 83, 70, 10, "che_event_무쌍", [0, 217788, 26117, 41134, 24765], 1, "30f386f.jpg?=20180629", 1, "che_180628_z9X4", 102, ["hall:betgold", "hall:betrate", "hall:betwingold"]], + ["1·8월7일의 로비", 11, 67, 85, "che_event_집중", [0, 0, 0, 0, 0], 1, "5da83a4.jpg?=20180627", 1, "che_180628_z9X4", 105, ["hall:betrate", "hall:betwingold"]], + ["1·새장속의 이상향", 71, 10, 83, "che_event_신중", [36541, 68008, 106667, 616052, 54180], 0, "default.jpg", 1, "che_180628_z9X4", 106, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["1·무한파워안경", 85, 70, 10, "che_event_위압", [41570, 28860, 303636, 71899, 39164], 1, "b7e1a1f.jpg?=20180525", 1, "che_180628_z9X4", 108, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tlrate"]], + ["1·민트토끼", 72, 83, 10, "che_event_돌격", [48062, 337919, 28934, 77427, 29525], 1, "6f87652.jpg?=20180630", 1, "che_180628_z9X4", 116, ["hall:dex2"]], + ["1·아유", 83, 73, 10, "che_event_척사", [45035, 53813, 347280, 112550, 44124], 1, "bf8e3b6.jpg?=20180630", 1, "che_180628_z9X4", 117, ["chief:8", "hall:dex3", "hall:tlrate", "hall:warnum"]], + ["1·소마", 73, 81, 10, "che_event_견고", [456171, 41579, 99061, 122518, 38878], 0, "default.jpg", 1, "che_180628_z9X4", 119, ["hall:dex1", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["1·쿠라가노세라", 66, 10, 85, "che_event_격노", [5474, 4519, 1295, 45711, 9826], 1, "2cc240e.jpg?=20180630", 1, "che_180628_z9X4", 124, ["hall:firenum", "hall:winrate"]], + ["1·실장석", 12, 67, 85, "che_event_신중", [0, 0, 0, 0, 0], 1, "70dd32f.png?=20180630", 1, "che_180628_z9X4", 125, ["hall:dedication"]], + ["1·광삼이", 74, 10, 79, "che_event_필살", [19805, 70942, 31060, 330337, 23527], 1, "bcdfa8.jpg?=20180630", 1, "che_180628_z9X4", 146, ["hall:dex4"]], + ["1·밥알요정", 77, 77, 10, "che_event_위압", [28076, 54221, 319263, 61411, 48289], 1, "cf505d0.png?=20180630", 1, "che_180628_z9X4", 149, ["hall:dex3"]], + ["1·whan", 85, 69, 10, "che_event_필살", [20271, 311096, 38315, 50035, 20590], 0, "default.jpg", 1, "che_180628_z9X4", 150, ["hall:dex2"]], + ["1·무리인데요", 10, 83, 70, "che_event_의술", [0, 2188, 3044, 0, 1357], 1, "7c2d1e.jpg?=20180708", 1, "che_180628_z9X4", 153, ["hall:ttrate"]], + ["1·앙곤운띠", 79, 70, 10, null, [44642, 10831, 12526, 22095, 0], 0, "default.jpg", 1, "che_180628_z9X4", 220, ["hall:firenum"]], + ["2·제노에이지", 74, 10, 90, "che_event_반계", [61581, 159259, 137652, 602992, 24288], 1, "f80e777.jpg?=20180811", 2, "che_180719_R02C", 3, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:tirate"]], + ["2·자벨린", 21, 66, 86, "che_event_격노", [0, 0, 0, 3, 0], 1, "456b821.gif?=20180719", 2, "che_180719_R02C", 5, ["hall:tirate"]], + ["2·바리", 95, 12, 11, "che_event_격노", [0, 0, 0, 11173, 158671], 1, "e4e2524.gif?=20180803", 2, "che_180719_R02C", 8, ["hall:dex5", "hall:firenum", "hall:killrate"]], + ["2·평민킬러", 76, 86, 10, "che_event_필살", [13032, 114838, 491599, 128087, 28161], 1, "6add0f.jpg?=20180515", 2, "che_180719_R02C", 9, ["hall:dex3"]], + ["2·모리야 스와코", 70, 10, 91, "che_event_필살", [26582, 59174, 36283, 158109, 12491], 1, "2f1c0c9.gif?=20180718", 2, "che_180719_R02C", 10, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["2·도리도리반도리도리", 83, 83, 10, "che_event_무쌍", [28706, 144837, 1653358, 196769, 88686], 1, "79cffda.png?=20180805", 2, "che_180719_R02C", 11, ["chief:12", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["2·광삼이", 78, 10, 79, "che_event_척사", [75688, 132949, 110908, 326694, 8949], 1, "bcdfa8.jpg?=20180630", 2, "che_180719_R02C", 12, ["hall:dex1"]], + ["2·인간 사냥꾼", 86, 76, 12, "che_event_견고", [837722, 97147, 163548, 183617, 53832], 1, "bc6b556.jpg?=20180807", 2, "che_180719_R02C", 13, ["chief:6", "hall:dedication", "hall:dex1", "hall:experience", "hall:tlrate"]], + ["2·밤비에타", 75, 78, 14, "che_event_돌격", [235193, 44649, 43754, 65854, 16736], 1, "2840769.jpg?=20180730", 2, "che_180719_R02C", 14, ["hall:dex1"]], + ["2·물조명성너프필수", 87, 78, 10, "che_event_무쌍", [39205, 177529, 1298420, 161286, 84310], 0, "default.jpg", 2, "che_180719_R02C", 15, ["chief:11", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["2·카오스피닉스", 76, 85, 10, "che_event_견고", [30925, 124061, 542844, 92328, 36481], 1, "2af0641.jpg?=20180706", 2, "che_180719_R02C", 17, ["hall:dex3", "hall:tprate", "hall:ttrate"]], + ["2·명가의 수호자", 76, 12, 85, "che_event_신산", [35756, 111668, 199214, 1205047, 67252], 0, "default.jpg", 2, "che_180719_R02C", 18, ["chief:9", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killrate", "hall:warnum"]], + ["2·리안", 73, 11, 87, "che_event_필살", [47566, 123130, 72468, 344925, 50693], 0, "default.jpg", 2, "che_180719_R02C", 19, ["hall:tirate"]], + ["2·라스트오더", 89, 72, 10, "che_event_징병", [68419, 352418, 128029, 126673, 20134], 1, "54eec56.jpg?=20180719", 2, "che_180719_R02C", 20, ["hall:tlrate"]], + ["2·Card", 91, 67, 10, "che_event_징병", [75236, 481508, 110116, 119890, 36199], 1, "416a697.jpg?=20180720", 2, "che_180719_R02C", 21, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:tlrate"]], + ["2·렉사이", 74, 86, 10, "che_event_무쌍", [50200, 426369, 63501, 68528, 16438], 1, "6cc3ccf.jpg?=20180719", 2, "che_180719_R02C", 22, ["hall:firenum", "hall:tprate"]], + ["2·황금요정", 98, 10, 66, "che_event_신중", [8468, 11651, 18740, 36830, 203763], 1, "d8b3178.jpg?=20180719", 2, "che_180719_R02C", 23, ["hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["2·민트토끼", 77, 11, 87, "che_event_필살", [28684, 108898, 163577, 1255037, 61469], 1, "976f3f5.gif?=20180809", 2, "che_180719_R02C", 24, ["chief:7", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["2·SARS", 64, 24, 85, "che_event_척사", [25531, 83930, 84949, 328883, 57640], 0, "default.jpg", 2, "che_180719_R02C", 27, ["hall:betgold", "hall:ttrate"]], + ["2·이자요이 미쿠", 16, 70, 85, "che_event_필살", [0, 0, 0, 0, 0], 1, "199fb81.jpg?=20180719", 2, "che_180719_R02C", 28, ["hall:betwin", "hall:betwingold"]], + ["2·여고생쨩", 80, 80, 10, "che_event_무쌍", [47843, 132489, 396254, 53683, 45789], 1, "ebd8fab.jpg?=20180728", 2, "che_180719_R02C", 29, ["hall:betwin", "hall:dex3", "hall:ttrate"]], + ["2·실장석", 18, 68, 86, "che_event_필살", [0, 0, 0, 0, 0], 1, "70dd32f.png?=20180630", 2, "che_180719_R02C", 31, ["hall:tirate", "hall:ttrate"]], + ["2·모하지맨", 77, 86, 10, "che_event_무쌍", [11076, 1205715, 121716, 246889, 55700], 0, "default.jpg", 2, "che_180719_R02C", 32, ["hall:betgold", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["2·긴토키", 78, 82, 11, "che_event_저격", [14475, 123674, 523310, 122490, 22883], 1, "e2aac86.jpg?=20180719", 2, "che_180719_R02C", 33, ["hall:dex3"]], + ["2·백순대먹고싶다정말", 73, 87, 10, "che_event_징병", [404116, 106854, 104632, 72717, 34280], 1, "745f44.png?=20180801", 2, "che_180719_R02C", 34, ["hall:dex1", "hall:tprate"]], + ["2·미야노", 75, 87, 10, "che_event_견고", [51123, 578755, 94523, 120407, 50140], 1, "c0ee2d4.gif?=20180810", 2, "che_180719_R02C", 35, ["hall:betgold", "hall:dex2", "hall:tprate"]], + ["2·LetsPlay", 10, 85, 77, "che_event_저격", [0, 0, 0, 0, 0], 1, "f64966d.gif?=20180719", 2, "che_180719_R02C", 36, ["hall:firenum"]], + ["2·신포", 90, 70, 10, "che_event_필살", [282732, 113659, 57028, 72492, 7779], 0, "default.jpg", 2, "che_180719_R02C", 43, ["hall:dex1"]], + ["2·삼남매아빠", 90, 74, 10, "che_event_돌격", [1191995, 118931, 143223, 200158, 69313], 0, "default.jpg", 2, "che_180719_R02C", 46, ["hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["2·시타오 미우", 86, 75, 10, "che_event_격노", [30707, 123520, 586021, 216726, 21916], 1, "ca834c3.jpg?=20180723", 2, "che_180719_R02C", 47, ["hall:dex3"]], + ["2·삼남매엄마", 78, 86, 10, "che_event_위압", [42973, 1314344, 92685, 185252, 69135], 0, "default.jpg", 2, "che_180719_R02C", 48, ["hall:dedication", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["2·아유", 67, 10, 88, "che_event_격노", [77457, 134449, 58064, 367649, 26674], 1, "337e79.gif?=20180810", 2, "che_180719_R02C", 50, ["hall:dex1", "hall:tirate"]], + ["2·모라스", 71, 11, 89, "che_event_반계", [34004, 84004, 71256, 328734, 26015], 0, "default.jpg", 2, "che_180719_R02C", 52, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["2·료우기시키", 75, 85, 10, "che_event_필살", [100136, 559337, 70857, 148532, 22239], 1, "21b50f8.jpg?=20180628", 2, "che_180719_R02C", 53, ["hall:dex1", "hall:dex2"]], + ["2·갓오브블랙필드", 76, 87, 10, "che_event_척사", [8902, 127122, 1167401, 175493, 73242], 1, "51d1f77.jpg?=20180719", 2, "che_180719_R02C", 54, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate"]], + ["2·아저씨쨩", 78, 10, 85, "che_event_집중", [16085, 170462, 111393, 1062153, 54363], 1, "dff1ae6.jpg?=20180729", 2, "che_180719_R02C", 55, ["hall:dex4", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["2·아사이 나나미", 75, 10, 85, "che_event_집중", [26285, 139731, 125010, 702859, 34369], 1, "364468c.jpg?=20180813", 2, "che_180719_R02C", 56, ["hall:dex4"]], + ["2·마츠자카 사토", 77, 10, 86, "che_event_신중", [48092, 110325, 118787, 835733, 46144], 1, "47260a1.jpg?=20180813", 2, "che_180719_R02C", 58, ["hall:dex4"]], + ["2·그저늅늅", 73, 10, 89, "che_event_저격", [37299, 99655, 134493, 511159, 27544], 1, "6d750a7.jpg?=20180727", 2, "che_180719_R02C", 60, ["hall:dex4", "hall:tirate"]], + ["2·커피", 77, 86, 10, "che_event_격노", [18743, 85671, 834631, 182915, 40817], 1, "1c44e87.png?=20180723", 2, "che_180719_R02C", 61, ["hall:dex3", "hall:tprate"]], + ["2·이치코", 17, 71, 84, "che_event_필살", [0, 0, 1355, 0, 209], 1, "ef6aac8.jpg?=20180628", 2, "che_180719_R02C", 63, ["hall:firenum", "hall:tirate"]], + ["2·위대한로렌초", 75, 90, 10, "che_event_위압", [61360, 1367383, 110301, 196998, 40255], 1, "71e4063.jpg?=20180720", 2, "che_180719_R02C", 64, ["chief:8", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["2·진리", 88, 72, 10, "che_event_필살", [61758, 536541, 75409, 178932, 13414], 1, "36d49fa.jpg?=20180725", 2, "che_180719_R02C", 68, ["hall:betwin", "hall:dex2"]], + ["2·시이", 78, 84, 11, "che_event_돌격", [19131, 183642, 1018943, 144288, 55133], 1, "296c2e3.jpg?=20180711", 2, "che_180719_R02C", 70, ["hall:dex3", "hall:experience"]], + ["2·덕장", 85, 75, 10, "che_event_무쌍", [23265, 90235, 366352, 99925, 20239], 0, "default.jpg", 2, "che_180719_R02C", 72, ["hall:tlrate"]], + ["2·먹고싶다.", 69, 90, 11, "che_event_징병", [17763, 17781, 44663, 5287, 9840], 1, "3b67e36.png?=20180807", 2, "che_180719_R02C", 73, ["hall:firenum"]], + ["2·다니엘레메로시", 89, 73, 10, "che_event_위압", [20232, 493247, 48439, 114876, 12879], 1, "b22d7e2.jpg?=20180719", 2, "che_180719_R02C", 80, ["hall:dex2", "hall:firenum", "hall:ttrate"]], + ["2·농다리", 77, 89, 10, "che_event_척사", [13872, 1432650, 138020, 178094, 84040], 1, "eb2cf45.jpg?=20180805", 2, "che_180719_R02C", 83, ["chief:10", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["2·천사소녀네티", 78, 82, 11, "che_event_견고", [29293, 82635, 310168, 36313, 18853], 0, "default.jpg", 2, "che_180719_R02C", 92, ["hall:winrate"]], + ["2·주사위논리학", 91, 69, 11, "che_event_돌격", [17548, 189620, 32739, 48952, 13972], 0, "default.jpg", 2, "che_180719_R02C", 93, ["hall:betwingold", "hall:tlrate"]], + ["2·다다", 80, 11, 81, "che_event_징병", [0, 12314, 22911, 106972, 7236], 0, "default.jpg", 2, "che_180719_R02C", 95, ["hall:ttrate"]], + ["2·늘모", 78, 10, 83, "che_event_징병", [65631, 160477, 115617, 536931, 19508], 1, "e7c163.png?=20180801", 2, "che_180719_R02C", 96, ["hall:dex4"]], + ["2·갓갓갓", 75, 84, 10, "che_event_돌격", [52703, 66088, 366729, 95014, 13828], 0, "default.jpg", 2, "che_180719_R02C", 98, ["hall:tprate"]], + ["2·whan", 94, 68, 11, "che_event_징병", [97824, 521689, 154313, 109751, 21372], 0, "default.jpg", 2, "che_180719_R02C", 100, ["hall:dex1", "hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["2·안함", 94, 66, 11, "che_event_돌격", [0, 8139, 60828, 37158, 71639], 0, "default.jpg", 2, "che_180719_R02C", 102, ["hall:dex5", "hall:tlrate"]], + ["2·엔쥬", 10, 74, 87, "che_event_격노", [0, 0, 0, 0, 9], 0, "default.jpg", 2, "che_180719_R02C", 108, ["hall:tirate"]], + ["2·제갈여포", 20, 68, 82, "che_event_격노", [0, 0, 0, 0, 0], 1, "e8e8adc.jpg?=20180419", 2, "che_180719_R02C", 114, ["hall:firenum"]], + ["2·ㅊㅂ", 69, 86, 11, "che_event_무쌍", [46323, 245706, 45031, 61371, 7224], 1, "fd20d5d.png?=20180724", 2, "che_180719_R02C", 117, ["hall:tprate"]], + ["2·Nernas", 88, 10, 73, "che_event_귀병", [0, 0, 5834, 3716, 5962], 1, "3982da0.jpg?=20180721", 2, "che_180719_R02C", 120, ["hall:tlrate"]], + ["2·Google", 74, 10, 86, "che_event_환술", [23750, 61822, 156962, 496477, 35361], 1, "7ee028e.gif?=20180721", 2, "che_180719_R02C", 121, ["hall:dex4", "hall:tirate"]], + ["2·의의동망", 73, 11, 83, "che_event_징병", [23486, 79302, 65582, 263157, 10248], 0, "default.jpg", 2, "che_180719_R02C", 122, ["hall:betgold", "hall:betrate", "hall:betwingold"]], + ["2·집합안하는무지장", 10, 83, 76, "che_event_궁병", [0, 1131, 0, 0, 42], 0, "default.jpg", 2, "che_180719_R02C", 135, ["hall:firenum"]], + ["2·연휘령", 76, 10, 85, "che_event_징병", [10659, 121889, 133504, 818722, 69286], 0, "default.jpg", 2, "che_180719_R02C", 165, ["chief:5", "hall:dex4", "hall:dex5"]], + ["2·리비", 16, 89, 64, "che_event_돌격", [0, 0, 0, 0, 0], 1, "d22a918.png?=20180810", 2, "che_180719_R02C", 197, ["hall:firenum"]], + ["2·밥도둑", 10, 89, 70, "che_event_척사", [0, 0, 0, 0, 0], 1, "3687cc0.jpg?=20180724", 2, "che_180719_R02C", 209, ["hall:firenum"]], + ["2·가능인데요", 12, 68, 80, "che_event_필살", [0, 0, 0, 0, 0], 1, "a5477f7.jpg?=20180803", 2, "che_180719_R02C", 211, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["3·천괴금", 87, 70, 10, "che_event_돌격", [521270, 33837, 123408, 112940, 52119], 1, "f10e3d9.png?=20180702", 3, "che_180823_OWsv", 4, ["hall:dex1", "hall:dex5", "hall:tlrate"]], + ["3·감흥", 73, 84, 10, "che_event_필살", [63621, 88372, 607386, 144303, 8012], 1, "eb2cf45.jpg?=20180805", 3, "che_180823_OWsv", 8, ["hall:dex3", "hall:killnum", "hall:warnum"]], + ["3·이브", 91, 11, 10, "che_event_징병", [29497, 5407, 16123, 15312, 211945], 1, "7f9f9c6.jpg?=20180831", 3, "che_180823_OWsv", 9, ["hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["3·평민킬러", 74, 82, 10, "che_event_돌격", [758887, 79866, 66446, 170759, 25109], 1, "6add0f.jpg?=20180515", 3, "che_180823_OWsv", 10, ["hall:dex1", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["3·코시미즈 사치코", 72, 10, 85, "che_event_징병", [13834, 59966, 63614, 426330, 33482], 1, "9e501a.jpg?=20180908", 3, "che_180823_OWsv", 12, ["chief:9", "hall:dex4", "hall:ttrate"]], + ["3·진실의 심연", 74, 83, 11, "che_event_돌격", [56662, 99503, 1119895, 181724, 53649], 0, "default.jpg", 3, "che_180823_OWsv", 13, ["hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["3·타케우치P", 72, 82, 11, "che_event_격노", [28009, 48039, 489550, 73789, 50493], 1, "abf3658.jpg?=20180910", 3, "che_180823_OWsv", 14, ["chief:12", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killrate"]], + ["3·큰가슴의요정", 72, 86, 10, "che_event_위압", [439634, 20784, 35678, 82477, 33598], 0, "default.jpg", 3, "che_180823_OWsv", 15, ["hall:dex1", "hall:experience", "hall:killrate", "hall:ttrate"]], + ["3·죽창", 83, 72, 10, "che_event_징병", [20266, 91290, 428298, 89633, 23241], 1, "2bb1aa1.gif?=20180906", 3, "che_180823_OWsv", 16, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tlrate"]], + ["3·후타바 안즈", 71, 11, 84, "che_event_환술", [29316, 44125, 41520, 383093, 34577], 1, "75c78e2.jpg?=20180907", 3, "che_180823_OWsv", 17, ["chief:5", "hall:tirate", "hall:ttrate"]], + ["3·졸린마녀", 73, 82, 11, "che_event_견고", [90718, 621811, 79682, 81511, 29074], 1, "ef47121.jpg?=20180825", 3, "che_180823_OWsv", 18, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:winrate"]], + ["3·테라포밍마스", 71, 13, 83, "che_event_저격", [15572, 64212, 88229, 571580, 21017], 1, "a02d500.jpg?=20180828", 3, "che_180823_OWsv", 22, ["hall:dex4"]], + ["3·아유", 72, 84, 10, "che_event_돌격", [83293, 544334, 37522, 173364, 42717], 1, "8645fa9.gif?=20180906", 3, "che_180823_OWsv", 23, ["hall:dex2", "hall:killnum"]], + ["3·5분장멍펫", 78, 79, 10, "che_event_견고", [519553, 39580, 68995, 110004, 38426], 1, "6d750a7.jpg?=20180727", 3, "che_180823_OWsv", 24, ["hall:dex1", "hall:experience", "hall:ttrate"]], + ["3·도트조아", 87, 70, 10, "che_event_필살", [162469, 381037, 58151, 42061, 21131], 1, "61a436c.gif?=20180830", 3, "che_180823_OWsv", 25, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:tlrate"]], + ["3·보리", 69, 10, 86, "che_event_격노", [9193, 12245, 32244, 168746, 23275], 0, "default.jpg", 3, "che_180823_OWsv", 26, ["hall:dedication"]], + ["3·말랑말", 73, 82, 11, "che_event_돌격", [44396, 50436, 605940, 141042, 18937], 1, "6094d05.jpg?=20180823", 3, "che_180823_OWsv", 27, ["hall:dex3"]], + ["3·라피나", 71, 84, 10, "che_event_척사", [124576, 418214, 41289, 50646, 46622], 1, "cce4134.jpg?=20180823", 3, "che_180823_OWsv", 29, ["chief:8", "hall:dex2", "hall:dex5", "hall:experience", "hall:killrate", "hall:tprate"]], + ["3·료우기시키", 73, 83, 10, "che_event_돌격", [12205, 81805, 567176, 112020, 39996], 1, "21b50f8.jpg?=20180628", 3, "che_180823_OWsv", 33, ["hall:dex3", "hall:tprate", "hall:winrate"]], + ["3·건전한촉수병사", 75, 82, 10, "che_event_척사", [70841, 763849, 52226, 120536, 34635], 1, "438ec73.png?=20180827", 3, "che_180823_OWsv", 34, ["hall:dex2", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["3·민트토끼", 73, 10, 84, "che_event_신중", [76160, 38268, 119597, 607557, 27717], 1, "976f3f5.gif?=20180809", 3, "che_180823_OWsv", 35, ["hall:dex4"]], + ["3·김성욱", 11, 72, 83, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 3, "che_180823_OWsv", 36, ["hall:dedication"]], + ["3·SARS", 58, 27, 83, "che_event_저격", [69179, 84867, 44979, 562722, 42208], 1, "b84944.jpg?=20180829", 3, "che_180823_OWsv", 37, ["chief:11", "hall:dex4"]], + ["3·멍미", 74, 10, 82, "che_event_척사", [78837, 35170, 110746, 597750, 36805], 0, "default.jpg", 3, "che_180823_OWsv", 38, ["hall:dex4", "hall:killcrew", "hall:warnum"]], + ["3·이드", 73, 84, 10, "che_event_필살", [11360, 97115, 463605, 115796, 30269], 1, "91ca696.jpg?=20180825", 3, "che_180823_OWsv", 39, ["hall:dex3", "hall:tprate", "hall:ttrate"]], + ["3·블랙말랑카우", 74, 83, 10, "che_event_위압", [378803, 19414, 39915, 108153, 21918], 1, "4c98466.jpg?=20180829", 3, "che_180823_OWsv", 44, ["hall:betwin", "hall:betwingold", "hall:dex1", "hall:tprate", "hall:ttrate"]], + ["3·제갈여포", 73, 11, 82, "che_event_신산", [58372, 65706, 106074, 587072, 22847], 1, "e8e8adc.jpg?=20180419", 3, "che_180823_OWsv", 45, ["hall:dex4", "hall:killnum", "hall:warnum"]], + ["3·커피", 74, 83, 10, "che_event_무쌍", [23743, 47980, 490257, 71293, 37683], 1, "f4e0e1e.jpg?=20180831", 3, "che_180823_OWsv", 47, ["hall:dex3", "hall:killnum", "hall:killrate", "hall:winrate"]], + ["3·미야와키 사쿠라", 82, 71, 11, "che_event_위압", [130054, 515248, 42059, 100575, 18117], 1, "ca1b72d.png?=20180827", 3, "che_180823_OWsv", 48, ["hall:dex2"]], + ["3·하우젤", 86, 70, 10, "che_event_위압", [576062, 45623, 151100, 112698, 33882], 1, "dcff9fd.jpg?=20180823", 3, "che_180823_OWsv", 49, ["hall:dex1", "hall:warnum"]], + ["3·진리", 71, 10, 85, "che_event_집중", [80271, 40644, 82521, 322505, 18306], 1, "2055a9d.jpg?=20180828", 3, "che_180823_OWsv", 50, ["hall:firenum", "hall:tirate"]], + ["3·삼남매엄마", 72, 84, 10, "che_event_견고", [243893, 67510, 68501, 93681, 16285], 0, "default.jpg", 3, "che_180823_OWsv", 52, ["hall:tprate"]], + ["3·병리학적자세", 71, 9, 86, "che_event_집중", [79770, 44334, 72236, 375876, 24444], 1, "3679089.jpg?=20180629", 3, "che_180823_OWsv", 54, ["hall:tirate"]], + ["3·듀", 16, 68, 83, "che_event_귀병", [0, 0, 0, 0, 0], 0, "default.jpg", 3, "che_180823_OWsv", 55, ["hall:ttrate"]], + ["3·쫄따구", 10, 69, 87, "che_event_환술", [0, 1005, 0, 1756, 0], 0, "default.jpg", 3, "che_180823_OWsv", 56, ["hall:dedication", "hall:experience", "hall:firenum"]], + ["3·다비", 72, 85, 10, "che_event_무쌍", [17826, 86197, 325383, 81229, 20807], 1, "2a49cb.jpg?=20180906", 3, "che_180823_OWsv", 57, ["hall:tprate", "hall:ttrate"]], + ["3·모라스", 72, 82, 11, "che_event_위압", [110373, 496492, 104955, 112526, 37253], 0, "default.jpg", 3, "che_180823_OWsv", 59, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:warnum"]], + ["3·시나", 80, 76, 10, "che_event_돌격", [109774, 335579, 26438, 84316, 19197], 1, "1216034.jpg?=20180901", 3, "che_180823_OWsv", 62, ["hall:winrate"]], + ["3·ARES군주", 77, 78, 11, "che_event_징병", [66167, 36648, 596058, 114620, 32974], 1, "68432f1.jpg?=20180811", 3, "che_180823_OWsv", 63, ["hall:dex3"]], + ["3·달", 74, 10, 84, "che_event_집중", [68123, 29604, 149395, 506294, 25165], 1, "131b8fd.jpg?=20180824", 3, "che_180823_OWsv", 64, ["hall:dex4"]], + ["3·삼남매아빠", 86, 70, 10, "che_event_위압", [55808, 45866, 370360, 107655, 17687], 0, "default.jpg", 3, "che_180823_OWsv", 68, ["hall:dedication", "hall:tlrate"]], + ["3·만샘", 86, 69, 10, "che_event_징병", [26947, 87453, 405727, 96793, 28901], 1, "37d189c.jpg?=20180420", 3, "che_180823_OWsv", 70, ["hall:dedication"]], + ["3·덕장", 70, 84, 11, "che_event_저격", [358619, 29859, 50037, 78140, 19263], 1, "c281d38.jpg?=20180906", 3, "che_180823_OWsv", 71, ["hall:tprate"]], + ["3·피카츄", 72, 10, 84, "che_event_필살", [64752, 32178, 43290, 410480, 33542], 0, "default.jpg", 3, "che_180823_OWsv", 72, ["hall:tirate"]], + ["3·민트초코칩", 71, 11, 84, "che_event_척사", [40969, 61338, 60004, 518999, 46093], 1, "f53316b.jpg?=20180903", 3, "che_180823_OWsv", 75, ["hall:dex4", "hall:ttrate"]], + ["3·시부야린", 14, 73, 78, "che_event_저격", [0, 0, 0, 0, 0], 1, "befc65e.jpg?=20180824", 3, "che_180823_OWsv", 77, ["hall:dedication"]], + ["3·조밧", 69, 87, 10, "che_event_무쌍", [13843, 48487, 362135, 100164, 19893], 0, "default.jpg", 3, "che_180823_OWsv", 78, ["hall:dedication", "hall:winrate"]], + ["3·미스티", 86, 70, 10, "che_event_징병", [303011, 90413, 105582, 109313, 12040], 1, "1aadcba.png?=20180908", 3, "che_180823_OWsv", 79, ["chief:6", "hall:firenum", "hall:tlrate"]], + ["3·김나영", 78, 77, 10, "che_event_무쌍", [47434, 375495, 18135, 111235, 25663], 1, "2e8d570.jpg?=20180823", 3, "che_180823_OWsv", 80, ["hall:dex2"]], + ["3·카미야 나오", 86, 70, 10, "che_event_위압", [492919, 28506, 73738, 100671, 28939], 1, "df23b15.jpg?=20180823", 3, "che_180823_OWsv", 81, ["hall:dex1", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["3·카오스피닉스", 72, 10, 85, "che_event_신중", [81854, 50759, 66916, 403873, 30301], 1, "2af0641.jpg?=20180706", 3, "che_180823_OWsv", 82, ["hall:tirate", "hall:ttrate"]], + ["3·EMP", 73, 10, 84, "che_event_격노", [25568, 91687, 11185, 650072, 47161], 0, "default.jpg", 3, "che_180823_OWsv", 85, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:winrate"]], + ["3·잉잉", 69, 88, 10, "che_event_돌격", [27436, 24503, 371526, 95074, 25887], 1, "6cfa7ae.jpg?=20180909", 3, "che_180823_OWsv", 86, ["hall:betgold", "hall:tprate"]], + ["3·고먐미", 79, 77, 10, "che_event_징병", [456486, 34566, 238111, 68589, 62524], 1, "c353891.jpg?=20180828", 3, "che_180823_OWsv", 87, ["hall:dex1", "hall:dex5"]], + ["3·늘모", 74, 80, 11, "che_event_위압", [655094, 53450, 116891, 169239, 23325], 1, "e7c163.png?=20180801", 3, "che_180823_OWsv", 88, ["hall:dex1", "hall:killcrew", "hall:warnum"]], + ["3·whan", 73, 82, 10, "che_event_척사", [76846, 443383, 49310, 87172, 39968], 0, "default.jpg", 3, "che_180823_OWsv", 90, ["hall:dex2"]], + ["3·♂", 88, 69, 10, "che_event_필살", [101047, 392165, 53609, 110187, 21354], 1, "6f11fd5.jpg?=20180908", 3, "che_180823_OWsv", 92, ["hall:dex2", "hall:firenum", "hall:tlrate"]], + ["3·ㅇㄷㄷㄷ", 73, 82, 10, "che_event_무쌍", [78723, 322171, 50117, 104444, 12602], 0, "default.jpg", 3, "che_180823_OWsv", 94, ["hall:firenum"]], + ["3·버그", 74, 82, 10, "che_event_필살", [21080, 95436, 461525, 102087, 19127], 1, "d85ebbb.jpg?=20180828", 3, "che_180823_OWsv", 95, ["hall:dex3", "hall:killnum", "hall:winrate"]], + ["3·플스4수리함", 70, 12, 82, "che_event_필살", [56407, 14933, 45814, 393607, 25664], 0, "default.jpg", 3, "che_180823_OWsv", 96, ["hall:tirate"]], + ["3·이치노세 시키", 14, 66, 86, "che_event_저격", [0, 0, 0, 0, 0], 1, "a9ed36.jpg?=20180825", 3, "che_180823_OWsv", 99, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication"]], + ["3·아이돌도서관협회장", 72, 84, 10, "che_event_필살", [410570, 38607, 72735, 95230, 31749], 1, "76b0000.gif?=20180909", 3, "che_180823_OWsv", 100, ["chief:10", "hall:betwin", "hall:betwingold", "hall:dex1"]], + ["3·고긔가먹고싶", 70, 10, 86, "che_event_집중", [12371, 13770, 1161, 62425, 6422], 0, "default.jpg", 3, "che_180823_OWsv", 103, ["hall:tirate"]], + ["3·페이트", 81, 42, 41, "che_event_무쌍", [1907, 9788, 7036, 14153, 830532], 1, "6b8a0d8.jpg?=20180807", 3, "che_180823_OWsv", 104, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:winrate"]], + ["3·타카가키 카에데", 80, 9, 75, "che_event_격노", [46938, 63264, 24115, 351906, 82507], 1, "22f307c.jpg?=20180825", 3, "che_180823_OWsv", 107, ["hall:dex5", "hall:experience"]], + ["3·ㅊㅂ", 88, 62, 15, "che_event_저격", [215952, 9669, 67013, 60043, 6176], 1, "fd20d5d.png?=20180724", 3, "che_180823_OWsv", 110, ["hall:tlrate"]], + ["3·くま", 73, 11, 83, "che_event_필살", [113543, 46422, 129400, 604810, 25853], 0, "default.jpg", 3, "che_180823_OWsv", 112, ["hall:dex4", "hall:killcrew", "hall:warnum"]], + ["3·도적", 71, 84, 10, "che_event_저격", [13924, 67488, 444614, 114951, 25573], 0, "default.jpg", 3, "che_180823_OWsv", 113, ["hall:dex3"]], + ["3·시마무라 우즈키", 71, 83, 10, "che_event_필살", [68247, 373352, 36736, 44526, 27060], 1, "11b6f0f.jpg?=20180829", 3, "che_180823_OWsv", 115, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tprate"]], + ["3·사토 신", 20, 65, 80, "che_event_신중", [0, 0, 0, 0, 0], 1, "bb50e83.png?=20180824", 3, "che_180823_OWsv", 119, ["hall:dedication"]], + ["3·태극권", 84, 68, 10, "che_event_척사", [45600, 30105, 434387, 78535, 10418], 0, "default.jpg", 3, "che_180823_OWsv", 128, ["hall:tlrate"]], + ["3·재야", 66, 11, 86, "che_event_집중", [608, 0, 14944, 31226, 0], 1, "80a0591.jpg?=20180826", 3, "che_180823_OWsv", 139, ["hall:tirate"]], + ["3·Lenn", 86, 69, 10, "che_event_위압", [4054, 16088, 954, 11775, 646951], 1, "fb2c85e.jpg?=20180825", 3, "che_180823_OWsv", 144, ["hall:dex5", "hall:killcrew", "hall:killrate", "hall:winrate"]], + ["3·가소롭군닝겐쿠쿡", 65, 10, 86, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 3, "che_180823_OWsv", 197, ["hall:tirate"]], + ["3·오오츠키 유이", 10, 85, 68, "che_event_저격", [0, 0, 0, 0, 0], 1, "bc81c9d.png?=20180828", 3, "che_180823_OWsv", 204, ["hall:tprate"]], + ["3·이번도구경온누군가", 10, 71, 81, "che_event_격노", [0, 0, 0, 0, 0], 1, "6ce6d42.gif?=20180830", 3, "che_180823_OWsv", 212, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["3·여기애들다못생겼음", 10, 67, 85, "che_event_환술", [0, 0, 0, 0, 0], 0, "default.jpg", 3, "che_180823_OWsv", 214, ["hall:tirate"]], + ["3·아오바 모카", 80, 72, 10, "che_event_위압", [35988, 165861, 25417, 55446, 6622], 1, "8e5030a.gif?=20180830", 3, "che_180823_OWsv", 222, ["hall:betgold"]], + ["3·리체", 72, 10, 79, "che_event_필살", [30485, 38529, 27709, 313912, 22388], 1, "65f364d.gif?=20180904", 3, "che_180823_OWsv", 267, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold"]], + ["3·엔틱", 78, 68, 10, null, [187104, 22131, 43742, 45094, 18542], 0, "default.jpg", 3, "che_180823_OWsv", 271, ["hall:betgold"]], + ["4·미스트 뱀파이어", 74, 10, 83, "che_event_신산", [39692, 37650, 88767, 550379, 19224], 0, "default.jpg", 4, "che_180920_idKB", 4, ["chief:5", "hall:betgold", "hall:dex4", "hall:killcrew"]], + ["4·카이스트", 71, 9, 83, "che_event_환술", [23800, 9744, 88692, 423257, 18339], 1, "9361ef8.jpg?=20180907", 4, "che_180920_idKB", 6, ["hall:dex4", "hall:killnum"]], + ["4·평민킬러", 72, 83, 11, "che_event_척사", [550555, 17547, 55128, 133675, 29418], 1, "6add0f.jpg?=20180515", 4, "che_180920_idKB", 7, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["4·북오더", 11, 69, 85, "che_event_신산", [5360, 0, 7114, 2503, 7781], 1, "c0276e1.gif?=20180917", 4, "che_180920_idKB", 8, ["hall:dedication", "hall:experience", "hall:firenum"]], + ["4·아비그네일", 81, 76, 10, "che_event_저격", [703575, 28205, 59804, 154355, 53862], 1, "6ac8d24.jpg?=20180922", 4, "che_180920_idKB", 10, ["hall:dex1", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["4·취한 말랑말", 71, 86, 10, "che_event_무쌍", [3685, 5291, 376679, 93323, 14462], 1, "6094d05.jpg?=20180823", 4, "che_180920_idKB", 11, ["hall:dex3", "hall:tprate"]], + ["4·댄스러시 스타덤", 70, 10, 87, "che_event_저격", [14825, 23016, 29737, 312419, 33446], 1, "595e059.png?=20180920", 4, "che_180920_idKB", 14, ["chief:12", "hall:betgold", "hall:betwin", "hall:killrate"]], + ["4·사운드볼텍스", 71, 84, 10, "che_event_무쌍", [15019, 14896, 276156, 48971, 31531], 1, "13a2ed0.png?=20180920", 4, "che_180920_idKB", 15, ["chief:6", "hall:killrate", "hall:tprate"]], + ["4·くま", 72, 10, 83, "che_event_반계", [45619, 49464, 47425, 437741, 22690], 1, "73d75c2.jpg?=20180923", 4, "che_180920_idKB", 17, ["hall:dex4"]], + ["4·육도삼략귀모신산", 12, 66, 89, "che_event_반계", [0, 0, 0, 0, 0], 0, "default.jpg", 4, "che_180920_idKB", 20, ["chief:11", "hall:dedication", "hall:experience"]], + ["4·네로", 72, 83, 10, "che_event_견고", [422829, 24798, 49723, 44665, 28785], 1, "b2decfe.png?=20180927", 4, "che_180920_idKB", 21, ["hall:dex1", "hall:experience", "hall:killrate"]], + ["4·n아텐 누", 86, 72, 10, "che_event_격노", [368263, 44015, 127536, 120706, 11910], 1, "f52b563.png?=20180914", 4, "che_180920_idKB", 22, ["hall:dex1"]], + ["4·만샘", 70, 11, 84, "che_event_집중", [34403, 32371, 29022, 379080, 16770], 1, "37d189c.jpg?=20180420", 4, "che_180920_idKB", 23, ["hall:betwin"]], + ["4·몬스터볼", 80, 10, 73, "che_event_귀병", [73965, 30754, 34570, 147996, 11187], 1, "5249d93.jpg?=20180920", 4, "che_180920_idKB", 26, ["hall:betwin"]], + ["4·에드나", 72, 83, 10, "che_event_돌격", [32525, 447053, 35207, 149488, 23531], 1, "7c39fe8.gif?=20181007", 4, "che_180920_idKB", 27, ["hall:dex2", "hall:firenum", "hall:killnum"]], + ["4·야부키 나코", 83, 72, 10, "che_event_위압", [113841, 345237, 39818, 102705, 21023], 1, "eac341b.png?=20181005", 4, "che_180920_idKB", 28, ["hall:dex2", "hall:tlrate"]], + ["4·카오스피닉스", 71, 10, 85, "che_event_척사", [33109, 36307, 62363, 297314, 13179], 1, "2af0641.jpg?=20180706", 4, "che_180920_idKB", 30, ["hall:tirate"]], + ["4·처리오빠", 91, 11, 65, "che_event_징병", [17661, 23306, 10243, 206302, 82133], 1, "589d020.jpg?=20180911", 4, "che_180920_idKB", 31, ["hall:betwin", "hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["4·삼뚝배기", 74, 84, 10, "che_event_필살", [486388, 32180, 66450, 169517, 26048], 1, "b83b5ec.jpg?=20180920", 4, "che_180920_idKB", 32, ["hall:dex1", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum"]], + ["4·Card", 87, 69, 10, "che_event_필살", [26268, 337804, 19074, 85932, 19302], 1, "1dcceff.gif?=20180920", 4, "che_180920_idKB", 34, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["4·곰돌이푸", 69, 10, 87, "che_event_저격", [10531, 38201, 44673, 266221, 21410], 0, "default.jpg", 4, "che_180920_idKB", 35, ["hall:betwin", "hall:tirate"]], + ["4·UNIANA", 12, 67, 86, "che_event_저격", [0, 0, 0, 0, 0], 1, "3f57065.png?=20180920", 4, "che_180920_idKB", 39, ["hall:dedication"]], + ["4·화난용", 88, 65, 13, "che_event_저격", [24951, 7279, 22790, 29047, 407099], 1, "8b16622.jpg?=20180921", 4, "che_180920_idKB", 40, ["chief:10", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate"]], + ["4·랜슬롯", 69, 12, 85, "che_event_신중", [24888, 24360, 12387, 266151, 11751], 1, "c6b18a7.jpg?=20180920", 4, "che_180920_idKB", 41, ["hall:ttrate"]], + ["4·나아가다", 70, 86, 11, "che_event_무쌍", [7959, 34075, 262397, 48795, 30785], 0, "default.jpg", 4, "che_180920_idKB", 42, ["hall:killrate", "hall:winrate"]], + ["4·살수묵랑", 75, 80, 10, "che_event_무쌍", [14110, 49444, 295360, 64506, 3643], 1, "a9298fc.png?=20180628", 4, "che_180920_idKB", 43, ["hall:winrate"]], + ["4·머핀", 70, 10, 84, "che_event_척사", [39961, 25048, 35221, 413026, 19237], 1, "b2fcd42.jpg?=20180924", 4, "che_180920_idKB", 44, ["hall:dex4"]], + ["4·오늘의시", 75, 10, 81, "che_event_신산", [39140, 36691, 77924, 277429, 4382], 1, "97e5890.jpg?=20180921", 4, "che_180920_idKB", 45, ["hall:winrate"]], + ["4·민트 초코 칩", 71, 11, 85, "che_event_반계", [42486, 70935, 64600, 411450, 15692], 1, "50a2a41.jpg?=20180929", 4, "che_180920_idKB", 47, ["hall:dex4"]], + ["4·리안", 73, 10, 84, "che_event_저격", [33341, 71461, 47493, 347034, 3226], 1, "2347b5d.png?=20180929", 4, "che_180920_idKB", 48, ["hall:tirate"]], + ["4·소환수", 10, 65, 91, "che_event_집중", [0, 0, 0, 0, 0], 1, "7761e3c.jpg?=20180925", 4, "che_180920_idKB", 49, ["hall:dedication"]], + ["4·사무엘", 71, 84, 10, "che_event_무쌍", [48137, 373281, 38488, 106864, 48046], 1, "63dc452.gif?=20181007", 4, "che_180920_idKB", 50, ["hall:dex2", "hall:dex5", "hall:experience", "hall:firenum", "hall:tprate"]], + ["4·D.va", 69, 87, 10, "che_event_척사", [374470, 9464, 62295, 60333, 23264], 1, "d8ca176.jpg?=20180919", 4, "che_180920_idKB", 52, ["hall:dex1"]], + ["4·이바라키도지", 75, 78, 11, "che_event_저격", [58062, 275499, 13534, 77392, 12635], 1, "6735612.png?=20180920", 4, "che_180920_idKB", 53, ["hall:dex2", "hall:winrate"]], + ["4·343", 85, 70, 10, "che_event_무쌍", [39943, 52285, 308148, 84021, 140610], 0, "default.jpg", 4, "che_180920_idKB", 54, ["hall:dex3", "hall:dex5"]], + ["4·요정", 70, 85, 11, "che_event_격노", [25374, 44461, 480161, 117902, 26024], 1, "a2e5934.png?=20181005", 4, "che_180920_idKB", 56, ["hall:betwingold", "hall:dex3", "hall:firenum", "hall:killcrew"]], + ["4·오니즈카", 70, 85, 11, "che_event_무쌍", [32187, 49027, 623233, 132977, 47681], 1, "ca0b15e.gif?=20181003", 4, "che_180920_idKB", 57, ["hall:dex3", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["4·멀린", 85, 71, 11, "che_event_견고", [23882, 53211, 326979, 84335, 23714], 1, "3451bfb.jpg?=20180920", 4, "che_180920_idKB", 59, ["hall:betgold", "hall:betrate", "hall:dex3", "hall:tlrate"]], + ["4·료우기시키", 71, 84, 10, "che_event_징병", [235381, 25279, 49702, 62311, 11071], 1, "21b50f8.jpg?=20180628", 4, "che_180920_idKB", 61, ["hall:dex1"]], + ["4·김나영", 74, 82, 11, "che_event_징병", [627412, 66791, 123809, 168420, 40471], 1, "2e8d570.jpg?=20180823", 4, "che_180920_idKB", 62, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["4·성산동피주먹", 81, 72, 10, "che_event_징병", [40028, 332014, 19912, 74292, 34827], 1, "50ac5f9.jpg?=20180922", 4, "che_180920_idKB", 64, ["hall:dex2"]], + ["4·모라스", 75, 10, 82, "che_event_저격", [95531, 33656, 52433, 379296, 23626], 1, "383cea4.jpg?=20180919", 4, "che_180920_idKB", 66, ["hall:ttrate"]], + ["4·개미", 75, 80, 12, "che_event_돌격", [60996, 446177, 34714, 118909, 20454], 0, "default.jpg", 4, "che_180920_idKB", 67, ["hall:dex2", "hall:killnum", "hall:warnum"]], + ["4·재야", 10, 75, 82, "che_event_귀병", [0, 0, 0, 0, 0], 1, "80a0591.jpg?=20180826", 4, "che_180920_idKB", 68, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:ttrate"]], + ["4·구다코", 72, 11, 83, "che_event_신산", [19646, 45434, 77733, 650079, 33890], 1, "1528b91.png?=20180920", 4, "che_180920_idKB", 70, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:warnum"]], + ["4·666", 83, 10, 72, "che_event_신중", [31198, 29394, 52062, 426875, 32534], 1, "382883b.jpg?=20181004", 4, "che_180920_idKB", 71, ["hall:dex4"]], + ["4·병리학적자세", 81, 10, 76, "che_event_집중", [19719, 43710, 35952, 368533, 31949], 1, "3679089.jpg?=20180629", 4, "che_180920_idKB", 72, ["hall:winrate"]], + ["4·악동", 86, 71, 10, "che_event_징병", [125889, 193423, 137441, 80164, 12568], 1, "227b2fc.jpg?=20180920", 4, "che_180920_idKB", 73, ["hall:tlrate"]], + ["4·니시키노 마키", 70, 10, 85, "che_event_반계", [19810, 14485, 24888, 149081, 4624], 1, "480aa7e.jpg?=20180919", 4, "che_180920_idKB", 74, ["hall:tirate"]], + ["4·5분장", 71, 10, 86, "che_event_저격", [43685, 31600, 35551, 391767, 25294], 0, "default.jpg", 4, "che_180920_idKB", 76, ["chief:9", "hall:ttrate"]], + ["4·최$ 지존맨 $강", 72, 83, 10, "che_event_척사", [22495, 43959, 362156, 91567, 21610], 1, "2e31c25.jpg?=20181006", 4, "che_180920_idKB", 79, ["hall:dex3"]], + ["4·개노잼놀아라", 80, 9, 78, "che_event_격노", [40121, 50294, 32375, 226732, 29318], 0, "default.jpg", 4, "che_180920_idKB", 84, ["hall:betrate", "hall:betwingold"]], + ["4·카나메", 10, 70, 84, "che_event_신중", [0, 0, 0, 0, 0], 1, "6e76dfe.jpg?=20180920", 4, "che_180920_idKB", 85, ["hall:tirate"]], + ["4·소열제유비", 72, 84, 10, "che_event_견고", [11387, 28409, 266302, 77049, 10257], 1, "a3b1bbb.png?=20180927", 4, "che_180920_idKB", 86, ["hall:tprate", "hall:ttrate"]], + ["4·보스곰", 78, 10, 79, "che_event_격노", [31668, 58588, 59586, 495181, 22887], 1, "76bf7f6.jpg?=20181007", 4, "che_180920_idKB", 91, ["hall:dex4"]], + ["4·whan", 75, 83, 10, "che_event_무쌍", [42469, 571227, 60657, 206894, 20573], 1, "68aacd2.jpg?=20180929", 4, "che_180920_idKB", 93, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum"]], + ["4·쉬원찮은남자", 81, 74, 11, "che_event_징병", [116387, 388862, 62044, 104735, 42207], 0, "default.jpg", 4, "che_180920_idKB", 94, ["hall:dex2", "hall:dex5", "hall:warnum"]], + ["4·헨젤과 그레텔", 70, 86, 11, "che_event_위압", [24800, 205402, 14520, 27234, 24838], 0, "default.jpg", 4, "che_180920_idKB", 99, ["hall:killrate", "hall:tprate", "hall:ttrate"]], + ["4·힝힝", 69, 85, 10, "che_event_저격", [389589, 10243, 26616, 42848, 44706], 1, "298293e.jpg?=20181006", 4, "che_180920_idKB", 100, ["chief:8", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate"]], + ["4·혈소판", 11, 67, 89, "che_event_귀병", [0, 0, 0, 0, 0], 1, "da985e.jpg?=20181004", 4, "che_180920_idKB", 101, ["hall:dedication", "hall:ttrate"]], + ["4·1288965", 71, 86, 10, "che_event_위압", [5324, 24407, 342321, 87536, 17810], 0, "default.jpg", 4, "che_180920_idKB", 102, ["hall:dex3", "hall:tprate"]], + ["4·화계장터마스코트", 72, 10, 85, "che_event_신산", [59486, 61241, 19399, 507079, 36389], 1, "24cd9f7.gif?=20180927", 4, "che_180920_idKB", 103, ["chief:7", "hall:dex4"]], + ["4·리자", 90, 11, 11, "che_event_견고", [1624, 0, 0, 3270, 106626], 1, "3347525.jpg?=20180923", 4, "che_180920_idKB", 106, ["hall:dex5", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["4·하우젤", 88, 68, 10, "che_event_위압", [20159, 38333, 431831, 93542, 17783], 1, "dcff9fd.jpg?=20180823", 4, "che_180920_idKB", 107, ["hall:dex3", "hall:tlrate"]], + ["4·울다", 10, 70, 81, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 4, "che_180920_idKB", 112, ["hall:tirate"]], + ["4·민토트끼", 83, 72, 10, "che_event_무쌍", [27848, 48733, 429545, 135358, 14754], 1, "3465a26.jpg?=20181007", 4, "che_180920_idKB", 113, ["hall:dex3", "hall:firenum"]], + ["4·가로쉬 헬스크림", 71, 85, 10, "che_event_척사", [222758, 34960, 65948, 47798, 25852], 1, "d8828c4.jpg?=20181004", 4, "che_180920_idKB", 115, ["hall:experience", "hall:tprate"]], + ["4·에미야[얼터]", 77, 10, 75, "che_event_집중", [12903, 2940, 1190, 55502, 1009], 1, "105a8a.png?=20180920", 4, "che_180920_idKB", 118, ["hall:tlrate"]], + ["4·인공지능미사일", 71, 12, 83, "che_event_격노", [39981, 34586, 49048, 443571, 33676], 0, "default.jpg", 4, "che_180920_idKB", 122, ["hall:dex4"]], + ["4·아나", 72, 9, 83, "che_event_신산", [20790, 49714, 55572, 298812, 22823], 1, "1216a23.jpg?=20180920", 4, "che_180920_idKB", 126, ["hall:betgold"]], + ["4·땅크땅크", 88, 68, 11, "che_event_징병", [106071, 393969, 45358, 148749, 14287], 0, "default.jpg", 4, "che_180920_idKB", 128, ["hall:dex2", "hall:tlrate"]], + ["4·꼬기", 69, 10, 85, "che_event_척사", [86146, 30092, 14847, 297025, 35395], 1, "507327d.png?=20181001", 4, "che_180920_idKB", 129, ["hall:dedication"]], + ["4·대도 팬텀", 11, 82, 72, "che_event_격노", [0, 0, 0, 0, 0], 1, "b5369a6.png?=20180921", 4, "che_180920_idKB", 130, ["hall:firenum"]], + ["4·파주조자룡", 10, 66, 89, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 4, "che_180920_idKB", 133, ["hall:dedication"]], + ["4·잼잼", 10, 77, 79, "che_event_귀병", [0, 0, 0, 0, 0], 0, "default.jpg", 4, "che_180920_idKB", 135, ["hall:dedication"]], + ["4·미아", 84, 72, 10, "che_event_격노", [31525, 56587, 464741, 122044, 21784], 1, "4bc280.jpg?=20180928", 4, "che_180920_idKB", 139, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:firenum"]], + ["4·니가보인다", 10, 71, 85, "che_event_신산", [0, 0, 0, 0, 0], 1, "3e146ac.jpg?=20181005", 4, "che_180920_idKB", 144, ["hall:firenum"]], + ["4·삼남매엄마", 72, 10, 81, "che_event_신산", [43189, 22613, 16437, 140446, 8310], 0, "default.jpg", 4, "che_180920_idKB", 155, ["hall:ttrate"]], + ["4·죽창", 85, 69, 11, "che_event_격노", [109441, 60768, 216413, 87920, 6109], 1, "1978b2c.jpg?=20180924", 4, "che_180920_idKB", 156, ["hall:tlrate"]], + ["4·빅째우맨", 10, 68, 85, "che_event_집중", [0, 0, 0, 0, 0], 1, "3b481c3.png?=20180921", 4, "che_180920_idKB", 163, ["hall:tirate", "hall:ttrate"]], + ["4·아이린", 72, 84, 10, "che_event_위압", [8217, 35068, 257484, 49860, 26662], 1, "8dac73c.jpg?=20180922", 4, "che_180920_idKB", 167, ["hall:tprate"]], + ["4·천괴금", 11, 71, 84, "che_event_신산", [0, 0, 0, 0, 0], 1, "f10e3d9.png?=20180702", 4, "che_180920_idKB", 174, ["hall:tirate"]], + ["4·제노에이지", 69, 10, 87, "che_event_반계", [16309, 18458, 42793, 308218, 32981], 1, "af4fec8.png?=20180818", 4, "che_180920_idKB", 187, ["hall:tirate"]], + ["4·SARS죽어라", 81, 72, 10, "che_event_격노", [456673, 16672, 56076, 182918, 10976], 0, "default.jpg", 4, "che_180920_idKB", 205, ["hall:dex1", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["4·카이", 83, 71, 10, "che_event_척사", [40798, 263812, 39221, 58508, 9028], 0, "default.jpg", 4, "che_180920_idKB", 229, ["hall:tlrate"]], + ["4·금설아", 10, 70, 84, "che_event_귀병", [0, 0, 0, 0, 0], 1, "53f18df.jpg?=20180922", 4, "che_180920_idKB", 267, ["hall:tirate"]], + ["4·Black부관", 10, 69, 83, "che_event_집중", [0, 0, 0, 9, 0], 1, "26f2120.gif?=20180925", 4, "che_180920_idKB", 279, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["4·우리즈원♡", 10, 75, 77, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 4, "che_180920_idKB", 283, ["hall:firenum"]], + ["4·눈의소리", 67, 10, 85, "che_event_격노", [7133, 21070, 15591, 135939, 10696], 0, "default.jpg", 4, "che_180920_idKB", 314, ["hall:betgold", "hall:betrate", "hall:betwingold"]], + ["4·나레이터킬러", 69, 83, 10, "che_event_돌격", [39369, 201201, 15393, 38859, 8826], 0, "default.jpg", 4, "che_180920_idKB", 322, ["hall:winrate"]], + ["4·자는중임", 85, 67, 10, "che_event_징병", [0, 0, 0, 4333, 459335], 1, "93af198.jpg?=20181007", 4, "che_180920_idKB", 332, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:winrate"]], + ["4·재송해요재송해요", 10, 81, 66, "che_event_필살", [0, 0, 0, 0, 0], 1, "519f668.png?=20180929", 4, "che_180920_idKB", 344, ["hall:firenum"]], + ["6·카이스트", 71, 10, 83, "che_event_신중", [50236, 85696, 80990, 407936, 23191], 1, "9361ef8.jpg?=20180907", 6, "che_181129_xe1v", 3, ["hall:dex4"]], + ["6·미아", 81, 73, 10, "che_event_무쌍", [7429, 24293, 233314, 36299, 26380], 1, "19ebd2b.jpg?=20181127", 6, "che_181129_xe1v", 5, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:killrate", "hall:winrate"]], + ["6·아유", 69, 10, 86, "che_event_신산", [4270, 53467, 53560, 289571, 23364], 1, "a8dfd2a.gif?=20181218", 6, "che_181129_xe1v", 6, ["chief:12", "hall:experience", "hall:winrate"]], + ["6·whan", 70, 10, 85, "che_event_환술", [69303, 60730, 59751, 424941, 18374], 1, "68aacd2.jpg?=20180929", 6, "che_181129_xe1v", 7, ["hall:dex4"]], + ["6·제갈여포", 74, 10, 82, "che_event_필살", [50285, 39362, 42881, 519681, 27609], 1, "e8e8adc.jpg?=20180419", 6, "che_181129_xe1v", 8, ["hall:dex4"]], + ["6·사키", 71, 83, 11, "che_event_척사", [11373, 30497, 275111, 89443, 17809], 1, "e43844d.gif?=20181113", 6, "che_181129_xe1v", 10, ["hall:dex3", "hall:firenum"]], + ["6·윤지성", 71, 11, 83, "che_event_격노", [3813, 33716, 46917, 278476, 30217], 1, "d62ab55.png?=20181218", 6, "che_181129_xe1v", 11, ["chief:7", "hall:ttrate"]], + ["6·ⓐ자비스", 85, 69, 10, "che_event_징병", [801593, 44873, 112364, 150904, 50588], 1, "472cf86.gif?=20181129", 6, "che_181129_xe1v", 13, ["hall:dex1", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["6·낙지꾸미", 70, 10, 86, "che_event_집중", [25236, 39355, 54994, 269065, 12632], 0, "default.jpg", 6, "che_181129_xe1v", 16, ["hall:ttrate"]], + ["6·ⓟ럭키", 73, 10, 84, "che_event_저격", [41919, 56516, 88869, 585514, 37656], 1, "8e57858.gif?=20181217", 6, "che_181129_xe1v", 18, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["6·솔라", 68, 10, 88, "che_event_저격", [8111, 23457, 23190, 181106, 20785], 1, "bf39f5b.jpg?=20181129", 6, "che_181129_xe1v", 19, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["6·Lupia", 73, 10, 82, "che_event_신산", [48730, 114337, 97992, 654997, 27183], 0, "default.jpg", 6, "che_181129_xe1v", 21, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["6·수장", 78, 80, 10, "che_event_저격", [48228, 54821, 428238, 95633, 26597], 1, "d74c9d2.png?=20181115", 6, "che_181129_xe1v", 22, ["hall:dex3", "hall:firenum"]], + ["6·임사영", 72, 84, 11, "che_event_저격", [453787, 131689, 60736, 154219, 11121], 1, "a0bc4b2.jpg?=20180628", 6, "che_181129_xe1v", 24, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["6·안가면", 68, 11, 85, "che_event_집중", [14956, 20064, 21876, 146525, 14499], 1, "f0c755.jpg?=20181129", 6, "che_181129_xe1v", 26, ["hall:experience"]], + ["6·김나영", 71, 84, 10, "che_event_위압", [334671, 16092, 77932, 51721, 24046], 1, "2e8d570.jpg?=20180823", 6, "che_181129_xe1v", 27, ["hall:dex1"]], + ["6·화사", 69, 87, 10, "che_event_견고", [207353, 12833, 3396, 30873, 25654], 1, "6c3e3fb.jpg?=20181129", 6, "che_181129_xe1v", 29, ["hall:dex1", "hall:killrate", "hall:ttrate"]], + ["6·ⓟ피카츄", 74, 80, 11, "che_event_격노", [94017, 512262, 70646, 140405, 24945], 1, "4178de2.gif?=20181216", 6, "che_181129_xe1v", 31, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:warnum"]], + ["6·충차", 85, 66, 11, "che_event_필살", [101228, 404556, 24920, 81754, 37546], 1, "392683c.jpg?=20181129", 6, "che_181129_xe1v", 32, ["hall:dex2", "hall:tlrate"]], + ["6·황약사", 77, 80, 10, "che_event_징병", [28633, 364869, 147731, 159828, 18197], 1, "189adc9.jpg?=20181115", 6, "che_181129_xe1v", 33, ["hall:dex2", "hall:killnum", "hall:winrate"]], + ["6·사무엘", 12, 70, 82, "che_event_반계", [0, 0, 0, 17, 0], 1, "ba65add.gif?=20181211", 6, "che_181129_xe1v", 34, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:firenum", "hall:ttrate"]], + ["6·아범", 72, 83, 10, "che_event_저격", [44487, 67379, 284123, 84323, 11329], 0, "default.jpg", 6, "che_181129_xe1v", 37, ["hall:dex3"]], + ["6·팬티", 68, 10, 87, "che_event_집중", [10474, 31256, 40568, 300216, 31300], 1, "8496c4b.jpg?=20181217", 6, "che_181129_xe1v", 38, ["chief:5", "hall:experience", "hall:killrate", "hall:winrate"]], + ["6·북오더", 85, 39, 39, "che_event_징병", [5116, 33377, 3025, 8620, 217779], 1, "c0276e1.gif?=20180917", 6, "che_181129_xe1v", 39, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:winrate"]], + ["6·에르제", 70, 86, 10, "che_event_격노", [14194, 39191, 248560, 84299, 21649], 1, "73c4134.png?=20181130", 6, "che_181129_xe1v", 40, ["hall:tprate"]], + ["6·늘모", 70, 84, 11, "che_event_저격", [28753, 192603, 19107, 42129, 15068], 1, "e7c163.png?=20180801", 6, "che_181129_xe1v", 42, ["hall:ttrate"]], + ["6·ARES군주", 69, 88, 10, "che_event_돌격", [14205, 38414, 182708, 36323, 24505], 1, "ca0b15e.gif?=20181003", 6, "che_181129_xe1v", 43, ["hall:tprate"]], + ["6·아리아", 90, 12, 10, "che_event_척사", [0, 0, 0, 0, 103155], 1, "810c706.jpg?=20181204", 6, "che_181129_xe1v", 45, ["hall:dex5", "hall:firenum", "hall:tlrate"]], + ["6·마시멜로", 71, 85, 10, "che_event_척사", [156893, 79591, 61931, 39027, 9034], 1, "50102de.jpg?=20181129", 6, "che_181129_xe1v", 48, ["hall:winrate"]], + ["6·군사", 70, 87, 10, "che_event_척사", [60174, 211670, 25411, 40467, 21897], 1, "c3ab9cf.gif?=20181214", 6, "che_181129_xe1v", 49, ["chief:10", "hall:tprate"]], + ["6·노이즈", 67, 11, 87, "che_event_집중", [6495, 7387, 2223, 100300, 7521], 1, "5ad5212.gif?=20181127", 6, "che_181129_xe1v", 50, ["hall:winrate"]], + ["6·농장소녀", 69, 85, 10, "che_event_척사", [300279, 25273, 36052, 38969, 30195], 1, "d367ca5.jpg?=20181201", 6, "che_181129_xe1v", 51, ["hall:dex1", "hall:killrate", "hall:tprate"]], + ["6·캐릭캐릭체인지", 71, 11, 83, "che_event_격노", [47781, 22334, 68661, 324566, 17359], 1, "27c35d6.jpg?=20181214", 6, "che_181129_xe1v", 53, ["chief:9"]], + ["6·삼남매아빠", 86, 68, 10, "che_event_돌격", [32331, 203325, 24993, 20871, 26702], 0, "default.jpg", 6, "che_181129_xe1v", 54, ["hall:tlrate"]], + ["6·Newbie", 73, 10, 84, "che_event_신중", [56567, 63968, 76268, 579864, 16418], 1, "c8682f4.jpg?=20181204", 6, "che_181129_xe1v", 55, ["hall:dex4", "hall:warnum"]], + ["6·나나야 시키", 86, 69, 11, "che_event_징병", [46158, 358868, 59307, 72490, 18654], 1, "c19b6b4.jpg?=20181129", 6, "che_181129_xe1v", 56, ["hall:dex2", "hall:tlrate"]], + ["6·할말이있어", 71, 10, 86, "che_event_필살", [22667, 56016, 34216, 302191, 11604], 0, "default.jpg", 6, "che_181129_xe1v", 57, ["hall:tirate", "hall:ttrate"]], + ["6·당신의노예", 10, 67, 87, "che_event_신중", [0, 0, 0, 0, 0], 1, "eb89303.png?=20181205", 6, "che_181129_xe1v", 58, ["hall:betgold"]], + ["6·케이", 70, 87, 10, "che_event_돌격", [10479, 73808, 450815, 51107, 30857], 1, "d797798.jpg?=20181216", 6, "che_181129_xe1v", 60, ["hall:dedication", "hall:dex3", "hall:experience"]], + ["6·청기사", 10, 66, 90, "che_event_척사", [0, 0, 0, 0, 0], 1, "af1eb05.jpg?=20181210", 6, "che_181129_xe1v", 61, ["hall:dedication", "hall:tirate"]], + ["6·소열제유비", 71, 84, 11, "che_event_기병", [20238, 81932, 337663, 51541, 24300], 1, "a3b1bbb.png?=20180927", 6, "che_181129_xe1v", 63, ["hall:dex3", "hall:tprate"]], + ["6·규이르", 73, 83, 10, "che_event_위압", [66364, 266420, 221194, 123622, 19922], 1, "bc45418.jpg?=20181214", 6, "che_181129_xe1v", 64, ["hall:dex2"]], + ["6·궁Yeah!", 80, 10, 76, "che_event_저격", [2261, 29859, 13428, 138751, 8782], 1, "cc5e216.jpg?=20181129", 6, "che_181129_xe1v", 65, ["hall:betgold", "hall:firenum"]], + ["6·이쓰미", 73, 11, 83, "che_event_격노", [57119, 45569, 69154, 503433, 30065], 1, "fd6a0fd.jpg?=20181212", 6, "che_181129_xe1v", 66, ["hall:dex4"]], + ["6·만샘", 72, 83, 11, "che_event_돌격", [37015, 374296, 36656, 60899, 32807], 1, "4a206a1.jpg?=20181122", 6, "che_181129_xe1v", 67, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:experience"]], + ["6·팩트)팩트다", 11, 66, 90, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 6, "che_181129_xe1v", 68, ["hall:tirate"]], + ["6·아노리엔", 70, 84, 10, "che_event_격노", [16163, 10311, 233386, 79499, 9824], 0, "default.jpg", 6, "che_181129_xe1v", 69, ["hall:winrate"]], + ["6·Pretty레아", 70, 84, 11, "che_event_필살", [17266, 61082, 270444, 92327, 16896], 0, "default.jpg", 6, "che_181129_xe1v", 70, ["hall:dex3"]], + ["6·휘인", 86, 68, 10, "che_event_견고", [3960, 17805, 230997, 29824, 38750], 1, "8bec25d.jpg?=20181129", 6, "che_181129_xe1v", 72, ["hall:betgold", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["6·박보검", 69, 10, 85, "che_event_반계", [16116, 21102, 14876, 124846, 15207], 1, "649311b.jpg?=20181129", 6, "che_181129_xe1v", 74, ["hall:winrate"]], + ["6·복숭아좋아", 71, 10, 85, "che_event_격노", [15127, 12876, 23291, 165544, 14204], 0, "default.jpg", 6, "che_181129_xe1v", 75, ["hall:tirate"]], + ["6·견문하는HideD", 12, 79, 70, "che_event_척사", [0, 0, 0, 0, 0], 1, "21d378f.jpg?=20180630", 6, "che_181129_xe1v", 77, ["hall:ttrate"]], + ["6·Lenn", 87, 67, 11, "che_event_돌격", [27376, 0, 2114, 17210, 149846], 1, "81b73bc.jpg?=20181130", 6, "che_181129_xe1v", 78, ["hall:dex5", "hall:killrate"]], + ["6·G11", 88, 39, 38, "che_event_공성", [0, 0, 5233, 5684, 685600], 1, "acd69c.jpg?=20181217", 6, "che_181129_xe1v", 80, ["hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killrate", "hall:tlrate"]], + ["6·병리학적자세", 67, 11, 88, "che_event_귀병", [6584, 10186, 3922, 117751, 20404], 1, "3679089.jpg?=20180629", 6, "che_181129_xe1v", 85, ["hall:tirate", "hall:ttrate"]], + ["6·뭐지", 69, 87, 10, "che_event_격노", [25777, 186271, 6404, 54235, 5505], 0, "default.jpg", 6, "che_181129_xe1v", 86, ["hall:tprate"]], + ["6·리플", 70, 10, 85, "che_event_신중", [20314, 40644, 24757, 319229, 25505], 1, "fbe44ca.jpg?=20181207", 6, "che_181129_xe1v", 87, ["hall:firenum"]], + ["6·태수", 71, 10, 84, "che_event_척사", [13951, 14418, 40743, 246476, 35264], 1, "ee74461.gif?=20181214", 6, "che_181129_xe1v", 88, ["chief:11"]], + ["6·엘레나", 80, 10, 74, "che_event_저격", [16534, 40965, 76651, 513623, 125427], 1, "a3ff40d.gif?=20181130", 6, "che_181129_xe1v", 89, ["hall:betgold", "hall:dex4", "hall:dex5", "hall:killnum", "hall:warnum"]], + ["6·진리", 86, 69, 11, "che_event_격노", [36439, 94821, 614861, 171342, 55636], 1, "d286702.jpg?=20181210", 6, "che_181129_xe1v", 91, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["6·심심", 72, 10, 84, "che_event_신산", [26809, 44036, 88607, 498135, 115572], 0, "default.jpg", 6, "che_181129_xe1v", 93, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:tirate"]], + ["6·100이상추방함", 11, 87, 68, "che_event_필살", [0, 0, 8410, 1058, 2062], 1, "8a79079.png?=20181025", 6, "che_181129_xe1v", 95, ["hall:firenum", "hall:tprate"]], + ["6·30초장", 67, 10, 86, "che_event_신중", [12503, 29176, 16675, 87106, 0], 0, "default.jpg", 6, "che_181129_xe1v", 97, ["hall:tirate"]], + ["6·두땅크", 86, 70, 10, "che_event_견고", [356622, 26933, 63360, 74019, 10610], 0, "default.jpg", 6, "che_181129_xe1v", 98, ["hall:dex1"]], + ["6·일반장푸", 55, 55, 55, "che_event_위압", [211052, 24547, 54442, 62236, 11215], 0, "default.jpg", 6, "che_181129_xe1v", 100, ["hall:dex1"]], + ["6·하우젤", 87, 70, 10, "che_event_징병", [18556, 134909, 350604, 68436, 17448], 1, "dcff9fd.jpg?=20180823", 6, "che_181129_xe1v", 102, ["hall:dex3", "hall:tlrate"]], + ["6·셀레스티아", 12, 68, 85, "che_event_필살", [0, 0, 0, 0, 0], 1, "e379112.jpg?=20181210", 6, "che_181129_xe1v", 103, ["chief:6", "hall:dedication"]], + ["6·이지금", 10, 66, 90, "che_event_척사", [0, 0, 0, 0, 0], 1, "581b0d9.png?=20181130", 6, "che_181129_xe1v", 107, ["hall:dedication"]], + ["6·SARS", 10, 72, 84, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 6, "che_181129_xe1v", 108, ["hall:dedication", "hall:experience"]], + ["6·에스테반 공작", 70, 85, 11, "che_event_저격", [355574, 39777, 71318, 102171, 1225], 1, "d5a955e.jpg?=20181130", 6, "che_181129_xe1v", 112, ["hall:dex1"]], + ["6·난동", 10, 68, 88, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 6, "che_181129_xe1v", 115, ["hall:dedication", "hall:tirate"]], + ["6·줄리엣 페르시아", 74, 10, 81, "che_event_저격", [52298, 54294, 52226, 477404, 31437], 1, "8c1432f.gif?=20181130", 6, "che_181129_xe1v", 116, ["hall:dex4"]], + ["6·평민킬러", 72, 84, 10, "che_event_척사", [479800, 21874, 115333, 90822, 28351], 1, "2816ad.jpg?=20181118", 6, "che_181129_xe1v", 119, ["hall:dex1"]], + ["6·집합장 1", 80, 75, 10, "che_event_견고", [41759, 659504, 102688, 101509, 56255], 1, "2c05c61.jpg?=20181218", 6, "che_181129_xe1v", 120, ["hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum"]], + ["6·해피너스", 72, 10, 84, "che_event_징병", [41029, 47386, 64024, 301987, 15478], 1, "ec883eb.jpg?=20181130", 6, "che_181129_xe1v", 123, ["hall:ttrate"]], + ["6·치카", 87, 67, 10, "che_event_징병", [80535, 370972, 34142, 60488, 17108], 1, "3e9a72e.jpg?=20180719", 6, "che_181129_xe1v", 128, ["hall:dex2", "hall:tlrate"]], + ["6·쿠요", 68, 87, 10, "che_event_의술", [0, 19555, 117974, 23292, 16011], 1, "13a2ed0.png?=20180920", 6, "che_181129_xe1v", 130, ["hall:tprate"]], + ["6·귀여운세젤예키라님", 69, 85, 10, "che_event_척사", [20810, 134904, 8758, 23306, 15808], 1, "175639b.png?=20181025", 6, "che_181129_xe1v", 131, ["hall:winrate"]], + ["6·스파르타쿠스", 76, 78, 10, "che_event_격노", [38894, 75704, 395324, 156155, 11812], 1, "e491277.jpg?=20181129", 6, "che_181129_xe1v", 137, ["hall:dex3"]], + ["6·안유진", 68, 10, 87, "che_event_반계", [45338, 37770, 41650, 227356, 9753], 1, "b81ece5.jpg?=20181130", 6, "che_181129_xe1v", 140, ["hall:ttrate"]], + ["6·아이린", 72, 84, 10, "che_event_척사", [27803, 76774, 414839, 144309, 16917], 1, "8dac73c.jpg?=20180922", 6, "che_181129_xe1v", 146, ["hall:dex3", "hall:killnum", "hall:tprate"]], + ["6·긴토키", 86, 68, 11, "che_event_척사", [67708, 327058, 28720, 96922, 10584], 1, "1336ea.jpg?=20181025", 6, "che_181129_xe1v", 154, ["hall:dex2", "hall:tlrate"]], + ["6·피아노맨", 10, 68, 87, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 6, "che_181129_xe1v", 161, ["hall:dedication"]], + ["6·소환된민심러", 88, 65, 10, "che_event_필살", [201574, 17252, 30411, 69617, 50974], 1, "da319ad.jpg?=20181202", 6, "che_181129_xe1v", 162, ["hall:dex1", "hall:dex5", "hall:tlrate"]], + ["6·새장속의이상향", 73, 82, 10, "che_event_견고", [75684, 677918, 41624, 173500, 24281], 1, "83e3447.png?=20181025", 6, "che_181129_xe1v", 163, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["6·안돼", 11, 68, 85, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 6, "che_181129_xe1v", 164, ["hall:dedication", "hall:firenum"]], + ["6·rm", 68, 85, 10, "che_event_필살", [154644, 8568, 16381, 30634, 20576], 0, "default.jpg", 6, "che_181129_xe1v", 207, ["hall:killrate", "hall:tprate"]], + ["6·프레디머큐리", 10, 71, 83, "che_event_귀병", [0, 0, 0, 0, 0], 0, "default.jpg", 6, "che_181129_xe1v", 208, ["hall:dedication"]], + ["6·기연빌런", 10, 66, 89, "che_event_격노", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 6, "che_181129_xe1v", 231, ["hall:tirate"]], + ["6·강도", 72, 80, 10, "che_event_위압", [2612, 41326, 192017, 65111, 14392], 1, "384aa86.jpg?=20181204", 6, "che_181129_xe1v", 268, ["hall:firenum"]], + ["7·이시리스", 79, 71, 9, "che_event_필살", [61227, 239908, 982438, 205558, 39449], 1, "c82f6e9.jpg?=20190219", 7, "che_190125_N6Ph", 4, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killnum"]], + ["7·미나토 유키나", 71, 9, 81, "che_event_척사", [120039, 148134, 167708, 1150978, 24905], 1, "6050d87.jpg?=20190305", 7, "che_190125_N6Ph", 5, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["7·김채원", 71, 9, 80, "che_event_환술", [78132, 91448, 149393, 850221, 17856], 1, "6e10dd5.png?=20190126", 7, "che_190125_N6Ph", 6, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["7·카이스트", 69, 9, 78, "che_event_징병", [98286, 132555, 125719, 673684, 13393], 1, "9361ef8.jpg?=20180907", 7, "che_190125_N6Ph", 7, ["hall:firenum", "hall:warnum"]], + ["7·평민킬러", 69, 80, 9, "che_event_격노", [871962, 81066, 132754, 251904, 21580], 1, "2816ad.jpg?=20181118", 7, "che_190125_N6Ph", 8, ["hall:dex1", "hall:killcrew", "hall:warnum"]], + ["7·우수한", 69, 10, 77, "che_event_징병", [83847, 79541, 122440, 965570, 50153], 1, "5dbfd3e.png?=20190125", 7, "che_190125_N6Ph", 9, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4"]], + ["7·토야마 카스미", 66, 82, 9, "che_event_무쌍", [43415, 535427, 58781, 216485, 33927], 1, "966f765.gif?=20190208", 7, "che_190125_N6Ph", 12, ["hall:betgold", "hall:dex2"]], + ["7·한서진", 75, 79, 9, "che_event_돌격", [82482, 152047, 1950450, 330586, 67134], 1, "53f1ebd.jpg?=20190221", 7, "che_190125_N6Ph", 13, ["chief:12", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["7·황우주", 73, 9, 73, "che_event_저격", [70906, 58833, 121731, 965893, 64148], 1, "f79fd07.gif?=20190224", 7, "che_190125_N6Ph", 17, ["chief:7", "hall:dex4", "hall:dex5", "hall:warnum"]], + ["7·진리", 76, 9, 71, "che_event_신산", [41450, 29904, 81247, 596107, 11971], 1, "ac7abfd.jpg?=20190304", 7, "che_190125_N6Ph", 18, ["hall:dedication", "hall:experience"]], + ["7·햄", 68, 9, 78, "che_event_저격", [39493, 84732, 96362, 681147, 25133], 1, "c73e24c.jpg?=20190125", 7, "che_190125_N6Ph", 20, ["hall:betwin"]], + ["7·미나", 67, 9, 84, "che_event_징병", [86043, 110806, 97942, 866713, 35725], 1, "6d3a238.jpg?=20190213", 7, "che_190125_N6Ph", 22, ["hall:dedication", "hall:dex4", "hall:experience", "hall:firenum", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["7·노승혜", 79, 69, 9, "che_event_위압", [1222635, 50959, 133840, 216062, 61786], 1, "b3b0886.jpg?=20190219", 7, "che_190125_N6Ph", 26, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["7·제갈여포", 78, 9, 70, "che_event_신산", [50824, 106658, 94434, 640028, 8782], 1, "e8e8adc.jpg?=20180419", 7, "che_190125_N6Ph", 30, ["hall:tlrate"]], + ["7·이드", 69, 79, 9, "che_event_궁병", [96782, 903159, 65095, 225631, 22495], 1, "5e36874.jpg?=20190126", 7, "che_190125_N6Ph", 32, ["hall:betrate", "hall:dex2", "hall:killrate", "hall:winrate"]], + ["7·ˇ˘ˇ", 82, 66, 9, "che_event_돌격", [273855, 377825, 240016, 251220, 41016], 1, "c759d44.gif?=20190304", 7, "che_190125_N6Ph", 33, ["hall:tlrate"]], + ["7·힝힝", 63, 72, 9, "che_event_돌격", [211569, 4705, 22236, 126718, 10296], 1, "c5ca50e.jpg?=20190130", 7, "che_190125_N6Ph", 34, ["hall:dex1", "hall:tprate"]], + ["7·난세", 69, 80, 9, "che_event_무쌍", [83022, 952009, 71208, 256930, 28036], 1, "43adc65.png?=20190125", 7, "che_190125_N6Ph", 36, ["chief:6", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:winrate"]], + ["7·료우기시키", 73, 77, 9, "che_event_징병", [50710, 183331, 733831, 257065, 13445], 1, "f1d936e.jpg?=20190217", 7, "che_190125_N6Ph", 39, ["hall:dex3", "hall:killnum", "hall:ttrate"]], + ["7·김주영", 76, 9, 73, "che_event_반계", [89339, 72214, 133312, 1112264, 36168], 1, "ecadeaf.png?=20190221", 7, "che_190125_N6Ph", 40, ["chief:9", "hall:dex4"]], + ["7·만샘", 67, 9, 82, "che_event_신산", [38852, 103656, 96057, 643898, 7324], 1, "4a206a1.jpg?=20181122", 7, "che_190125_N6Ph", 43, ["hall:tirate"]], + ["7·김나영", 68, 77, 9, "che_event_징병", [490784, 39405, 166629, 221483, 11314], 1, "2e8d570.jpg?=20180823", 7, "che_190125_N6Ph", 44, ["hall:dex1", "hall:tprate"]], + ["7·대천사하야미", 69, 9, 79, "che_event_징병", [106080, 86719, 144498, 965266, 29305], 1, "a72bf95.jpg?=20190221", 7, "che_190125_N6Ph", 46, ["hall:dex4"]], + ["7·잠입", 62, 14, 77, "che_event_신중", [7407, 5962, 38798, 90749, 932], 0, "default.jpg", 7, "che_190125_N6Ph", 48, ["hall:firenum"]], + ["7·우양우", 69, 81, 9, "che_event_위압", [123772, 1053319, 85606, 223038, 50266], 1, "2381a44.jpg?=20190227", 7, "che_190125_N6Ph", 49, ["chief:10", "hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:winrate"]], + ["7·갓드오브갓크", 68, 9, 78, "che_event_징병", [103404, 81444, 51333, 895043, 28267], 0, "default.jpg", 7, "che_190125_N6Ph", 51, ["hall:dex4"]], + ["7·삼남매아빠", 66, 9, 81, "che_event_징병", [48188, 88624, 121403, 575709, 26406], 0, "default.jpg", 7, "che_190125_N6Ph", 52, ["hall:tirate"]], + ["7·엘레나", 76, 66, 9, "che_event_저격", [20447, 91942, 651419, 217481, 17384], 0, "default.jpg", 7, "che_190125_N6Ph", 53, ["hall:dex3", "hall:experience"]], + ["7·줄리엣", 64, 9, 85, "che_event_격노", [41429, 23665, 44175, 431802, 16734], 1, "175639b.png?=20181025", 7, "che_190125_N6Ph", 54, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["7·이쓰미", 74, 9, 80, "che_event_집중", [119264, 171778, 140776, 937683, 22379], 1, "fd6a0fd.jpg?=20181212", 7, "che_190125_N6Ph", 56, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["7·차기준", 69, 9, 75, "che_event_신중", [69256, 34073, 104499, 688675, 55871], 1, "224e088.jpg?=20190210", 7, "che_190125_N6Ph", 57, ["hall:dex5"]], + ["7·고블린슬레이어", 9, 93, 56, "che_event_저격", [500, 0, 905, 0, 0], 1, "3b70373.jpg?=20190125", 7, "che_190125_N6Ph", 58, ["hall:dedication", "hall:tprate"]], + ["7·마법소년", 81, 67, 9, "che_event_징병", [1186065, 116003, 99628, 209861, 60678], 1, "8c54e0e.jpg?=20190304", 7, "che_190125_N6Ph", 60, ["chief:8", "hall:dex1", "hall:dex5", "hall:killrate", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["7·박초롱", 66, 82, 9, "che_event_돌격", [563181, 18370, 42099, 254318, 22067], 1, "18e88f0.jpg?=20190223", 7, "che_190125_N6Ph", 61, ["hall:dex1"]], + ["7·다유", 74, 71, 9, "che_event_위압", [430265, 53205, 141991, 172907, 6422], 1, "f489a2a.jpg?=20181226", 7, "che_190125_N6Ph", 65, ["hall:dex1"]], + ["7·늘모", 66, 80, 9, "che_event_무쌍", [26031, 85563, 522279, 177658, 18222], 1, "e7c163.png?=20180801", 7, "che_190125_N6Ph", 68, ["hall:tprate"]], + ["7·심심", 68, 79, 9, "che_event_무쌍", [41316, 43117, 538329, 221739, 22335], 0, "default.jpg", 7, "che_190125_N6Ph", 69, ["hall:tprate"]], + ["7·Tiasse", 11, 62, 79, "che_event_필살", [0, 0, 0, 0, 0], 1, "6ff0c2e.jpg?=20190220", 7, "che_190125_N6Ph", 70, ["hall:firenum", "hall:tirate"]], + ["7·필터링", 68, 9, 80, "che_event_징병", [55599, 67493, 89094, 902284, 42323], 1, "726e55b.gif?=20190201", 7, "che_190125_N6Ph", 71, ["hall:betrate", "hall:dex4"]], + ["7·대충함", 10, 86, 59, "che_event_공성", [0, 0, 0, 5157, 2286], 1, "818791e.jpg?=20190217", 7, "che_190125_N6Ph", 72, ["hall:firenum", "hall:tprate"]], + ["7·돈까스", 68, 84, 9, "che_event_격노", [92530, 791025, 80473, 205908, 22070], 0, "default.jpg", 7, "che_190125_N6Ph", 75, ["hall:dex2", "hall:experience", "hall:tprate", "hall:winrate"]], + ["7·아이린", 67, 81, 9, "che_event_돌격", [87746, 628250, 25622, 184653, 36668], 1, "8dac73c.jpg?=20180922", 7, "che_190125_N6Ph", 77, ["hall:dex2"]], + ["7·Rei", 68, 76, 9, "che_event_징병", [406414, 46243, 39348, 224137, 55618], 1, "e7d55b1.jpg?=20190305", 7, "che_190125_N6Ph", 80, ["hall:betwin", "hall:dex1", "hall:dex5"]], + ["7·뉴비는아님암튼아님", 66, 81, 10, "che_event_징병", [45342, 88158, 461180, 141536, 15817], 1, "3168f43.jpg?=20190304", 7, "che_190125_N6Ph", 81, ["hall:dex3"]], + ["7·새장속의이상향", 67, 78, 10, "che_event_무쌍", [568342, 21286, 106013, 176015, 19470], 1, "83e3447.png?=20181025", 7, "che_190125_N6Ph", 83, ["hall:dex1", "hall:firenum"]], + ["7·란카", 66, 80, 10, "che_event_척사", [18859, 80142, 639802, 202527, 21643], 1, "b62fa50.png?=20190125", 7, "che_190125_N6Ph", 84, ["hall:dex3", "hall:tprate"]], + ["7·청기사", 9, 58, 89, "che_event_집중", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 7, "che_190125_N6Ph", 85, ["hall:dedication", "hall:tirate"]], + ["7·이수임", 68, 9, 79, "che_event_필살", [101117, 65138, 86227, 844329, 44984], 1, "555823.jpg?=20190223", 7, "che_190125_N6Ph", 86, ["chief:5", "hall:betgold", "hall:tirate"]], + ["7·도메스틱한 그녀", 9, 58, 92, "che_event_격노", [0, 0, 0, 0, 0], 1, "20239cf.jpg?=20190305", 7, "che_190125_N6Ph", 87, ["hall:betgold", "hall:dedication", "hall:experience"]], + ["7·이피스", 90, 9, 9, "che_event_위압", [0, 0, 16459, 16126, 465934], 1, "9e64c3b.jpg?=20190201", 7, "che_190125_N6Ph", 89, ["hall:dex5", "hall:experience", "hall:firenum", "hall:killrate", "hall:tlrate"]], + ["7·강예서", 81, 68, 9, "che_event_무쌍", [163897, 409545, 117136, 195025, 938815], 1, "431f85.png?=20190228", 7, "che_190125_N6Ph", 94, ["hall:betgold", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate"]], + ["7·삼남매엄마", 68, 80, 9, "che_event_저격", [107623, 600187, 65903, 187226, 18331], 0, "default.jpg", 7, "che_190125_N6Ph", 97, ["hall:dex2"]], + ["7·북오더#98", 9, 61, 75, "che_event_귀병", [0, 0, 0, 0, 0], 1, "c0276e1.gif?=20180917", 7, "che_190125_N6Ph", 98, ["hall:tlrate"]], + ["7·제노에이지", 63, 9, 79, "che_event_반계", [20368, 17249, 50083, 245920, 7312], 0, "default.jpg", 7, "che_190125_N6Ph", 99, ["hall:betgold", "hall:betwin"]], + ["7·양복을입은아저씨", 83, 63, 9, "che_event_돌격", [28774, 80517, 729490, 262923, 31777], 1, "4da7fe2.jpg?=20190225", 7, "che_190125_N6Ph", 101, ["hall:dex3", "hall:tlrate"]], + ["7·강준상", 81, 63, 9, "che_event_저격", [39959, 89426, 895211, 222298, 38418], 1, "6e146a6.jpg?=20190208", 7, "che_190125_N6Ph", 107, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tlrate"]], + ["7·좀비A", 68, 78, 9, "che_event_필살", [635191, 54259, 135060, 225702, 22856], 1, "2a7a28.jpg?=20190225", 7, "che_190125_N6Ph", 108, ["hall:betwingold", "hall:dex1"]], + ["7·M950", 66, 81, 9, "che_event_기병", [27724, 58882, 635964, 174216, 24974], 1, "a0ffece.jpg?=20190222", 7, "che_190125_N6Ph", 109, ["hall:dex3", "hall:tprate"]], + ["7·잠입2", 63, 74, 9, "che_event_격노", [5177, 13218, 49952, 7575, 1416], 0, "default.jpg", 7, "che_190125_N6Ph", 111, ["hall:winrate"]], + ["7·미스티", 78, 9, 66, "che_event_저격", [33389, 48563, 103132, 427364, 5118], 1, "1aadcba.png?=20180908", 7, "che_190125_N6Ph", 112, ["hall:tlrate"]], + ["7·엘사", 67, 80, 9, "che_event_저격", [109578, 621099, 181391, 147403, 22900], 1, "a9361f3.jpg?=20190216", 7, "che_190125_N6Ph", 118, ["hall:dex2", "hall:firenum"]], + ["7·무한파워안경", 9, 65, 81, "che_event_환술", [0, 0, 0, 0, 0], 1, "b7e1a1f.jpg?=20180525", 7, "che_190125_N6Ph", 124, ["hall:dedication", "hall:tirate"]], + ["7·천괴금", 11, 86, 58, "che_event_필살", [0, 676, 0, 1538, 0], 1, "e15f4b5.png?=20181216", 7, "che_190125_N6Ph", 125, ["hall:firenum", "hall:tprate"]], + ["7·하우젤", 82, 63, 9, "che_event_격노", [51778, 110841, 687062, 277802, 9156], 1, "dcff9fd.jpg?=20180823", 7, "che_190125_N6Ph", 127, ["hall:dex3"]], + ["7·강육공", 9, 56, 83, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 145, ["hall:dedication", "hall:tirate"]], + ["7·레이첼가드너", 16, 73, 67, "che_event_척사", [1508, 1459, 2111, 1357, 521], 1, "1d95ad9.png?=20190127", 7, "che_190125_N6Ph", 146, ["hall:betrate"]], + ["7·리오르", 9, 57, 84, "che_event_귀병", [0, 0, 0, 0, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 159, ["hall:dedication", "hall:tirate"]], + ["7·바젤기우스", 68, 77, 9, "che_event_척사", [122333, 632620, 56502, 177462, 26641], 1, "7668f10.jpg?=20190224", 7, "che_190125_N6Ph", 195, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["7·모모", 9, 58, 80, "che_event_반계", [0, 0, 0, 0, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 232, ["hall:ttrate"]], + ["7·New캐슬", 9, 62, 76, "che_event_저격", [340, 1713, 164, 1176, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 235, ["hall:betwin", "hall:dedication"]], + ["7·나데코", 74, 9, 67, "che_event_격노", [36133, 45948, 64671, 548665, 15763], 0, "default.jpg", 7, "che_190125_N6Ph", 236, ["hall:ttrate"]], + ["7·시그시그", 9, 74, 68, "che_event_신산", [0, 0, 0, 0, 0], 1, "7a562b6.png?=20190202", 7, "che_190125_N6Ph", 237, ["hall:experience", "hall:firenum"]], + ["7·oops", 64, 9, 74, "che_event_징병", [0, 3746, 0, 12149, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 241, ["hall:ttrate"]], + ["7·쀼웃", 9, 61, 75, "che_event_반계", [0, 0, 0, 0, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 248, ["hall:betrate", "hall:betwingold", "hall:dedication", "hall:ttrate"]], + ["7·혼자SKY간혜나", 27, 75, 69, "che_event_기병", [0, 0, 0, 0, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 308, ["hall:ttrate"]], + ["7·술병", 10, 72, 88, "che_event_징병", [0, 33, 0, 0, 0], 0, "default.jpg", 7, "che_190125_N6Ph", 314, ["hall:betrate", "hall:ttrate"]], + ["7·하하", 86, 71, 11, "che_event_척사", [30726, 41020, 124894, 108334, 8266], 0, "default.jpg", 7, "che_190125_N6Ph", 369, ["hall:tlrate", "hall:ttrate"]], + ["7·마검", 69, 10, 81, "che_event_필살", [17350, 14250, 17497, 210401, 5460], 0, "default.jpg", 7, "che_190125_N6Ph", 409, ["hall:tirate"]], + ["7·Febrile", 71, 10, 81, "che_event_신산", [6562, 0, 6354, 435, 164621], 0, "default.jpg", 7, "che_190125_N6Ph", 412, ["hall:dex5", "hall:killrate", "hall:ttrate"]], + ["7·마니와 시라사기", 12, 75, 76, "che_event_귀병", [0, 0, 0, 0, 0], 1, "bb5ab03.jpg?=20190220", 7, "che_190125_N6Ph", 427, ["hall:ttrate"]], + ["7·북오더#428", 83, 38, 39, "che_event_집중", [7249, 10603, 3342, 6660, 181084], 1, "c0276e1.gif?=20180917", 7, "che_190125_N6Ph", 428, ["hall:dex5", "hall:killrate"]], + ["8·우동게", 68, 10, 93, "che_event_징병", [0, 0, 7139, 43749, 11115], 1, "cd05b08.jpg?=20190405", 8, "che_190314_gSb2", 3, ["hall:betwin", "hall:dedication", "hall:experience", "hall:tirate"]], + ["8·후지와라 치카", 92, 67, 10, "che_event_무쌍", [10484, 137314, 23353, 19702, 13417], 1, "5485ec4.gif?=20190319", 8, "che_190314_gSb2", 4, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tlrate"]], + ["8·카이스트", 72, 10, 88, "che_event_저격", [5220, 21659, 18515, 135336, 7131], 1, "9361ef8.jpg?=20180907", 8, "che_190314_gSb2", 5, ["hall:firenum"]], + ["8·김나영", 72, 87, 10, "che_event_척사", [46077, 39762, 435883, 92282, 13809], 1, "2e8d570.jpg?=20180823", 8, "che_190314_gSb2", 6, ["hall:dex3", "hall:tprate"]], + ["8·무한파워안경", 87, 73, 10, "che_event_저격", [7612, 38039, 319500, 125980, 16469], 1, "b7e1a1f.jpg?=20180525", 8, "che_190314_gSb2", 7, ["hall:tlrate"]], + ["8·삼겹살", 83, 11, 77, "che_event_징병", [17715, 80338, 56255, 435695, 17447], 1, "6796cf4.gif?=20190314", 8, "che_190314_gSb2", 8, ["hall:dex4"]], + ["8·노진구", 87, 74, 10, "che_event_위압", [49603, 99857, 550127, 167534, 54584], 1, "ce1319d.jpg?=20190317", 8, "che_190314_gSb2", 9, ["hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:tlrate", "hall:warnum"]], + ["8·평민킬러", 75, 85, 10, "che_event_징병", [109538, 591087, 72141, 140242, 29420], 1, "2816ad.jpg?=20181118", 8, "che_190314_gSb2", 10, ["chief:10", "hall:dex1", "hall:dex2", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["8·시뉴카린", 70, 10, 88, "che_event_저격", [5034, 5285, 20410, 46823, 4284], 1, "1d103a7.gif?=20190402", 8, "che_190314_gSb2", 11, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["8·제노에이지", 73, 10, 89, "che_event_징병", [15693, 77469, 55024, 486598, 42597], 1, "ddd1fd7.jpg?=20190320", 8, "che_190314_gSb2", 12, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5"]], + ["8·민트의 요정", 10, 81, 80, "che_event_반계", [0, 0, 5581, 0, 95], 1, "1195d93.jpg?=20190314", 8, "che_190314_gSb2", 13, ["hall:ttrate"]], + ["8·포트리스3패왕전", 72, 10, 88, "che_event_신산", [47334, 57935, 76625, 542159, 60865], 1, "e32fd7f.jpg?=20190314", 8, "che_190314_gSb2", 19, ["chief:12", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum"]], + ["8·프로야구매니저", 72, 89, 10, "che_event_견고", [86067, 799568, 43017, 114030, 58358], 1, "2f51d31.jpg?=20190318", 8, "che_190314_gSb2", 22, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["8·덕장", 90, 69, 10, "che_event_위압", [50713, 371021, 76129, 119567, 23845], 0, "default.jpg", 8, "che_190314_gSb2", 23, ["hall:dex2", "hall:tlrate"]], + ["8·이상혁", 10, 92, 66, "che_event_필살", [0, 0, 4925, 646, 757], 1, "6ea4b6d.png?=20190316", 8, "che_190314_gSb2", 24, ["hall:firenum"]], + ["8·쉐도우 핀드", 71, 10, 91, "che_event_집중", [21284, 30636, 28389, 333227, 17077], 1, "18dc25d.jpg?=20190405", 8, "che_190314_gSb2", 25, ["hall:winrate"]], + ["8·프론트라인", 85, 74, 10, "che_event_견고", [10577, 58347, 437741, 113767, 31575], 0, "default.jpg", 8, "che_190314_gSb2", 27, ["hall:dex3", "hall:tlrate"]], + ["8·조밧", 67, 11, 89, "che_event_격노", [5925, 9749, 13547, 124949, 1988], 1, "f2d4b4.jpg?=20180629", 8, "che_190314_gSb2", 28, ["hall:tirate"]], + ["8·구스", 83, 78, 10, "che_event_격노", [24175, 106086, 390664, 106907, 23754], 1, "ab6bca8.jpg?=20190314", 8, "che_190314_gSb2", 30, ["hall:dex3"]], + ["8·등갑병", 89, 67, 10, "che_event_무쌍", [156041, 10152, 30691, 6481, 8628], 1, "97aba2f.gif?=20180628", 8, "che_190314_gSb2", 32, ["hall:dex1", "hall:tlrate"]], + ["8·갈색마(+5)", 76, 81, 10, "che_event_무쌍", [17917, 41769, 350794, 108527, 21423], 1, "88598ee.jpg?=20190321", 8, "che_190314_gSb2", 33, ["hall:dex3"]], + ["8·사스케", 74, 86, 10, "che_event_무쌍", [908375, 67876, 37480, 137638, 48849], 1, "e9a3054.jpg?=20190315", 8, "che_190314_gSb2", 36, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwin", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["8·슬라임", 82, 78, 10, "che_event_저격", [83530, 17089, 36823, 18948, 5846], 1, "3408568.jpg?=20190317", 8, "che_190314_gSb2", 37, ["hall:ttrate"]], + ["8·빵에건포도", 85, 76, 11, "che_event_견고", [4516, 25828, 295716, 66445, 19014], 1, "9e3f1c5.jpg?=20190313", 8, "che_190314_gSb2", 39, ["hall:winrate"]], + ["8·박초롱", 68, 91, 10, "che_event_징병", [115639, 1707, 13001, 22302, 11315], 1, "4cb21c1.gif?=20190318", 8, "che_190314_gSb2", 40, ["hall:dex1", "hall:tprate"]], + ["8·천괴금", 70, 88, 10, "che_event_위압", [9044, 5648, 93306, 20431, 5073], 1, "e15f4b5.png?=20181216", 8, "che_190314_gSb2", 41, ["hall:tprate"]], + ["8·모니ㅇ카", 69, 10, 89, "che_event_저격", [3072, 22003, 26577, 165160, 10339], 1, "f937029.jpg?=20190321", 8, "che_190314_gSb2", 44, ["hall:betgold", "hall:betrate", "hall:betwingold"]], + ["8·치카", 89, 71, 10, "che_event_저격", [5121, 106719, 322316, 102085, 23643], 1, "764d882.png?=20190328", 8, "che_190314_gSb2", 45, ["hall:betwin", "hall:betwingold", "hall:dex3"]], + ["8·동백쨔응", 73, 11, 88, "che_event_척사", [33009, 51680, 51617, 471256, 25827], 1, "c07de23.jpg?=20190314", 8, "che_190314_gSb2", 46, ["hall:dex4", "hall:ttrate"]], + ["8·이리스 유마", 90, 10, 68, "che_event_저격", [9396, 0, 25842, 35904, 371388], 1, "c46a5b8.jpg?=20190401", 8, "che_190314_gSb2", 47, ["hall:betgold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["8·Rumi", 71, 89, 10, "che_event_무쌍", [40825, 66807, 482496, 97742, 29745], 1, "84fb262.png?=20190314", 8, "che_190314_gSb2", 51, ["hall:dex3", "hall:firenum", "hall:killnum", "hall:tprate", "hall:winrate"]], + ["8·줄리엣", 87, 72, 10, "che_event_무쌍", [39145, 121268, 62105, 39731, 12485], 1, "175639b.png?=20181025", 8, "che_190314_gSb2", 54, ["hall:tlrate", "hall:ttrate"]], + ["8·이시리스", 70, 10, 92, "che_event_환술", [4224, 13911, 20364, 87313, 12026], 1, "71ddb79.jpg?=20190326", 8, "che_190314_gSb2", 57, ["hall:ttrate"]], + ["8·분위기갑자기소전", 75, 87, 10, "che_event_필살", [379006, 37780, 88218, 138232, 11145], 1, "fb2dc0b.gif?=20190403", 8, "che_190314_gSb2", 58, ["hall:dex1", "hall:firenum"]], + ["8·페레로로쉐", 79, 10, 81, "che_event_신산", [23472, 79263, 86712, 593316, 36511], 1, "e9b8542.jpg?=20190314", 8, "che_190314_gSb2", 59, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["8·마비노기", 73, 88, 10, "che_event_격노", [61414, 65906, 430638, 98369, 28638], 1, "4b78ef3.png?=20190314", 8, "che_190314_gSb2", 61, ["hall:dex3", "hall:tprate"]], + ["8·만샘", 74, 10, 88, "che_event_격노", [54133, 62113, 69298, 461122, 46887], 1, "4a206a1.jpg?=20181122", 8, "che_190314_gSb2", 62, ["chief:5", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:warnum"]], + ["8·아유", 70, 10, 89, "che_event_필살", [218, 27987, 31365, 157038, 14991], 1, "ba186bf.gif?=20181220", 8, "che_190314_gSb2", 66, ["hall:firenum"]], + ["8·마법소녀매지컬모모", 75, 85, 10, "che_event_필살", [13025, 153114, 202856, 85880, 19029], 1, "ba6bfc5.jpg?=20190314", 8, "che_190314_gSb2", 67, ["hall:firenum"]], + ["8·하우젤", 87, 73, 10, "che_event_돌격", [9862, 59705, 252234, 84529, 14100], 1, "dcff9fd.jpg?=20180823", 8, "che_190314_gSb2", 68, ["hall:ttrate"]], + ["8·그랜드체이스", 72, 89, 11, "che_event_무쌍", [23952, 66298, 531825, 100342, 34197], 1, "68492ea.png?=20190322", 8, "che_190314_gSb2", 69, ["chief:8", "hall:dex3", "hall:experience", "hall:tprate", "hall:ttrate"]], + ["8·카라", 76, 11, 83, "che_event_집중", [20418, 73928, 54682, 629102, 41595], 1, "64170a1.jpg?=20190406", 8, "che_190314_gSb2", 70, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["8·미스티", 71, 10, 88, "che_event_필살", [19503, 21014, 35515, 200531, 19059], 1, "1aadcba.png?=20180908", 8, "che_190314_gSb2", 71, ["hall:ttrate"]], + ["8·삼남매아빠", 71, 10, 92, "che_event_집중", [69023, 65980, 73118, 815914, 56232], 0, "default.jpg", 8, "che_190314_gSb2", 72, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["8·서든어택2", 72, 10, 88, "che_event_징병", [49923, 58641, 68806, 389356, 29018], 1, "22d133c.jpg?=20190317", 8, "che_190314_gSb2", 73, ["hall:tirate", "hall:ttrate"]], + ["8·단비", 71, 10, 91, "che_event_신중", [38793, 35317, 109465, 494629, 13140], 1, "851c59d.jpg?=20190314", 8, "che_190314_gSb2", 76, ["hall:dex4", "hall:tirate"]], + ["8·베니엔마", 86, 72, 11, "che_event_돌격", [295425, 14278, 52491, 93844, 26633], 1, "b5a5e4e.jpg?=20190405", 8, "che_190314_gSb2", 77, ["hall:dex1"]], + ["8·베스", 69, 10, 89, "che_event_징병", [31597, 9786, 44001, 196109, 173740], 1, "d06809.gif?=20190331", 8, "che_190314_gSb2", 79, ["hall:dedication", "hall:dex5", "hall:experience", "hall:firenum", "hall:killrate"]], + ["8·리플", 71, 90, 10, "che_event_위압", [48892, 526250, 33767, 114495, 13117], 1, "fbe44ca.jpg?=20181207", 8, "che_190314_gSb2", 82, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["8·두나", 72, 10, 88, "che_event_신중", [9198, 32485, 49266, 372136, 6485], 1, "bf0c572.png?=20181114", 8, "che_190314_gSb2", 87, ["hall:tirate"]], + ["8·後唐 이존욱", 71, 87, 11, "che_event_징병", [185604, 12082, 57933, 65980, 4613], 1, "d6243ee.png?=20190318", 8, "che_190314_gSb2", 88, ["hall:dex1", "hall:tprate"]], + ["8·일시키면삭턴탐", 11, 66, 93, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 8, "che_190314_gSb2", 91, ["hall:firenum", "hall:tirate"]], + ["8·주인장", 73, 85, 10, "che_event_무쌍", [19718, 184736, 83325, 99873, 5162], 0, "default.jpg", 8, "che_190314_gSb2", 92, ["hall:dex2"]], + ["8·소열제유비", 72, 88, 10, "che_event_기병", [2739, 25885, 271234, 121472, 11110], 1, "a3b1bbb.png?=20180927", 8, "che_190314_gSb2", 93, ["hall:tprate"]], + ["8·아노리엔", 87, 70, 11, "che_event_저격", [169509, 165658, 57039, 96205, 18393], 1, "99d6aca.png?=20190320", 8, "che_190314_gSb2", 95, ["hall:dex1", "hall:tlrate"]], + ["8·미아뇌미아", 73, 88, 10, "che_event_견고", [19423, 37715, 328893, 86796, 3955], 0, "default.jpg", 8, "che_190314_gSb2", 97, ["hall:dex3"]], + ["8·오로라", 72, 88, 11, "che_event_척사", [14496, 153379, 13494, 50367, 9522], 1, "2c42d8a.jpg?=20190314", 8, "che_190314_gSb2", 98, ["hall:tprate"]], + ["8·류다희", 72, 87, 11, "che_event_무쌍", [8234, 365821, 6935, 70268, 27470], 1, "781ef76.jpg?=20190317", 8, "che_190314_gSb2", 99, ["hall:dex2", "hall:killrate"]], + ["8·수장", 76, 84, 10, "che_event_격노", [14890, 40335, 300427, 86584, 30832], 1, "20ada6f.png?=20190311", 8, "che_190314_gSb2", 106, ["hall:winrate"]], + ["8·지나가는뉴비", 77, 81, 10, "che_event_징병", [67964, 569025, 57216, 107022, 32017], 0, "default.jpg", 8, "che_190314_gSb2", 112, ["hall:dex2", "hall:killcrew", "hall:killrate", "hall:warnum"]], + ["8·삼남매엄마", 73, 10, 86, "che_event_필살", [59623, 21062, 54817, 450548, 43016], 0, "default.jpg", 8, "che_190314_gSb2", 115, ["hall:dex4", "hall:dex5"]], + ["8·청기사", 11, 67, 93, "che_event_신중", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 8, "che_190314_gSb2", 117, ["hall:dedication"]], + ["8·료우기시키", 69, 11, 89, "che_event_귀병", [3139, 23017, 12181, 57842, 3943], 1, "f1d936e.jpg?=20190217", 8, "che_190314_gSb2", 118, ["hall:ttrate"]], + ["8·Aika", 85, 75, 11, "che_event_척사", [24592, 460397, 106214, 152832, 39933], 1, "dc67ee2.png?=20190316", 8, "che_190314_gSb2", 122, ["hall:dedication", "hall:dex2", "hall:killrate", "hall:tlrate"]], + ["8·기연빌런", 10, 66, 86, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 8, "che_190314_gSb2", 127, ["hall:betgold"]], + ["8·아이린", 71, 89, 10, "che_event_돌격", [83939, 446705, 26572, 87511, 23890], 1, "8dac73c.jpg?=20180922", 8, "che_190314_gSb2", 128, ["hall:dex2"]], + ["8·쀼웃", 11, 68, 91, "che_event_귀병", [0, 0, 0, 0, 0], 1, "8996332.jpg?=20190315", 8, "che_190314_gSb2", 129, ["hall:tirate"]], + ["8·병리학적자세", 68, 10, 92, "che_event_격노", [6678, 20844, 27831, 239390, 16689], 1, "3679089.jpg?=20180629", 8, "che_190314_gSb2", 132, ["hall:tirate"]], + ["8·외심장", 71, 10, 87, "che_event_척사", [16060, 41612, 41494, 352823, 21193], 1, "36110cd.jpg?=20180826", 8, "che_190314_gSb2", 134, ["hall:firenum"]], + ["8·NOVA1492", 10, 70, 87, "che_event_징병", [0, 0, 0, 0, 15], 1, "cd81b58.jpg?=20190316", 8, "che_190314_gSb2", 162, ["hall:tirate"]], + ["8·킹유신", 81, 75, 12, "che_event_격노", [265391, 28657, 93749, 72500, 7091], 0, "default.jpg", 8, "che_190314_gSb2", 250, ["hall:dex1"]], + ["8·생각", 10, 65, 90, "che_event_격노", [0, 0, 0, 0, 0], 0, "default.jpg", 8, "che_190314_gSb2", 286, ["hall:tirate"]], + ["8·색무새호무새망무새", 80, 10, 76, "che_event_척사", [31525, 30791, 65605, 206908, 12987], 1, "4bc0d69.png?=20190327", 8, "che_190314_gSb2", 287, ["chief:7", "hall:betwingold"]], + ["8·의리", 72, 83, 10, "che_event_보병", [69696, 193146, 73782, 63784, 5145], 1, "7781b99.jpg?=20190208", 8, "che_190314_gSb2", 326, ["hall:dex2"]], + ["9·카이스트", 71, 10, 88, "che_event_신산", [11329, 15008, 16703, 273114, 26484], 1, "9361ef8.jpg?=20180907", 9, "che_190411_jaVT", 4, ["hall:firenum", "hall:winrate"]], + ["9·임사영", 71, 10, 88, "che_event_격노", [27007, 27902, 32753, 476546, 44815], 1, "643224f.gif?=20190314", 9, "che_190411_jaVT", 5, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:tirate"]], + ["9·아유", 72, 10, 87, "che_event_귀병", [49094, 31810, 25388, 304121, 21048], 1, "ba186bf.gif?=20181220", 9, "che_190411_jaVT", 6, ["chief:7", "hall:dedication", "hall:experience"]], + ["9·타마키", 87, 71, 11, "che_event_필살", [9600, 21828, 325212, 59128, 31101], 1, "91ddaa3.jpg?=20190411", 9, "che_190411_jaVT", 7, ["hall:experience", "hall:firenum", "hall:killrate"]], + ["9·평민킬러", 69, 89, 10, "che_event_위압", [268642, 12321, 25583, 33873, 20140], 1, "2816ad.jpg?=20181118", 9, "che_190411_jaVT", 8, ["hall:dex1", "hall:killrate"]], + ["9·무사태평자", 70, 10, 88, "che_event_집중", [32253, 29065, 33306, 417577, 25348], 0, "default.jpg", 9, "che_190411_jaVT", 9, ["hall:dedication", "hall:winrate"]], + ["9·밥벌레", 71, 11, 88, "che_event_반계", [38954, 32856, 60051, 501882, 97392], 1, "297847c.gif?=20190428", 9, "che_190411_jaVT", 10, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew"]], + ["9·미야와키 사쿠라", 72, 10, 87, "che_event_격노", [48886, 51927, 21151, 374378, 19392], 1, "34cff5.png?=20190411", 9, "che_190411_jaVT", 11, ["chief:12", "hall:betgold", "hall:dedication", "hall:ttrate"]], + ["9·황약사", 90, 68, 10, "che_event_의술", [23121, 116700, 297522, 146101, 310045], 1, "437813e.jpg?=20190408", 9, "che_190411_jaVT", 13, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:tlrate"]], + ["9·이쓰미", 71, 10, 89, "che_event_격노", [23062, 44401, 88401, 493861, 28436], 1, "fd6a0fd.jpg?=20181212", 9, "che_190411_jaVT", 15, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["9·쌀벌레", 69, 11, 87, "che_event_신중", [14989, 7754, 10289, 216518, 25579], 1, "e9a3054.jpg?=20190315", 9, "che_190411_jaVT", 16, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:experience", "hall:firenum"]], + ["9·로키", 74, 87, 10, "che_event_견고", [36243, 67776, 652322, 135848, 24967], 1, "a90d1e5.jpg?=20190411", 9, "che_190411_jaVT", 20, ["hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:ttrate", "hall:warnum"]], + ["9·기술제한이면인탐", 10, 69, 91, "che_event_신산", [0, 0, 0, 1447, 272], 0, "default.jpg", 9, "che_190411_jaVT", 22, ["hall:firenum", "hall:tirate", "hall:ttrate"]], + ["9·치카", 71, 11, 86, "che_event_반계", [36669, 52152, 42682, 556462, 37493], 1, "3e3566c.png?=20190411", 9, "che_190411_jaVT", 23, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["9·나랑", 90, 41, 37, "che_event_저격", [24055, 5348, 4407, 9933, 464917], 1, "8ee3feb.png?=20190501", 9, "che_190411_jaVT", 25, ["hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["9·료우기시키", 89, 70, 10, "che_event_징병", [63515, 646751, 85636, 274417, 11284], 1, "f1d936e.jpg?=20190217", 9, "che_190411_jaVT", 26, ["hall:dedication", "hall:dex2", "hall:killcrew", "hall:tlrate", "hall:warnum"]], + ["9·늅늅", 72, 87, 10, "che_event_돌격", [44614, 44765, 489085, 125401, 18272], 0, "default.jpg", 9, "che_190411_jaVT", 28, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tprate"]], + ["9·스트레인지", 76, 84, 10, "che_event_위압", [577828, 74354, 106284, 101865, 20770], 1, "80af794.jpg?=20190411", 9, "che_190411_jaVT", 29, ["hall:dex1", "hall:killcrew", "hall:warnum"]], + ["9·개미호랑이", 72, 10, 88, "che_event_귀병", [52982, 45959, 84663, 774816, 28873], 1, "81a1d5f.jpg?=20190501", 9, "che_190411_jaVT", 30, ["hall:dedication", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["9·니콜라스 퓨리", 79, 11, 80, "che_event_반계", [68853, 52328, 82188, 613604, 24223], 1, "9cca522.jpg?=20190412", 9, "che_190411_jaVT", 31, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["9·이시리스", 70, 10, 89, "che_event_필살", [19121, 32305, 14316, 205254, 2988], 1, "d51af2d.jpg?=20190411", 9, "che_190411_jaVT", 34, ["hall:firenum"]], + ["9·술벌레", 11, 70, 86, "che_event_신산", [0, 0, 0, 0, 4121], 1, "8996332.jpg?=20190315", 9, "che_190411_jaVT", 35, ["hall:betwin", "hall:betwingold", "hall:firenum"]], + ["9·박초롱", 73, 86, 10, "che_event_필살", [110735, 426298, 28849, 103873, 24173], 1, "95c959e.gif?=20190423", 9, "che_190411_jaVT", 37, ["hall:dex2"]], + ["9·이드", 71, 10, 88, "che_event_반계", [36788, 47153, 48086, 490883, 25385], 1, "94635d.jpg?=20190412", 9, "che_190411_jaVT", 38, ["hall:dex4", "hall:killnum", "hall:winrate"]], + ["9·그루트", 72, 10, 86, "che_event_척사", [61332, 47538, 56486, 524399, 40000], 1, "10265d3.png?=20190422", 9, "che_190411_jaVT", 42, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killnum"]], + ["9·노가가", 90, 68, 10, "che_event_돌격", [442090, 41636, 59251, 85789, 26487], 1, "b8b96da.png?=20190421", 9, "che_190411_jaVT", 46, ["hall:betwin", "hall:dex1", "hall:firenum", "hall:killrate", "hall:tlrate"]], + ["9·하우젤", 86, 74, 10, "che_event_저격", [104661, 794153, 41042, 258603, 19995], 1, "dcff9fd.jpg?=20180823", 9, "che_190411_jaVT", 48, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["9·이거뭔겜임", 74, 82, 10, "che_event_궁병", [75422, 301634, 7768, 97862, 19755], 0, "default.jpg", 9, "che_190411_jaVT", 49, ["hall:dex2"]], + ["9·5분장", 71, 10, 86, "che_event_신중", [9133, 75389, 76279, 562259, 18920], 0, "default.jpg", 9, "che_190411_jaVT", 50, ["hall:dex4"]], + ["9·sifmd", 71, 10, 86, "che_event_신중", [29311, 26218, 78883, 341939, 20436], 1, "4d82adb.jpg?=20190325", 9, "che_190411_jaVT", 51, ["hall:tirate"]], + ["9·피라미드건설노동자", 11, 91, 65, "che_event_보병", [0, 0, 0, 0, 0], 1, "78e5c15.jpg?=20190425", 9, "che_190411_jaVT", 52, ["hall:tprate"]], + ["9·죽창(+5)", 69, 11, 89, "che_event_격노", [20804, 50624, 42309, 353331, 37462], 1, "1aca7f8.gif?=20190315", 9, "che_190411_jaVT", 53, ["chief:9", "hall:dedication", "hall:dex5", "hall:experience", "hall:tirate", "hall:winrate"]], + ["9·보만다", 72, 85, 10, "che_event_위압", [15320, 19270, 451860, 95652, 29799], 1, "987059d.png?=20190416", 9, "che_190411_jaVT", 54, ["hall:dex3", "hall:killrate", "hall:tprate"]], + ["9·∵∴∵∴∵∴∵∴∵", 71, 86, 10, "che_event_돌격", [363918, 18088, 46544, 69087, 67576], 1, "6eeb68b.jpg?=20190426", 9, "che_190411_jaVT", 55, ["hall:dex1", "hall:dex5", "hall:killrate"]], + ["9·의리", 72, 84, 10, "che_event_돌격", [67642, 38794, 417181, 115711, 24007], 1, "ec56615.png?=20190412", 9, "che_190411_jaVT", 57, ["hall:dex3"]], + ["9·콧코로", 87, 71, 10, "che_event_척사", [75273, 403453, 16584, 114760, 21249], 1, "1c20687.png?=20190410", 9, "che_190411_jaVT", 60, ["hall:dex2", "hall:tlrate"]], + ["9·아루지사마", 67, 89, 12, "che_event_격노", [69655, 2651, 18650, 27009, 6205], 1, "3d319b5.png?=20190422", 9, "che_190411_jaVT", 62, ["hall:tprate"]], + ["9·다유", 71, 86, 10, "che_event_필살", [47995, 58088, 330058, 111502, 11977], 1, "f489a2a.jpg?=20181226", 9, "che_190411_jaVT", 64, ["hall:dex3"]], + ["9·레프 트로츠키", 71, 10, 87, "che_event_저격", [28923, 67108, 56415, 311092, 16486], 0, "default.jpg", 9, "che_190411_jaVT", 65, ["hall:tirate", "hall:ttrate"]], + ["9·누렁", 89, 70, 10, "che_event_척사", [418684, 13913, 76175, 126112, 29697], 1, "4bbfa36.jpg?=20190411", 9, "che_190411_jaVT", 66, ["hall:dex1", "hall:tlrate"]], + ["9·클로제린츠", 72, 10, 87, "che_event_집중", [27280, 35134, 38566, 423035, 29805], 1, "3333f22.png?=20190421", 9, "che_190411_jaVT", 67, ["chief:5", "hall:dedication", "hall:experience", "hall:winrate"]], + ["9·소열제유비", 71, 87, 10, "che_event_척사", [8028, 41684, 306780, 74420, 17002], 1, "a3b1bbb.png?=20180927", 9, "che_190411_jaVT", 68, ["hall:tprate"]], + ["9·호크아이", 72, 87, 10, "che_event_격노", [116602, 426109, 28348, 89696, 16420], 1, "bd83469.jpg?=20190412", 9, "che_190411_jaVT", 69, ["hall:dex2"]], + ["9·HAL 9000", 71, 10, 88, "che_event_격노", [19845, 42025, 32166, 312439, 22452], 1, "7be52e4.gif?=20190430", 9, "che_190411_jaVT", 71, ["chief:11", "hall:betgold", "hall:dedication", "hall:tirate"]], + ["9·돼지바베큐", 72, 10, 85, "che_event_격노", [37411, 16307, 63997, 493576, 22347], 1, "cd72025.png?=20190411", 9, "che_190411_jaVT", 73, ["hall:dex4"]], + ["9·아시나 겐이치로", 85, 71, 10, "che_event_공성", [22398, 6701, 7811, 17538, 168756], 1, "9842c07.jpg?=20190420", 9, "che_190411_jaVT", 74, ["hall:dex5", "hall:experience", "hall:firenum", "hall:killrate", "hall:winrate"]], + ["9·싸우지말고삼모해", 70, 10, 87, "che_event_신산", [12208, 24947, 23451, 334364, 18004], 0, "default.jpg", 9, "che_190411_jaVT", 75, ["hall:tirate"]], + ["9·정근", 70, 10, 88, "che_event_신산", [38194, 72460, 30069, 446034, 23656], 1, "f4474c0.jpg?=20190422", 9, "che_190411_jaVT", 76, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["9·버즈", 88, 71, 10, "che_event_척사", [655070, 17681, 103562, 120047, 36401], 1, "1168f40.jpg?=20190415", 9, "che_190411_jaVT", 78, ["chief:6", "hall:dedication", "hall:dex1", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["9·미친과학", 70, 84, 10, "che_event_돌격", [285082, 12813, 54280, 78370, 15688], 0, "default.jpg", 9, "che_190411_jaVT", 79, ["hall:dex1", "hall:tprate"]], + ["9·북오더", 71, 85, 10, "che_event_보병", [345488, 27073, 59009, 84979, 20740], 1, "c0276e1.gif?=20180917", 9, "che_190411_jaVT", 80, ["hall:dex1", "hall:ttrate"]], + ["9·드류", 70, 10, 87, "che_event_척사", [24454, 61025, 30717, 412103, 23796], 1, "507327d.png?=20181001", 9, "che_190411_jaVT", 82, ["hall:tirate"]], + ["9·리플", 73, 84, 10, "che_event_의술", [345042, 37101, 130088, 93855, 20830], 1, "fb3c625.gif?=20190428", 9, "che_190411_jaVT", 84, ["hall:dex1"]], + ["9·수장", 77, 81, 10, "che_event_무쌍", [30407, 48709, 527680, 124849, 30458], 1, "897dde2.png?=20190411", 9, "che_190411_jaVT", 87, ["hall:dex3", "hall:killnum"]], + ["9·아이린", 71, 87, 10, "che_event_격노", [36892, 325798, 32259, 69414, 12842], 1, "8dac73c.jpg?=20180922", 9, "che_190411_jaVT", 90, ["hall:dex2", "hall:tprate", "hall:ttrate"]], + ["9·도적", 10, 90, 65, "che_event_의술", [0, 0, 0, 0, 0], 1, "68887a9.png?=20190421", 9, "che_190411_jaVT", 92, ["hall:firenum"]], + ["9·n아텐 누", 72, 11, 85, "che_event_척사", [49309, 22980, 47358, 476320, 16007], 1, "862bd8e.gif?=20181028", 9, "che_190411_jaVT", 94, ["hall:tirate"]], + ["9·노네임", 88, 72, 10, "che_event_척사", [39814, 296789, 25358, 134299, 5472], 0, "default.jpg", 9, "che_190411_jaVT", 96, ["hall:dex2", "hall:tlrate"]], + ["9·파이", 79, 81, 10, "che_event_격노", [40333, 49825, 483081, 128506, 30387], 1, "da3bc86.jpg?=20190318", 9, "che_190411_jaVT", 99, ["hall:dex3", "hall:ttrate"]], + ["9·비올레타", 70, 85, 10, "che_event_필살", [45145, 193144, 10076, 60515, 10950], 1, "fe0c1d2.gif?=20190422", 9, "che_190411_jaVT", 102, ["hall:tprate"]], + ["9·리안", 86, 71, 10, "che_event_돌격", [25240, 66573, 570513, 136227, 15160], 0, "default.jpg", 9, "che_190411_jaVT", 105, ["hall:dex3", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["9·아무것도안함", 85, 74, 10, "che_event_돌격", [42228, 41862, 374326, 102631, 26438], 0, "default.jpg", 9, "che_190411_jaVT", 109, ["hall:dex3", "hall:tlrate"]], + ["9·망나뇽", 70, 84, 12, "che_event_척사", [104938, 202890, 30644, 81780, 0], 0, "default.jpg", 9, "che_190411_jaVT", 113, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["9·7.5초장", 11, 67, 90, "che_event_귀병", [0, 0, 0, 895, 145], 1, "bb939e3.png?=20190412", 9, "che_190411_jaVT", 119, ["hall:ttrate"]], + ["9·장손신희", 72, 84, 10, "che_event_격노", [499965, 41999, 118131, 143615, 14149], 1, "e7a5bde.jpg?=20190329", 9, "che_190411_jaVT", 124, ["hall:dex1", "hall:warnum"]], + ["9·문학소녀", 70, 10, 86, "che_event_필살", [61277, 26560, 44044, 354133, 19828], 1, "bf40507.jpg?=20190411", 9, "che_190411_jaVT", 129, ["hall:firenum"]], + ["9·제노에이지", 69, 10, 87, "che_event_징병", [20627, 23470, 63776, 279270, 3888], 1, "ddd1fd7.jpg?=20190320", 9, "che_190411_jaVT", 226, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["9·줄리엣", 71, 84, 10, "che_event_척사", [46512, 359054, 37499, 85767, 17706], 1, "175639b.png?=20181025", 9, "che_190411_jaVT", 246, ["chief:10", "hall:dex2", "hall:tprate"]], + ["9·이수", 70, 85, 10, "che_event_징병", [18047, 34335, 384104, 139097, 16896], 0, "default.jpg", 9, "che_190411_jaVT", 258, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3"]], + ["9·탈곡기", 69, 12, 80, "che_event_징병", [12066, 27302, 29463, 307356, 16448], 1, "9ed8be6.gif?=20190417", 9, "che_190411_jaVT", 269, ["hall:betgold", "hall:betwingold"]], + ["9·아노리엔", 73, 81, 10, "che_event_저격", [34286, 308787, 18993, 117144, 8219], 1, "99d6aca.png?=20190320", 9, "che_190411_jaVT", 274, ["hall:dex2"]], + ["9·실전형집합장", 67, 81, 10, "che_event_공성", [8799, 0, 50726, 9935, 6485], 1, "bb3a4e1.png?=20180828", 9, "che_190411_jaVT", 469, ["hall:killrate"]], + ["9·아세소환수1", 11, 66, 79, "che_event_의술", [0, 0, 0, 0, 3969], 1, "140a6b7.jpg?=20190425", 9, "che_190411_jaVT", 470, ["chief:8"]], + ["11·카이스트", 71, 10, 87, "che_event_신중", [45950, 29151, 48395, 462648, 17053], 1, "9361ef8.jpg?=20180907", 11, "che_190620_oK3G", 3, ["hall:dex3", "hall:dex4", "hall:tirate"]], + ["11·줄리엣", 70, 10, 86, "che_event_환술", [9486, 9392, 8991, 263816, 23308], 1, "70f470f.png?=20190620", 11, "che_190620_oK3G", 4, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:killrate"]], + ["11·Samo", 71, 85, 10, "che_event_저격", [263737, 8497, 45554, 58067, 17063], 1, "25449b0.png?=20190626", 11, "che_190620_oK3G", 5, ["hall:dex1", "hall:tprate", "hall:winrate"]], + ["11·니논", 10, 67, 90, "che_event_저격", [0, 0, 0, 0, 0], 1, "ee20cdb.jpg?=20190620", 11, "che_190620_oK3G", 6, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["11·극새ㅅ사이브ㄹ", 67, 10, 90, "che_event_신중", [10771, 10616, 14553, 202092, 36147], 1, "6e009d9.jpg?=20190620", 11, "che_190620_oK3G", 7, ["chief:11", "hall:dedication", "hall:dex5", "hall:tirate"]], + ["11·이초홍", 71, 10, 86, "che_event_필살", [11443, 64213, 47527, 392635, 12294], 1, "8d5e5ae.jpg?=20190619", 11, "che_190620_oK3G", 8, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:firenum"]], + ["11·케프리", 91, 65, 10, "che_event_무쌍", [2041, 5571, 4024, 2044, 111189], 1, "8032c27.jpg?=20190707", 11, "che_190620_oK3G", 9, ["hall:dex5", "hall:firenum", "hall:killrate", "hall:tlrate"]], + ["11·철푸덕", 70, 10, 88, "che_event_신중", [16840, 11570, 10514, 226394, 20204], 1, "dbe0759.jpg?=20190708", 11, "che_190620_oK3G", 10, ["chief:9", "hall:experience", "hall:killrate", "hall:tirate"]], + ["11·기분좋은안녕", 68, 88, 10, "che_event_저격", [0, 17209, 16548, 5128, 16153], 0, "default.jpg", 11, "che_190620_oK3G", 11, ["hall:tprate"]], + ["11·평민킬러", 71, 87, 10, "che_event_격노", [451835, 14094, 19512, 79452, 22849], 1, "fba3a6f.jpg?=20190620", 11, "che_190620_oK3G", 12, ["hall:dedication", "hall:dex1", "hall:experience", "hall:killnum", "hall:killrate", "hall:tprate", "hall:winrate"]], + ["11·삐약이", 74, 83, 10, "che_event_격노", [14542, 317000, 7269, 51955, 26625], 1, "10f5cdc.jpg?=20190708", 11, "che_190620_oK3G", 14, ["chief:12", "hall:dex2", "hall:killrate"]], + ["11·꽃냥", 69, 10, 87, "che_event_척사", [31586, 38835, 8777, 348707, 22640], 1, "3447fa.jpg?=20190620", 11, "che_190620_oK3G", 15, ["hall:dedication", "hall:experience"]], + ["11·Hide_D", 11, 69, 88, "che_event_귀병", [0, 0, 0, 0, 0], 1, "ee5accd.jpg?=20190411", 11, "che_190620_oK3G", 16, ["hall:experience", "hall:ttrate"]], + ["11·무당벌레", 86, 10, 72, "che_event_신중", [70603, 57301, 22890, 393328, 18909], 0, "default.jpg", 11, "che_190620_oK3G", 17, ["hall:dex1", "hall:dex4"]], + ["11·개촐ㄹ랒필거야 ?", 81, 75, 10, "che_event_격노", [43710, 4749, 0, 18360, 48021], 1, "1b8a3df.jpg?=20190620", 11, "che_190620_oK3G", 18, ["chief:6", "hall:dex5", "hall:killrate", "hall:ttrate", "hall:winrate"]], + ["11·꽃삔", 71, 11, 86, "che_event_격노", [50429, 60535, 46173, 489285, 28523], 1, "fc715bf.jpg?=20190620", 11, "che_190620_oK3G", 19, ["hall:dex4", "hall:killnum"]], + ["11·수장", 70, 10, 86, "che_event_집중", [11534, 31540, 10081, 251307, 14906], 1, "b9b784a.jpg?=20190521", 11, "che_190620_oK3G", 24, ["hall:killrate", "hall:winrate"]], + ["11·비스마르크", 69, 85, 11, "che_event_견고", [59569, 350127, 4276, 106365, 19326], 0, "default.jpg", 11, "che_190620_oK3G", 25, ["hall:betgold", "hall:dex2"]], + ["11·료우기시키", 82, 76, 10, "che_event_무쌍", [58091, 391277, 10916, 123158, 25056], 1, "f1d936e.jpg?=20190217", 11, "che_190620_oK3G", 26, ["hall:dex2", "hall:tlrate"]], + ["11·이리시스", 72, 10, 86, "che_event_필살", [53487, 59065, 13263, 554253, 26487], 0, "default.jpg", 11, "che_190620_oK3G", 27, ["hall:dex4", "hall:firenum", "hall:killcrew", "hall:warnum"]], + ["11·개미호랑이", 72, 10, 87, "che_event_신산", [46734, 88676, 54169, 676154, 20093], 1, "b0969be.jpg?=20190705", 11, "che_190620_oK3G", 29, ["hall:dex3", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["11·드림캐쳐", 73, 84, 10, "che_event_견고", [780295, 42451, 44529, 59837, 28091], 1, "6bca7d1.jpg?=20190620", 11, "che_190620_oK3G", 30, ["chief:8", "hall:dex1", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum"]], + ["11·학식대장", 82, 74, 10, "che_event_저격", [94798, 49581, 20829, 31553, 15007], 1, "49f13e6.png?=20190520", 11, "che_190620_oK3G", 31, ["hall:dex1", "hall:tlrate"]], + ["11·장손신희", 71, 85, 11, "che_event_돌격", [271136, 11573, 24245, 98125, 14353], 1, "e7a5bde.jpg?=20190329", 11, "che_190620_oK3G", 32, ["hall:dex1", "hall:tprate", "hall:ttrate"]], + ["11·리안", 69, 10, 87, "che_event_필살", [13785, 19145, 14669, 153616, 13975], 0, "default.jpg", 11, "che_190620_oK3G", 33, ["hall:dedication"]], + ["11·살인사건", 71, 85, 10, "che_event_징병", [4975, 27521, 145474, 46272, 12402], 0, "default.jpg", 11, "che_190620_oK3G", 35, ["hall:dex3"]], + ["11·협동전 하고싶다", 73, 10, 86, "che_event_척사", [69376, 76252, 56149, 716566, 35042], 1, "a2215be.png?=20190625", 11, "che_190620_oK3G", 37, ["hall:dex1", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["11·반역의루돌프", 82, 66, 13, "che_event_무쌍", [190460, 21059, 34520, 61975, 3668], 0, "default.jpg", 11, "che_190620_oK3G", 38, ["hall:dex1", "hall:tlrate"]], + ["11·파이", 68, 10, 88, "che_event_저격", [3904, 18236, 13663, 172482, 30437], 1, "f76fa74.jpg?=20190629", 11, "che_190620_oK3G", 41, ["hall:dex5", "hall:tirate"]], + ["11·고긔가먹고싶", 10, 72, 84, "che_event_반계", [0, 0, 0, 0, 0], 1, "20239cf.jpg?=20190305", 11, "che_190620_oK3G", 42, ["hall:dedication", "hall:firenum"]], + ["11·쒸익쒸익", 84, 73, 11, "che_event_견고", [10684, 35883, 195196, 43139, 31175], 1, "dbeeb0d.jpg?=20190620", 11, "che_190620_oK3G", 44, ["chief:10", "hall:dex3", "hall:dex5", "hall:experience", "hall:tlrate"]], + ["11·이시리스", 72, 11, 86, "che_event_신산", [60260, 73608, 37067, 627605, 24308], 0, "default.jpg", 11, "che_190620_oK3G", 45, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["11·임사영", 68, 10, 89, "che_event_신산", [12085, 26669, 1671, 172397, 7362], 1, "e08aca7.jpg?=20190512", 11, "che_190620_oK3G", 46, ["hall:firenum"]], + ["11·외심장", 72, 11, 84, "che_event_의술", [61498, 53874, 39951, 651861, 35599], 1, "36110cd.jpg?=20180826", 11, "che_190620_oK3G", 47, ["hall:betgold", "hall:dex4", "hall:dex5", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["11·빨간망토", 11, 69, 87, "che_event_척사", [0, 0, 0, 0, 0], 1, "862bd8e.gif?=20181028", 11, "che_190620_oK3G", 48, ["hall:ttrate"]], + ["11·두나", 68, 10, 90, "che_event_귀병", [0, 0, 0, 0, 0], 1, "bf0c572.png?=20181114", 11, "che_190620_oK3G", 49, ["hall:tirate", "hall:ttrate"]], + ["11·멘헤라쨩", 10, 71, 88, "che_event_반계", [0, 0, 0, 0, 0], 1, "7ba28b1.jpg?=20190526", 11, "che_190620_oK3G", 50, ["hall:ttrate"]], + ["11·BAKBAK", 68, 10, 88, "che_event_귀병", [14349, 18743, 13345, 217520, 25666], 0, "default.jpg", 11, "che_190620_oK3G", 51, ["chief:7"]], + ["11·아련그자체", 70, 10, 87, "che_event_신산", [14597, 12254, 16162, 168069, 37863], 1, "57e4a39.jpg?=20190620", 11, "che_190620_oK3G", 52, ["hall:dedication", "hall:dex5"]], + ["11·사스케", 71, 84, 10, "che_event_돌격", [37570, 241466, 21685, 65233, 21668], 1, "bab8446.jpg?=20190607", 11, "che_190620_oK3G", 53, ["hall:dex2"]], + ["11·Radon", 87, 70, 10, "che_event_위압", [34067, 69241, 430748, 164549, 10316], 1, "55ad2a4.png?=20190703", 11, "che_190620_oK3G", 54, ["hall:dex3", "hall:killcrew", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["11·이쓰미", 73, 10, 84, "che_event_신중", [38767, 30673, 9890, 436618, 19295], 1, "fd6a0fd.jpg?=20181212", 11, "che_190620_oK3G", 55, ["hall:dex4"]], + ["11·댕찌율", 74, 10, 83, "che_event_집중", [44779, 74127, 29893, 633958, 27449], 1, "99cd27f.gif?=20190606", 11, "che_190620_oK3G", 56, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["11·유튜브친구들", 69, 10, 87, "che_event_징병", [31651, 35996, 26865, 232785, 7071], 1, "c213511.jpg?=20190628", 11, "che_190620_oK3G", 57, ["hall:tirate"]], + ["11·치요", 87, 67, 10, "che_event_격노", [23831, 165268, 0, 81230, 15362], 1, "61db7ca.jpg?=20190620", 11, "che_190620_oK3G", 58, ["hall:dex2", "hall:tlrate"]], + ["11·나가사와 마리나", 81, 10, 76, "che_event_척사", [54962, 43922, 11725, 380426, 24276], 1, "ea91789.png?=20190620", 11, "che_190620_oK3G", 59, ["hall:ttrate"]], + ["11·륜", 91, 11, 11, "che_event_필살", [5759, 4925, 3378, 22723, 268931], 1, "8c97e55.jpg?=20190627", 11, "che_190620_oK3G", 60, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["11·병리학적자세", 70, 10, 88, "che_event_저격", [31215, 27626, 29999, 309583, 14674], 1, "3679089.jpg?=20180629", 11, "che_190620_oK3G", 61, ["hall:winrate"]], + ["11·민트토끼", 10, 89, 68, "che_event_위압", [0, 0, 0, 0, 0], 1, "8e57858.gif?=20181217", 11, "che_190620_oK3G", 62, ["hall:dedication", "hall:firenum"]], + ["11·늘모", 64, 82, 18, "che_event_필살", [12380, 65266, 289182, 99172, 10579], 1, "e7c163.png?=20180801", 11, "che_190620_oK3G", 64, ["hall:dex3", "hall:tprate"]], + ["11·킹구갓구", 69, 88, 10, "che_event_척사", [11503, 191630, 3212, 41610, 26047], 1, "fb3c625.gif?=20190428", 11, "che_190620_oK3G", 65, ["hall:dex2", "hall:killrate", "hall:tprate"]], + ["11·박일아", 10, 67, 92, "che_event_저격", [0, 0, 0, 0, 0], 1, "4178de2.gif?=20181216", 11, "che_190620_oK3G", 66, ["hall:betgold", "hall:tirate"]], + ["11·사이다라떼", 68, 10, 88, "che_event_신산", [1262, 14488, 8803, 183807, 33362], 0, "default.jpg", 11, "che_190620_oK3G", 68, ["hall:betgold", "hall:dedication", "hall:dex5", "hall:experience"]], + ["11·손인", 71, 87, 10, "che_event_무쌍", [30019, 55845, 346588, 137689, 11577], 1, "9382fb7.png?=20190620", 11, "che_190620_oK3G", 72, ["hall:betgold", "hall:dex3", "hall:tprate", "hall:ttrate"]], + ["11·소열제유비", 71, 85, 10, "che_event_무쌍", [9604, 20194, 148418, 38737, 13348], 1, "a3b1bbb.png?=20180927", 11, "che_190620_oK3G", 73, ["hall:dex3"]], + ["11·헹이", 71, 85, 10, "che_event_징병", [54900, 321923, 4800, 95585, 21977], 0, "default.jpg", 11, "che_190620_oK3G", 76, ["hall:dex2", "hall:tprate"]], + ["11·의욕없는규일", 73, 85, 10, "che_event_무쌍", [86480, 635227, 39771, 86433, 16507], 0, "default.jpg", 11, "che_190620_oK3G", 77, ["hall:dex1", "hall:dex2", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum"]], + ["11·아이린", 69, 88, 10, "che_event_의술", [38847, 302361, 10787, 108187, 15091], 1, "8dac73c.jpg?=20180922", 11, "che_190620_oK3G", 86, ["hall:dex2", "hall:firenum", "hall:tprate"]], + ["11·조용히해라", 11, 67, 88, "che_event_징병", [0, 0, 0, 0, 0], 1, "6114f3.jpg?=20190701", 11, "che_190620_oK3G", 87, ["hall:dedication"]], + ["11·오른쪽왼쪽제자리", 88, 69, 11, "che_event_격노", [742452, 42119, 41555, 44985, 23407], 1, "7996e6e.png?=20190705", 11, "che_190620_oK3G", 95, ["hall:dex1", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["11·고양이발바닥", 65, 11, 92, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 11, "che_190620_oK3G", 96, ["hall:tirate"]], + ["11·로리", 10, 68, 87, "che_event_신중", [0, 0, 0, 0, 0], 1, "deebdd3.jpg?=20190318", 11, "che_190620_oK3G", 189, ["hall:ttrate"]], + ["11·개꿀", 68, 82, 10, "che_event_격노", [19641, 112569, 4288, 33032, 566], 1, "5b0cf23.jpg?=20190625", 11, "che_190620_oK3G", 263, ["hall:firenum"]], + ["11·먹튀", 69, 11, 82, "che_event_의술", [36140, 29015, 10634, 283666, 13675], 0, "default.jpg", 11, "che_190620_oK3G", 290, ["hall:winrate"]], + ["11·조용히해주실래요?", 81, 68, 10, "che_event_저격", [34935, 259917, 26321, 82577, 6010], 1, "bf1f881.jpg?=20190707", 11, "che_190620_oK3G", 324, ["hall:dex2", "hall:tlrate"]], + ["11·타오바오", 11, 68, 81, "che_event_귀병", [0, 0, 0, 0, 0], 1, "d2c6421.png?=20190629", 11, "che_190620_oK3G", 347, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["12·병리학적자세", 72, 10, 91, "che_event_집중", [69911, 35780, 11401, 688771, 27212], 1, "3679089.jpg?=20180629", 12, "che_190718_eOan", 3, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["12·로 리", 71, 10, 89, "che_event_필살", [72041, 48050, 34209, 599557, 36300], 1, "1ec690f.jpg?=20190720", 12, "che_190718_eOan", 4, ["chief:9", "hall:betgold", "hall:dex4", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["12·미나토 유키나", 67, 12, 89, "che_event_신중", [10753, 0, 0, 78068, 25787], 1, "dfbfdef.jpg?=20190718", 12, "che_190718_eOan", 5, ["hall:killrate", "hall:tirate"]], + ["12·꼬리♡", 73, 10, 90, "che_event_척사", [24478, 27771, 20496, 454170, 34509], 1, "844a93b.gif?=20190717", 12, "che_190718_eOan", 7, ["hall:dedication", "hall:dex4", "hall:killnum"]], + ["12·치즈", 90, 70, 10, "che_event_견고", [489454, 21081, 5994, 63836, 24746], 1, "bd91cf9.jpg?=20190717", 12, "che_190718_eOan", 8, ["hall:betgold", "hall:dex1", "hall:tlrate", "hall:warnum"]], + ["12·꼬리", 72, 10, 91, "che_event_신산", [34317, 33432, 27660, 414807, 74294], 1, "33d4b88.jpg?=20190718", 12, "che_190718_eOan", 10, ["hall:dedication", "hall:dex5", "hall:tirate", "hall:ttrate"]], + ["12·꽃핀", 75, 10, 89, "che_event_격노", [36802, 34787, 39921, 764517, 28955], 1, "587c5f5.jpg?=20190808", 12, "che_190718_eOan", 11, ["chief:11", "hall:dex3", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["12·개미호랑이", 71, 11, 88, "che_event_필살", [33821, 55291, 13340, 434325, 17702], 1, "fccc37e.jpg?=20190718", 12, "che_190718_eOan", 13, ["hall:dex2"]], + ["12·캬루", 70, 11, 90, "che_event_징병", [23352, 12035, 12716, 241607, 22213], 1, "54e940f.png?=20190717", 12, "che_190718_eOan", 14, ["hall:dedication", "hall:winrate"]], + ["12·Hide_D", 10, 68, 93, "che_event_집중", [0, 0, 0, 4294, 0], 1, "ee5accd.jpg?=20190411", 12, "che_190718_eOan", 16, ["hall:experience", "hall:tirate"]], + ["12·평민킬러", 75, 85, 10, "che_event_격노", [821464, 28148, 28488, 50811, 41345], 1, "fba3a6f.jpg?=20190620", 12, "che_190718_eOan", 21, ["chief:10", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["12·메디브", 83, 78, 10, "che_event_저격", [4560, 3486, 151198, 47860, 18120], 1, "def2895.jpg?=20190719", 12, "che_190718_eOan", 22, ["hall:betgold", "hall:dex3", "hall:firenum", "hall:tlrate"]], + ["12·아바브와", 75, 86, 10, "che_event_격노", [6173, 21407, 151848, 49781, 13133], 0, "default.jpg", 12, "che_190718_eOan", 24, ["hall:dex3"]], + ["12·문병", 13, 81, 78, "che_event_공성", [2578, 0, 0, 2381, 9275], 1, "564b738.jpg?=20190718", 12, "che_190718_eOan", 26, ["hall:tprate", "hall:ttrate"]], + ["12·카오스피닉스", 74, 10, 87, "che_event_격노", [43498, 45060, 17716, 492016, 52704], 1, "7f80b2f.jpg?=20190715", 12, "che_190718_eOan", 27, ["chief:7", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["12·n아텐 누", 77, 11, 85, "che_event_의술", [52920, 72334, 38899, 871059, 38895], 1, "862bd8e.gif?=20181028", 12, "che_190718_eOan", 28, ["chief:12", "hall:dex2", "hall:dex3", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["12·바밀리오", 69, 10, 93, "che_event_척사", [11265, 5326, 0, 114450, 8013], 1, "6979928.jpg?=20190713", 12, "che_190718_eOan", 29, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["12·두나", 68, 10, 94, "che_event_징병", [0, 0, 0, 32434, 12034], 1, "bf0c572.png?=20181114", 12, "che_190718_eOan", 31, ["hall:dedication", "hall:tirate"]], + ["12·리안", 70, 10, 90, "che_event_척사", [9005, 3957, 6810, 120993, 24207], 1, "db0cb7a.jpg?=20190719", 12, "che_190718_eOan", 35, ["hall:tirate"]], + ["12·료우기시키", 71, 10, 88, "che_event_의술", [25047, 22269, 15994, 480555, 22925], 1, "f1d936e.jpg?=20190217", 12, "che_190718_eOan", 36, ["hall:dex4"]], + ["12·이한결", 74, 86, 10, "che_event_징병", [50723, 399206, 46192, 125802, 26769], 1, "63c4de9.jpg?=20190718", 12, "che_190718_eOan", 37, ["hall:dex2", "hall:dex3"]], + ["12·나폴레옹", 82, 79, 10, "che_event_돌격", [25797, 512433, 4289, 37028, 39345], 1, "86e6b9f.jpg?=20190719", 12, "che_190718_eOan", 38, ["hall:dex2", "hall:dex5"]], + ["12·란카", 10, 72, 90, "che_event_신산", [0, 0, 0, 3433, 654], 1, "bb939e3.png?=20190412", 12, "che_190718_eOan", 41, ["hall:dedication", "hall:ttrate"]], + ["12·꼬리원자력발전소", 83, 11, 78, "che_event_징병", [77866, 73785, 28477, 543106, 14279], 1, "daf6db8.gif?=20190728", 12, "che_190718_eOan", 43, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["12·리즈나광팬672번", 77, 82, 10, "che_event_저격", [63223, 52779, 284357, 123335, 13228], 1, "3f21be0.jpg?=20190719", 12, "che_190718_eOan", 44, ["hall:dex3", "hall:tprate"]], + ["12·장손신희", 78, 83, 10, "che_event_위압", [93781, 450836, 8658, 77456, 25492], 1, "e7a5bde.jpg?=20190329", 12, "che_190718_eOan", 45, ["chief:8", "hall:dex1", "hall:dex2"]], + ["12·카이스트", 68, 11, 87, "che_event_징병", [10773, 19837, 18001, 161161, 49652], 1, "9361ef8.jpg?=20180907", 12, "che_190718_eOan", 47, ["hall:dex5", "hall:firenum"]], + ["12·분노의꼬리", 70, 10, 91, "che_event_신산", [31635, 4564, 11118, 263932, 37081], 1, "d5dc381.gif?=20190719", 12, "che_190718_eOan", 48, ["hall:dedication"]], + ["12·이해고", 84, 75, 10, "che_event_징병", [35015, 41263, 488453, 144773, 40520], 1, "f332b13.jpg?=20190718", 12, "che_190718_eOan", 49, ["hall:dex3", "hall:dex5", "hall:killcrew", "hall:tlrate"]], + ["12·네이미", 86, 10, 73, "che_event_저격", [64624, 50349, 38151, 437873, 73914], 0, "default.jpg", 12, "che_190718_eOan", 52, ["hall:dex3", "hall:dex5", "hall:firenum", "hall:tlrate"]], + ["12·모건", 93, 13, 10, "che_event_필살", [0, 245, 0, 0, 127902], 1, "b023aa0.jpg?=20190731", 12, "che_190718_eOan", 54, ["hall:dex5", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["12·청기사", 10, 71, 89, "che_event_반계", [0, 0, 0, 1602, 0], 1, "9fdc4fd.jpg?=20181213", 12, "che_190718_eOan", 57, ["hall:dedication", "hall:ttrate"]], + ["12·반역의루돌프", 78, 74, 12, "che_event_척사", [203002, 16060, 10404, 46509, 10693], 0, "default.jpg", 12, "che_190718_eOan", 58, ["hall:dex1", "hall:killrate"]], + ["12·외심장", 68, 10, 91, "che_event_척사", [21042, 20412, 2754, 118718, 9084], 1, "36110cd.jpg?=20180826", 12, "che_190718_eOan", 59, ["hall:tirate"]], + ["12·로비", 10, 68, 92, "che_event_척사", [0, 775, 0, 384, 0], 1, "59b6a1d.jpg?=20180802", 12, "che_190718_eOan", 60, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["12·쟁안하는트롤", 67, 10, 92, "che_event_반계", [4371, 2736, 4412, 9006, 0], 0, "default.jpg", 12, "che_190718_eOan", 61, ["hall:tirate"]], + ["12·시뉴카린해명해", 91, 70, 10, "che_event_위압", [387404, 32960, 26004, 113309, 7305], 1, "25dd670.png?=20190718", 12, "che_190718_eOan", 62, ["hall:dex1", "hall:tlrate"]], + ["12·보스곰", 69, 11, 89, "che_event_신산", [31497, 36831, 5917, 271843, 17167], 1, "398e96e.gif?=20190719", 12, "che_190718_eOan", 64, ["hall:tirate"]], + ["12·김나영", 70, 89, 10, "che_event_징병", [455057, 15416, 39763, 39666, 45299], 1, "aa2d228.jpg?=20190718", 12, "che_190718_eOan", 66, ["hall:dedication", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:killrate", "hall:tprate"]], + ["12·제노에이지", 67, 10, 95, "che_event_집중", [15642, 8539, 7564, 193185, 16806], 1, "ddd1fd7.jpg?=20190320", 12, "che_190718_eOan", 76, ["hall:killrate", "hall:ttrate", "hall:winrate"]], + ["12·노란멍충이", 70, 88, 11, "che_event_격노", [35591, 157802, 965, 27862, 25253], 1, "3666aa6.png?=20190621", 12, "che_190718_eOan", 81, ["hall:dex2", "hall:tprate"]], + ["12·사스케", 92, 10, 10, "che_event_위압", [7623, 3550, 5654, 5813, 430100], 1, "bab8446.jpg?=20190607", 12, "che_190718_eOan", 82, ["hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["12·아침에먹는아욱국", 87, 10, 72, "che_event_반계", [50904, 28941, 28962, 391378, 17309], 0, "default.jpg", 12, "che_190718_eOan", 85, ["hall:tlrate"]], + ["12·뒹굴뒹굴", 70, 10, 84, "che_event_귀병", [33960, 3235, 22837, 184288, 2221], 0, "default.jpg", 12, "che_190718_eOan", 90, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:winrate"]], + ["12·USB", 73, 10, 90, "che_event_환술", [7103, 19575, 7369, 235149, 13518], 1, "ee1c9bb.png?=20190724", 12, "che_190718_eOan", 91, ["hall:firenum", "hall:winrate"]], + ["12·호박고구마", 11, 85, 73, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "ea63404.jpg?=20190719", 12, "che_190718_eOan", 92, ["hall:firenum", "hall:tprate"]], + ["12·스카디", 74, 86, 10, "che_event_견고", [641266, 24147, 31764, 147351, 19158], 1, "112eb1b.jpg?=20190719", 12, "che_190718_eOan", 96, ["chief:6", "hall:dex1", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum"]], + ["12·호무새", 77, 10, 82, "che_event_신산", [52590, 48055, 14950, 441744, 18624], 1, "6cb46de.png?=20190719", 12, "che_190718_eOan", 99, ["chief:5"]], + ["12·아이린", 70, 88, 11, "che_event_견고", [38283, 282325, 11817, 92874, 4907], 1, "8dac73c.jpg?=20180922", 12, "che_190718_eOan", 100, ["hall:dex2", "hall:tprate"]], + ["12·뽀", 71, 10, 91, "che_event_격노", [41282, 41874, 11142, 437907, 19323], 1, "34674f1.jpg?=20190719", 12, "che_190718_eOan", 101, ["hall:firenum", "hall:ttrate"]], + ["12·낙지꿈", 75, 10, 86, "che_event_저격", [62642, 42823, 35801, 500075, 25085], 0, "default.jpg", 12, "che_190718_eOan", 102, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["12·만샘", 71, 10, 88, "che_event_신중", [54581, 47171, 18478, 493039, 12480], 1, "4a206a1.jpg?=20181122", 12, "che_190718_eOan", 105, ["hall:dex4"]], + ["12·광삼이", 77, 10, 81, "che_event_저격", [41662, 26088, 57286, 399158, 22107], 1, "69fc07c.jpg?=20180926", 12, "che_190718_eOan", 108, ["hall:dex3"]], + ["12·늙고병든활쟁이", 74, 83, 10, "che_event_격노", [356225, 38109, 18885, 95317, 21965], 0, "default.jpg", 12, "che_190718_eOan", 122, ["hall:dex1", "hall:tprate"]], + ["12·천괴금", 10, 90, 69, "che_event_저격", [0, 0, 0, 1493, 0], 1, "ae84007.png?=20190806", 12, "che_190718_eOan", 130, ["hall:betgold", "hall:tprate"]], + ["12·태양탄", 78, 80, 11, "che_event_궁병", [36449, 375355, 16129, 56424, 19445], 0, "default.jpg", 12, "che_190718_eOan", 209, ["hall:dex2", "hall:tlrate"]], + ["12·정채연", 73, 83, 10, "che_event_격노", [53425, 367655, 10095, 52426, 9710], 1, "bdf89f5.jpg?=20190722", 12, "che_190718_eOan", 230, ["hall:dex2"]], + ["12·집나간파이", 84, 72, 10, "che_event_척사", [241768, 10221, 30656, 82470, 14006], 1, "f76fa74.jpg?=20190629", 12, "che_190718_eOan", 276, ["hall:dex1", "hall:tlrate"]], + ["12·구경꾼", 67, 79, 12, "che_event_무쌍", [0, 0, 0, 0, 0], 0, "default.jpg", 12, "che_190718_eOan", 381, ["hall:tprate"]], + ["13·연초봄", 69, 83, 10, "che_event_돌격", [21589, 20116, 308862, 61105, 23434], 1, "2bfad16.jpg?=20190815", 13, "che_190815_w0sU", 4, ["chief:11", "hall:dex3", "hall:firenum", "hall:killcrew"]], + ["13·아이린", 70, 85, 11, "che_event_돌격", [14001, 364900, 14622, 67165, 15973], 1, "8dac73c.jpg?=20180922", 13, "che_190815_w0sU", 6, ["hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["13·비스마르크", 68, 85, 11, "che_event_궁병", [22648, 309742, 10454, 46404, 14676], 0, "default.jpg", 13, "che_190815_w0sU", 10, ["hall:dex2", "hall:firenum", "hall:killrate", "hall:tprate"]], + ["13·치ㅋㄹ타", 85, 69, 11, "che_event_돌격", [5750, 37860, 240155, 53294, 21034], 1, "4188f16.jpg?=20190823", 13, "che_190815_w0sU", 14, ["hall:dex3", "hall:tlrate"]], + ["13·오리온자리", 81, 72, 10, "che_event_견고", [30079, 212423, 14163, 41093, 19533], 1, "71c0d1f.jpg?=20190718", 13, "che_190815_w0sU", 15, ["hall:dex2"]], + ["13·호무새", 83, 69, 10, "che_event_척사", [6801, 25260, 287620, 58259, 35925], 1, "3649856.png?=20190815", 13, "che_190815_w0sU", 16, ["hall:dex3", "hall:dex5"]], + ["13·애니", 87, 67, 11, "che_event_위압", [27097, 540228, 16576, 48074, 12900], 1, "78c51c9.jpg?=20190818", 13, "che_190815_w0sU", 18, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["13·배박수양아지", 78, 74, 10, "che_event_견고", [4984, 54145, 210891, 31778, 14156], 1, "d572e5f.jpg?=20190815", 13, "che_190815_w0sU", 19, ["hall:dex2", "hall:tlrate"]], + ["13·샴", 71, 10, 84, "che_event_저격", [21982, 11782, 11700, 173334, 21517], 1, "b3a530b.jpg?=20190813", 13, "che_190815_w0sU", 21, ["hall:tirate"]], + ["13·베이비소울", 82, 73, 10, "che_event_견고", [230121, 7083, 12067, 49111, 24169], 1, "7081d76.jpg?=20190815", 13, "che_190815_w0sU", 28, ["hall:betgold", "hall:dex1", "hall:tlrate"]], + ["13·병리학적자세", 69, 11, 86, "che_event_집중", [20788, 27119, 17218, 430245, 31586], 1, "3679089.jpg?=20180629", 13, "che_190815_w0sU", 32, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["13·얀핀", 77, 79, 10, "che_event_위압", [55131, 362929, 31351, 65031, 24738], 1, "c25ad46.jpg?=20190816", 13, "che_190815_w0sU", 34, ["hall:dedication", "hall:dex1", "hall:dex2", "hall:killcrew", "hall:ttrate", "hall:warnum"]], + ["13·함병선입니다", 85, 10, 71, "che_event_집중", [5299, 8700, 5919, 180926, 42624], 1, "cf49f01.png?=20190815", 13, "che_190815_w0sU", 38, ["hall:dedication", "hall:dex5", "hall:tlrate"]], + ["13·카오스피닉스", 70, 10, 86, "che_event_집중", [18254, 15357, 23458, 244506, 27262], 1, "7f80b2f.jpg?=20190715", 13, "che_190815_w0sU", 39, ["hall:dex4", "hall:dex5", "hall:tirate", "hall:ttrate"]], + ["13·호무새의속마음", 82, 71, 10, "che_event_견고", [285203, 12734, 30117, 54477, 11184], 1, "3afd99b.png?=20190815", 13, "che_190815_w0sU", 42, ["chief:8", "hall:dex1"]], + ["13·카이스트", 79, 11, 70, "che_event_반계", [20038, 14423, 10433, 247657, 18057], 1, "9361ef8.jpg?=20180907", 13, "che_190815_w0sU", 44, ["hall:dex4"]], + ["13·반역의루돌프", 77, 76, 10, "che_event_필살", [126617, 11098, 22934, 45129, 6469], 0, "default.jpg", 13, "che_190815_w0sU", 47, ["hall:dex1"]], + ["13·체리맛농약", 68, 10, 85, "che_event_집중", [9478, 8554, 16493, 186045, 14890], 1, "2dc4058.jpg?=20190816", 13, "che_190815_w0sU", 48, ["hall:killrate"]], + ["13·귀찮", 67, 84, 10, "che_event_척사", [7460, 6455, 238534, 37280, 16915], 0, "default.jpg", 13, "che_190815_w0sU", 50, ["hall:dex3", "hall:tprate"]], + ["13·랜임맨", 74, 10, 82, "che_event_격노", [16402, 19235, 33672, 242417, 23437], 1, "1fc6462.jpg?=20190816", 13, "che_190815_w0sU", 53, ["hall:dex4", "hall:experience"]], + ["13·청기사", 11, 67, 88, "che_event_척사", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 13, "che_190815_w0sU", 55, ["hall:experience", "hall:tirate"]], + ["13·Hide_D", 10, 72, 85, "che_event_격노", [0, 0, 0, 0, 0], 1, "ee5accd.jpg?=20190411", 13, "che_190815_w0sU", 56, ["hall:ttrate"]], + ["13·사스케", 71, 82, 10, "che_event_무쌍", [188505, 9542, 49633, 30420, 13319], 1, "986348a.jpg?=20190815", 13, "che_190815_w0sU", 57, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:firenum", "hall:tprate"]], + ["13·규일", 69, 10, 85, "che_event_귀병", [5417, 13795, 15760, 191640, 11158], 1, "a5022a1.jpg?=20190816", 13, "che_190815_w0sU", 58, ["hall:firenum"]], + ["13·아르르 나쟈", 67, 10, 86, "che_event_척사", [18958, 26620, 11302, 310352, 35137], 1, "fc45711.jpg?=20190813", 13, "che_190815_w0sU", 60, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:warnum"]], + ["13·한동숙", 72, 84, 10, "che_event_저격", [494984, 14486, 34189, 63535, 30610], 1, "4718e6.jpg?=20190814", 13, "che_190815_w0sU", 62, ["chief:10", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["13·충차아님", 87, 41, 35, "che_event_저격", [0, 0, 0, 16136, 181093], 1, "39ab9b2.jpg?=20190819", 13, "che_190815_w0sU", 63, ["hall:dex5", "hall:experience", "hall:killrate", "hall:winrate"]], + ["13·오징어", 72, 83, 10, "che_event_척사", [44553, 271485, 26964, 40191, 24728], 1, "8cab968.png?=20190826", 13, "che_190815_w0sU", 64, ["hall:dedication", "hall:dex2", "hall:firenum", "hall:killcrew", "hall:tprate", "hall:warnum"]], + ["13·이취홍", 68, 86, 10, "che_event_무쌍", [9968, 40597, 308958, 60079, 17264], 1, "f25b1d7.jpg?=20190815", 13, "che_190815_w0sU", 65, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["13·오버이지", 86, 68, 10, "che_event_저격", [6858, 22030, 289872, 35740, 15463], 1, "4a290e4.png?=20190815", 13, "che_190815_w0sU", 66, ["hall:dex3", "hall:tlrate"]], + ["13·제노에이지", 67, 10, 87, "che_event_신산", [6120, 22097, 23220, 142690, 13093], 1, "ddd1fd7.jpg?=20190320", 13, "che_190815_w0sU", 68, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["13·개미호랑이", 73, 10, 83, "che_event_반계", [31732, 21205, 25759, 251836, 17704], 1, "fccc37e.jpg?=20190718", 13, "che_190815_w0sU", 69, ["hall:dex4", "hall:ttrate"]], + ["13·서새봄", 84, 70, 11, "che_event_징병", [11401, 62444, 368968, 66871, 27382], 1, "b5add3a.jpg?=20190815", 13, "che_190815_w0sU", 71, ["chief:12", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["13·강찬밥", 70, 83, 10, "che_event_위압", [247009, 13139, 44297, 49940, 6243], 1, "4b9e4bf.jpg?=20190815", 13, "che_190815_w0sU", 72, ["hall:dex1", "hall:winrate"]], + ["13·n아텐 누", 83, 67, 11, "che_event_척사", [6634, 26831, 250642, 48396, 19348], 1, "862bd8e.gif?=20181028", 13, "che_190815_w0sU", 73, ["hall:dex3", "hall:killnum", "hall:tlrate", "hall:winrate"]], + ["13·슬라임", 82, 71, 11, "che_event_필살", [216026, 23994, 60126, 45284, 24173], 1, "b1c4193.jpg?=20190815", 13, "che_190815_w0sU", 75, ["hall:dex1", "hall:tlrate"]], + ["13·로리", 81, 11, 71, "che_event_필살", [20555, 11529, 13800, 237232, 20171], 1, "1ec690f.jpg?=20190720", 13, "che_190815_w0sU", 76, ["hall:tlrate"]], + ["13·달이차오른다", 81, 70, 12, "che_event_의술", [11268, 167974, 11018, 24398, 15801], 0, "default.jpg", 13, "che_190815_w0sU", 77, ["hall:dex2", "hall:tlrate"]], + ["13·아오바", 68, 10, 86, "che_event_저격", [21221, 8291, 20955, 293615, 25369], 1, "3651a80.jpg?=20190815", 13, "che_190815_w0sU", 80, ["chief:5", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:tirate"]], + ["13·토템", 10, 67, 85, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 13, "che_190815_w0sU", 81, ["hall:firenum"]], + ["13·KZ Deft", 71, 10, 83, "che_event_환술", [12191, 42044, 7441, 266477, 26508], 1, "c0c766b.jpg?=20190815", 13, "che_190815_w0sU", 82, ["chief:9", "hall:dex4", "hall:killnum", "hall:winrate"]], + ["13·유닠주세요", 69, 84, 10, "che_event_보병", [284593, 13309, 24316, 53190, 15918], 0, "default.jpg", 13, "che_190815_w0sU", 84, ["hall:dex1", "hall:killrate"]], + ["13·외심장", 67, 10, 88, "che_event_궁병", [35429, 27914, 21938, 176344, 3636], 1, "36110cd.jpg?=20180826", 13, "che_190815_w0sU", 86, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["13·두나", 67, 11, 85, "che_event_신중", [3338, 10440, 5605, 52674, 10770], 1, "bf0c572.png?=20181114", 13, "che_190815_w0sU", 89, ["hall:firenum"]], + ["13·스타킹", 76, 78, 10, "che_event_기병", [6083, 38681, 215713, 55303, 18230], 1, "c995144.png?=20190815", 13, "che_190815_w0sU", 90, ["hall:dex3"]], + ["13·제르피스", 10, 66, 88, "che_event_귀병", [0, 0, 0, 0, 0], 1, "e49293b.jpg?=20190813", 13, "che_190815_w0sU", 96, ["hall:tirate", "hall:ttrate"]], + ["13·템", 69, 11, 83, "che_event_신산", [23431, 14671, 35115, 270986, 3503], 0, "default.jpg", 13, "che_190815_w0sU", 102, ["hall:dex4", "hall:firenum"]], + ["13·견자희", 69, 85, 10, "che_event_격노", [14079, 16931, 358285, 59450, 26994], 1, "316e4e2.jpg?=20190815", 13, "che_190815_w0sU", 105, ["chief:6", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["13·장손신희", 69, 10, 86, "che_event_귀병", [10741, 10967, 22591, 126547, 6602], 1, "e7a5bde.jpg?=20190329", 13, "che_190815_w0sU", 114, ["hall:tirate"]], + ["13·니케", 68, 10, 86, "che_event_귀병", [0, 7275, 26040, 107223, 11850], 1, "fb7addd.jpg?=20190816", 13, "che_190815_w0sU", 119, ["hall:tirate"]], + ["13·민트토끼", 68, 11, 86, "che_event_저격", [6148, 35368, 11119, 285649, 49994], 1, "85cdfc4.gif?=20190816", 13, "che_190815_w0sU", 128, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killrate"]], + ["13·묘", 68, 81, 11, "che_event_무쌍", [10448, 9412, 132952, 45874, 1649], 0, "default.jpg", 13, "che_190815_w0sU", 147, ["hall:tprate"]], + ["13·천통해서출세한삐약", 67, 84, 10, "che_event_필살", [7618, 17067, 67890, 13685, 2335], 1, "419b281.png?=20190816", 13, "che_190815_w0sU", 148, ["hall:tprate"]], + ["13·멍", 10, 78, 76, "che_event_견고", [0, 0, 0, 0, 0], 1, "5cedbb3.jpg?=20190817", 13, "che_190815_w0sU", 154, ["hall:firenum", "hall:ttrate"]], + ["13·천괴금", 12, 86, 67, "che_event_궁병", [3405, 48495, 5513, 19376, 0], 1, "2b239af.png?=20190824", 13, "che_190815_w0sU", 165, ["chief:7", "hall:dex2", "hall:firenum", "hall:tprate"]], + ["13·제갈대두", 52, 27, 84, "che_event_저격", [0, 8892, 8386, 23573, 0], 1, "6844ae1.jpg?=20190818", 13, "che_190815_w0sU", 192, ["hall:betgold", "hall:dedication"]], + ["13·시즈", 11, 66, 87, "che_event_격노", [0, 0, 0, 0, 0], 0, "default.jpg", 13, "che_190815_w0sU", 257, ["hall:dedication"]], + ["13·냐옹냐옹", 69, 10, 83, "che_event_귀병", [1027, 0, 23719, 35658, 0], 0, "default.jpg", 13, "che_190815_w0sU", 308, ["hall:ttrate"]], + ["13·망나뇽", 81, 69, 10, "che_event_척사", [113772, 16450, 22026, 32283, 393], 1, "d879a26.png?=20190427", 13, "che_190815_w0sU", 362, ["hall:dex1"]], + ["14·Hide_D", 10, 72, 85, "che_event_귀병", [0, 0, 0, 0, 0], 1, "ee5accd.jpg?=20190411", 14, "che_190905_K2XR", 3, ["hall:ttrate"]], + ["14·제노에이지", 71, 10, 87, "che_event_반계", [57722, 61231, 21598, 406558, 18736], 1, "ddd1fd7.jpg?=20190320", 14, "che_190905_K2XR", 4, ["hall:dex2", "hall:dex4", "hall:tirate", "hall:warnum"]], + ["14·연채홍", 69, 11, 85, "che_event_징병", [32359, 36578, 16365, 464843, 37703], 1, "a12d463.jpg?=20190905", 14, "che_190905_K2XR", 5, ["chief:5", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum"]], + ["14·천괴금", 85, 68, 10, "che_event_필살", [129422, 18357, 255904, 93132, 41365], 1, "2b239af.png?=20190824", 14, "che_190905_K2XR", 10, ["chief:10", "hall:dex1", "hall:dex3", "hall:dex5", "hall:firenum", "hall:tlrate"]], + ["14·카오스피닉스", 70, 11, 85, "che_event_척사", [30585, 25093, 31441, 275734, 21548], 1, "7f80b2f.jpg?=20190715", 14, "che_190905_K2XR", 12, ["hall:ttrate"]], + ["14·아메스", 71, 11, 84, "che_event_필살", [49869, 25555, 17450, 495585, 43482], 1, "a889885.jpg?=20190905", 14, "che_190905_K2XR", 13, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum"]], + ["14·지장", 69, 10, 85, "che_event_귀병", [26425, 20784, 16703, 119589, 4307], 0, "default.jpg", 14, "che_190905_K2XR", 14, ["hall:firenum"]], + ["14·김나영", 70, 85, 10, "che_event_필살", [15203, 18707, 202373, 61922, 9885], 1, "c90a3d4.jpg?=20190905", 14, "che_190905_K2XR", 18, ["hall:dex3", "hall:tprate"]], + ["14·화신주유", 71, 86, 10, "che_event_징병", [31448, 73215, 480282, 116607, 41044], 1, "15d60d3.jpg?=20190902", 14, "che_190905_K2XR", 19, ["hall:betgold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["14·오리온자리", 83, 10, 74, "che_event_징병", [47618, 57455, 63919, 394671, 22354], 1, "71c0d1f.jpg?=20190718", 14, "che_190905_K2XR", 22, ["hall:dex3", "hall:dex4", "hall:tlrate", "hall:warnum"]], + ["14·료우기시키", 69, 10, 84, "che_event_집중", [19398, 32547, 17222, 297079, 6760], 1, "559083f.jpg?=20190905", 14, "che_190905_K2XR", 25, ["hall:tirate"]], + ["14·프로젝트애쉬", 70, 85, 10, "che_event_저격", [52526, 350916, 13632, 97413, 19280], 1, "84923d1.jpg?=20190905", 14, "che_190905_K2XR", 26, ["hall:dex2", "hall:tprate"]], + ["14·치약토끼", 71, 84, 10, "che_event_격노", [53358, 396148, 9361, 60086, 45003], 1, "6227d22.jpg?=20190905", 14, "che_190905_K2XR", 30, ["chief:8", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:killrate", "hall:tprate", "hall:winrate"]], + ["14·ㅇㄷ", 69, 86, 10, "che_event_필살", [24924, 29465, 467317, 91384, 34258], 0, "default.jpg", 14, "che_190905_K2XR", 31, ["chief:6", "hall:dex3", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate"]], + ["14·째깐둥이", 81, 10, 72, "che_event_징병", [18501, 11115, 4928, 191235, 10681], 1, "f8d36e2.png?=20190912", 14, "che_190905_K2XR", 32, ["hall:tlrate"]], + ["14·두나", 67, 10, 86, "che_event_척사", [0, 0, 0, 0, 0], 1, "bf0c572.png?=20181114", 14, "che_190905_K2XR", 34, ["hall:tirate"]], + ["14·Satan", 71, 82, 10, "che_event_징병", [9665, 10441, 204323, 92751, 5284], 1, "eaa25e5.png?=20190910", 14, "che_190905_K2XR", 35, ["hall:dex3"]], + ["14·청기사", 10, 66, 90, "che_event_귀병", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 14, "che_190905_K2XR", 37, ["hall:tirate", "hall:ttrate"]], + ["14·보스곰", 69, 12, 84, "che_event_신중", [20892, 20619, 11898, 373761, 36358], 1, "773556e.gif?=20190822", 14, "che_190905_K2XR", 38, ["chief:7", "hall:dedication", "hall:dex4", "hall:dex5"]], + ["14·우주대스타나나양", 80, 76, 11, "che_event_저격", [537361, 32295, 74636, 120363, 28821], 1, "106e0d2.jpg?=20190918", 14, "che_190905_K2XR", 39, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["14·메로나광팬486번", 70, 85, 10, "che_event_위압", [46820, 276167, 11080, 56776, 18037], 0, "default.jpg", 14, "che_190905_K2XR", 40, ["hall:dex2", "hall:tprate"]], + ["14·구미호", 86, 67, 10, "che_event_무쌍", [0, 0, 17413, 6313, 207000], 1, "8bb1f0e.gif?=20190920", 14, "che_190905_K2XR", 41, ["hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate", "hall:ttrate"]], + ["14·삼겹살", 69, 12, 84, "che_event_필살", [29349, 28857, 27566, 493233, 29115], 0, "default.jpg", 14, "che_190905_K2XR", 43, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:winrate"]], + ["14·평민킬러", 71, 85, 10, "che_event_징병", [466787, 17528, 56192, 82285, 38700], 1, "fb23a32.jpg?=20190904", 14, "che_190905_K2XR", 46, ["chief:11", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:winrate"]], + ["14·장손신희", 11, 68, 86, "che_event_귀병", [0, 0, 0, 0, 0], 1, "e7a5bde.jpg?=20190329", 14, "che_190905_K2XR", 47, ["hall:dedication"]], + ["14·스오우", 72, 10, 85, "che_event_신산", [50435, 28816, 32335, 457562, 22442], 1, "828a91e.jpg?=20190904", 14, "che_190905_K2XR", 48, ["hall:dex4", "hall:experience", "hall:killcrew"]], + ["14·룬레이", 86, 66, 11, "che_event_저격", [48674, 308432, 13523, 95716, 14939], 1, "bd6cc98.png?=20190905", 14, "che_190905_K2XR", 49, ["hall:dex2", "hall:tlrate"]], + ["14·모가미 시즈카", 87, 67, 10, "che_event_무쌍", [615372, 54021, 69462, 78953, 21642], 1, "5106f38.jpg?=20190905", 14, "che_190905_K2XR", 50, ["hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["14·멘헤라쨩", 11, 66, 88, "che_event_반계", [0, 0, 0, 0, 0], 1, "9e75693.gif?=20190908", 14, "che_190905_K2XR", 53, ["hall:dedication"]], + ["14·ⓢ노예장8", 12, 67, 85, "che_event_귀병", [0, 0, 0, 0, 0], 0, "default.jpg", 14, "che_190905_K2XR", 54, ["hall:tirate"]], + ["14·짹짹이", 71, 11, 85, "che_event_반계", [34498, 32833, 41851, 437972, 20612], 1, "4cabf8f.png?=20190905", 14, "che_190905_K2XR", 56, ["hall:dex4", "hall:killnum", "hall:winrate"]], + ["14·킹구없이는못살아", 83, 71, 10, "che_event_척사", [71050, 389547, 13480, 84486, 24910], 1, "fb3c625.gif?=20190428", 14, "che_190905_K2XR", 57, ["hall:dex1", "hall:dex2", "hall:warnum"]], + ["14·임사영", 70, 10, 86, "che_event_환술", [28175, 38878, 20033, 416721, 31091], 1, "d5dc381.gif?=20190719", 14, "che_190905_K2XR", 60, ["chief:12", "hall:dex4", "hall:experience", "hall:tirate", "hall:ttrate"]], + ["14·베이비소울", 81, 74, 10, "che_event_돌격", [232065, 13137, 19322, 48172, 19217], 1, "7081d76.jpg?=20190815", 14, "che_190905_K2XR", 62, ["hall:dex1", "hall:tlrate"]], + ["14·륜", 68, 11, 86, "che_event_귀병", [9362, 30131, 3853, 172499, 902], 1, "6561977.jpg?=20190904", 14, "che_190905_K2XR", 63, ["hall:winrate"]], + ["14·KZ Deft", 81, 72, 10, "che_event_견고", [165500, 2408, 18711, 58319, 9120], 1, "c0c766b.jpg?=20190815", 14, "che_190905_K2XR", 65, ["hall:dex1", "hall:tlrate"]], + ["14·페르난도", 70, 84, 10, "che_event_징병", [198412, 9954, 38902, 59777, 10115], 0, "default.jpg", 14, "che_190905_K2XR", 66, ["hall:dedication", "hall:dex1", "hall:tprate"]], + ["14·메디브", 83, 75, 10, "che_event_의술", [27646, 49106, 449314, 53533, 18439], 1, "def2895.jpg?=20190719", 14, "che_190905_K2XR", 69, ["hall:dex3", "hall:warnum"]], + ["14·Myo", 70, 82, 10, "che_event_의술", [8903, 132955, 0, 22766, 18222], 1, "7072487.jpg?=20190905", 14, "che_190905_K2XR", 70, ["hall:dex2", "hall:tprate"]], + ["14·날떠나가지말아요", 67, 10, 86, "che_event_집중", [10291, 16394, 25056, 280012, 17274], 0, "default.jpg", 14, "che_190905_K2XR", 71, ["hall:tirate"]], + ["14·엔야스", 58, 23, 86, "che_event_집중", [34502, 38573, 20294, 274472, 7465], 0, "default.jpg", 14, "che_190905_K2XR", 73, ["hall:ttrate"]], + ["14·나루호도", 79, 76, 10, "che_event_저격", [225616, 13935, 20803, 72916, 9349], 1, "e9b556b.png?=20190905", 14, "che_190905_K2XR", 74, ["hall:dex1", "hall:firenum"]], + ["14·개미호랑이", 70, 10, 84, "che_event_필살", [13639, 16468, 44999, 337391, 63892], 1, "fccc37e.jpg?=20190718", 14, "che_190905_K2XR", 78, ["hall:dex5", "hall:winrate"]], + ["14·아리냥냥", 10, 66, 89, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 14, "che_190905_K2XR", 80, ["hall:dedication", "hall:tirate"]], + ["14·톡없음", 72, 11, 82, "che_event_집중", [43225, 22229, 47813, 368082, 17573], 0, "default.jpg", 14, "che_190905_K2XR", 83, ["hall:firenum"]], + ["14·라피스라쥴리", 71, 10, 85, "che_event_환술", [16954, 4260, 14882, 147116, 18215], 0, "default.jpg", 14, "che_190905_K2XR", 84, ["hall:dedication"]], + ["14·로또", 73, 82, 10, "che_event_징병", [362999, 29258, 44191, 150706, 15492], 1, "db84779.jpg?=20190906", 14, "che_190905_K2XR", 88, ["hall:dex1", "hall:firenum", "hall:warnum"]], + ["14·로리", 72, 11, 84, "che_event_집중", [45950, 43822, 39507, 685740, 32444], 1, "e1e175f.jpg?=20190921", 14, "che_190905_K2XR", 93, ["hall:betgold", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["14·미니미니쿠키", 81, 10, 74, "che_event_필살", [24115, 5118, 20145, 229329, 16423], 0, "default.jpg", 14, "che_190905_K2XR", 96, ["hall:tlrate"]], + ["14·닥터유", 76, 77, 10, "che_event_견고", [14182, 350375, 14952, 85605, 20607], 1, "6b371ec.jpg?=20190909", 14, "che_190905_K2XR", 97, ["hall:dex2", "hall:killrate"]], + ["14·멍", 13, 76, 75, "che_event_필살", [0, 0, 0, 0, 0], 1, "5cedbb3.jpg?=20190817", 14, "che_190905_K2XR", 98, ["hall:firenum"]], + ["14·밀리언라이브", 81, 71, 10, "che_event_돌격", [17600, 20272, 270284, 102876, 8527], 0, "default.jpg", 14, "che_190905_K2XR", 101, ["hall:dex3", "hall:ttrate"]], + ["14·언제 오픈했지", 11, 84, 67, "che_event_공성", [0, 0, 0, 0, 0], 0, "default.jpg", 14, "che_190905_K2XR", 103, ["hall:firenum"]], + ["14·호랑나비", 10, 81, 72, "che_event_위압", [0, 0, 0, 0, 0], 1, "3b4b682.gif?=20190912", 14, "che_190905_K2XR", 104, ["hall:tprate", "hall:ttrate"]], + ["14·사스케", 89, 10, 10, "che_event_격노", [3241, 5953, 5711, 13410, 306554], 1, "986348a.jpg?=20190815", 14, "che_190905_K2XR", 105, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["14·쀼웃", 10, 69, 83, "che_event_환술", [905, 0, 0, 234, 0], 1, "8996332.jpg?=20190315", 14, "che_190905_K2XR", 107, ["hall:firenum", "hall:tirate"]], + ["14·돌아온파이", 71, 81, 10, "che_event_견고", [45066, 155344, 2405, 20122, 22247], 1, "f76fa74.jpg?=20190629", 14, "che_190905_K2XR", 119, ["hall:dex2"]], + ["14·땅땅이", 67, 10, 83, "che_event_저격", [22215, 12003, 21145, 153493, 1780], 1, "99cd27f.gif?=20190606", 14, "che_190905_K2XR", 275, ["hall:tirate"]], + ["14·도추", 10, 79, 68, "che_event_돌격", [0, 0, 0, 0, 0], 0, "default.jpg", 14, "che_190905_K2XR", 356, ["hall:firenum"]], + ["16·크람푸스", 69, 10, 87, "che_event_신중", [1, 7058, 5433, 182682, 24958], 1, "8eb225b.gif?=20191104", 16, "che_191024_SS4T", 3, ["hall:dedication", "hall:dex2", "hall:dex3", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["16·미코토", 71, 11, 81, "che_event_척사", [0, 0, 0, 22509, 4827], 1, "7aaf670.jpg?=20191024", 16, "che_191024_SS4T", 8, ["hall:tlrate", "hall:ttrate"]], + ["16·청기사", 11, 67, 89, "che_event_반계", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 16, "che_191024_SS4T", 9, ["hall:dedication", "hall:experience"]], + ["16·보라색맛났어", 10, 71, 83, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 16, "che_191024_SS4T", 13, ["hall:tprate"]], + ["16·병리학적자세", 67, 10, 90, "che_event_집중", [6833, 3988, 0, 92463, 20098], 1, "3679089.jpg?=20180629", 16, "che_191024_SS4T", 16, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:killnum", "hall:tirate", "hall:winrate"]], + ["16·메디이이브", 82, 74, 10, "che_event_필살", [0, 65754, 6260, 8784, 11492], 1, "def2895.jpg?=20190719", 16, "che_191024_SS4T", 18, ["hall:dex2", "hall:dex3", "hall:tlrate"]], + ["16·Navy마초", 68, 87, 10, "che_event_무쌍", [318, 153674, 0, 8703, 36201], 0, "default.jpg", 16, "che_191024_SS4T", 19, ["chief:8", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum"]], + ["16·Hide_D", 10, 81, 73, "che_event_척사", [0, 0, 0, 0, 0], 1, "ee5accd.jpg?=20190411", 16, "che_191024_SS4T", 20, ["hall:tprate"]], + ["16·네이미", 79, 69, 10, "che_event_필살", [46452, 6257, 0, 10802, 10878], 1, "b5f2acf.png?=20191024", 16, "che_191024_SS4T", 24, ["hall:dex1", "hall:tlrate"]], + ["16·로리", 69, 10, 87, "che_event_저격", [452, 6693, 3634, 222854, 41580], 1, "50794a6.jpg?=20190923", 16, "che_191024_SS4T", 26, ["chief:12", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["16·킹구없이는못살아", 80, 73, 10, "che_event_견고", [6076, 69405, 0, 0, 17341], 1, "fb3c625.gif?=20190428", 16, "che_191024_SS4T", 27, ["hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["16·땅땅이", 67, 11, 87, "che_event_집중", [4695, 9101, 4197, 103974, 16629], 1, "99cd27f.gif?=20190606", 16, "che_191024_SS4T", 29, ["hall:dex2", "hall:dex3", "hall:dex4", "hall:tirate"]], + ["16·멘헤라짱", 80, 75, 10, "che_event_격노", [137417, 4251, 6085, 6924, 39388], 1, "9e75693.gif?=20190908", 16, "che_191024_SS4T", 30, ["chief:10", "hall:dedication", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["16·료우기시키", 82, 74, 11, "che_event_무쌍", [147053, 1652, 2956, 15505, 21748], 1, "559083f.jpg?=20190905", 16, "che_191024_SS4T", 32, ["hall:dex1", "hall:killcrew", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["16·낙지꾸미", 70, 10, 83, "che_event_필살", [0, 6343, 0, 108740, 24196], 0, "default.jpg", 16, "che_191024_SS4T", 33, ["chief:7", "hall:dex4", "hall:experience", "hall:firenum", "hall:killnum", "hall:killrate", "hall:winrate"]], + ["16·늙고병든활쟁이", 69, 10, 85, "che_event_신중", [0, 0, 0, 35981, 27222], 0, "default.jpg", 16, "che_191024_SS4T", 34, ["hall:dex5"]], + ["16·펭삼이", 76, 10, 77, "che_event_징병", [0, 0, 0, 45385, 16345], 1, "8151605.jpg?=20191024", 16, "che_191024_SS4T", 35, ["hall:tlrate"]], + ["16·카이스트", 67, 12, 88, "che_event_집중", [0, 8331, 3443, 112322, 23572], 1, "9361ef8.jpg?=20180907", 16, "che_191024_SS4T", 36, ["hall:dex2", "hall:dex4"]], + ["16·ㅁ", 70, 10, 85, "che_event_반계", [7115, 9864, 0, 172143, 35724], 1, "1f8b859.gif?=20191022", 16, "che_191024_SS4T", 38, ["chief:11", "hall:dex1", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["16·제노에이지", 69, 10, 87, "che_event_척사", [16571, 5402, 7313, 130992, 30501], 1, "ddd1fd7.jpg?=20190320", 16, "che_191024_SS4T", 39, ["chief:5", "hall:dex1", "hall:dex3", "hall:dex4", "hall:dex5", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["16·평민킬러", 69, 86, 10, "che_event_무쌍", [210597, 4618, 15688, 13134, 28916], 1, "fb23a32.jpg?=20190904", 16, "che_191024_SS4T", 40, ["hall:dedication", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["16·외심장", 67, 10, 88, "che_event_환술", [3948, 0, 2058, 109005, 25085], 1, "36110cd.jpg?=20180826", 16, "che_191024_SS4T", 41, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:tirate"]], + ["16·카오스피닉스", 69, 10, 87, "che_event_신중", [2923, 0, 1143, 102034, 48779], 1, "7f80b2f.jpg?=20190715", 16, "che_191024_SS4T", 42, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:ttrate"]], + ["16·엔틱", 67, 10, 88, "che_event_의술", [0, 0, 1780, 73044, 18219], 1, "2dc4058.jpg?=20190816", 16, "che_191024_SS4T", 45, ["hall:tirate"]], + ["16·개미호랑이", 70, 10, 86, "che_event_환술", [6243, 5774, 6185, 119857, 71213], 1, "fccc37e.jpg?=20190718", 16, "che_191024_SS4T", 47, ["chief:9", "hall:dedication", "hall:dex3", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killrate", "hall:ttrate", "hall:warnum"]], + ["16·마왕", 68, 10, 87, "che_event_징병", [8012, 6492, 0, 19728, 2463], 1, "eaa25e5.png?=20190910", 16, "che_191024_SS4T", 51, ["hall:dex1", "hall:tirate", "hall:ttrate"]], + ["16·김나영", 10, 67, 89, "che_event_반계", [0, 0, 0, 0, 0], 1, "c90a3d4.jpg?=20190905", 16, "che_191024_SS4T", 52, ["hall:dedication", "hall:tirate"]], + ["16·아무말이나들어줌", 76, 79, 12, "che_event_기병", [242, 10369, 105455, 6820, 16329], 1, "df7a778.jpg?=20191024", 16, "che_191024_SS4T", 54, ["hall:dex2", "hall:dex3", "hall:experience", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:tprate", "hall:ttrate", "hall:winrate"]], + ["16·내선순환열차", 10, 81, 72, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 16, "che_191024_SS4T", 57, ["hall:firenum", "hall:tprate"]], + ["16·극대노초홍", 68, 10, 89, "che_event_귀병", [4065, 7900, 343, 127230, 16640], 1, "82a5a70.jpg?=20191024", 16, "che_191024_SS4T", 59, ["hall:betgold", "hall:dex2", "hall:dex4", "hall:tirate", "hall:warnum"]], + ["16·이건 모구전때문임", 11, 82, 69, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 16, "che_191024_SS4T", 60, ["hall:firenum", "hall:tprate"]], + ["16·짜왕", 73, 79, 10, "che_event_보병", [16983, 0, 0, 2013, 4415], 0, "default.jpg", 16, "che_191024_SS4T", 62, ["hall:dex1", "hall:firenum", "hall:tprate"]], + ["16·륜", 10, 68, 86, "che_event_필살", [0, 0, 0, 0, 0], 1, "6561977.jpg?=20190904", 16, "che_191024_SS4T", 64, ["hall:tirate", "hall:ttrate"]], + ["16·샤를 드 골", 80, 10, 76, "che_event_환술", [6589, 5329, 4012, 96905, 17209], 1, "1386e61.jpg?=20191025", 16, "che_191024_SS4T", 74, ["hall:dex3", "hall:firenum", "hall:killnum", "hall:tlrate", "hall:winrate"]], + ["16·ㅇㄷㄷㄷ", 71, 82, 10, "che_event_척사", [59818, 0, 0, 0, 23146], 0, "default.jpg", 16, "che_191024_SS4T", 75, ["hall:dex1", "hall:killrate", "hall:tlrate", "hall:tprate", "hall:winrate"]], + ["16·도추", 69, 11, 86, "che_event_척사", [3633, 4286, 3315, 67478, 18996], 0, "default.jpg", 16, "che_191024_SS4T", 93, ["hall:ttrate"]], + ["16·정채연", 67, 85, 10, "che_event_척사", [8858, 95151, 4068, 7657, 12249], 1, "9705097.jpg?=20191001", 16, "che_191024_SS4T", 115, ["chief:6", "hall:dex1", "hall:dex2", "hall:dex3", "hall:firenum", "hall:tprate", "hall:winrate"]], + ["17·시그", 72, 84, 10, "che_event_격노", [361479, 3309, 49312, 40914, 46558], 1, "e397de6.jpg?=20191120", 17, "che_191121_gduK", 4, ["chief:11", "hall:dedication", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["17·Hide_D", 11, 69, 84, "che_event_귀병", [572, 587, 12873, 45394, 6709], 1, "ee5accd.jpg?=20190411", 17, "che_191121_gduK", 5, ["chief:12", "hall:dedication", "hall:experience", "hall:killrate", "hall:tirate"]], + ["17·로리", 71, 10, 83, "che_event_집중", [17727, 7383, 24982, 317077, 34807], 1, "50794a6.jpg?=20190923", 17, "che_191121_gduK", 7, ["chief:7", "hall:dedication", "hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:winrate"]], + ["17·카이스트", 70, 10, 83, "che_event_징병", [29383, 31445, 41054, 455449, 40166], 1, "9361ef8.jpg?=20180907", 17, "che_191121_gduK", 8, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["17·토미에", 69, 10, 82, "che_event_격노", [0, 15001, 28747, 179707, 5613], 1, "f4cbfb3.jpg?=20191112", 17, "che_191121_gduK", 9, ["hall:dex4", "hall:tirate", "hall:tlrate", "hall:winrate"]], + ["17·후와 효카", 10, 69, 84, "che_event_척사", [0, 0, 0, 0, 0], 1, "7d4ce13.jpg?=20191121", 17, "che_191121_gduK", 10, ["chief:5", "hall:dedication"]], + ["17·병리학적자세", 69, 10, 83, "che_event_반계", [34669, 26393, 44197, 444149, 38031], 1, "3679089.jpg?=20180629", 17, "che_191121_gduK", 12, ["hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:warnum"]], + ["17·오포이스", 70, 82, 10, "che_event_필살", [14949, 560068, 24674, 43531, 38159], 1, "c112237.jpg?=20191201", 17, "che_191121_gduK", 13, ["hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["17·평민킬러", 68, 85, 10, "che_event_징병", [234601, 84, 46727, 48450, 25516], 1, "fb23a32.jpg?=20190904", 17, "che_191121_gduK", 14, ["chief:8", "hall:dedication", "hall:dex1", "hall:dex3", "hall:experience", "hall:killnum", "hall:tprate", "hall:ttrate"]], + ["17·기체", 68, 10, 86, "che_event_격노", [0, 2846, 4353, 63474, 14121], 0, "default.jpg", 17, "che_191121_gduK", 16, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:tirate", "hall:ttrate"]], + ["17·모모냥", 11, 69, 83, "che_event_척사", [0, 0, 0, 0, 0], 1, "a309e5f.gif?=20191121", 17, "che_191121_gduK", 21, ["hall:tprate"]], + ["17·외심장", 68, 11, 81, "che_event_저격", [0, 16392, 17309, 143792, 18492], 1, "36110cd.jpg?=20180826", 17, "che_191121_gduK", 22, ["hall:dex4", "hall:tirate"]], + ["17·박일아", 71, 10, 84, "che_event_신산", [27111, 30262, 68620, 549278, 28962], 1, "8608979.gif?=20191024", 17, "che_191121_gduK", 23, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["17·강희정", 69, 10, 80, "che_event_필살", [5176, 3177, 13554, 96984, 6566], 0, "default.jpg", 17, "che_191121_gduK", 24, ["hall:winrate"]], + ["17·땅땅이", 81, 72, 10, "che_event_격노", [9308, 62309, 265274, 77751, 20948], 1, "99cd27f.gif?=20190606", 17, "che_191121_gduK", 26, ["hall:dex2", "hall:dex3", "hall:tlrate", "hall:tprate", "hall:ttrate"]], + ["17·개미호랑이", 69, 10, 83, "che_event_격노", [13306, 10700, 19979, 153411, 94562], 1, "fccc37e.jpg?=20190718", 17, "che_191121_gduK", 27, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:killrate", "hall:winrate"]], + ["17·료우기시키", 83, 70, 10, "che_event_징병", [23231, 264555, 25084, 67976, 30971], 1, "559083f.jpg?=20190905", 17, "che_191121_gduK", 28, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:tprate", "hall:ttrate", "hall:warnum"]], + ["17·테러범A", 71, 83, 10, "che_event_돌격", [5207, 31776, 380523, 65349, 40883], 1, "85ec285.jpg?=20191121", 17, "che_191121_gduK", 30, ["chief:10", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["17·카오스피닉스", 68, 10, 85, "che_event_격노", [7023, 5005, 37197, 305666, 40237], 1, "7f80b2f.jpg?=20190715", 17, "che_191121_gduK", 31, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:tirate", "hall:winrate"]], + ["17·보스곰", 70, 11, 82, "che_event_집중", [18515, 19364, 6689, 182243, 8353], 1, "773556e.gif?=20190822", 17, "che_191121_gduK", 32, ["hall:dex1", "hall:dex4", "hall:tirate", "hall:tlrate"]], + ["17·아무생각이없다", 82, 71, 11, "che_event_저격", [77665, 534847, 42515, 88850, 83144], 1, "b205386.png?=20191121", 17, "che_191121_gduK", 33, ["chief:6", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:tprate", "hall:ttrate", "hall:warnum"]], + ["17·정채연", 69, 10, 82, "che_event_집중", [6033, 5938, 4945, 99986, 2771], 1, "9705097.jpg?=20191001", 17, "che_191121_gduK", 34, ["hall:dex4", "hall:tlrate"]], + ["17·보부상", 83, 70, 10, "che_event_저격", [13971, 53677, 255336, 78844, 8343], 0, "default.jpg", 17, "che_191121_gduK", 39, ["hall:dex2", "hall:dex3", "hall:experience", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["17·Navy마초", 71, 82, 10, "che_event_무쌍", [57935, 62932, 192921, 78948, 3194], 0, "default.jpg", 17, "che_191121_gduK", 52, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:tprate", "hall:warnum"]], + ["17·for kakao", 10, 70, 73, "che_event_귀병", [0, 0, 0, 0, 0], 1, "39026ec.png?=20191123", 17, "che_191121_gduK", 69, ["hall:tprate"]], + ["17·이초홍", 10, 71, 79, "che_event_환술", [0, 0, 0, 0, 0], 1, "ce2a633.jpg?=20191126", 17, "che_191121_gduK", 111, ["hall:dedication"]], + ["17·뺙제차냥차냥", 72, 76, 10, "che_event_척사", [0, 0, 0, 0, 0], 1, "1b8a3df.jpg?=20190620", 17, "che_191121_gduK", 225, ["hall:tlrate"]], + ["18·우웅...", 73, 10, 87, "che_event_척사", [42145, 49425, 75640, 748505, 70358], 1, "3fb3ee0.jpg?=20191211", 18, "che_191212_tf0O", 4, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["18·카이스트", 72, 10, 88, "che_event_징병", [68073, 97291, 35977, 759031, 59509], 1, "9361ef8.jpg?=20180907", 18, "che_191212_tf0O", 12, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["18·모모냥", 10, 76, 84, "che_event_집중", [0, 0, 0, 0, 0], 1, "a309e5f.gif?=20191121", 18, "che_191212_tf0O", 15, ["hall:tprate"]], + ["18·Anna", 72, 11, 88, "che_event_신산", [37553, 45612, 50708, 689014, 45414], 1, "7ad20e3.jpg?=20191212", 18, "che_191212_tf0O", 16, ["hall:dex1", "hall:dex4", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["18·평민킬러", 73, 85, 10, "che_event_무쌍", [648896, 16172, 105798, 108806, 39869], 1, "fb23a32.jpg?=20190904", 18, "che_191212_tf0O", 18, ["hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:tlrate", "hall:tprate", "hall:winrate"]], + ["18·사스케", 71, 10, 84, "che_event_격노", [16574, 13483, 11953, 159780, 23209], 1, "986348a.jpg?=20190815", 18, "che_191212_tf0O", 19, ["hall:tirate"]], + ["18·박일아", 75, 87, 10, "che_event_무쌍", [28858, 116303, 1138468, 138739, 50122], 1, "8608979.gif?=20191024", 18, "che_191212_tf0O", 21, ["hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["18·보스곰", 72, 10, 86, "che_event_신중", [34109, 44140, 26164, 459541, 20593], 1, "773556e.gif?=20190822", 18, "che_191212_tf0O", 23, ["hall:dex4", "hall:tirate"]], + ["18·임사영", 69, 10, 85, "che_event_환술", [10512, 10675, 19954, 167913, 6599], 1, "d5dc381.gif?=20190719", 18, "che_191212_tf0O", 24, ["hall:tirate"]], + ["18·기절중...zzZ", 91, 11, 10, "che_event_돌격", [0, 0, 17379, 15434, 394838], 0, "default.jpg", 18, "che_191212_tf0O", 26, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["18·찰스 디킨스", 10, 76, 82, "che_event_반계", [0, 0, 0, 0, 0], 1, "88da614.jpg?=20191210", 18, "che_191212_tf0O", 27, ["hall:tirate", "hall:tprate"]], + ["18·지바", 87, 72, 11, "che_event_의술", [12719, 58657, 855054, 128490, 72336], 1, "6b57eee.gif?=20191225", 18, "che_191212_tf0O", 29, ["chief:6", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:tprate", "hall:ttrate", "hall:warnum"]], + ["18·Hide_D", 82, 10, 79, "che_event_반계", [23677, 64299, 101032, 1075276, 110262], 1, "ee5accd.jpg?=20190411", 18, "che_191212_tf0O", 30, ["hall:dedication", "hall:dex2", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["18·Eman", 83, 73, 11, "che_event_견고", [524297, 16805, 65673, 86185, 78182], 1, "4358ef.png?=20191212", 18, "che_191212_tf0O", 32, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:killrate", "hall:tlrate", "hall:ttrate"]], + ["18·우대주스나타나양", 72, 10, 87, "che_event_신중", [40102, 69621, 82773, 888404, 73100], 1, "14889af.jpg?=20191221", 18, "che_191212_tf0O", 33, ["chief:9", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:warnum", "hall:winrate"]], + ["18·료우기시키", 87, 70, 10, "che_event_필살", [23567, 57578, 349644, 88587, 6442], 1, "559083f.jpg?=20190905", 18, "che_191212_tf0O", 34, ["hall:dex2", "hall:dex3", "hall:tlrate", "hall:tprate", "hall:winrate"]], + ["18·개미호랑이", 90, 10, 66, "che_event_신산", [43580, 55879, 26226, 77467, 242248], 1, "6ee69e8.jpg?=20191227", 18, "che_191212_tf0O", 36, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:tlrate"]], + ["18·병리학적자세", 71, 10, 89, "che_event_귀병", [21659, 36277, 69559, 925284, 59133], 1, "3679089.jpg?=20180629", 18, "che_191212_tf0O", 37, ["chief:11", "hall:dedication", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["18·외심장", 74, 10, 85, "che_event_격노", [38743, 25546, 77584, 789121, 32975], 1, "36110cd.jpg?=20180826", 18, "che_191212_tf0O", 41, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex3", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["18·KOSPI", 74, 86, 10, "che_event_필살", [23897, 461349, 30162, 117749, 15187], 0, "default.jpg", 18, "che_191212_tf0O", 46, ["chief:8", "hall:dedication", "hall:dex2", "hall:tlrate", "hall:tprate", "hall:winrate"]], + ["18·땅땅이", 84, 75, 10, "che_event_척사", [83217, 914271, 42441, 178821, 140063], 1, "99cd27f.gif?=20190606", 18, "che_191212_tf0O", 50, ["chief:10", "hall:dex1", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["18·레이첼 알카드", 10, 69, 86, "che_event_귀병", [0, 0, 0, 0, 0], 1, "bf1724a.jpg?=20191215", 18, "che_191212_tf0O", 78, ["hall:tirate"]], + ["18·웃고있다", 13, 87, 67, "che_event_저격", [0, 3746, 7834, 14431, 6329], 1, "4178447.jpg?=20191215", 18, "che_191212_tf0O", 107, ["hall:tprate", "hall:ttrate"]], + ["18·양", 10, 68, 84, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 18, "che_191212_tf0O", 181, ["chief:5", "hall:betgold", "hall:dedication"]], + ["18·천괴금", 10, 86, 65, "che_event_견고", [0, 0, 0, 0, 0], 1, "2b239af.png?=20190824", 18, "che_191212_tf0O", 219, ["hall:tprate"]], + ["18·DDDD", 69, 11, 80, "che_event_징병", [43052, 16985, 44625, 295243, 24102], 1, "a5c75e7.jpg?=20191223", 18, "che_191212_tf0O", 233, ["chief:7", "hall:dex1", "hall:dex4"]], + ["18·펭수", 10, 70, 82, "che_event_귀병", [0, 0, 0, 0, 0], 1, "b1807bf.png?=20191221", 18, "che_191212_tf0O", 245, ["hall:dedication", "hall:tirate"]], + ["19·박일아", 86, 68, 10, "che_event_의술", [472187, 20600, 50311, 90313, 33568], 1, "8608979.gif?=20191024", 19, "che_200109_Ri8R", 3, ["hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["19·보스곰", 70, 10, 84, "che_event_집중", [8795, 33311, 14253, 280835, 14748], 1, "773556e.gif?=20190822", 19, "che_200109_Ri8R", 4, ["hall:dex4", "hall:tirate"]], + ["19·금사향", 70, 11, 83, "che_event_격노", [50385, 16064, 26920, 427418, 39780], 1, "4deb6fb.jpg?=20191229", 19, "che_200109_Ri8R", 7, ["chief:12", "hall:dedication", "hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["19·DDDD", 69, 10, 84, "che_event_신중", [9856, 19505, 20360, 140278, 76359], 1, "a5c75e7.jpg?=20191223", 19, "che_200109_Ri8R", 8, ["hall:dex5", "hall:ttrate"]], + ["19·평민킬러", 70, 10, 85, "che_event_징병", [16379, 44459, 36106, 424448, 31811], 1, "fb23a32.jpg?=20190904", 19, "che_200109_Ri8R", 9, ["hall:dex2", "hall:dex3", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["19·갈근", 71, 10, 82, "che_event_저격", [42372, 29647, 19974, 369504, 28762], 0, "default.jpg", 19, "che_200109_Ri8R", 10, ["chief:9", "hall:dedication", "hall:dex1", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum"]], + ["19·올때메로나", 80, 10, 72, "che_event_징병", [31626, 11884, 40946, 310670, 16965], 0, "default.jpg", 19, "che_200109_Ri8R", 11, ["hall:dex3", "hall:dex4", "hall:warnum"]], + ["19·카이스트", 70, 10, 82, "che_event_귀병", [38657, 21232, 21186, 332069, 43094], 1, "9361ef8.jpg?=20180907", 19, "che_200109_Ri8R", 12, ["hall:dex4", "hall:dex5", "hall:tirate"]], + ["19·개미호랑이", 82, 70, 11, "che_event_위압", [23725, 71821, 562276, 73460, 28186], 1, "6ee69e8.jpg?=20191227", 19, "che_200109_Ri8R", 14, ["hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["19·삼모몰라요", 83, 70, 10, "che_event_돌격", [22100, 30046, 388989, 57810, 32699], 0, "default.jpg", 19, "che_200109_Ri8R", 15, ["chief:10", "hall:dex3", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["19·카오스피닉스", 69, 10, 85, "che_event_집중", [19178, 5186, 32314, 199666, 14066], 1, "7f80b2f.jpg?=20190715", 19, "che_200109_Ri8R", 16, ["hall:dedication", "hall:tirate", "hall:winrate"]], + ["19·엔딩요정", 69, 83, 10, "che_event_징병", [8624, 34146, 318730, 54793, 26595], 1, "b568f56.jpg?=20200106", 19, "che_200109_Ri8R", 17, ["chief:6", "hall:dex3", "hall:experience", "hall:killrate", "hall:tprate"]], + ["19·rwitch", 71, 10, 83, "che_event_격노", [29318, 23210, 18618, 267372, 11428], 1, "dcc638d.jpg?=20190725", 19, "che_200109_Ri8R", 18, ["hall:dex4", "hall:ttrate"]], + ["19·Elsa", 71, 83, 10, "che_event_저격", [8241, 26929, 263995, 71163, 15037], 1, "5041f99.jpg?=20200121", 19, "che_200109_Ri8R", 19, ["hall:dex3", "hall:tprate"]], + ["19·슬라임", 10, 69, 85, "che_event_신중", [0, 0, 0, 0, 0], 1, "2fd8b5.png?=20191222", 19, "che_200109_Ri8R", 20, ["hall:ttrate"]], + ["19·팬지", 69, 10, 83, "che_event_귀병", [29259, 13912, 9221, 252237, 11550], 1, "2091b86.gif?=20200112", 19, "che_200109_Ri8R", 21, ["chief:7", "hall:ttrate"]], + ["19·Hide_D", 69, 12, 83, "che_event_필살", [39392, 30865, 9240, 261155, 14354], 1, "9f0a2a8.png?=20200106", 19, "che_200109_Ri8R", 22, ["hall:tirate"]], + ["19·파크헤트", 84, 69, 10, "che_event_돌격", [36866, 256143, 8644, 55229, 12676], 1, "a18c11b.jpg?=20200109", 19, "che_200109_Ri8R", 23, ["hall:dedication", "hall:dex2", "hall:tlrate"]], + ["19·말걸지마라", 85, 69, 10, "che_event_저격", [350581, 22056, 40768, 58089, 43213], 1, "e465f23.gif?=20200109", 19, "che_200109_Ri8R", 24, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["19·땅땅이", 78, 73, 10, "che_event_저격", [95387, 291628, 11819, 46427, 35673], 1, "99cd27f.gif?=20190606", 19, "che_200109_Ri8R", 25, ["chief:8", "hall:dex1", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killrate", "hall:warnum"]], + ["19·외심장", 70, 10, 83, "che_event_신산", [27620, 7809, 12829, 236951, 14985], 1, "36110cd.jpg?=20180826", 19, "che_200109_Ri8R", 26, ["hall:killrate", "hall:ttrate", "hall:winrate"]], + ["19·임사영", 70, 10, 82, "che_event_귀병", [11674, 12119, 0, 56430, 6634], 1, "d5dc381.gif?=20190719", 19, "che_200109_Ri8R", 27, ["hall:tirate"]], + ["19·정채연", 72, 81, 10, "che_event_무쌍", [21345, 303015, 14380, 71163, 23601], 1, "9705097.jpg?=20191001", 19, "che_200109_Ri8R", 28, ["hall:dex2", "hall:killnum", "hall:tprate"]], + ["19·yapyap30", 70, 11, 83, "che_event_신산", [20455, 17279, 18888, 303560, 40713], 0, "default.jpg", 19, "che_200109_Ri8R", 29, ["chief:5", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate"]], + ["19·DRX Deft", 79, 72, 10, "che_event_돌격", [117502, 8118, 30454, 26519, 2219], 1, "c0c766b.jpg?=20190815", 19, "che_200109_Ri8R", 30, ["hall:dex1", "hall:tprate", "hall:ttrate"]], + ["19·기", 84, 69, 10, "che_event_무쌍", [19225, 11674, 0, 6389, 206616], 1, "2cf4b70.jpg?=20200120", 19, "che_200109_Ri8R", 33, ["hall:dex5", "hall:experience", "hall:killrate", "hall:winrate"]], + ["19·료우기시키", 81, 72, 10, "che_event_척사", [24607, 86986, 6449, 25518, 56464], 1, "559083f.jpg?=20190905", 19, "che_200109_Ri8R", 34, ["hall:dedication", "hall:dex2", "hall:dex5", "hall:tlrate", "hall:tprate"]], + ["19·KOSPI", 71, 84, 10, "che_event_척사", [8367, 162879, 8247, 53554, 2289], 0, "default.jpg", 19, "che_200109_Ri8R", 35, ["hall:dex2", "hall:tprate"]], + ["19·독구", 69, 11, 82, "che_event_집중", [45070, 34467, 39750, 507842, 69412], 1, "ac701b0.jpg?=20180625", 19, "che_200109_Ri8R", 36, ["chief:11", "hall:dedication", "hall:dex1", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["19·유다치", 69, 81, 10, "che_event_격노", [62138, 6372, 27245, 18063, 35289], 1, "b137f72.jpg?=20200109", 19, "che_200109_Ri8R", 37, ["hall:dex1", "hall:dex5", "hall:tprate"]], + ["19·하우젤", 71, 82, 10, "che_event_궁병", [21407, 172082, 2448, 55796, 2828], 1, "dcff9fd.jpg?=20180823", 19, "che_200109_Ri8R", 39, ["hall:dex2", "hall:tprate", "hall:ttrate"]], + ["19·인탐빌런", 84, 10, 68, "che_event_공성", [0, 0, 0, 0, 8501], 0, "default.jpg", 19, "che_200109_Ri8R", 40, ["hall:tlrate"]], + ["19·병리학적자세", 68, 11, 84, "che_event_격노", [53626, 35180, 33899, 476134, 24310], 1, "3679089.jpg?=20180629", 19, "che_200109_Ri8R", 41, ["hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["19·아클릿", 60, 80, 19, "che_event_징병", [9461, 3552, 6949, 28846, 0], 0, "default.jpg", 19, "che_200109_Ri8R", 44, ["hall:tprate"]], + ["19·아노리엔", 81, 67, 10, "che_event_위압", [1567, 10551, 23901, 4328, 0], 1, "99d6aca.png?=20190320", 19, "che_200109_Ri8R", 50, ["hall:tlrate"]], + ["19·펭수", 11, 66, 85, "che_event_귀병", [0, 0, 0, 0, 0], 1, "b1807bf.png?=20191221", 19, "che_200109_Ri8R", 80, ["hall:dedication", "hall:experience", "hall:ttrate"]], + ["19·ㅎㅎ", 10, 66, 83, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 19, "che_200109_Ri8R", 91, ["hall:tirate"]], + ["19·비빅", 68, 10, 79, "che_event_필살", [10811, 4221, 5185, 55368, 0], 0, "default.jpg", 19, "che_200109_Ri8R", 139, ["hall:winrate"]], + ["19·불사조페이트", 83, 67, 10, "che_event_징병", [34261, 186187, 20458, 52037, 6163], 1, "fb7addd.jpg?=20190816", 19, "che_200109_Ri8R", 199, ["hall:dex2", "hall:tlrate"]], + ["19·현피1번남음", 69, 10, 79, "che_event_집중", [2759, 33410, 16327, 189518, 9871], 0, "default.jpg", 19, "che_200109_Ri8R", 213, ["hall:tirate"]], + ["19·무기농야채", 81, 65, 10, "che_event_위압", [35823, 1838, 1794, 18240, 0], 0, "default.jpg", 19, "che_200109_Ri8R", 222, ["hall:tlrate"]], + ["19·하와와", 70, 10, 80, "che_event_의술", [10472, 14586, 32496, 224165, 3473], 0, "default.jpg", 19, "che_200109_Ri8R", 224, ["hall:winrate"]], + ["19·연애중앵벌스", 69, 80, 10, "che_event_징병", [155779, 21490, 27629, 39317, 0], 1, "4b82261.jpg?=20200114", 19, "che_200109_Ri8R", 238, ["hall:dex1", "hall:tprate"]], + ["19·현피0번남음", 66, 10, 82, "che_event_신산", [8797, 10337, 7072, 96532, 2641], 0, "default.jpg", 19, "che_200109_Ri8R", 251, ["hall:tirate"]], + ["21·평민킬러", 77, 81, 10, "che_event_무쌍", [598943, 23647, 54300, 175331, 24829], 1, "fb23a32.jpg?=20190904", 21, "che_200305_nMCL", 4, ["hall:dex1", "hall:dex3", "hall:tlrate", "hall:tprate", "hall:ttrate"]], + ["21·차비씨", 71, 10, 86, "che_event_저격", [48941, 44962, 36968, 543977, 34113], 1, "7f3203a.jpg?=20200302", 21, "che_200305_nMCL", 5, ["hall:dex1", "hall:dex4", "hall:dex5"]], + ["21·독구", 68, 11, 83, "che_event_신산", [746, 15118, 7000, 229242, 20329], 1, "ac701b0.jpg?=20180625", 21, "che_200305_nMCL", 6, ["hall:killrate"]], + ["21·갈근", 11, 67, 91, "che_event_귀병", [0, 0, 0, 0, 0], 0, "default.jpg", 21, "che_200305_nMCL", 9, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["21·Hide_D", 73, 10, 86, "che_event_집중", [18327, 18100, 21069, 746536, 27042], 1, "9f0a2a8.png?=20200106", 21, "che_200305_nMCL", 10, ["chief:7", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["21·청랑구", 72, 86, 10, "che_event_격노", [36241, 67702, 469047, 91809, 38419], 1, "d6ebfb8.jpg?=20200305", 21, "che_200305_nMCL", 11, ["hall:dex3", "hall:dex5", "hall:experience", "hall:tprate", "hall:ttrate"]], + ["21·엘사", 72, 86, 10, "che_event_징병", [25913, 336804, 10527, 50218, 29056], 1, "45d0270.jpg?=20200305", 21, "che_200305_nMCL", 13, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:tprate"]], + ["21·킹구", 89, 69, 10, "che_event_척사", [45029, 715848, 14603, 30270, 26022], 1, "fb3c625.gif?=20190428", 21, "che_200305_nMCL", 17, ["hall:dex2", "hall:tlrate", "hall:warnum"]], + ["21·두꺼비", 87, 69, 10, "che_event_견고", [467683, 20432, 46133, 122117, 27681], 1, "cc0eb9d.jpg?=20200305", 21, "che_200305_nMCL", 18, ["hall:dex1", "hall:dex3", "hall:experience", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["21·KF94", 73, 84, 10, "che_event_저격", [59787, 635335, 34870, 117677, 38682], 1, "577e1ee.png?=20200305", 21, "che_200305_nMCL", 19, ["chief:6", "hall:dex1", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum"]], + ["21·마티아스", 74, 85, 10, "che_event_돌격", [55552, 621174, 9929, 183007, 19129], 1, "acb1a64.jpg?=20200305", 21, "che_200305_nMCL", 20, ["hall:dex1", "hall:dex2", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["21·병리학적자세", 71, 13, 85, "che_event_격노", [49347, 69493, 29432, 577911, 35546], 1, "3679089.jpg?=20180629", 21, "che_200305_nMCL", 21, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:dex5", "hall:firenum"]], + ["21·박일아", 74, 86, 10, "che_event_돌격", [1052480, 17654, 15193, 20597, 18727], 1, "8608979.gif?=20191024", 21, "che_200305_nMCL", 22, ["hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["21·길냥이", 88, 70, 10, "che_event_돌격", [58332, 1147833, 29817, 49163, 73191], 1, "eed811e.jpg?=20200305", 21, "che_200305_nMCL", 23, ["chief:12", "hall:betgold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["21·네반", 73, 10, 83, "che_event_징병", [28193, 31215, 29802, 695096, 22066], 1, "74df23f.jpg?=20200314", 21, "che_200305_nMCL", 24, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:warnum"]], + ["21·천괴금", 15, 84, 67, "che_event_견고", [9781, 44346, 179944, 28254, 11020], 1, "2b239af.png?=20190824", 21, "che_200305_nMCL", 25, ["chief:10", "hall:dedication", "hall:dex3", "hall:firenum", "hall:tprate"]], + ["21·카이스트", 71, 10, 87, "che_event_저격", [31142, 60635, 21934, 454495, 28863], 1, "9361ef8.jpg?=20180907", 21, "che_200305_nMCL", 27, ["hall:tirate", "hall:winrate"]], + ["21·료우기시키", 84, 71, 10, "che_event_무쌍", [61730, 186941, 2328, 51745, 24916], 1, "559083f.jpg?=20190905", 21, "che_200305_nMCL", 30, ["hall:dex1", "hall:dex2", "hall:killrate", "hall:tlrate", "hall:ttrate"]], + ["21·개미호랑이", 88, 66, 11, "che_event_기병", [20770, 93715, 371211, 111363, 17549], 1, "9e0429e.jpg?=20200313", 21, "che_200305_nMCL", 32, ["hall:dex2", "hall:dex3", "hall:tlrate"]], + ["21·연채홍", 71, 10, 87, "che_event_반계", [20796, 46280, 29340, 308056, 15651], 1, "773556e.gif?=20190822", 21, "che_200305_nMCL", 33, ["hall:tirate"]], + ["21·보이루", 72, 10, 86, "che_event_환술", [34577, 49924, 38667, 673301, 52180], 1, "a9b0507.jpg?=20200217", 21, "che_200305_nMCL", 34, ["chief:9", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate"]], + ["21·오리너구리", 72, 10, 84, "che_event_척사", [0, 0, 0, 0, 0], 1, "2974f7c.jpg?=20200305", 21, "che_200305_nMCL", 36, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["21·피에스타", 83, 73, 11, "che_event_위압", [649019, 50416, 43493, 129140, 29805], 1, "99cd27f.gif?=20190606", 21, "che_200305_nMCL", 37, ["chief:8", "hall:dex1", "hall:dex3", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["21·슬라임", 83, 10, 75, "che_event_환술", [46881, 90041, 38303, 460956, 16917], 1, "2fd8b5.png?=20191222", 21, "che_200305_nMCL", 38, ["hall:dex2", "hall:dex4", "hall:tlrate"]], + ["21·두나", 67, 10, 90, "che_event_척사", [930, 0, 0, 28807, 10923], 1, "bf0c572.png?=20181114", 21, "che_200305_nMCL", 42, ["hall:tirate", "hall:ttrate"]], + ["21·박일도", 66, 16, 85, "che_event_격노", [17887, 35636, 18792, 316640, 25348], 0, "default.jpg", 21, "che_200305_nMCL", 44, ["hall:ttrate", "hall:winrate"]], + ["21·AP샤코", 71, 10, 87, "che_event_필살", [34077, 41068, 34664, 509392, 50481], 0, "default.jpg", 21, "che_200305_nMCL", 46, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience"]], + ["21·임사영", 71, 10, 86, "che_event_집중", [38044, 46007, 22761, 356390, 61435], 1, "7f9473e.gif?=20200211", 21, "che_200305_nMCL", 48, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killrate"]], + ["21·옵저버", 18, 65, 84, "che_event_신산", [0, 0, 0, 0, 0], 1, "517c3e2.jpg?=20200306", 21, "che_200305_nMCL", 49, ["hall:dedication", "hall:firenum"]], + ["21·ㅁㄴㅇㄹ", 10, 80, 75, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 21, "che_200305_nMCL", 53, ["hall:firenum"]], + ["21·네프기어", 85, 67, 12, "che_event_무쌍", [8117, 0, 0, 6212, 0], 1, "890b253.jpg?=20191024", 21, "che_200305_nMCL", 54, ["hall:tlrate"]], + ["21·쒸익쒸익", 70, 10, 85, "che_event_척사", [22360, 73290, 21091, 433104, 26204], 1, "dbeeb0d.jpg?=20190620", 21, "che_200305_nMCL", 55, ["hall:dex2", "hall:tirate"]], + ["21·돌아온너구리", 72, 11, 87, "che_event_반계", [16455, 19708, 23120, 961863, 25311], 1, "b90cb6f.jpg?=20200307", 21, "che_200305_nMCL", 56, ["chief:11", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["21·로리", 73, 10, 86, "che_event_집중", [10915, 6830, 14574, 846843, 40297], 1, "50794a6.jpg?=20190923", 21, "che_200305_nMCL", 57, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["21·뉴턴", 74, 83, 10, "che_event_견고", [12269, 12093, 610061, 15602, 16881], 1, "3d166a8.jpg?=20200313", 21, "che_200305_nMCL", 58, ["hall:dex3", "hall:firenum", "hall:tlrate", "hall:winrate"]], + ["21·くま", 70, 10, 85, "che_event_귀병", [44813, 44680, 27564, 545724, 32703], 1, "770f53.jpg?=20190718", 21, "che_200305_nMCL", 65, ["chief:5", "hall:dex4"]], + ["21·정채연", 69, 83, 10, "che_event_견고", [11469, 42765, 298862, 33741, 33835], 1, "9705097.jpg?=20191001", 21, "che_200305_nMCL", 66, ["hall:dex3", "hall:dex5", "hall:tprate"]], + ["21·카오스피닉스", 68, 10, 85, "che_event_신중", [9873, 34390, 16220, 207908, 6158], 1, "7f80b2f.jpg?=20190715", 21, "che_200305_nMCL", 67, ["hall:tirate"]], + ["21·야까스 코만", 65, 11, 85, "che_event_척사", [8285, 5841, 3767, 17893, 21763], 0, "default.jpg", 21, "che_200305_nMCL", 98, ["hall:killrate", "hall:winrate"]], + ["21·가련", 10, 70, 85, "che_event_귀병", [0, 0, 0, 0, 0], 1, "7baef1c.jpg?=20200308", 21, "che_200305_nMCL", 120, ["hall:tirate"]], + ["21·만샘", 10, 80, 73, "che_event_저격", [0, 0, 0, 0, 0], 1, "4a206a1.jpg?=20181122", 21, "che_200305_nMCL", 121, ["hall:dedication"]], + ["21·내정만하고싶다", 10, 66, 88, "che_event_격노", [0, 0, 0, 0, 0], 0, "default.jpg", 21, "che_200305_nMCL", 138, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["21·리무루", 70, 10, 83, "che_event_반계", [11891, 64290, 28360, 221298, 20815], 1, "c40f9f7.jpg?=20200222", 21, "che_200305_nMCL", 139, ["hall:ttrate"]], + ["21·수장", 70, 82, 10, "che_event_위압", [17799, 46820, 253293, 106371, 8450], 1, "190d7ff.jpg?=20200312", 21, "che_200305_nMCL", 214, ["hall:dex3", "hall:tprate"]], + ["21·펭수", 10, 80, 69, "che_event_저격", [0, 0, 0, 0, 0], 1, "b1807bf.png?=20191221", 21, "che_200305_nMCL", 239, ["hall:tprate"]], + ["22·이즈미 쿄카", 71, 10, 83, "che_event_집중", [35839, 3927, 32670, 388117, 43917], 1, "51d4831.jpg?=20200408", 22, "che_200402_OdeY", 4, ["hall:dedication", "hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["22·미스티", 67, 10, 86, "che_event_귀병", [2543, 3710, 1574, 43788, 9446], 1, "1aadcba.png?=20180908", 22, "che_200402_OdeY", 8, ["hall:killrate", "hall:tirate", "hall:winrate"]], + ["22·평민킬러", 69, 10, 86, "che_event_신산", [17249, 10020, 17188, 244496, 21336], 1, "fb23a32.jpg?=20190904", 22, "che_200402_OdeY", 9, ["chief:11", "hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["22·냐옹", 69, 84, 10, "che_event_견고", [930, 118947, 3147, 40362, 8218], 1, "23ba519.jpg?=20190318", 22, "che_200402_OdeY", 10, ["hall:dex2", "hall:tprate"]], + ["22·야근요정헹이", 80, 10, 74, "che_event_집중", [13108, 15908, 25246, 187869, 16219], 1, "3db84f2.jpg?=20200405", 22, "che_200402_OdeY", 14, ["chief:7", "hall:betwin", "hall:betwingold", "hall:tlrate", "hall:winrate"]], + ["22·아키라의노예", 70, 10, 85, "che_event_척사", [7927, 3398, 11368, 185220, 10395], 1, "773556e.gif?=20190822", 22, "che_200402_OdeY", 15, ["chief:9", "hall:betgold", "hall:dedication", "hall:experience", "hall:killrate", "hall:ttrate"]], + ["22·수장", 82, 71, 12, "che_event_격노", [21861, 209481, 4810, 20593, 40147], 1, "190d7ff.jpg?=20200312", 22, "che_200402_OdeY", 19, ["chief:8", "hall:betgold", "hall:dex2", "hall:dex5", "hall:killrate", "hall:tlrate"]], + ["22·이드", 71, 83, 10, "che_event_위압", [93925, 127735, 47554, 43226, 16949], 1, "ee26023.jpg?=20200402", 22, "che_200402_OdeY", 20, ["hall:dex1", "hall:dex2"]], + ["22·임사영", 69, 11, 86, "che_event_의술", [2685, 5472, 22873, 138521, 21509], 1, "7f9473e.gif?=20200211", 22, "che_200402_OdeY", 22, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["22·료우기시키", 81, 70, 10, "che_event_필살", [37897, 53513, 3116, 23685, 7194], 1, "559083f.jpg?=20190905", 22, "che_200402_OdeY", 23, ["hall:dex1", "hall:dex2", "hall:tlrate"]], + ["22·너굴", 69, 10, 85, "che_event_신중", [16178, 7887, 20527, 160398, 32499], 1, "66117f6.jpg?=20200326", 22, "che_200402_OdeY", 25, ["hall:dedication", "hall:tirate"]], + ["22·카이스트", 71, 10, 83, "che_event_집중", [15916, 3103, 52042, 338498, 39722], 1, "9361ef8.jpg?=20180907", 22, "che_200402_OdeY", 26, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["22·아마자라시", 12, 81, 70, "che_event_보병", [0, 0, 0, 0, 0], 1, "6a10015.jpg?=20200402", 22, "che_200402_OdeY", 27, ["hall:firenum", "hall:tprate", "hall:ttrate"]], + ["22·죄악의 안젤리카", 70, 83, 10, "che_event_돌격", [79, 12424, 248474, 42158, 29102], 1, "7196fd9.jpg?=20200402", 22, "che_200402_OdeY", 28, ["chief:12", "hall:betgold", "hall:dedication", "hall:dex3", "hall:experience", "hall:killrate", "hall:tprate"]], + ["22·킹구", 68, 10, 85, "che_event_징병", [9469, 23365, 15061, 213345, 18004], 1, "fb3c625.gif?=20190428", 22, "che_200402_OdeY", 30, ["hall:dex4", "hall:tirate"]], + ["22·로비", 10, 67, 87, "che_event_귀병", [0, 0, 0, 0, 0], 1, "708a981.png?=20200402", 22, "che_200402_OdeY", 31, ["hall:tirate"]], + ["22·Hide_D", 70, 10, 85, "che_event_집중", [74756, 45847, 48208, 571922, 25386], 1, "9f0a2a8.png?=20200106", 22, "che_200402_OdeY", 32, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["22·트리니티", 85, 68, 10, "che_event_무쌍", [802, 23235, 144392, 34851, 93154], 0, "default.jpg", 22, "che_200402_OdeY", 33, ["hall:dex3", "hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["22·사스케", 85, 70, 10, "che_event_의술", [441684, 12578, 75704, 83916, 44226], 1, "61e6754.jpg?=20200402", 22, "che_200402_OdeY", 36, ["hall:betgold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["22·김나영", 69, 86, 10, "che_event_필살", [11974, 40080, 343685, 89224, 15880], 1, "c90a3d4.jpg?=20190905", 22, "che_200402_OdeY", 37, ["hall:dex2", "hall:dex3", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["22·나타", 86, 68, 10, "che_event_필살", [0, 7735, 0, 8889, 395546], 1, "5930c00.jpg?=20200416", 22, "che_200402_OdeY", 38, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["22·くま", 85, 70, 10, "che_event_견고", [32539, 42900, 489119, 132317, 53684], 1, "770f53.jpg?=20190718", 22, "che_200402_OdeY", 39, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["22·독구", 67, 10, 86, "che_event_신산", [24010, 16507, 15159, 197802, 24127], 1, "f6d2724.png?=20200405", 22, "che_200402_OdeY", 40, ["hall:dex1", "hall:dex4", "hall:killrate", "hall:tirate"]], + ["22·천괴금", 10, 82, 71, "che_event_돌격", [0, 0, 0, 0, 0], 1, "2b239af.png?=20190824", 22, "che_200402_OdeY", 41, ["chief:6", "hall:dedication", "hall:tprate"]], + ["22·나루토", 69, 10, 84, "che_event_신산", [14556, 21833, 49278, 320953, 52099], 1, "20daf9a.jpg?=20200412", 22, "che_200402_OdeY", 42, ["hall:betgold", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:tirate", "hall:warnum"]], + ["22·마을주민", 72, 82, 10, "che_event_견고", [18109, 5167, 217098, 41508, 16615], 1, "70c3a0c.jpg?=20200402", 22, "che_200402_OdeY", 43, ["chief:10", "hall:betgold", "hall:dex3", "hall:experience", "hall:killrate", "hall:tprate"]], + ["22·광순이", 69, 10, 84, "che_event_환술", [16081, 27260, 31971, 304663, 42187], 1, "ec3db27.gif?=20200402", 22, "che_200402_OdeY", 44, ["hall:dex4", "hall:dex5"]], + ["22·외심장", 68, 10, 86, "che_event_신산", [6561, 18117, 13756, 172785, 11193], 1, "36110cd.jpg?=20180826", 22, "che_200402_OdeY", 45, ["hall:firenum"]], + ["22·박일아", 11, 79, 76, "che_event_견고", [0, 0, 0, 0, 0], 1, "8608979.gif?=20191024", 22, "che_200402_OdeY", 46, ["hall:experience", "hall:tprate", "hall:ttrate"]], + ["22·만샘", 71, 10, 83, "che_event_환술", [44529, 32519, 18408, 392858, 28775], 1, "4a206a1.jpg?=20181122", 22, "che_200402_OdeY", 47, ["chief:5", "hall:betgold", "hall:dex1", "hall:dex2", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["22·개미호랑이렐리아", 86, 66, 10, "che_event_격노", [14878, 23905, 151410, 56369, 5684], 1, "9e0429e.jpg?=20200313", 22, "che_200402_OdeY", 48, ["hall:dex3", "hall:tlrate", "hall:ttrate"]], + ["22·피에스타", 81, 73, 10, "che_event_무쌍", [5251, 18155, 215837, 45048, 6918], 1, "99cd27f.gif?=20190606", 22, "che_200402_OdeY", 49, ["hall:dex3", "hall:tlrate", "hall:ttrate", "hall:winrate"]], + ["22·호랑이사람", 10, 65, 89, "che_event_척사", [0, 0, 0, 0, 0], 1, "ac4c5ec.jpg?=20200404", 22, "che_200402_OdeY", 50, ["hall:dedication", "hall:tirate"]], + ["22·KOSPI", 71, 84, 10, "che_event_척사", [382638, 19921, 31751, 99042, 14992], 0, "default.jpg", 22, "che_200402_OdeY", 51, ["hall:dedication", "hall:dex1", "hall:killcrew", "hall:killnum", "hall:tprate", "hall:warnum"]], + ["22·쿠쿠쿠쿠쿠쿠쿠쿠쿠", 10, 71, 80, "che_event_신중", [0, 0, 0, 0, 0], 1, "9bb1f36.jpg?=20200402", 22, "che_200402_OdeY", 52, ["hall:firenum"]], + ["22·아라한", 80, 73, 11, "che_event_필살", [20260, 32461, 231775, 27320, 17654], 1, "a66f117.jpg?=20200402", 22, "che_200402_OdeY", 53, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:killnum", "hall:tlrate", "hall:winrate"]], + ["22·슬라임", 70, 10, 83, "che_event_신중", [46096, 20731, 31052, 284182, 10074], 1, "c40f9f7.jpg?=20200222", 22, "che_200402_OdeY", 54, ["hall:dex1", "hall:dex4", "hall:ttrate", "hall:warnum"]], + ["22·뼈다구", 67, 10, 84, "che_event_척사", [2311, 11660, 18063, 100074, 10072], 1, "3a5cefc.jpg?=20200305", 22, "che_200402_OdeY", 58, ["hall:winrate"]], + ["22·리에", 88, 10, 11, "che_event_저격", [14405, 3558, 16877, 43867, 151156], 0, "default.jpg", 22, "che_200402_OdeY", 63, ["hall:dex5", "hall:tlrate"]], + ["22·q1", 10, 71, 80, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 22, "che_200402_OdeY", 79, ["hall:firenum"]], + ["22·나만마딜없어", 68, 10, 84, "che_event_신중", [1992, 16326, 15588, 89107, 5832], 0, "default.jpg", 22, "che_200402_OdeY", 190, ["hall:tirate"]], + ["22·김갑환", 79, 72, 10, "che_event_돌격", [5165, 6397, 113326, 39268, 7284], 1, "dcff9fd.jpg?=20180823", 22, "che_200402_OdeY", 207, ["hall:dex3"]], + ["22·로리", 10, 78, 69, "che_event_견고", [0, 0, 0, 0, 0], 1, "50794a6.jpg?=20190923", 22, "che_200402_OdeY", 209, ["hall:firenum"]], + ["22·시즈", 67, 83, 10, "che_event_궁병", [0, 172722, 19227, 22465, 10309], 0, "default.jpg", 22, "che_200402_OdeY", 217, ["hall:dex2", "hall:killrate", "hall:tprate"]], + ["22·크류", 68, 82, 10, "che_event_필살", [14635, 573, 0, 3749, 1853], 0, "default.jpg", 22, "che_200402_OdeY", 219, ["hall:tprate"]], + ["22·천조장호무새", 77, 69, 12, "che_event_기병", [11516, 7667, 130823, 14884, 4184], 1, "3649856.png?=20190815", 22, "che_200402_OdeY", 253, ["hall:dex3"]], + ["23·프린세스 라라", 69, 10, 85, "che_event_척사", [49749, 16153, 31945, 312008, 17412], 1, "74c06d5.jpg?=20200426", 23, "che_200423_egv4", 3, ["hall:dex1", "hall:dex4"]], + ["23·문중", 83, 69, 10, "che_event_징병", [11130, 44446, 55949, 45412, 289305], 1, "47d367b.jpg?=20200423", 23, "che_200423_egv4", 4, ["hall:dedication", "hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["23·데보라", 85, 68, 10, "che_event_견고", [47724, 452452, 29458, 79232, 33047], 1, "799e90c.jpg?=20200423", 23, "che_200423_egv4", 7, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum"]], + ["23·로리", 69, 11, 83, "che_event_격노", [25181, 28815, 30911, 302016, 30085], 1, "50794a6.jpg?=20190923", 23, "che_200423_egv4", 8, ["hall:tirate", "hall:ttrate"]], + ["23·칸나", 83, 71, 10, "che_event_견고", [44524, 253186, 14678, 39692, 19215], 0, "default.jpg", 23, "che_200423_egv4", 9, ["hall:dex1", "hall:dex2", "hall:firenum", "hall:killrate", "hall:tlrate"]], + ["23·펭수병", 71, 83, 10, "che_event_의술", [63310, 83480, 367912, 71061, 24302], 1, "c364f77.png?=20200423", 23, "che_200423_egv4", 10, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:tprate", "hall:warnum"]], + ["23·수장", 82, 70, 10, "che_event_의술", [362536, 15026, 65653, 105385, 20234], 1, "190d7ff.jpg?=20200312", 23, "che_200423_egv4", 12, ["chief:8", "hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:tlrate", "hall:warnum"]], + ["23·임사영", 84, 68, 10, "che_event_징병", [185808, 38525, 79234, 47655, 8275], 1, "7f9473e.gif?=20200211", 23, "che_200423_egv4", 13, ["hall:dex1", "hall:dex3", "hall:tlrate"]], + ["23·네티", 83, 70, 11, "che_event_돌격", [20840, 62661, 437362, 63003, 30100], 1, "ac91b73.jpg?=20200423", 23, "che_200423_egv4", 14, ["hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["23·무공요정", 71, 10, 82, "che_event_저격", [17338, 4521, 34150, 267043, 36848], 1, "a6cba65.jpg?=20200426", 23, "che_200423_egv4", 15, ["hall:dex5", "hall:tirate"]], + ["23·Hide_D", 71, 11, 84, "che_event_신산", [13563, 53427, 60592, 507150, 75293], 1, "9f0a2a8.png?=20200106", 23, "che_200423_egv4", 18, ["hall:dex2", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["23·smile", 70, 10, 84, "che_event_징병", [19418, 26454, 44611, 337945, 22507], 0, "default.jpg", 23, "che_200423_egv4", 20, ["hall:dedication", "hall:dex4"]], + ["23·박일아", 10, 68, 86, "che_event_귀병", [0, 0, 0, 0, 0], 1, "8608979.gif?=20191024", 23, "che_200423_egv4", 21, ["hall:dedication", "hall:firenum", "hall:tirate"]], + ["23·평민킬러", 71, 84, 10, "che_event_견고", [463509, 20230, 45383, 94311, 26646], 1, "fb23a32.jpg?=20190904", 23, "che_200423_egv4", 22, ["chief:11", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tprate", "hall:warnum", "hall:winrate"]], + ["23·카이스트", 71, 10, 84, "che_event_징병", [39400, 41549, 62758, 438213, 19053], 1, "9361ef8.jpg?=20180907", 23, "che_200423_egv4", 23, ["hall:dex1", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["23·돌아온너구리", 71, 10, 84, "che_event_환술", [28251, 37813, 40168, 489498, 18502], 0, "default.jpg", 23, "che_200423_egv4", 24, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["23·돌격", 85, 67, 11, "che_event_견고", [30917, 43421, 478831, 118418, 31757], 0, "default.jpg", 23, "che_200423_egv4", 25, ["chief:6", "hall:dedication", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["23·갈근", 10, 68, 87, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 23, "che_200423_egv4", 26, ["hall:dedication", "hall:firenum", "hall:tirate"]], + ["23·프로야구개막한다", 70, 11, 82, "che_event_반계", [11776, 0, 15153, 109867, 19282], 1, "ff65fbb.png?=20200423", 23, "che_200423_egv4", 27, ["hall:killrate", "hall:ttrate", "hall:winrate"]], + ["23·메리레녹스", 15, 82, 67, "che_event_필살", [2114, 15028, 125743, 36260, 4538], 1, "cf65bb3.jpg?=20200418", 23, "che_200423_egv4", 31, ["chief:9", "hall:dedication", "hall:dex3", "hall:tprate", "hall:ttrate"]], + ["23·톱니바퀴", 10, 65, 89, "che_event_환술", [0, 0, 0, 0, 0], 0, "default.jpg", 23, "che_200423_egv4", 32, ["hall:dedication", "hall:tirate"]], + ["23·철별", 70, 10, 83, "che_event_집중", [20629, 23019, 33232, 338959, 52732], 0, "default.jpg", 23, "che_200423_egv4", 33, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["23·외심장", 70, 10, 85, "che_event_격노", [16952, 23301, 48755, 332118, 20076], 1, "36110cd.jpg?=20180826", 23, "che_200423_egv4", 34, ["hall:dex4", "hall:tirate"]], + ["23·땅땅", 80, 72, 10, "che_event_저격", [10704, 77264, 216151, 57692, 27618], 1, "99cd27f.gif?=20190606", 23, "che_200423_egv4", 35, ["hall:dex2", "hall:dex3"]], + ["23·くま", 83, 68, 10, "che_event_위압", [29164, 3148, 5368, 19215, 299020], 1, "770f53.jpg?=20190718", 23, "che_200423_egv4", 36, ["hall:dex5", "hall:experience", "hall:killrate", "hall:winrate"]], + ["23·이거 또 망함?", 10, 86, 67, "che_event_격노", [0, 0, 0, 0, 0], 0, "default.jpg", 23, "che_200423_egv4", 37, ["hall:firenum", "hall:tprate", "hall:ttrate"]], + ["23·바보카린", 12, 78, 74, "che_event_공성", [0, 0, 0, 4979, 105255], 1, "56538b1.gif?=20200423", 23, "che_200423_egv4", 38, ["chief:12", "hall:dedication", "hall:dex5", "hall:firenum", "hall:killrate", "hall:tprate", "hall:ttrate"]], + ["23·냐옹", 69, 79, 12, "che_event_견고", [0, 0, 0, 0, 0], 1, "23ba519.jpg?=20190318", 23, "che_200423_egv4", 39, ["hall:tprate"]], + ["23·타임머신", 81, 71, 10, "che_event_위압", [32266, 297661, 24425, 82058, 32824], 1, "75f9605.png?=20200423", 23, "che_200423_egv4", 42, ["hall:dex2", "hall:dex5", "hall:killrate", "hall:ttrate"]], + ["23·개미호랑이즈리얼", 82, 70, 10, "che_event_척사", [20817, 32123, 213097, 37954, 338], 1, "9e0429e.jpg?=20200313", 23, "che_200423_egv4", 43, ["hall:dex3"]], + ["23·엔장", 10, 79, 72, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 23, "che_200423_egv4", 45, ["hall:firenum", "hall:tprate"]], + ["23·바보", 70, 10, 83, "che_event_집중", [13844, 26294, 21207, 381343, 41219], 1, "3efe080.gif?=20200425", 23, "che_200423_egv4", 47, ["chief:7", "hall:dedication", "hall:dex4", "hall:dex5"]], + ["23·료우기시키", 82, 69, 10, "che_event_돌격", [26414, 293380, 31786, 83961, 25899], 1, "559083f.jpg?=20190905", 23, "che_200423_egv4", 48, ["hall:dex2", "hall:tlrate"]], + ["23·민트토끼", 12, 66, 85, "che_event_집중", [0, 0, 0, 0, 0], 1, "e484fd4.gif?=20200424", 23, "che_200423_egv4", 52, ["chief:5", "hall:firenum", "hall:tirate"]], + ["23·만샘", 70, 82, 10, "che_event_위압", [14761, 376699, 29132, 70792, 31310], 1, "4a206a1.jpg?=20181122", 23, "che_200423_egv4", 53, ["hall:dex2", "hall:killrate", "hall:tprate"]], + ["23·김갑환", 83, 70, 10, "che_event_위압", [27152, 34572, 288182, 78367, 15344], 1, "dcff9fd.jpg?=20180823", 23, "che_200423_egv4", 55, ["hall:dex3", "hall:tlrate", "hall:ttrate"]], + ["23·12팩에2전설뜸", 71, 10, 81, "che_event_귀병", [24968, 20532, 26863, 320559, 15379], 0, "default.jpg", 23, "che_200423_egv4", 66, ["hall:dex4"]], + ["23·사이언스베슬", 68, 10, 84, "che_event_집중", [42415, 44878, 38642, 306662, 10603], 1, "58d2ea1.jpg?=20200425", 23, "che_200423_egv4", 67, ["hall:dex1", "hall:dex4"]], + ["23·이드", 11, 76, 75, "che_event_저격", [0, 0, 0, 0, 0], 1, "ee26023.jpg?=20200402", 23, "che_200423_egv4", 74, ["hall:firenum", "hall:tprate"]], + ["23·뜨뜨뜨뜨", 80, 10, 74, "che_event_집중", [26040, 24307, 60622, 300433, 14495], 1, "a1ad420.jpg?=20200425", 23, "che_200423_egv4", 88, ["hall:killnum", "hall:winrate"]], + ["23·천괴금", 82, 69, 10, "che_event_무쌍", [385643, 51874, 62500, 68081, 47300], 1, "2b239af.png?=20190824", 23, "che_200423_egv4", 89, ["chief:10", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["23·펭수크류", 71, 10, 81, "che_event_신산", [33213, 26177, 39027, 176741, 8993], 1, "51540ea.jpg?=20200425", 23, "che_200423_egv4", 98, ["hall:betgold"]], + ["23·정채연", 72, 78, 10, "che_event_저격", [13635, 8336, 228418, 54829, 2030], 1, "9705097.jpg?=20191001", 23, "che_200423_egv4", 172, ["hall:dex3", "hall:tprate"]], + ["23·마검", 69, 10, 81, "che_event_신중", [0, 17799, 31869, 254581, 3714], 0, "default.jpg", 23, "che_200423_egv4", 179, ["hall:tirate", "hall:winrate"]], + ["23·개장수", 82, 69, 10, "che_event_무쌍", [16732, 358774, 25853, 76195, 12038], 1, "df79d1c.jpg?=20200428", 23, "che_200423_egv4", 196, ["hall:dex2", "hall:tlrate"]], + ["24·행복했으면좋겠어", 69, 10, 83, "che_event_저격", [0, 4680, 3987, 79087, 17716], 0, "default.jpg", 24, "che_200514_0DJ7", 8, ["hall:dedication", "hall:ttrate"]], + ["24·만샘", 71, 10, 83, "che_event_신중", [15125, 16130, 10306, 211417, 29217], 1, "4a206a1.jpg?=20181122", 24, "che_200514_0DJ7", 9, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["24·호시이 미키", 81, 73, 10, "che_event_돌격", [3492, 30132, 295674, 41506, 38362], 1, "4c1e8c4.jpg?=20200515", 24, "che_200514_0DJ7", 11, ["hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["24·킹구갓구", 84, 68, 10, "che_event_위압", [9360, 41905, 238478, 34531, 29359], 1, "fb3c625.gif?=20190428", 24, "che_200514_0DJ7", 12, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["24·카나리아", 69, 10, 84, "che_event_신중", [27037, 20893, 25685, 360770, 35575], 1, "2a52361.jpg?=20200514", 24, "che_200514_0DJ7", 18, ["hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["24·Hide_D", 67, 12, 83, "che_event_신중", [2455, 8108, 0, 127077, 31017], 1, "9f0a2a8.png?=20200106", 24, "che_200514_0DJ7", 19, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:winrate"]], + ["24·펭수", 68, 11, 83, "che_event_필살", [8290, 5150, 3316, 134253, 17116], 1, "51540ea.jpg?=20200425", 24, "che_200514_0DJ7", 20, ["hall:dedication", "hall:dex4", "hall:tirate"]], + ["24·smile", 73, 81, 10, "che_event_필살", [21651, 46701, 13805, 9823, 44002], 0, "default.jpg", 24, "che_200514_0DJ7", 22, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:killrate", "hall:tirate", "hall:tsrate", "hall:ttrate"]], + ["24·천고l금", 11, 72, 79, "che_event_환술", [3000, 0, 0, 33963, 7937], 1, "da36800.png?=20200513", 24, "che_200514_0DJ7", 23, ["chief:7", "hall:dedication", "hall:tirate", "hall:tsrate", "hall:ttrate"]], + ["24·혜미", 86, 67, 10, "che_event_척사", [27610, 0, 16615, 320, 235800], 1, "699a977.jpg?=20200516", 24, "che_200514_0DJ7", 24, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:tlrate", "hall:winrate"]], + ["24·레아실비아", 71, 83, 10, "che_event_무쌍", [20636, 0, 106424, 20319, 28302], 1, "3b13bb3.jpg?=20200515", 24, "che_200514_0DJ7", 26, ["hall:dex1", "hall:dex3", "hall:killrate", "hall:tsrate"]], + ["24·Already", 69, 10, 84, "che_event_반계", [12230, 3497, 0, 101675, 18386], 0, "default.jpg", 24, "che_200514_0DJ7", 27, ["hall:dedication", "hall:ttrate"]], + ["24·평민킬러", 68, 10, 85, "che_event_신산", [1018, 5217, 15551, 136102, 9997], 1, "fb23a32.jpg?=20190904", 24, "che_200514_0DJ7", 28, ["chief:9", "hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:tirate", "hall:winrate"]], + ["24·카이스트", 67, 10, 84, "che_event_집중", [14063, 3225, 17634, 179188, 22413], 1, "9361ef8.jpg?=20180907", 24, "che_200514_0DJ7", 29, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum"]], + ["24·료우기시키", 83, 69, 10, "che_event_위압", [4196, 20407, 121174, 15290, 16666], 1, "559083f.jpg?=20190905", 24, "che_200514_0DJ7", 30, ["hall:dex3", "hall:killrate", "hall:tlrate"]], + ["24·모가미 시즈카", 83, 70, 10, "che_event_척사", [171308, 1093, 37132, 30646, 27127], 1, "db2e1be.jpg?=20200514", 24, "che_200514_0DJ7", 31, ["hall:dex1", "hall:experience", "hall:tirate", "hall:tlrate", "hall:ttrate"]], + ["24·독구", 69, 10, 85, "che_event_저격", [30082, 30706, 17351, 383652, 27441], 1, "a7388f.png?=20200424", 24, "che_200514_0DJ7", 32, ["hall:dex1", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["24·외심장", 71, 10, 82, "che_event_척사", [12208, 24165, 18013, 266992, 15865], 1, "36110cd.jpg?=20180826", 24, "che_200514_0DJ7", 33, ["hall:betgold", "hall:dex4", "hall:killcrew", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["24·코리안코커", 81, 71, 10, "che_event_척사", [9640, 36774, 137952, 59674, 11942], 1, "f44d79c.png?=20200503", 24, "che_200514_0DJ7", 34, ["hall:dex3", "hall:tlrate"]], + ["24·유메미 리아무", 74, 79, 10, "che_event_저격", [8690, 76733, 28599, 16019, 28974], 1, "30d9ff0.jpg?=20200514", 24, "che_200514_0DJ7", 35, ["chief:12", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:killrate", "hall:tsrate", "hall:ttrate"]], + ["24·천무군사육백언", 69, 10, 84, "che_event_신중", [2691, 24634, 23579, 152708, 15548], 1, "9cc7bf4.jpg?=20200514", 24, "che_200514_0DJ7", 36, ["hall:dex4", "hall:ttrate"]], + ["24·ㅇㄷㄷㄷㄷㄷㄷ", 68, 84, 11, "che_event_위압", [47947, 5960, 77638, 20699, 19562], 0, "default.jpg", 24, "che_200514_0DJ7", 40, ["hall:dex1", "hall:dex3", "hall:tsrate"]], + ["24·땅땅땅땅", 83, 70, 10, "che_event_격노", [8162, 60987, 278719, 21921, 46219], 1, "99cd27f.gif?=20190606", 24, "che_200514_0DJ7", 42, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["24·경계의 거주자", 86, 68, 10, "che_event_돌격", [7501, 144604, 6967, 33641, 11209], 1, "7c6608.jpg?=20200514", 24, "che_200514_0DJ7", 43, ["chief:8", "hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["24·별이다섯개", 10, 77, 72, "che_event_저격", [0, 0, 0, 0, 0], 1, "aea2eb7.jpg?=20200514", 24, "che_200514_0DJ7", 45, ["hall:tirate", "hall:tsrate"]], + ["24·닭둘기", 84, 67, 11, "che_event_필살", [15965, 173400, 37401, 38961, 28590], 1, "dcf6070.jpg?=20200514", 24, "che_200514_0DJ7", 46, ["hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["24·계략함", 71, 79, 11, "che_event_무쌍", [21747, 49844, 0, 11043, 15583], 0, "default.jpg", 24, "che_200514_0DJ7", 47, ["hall:dex1", "hall:dex2", "hall:tsrate"]], + ["24·연채홍", 68, 10, 84, "che_event_척사", [0, 6658, 18873, 101277, 26492], 0, "default.jpg", 24, "che_200514_0DJ7", 48, ["chief:5", "hall:dedication", "hall:experience"]], + ["24·건방진노예", 69, 10, 84, "che_event_반계", [6187, 0, 3417, 58297, 13786], 0, "default.jpg", 24, "che_200514_0DJ7", 50, ["hall:dedication", "hall:tirate"]], + ["24·갈근", 11, 67, 83, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 24, "che_200514_0DJ7", 51, ["hall:tirate"]], + ["24·개미호랑이블린", 68, 10, 83, "che_event_집중", [17332, 9170, 7337, 174876, 24439], 1, "9e0429e.jpg?=20200313", 24, "che_200514_0DJ7", 53, ["hall:dex1", "hall:dex4", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["24·로비", 10, 68, 84, "che_event_반계", [0, 0, 0, 0, 0], 1, "708a981.png?=20200402", 24, "che_200514_0DJ7", 54, ["hall:tsrate"]], + ["24·세미얼터", 81, 71, 11, "che_event_기병", [2742, 0, 146616, 38088, 28427], 1, "5b8a3a2.png?=20200515", 24, "che_200514_0DJ7", 56, ["chief:10", "hall:dex3", "hall:tlrate"]], + ["24·돌아온너구리", 83, 68, 10, "che_event_필살", [10038, 91922, 75801, 14335, 19033], 0, "default.jpg", 24, "che_200514_0DJ7", 57, ["chief:11", "hall:dex2", "hall:dex3", "hall:killrate"]], + ["24·일이석우", 68, 10, 83, "che_event_필살", [1282, 0, 5452, 60001, 13157], 1, "9c2026b.jpg?=20200527", 24, "che_200514_0DJ7", 58, ["hall:dedication"]], + ["24·정채연", 72, 80, 10, "che_event_척사", [34, 77053, 8489, 12061, 9739], 1, "9705097.jpg?=20191001", 24, "che_200514_0DJ7", 59, ["chief:6", "hall:dex2", "hall:killrate", "hall:tsrate", "hall:winrate"]], + ["24·로리", 72, 80, 10, "che_event_견고", [28855, 0, 4192, 14790, 2033], 1, "50794a6.jpg?=20190923", 24, "che_200514_0DJ7", 60, ["hall:dex1", "hall:tsrate"]], + ["24·김갑환", 81, 69, 10, "che_event_돌격", [7536, 40387, 145098, 33592, 14972], 1, "dcff9fd.jpg?=20180823", 24, "che_200514_0DJ7", 72, ["hall:dex2", "hall:dex3"]], + ["26·Hide_D", 74, 15, 92, "che_event_척사", [32339, 30842, 12613, 323136, 30963], 1, "9f0a2a8.png?=20200106", 26, "che_200716_3evx", 6, ["hall:dex4", "hall:dex5", "hall:killcrew_person", "hall:warnum"]], + ["26·smile", 87, 78, 17, "che_event_궁병", [9483, 179209, 1068, 30166, 0], 0, "default.jpg", 26, "che_200716_3evx", 7, ["hall:dex2", "hall:tlrate"]], + ["26·사뉴카린시등분", 74, 15, 92, "che_event_집중", [12029, 16754, 14228, 338646, 8933], 1, "326e427.jpg?=20200723", 26, "che_200716_3evx", 8, ["chief:7", "hall:dex4", "hall:killcrew_person", "hall:winrate"]], + ["26·카린", 87, 77, 16, "che_event_위압", [26763, 505723, 16575, 15005, 19076], 1, "fb3c625.gif?=20190428", 26, "che_200716_3evx", 11, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["26·다람쥐", 92, 74, 16, "che_event_견고", [48907, 185871, 19335, 52775, 22066], 1, "1161424.gif?=20200718", 26, "che_200716_3evx", 13, ["hall:dex1", "hall:dex2", "hall:tlrate"]], + ["26·프레이이시스", 88, 76, 15, "che_event_궁병", [44142, 199714, 8520, 36716, 21812], 1, "b723845.jpg?=20200716", 26, "che_200716_3evx", 14, ["hall:dex1", "hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["26·????", 85, 16, 79, "che_event_신산", [10110, 46523, 17083, 203641, 24701], 1, "c32df1b.png?=20200716", 26, "che_200716_3evx", 16, ["hall:dedication", "hall:dex2"]], + ["26·이초홍", 74, 16, 91, "che_event_반계", [7995, 32637, 25701, 268670, 73323], 1, "ac758a0.jpg?=20200716", 26, "che_200716_3evx", 17, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:ttrate"]], + ["26·수장", 84, 81, 15, "che_event_위압", [275020, 9883, 12463, 43924, 26502], 1, "190d7ff.jpg?=20200312", 26, "che_200716_3evx", 18, ["hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["26·모루좀뽑아라", 75, 16, 91, "che_event_신산", [9373, 20400, 7815, 499558, 13989], 0, "default.jpg", 26, "che_200716_3evx", 19, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["26·갈근", 15, 72, 93, "che_event_저격", [0, 0, 0, 2448, 597], 0, "default.jpg", 26, "che_200716_3evx", 20, ["hall:tirate"]], + ["26·rwitch", 74, 15, 92, "che_event_신산", [24905, 18221, 25429, 311908, 25534], 1, "dcc638d.jpg?=20190725", 26, "che_200716_3evx", 21, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:warnum"]], + ["26·떼껄룩", 87, 78, 16, "che_event_징병", [3935, 173187, 1046, 18528, 50162], 0, "default.jpg", 26, "che_200716_3evx", 24, ["hall:dex2", "hall:dex5", "hall:tlrate"]], + ["26·슬라임", 86, 79, 15, "che_event_필살", [314323, 10320, 35875, 44562, 63783], 0, "default.jpg", 26, "che_200716_3evx", 25, ["chief:6", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:winrate"]], + ["26·바넬로피", 88, 78, 15, "che_event_척사", [8120, 31088, 388876, 61107, 28456], 1, "1aef988.jpg?=20200717", 26, "che_200716_3evx", 26, ["chief:11", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["26·돼지", 78, 88, 15, "che_event_위압", [343248, 7128, 29621, 56379, 28202], 1, "b0ce79d.png?=20200721", 26, "che_200716_3evx", 28, ["chief:10", "hall:dedication", "hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["26·국립국어원", 71, 15, 95, "che_event_저격", [0, 0, 0, 0, 0], 1, "ca34191.jpg?=20200716", 26, "che_200716_3evx", 29, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["26·플라", 69, 20, 92, "che_event_집중", [18861, 19765, 15628, 224742, 15548], 1, "816bde9.jpg?=20200716", 26, "che_200716_3evx", 30, ["hall:dedication", "hall:dex4", "hall:experience", "hall:winrate"]], + ["26·외심장", 73, 16, 93, "che_event_신산", [22637, 8581, 19454, 231309, 29120], 1, "36110cd.jpg?=20180826", 26, "che_200716_3evx", 31, ["hall:dex4", "hall:dex5", "hall:firenum", "hall:tirate"]], + ["26·김나영", 76, 90, 16, "che_event_돌격", [26107, 6147, 379712, 75224, 21867], 1, "c90a3d4.jpg?=20190905", 26, "che_200716_3evx", 32, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["26·연", 89, 76, 15, "che_event_필살", [0, 14, 20901, 5923, 189277], 1, "574aa5f.png?=20200802", 26, "che_200716_3evx", 33, ["hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["26·시딱마", 75, 15, 90, "che_event_신산", [17590, 0, 17110, 251531, 17269], 0, "default.jpg", 26, "che_200716_3evx", 34, ["hall:dex4", "hall:ttrate"]], + ["26·창모", 76, 15, 89, "che_event_집중", [40734, 7540, 9892, 203633, 18165], 1, "43193f0.jpg?=20200716", 26, "che_200716_3evx", 35, ["hall:tirate", "hall:ttrate"]], + ["26·병리학적자세", 72, 15, 93, "che_event_집중", [2670, 3953, 12338, 193185, 16524], 1, "3679089.jpg?=20180629", 26, "che_200716_3evx", 36, ["hall:tirate"]], + ["26·보스곰", 74, 15, 91, "che_event_집중", [49, 23974, 13619, 316891, 23608], 1, "773556e.gif?=20190822", 26, "che_200716_3evx", 37, ["chief:5", "hall:dedication", "hall:dex4", "hall:killrate"]], + ["26·료우기시키", 88, 78, 15, "che_event_저격", [15924, 26289, 316555, 71475, 21754], 1, "559083f.jpg?=20190905", 26, "che_200716_3evx", 40, ["hall:dex3", "hall:killcrew_person"]], + ["26·건방진노예", 76, 90, 16, "che_event_무쌍", [23369, 239255, 17766, 38137, 33372], 1, "e1d250.png?=20200719", 26, "che_200716_3evx", 41, ["hall:dex2", "hall:dex5", "hall:tsrate"]], + ["26·낙지꿈", 76, 16, 88, "che_event_신중", [17289, 23226, 23261, 258449, 23656], 0, "default.jpg", 26, "che_200716_3evx", 42, ["hall:dedication", "hall:dex4"]], + ["26·레벤", 73, 15, 91, "che_event_반계", [4430, 3734, 10545, 160291, 14480], 0, "default.jpg", 26, "che_200716_3evx", 44, ["hall:tirate"]], + ["26·일이석우", 78, 85, 15, "che_event_공성", [0, 10700, 0, 12824, 469750], 1, "9c2026b.jpg?=20200527", 26, "che_200716_3evx", 45, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tsrate"]], + ["26·개미호랑2", 73, 90, 15, "che_event_견고", [288, 0, 93742, 6059, 5087], 1, "9e0429e.jpg?=20200313", 26, "che_200716_3evx", 47, ["hall:dex3", "hall:tsrate"]], + ["26·김갑환", 87, 78, 15, "che_event_돌격", [346524, 20951, 20680, 47837, 27193], 1, "dcff9fd.jpg?=20180823", 26, "che_200716_3evx", 49, ["hall:dex1", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["26·검호매의눈미호크", 85, 79, 16, "che_event_무쌍", [353639, 0, 26849, 68746, 21657], 1, "284e288.jpg?=20200716", 26, "che_200716_3evx", 53, ["hall:dex1", "hall:experience", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["26·시라이", 76, 89, 15, "che_event_척사", [240284, 6177, 33912, 39817, 18943], 1, "9f7aca2.jpg?=20200718", 26, "che_200716_3evx", 54, ["hall:dex1", "hall:dex3", "hall:experience", "hall:tsrate"]], + ["26·팀쿡", 90, 77, 15, "che_event_견고", [22014, 211466, 11573, 55566, 24781], 0, "default.jpg", 26, "che_200716_3evx", 55, ["hall:dex2", "hall:tlrate"]], + ["26·천재", 76, 15, 91, "che_event_집중", [10256, 4662, 5250, 141527, 9519], 0, "default.jpg", 26, "che_200716_3evx", 67, ["hall:killrate_person", "hall:ttrate"]], + ["26·민트토끼", 72, 16, 94, "che_event_저격", [0, 7112, 0, 130793, 8075], 1, "3d9efb2.gif?=20200717", 26, "che_200716_3evx", 69, ["hall:killrate", "hall:killrate_person"]], + ["26·평민킬러", 75, 92, 15, "che_event_무쌍", [425157, 4564, 31773, 77457, 36426], 1, "fb23a32.jpg?=20190904", 26, "che_200716_3evx", 70, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["26·카라라트리", 75, 90, 15, "che_event_무쌍", [13974, 26882, 355365, 39113, 27730], 1, "848a454.jpg?=20200717", 26, "che_200716_3evx", 71, ["chief:8", "hall:dex3", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["26·시키면반대로함", 15, 72, 93, "che_event_신산", [0, 0, 0, 122, 0], 0, "default.jpg", 26, "che_200716_3evx", 72, ["hall:firenum", "hall:tirate"]], + ["26·딱밤10스택=깡", 17, 74, 89, "che_event_반계", [0, 0, 0, 0, 0], 1, "59fd00.png?=20200717", 26, "che_200716_3evx", 78, ["hall:tirate", "hall:ttrate"]], + ["26·늦엇따당", 88, 75, 15, "che_event_무쌍", [124422, 7894, 38306, 38130, 7684], 1, "99cd27f.gif?=20190606", 26, "che_200716_3evx", 83, ["hall:dex1", "hall:dex3", "hall:tlrate"]], + ["26·로리", 16, 71, 92, "che_event_척사", [0, 0, 0, 0, 0], 1, "50794a6.jpg?=20190923", 26, "che_200716_3evx", 112, ["hall:dedication"]], + ["26·페이트", 75, 16, 87, "che_event_신중", [10917, 33823, 4849, 155197, 7651], 1, "65f1662.jpg?=20200721", 26, "che_200716_3evx", 205, ["hall:dex2", "hall:firenum"]], + ["26·체하나도모름비", 15, 74, 83, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 26, "che_200716_3evx", 208, ["hall:tirate"]], + ["26·Nunsense", 84, 77, 15, "che_event_징병", [21737, 121669, 7073, 50092, 2716], 1, "8b9b041.jpg?=20200721", 26, "che_200716_3evx", 222, ["hall:dex2"]], + ["26·카오스피닉스", 15, 82, 77, "che_event_돌격", [0, 0, 0, 0, 0], 1, "7f80b2f.jpg?=20190715", 26, "che_200716_3evx", 228, ["hall:tsrate"]], + ["26·손견문대", 75, 15, 85, "che_event_신중", [12649, 4871, 7148, 128067, 19301], 0, "default.jpg", 26, "che_200716_3evx", 250, ["hall:ttrate"]], + ["26·불랑기 화승총병", 72, 15, 88, "che_event_척사", [8991, 14612, 19908, 110377, 9626], 0, "default.jpg", 26, "che_200716_3evx", 252, ["hall:winrate"]], + ["26·구경꾼", 74, 15, 86, "che_event_환술", [0, 0, 0, 0, 0], 1, "eaa25e5.png?=20190910", 26, "che_200716_3evx", 289, ["hall:firenum"]], + ["27·평민킬러", 93, 74, 15, "che_event_견고", [328375, 19870, 72127, 73179, 28622], 1, "fb23a32.jpg?=20190904", 27, "che_200813_3JgP", 9, ["hall:dex1", "hall:dex3", "hall:tlrate", "hall:tsrate", "hall:ttrate"]], + ["27·Hide_D", 76, 16, 87, "che_event_저격", [21081, 17905, 1664, 264773, 31872], 1, "9f0a2a8.png?=20200106", 27, "che_200813_3JgP", 10, ["hall:occupied"]], + ["27·킹구", 78, 87, 15, "che_event_척사", [7824, 16063, 426658, 25495, 23824], 1, "fb3c625.gif?=20190428", 27, "che_200813_3JgP", 11, ["hall:dex3", "hall:tsrate"]], + ["27·외심장", 76, 15, 91, "che_event_집중", [26982, 17222, 17164, 403788, 16445], 1, "36110cd.jpg?=20180826", 27, "che_200813_3JgP", 12, ["hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["27·플라", 90, 75, 15, "che_event_돌격", [37185, 273841, 127436, 98723, 19487], 1, "816bde9.jpg?=20200716", 27, "che_200813_3JgP", 13, ["hall:dex2", "hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["27·슬라임", 87, 79, 15, "che_event_격노", [21520, 37308, 305010, 39429, 55017], 0, "default.jpg", 27, "che_200813_3JgP", 16, ["hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:tlrate"]], + ["27·김갑환", 84, 81, 16, "che_event_견고", [103424, 21271, 295071, 105466, 19801], 1, "dcff9fd.jpg?=20180823", 27, "che_200813_3JgP", 17, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["27·평온의온도", 75, 15, 91, "che_event_신산", [11622, 21107, 35073, 496002, 24237], 1, "7a86b2f.webp?=20200826", 27, "che_200813_3JgP", 19, ["chief:11", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["27·파워에이드", 75, 15, 90, "che_event_집중", [14697, 26762, 45820, 288257, 38236], 1, "7cde6c8.jpg?=20200813", 27, "che_200813_3JgP", 20, ["hall:dex5", "hall:tirate"]], + ["27·RGB", 76, 15, 88, "che_event_신중", [48528, 21254, 41438, 279400, 11089], 1, "91651d1.webp?=20200813", 27, "che_200813_3JgP", 27, ["hall:dex1"]], + ["27·연채홍", 75, 15, 90, "che_event_집중", [32340, 5375, 24321, 262482, 36315], 1, "773556e.gif?=20190822", 27, "che_200813_3JgP", 28, ["hall:winrate"]], + ["27·김삿갓", 19, 73, 89, "che_event_신산", [0, 0, 0, 0, 0], 1, "3f9f8af.gif?=20200825", 27, "che_200813_3JgP", 29, ["hall:tsrate", "hall:ttrate"]], + ["27·태을진인", 15, 72, 95, "che_event_척사", [0, 0, 0, 0, 0], 1, "5a607be.jpg?=20200813", 27, "che_200813_3JgP", 30, ["hall:experience"]], + ["27·코드블루", 75, 15, 90, "che_event_집중", [3436, 23852, 39886, 465912, 42245], 1, "5c60836.jpg?=20200813", 27, "che_200813_3JgP", 31, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["27·Oz Vessalius", 75, 16, 92, "che_event_신산", [25935, 10913, 24946, 422082, 46168], 1, "21780f2.jpg?=20200812", 27, "che_200813_3JgP", 32, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tirate"]], + ["27·김나영", 73, 92, 16, "che_event_위압", [59501, 279824, 20812, 68418, 87778], 1, "c90a3d4.jpg?=20190905", 27, "che_200813_3JgP", 33, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["27·무한파워안경", 17, 70, 94, "che_event_신산", [0, 0, 0, 0, 0], 1, "b7e1a1f.jpg?=20180525", 27, "che_200813_3JgP", 34, ["hall:tirate"]], + ["27·좌우쌍욍검유비", 88, 76, 15, "che_event_공성", [1930, 49445, 350730, 51476, 127117], 1, "b9cb94e.jpg?=20200805", 27, "che_200813_3JgP", 36, ["chief:6", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["27·독구", 77, 15, 90, "che_event_신산", [13756, 39987, 36335, 519343, 19490], 1, "b769004.png?=20200726", 27, "che_200813_3JgP", 37, ["chief:12", "hall:dedication", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum"]], + ["27·티와즈", 76, 88, 16, "che_event_견고", [556071, 10300, 11065, 10215, 14337], 1, "b033007.jpg?=20200813", 27, "che_200813_3JgP", 38, ["chief:10", "hall:betgold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["27·료우기시키", 88, 78, 15, "che_event_돌격", [27311, 232365, 152840, 73882, 35427], 1, "559083f.jpg?=20190905", 27, "che_200813_3JgP", 39, ["hall:dex2", "hall:dex3", "hall:occupied", "hall:tlrate"]], + ["27·카이스트", 77, 15, 88, "che_event_귀병", [44185, 31197, 24729, 378695, 18448], 1, "9361ef8.jpg?=20180907", 27, "che_200813_3JgP", 40, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:firenum", "hall:killcrew_person"]], + ["27·미즈하라 치즈루", 93, 75, 15, "che_event_저격", [24606, 14798, 382590, 109486, 26909], 1, "29b7b6e.gif?=20200814", 27, "che_200813_3JgP", 41, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["27·만샘", 76, 15, 91, "che_event_의술", [6157, 31823, 34012, 367505, 30094], 1, "4a206a1.jpg?=20181122", 27, "che_200813_3JgP", 42, ["hall:dedication", "hall:dex2", "hall:dex4"]], + ["27·갈근", 15, 76, 90, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 27, "che_200813_3JgP", 44, ["hall:firenum"]], + ["27·카오스피닉스", 15, 71, 94, "che_event_집중", [0, 0, 0, 0, 0], 1, "7f80b2f.jpg?=20190715", 27, "che_200813_3JgP", 45, ["hall:tirate"]], + ["27·.", 89, 76, 16, "che_event_척사", [381657, 27108, 30955, 88955, 28368], 0, "default.jpg", 27, "che_200813_3JgP", 47, ["chief:8", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["27·DDDD", 86, 15, 79, "che_event_신산", [7092, 17438, 43824, 429534, 6462], 1, "a1ad420.jpg?=20200425", 27, "che_200813_3JgP", 48, ["chief:5", "hall:dex4"]], + ["27·낙지꿈", 74, 16, 91, "che_event_신산", [45995, 10026, 20324, 258916, 10631], 0, "default.jpg", 27, "che_200813_3JgP", 50, ["hall:dex1", "hall:firenum", "hall:tirate", "hall:winrate"]], + ["27·10068", 75, 15, 90, "che_event_환술", [6406, 18783, 34572, 302122, 39794], 0, "default.jpg", 27, "che_200813_3JgP", 51, ["hall:dex5"]], + ["27·시뉴카린스택계산기", 78, 15, 89, "che_event_저격", [28753, 22731, 42592, 361818, 40488], 1, "59fd00.png?=20200717", 27, "che_200813_3JgP", 52, ["hall:dex5", "hall:ttrate"]], + ["27·불반도", 74, 17, 92, "che_event_신중", [40918, 14960, 26391, 211317, 10188], 0, "default.jpg", 27, "che_200813_3JgP", 54, ["hall:dex1", "hall:ttrate"]], + ["27·따당따당", 86, 79, 15, "che_event_돌격", [33281, 22170, 169360, 46034, 29983], 1, "99cd27f.gif?=20190606", 27, "che_200813_3JgP", 55, ["hall:dex3", "hall:tlrate", "hall:tsrate"]], + ["27·레벤", 90, 76, 15, "che_event_척사", [120441, 235217, 47229, 94905, 17168], 0, "default.jpg", 27, "che_200813_3JgP", 58, ["hall:dex1", "hall:dex2", "hall:experience", "hall:firenum", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["27·일이석우", 74, 15, 90, "che_event_신산", [22677, 3107, 22321, 169066, 21499], 1, "9c2026b.jpg?=20200527", 27, "che_200813_3JgP", 59, ["hall:firenum"]], + ["27·미스터트롯예매기원", 16, 71, 94, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 27, "che_200813_3JgP", 61, ["hall:dedication", "hall:firenum"]], + ["27·민토의속마음", 75, 16, 91, "che_event_신중", [16200, 23263, 5382, 401151, 4961], 1, "e610ff7.gif?=20200813", 27, "che_200813_3JgP", 75, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["27·건방진노예", 75, 15, 89, "che_event_신중", [27021, 12661, 21393, 286784, 10487], 0, "default.jpg", 27, "che_200813_3JgP", 78, ["hall:winrate"]], + ["27·임사영", 72, 15, 91, "che_event_신중", [8874, 10068, 10408, 64188, 9078], 1, "7f9473e.gif?=20200211", 27, "che_200813_3JgP", 82, ["hall:dedication", "hall:tirate"]], + ["27·크류", 75, 89, 17, "che_event_척사", [6631, 27238, 154457, 40746, 48676], 1, "51540ea.jpg?=20200425", 27, "che_200813_3JgP", 86, ["hall:dex3", "hall:dex5", "hall:ttrate"]], + ["27·asdf", 88, 78, 15, "che_event_무쌍", [23286, 81912, 18007, 45249, 2397], 0, "default.jpg", 27, "che_200813_3JgP", 89, ["hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["27·시뉴카린", 75, 16, 90, "che_event_환술", [12433, 27173, 41403, 367167, 25788], 1, "4d0310a.gif?=20200814", 27, "che_200813_3JgP", 91, ["chief:7", "hall:dex4", "hall:killrate_person", "hall:tirate"]], + ["27·오이슬", 15, 80, 85, "che_event_신산", [4038, 0, 0, 14464, 4097], 0, "default.jpg", 27, "che_200813_3JgP", 99, ["hall:firenum", "hall:tsrate"]], + ["27·개미호랑이", 74, 16, 90, "che_event_신중", [5946, 21933, 38387, 290896, 20432], 1, "9e0429e.jpg?=20200313", 27, "che_200813_3JgP", 117, ["hall:killrate", "hall:killrate_person", "hall:ttrate"]], + ["27·네시", 75, 15, 89, "che_event_공성", [6498, 11184, 23694, 186586, 95806], 0, "default.jpg", 27, "che_200813_3JgP", 130, ["hall:dex5", "hall:occupied", "hall:tirate", "hall:ttrate"]], + ["27·구독독구해주세요", 75, 15, 90, "che_event_신중", [5145, 8560, 35205, 203873, 35600], 0, "default.jpg", 27, "che_200813_3JgP", 164, ["hall:ttrate"]], + ["27·smile", 16, 77, 85, "che_event_징병", [0, 0, 0, 2294, 275], 0, "default.jpg", 27, "che_200813_3JgP", 195, ["hall:firenum", "hall:ttrate"]], + ["28·숨질래", 75, 15, 94, "che_event_반계", [6674, 11915, 20850, 167781, 21523], 1, "7a86b2f.webp?=20200826", 28, "che_200910_cWTH", 5, ["hall:occupied", "hall:tirate"]], + ["28·하우젤", 75, 15, 93, "che_event_필살", [12922, 34062, 17431, 324008, 21805], 1, "dcff9fd.jpg?=20180823", 28, "che_200910_cWTH", 9, ["hall:dex4", "hall:ttrate"]], + ["28·10068", 74, 92, 15, "che_event_격노", [117983, 38024, 27309, 42003, 7518], 0, "default.jpg", 28, "che_200910_cWTH", 10, ["hall:dex1", "hall:firenum", "hall:tsrate"]], + ["28·플라", 90, 77, 16, "che_event_돌격", [37546, 45018, 197291, 45059, 24196], 1, "816bde9.jpg?=20200716", 28, "che_200910_cWTH", 11, ["hall:dex2", "hall:dex3", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:winrate"]], + ["28·그저늅늅", 74, 16, 94, "che_event_집중", [29189, 40126, 16335, 207133, 26108], 1, "5cedbb3.jpg?=20190817", 28, "che_200910_cWTH", 12, ["hall:dex2", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["28·리화", 15, 74, 94, "che_event_반계", [0, 0, 0, 0, 0], 1, "57697e3.jpg?=20200910", 28, "che_200910_cWTH", 14, ["hall:dedication", "hall:tirate"]], + ["28·이초홍", 16, 89, 78, "che_event_돌격", [0, 0, 0, 0, 0], 1, "641883f.jpg?=20200910", 28, "che_200910_cWTH", 16, ["hall:firenum", "hall:tsrate"]], + ["28·낙지꿈", 75, 16, 91, "che_event_환술", [49689, 24687, 49890, 372449, 4668], 0, "default.jpg", 28, "che_200910_cWTH", 22, ["hall:dex1", "hall:dex3", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["28·카이스트", 75, 15, 91, "che_event_신중", [13005, 10025, 31132, 243434, 26760], 1, "9361ef8.jpg?=20180907", 28, "che_200910_cWTH", 23, ["hall:occupied", "hall:ttrate"]], + ["28·호두농구왕왕쌍", 89, 75, 15, "che_event_위압", [13559, 31626, 243416, 44992, 84661], 1, "889056.jpg?=20200910", 28, "che_200910_cWTH", 28, ["hall:dedication", "hall:dex3", "hall:dex5", "hall:killrate", "hall:tlrate"]], + ["28·네시", 75, 15, 92, "che_event_신중", [32073, 24821, 24183, 347579, 33880], 0, "default.jpg", 28, "che_200910_cWTH", 30, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["28·임사영", 74, 15, 93, "che_event_척사", [1197, 9238, 13259, 117696, 7349], 1, "7f9473e.gif?=20200211", 28, "che_200910_cWTH", 32, ["hall:winrate"]], + ["28·smile", 75, 15, 92, "che_event_신산", [8491, 27827, 14724, 146641, 6234], 0, "default.jpg", 28, "che_200910_cWTH", 33, ["hall:dedication"]], + ["28·클로토", 76, 91, 15, "che_event_견고", [22608, 17732, 418884, 64188, 16802], 1, "c0a2d90.jpg?=20200910", 28, "che_200910_cWTH", 36, ["hall:betgold", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["28·나누기", 75, 15, 89, "che_event_집중", [29650, 15283, 15334, 269656, 42610], 1, "913a59.png?=20200910", 28, "che_200910_cWTH", 37, ["chief:7", "hall:dedication", "hall:dex4", "hall:dex5"]], + ["28·카류", 84, 83, 16, "che_event_위압", [7089, 55927, 500966, 75676, 28165], 1, "1a5835b.jpg?=20200905", 28, "che_200910_cWTH", 38, ["chief:10", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["28·하루1분", 73, 15, 93, "che_event_신중", [9558, 17184, 15922, 222769, 22134], 0, "default.jpg", 28, "che_200910_cWTH", 40, ["hall:ttrate"]], + ["28·병리학적자세", 75, 15, 93, "che_event_집중", [33042, 13166, 8892, 229034, 32235], 1, "3679089.jpg?=20180629", 28, "che_200910_cWTH", 41, ["hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate"]], + ["28·Dok2", 76, 15, 92, "che_event_신산", [15645, 18476, 29407, 458343, 22932], 1, "41f83a4.jpg?=20200910", 28, "che_200910_cWTH", 42, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["28·초코맛국수", 74, 15, 94, "che_event_반계", [22968, 8249, 6181, 279734, 40911], 1, "4bcd3f5.jpg?=20200904", 28, "che_200910_cWTH", 43, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["28·킹구", 90, 78, 15, "che_event_위압", [12717, 412793, 13330, 30416, 6219], 1, "fb3c625.gif?=20190428", 28, "che_200910_cWTH", 44, ["hall:dex2", "hall:killrate"]], + ["28·Per", 87, 81, 15, "che_event_위압", [31187, 494344, 3253, 110288, 24963], 1, "2fa4389.jpg?=20200910", 28, "che_200910_cWTH", 45, ["chief:11", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["28·Hide_D", 75, 16, 90, "che_event_척사", [3714, 16503, 9420, 133889, 58423], 1, "9f0a2a8.png?=20200106", 28, "che_200910_cWTH", 46, ["hall:dex5", "hall:tirate"]], + ["28·광성자", 94, 73, 15, "che_event_견고", [17184, 38044, 170768, 46389, 127582], 1, "1c59b40.jpg?=20200929", 28, "che_200910_cWTH", 47, ["chief:6", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killrate", "hall:tlrate"]], + ["28·전각 9글자", 79, 15, 91, "che_event_집중", [40738, 23533, 54122, 555877, 16563], 0, "default.jpg", 28, "che_200910_cWTH", 48, ["chief:5", "hall:dex1", "hall:dex3", "hall:dex4", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["28·일이석우", 76, 15, 92, "che_event_집중", [30266, 22715, 36369, 421288, 8146], 1, "9c2026b.jpg?=20200527", 28, "che_200910_cWTH", 49, ["hall:dex3", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["28·1", 85, 80, 16, "che_event_위압", [21956, 52106, 129707, 47076, 8879], 0, "default.jpg", 28, "che_200910_cWTH", 50, ["hall:dex2", "hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["28·평민킬러", 78, 90, 15, "che_event_위압", [384279, 9522, 26489, 71101, 38383], 1, "fb23a32.jpg?=20190904", 28, "che_200910_cWTH", 51, ["hall:dex1", "hall:dex5", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["28·갈근", 16, 73, 94, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 28, "che_200910_cWTH", 52, ["hall:dedication", "hall:tirate"]], + ["28·시뉴카린임포스터", 76, 90, 15, "che_event_돌격", [243109, 19191, 21407, 75205, 30235], 1, "59fd00.png?=20200717", 28, "che_200910_cWTH", 54, ["hall:dex1", "hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["28·로리", 79, 88, 15, "che_event_견고", [55755, 376241, 31380, 72421, 54233], 1, "50794a6.jpg?=20190923", 28, "che_200910_cWTH", 55, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:tsrate", "hall:warnum"]], + ["28·하루10분영어야나두", 76, 15, 90, "che_event_집중", [4293, 37851, 3682, 123181, 11194], 1, "c300801.jpg?=20200910", 28, "che_200910_cWTH", 56, ["hall:ttrate"]], + ["28·불반도", 77, 15, 90, "che_event_환술", [48158, 28371, 34182, 367456, 8475], 0, "default.jpg", 28, "che_200910_cWTH", 57, ["hall:dex1", "hall:dex4", "hall:warnum"]], + ["28·아리아", 74, 93, 15, "che_event_척사", [221784, 5449, 32195, 72028, 16420], 1, "f7358b.jpg?=20200822", 28, "che_200910_cWTH", 71, ["hall:dex1", "hall:firenum", "hall:tsrate"]], + ["28·민트토끼", 16, 73, 94, "che_event_신산", [0, 0, 0, 0, 0], 1, "a381f84.gif?=20200911", 28, "che_200910_cWTH", 79, ["hall:firenum"]], + ["28·외심장", 76, 15, 90, "che_event_신중", [16021, 6026, 21154, 177875, 16952], 1, "36110cd.jpg?=20180826", 28, "che_200910_cWTH", 95, ["hall:tirate", "hall:tlrate"]], + ["28·000000000", 15, 75, 91, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 28, "che_200910_cWTH", 113, ["hall:firenum", "hall:tirate"]], + ["28·건방진노예", 77, 15, 91, "che_event_신중", [33795, 36995, 30258, 369123, 5936], 0, "default.jpg", 28, "che_200910_cWTH", 124, ["hall:dex4", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["28·레벤", 87, 80, 15, "che_event_저격", [16579, 48214, 462530, 89288, 23546], 0, "default.jpg", 28, "che_200910_cWTH", 139, ["chief:8", "hall:dex2", "hall:dex3", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["28·조혜련", 86, 79, 15, "che_event_격노", [55461, 7585, 0, 23171, 0], 1, "e15df5b.png?=20200716", 28, "che_200910_cWTH", 227, ["hall:dex1"]], + ["28·ZL", 83, 15, 76, "che_event_집중", [16143, 11560, 13934, 100111, 6971], 0, "default.jpg", 28, "che_200910_cWTH", 255, ["hall:tlrate"]], + ["28·제로원", 75, 86, 15, "che_event_무쌍", [39183, 135884, 18796, 67457, 5973], 1, "64b105a.jpg?=20200921", 28, "che_200910_cWTH", 312, ["hall:dex1", "hall:dex2", "hall:tsrate"]], + ["29·네시", 73, 15, 88, "che_event_신중", [3770, 13065, 3003, 125064, 16567], 0, "default.jpg", 29, "che_201111_33ml", 6, ["chief:11", "hall:dedication", "hall:killrate", "hall:killrate_person"]], + ["29·둘리", 74, 15, 87, "che_event_집중", [14960, 17290, 17739, 141582, 21609], 1, "df25f02.jpg?=20201114", 29, "che_201111_33ml", 8, ["hall:dex2", "hall:dex4", "hall:killcrew_person"]], + ["29·빼빼로", 74, 86, 15, "che_event_돌격", [62472, 49336, 102711, 34245, 39102], 1, "5d0c1e1.png?=20201111", 29, "che_201111_33ml", 10, ["chief:10", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["29·이드", 74, 86, 15, "che_event_견고", [9274, 9709, 200170, 31005, 20057], 1, "641883f.jpg?=20200910", 29, "che_201111_33ml", 11, ["hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["29·보스곰", 74, 16, 86, "che_event_징병", [5773, 10638, 9569, 140241, 12532], 1, "773556e.gif?=20190822", 29, "che_201111_33ml", 12, ["chief:7", "hall:tirate", "hall:tlrate"]], + ["29·기", 89, 72, 15, "che_event_필살", [11265, 12229, 159370, 39591, 20039], 0, "default.jpg", 29, "che_201111_33ml", 14, ["hall:dex3", "hall:killcrew_person", "hall:tlrate", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["29·잭프로스트", 75, 15, 86, "che_event_척사", [14350, 5835, 3653, 73127, 62457], 1, "733f3b9.jpg?=20201111", 29, "che_201111_33ml", 17, ["hall:dedication", "hall:dex5", "hall:killrate_person", "hall:tlrate", "hall:ttrate"]], + ["29·1시30분", 89, 73, 15, "che_event_견고", [6227, 16004, 292895, 33442, 26718], 0, "default.jpg", 29, "che_201111_33ml", 18, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["29·로비", 15, 71, 91, "che_event_징병", [0, 0, 0, 0, 0], 1, "708a981.png?=20200402", 29, "che_201111_33ml", 20, ["hall:tirate", "hall:tsrate", "hall:ttrate"]], + ["29·나타", 74, 15, 88, "che_event_집중", [36198, 2357, 3981, 246405, 32928], 1, "c17b4b2.jpg?=20201111", 29, "che_201111_33ml", 21, ["hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["29·야가다마스터", 77, 85, 15, "che_event_저격", [0, 22627, 155612, 31020, 23839], 0, "default.jpg", 29, "che_201111_33ml", 22, ["chief:6", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["29·일이석우", 72, 15, 89, "che_event_저격", [4208, 2648, 3852, 123975, 26703], 1, "9c2026b.jpg?=20200527", 29, "che_201111_33ml", 26, ["hall:dedication", "hall:experience", "hall:killrate", "hall:tirate"]], + ["29·낙지꿈", 71, 15, 87, "che_event_신중", [10409, 2823, 3628, 145487, 30121], 0, "default.jpg", 29, "che_201111_33ml", 30, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate"]], + ["29·껄룩", 74, 85, 16, "che_event_저격", [106366, 5100, 0, 21741, 20446], 0, "default.jpg", 29, "che_201111_33ml", 37, ["hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:ttrate"]], + ["29·도우너", 75, 85, 15, "che_event_돌격", [126988, 10011, 1820, 27450, 13133], 1, "55b37a2.jpg?=20201111", 29, "che_201111_33ml", 39, ["hall:dex1", "hall:firenum", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["29·시딱마! 옥끼토끼!", 75, 15, 87, "che_event_징병", [18865, 19779, 8284, 120765, 17694], 1, "c4e8391.gif?=20201111", 29, "che_201111_33ml", 40, ["hall:dex2", "hall:tirate", "hall:tlrate"]], + ["29·이즈미", 74, 15, 86, "che_event_신중", [7309, 4430, 4873, 129565, 22800], 1, "5d37b46.jpg?=20201105", 29, "che_201111_33ml", 41, ["hall:tirate"]], + ["29·로리", 73, 15, 88, "che_event_집중", [0, 6291, 2373, 186549, 35041], 1, "50794a6.jpg?=20190923", 29, "che_201111_33ml", 45, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["29·앵벌스", 82, 75, 15, "che_event_무쌍", [8200, 16316, 0, 5855, 39790], 1, "e15df5b.png?=20200716", 29, "che_201111_33ml", 47, ["hall:dex2", "hall:dex5", "hall:tlrate"]], + ["29·갈근", 74, 16, 87, "che_event_신중", [11696, 7548, 11825, 163198, 37843], 0, "default.jpg", 29, "che_201111_33ml", 49, ["chief:5", "hall:dex4", "hall:dex5", "hall:ttrate", "hall:warnum"]], + ["29·I", 74, 88, 15, "che_event_보병", [113568, 3852, 31882, 12954, 7743], 0, "default.jpg", 29, "che_201111_33ml", 53, ["hall:dex1", "hall:dex3", "hall:firenum", "hall:tsrate"]], + ["29·코브라", 75, 15, 87, "che_event_저격", [16519, 4181, 8506, 208875, 17207], 1, "1102963.jpg?=20201112", 29, "che_201111_33ml", 56, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:tirate", "hall:tlrate", "hall:warnum"]], + ["29·그저늅늅", 73, 87, 15, "che_event_무쌍", [24005, 18846, 104901, 19928, 20662], 1, "5cedbb3.jpg?=20190817", 29, "che_201111_33ml", 58, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:firenum", "hall:tsrate"]], + ["29·Vicpie", 72, 16, 87, "che_event_신중", [0, 11476, 10520, 155774, 24653], 1, "c4a956e.png?=20201120", 29, "che_201111_33ml", 59, ["chief:9", "hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:occupied"]], + ["29·초코맛국수", 75, 16, 84, "che_event_저격", [3978, 9405, 8903, 141528, 48094], 1, "4bcd3f5.jpg?=20200904", 29, "che_201111_33ml", 60, ["hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["29·외심장", 75, 16, 86, "che_event_징병", [34513, 24662, 17991, 176754, 16421], 1, "36110cd.jpg?=20180826", 29, "che_201111_33ml", 63, ["hall:betgold", "hall:dex1", "hall:dex2", "hall:dex4", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["29·평민킬러", 76, 85, 15, "che_event_필살", [235256, 4058, 10652, 21438, 25208], 1, "fb23a32.jpg?=20190904", 29, "che_201111_33ml", 64, ["chief:8", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["29·민트토끼", 73, 16, 87, "che_event_신중", [11797, 19044, 4646, 251880, 13077], 1, "e04b397.gif?=20201119", 29, "che_201111_33ml", 68, ["hall:dex2", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["29·조승상", 87, 72, 16, "che_event_척사", [205872, 5254, 26663, 31698, 18211], 1, "bda7d37.jpg?=20200606", 29, "che_201111_33ml", 76, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["29·수장", 84, 76, 15, "che_event_필살", [40848, 170042, 5282, 36200, 36530], 1, "2a0afd0.jpg?=20201116", 29, "che_201111_33ml", 91, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["29·병리학적자세", 73, 15, 88, "che_event_집중", [4218, 377, 4898, 70729, 10126], 1, "3679089.jpg?=20180629", 29, "che_201111_33ml", 103, ["hall:winrate"]], + ["29·마왕", 71, 85, 17, "che_event_저격", [0, 10033, 112335, 25714, 14310], 1, "f7358b.jpg?=20200822", 29, "che_201111_33ml", 109, ["hall:dex3"]], + ["29·카오스피닉스", 15, 83, 77, "che_event_위압", [0, 0, 0, 0, 0], 1, "7f80b2f.jpg?=20190715", 29, "che_201111_33ml", 142, ["hall:tsrate", "hall:ttrate"]], + ["29·배규리", 74, 15, 84, "che_event_징병", [0, 3898, 4601, 150071, 23672], 1, "74dec00.png?=20201114", 29, "che_201111_33ml", 143, ["hall:dex4"]], + ["29·료우기시키", 80, 76, 15, "che_event_기병", [0, 2516, 28781, 10560, 0], 1, "559083f.jpg?=20190905", 29, "che_201111_33ml", 153, ["hall:dex3", "hall:tsrate"]], + ["29·게르티카", 82, 75, 17, "che_event_격노", [0, 77819, 720, 20825, 6208], 0, "default.jpg", 29, "che_201111_33ml", 205, ["hall:dex2"]], + ["31·네이미", 90, 15, 77, "che_event_집중", [65699, 21491, 32533, 581688, 26594], 0, "default.jpg", 31, "che_210211_57VT", 3, ["chief:5", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["31·Hide_D", 78, 16, 88, "che_event_징병", [102613, 56474, 41349, 627610, 57663], 1, "9f0a2a8.png?=20200106", 31, "che_210211_57VT", 4, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:occupied", "hall:warnum"]], + ["31·로비", 15, 72, 94, "che_event_저격", [0, 0, 0, 0, 0], 1, "708a981.png?=20200402", 31, "che_210211_57VT", 8, ["hall:dedication", "hall:experience", "hall:tirate", "hall:tsrate"]], + ["31·임사영", 84, 15, 86, "che_event_집중", [55540, 52457, 22392, 932292, 22653], 1, "7f9473e.gif?=20200211", 31, "che_210211_57VT", 9, ["hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["31·시뉴카린", 79, 16, 86, "che_event_집중", [51882, 17165, 32068, 543886, 22854], 1, "52c5495.gif?=20210211", 31, "che_210211_57VT", 11, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:ttrate"]], + ["31·카이스트", 76, 16, 87, "che_event_신산", [38769, 19745, 51109, 542636, 38378], 1, "9361ef8.jpg?=20180907", 31, "che_210211_57VT", 12, ["hall:dedication", "hall:dex3", "hall:dex4", "hall:dex5"]], + ["31·초코맛국수", 75, 15, 88, "che_event_집중", [16043, 0, 45194, 385947, 37099], 1, "4bcd3f5.jpg?=20200904", 31, "che_210211_57VT", 13, ["hall:dedication", "hall:dex5", "hall:occupied", "hall:tirate"]], + ["31·smile", 77, 16, 90, "che_event_집중", [16432, 24769, 33079, 500965, 34216], 0, "default.jpg", 31, "che_210211_57VT", 14, ["hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["31·독구", 78, 15, 89, "che_event_집중", [43954, 20534, 38970, 518565, 36370], 1, "c17d03c.png?=20210126", 31, "che_210211_57VT", 15, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:ttrate"]], + ["31·퍄퍄", 78, 87, 15, "che_event_위압", [104913, 556801, 9974, 154903, 33137], 0, "default.jpg", 31, "che_210211_57VT", 16, ["hall:dex1", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["31·소울아크", 89, 76, 15, "che_event_돌격", [213701, 23000, 42570, 88385, 34343], 0, "default.jpg", 31, "che_210211_57VT", 17, ["hall:dex1", "hall:dex5", "hall:tlrate", "hall:tsrate"]], + ["31·이즈미", 78, 87, 15, "che_event_돌격", [40152, 14383, 496267, 117615, 27851], 1, "5d37b46.jpg?=20201105", 31, "che_210211_57VT", 18, ["hall:dex3", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["31·평민킬러", 92, 75, 16, "che_event_견고", [738064, 33340, 53894, 129242, 28922], 1, "fb23a32.jpg?=20190904", 31, "che_210211_57VT", 19, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["31·토마스", 76, 90, 16, "che_event_돌격", [61528, 11660, 506819, 96125, 90533], 1, "f8118c3.jpg?=20210209", 31, "che_210211_57VT", 20, ["chief:8", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["31·외심장", 77, 15, 89, "che_event_척사", [78589, 36144, 37705, 466261, 46524], 1, "36110cd.jpg?=20180826", 31, "che_210211_57VT", 21, ["hall:dex2", "hall:dex5", "hall:tirate", "hall:ttrate"]], + ["31·잭프로스트", 73, 16, 91, "che_event_신산", [14718, 10140, 17498, 255516, 22482], 1, "733f3b9.jpg?=20201111", 31, "che_210211_57VT", 23, ["hall:dedication", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate"]], + ["31·돌아온너구리", 92, 75, 15, "che_event_견고", [747885, 121283, 174633, 235248, 15610], 0, "default.jpg", 31, "che_210211_57VT", 24, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["31·일이석우", 87, 15, 77, "che_event_신중", [35711, 35826, 17520, 431434, 3035], 1, "9c2026b.jpg?=20200527", 31, "che_210211_57VT", 25, ["hall:tlrate"]], + ["31·시스시", 89, 74, 16, "che_event_의술", [329756, 2214, 69593, 113101, 17886], 0, "default.jpg", 31, "che_210211_57VT", 29, ["chief:6", "hall:dex1", "hall:dex3", "hall:tlrate"]], + ["31·새해복많이받으세요", 78, 15, 88, "che_event_집중", [35991, 4640, 23039, 572243, 44394], 0, "default.jpg", 31, "che_210211_57VT", 41, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:tirate"]], + ["31·낙지꿈", 75, 15, 90, "che_event_집중", [38671, 38377, 19575, 593071, 20859], 0, "default.jpg", 31, "che_210211_57VT", 43, ["hall:dex2", "hall:dex4", "hall:killcrew_person", "hall:winrate"]], + ["31·와", 78, 89, 15, "che_event_견고", [62654, 70384, 848458, 210790, 41942], 1, "106f82e.jpg?=20210212", 31, "che_210211_57VT", 50, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["31·그저늅늅", 78, 15, 90, "che_event_집중", [93417, 33235, 35672, 447044, 640], 1, "5cedbb3.jpg?=20190817", 31, "che_210211_57VT", 62, ["hall:dex1", "hall:tirate", "hall:ttrate"]], + ["31·건방진노예", 80, 15, 88, "che_event_신중", [32766, 24978, 61325, 571312, 9940], 0, "default.jpg", 31, "che_210211_57VT", 67, ["hall:dex3", "hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["31·DDDD", 80, 84, 15, "che_event_돌격", [450001, 15330, 49716, 121408, 23641], 1, "2fbb8b.jpg?=20210217", 31, "che_210211_57VT", 162, ["hall:dedication", "hall:dex1", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:winrate"]], + ["31·퀸델", 74, 89, 17, "che_event_무쌍", [96981, 391014, 18881, 99074, 15507], 1, "5c0bd92.jpg?=20210214", 31, "che_210211_57VT", 164, ["chief:11", "hall:dex1", "hall:dex2", "hall:killnum", "hall:tsrate", "hall:winrate"]], + ["31·시초밥", 74, 15, 89, "che_event_필살", [71813, 14785, 37576, 392215, 29290], 1, "9196d68.jpg?=20210121", 31, "che_210211_57VT", 182, ["chief:7", "hall:tirate"]], + ["31·ㅇㅅㅇ", 76, 15, 89, "che_event_신중", [40752, 55652, 31764, 597428, 10938], 0, "default.jpg", 31, "che_210211_57VT", 193, ["hall:dex2", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["31·료우기시키", 84, 76, 15, "che_event_징병", [59024, 318349, 20556, 134416, 28883], 1, "559083f.jpg?=20190905", 31, "che_210211_57VT", 194, ["hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["31·안녕하세용가릐~", 74, 89, 15, "che_event_위압", [46164, 31446, 503337, 72190, 35532], 1, "ce5c51c.jpg?=20210215", 31, "che_210211_57VT", 195, ["chief:10", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["31·츠키히나리", 86, 77, 15, "che_event_돌격", [293416, 1323, 78881, 115263, 31437], 0, "default.jpg", 31, "che_210211_57VT", 200, ["hall:dex1", "hall:dex3", "hall:occupied", "hall:tlrate", "hall:tsrate"]], + ["31·이드", 74, 15, 86, "che_event_의술", [13158, 9046, 3757, 64490, 0], 1, "1a15ff3.jpg?=20210218", 31, "che_210211_57VT", 216, ["hall:tirate"]], + ["32·퍄퍄", 77, 87, 15, "che_event_필살", [2526, 18133, 192429, 70348, 20230], 0, "default.jpg", 32, "che_210325_Wzil", 5, ["chief:6", "hall:dex3", "hall:killcrew_person", "hall:tsrate"]], + ["32·평민킬러", 87, 74, 15, "che_event_위압", [274293, 5978, 42117, 79138, 17994], 1, "fb23a32.jpg?=20190904", 32, "che_210325_Wzil", 6, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:tlrate", "hall:tsrate", "hall:warnum"]], + ["32·제갈여포", 73, 15, 89, "che_event_척사", [6144, 8303, 5622, 108170, 20423], 1, "e8e8adc.jpg?=20180419", 32, "che_210325_Wzil", 9, ["hall:killrate", "hall:occupied", "hall:winrate"]], + ["32·이드", 74, 87, 16, "che_event_견고", [18615, 178419, 7086, 32883, 22294], 1, "1a15ff3.jpg?=20210218", 32, "che_210325_Wzil", 10, ["hall:dedication", "hall:dex1", "hall:dex2", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["32·트릭스터", 72, 16, 89, "che_event_신중", [92, 20708, 3740, 203375, 32235], 1, "735c7c8.jpg?=20210406", 32, "che_210325_Wzil", 11, ["chief:5", "hall:dedication", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate_person", "hall:occupied", "hall:tlrate"]], + ["32·롤린", 75, 15, 89, "che_event_반계", [5289, 32759, 21250, 269966, 30648], 0, "default.jpg", 32, "che_210325_Wzil", 12, ["hall:dex2", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["32·DDDD", 84, 76, 15, "che_event_저격", [184110, 12385, 26213, 63853, 22340], 1, "2fbb8b.jpg?=20210217", 32, "che_210325_Wzil", 14, ["hall:dex1", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:warnum"]], + ["32·잭프로스트", 72, 15, 87, "che_event_환술", [5484, 9972, 798, 110896, 19523], 1, "733f3b9.jpg?=20201111", 32, "che_210325_Wzil", 15, ["hall:tirate"]], + ["32·Hide_D", 73, 15, 90, "che_event_필살", [0, 28413, 56180, 347728, 28728], 1, "9f0a2a8.png?=20200106", 32, "che_210325_Wzil", 16, ["hall:dex2", "hall:dex3", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["32·쿠팡맨", 74, 15, 88, "che_event_집중", [7721, 6367, 18371, 267021, 60724], 0, "default.jpg", 32, "che_210325_Wzil", 19, ["chief:12", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["32·아타나시아", 87, 75, 16, "che_event_공성", [24894, 304152, 15620, 75304, 40963], 1, "e81ff49.jpg?=20210322", 32, "che_210325_Wzil", 20, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["32·누렁", 75, 15, 89, "che_event_반계", [12555, 24779, 20670, 268612, 13750], 1, "4bbfa36.jpg?=20190411", 32, "che_210325_Wzil", 21, ["hall:dex2", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["32·그저늅늅", 74, 15, 89, "che_event_신중", [7316, 18357, 31401, 211066, 16833], 1, "5cedbb3.jpg?=20190817", 32, "che_210325_Wzil", 22, ["hall:dex3", "hall:dex4", "hall:killcrew_person", "hall:tirate"]], + ["32·멈춰!", 73, 16, 88, "che_event_신산", [11027, 15084, 3016, 217086, 27073], 1, "bce1599.gif?=20210325", 32, "che_210325_Wzil", 23, ["chief:7", "hall:dex4", "hall:killcrew_person", "hall:killrate_person", "hall:tirate"]], + ["32·천서진", 73, 16, 87, "che_event_신산", [1476, 10903, 2260, 69266, 14748], 1, "8bddba9.png?=20210306", 32, "che_210325_Wzil", 24, ["hall:firenum"]], + ["32·앵코인", 85, 73, 15, "che_event_격노", [1429, 12503, 115543, 14684, 31491], 1, "541a80a.jpg?=20210325", 32, "che_210325_Wzil", 25, ["hall:dex3", "hall:dex5", "hall:tlrate", "hall:tsrate"]], + ["32·할까말까", 75, 15, 87, "che_event_신중", [2024, 27030, 30713, 176126, 17072], 1, "db298a4.jpg?=20210325", 32, "che_210325_Wzil", 27, ["hall:dex2", "hall:dex3", "hall:ttrate"]], + ["32·분탕", 76, 88, 15, "che_event_돌격", [0, 15226, 113910, 32385, 27066], 0, "default.jpg", 32, "che_210325_Wzil", 28, ["hall:dex3", "hall:occupied", "hall:tsrate"]], + ["32·효성중공업", 85, 75, 15, "che_event_무쌍", [8636, 16697, 133035, 33695, 20471], 1, "e15df5b.png?=20200716", 32, "che_210325_Wzil", 29, ["hall:dex3", "hall:tlrate", "hall:tsrate", "hall:winrate"]], + ["32·수장", 85, 77, 16, "che_event_필살", [48255, 0, 0, 2847, 16002], 1, "b725306.jpg?=20210325", 32, "che_210325_Wzil", 30, ["hall:dedication", "hall:dex1", "hall:killrate_person", "hall:tlrate", "hall:ttrate"]], + ["32·와이어트", 72, 91, 15, "che_event_견고", [7673, 19614, 276445, 29715, 27981], 1, "8829770.jpg?=20210325", 32, "che_210325_Wzil", 31, ["chief:10", "hall:dedication", "hall:dex3", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["32·일이석우", 75, 86, 15, "che_event_무쌍", [15396, 182051, 66551, 43111, 37609], 1, "9c2026b.jpg?=20200527", 32, "che_210325_Wzil", 32, ["chief:8", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["32·갈근", 75, 16, 89, "che_event_집중", [17593, 15590, 25469, 335629, 31283], 0, "default.jpg", 32, "che_210325_Wzil", 34, ["hall:dex1", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:tlrate", "hall:warnum"]], + ["32·낙지꿈", 74, 15, 90, "che_event_신산", [18028, 12567, 15339, 216824, 54407], 0, "default.jpg", 32, "che_210325_Wzil", 35, ["chief:11", "hall:dedication", "hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["32·불반도", 73, 15, 90, "che_event_척사", [15097, 19904, 5653, 164180, 37893], 0, "default.jpg", 32, "che_210325_Wzil", 36, ["hall:dedication", "hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:tirate"]], + ["32·로리", 74, 15, 90, "che_event_신산", [7669, 20870, 5435, 191353, 48400], 1, "50794a6.jpg?=20190923", 32, "che_210325_Wzil", 38, ["chief:9", "hall:dedication", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:winrate"]], + ["32·건방진노예", 76, 15, 86, "che_event_필살", [3133, 13308, 6461, 166399, 32587], 0, "default.jpg", 32, "che_210325_Wzil", 56, ["hall:dedication", "hall:dex5", "hall:experience"]], + ["32·기", 73, 15, 89, "che_event_필살", [8395, 17701, 9506, 112460, 3105], 0, "default.jpg", 32, "che_210325_Wzil", 60, ["hall:ttrate", "hall:winrate"]], + ["32·통솔지력형", 84, 16, 78, "che_event_반계", [10863, 860, 4352, 66485, 5455], 0, "default.jpg", 32, "che_210325_Wzil", 127, ["hall:tlrate", "hall:ttrate"]], + ["32·Liam", 73, 15, 86, "che_event_신산", [20093, 3631, 7988, 166403, 16931], 0, "default.jpg", 32, "che_210325_Wzil", 148, ["hall:dex1", "hall:tirate", "hall:ttrate"]], + ["33·쑤앤날ψ", 76, 15, 94, "che_event_집중", [12377, 3669, 37021, 185240, 10634], 0, "default.jpg", 33, "che_210429_IuO8", 4, ["hall:dex1", "hall:dex4", "hall:tirate", "hall:winrate"]], + ["33·아르테미시아", 88, 84, 15, "che_event_격노", [4752, 36838, 607875, 66251, 31330], 1, "3578444.jpg?=20210429", 33, "che_210429_IuO8", 7, ["hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["33·임사영", 75, 15, 95, "che_event_필살", [9607, 6914, 35909, 250669, 35007], 1, "10e5f72.jpg?=20210430", 33, "che_210429_IuO8", 10, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["33·시벌", 74, 15, 96, null, [11936, 13298, 52674, 352913, 33023], 1, "e8e6c63.png?=20210429", 33, "che_210429_IuO8", 16, ["hall:dex1", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["33·누렁", 76, 92, 15, "che_event_필살", [206293, 75287, 60181, 46072, 22326], 1, "4bbfa36.jpg?=20190411", 33, "che_210429_IuO8", 18, ["hall:dex1", "hall:dex2", "hall:tsrate", "hall:ttrate"]], + ["33·갈근", 73, 15, 98, "che_event_집중", [32480, 26790, 19428, 517299, 38380], 0, "default.jpg", 33, "che_210429_IuO8", 20, ["chief:7", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["33·Hide_D", 79, 16, 92, "che_event_신중", [44230, 52214, 100452, 649281, 24304], 1, "9f0a2a8.png?=20200106", 33, "che_210429_IuO8", 21, ["hall:dex1", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tirate", "hall:warnum"]], + ["33·꼬리사냥꾼", 78, 91, 15, "che_event_위압", [8052, 51385, 427108, 48048, 29537], 1, "81f77b0.png?=20210429", 33, "che_210429_IuO8", 22, ["chief:11", "hall:dedication", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["33·Pink", 87, 82, 15, "che_event_무쌍", [6562, 35210, 471925, 52327, 36756], 1, "b94a8e8.jpg?=20210509", 33, "che_210429_IuO8", 24, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["33·이드", 74, 15, 97, "che_event_집중", [13364, 18691, 32728, 348878, 42540], 1, "1a15ff3.jpg?=20210218", 33, "che_210429_IuO8", 25, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate_person", "hall:tirate", "hall:ttrate"]], + ["33·시뉴카린", 74, 16, 96, "che_event_신산", [10920, 23662, 11347, 570687, 35150], 1, "6dd0b38.jpg?=20210430", 33, "che_210429_IuO8", 26, ["chief:12", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["33·Ni", 75, 16, 95, "che_event_반계", [18831, 27645, 59290, 430740, 18081], 1, "b3236de.png?=20210429", 33, "che_210429_IuO8", 29, ["chief:5", "hall:betgold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["33·광성자", 92, 78, 15, "che_event_위압", [0, 0, 16108, 7421, 65999], 1, "1c59b40.jpg?=20200929", 33, "che_210429_IuO8", 30, ["hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:ttrate"]], + ["33·외심장", 75, 16, 95, "che_event_집중", [13967, 9623, 70758, 330749, 10694], 1, "36110cd.jpg?=20180826", 33, "che_210429_IuO8", 31, ["hall:dedication", "hall:dex1", "hall:dex4", "hall:experience", "hall:killcrew_person", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["33·체섭", 92, 78, 15, "che_event_돌격", [1991, 15006, 333934, 77237, 80111], 0, "default.jpg", 33, "che_210429_IuO8", 32, ["chief:10", "hall:dex3", "hall:dex5", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:ttrate"]], + ["33·퉤섭", 93, 75, 16, "che_event_돌격", [5592, 33943, 286487, 67010, 50940], 0, "default.jpg", 33, "che_210429_IuO8", 33, ["chief:8", "hall:dex2", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["33·냥냥", 75, 96, 15, "che_event_필살", [16544, 40198, 794758, 73112, 26797], 0, "default.jpg", 33, "che_210429_IuO8", 72, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["33·니노미야아스카", 76, 89, 16, "che_event_기병", [9431, 18552, 267556, 40162, 22733], 1, "7902022.jpg?=20210429", 33, "che_210429_IuO8", 92, ["hall:killrate", "hall:tsrate"]], + ["33·낙지꿈", 95, 75, 15, "che_event_격노", [13639, 23583, 416468, 85885, 21572], 0, "default.jpg", 33, "che_210429_IuO8", 94, ["chief:6", "hall:dedication", "hall:dex1", "hall:dex3", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["33·루드네스", 92, 76, 15, "che_event_돌격", [10817, 16433, 330440, 73414, 38178], 0, "default.jpg", 33, "che_210429_IuO8", 95, ["hall:dedication", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["33·Liam", 95, 74, 15, "che_event_격노", [118, 23455, 225915, 68162, 33746], 0, "default.jpg", 33, "che_210429_IuO8", 97, ["hall:dedication", "hall:tlrate"]], + ["33·불반도", 94, 77, 15, "che_event_돌격", [10268, 39304, 306039, 60568, 25024], 0, "default.jpg", 33, "che_210429_IuO8", 99, ["hall:dex2", "hall:dex3", "hall:tlrate", "hall:tsrate", "hall:ttrate"]], + ["33·건방진노예", 94, 73, 16, "che_event_격노", [3097, 21031, 291655, 55068, 40846], 0, "default.jpg", 33, "che_210429_IuO8", 102, ["hall:dedication", "hall:dex3", "hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["33·로비", 16, 71, 94, "che_event_신산", [0, 0, 0, 0, 0], 1, "708a981.png?=20200402", 33, "che_210429_IuO8", 240, ["hall:tirate", "hall:ttrate"]], + ["33·미소년소지로", 77, 87, 15, "che_event_견고", [0, 194, 32878, 6399, 0], 1, "2bb0e25.jpg?=20210506", 33, "che_210429_IuO8", 260, ["hall:tsrate"]], + ["34·라가라자", 78, 15, 95, "che_event_집중", [37279, 73514, 132203, 1022039, 40689], 1, "583754b.jpg?=20210812", 34, "che_210812_Q0FJ", 4, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex4", "hall:experience", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:ttrate"]], + ["34·랑해", 85, 89, 15, "che_event_견고", [1081945, 43871, 124705, 168353, 27976], 1, "d64500a.png?=20210820", 34, "che_210812_Q0FJ", 7, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["34·이드", 79, 15, 94, "che_event_신중", [55932, 72627, 119441, 1100401, 59035], 1, "5898830.jpg?=20210831", 34, "che_210812_Q0FJ", 11, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:tirate"]], + ["34·Hide_D", 79, 15, 95, "che_event_환술", [41788, 54195, 145221, 1159712, 73732], 1, "9f0a2a8.png?=20200106", 34, "che_210812_Q0FJ", 12, ["chief:11", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["34·퍄퍄", 80, 16, 94, "che_event_저격", [57516, 50704, 77209, 980470, 31318], 0, "default.jpg", 34, "che_210812_Q0FJ", 15, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:tlrate"]], + ["34·제갈여포", 95, 15, 82, "che_event_집중", [91542, 105131, 100222, 1115825, 19919], 1, "e8e8adc.jpg?=20180419", 34, "che_210812_Q0FJ", 16, ["hall:dex1", "hall:dex4", "hall:firenum", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["34·제로펩시", 78, 15, 95, "che_event_의술", [14307, 46324, 97621, 1064607, 61055], 1, "87b6968.jpg?=20210414", 34, "che_210812_Q0FJ", 17, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate"]], + ["34·갈근", 79, 15, 97, "che_event_신중", [63253, 87288, 101534, 1696806, 43342], 0, "default.jpg", 34, "che_210812_Q0FJ", 18, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["34·퍽퍽퍽퍽퍽퍽퍽퍽퍽", 80, 94, 15, "che_event_견고", [62389, 1360884, 87234, 232037, 34768], 1, "27869f4.gif?=20210812", 34, "che_210812_Q0FJ", 19, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["34·창섭", 95, 80, 15, "che_event_견고", [38414, 135748, 1200250, 296304, 37376], 1, "3778b5.jpg?=20210817", 34, "che_210812_Q0FJ", 20, ["hall:dex2", "hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["34·고릴라", 77, 15, 95, "che_event_신중", [45894, 41626, 106970, 859549, 38494], 1, "9585359.jpg?=20210814", 34, "che_210812_Q0FJ", 21, ["hall:betwin", "hall:betwingold", "hall:dedication", "hall:tirate"]], + ["34·독구", 80, 15, 96, "che_event_집중", [53855, 72746, 148992, 1367223, 24589], 1, "f3b9b8b.png?=20210802", 34, "che_210812_Q0FJ", 22, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex4", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["34·네이미", 78, 93, 16, "che_event_격노", [527400, 101311, 101814, 167612, 29896], 0, "default.jpg", 34, "che_210812_Q0FJ", 24, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["34·시뉴카린", 80, 91, 17, "che_event_돌격", [24629, 144718, 1051374, 261192, 47307], 1, "b647daa.gif?=20210902", 34, "che_210812_Q0FJ", 25, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["34·외심장", 80, 15, 95, "che_event_집중", [51025, 85159, 82790, 1236168, 55728], 1, "36110cd.jpg?=20180826", 34, "che_210812_Q0FJ", 26, ["hall:betwin", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["34·태상노군", 96, 76, 15, "che_event_돌격", [40019, 146468, 789905, 251987, 37644], 1, "89b75dc.jpg?=20210630", 34, "che_210812_Q0FJ", 28, ["hall:betwingold", "hall:dex2", "hall:dex3", "hall:tlrate"]], + ["34·rwitch", 76, 15, 97, "che_event_신중", [27334, 55262, 107977, 726326, 21215], 1, "54e527.png?=20201024", 34, "che_210812_Q0FJ", 30, ["chief:5", "hall:dedication", "hall:tirate"]], + ["34·임사영", 79, 15, 96, "che_event_신중", [55041, 53946, 69082, 997001, 57848], 1, "10e5f72.jpg?=20210430", 34, "che_210812_Q0FJ", 32, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["34·그림자", 79, 94, 16, "che_event_기병", [34660, 79860, 949183, 244756, 35964], 0, "default.jpg", 34, "che_210812_Q0FJ", 33, ["hall:dex3", "hall:tsrate"]], + ["34·평민킬러", 95, 80, 15, "che_event_척사", [29305, 91496, 1437833, 277508, 62014], 1, "fb23a32.jpg?=20190904", 34, "che_210812_Q0FJ", 64, ["chief:8", "hall:betgold", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["34·동오의덕", 78, 92, 16, "che_event_무쌍", [23840, 157387, 792892, 180414, 33880], 0, "default.jpg", 34, "che_210812_Q0FJ", 68, ["hall:dex2", "hall:dex3", "hall:tsrate"]], + ["34·누렁", 77, 16, 95, "che_event_환술", [8041, 62897, 108021, 966617, 40092], 1, "4bbfa36.jpg?=20190411", 34, "che_210812_Q0FJ", 74, ["hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person"]], + ["34·관지평", 80, 90, 15, "che_event_의술", [642663, 278478, 98713, 205056, 28879], 1, "2d4c8b7.jpg?=20210821", 34, "che_210812_Q0FJ", 78, ["hall:dex1", "hall:dex2", "hall:occupied", "hall:tsrate"]], + ["34·뿌뿌", 92, 82, 16, "che_event_척사", [104890, 1002747, 55473, 252671, 32377], 0, "default.jpg", 34, "che_210812_Q0FJ", 170, ["hall:dex1", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["34·일이석우", 90, 78, 16, "che_event_저격", [15141, 75946, 372116, 163811, 17675], 1, "9c2026b.jpg?=20200527", 34, "che_210812_Q0FJ", 172, ["hall:dex3", "hall:tlrate"]], + ["34·사스케", 16, 79, 91, "che_event_신산", [9363, 6653, 3955, 3193, 4218], 1, "986348a.jpg?=20190815", 34, "che_210812_Q0FJ", 176, ["hall:firenum", "hall:ttrate"]], + ["34·건방진노예", 78, 15, 92, "che_event_집중", [64680, 51171, 66575, 545991, 20062], 0, "default.jpg", 34, "che_210812_Q0FJ", 185, ["hall:dex1", "hall:tirate"]], + ["34·INDIS", 91, 81, 15, "che_event_격노", [69771, 631801, 61599, 204046, 269915], 0, "default.jpg", 34, "che_210812_Q0FJ", 188, ["hall:betgold", "hall:dex1", "hall:dex2", "hall:dex5", "hall:tlrate"]], + ["34·도지코인", 15, 74, 96, "che_event_신산", [0, 0, 0, 0, 0], 1, "7449f9e.png?=20210815", 34, "che_210812_Q0FJ", 269, ["hall:dedication", "hall:firenum", "hall:tirate", "hall:ttrate"]], + ["34·천괴금", 77, 89, 17, "che_event_돌격", [52798, 882959, 98883, 163026, 40898], 1, "2b239af.png?=20190824", 34, "che_210812_Q0FJ", 310, ["hall:dex2", "hall:dex5", "hall:tsrate"]], + ["34·독피자찬스", 85, 73, 15, "che_event_격노", [274752, 27747, 52862, 96562, 27308], 1, "6f8492f.png?=20210830", 34, "che_210812_Q0FJ", 569, ["hall:betgold", "hall:dex1"]], + ["34·천투랑", 72, 83, 17, "che_event_징병", [158454, 60884, 9584, 80732, 3933], 0, "default.jpg", 34, "che_210812_Q0FJ", 573, ["hall:dex1"]], + ["34·이데아캐논", 84, 73, 15, "che_event_위압", [167008, 10750, 69084, 93895, 11486], 0, "default.jpg", 34, "che_210812_Q0FJ", 577, ["hall:dex1"]], + ["34·김먁사", 85, 73, 15, "che_event_돌격", [28114, 246757, 37995, 100660, 12391], 0, "default.jpg", 34, "che_210812_Q0FJ", 578, ["hall:dex2"]], + ["36·코코로네네", 77, 16, 93, "che_event_집중", [22692, 64442, 115137, 940514, 48551], 1, "dc97821.jpg?=20211014", 36, "che_211014_PYQl", 4, ["chief:9", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["36·부됸니", 79, 87, 17, "che_event_위압", [13115, 155150, 567344, 66017, 17924], 0, "default.jpg", 36, "che_211014_PYQl", 9, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["36·과학자", 15, 77, 93, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 36, "che_211014_PYQl", 10, ["hall:firenum", "hall:tirate"]], + ["36·퍄퍄", 78, 91, 15, "che_event_위압", [48597, 129870, 865023, 182928, 18449], 0, "default.jpg", 36, "che_211014_PYQl", 11, ["hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["36·Hide_D", 80, 15, 89, "che_event_신중", [59325, 89148, 104675, 555999, 26825], 1, "9f0a2a8.png?=20200106", 36, "che_211014_PYQl", 12, ["hall:dex4", "hall:occupied"]], + ["36·음화하핫", 90, 82, 16, "che_event_궁병", [66222, 1718630, 71201, 68643, 30074], 1, "a12cb00.jpg?=20210925", 36, "che_211014_PYQl", 13, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["36·이드", 87, 81, 15, "che_event_견고", [658019, 44568, 86649, 95159, 35899], 1, "5898830.jpg?=20210831", 36, "che_211014_PYQl", 14, ["hall:dex1", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:winrate"]], + ["36·평민킬러", 75, 97, 15, "che_event_척사", [37816, 804387, 19677, 142616, 38690], 1, "fb23a32.jpg?=20190904", 36, "che_211014_PYQl", 15, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["36·네시", 90, 78, 16, "che_event_위압", [68776, 105630, 752719, 270718, 16172], 0, "default.jpg", 36, "che_211014_PYQl", 16, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew_person"]], + ["36·갈근", 79, 15, 90, "che_event_집중", [17537, 49048, 70305, 801477, 24367], 0, "default.jpg", 36, "che_211014_PYQl", 19, ["hall:dex4", "hall:firenum"]], + ["36·귀달", 88, 15, 82, "che_event_환술", [56852, 92760, 30414, 440115, 36696], 0, "default.jpg", 36, "che_211014_PYQl", 21, ["hall:tlrate"]], + ["36·앵드캡", 81, 88, 15, "che_event_위압", [823455, 69014, 54364, 52561, 43072], 0, "default.jpg", 36, "che_211014_PYQl", 23, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:warnum"]], + ["36·rwitch", 78, 15, 91, "che_event_반계", [10957, 43893, 61428, 466306, 31267], 1, "54e527.png?=20201024", 36, "che_211014_PYQl", 24, ["hall:firenum", "hall:tirate", "hall:winrate"]], + ["36·이루마야 요루파쨩", 90, 80, 15, "che_event_격노", [22272, 47095, 848235, 235257, 23122], 1, "fbd22b6.jpg?=20211014", 36, "che_211014_PYQl", 28, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["36·킹구", 88, 80, 15, "che_event_무쌍", [37057, 818315, 77763, 131816, 38105], 1, "a01d0b5.png?=20211014", 36, "che_211014_PYQl", 29, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person"]], + ["36·루이즈", 75, 15, 95, "che_event_환술", [26163, 88978, 113964, 717747, 43695], 1, "fe73c1a.jpg?=20211015", 36, "che_211014_PYQl", 30, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["36·페이트", 16, 92, 76, "che_event_필살", [0, 0, 0, 1, 0], 1, "39cbafe.jpg?=20210910", 36, "che_211014_PYQl", 31, ["hall:firenum"]], + ["36·사스케", 94, 75, 15, "che_event_견고", [54146, 704829, 46132, 75303, 58441], 1, "986348a.jpg?=20190815", 36, "che_211014_PYQl", 32, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:experience", "hall:firenum", "hall:occupied", "hall:tlrate"]], + ["36·임사영", 77, 91, 15, "che_event_견고", [60372, 406357, 199935, 161825, 40210], 1, "10e5f72.jpg?=20210430", 36, "che_211014_PYQl", 33, ["hall:dex2", "hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["36·아텐 누", 90, 16, 80, "che_event_신산", [31826, 217784, 200069, 962605, 28169], 1, "79dbce5.jpg?=20210918", 36, "che_211014_PYQl", 34, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["36·장화", 79, 90, 15, "che_event_견고", [49683, 105671, 955288, 81120, 22328], 1, "82060d2.jpg?=20211014", 36, "che_211014_PYQl", 35, ["hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["36·네이미", 77, 90, 17, "che_event_위압", [636435, 78711, 130548, 106433, 25038], 0, "default.jpg", 36, "che_211014_PYQl", 36, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killrate_person", "hall:tsrate"]], + ["36·지갑여전사시뉴카린", 76, 89, 16, "che_event_견고", [303496, 21473, 145674, 79452, 42172], 1, "7670149.gif?=20211013", 36, "che_211014_PYQl", 37, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:firenum", "hall:occupied"]], + ["36·Inanis", 78, 92, 15, "che_event_돌격", [453030, 26031, 57119, 61151, 19614], 1, "5ddb14a.webp?=20211014", 36, "che_211014_PYQl", 38, ["hall:dex1", "hall:tsrate"]], + ["36·로리", 79, 15, 90, "che_event_신산", [31581, 156781, 73617, 473678, 27018], 1, "50794a6.jpg?=20190923", 36, "che_211014_PYQl", 39, ["hall:tirate"]], + ["36·방비방비", 78, 15, 89, "che_event_집중", [23996, 92126, 78607, 613074, 33973], 0, "default.jpg", 36, "che_211014_PYQl", 40, ["hall:dex4", "hall:tirate"]], + ["36·스이세이", 95, 73, 16, "che_event_징병", [51630, 567201, 13680, 138825, 44323], 1, "82b4f5e.jpg?=20211014", 36, "che_211014_PYQl", 41, ["chief:6", "hall:betgold", "hall:dedication", "hall:dex2", "hall:dex5", "hall:tlrate"]], + ["36·깡!", 77, 16, 91, "che_event_신중", [21529, 73267, 56320, 482131, 33700], 1, "59fd00.png?=20200717", 36, "che_211014_PYQl", 42, ["chief:11"]], + ["36·제갈여포", 78, 92, 15, "che_event_척사", [16690, 95325, 597796, 78362, 39315], 1, "e8e8adc.jpg?=20180419", 36, "che_211014_PYQl", 43, ["hall:dex3", "hall:tsrate", "hall:winrate"]], + ["36·일이석우", 92, 75, 16, "che_event_위압", [14454, 121017, 514951, 149247, 14285], 1, "9c2026b.jpg?=20200527", 36, "che_211014_PYQl", 44, ["hall:dex3", "hall:tlrate"]], + ["36·중집", 76, 15, 92, "che_event_집중", [14389, 61081, 70428, 427864, 12083], 0, "default.jpg", 36, "che_211014_PYQl", 45, ["hall:tirate", "hall:winrate"]], + ["36·조민", 79, 15, 90, "che_event_척사", [116280, 94588, 72320, 741935, 26702], 1, "e843171.png?=20210922", 36, "che_211014_PYQl", 46, ["hall:dex1", "hall:dex4"]], + ["36·봄꽃", 90, 15, 78, "che_event_필살", [29210, 50262, 47208, 423476, 15536], 1, "1390e40.jpg?=20211015", 36, "che_211014_PYQl", 47, ["hall:betgold", "hall:tlrate"]], + ["36·RainbowVoyage", 76, 15, 93, "che_event_의술", [23888, 12088, 12415, 515872, 49384], 1, "3533aad.webp?=20211013", 36, "che_211014_PYQl", 48, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5"]], + ["36·부스터샷", 97, 77, 15, "che_event_견고", [150203, 1780830, 93563, 256392, 33687], 1, "e41c212.png?=20211103", 36, "che_211014_PYQl", 49, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["36·양전", 15, 71, 97, "che_event_신산", [0, 0, 0, 0, 0], 1, "f2ed519.jpg?=20211020", 36, "che_211014_PYQl", 50, ["hall:dedication", "hall:firenum", "hall:tirate"]], + ["36·야고", 90, 77, 16, "che_event_견고", [24489, 66817, 610739, 136020, 35364], 1, "c14c0f.jpg?=20211014", 36, "che_211014_PYQl", 51, ["chief:12", "hall:dedication", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tlrate"]], + ["36·마령화강혜원", 90, 79, 15, "che_event_무쌍", [55761, 482979, 69697, 182124, 13259], 1, "7a328c.jpg?=20210903", 36, "che_211014_PYQl", 52, ["hall:dex2", "hall:ttrate"]], + ["36·타카나시 키아라", 77, 92, 16, "che_event_견고", [432939, 30319, 103338, 80375, 57165], 1, "a131a91.jpg?=20211016", 36, "che_211014_PYQl", 53, ["chief:10", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tsrate"]], + ["36·나이키쨉엄", 86, 15, 81, "che_event_집중", [37860, 39749, 157665, 393697, 13876], 1, "19886a9.jpg?=20211014", 36, "che_211014_PYQl", 54, ["hall:tlrate"]], + ["36·천괴금", 73, 15, 94, "che_event_징병", [19153, 31898, 31059, 343804, 54640], 1, "2b239af.png?=20190824", 36, "che_211014_PYQl", 55, ["chief:5", "hall:dedication", "hall:dex5", "hall:tirate"]], + ["36·버그좀써보자", 83, 83, 16, "che_event_무쌍", [27534, 353125, 49795, 146808, 26757], 0, "default.jpg", 36, "che_211014_PYQl", 58, ["hall:dex2"]], + ["36·메뚜기", 16, 70, 95, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 36, "che_211014_PYQl", 62, ["hall:ttrate"]], + ["36·ㅇ", 77, 89, 16, "che_event_기병", [27352, 148370, 486588, 137056, 22969], 0, "default.jpg", 36, "che_211014_PYQl", 64, ["hall:dex3", "hall:tsrate"]], + ["36·ARES군주", 77, 94, 15, "che_event_무쌍", [255644, 457111, 372097, 248160, 21126], 1, "106f82e.jpg?=20210212", 36, "che_211014_PYQl", 67, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["36·무지성 치성수", 15, 95, 74, "che_event_기병", [0, 0, 0, 0, 0], 1, "3fe1b1f.jpg?=20211014", 36, "che_211014_PYQl", 123, ["hall:dedication", "hall:ttrate"]], + ["36·갓갓가가갓갓", 79, 15, 90, "che_event_신산", [15116, 89902, 112591, 646033, 34054], 0, "default.jpg", 36, "che_211014_PYQl", 126, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["36·1분장", 77, 15, 92, "che_event_신중", [56965, 105168, 68365, 653492, 3877], 1, "c40f9f7.jpg?=20200222", 36, "che_211014_PYQl", 127, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["36·Nunsense", 73, 15, 94, "che_event_척사", [9838, 35341, 11282, 107391, 813], 1, "f456d3.jpg?=20200828", 36, "che_211014_PYQl", 181, ["hall:dedication"]], + ["36·구우경맨", 87, 79, 15, "che_event_견고", [314575, 12427, 36566, 74779, 19456], 0, "default.jpg", 36, "che_211014_PYQl", 274, ["hall:dex1", "hall:tlrate"]], + ["37·퍄퍄", 90, 79, 15, "che_event_위압", [22266, 96904, 1153862, 191214, 19633], 0, "default.jpg", 37, "che_211118_dLJd", 5, ["hall:betrate", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["37·강백호", 79, 94, 15, "che_event_무쌍", [36510, 1542083, 37033, 104240, 34975], 1, "7189faa.jpg?=20211128", 37, "che_211118_dLJd", 7, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["37·ㄷ", 80, 89, 15, "che_event_격노", [77378, 696446, 15706, 124398, 49122], 0, "default.jpg", 37, "che_211118_dLJd", 12, ["hall:dex2", "hall:dex5"]], + ["37·독?루", 76, 95, 15, "che_event_기병", [712680, 49280, 193627, 231049, 32761], 1, "d64113f.png?=20211116", 37, "che_211118_dLJd", 14, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["37·독멜른", 78, 15, 93, "che_event_신중", [54229, 112705, 39987, 741820, 47270], 1, "f914551.jpg?=20211029", 37, "che_211118_dLJd", 22, ["chief:5", "hall:dex4", "hall:dex5"]], + ["37·카이스트", 78, 16, 93, "che_event_집중", [25050, 25526, 20223, 993341, 40410], 1, "9361ef8.jpg?=20180907", 37, "che_211118_dLJd", 26, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["37·갓수정차냥해", 15, 72, 97, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 37, "che_211118_dLJd", 27, ["hall:dedication", "hall:tirate"]], + ["37·피자배달현장복귀딘", 91, 79, 15, "che_event_무쌍", [332814, 72823, 230435, 159853, 51787], 1, "d7def07.jpg?=20211118", 37, "che_211118_dLJd", 28, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["37·이드", 77, 15, 93, "che_event_반계", [49948, 78804, 48820, 845483, 5469], 1, "5898830.jpg?=20210831", 37, "che_211118_dLJd", 31, ["hall:dex4", "hall:firenum", "hall:killcrew_person", "hall:tirate"]], + ["37·네이미", 79, 15, 91, "che_event_집중", [67934, 83603, 61988, 639970, 22052], 0, "default.jpg", 37, "che_211118_dLJd", 32, ["hall:dex4", "hall:ttrate"]], + ["37·곡괭이", 15, 72, 99, "che_event_척사", [0, 0, 0, 0, 0], 1, "80f1740.jpg?=20211121", 37, "che_211118_dLJd", 33, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:firenum"]], + ["37·이시미", 76, 15, 95, "che_event_집중", [31931, 97549, 43887, 705853, 41164], 1, "f5739c9.jpg?=20211118", 37, "che_211118_dLJd", 34, ["hall:dex4", "hall:experience", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["37·경국지색소교", 74, 17, 93, "che_event_반계", [49904, 14461, 16097, 271471, 21749], 0, "default.jpg", 37, "che_211118_dLJd", 35, ["hall:firenum"]], + ["37·갓갓갓", 93, 76, 16, "che_event_위압", [784563, 44413, 46155, 165087, 26226], 0, "default.jpg", 37, "che_211118_dLJd", 37, ["hall:betrate", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person"]], + ["37·마리아님", 75, 96, 15, "che_event_격노", [753466, 39025, 84266, 118860, 40717], 1, "d953edc.jpg?=20211116", 37, "che_211118_dLJd", 41, ["chief:8", "hall:dex1", "hall:experience", "hall:firenum", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["37·Hide_D", 82, 16, 87, "che_event_저격", [54475, 88235, 131004, 567783, 16635], 1, "9f0a2a8.png?=20200106", 37, "che_211118_dLJd", 42, ["hall:dex3"]], + ["37·독구", 76, 15, 96, "che_event_집중", [73891, 86660, 37744, 976783, 45866], 1, "e41c212.png?=20211103", 37, "che_211118_dLJd", 44, ["chief:7", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["37·팬텀", 78, 17, 90, "che_event_집중", [36857, 74492, 67614, 614465, 62058], 1, "a9c6f29.jpg?=20211117", 37, "che_211118_dLJd", 46, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:ttrate"]], + ["37·앵드캡", 81, 91, 15, "che_event_위압", [132067, 701486, 49416, 177488, 4357], 1, "7b5fe98.png?=20211118", 37, "che_211118_dLJd", 47, ["hall:dex1", "hall:dex2", "hall:firenum", "hall:killcrew_person"]], + ["37·네시", 77, 15, 94, "che_event_집중", [40973, 43052, 53088, 775288, 66093], 0, "default.jpg", 37, "che_211118_dLJd", 49, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["37·볼코프 레보스키", 96, 73, 15, "che_event_견고", [763486, 57536, 58841, 193022, 56697], 1, "5c22db9.png?=20211118", 37, "che_211118_dLJd", 50, ["chief:10", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex1", "hall:dex5", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["37·사스케", 77, 92, 17, "che_event_궁병", [96792, 726359, 16340, 105469, 31814], 1, "986348a.jpg?=20190815", 37, "che_211118_dLJd", 52, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["37·페르2", 97, 74, 15, "che_event_견고", [79505, 380202, 86697, 166727, 68925], 1, "79dbce5.jpg?=20210918", 37, "che_211118_dLJd", 53, ["hall:dex2", "hall:dex5", "hall:occupied", "hall:tlrate"]], + ["37·한세건", 94, 75, 16, "che_event_돌격", [30679, 139848, 780853, 192976, 60684], 1, "470eec4.jpg?=20211118", 37, "che_211118_dLJd", 54, ["chief:6", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["37·아르곤", 76, 97, 15, "che_event_견고", [89183, 1373363, 87465, 151399, 39518], 1, "9b8a0e.jpg?=20211120", 37, "che_211118_dLJd", 55, ["chief:12", "hall:betwin", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["37·페르", 91, 15, 80, "che_event_저격", [39859, 203813, 115623, 805279, 20449], 1, "1e0f242.jpg?=20211118", 37, "che_211118_dLJd", 57, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:tlrate"]], + ["37·평민킬러", 78, 92, 15, "che_event_견고", [18751, 492514, 124021, 136180, 17860], 1, "fb23a32.jpg?=20190904", 37, "che_211118_dLJd", 59, ["hall:dex2", "hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["37·로나로나땅", 92, 78, 15, "che_event_위압", [66932, 71945, 397788, 138117, 12341], 1, "fbd22b6.jpg?=20211014", 37, "che_211118_dLJd", 60, ["hall:dex3", "hall:tlrate"]], + ["37·봄꽃", 88, 15, 80, "che_event_반계", [64019, 28897, 43833, 601650, 58159], 1, "1390e40.jpg?=20211015", 37, "che_211118_dLJd", 61, ["hall:dex5", "hall:tlrate"]], + ["37·귀달", 92, 79, 15, "che_event_격노", [50516, 636444, 33575, 284125, 9511], 0, "default.jpg", 37, "che_211118_dLJd", 62, ["hall:betwin", "hall:dex2", "hall:tlrate"]], + ["37·중집", 77, 16, 90, "che_event_환술", [10560, 74681, 105492, 321085, 16793], 0, "default.jpg", 37, "che_211118_dLJd", 63, ["hall:tirate"]], + ["37·A_Little_Tanker", 76, 93, 15, "che_event_필살", [443315, 43153, 28677, 96126, 28564], 0, "default.jpg", 37, "che_211118_dLJd", 65, ["hall:betrate", "hall:dex1", "hall:firenum", "hall:tsrate"]], + ["37·과학자", 76, 16, 94, "che_event_집중", [80246, 35278, 31123, 496525, 21912], 0, "default.jpg", 37, "che_211118_dLJd", 66, ["hall:betrate", "hall:firenum", "hall:tirate"]], + ["37·킹구", 90, 79, 15, "che_event_징병", [125170, 606570, 18871, 152775, 31935], 1, "a01d0b5.png?=20211014", 37, "che_211118_dLJd", 68, ["hall:dex1", "hall:dex2", "hall:tlrate"]], + ["37·로비", 15, 72, 95, "che_event_징병", [0, 0, 0, 0, 0], 1, "708a981.png?=20200402", 37, "che_211118_dLJd", 69, ["hall:tirate"]], + ["37·쪽끼한", 89, 77, 18, "che_event_견고", [72664, 673587, 14781, 235174, 8890], 1, "24b57e9.png?=20211118", 37, "che_211118_dLJd", 70, ["hall:dex2", "hall:ttrate"]], + ["37·임사영", 82, 15, 88, "che_event_집중", [45150, 94055, 66210, 1220840, 32289], 1, "10e5f72.jpg?=20210430", 37, "che_211118_dLJd", 72, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killrate_person", "hall:warnum"]], + ["37·그거아세요?", 16, 72, 98, "che_event_집중", [0, 0, 0, 0, 0], 1, "f341b03.png?=20211118", 37, "che_211118_dLJd", 73, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:ttrate"]], + ["37·ARES군주", 79, 89, 15, "che_event_위압", [118190, 134863, 734534, 189802, 22934], 1, "106f82e.jpg?=20210212", 37, "che_211118_dLJd", 74, ["hall:betwin", "hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["37·멸치", 87, 15, 82, "che_event_징병", [16358, 130975, 147762, 349698, 14659], 1, "532fdca.jpg?=20211118", 37, "che_211118_dLJd", 78, ["hall:dex3"]], + ["37·누조미", 17, 93, 75, "che_event_견고", [0, 0, 0, 0, 0], 1, "ee6beae.png?=20211118", 37, "che_211118_dLJd", 146, ["hall:tsrate"]], + ["37·랜덤임관합니다", 15, 79, 90, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 37, "che_211118_dLJd", 149, ["hall:dedication"]], + ["37·김갑환", 75, 15, 94, "che_event_신산", [18656, 57720, 95056, 192060, 3149], 1, "dcff9fd.jpg?=20180823", 37, "che_211118_dLJd", 154, ["hall:ttrate"]], + ["37·민초조아", 78, 16, 91, "che_event_집중", [31162, 132810, 118300, 450179, 9545], 0, "default.jpg", 37, "che_211118_dLJd", 161, ["hall:ttrate"]], + ["37·Nunsense", 76, 15, 94, "che_event_신중", [18803, 44224, 32690, 351860, 20078], 1, "f456d3.jpg?=20200828", 37, "che_211118_dLJd", 279, ["hall:dedication"]], + ["37·배고프고 지친 사람", 15, 89, 78, "che_event_징병", [0, 0, 0, 0, 0], 1, "1758e7c.png?=20211118", 37, "che_211118_dLJd", 281, ["hall:dedication", "hall:tsrate"]], + ["37·페이트", 17, 94, 71, "che_event_무쌍", [0, 0, 90, 76, 0], 1, "a68233.png?=20211119", 37, "che_211118_dLJd", 334, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:firenum", "hall:tsrate"]], + ["37·기술력은세개체고", 15, 71, 94, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 37, "che_211118_dLJd", 390, ["hall:betrate", "hall:tirate"]], + ["37·고고싱", 73, 17, 87, "che_event_환술", [10421, 14237, 7847, 70528, 0], 0, "default.jpg", 37, "che_211118_dLJd", 421, ["hall:tirate"]], + ["37·블루아카이브", 75, 87, 16, "che_event_무쌍", [87777, 75979, 204566, 101494, 28895], 1, "dbeeb0d.jpg?=20190620", 37, "che_211118_dLJd", 434, ["hall:dex3"]], + ["37·민트토끼", 17, 85, 72, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "e04b397.gif?=20201119", 37, "che_211118_dLJd", 536, ["hall:firenum"]], + ["38·스즈키아야", 75, 91, 15, "che_event_돌격", [495635, 9784, 28520, 44389, 66885], 1, "b0bc01.jpg?=20211216", 38, "che_211216_yUso", 9, ["hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["38·라플라스 다크니스", 91, 73, 15, "che_event_필살", [292930, 8095, 25121, 47193, 23322], 1, "649822a.jpg?=20211216", 38, "che_211216_yUso", 12, ["hall:dex1", "hall:tlrate"]], + ["38·임사영", 77, 15, 89, "che_event_신중", [37483, 26276, 33380, 596832, 36300], 1, "10e5f72.jpg?=20210430", 38, "che_211216_yUso", 16, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["38·갈근", 75, 16, 90, "che_event_반계", [19078, 21732, 27390, 369395, 29726], 0, "default.jpg", 38, "che_211216_yUso", 17, ["hall:dex4", "hall:tirate"]], + ["38·사니", 93, 74, 15, "che_event_척사", [729518, 18875, 33998, 73015, 45086], 1, "5c0e8f0.jpg?=20211216", 38, "che_211216_yUso", 18, ["hall:betrate", "hall:betwin", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["38·광학자", 15, 79, 84, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 38, "che_211216_yUso", 19, ["hall:experience", "hall:firenum"]], + ["38·ㅇ", 77, 87, 17, "che_event_저격", [22485, 635291, 3830, 67825, 45552], 0, "default.jpg", 38, "che_211216_yUso", 20, ["hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["38·이둔", 71, 21, 90, "che_event_신산", [43049, 25692, 10386, 497886, 41389], 0, "default.jpg", 38, "che_211216_yUso", 23, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["38·A_Little_Tanker", 78, 88, 15, "che_event_보병", [445373, 8045, 33924, 61629, 29238], 0, "default.jpg", 38, "che_211216_yUso", 25, ["hall:dex1", "hall:firenum", "hall:occupied", "hall:tsrate"]], + ["38·사스케", 75, 94, 15, "che_event_돌격", [31313, 34204, 1146060, 104600, 46321], 1, "986348a.jpg?=20190815", 38, "che_211216_yUso", 27, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["38·421", 88, 76, 15, "che_event_척사", [538191, 8008, 18418, 88226, 41249], 0, "default.jpg", 38, "che_211216_yUso", 31, ["hall:dex1", "hall:tlrate", "hall:warnum"]], + ["38·엘든 링", 15, 82, 84, "che_event_신중", [0, 0, 0, 0, 0], 1, "f4f0cf1.jpg?=20211217", 38, "che_211216_yUso", 32, ["hall:firenum"]], + ["38·독?루아카이브", 76, 15, 88, "che_event_의술", [29273, 23798, 41530, 299397, 29965], 1, "b4e71f5.png?=20211213", 38, "che_211216_yUso", 33, ["hall:ttrate"]], + ["38·승원이", 91, 76, 15, "che_event_위압", [47390, 667821, 56132, 96623, 43139], 0, "default.jpg", 38, "che_211216_yUso", 34, ["chief:10", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["38·꺄", 75, 15, 89, "che_event_신중", [18360, 14681, 16997, 278374, 20087], 1, "ff77e01.jpg?=20200704", 38, "che_211216_yUso", 36, ["hall:betwin", "hall:tirate"]], + ["38·킹구", 76, 15, 90, "che_event_척사", [18663, 18863, 22097, 477007, 23012], 1, "a01d0b5.png?=20211014", 38, "che_211216_yUso", 38, ["hall:dex4", "hall:occupied", "hall:winrate"]], + ["38·Hide_D", 77, 15, 89, "che_event_환술", [41010, 23003, 11673, 573792, 38486], 1, "9f0a2a8.png?=20200106", 38, "che_211216_yUso", 39, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["38·퍄퍄", 76, 16, 89, "che_event_신산", [6782, 20331, 21491, 397677, 30358], 0, "default.jpg", 38, "che_211216_yUso", 41, ["hall:dex4"]], + ["38·피자왕독피자", 94, 73, 15, "che_event_척사", [27183, 18014, 597161, 40305, 34378], 1, "cc8a718.jpg?=20211216", 38, "che_211216_yUso", 43, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["38·앵드캡", 77, 84, 17, "che_event_견고", [515334, 18674, 34194, 40895, 40993], 1, "7b5fe98.png?=20211118", 38, "che_211216_yUso", 44, ["hall:dex1", "hall:firenum", "hall:killrate", "hall:killrate_person"]], + ["38·독피자", 80, 85, 15, "che_event_견고", [527485, 16414, 45329, 40226, 28384], 1, "6611d26.png?=20211215", 38, "che_211216_yUso", 45, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["38·평민킬러", 75, 91, 15, "che_event_무쌍", [536021, 15548, 15295, 36787, 38181], 1, "fb23a32.jpg?=20190904", 38, "che_211216_yUso", 46, ["hall:dex1", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["38·마요이", 76, 15, 88, "che_event_반계", [4775, 18549, 19533, 250355, 17577], 1, "3d319b5.png?=20190422", 38, "che_211216_yUso", 48, ["hall:tirate"]], + ["38·독두꺼비", 76, 86, 17, "che_event_척사", [101198, 274415, 16711, 50276, 32622], 1, "fa6639d.jpg?=20211220", 38, "che_211216_yUso", 49, ["hall:dex2"]], + ["38·외심장", 79, 16, 86, "che_event_의술", [55648, 19572, 21848, 501870, 32536], 1, "36110cd.jpg?=20180826", 38, "che_211216_yUso", 50, ["hall:dex4"]], + ["38·갓갓갓", 76, 15, 89, "che_event_신중", [35063, 9285, 11056, 454632, 47576], 0, "default.jpg", 38, "che_211216_yUso", 51, ["chief:7", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["38·핫소스", 90, 73, 16, "che_event_견고", [56504, 25744, 308331, 36886, 18343], 0, "default.jpg", 38, "che_211216_yUso", 52, ["hall:dedication", "hall:dex3", "hall:tlrate"]], + ["38·제갈여포", 76, 16, 88, "che_event_집중", [2972, 10982, 9213, 293862, 19660], 1, "e8e8adc.jpg?=20180419", 38, "che_211216_yUso", 53, ["hall:ttrate", "hall:winrate"]], + ["38·불량", 75, 91, 15, "che_event_위압", [14075, 10260, 348859, 27854, 22234], 0, "default.jpg", 38, "che_211216_yUso", 55, ["hall:dex3", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["38·니키타", 76, 15, 90, "che_event_환술", [15530, 3368, 10700, 336908, 42357], 0, "default.jpg", 38, "che_211216_yUso", 56, ["chief:5"]], + ["38·카이스트", 76, 16, 88, "che_event_척사", [32822, 21810, 26217, 306652, 36180], 1, "9361ef8.jpg?=20180907", 38, "che_211216_yUso", 57, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:firenum"]], + ["38·어림도없다!", 16, 71, 93, "che_event_저격", [0, 0, 0, 0, 0], 1, "e51b340.gif?=20211216", 38, "che_211216_yUso", 58, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication"]], + ["38·봄꽃", 15, 70, 94, "che_event_신중", [0, 0, 0, 0, 0], 1, "1390e40.jpg?=20211015", 38, "che_211216_yUso", 59, ["hall:tirate"]], + ["38·냥뿌꾸", 77, 90, 15, "che_event_위압", [20999, 17822, 512723, 89599, 49873], 1, "8453795.png?=20211129", 38, "che_211216_yUso", 60, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:tsrate"]], + ["38·이창선", 75, 90, 15, "che_event_견고", [345762, 79620, 151412, 50646, 35864], 1, "32c7d27.jpg?=20211216", 38, "che_211216_yUso", 61, ["chief:12", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["38·구독", 16, 84, 78, "che_event_필살", [0, 0, 0, 0, 0], 1, "7d70cfa.jpg?=20211216", 38, "che_211216_yUso", 63, ["hall:firenum", "hall:ttrate"]], + ["38·도둑이닷", 15, 87, 77, "che_event_위압", [0, 0, 0, 0, 0], 0, "default.jpg", 38, "che_211216_yUso", 64, ["hall:dedication", "hall:firenum"]], + ["38·독생독사", 75, 15, 91, "che_event_신산", [45551, 22876, 28991, 606029, 41343], 1, "b9e332e.jpg?=20211218", 38, "che_211216_yUso", 66, ["hall:betwin", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["38·초밥왕시뉴카린", 87, 77, 15, "che_event_위압", [32436, 234885, 567, 31484, 26548], 1, "e8adcdd.jpg?=20211216", 38, "che_211216_yUso", 67, ["hall:dex2", "hall:tlrate"]], + ["38·시카이슈테르", 87, 74, 15, "che_event_척사", [86366, 294869, 12333, 49178, 14177], 1, "91309e0.jpg?=20211217", 38, "che_211216_yUso", 70, ["hall:dex2", "hall:tlrate"]], + ["38·ARES군주", 76, 91, 15, "che_event_견고", [44193, 6186, 615915, 50433, 53950], 1, "106f82e.jpg?=20210212", 38, "che_211216_yUso", 72, ["chief:6", "hall:betwin", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["38·Cure", 78, 15, 89, "che_event_귀병", [38153, 8730, 11741, 527027, 45852], 1, "b423d19.jpg?=20190718", 38, "che_211216_yUso", 73, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:ttrate"]], + ["38·귀달", 87, 78, 16, "che_event_척사", [24880, 15204, 576187, 74697, 48623], 0, "default.jpg", 38, "che_211216_yUso", 74, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:killcrew_person", "hall:tlrate"]], + ["38·크렌스", 89, 75, 15, "che_event_척사", [404648, 4870, 31325, 48067, 46006], 1, "dbeeb0d.jpg?=20190620", 38, "che_211216_yUso", 75, ["chief:11", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:tlrate"]], + ["38·세일러문", 72, 15, 92, "che_event_집중", [18031, 3565, 6146, 175009, 23297], 0, "default.jpg", 38, "che_211216_yUso", 77, ["hall:tirate"]], + ["38·삭턴과1분장", 75, 15, 89, "che_event_신산", [16445, 25029, 19294, 291495, 16927], 0, "default.jpg", 38, "che_211216_yUso", 119, ["hall:tirate"]], + ["38·펭탄두", 15, 92, 72, "che_event_위압", [0, 0, 0, 0, 0], 0, "default.jpg", 38, "che_211216_yUso", 129, ["hall:dedication", "hall:firenum", "hall:tsrate"]], + ["38·멜덩이", 58, 62, 58, "che_event_저격", [21075, 125482, 4168, 39394, 19457], 0, "default.jpg", 38, "che_211216_yUso", 205, ["hall:dex2"]], + ["38·네정", 15, 72, 91, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 38, "che_211216_yUso", 301, ["hall:dedication", "hall:ttrate"]], + ["38·물고기맛쿠키", 75, 16, 86, "che_event_귀병", [29238, 24469, 11486, 237168, 10693], 0, "default.jpg", 38, "che_211216_yUso", 309, ["hall:ttrate"]], + ["38·무지장캐논", 17, 76, 86, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 38, "che_211216_yUso", 316, ["hall:dedication"]], + ["38·초록햄과초록달걀", 73, 15, 89, "che_event_징병", [1758, 380, 970, 23066, 0], 0, "default.jpg", 38, "che_211216_yUso", 336, ["hall:tirate"]], + ["38·구경잼꿀잼뭐하나", 74, 86, 15, "che_event_위압", [22568, 277635, 24204, 43024, 7795], 0, "default.jpg", 38, "che_211216_yUso", 347, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:tsrate"]], + ["38·ㅁㄴㅇㄹ", 73, 84, 15, "che_event_궁병", [13745, 150091, 5029, 31334, 25366], 0, "default.jpg", 38, "che_211216_yUso", 453, ["hall:dex2"]], + ["39·피리부는사나이", 15, 94, 70, "che_event_신산", [0, 0, 0, 0, 0], 1, "449abac.jpg?=20220107", 39, "che_220106_orjm", 11, ["hall:firenum", "hall:tsrate", "hall:ttrate"]], + ["39·아이린", 73, 89, 15, "che_event_척사", [19296, 220067, 7579, 31927, 29072], 1, "8dac73c.jpg?=20180922", 39, "che_220106_orjm", 12, ["hall:dex2", "hall:firenum", "hall:tsrate"]], + ["39·앵드캡", 75, 89, 15, "che_event_돌격", [10613, 21383, 343970, 22850, 167356], 1, "3936437.png?=20220104", 39, "che_220106_orjm", 16, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["39·릴파", 16, 89, 74, "che_event_척사", [2465, 2650, 46137, 8685, 8214], 1, "aa47ca2.jpg?=20220106", 39, "che_220106_orjm", 20, ["hall:dex3", "hall:tsrate"]], + ["39·착한람쥐죽은람쥐", 73, 90, 15, "che_event_필살", [9823, 38634, 249228, 17949, 25454], 1, "96a0d54.png?=20220106", 39, "che_220106_orjm", 25, ["chief:8", "hall:dex2", "hall:dex3", "hall:occupied"]], + ["39·이드", 72, 15, 92, "che_event_집중", [7144, 3696, 942, 235041, 30562], 1, "5898830.jpg?=20210831", 39, "che_220106_orjm", 26, ["hall:dex5"]], + ["39·머슬다람쥐", 76, 88, 15, "che_event_척사", [251659, 13999, 7855, 33688, 32504], 1, "dada49d.png?=20220105", 39, "che_220106_orjm", 27, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person"]], + ["39·카비", 71, 20, 88, "che_event_신중", [4456, 8395, 24459, 172967, 23688], 0, "default.jpg", 39, "che_220106_orjm", 28, ["hall:occupied"]], + ["39·Hide_D", 76, 15, 88, "che_event_신산", [9145, 8548, 7800, 315758, 20679], 1, "9f0a2a8.png?=20200106", 39, "che_220106_orjm", 29, ["hall:betrate", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["39·로비", 15, 71, 93, "che_event_징병", [0, 0, 0, 0, 0], 1, "d38cb34.png?=20220106", 39, "che_220106_orjm", 30, ["hall:dedication", "hall:tirate"]], + ["39·호람쥐", 71, 20, 89, "che_event_징병", [15651, 20334, 11352, 204738, 17225], 1, "4de305c.png?=20220106", 39, "che_220106_orjm", 32, ["chief:7", "hall:dedication"]], + ["39·다랍쥐", 15, 87, 75, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 39, "che_220106_orjm", 34, ["hall:tsrate"]], + ["39·복숭아좋아", 74, 16, 87, "che_event_신중", [16572, 15405, 10973, 197184, 26935], 1, "57e4a39.jpg?=20190620", 39, "che_220106_orjm", 37, ["hall:tirate"]], + ["39·수장", 75, 15, 88, "che_event_집중", [7287, 18612, 15496, 334172, 22591], 1, "5c1a589.jpg?=20220106", 39, "che_220106_orjm", 41, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:tirate", "hall:ttrate"]], + ["39·불멸의어르신", 76, 89, 15, "che_event_위압", [46402, 258616, 1317, 21201, 22511], 0, "default.jpg", 39, "che_220106_orjm", 42, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["39·자숙케", 75, 86, 16, "che_event_위압", [2314, 3313, 243303, 38662, 7968], 1, "f8e3afe.gif?=20220106", 39, "che_220106_orjm", 43, ["hall:dex3"]], + ["39·ㅣ", 74, 88, 15, "che_event_기병", [3943, 7248, 205438, 26168, 25802], 0, "default.jpg", 39, "che_220106_orjm", 45, ["hall:dex3", "hall:tsrate"]], + ["39·갤노트람쥐", 72, 91, 15, "che_event_돌격", [10768, 23535, 164698, 46897, 20169], 1, "c8a8171.png?=20220106", 39, "che_220106_orjm", 46, ["hall:dex3", "hall:tsrate"]], + ["39·ThirtyNine", 88, 74, 15, "che_event_무쌍", [14069, 9021, 17369, 33654, 215915], 1, "8c540c9.png?=20220109", 39, "che_220106_orjm", 47, ["hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["39·마요이", 77, 85, 15, "che_event_필살", [288948, 4806, 22326, 45283, 27807], 1, "3d319b5.png?=20190422", 39, "che_220106_orjm", 54, ["hall:betgold", "hall:dex1", "hall:experience", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["39·천괴금", 18, 71, 89, "che_event_신중", [0, 1600, 9000, 30289, 1495], 1, "51d357b.png?=20211228", 39, "che_220106_orjm", 56, ["hall:dedication", "hall:firenum"]], + ["39·오과국화약", 86, 77, 15, "che_event_위압", [209970, 16685, 22622, 29760, 16352], 1, "8882c16.jpg?=20220106", 39, "che_220106_orjm", 57, ["hall:dex1", "hall:ttrate"]], + ["39·독구킬러다람쥐", 75, 88, 15, "che_event_보병", [183099, 13424, 26004, 9427, 19547], 1, "23a229a.png?=20220106", 39, "che_220106_orjm", 58, ["hall:dex1"]], + ["39·갈근", 89, 74, 15, "che_event_척사", [310241, 7921, 26836, 45516, 23112], 0, "default.jpg", 39, "che_220106_orjm", 59, ["chief:6", "hall:betwin", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tlrate"]], + ["39·비앙카", 91, 74, 15, "che_event_의술", [6223, 261516, 27819, 36853, 27379], 1, "2fd3f18.png?=20220106", 39, "che_220106_orjm", 60, ["hall:dex2", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["39·박일아", 74, 16, 89, "che_event_반계", [16743, 15118, 687, 280432, 20055], 1, "8608979.gif?=20191024", 39, "che_220106_orjm", 61, ["hall:betrate", "hall:dex4", "hall:killcrew_person", "hall:killrate_person"]], + ["39·네시네시", 75, 15, 89, "che_event_집중", [16737, 11554, 6196, 195151, 28153], 0, "default.jpg", 39, "che_220106_orjm", 62, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["39·아가다람쥐앵벌스", 75, 88, 15, "che_event_돌격", [14036, 153924, 8103, 18695, 11255], 0, "default.jpg", 39, "che_220106_orjm", 64, ["hall:dex2", "hall:tsrate"]], + ["39·페이트", 15, 91, 72, "che_event_신산", [0, 0, 0, 0, 0], 1, "51f4b6c.jpg?=20220106", 39, "che_220106_orjm", 67, ["hall:experience", "hall:firenum", "hall:tsrate"]], + ["39·제갈람쥐", 76, 15, 87, "che_event_신중", [7795, 2749, 14358, 237517, 20984], 1, "d0643a6.png?=20220106", 39, "che_220106_orjm", 69, ["hall:dex4"]], + ["39·로?루", 15, 72, 90, "che_event_척사", [0, 368, 0, 10564, 76], 1, "532f1a5.jpg?=20220104", 39, "che_220106_orjm", 71, ["hall:betrate", "hall:betwingold"]], + ["39·평민킬러", 93, 71, 15, "che_event_견고", [249359, 15075, 17359, 34191, 26572], 1, "fb23a32.jpg?=20190904", 39, "che_220106_orjm", 72, ["hall:dex1", "hall:experience", "hall:tlrate"]], + ["39·디람쥐", 84, 79, 15, "che_event_궁병", [11304, 262071, 9786, 40690, 14165], 1, "9b06c23.png?=20220112", 39, "che_220106_orjm", 73, ["hall:betgold", "hall:dex2", "hall:firenum", "hall:warnum"]], + ["39·카이스트", 73, 16, 89, "che_event_환술", [15322, 14472, 2323, 249303, 25567], 1, "9361ef8.jpg?=20180907", 39, "che_220106_orjm", 74, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killnum", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["39·킹구", 72, 16, 89, "che_event_저격", [9501, 22113, 6971, 219989, 16379], 1, "35f1b7d.png?=20220106", 39, "che_220106_orjm", 75, ["hall:experience", "hall:killrate", "hall:occupied"]], + ["39·임사영", 76, 15, 89, "che_event_저격", [15853, 22513, 2453, 371219, 23439], 1, "10e5f72.jpg?=20210430", 39, "che_220106_orjm", 76, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["39·돌림쥐", 73, 16, 88, "che_event_신산", [19469, 12800, 3897, 292039, 64783], 1, "ac01935.gif?=20220107", 39, "che_220106_orjm", 77, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:occupied", "hall:tirate"]], + ["39·다림쥐", 75, 15, 88, "che_event_반계", [13995, 21461, 8525, 185015, 20360], 1, "7e4946e.png?=20220106", 39, "che_220106_orjm", 78, ["hall:firenum"]], + ["39·앵야호", 73, 15, 91, "che_event_필살", [4805, 27755, 20001, 228376, 24120], 1, "a9b8236.png?=20220106", 39, "che_220106_orjm", 79, ["chief:9", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["39·앵날먹", 16, 72, 89, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 39, "che_220106_orjm", 80, ["hall:dedication", "hall:ttrate"]], + ["39·야람쥐", 91, 73, 15, "che_event_돌격", [68270, 320258, 34833, 40222, 29081], 1, "ceafeed.jpg?=20220103", 39, "che_220106_orjm", 81, ["chief:10", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["39·독구", 73, 15, 92, "che_event_돌격", [16081, 48655, 14113, 300901, 26397], 1, "aea7807.png?=20220106", 39, "che_220106_orjm", 83, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex4", "hall:experience", "hall:occupied", "hall:winrate"]], + ["39·앵벌스", 74, 15, 91, "che_event_신산", [11969, 26745, 16967, 303892, 19058], 1, "d679638.png?=20220112", 39, "che_220106_orjm", 84, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:tirate"]], + ["39·다람쥐", 75, 15, 88, "che_event_집중", [7752, 12064, 4731, 220820, 36394], 1, "d30e30f.png?=20220106", 39, "che_220106_orjm", 85, ["hall:betrate", "hall:betwin", "hall:dex5", "hall:experience", "hall:occupied"]], + ["39·퍄퍄", 75, 87, 15, "che_event_견고", [11310, 11299, 305350, 28712, 30253], 0, "default.jpg", 39, "che_220106_orjm", 86, ["hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum"]], + ["39·검은참깨두유", 75, 89, 16, "che_event_무쌍", [10450, 314932, 231, 25629, 21371], 0, "default.jpg", 39, "che_220106_orjm", 90, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["39·봄꽃", 85, 15, 77, "che_event_필살", [15520, 4992, 1969, 215994, 23760], 1, "1390e40.jpg?=20211015", 39, "che_220106_orjm", 95, ["hall:tlrate"]], + ["39·ARES군주", 74, 89, 17, "che_event_의술", [5099, 12445, 304109, 22047, 34803], 1, "106f82e.jpg?=20210212", 39, "che_220106_orjm", 97, ["hall:betwin", "hall:dex3", "hall:dex5", "hall:killrate"]], + ["39·귀달", 76, 86, 15, "che_event_위압", [9441, 36148, 162881, 36869, 23248], 0, "default.jpg", 39, "che_220106_orjm", 98, ["hall:betwin", "hall:dex3"]], + ["39·애국보수", 74, 15, 87, "che_event_징병", [2807, 11288, 13677, 190102, 24512], 0, "default.jpg", 39, "che_220106_orjm", 99, ["hall:ttrate"]], + ["39·파개한다", 16, 86, 76, "che_event_위압", [0, 0, 0, 0, 0], 0, "default.jpg", 39, "che_220106_orjm", 100, ["hall:tsrate", "hall:ttrate"]], + ["39·콘슈퍼람", 75, 15, 89, "che_event_집중", [13715, 11036, 11829, 298869, 5848], 1, "7211671.jpg?=20220106", 39, "che_220106_orjm", 137, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["39·전라", 73, 16, 87, "che_event_신산", [7797, 14212, 7899, 121809, 13908], 0, "default.jpg", 39, "che_220106_orjm", 151, ["hall:ttrate"]], + ["39·1분장삭턴다람쥐", 71, 15, 90, "che_event_귀병", [0, 3693, 254, 22603, 0], 1, "aceb71a.jpg?=20220107", 39, "che_220106_orjm", 266, ["hall:tirate"]], + ["39·몰루", 83, 78, 15, "che_event_척사", [334201, 7273, 12264, 26003, 29159], 1, "4119a.gif?=20220110", 39, "che_220106_orjm", 327, ["hall:dex1", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["39·정상수", 15, 73, 90, "che_event_신산", [0, 0, 0, 0, 0], 1, "9ba3b15.jpg?=20211230", 39, "che_220106_orjm", 328, ["hall:dedication"]], + ["39·연애그만해라", 83, 79, 16, "che_event_저격", [233784, 16461, 17254, 29838, 28564], 1, "526f311.jpg?=20220111", 39, "che_220106_orjm", 343, ["hall:betrate", "hall:betwingold", "hall:dex1", "hall:tlrate"]], + ["39·edz", 84, 76, 15, "che_event_징병", [4838, 77297, 2052, 15444, 5016], 0, "default.jpg", 39, "che_220106_orjm", 354, ["hall:dex2", "hall:tlrate"]], + ["39·료우기시키", 85, 76, 15, "che_event_필살", [7243, 17485, 210742, 37501, 14345], 1, "72a190e.jpg?=20220109", 39, "che_220106_orjm", 361, ["hall:dex3", "hall:tlrate", "hall:winrate"]], + ["39·김갑환", 85, 77, 15, "che_event_척사", [182508, 35571, 25994, 12827, 24710], 1, "dcff9fd.jpg?=20180823", 39, "che_220106_orjm", 365, ["hall:dex1", "hall:tlrate"]], + ["39·앵람쥐", 84, 77, 15, "che_event_징병", [167375, 7354, 41473, 24544, 16854], 1, "ead5091.jpg?=20220109", 39, "che_220106_orjm", 369, ["hall:dex1"]], + ["39·쿤타", 15, 72, 89, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 39, "che_220106_orjm", 392, ["hall:firenum"]], + ["39·할래", 15, 73, 84, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 39, "che_220106_orjm", 448, ["hall:firenum"]], + ["41·박일아", 75, 90, 15, "che_event_돌격", [43452, 437388, 7650, 68585, 25888], 1, "8608979.gif?=20191024", 41, "che_220224_Fj8Q", 6, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:occupied", "hall:tsrate"]], + ["41·로제타", 73, 15, 93, "che_event_의술", [17523, 7085, 5262, 249044, 18016], 1, "a7815f.jpg?=20220224", 41, "che_220224_Fj8Q", 9, ["hall:tirate"]], + ["41·독마독갈테르", 78, 89, 15, "che_event_무쌍", [21761, 444018, 9855, 24419, 31179], 1, "bc1ef1f.jpg?=20220224", 41, "che_220224_Fj8Q", 10, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["41·하츄핑", 74, 15, 93, "che_event_집중", [21535, 42163, 36827, 683755, 33733], 1, "4e57009.gif?=20220225", 41, "che_220224_Fj8Q", 12, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["41·제갈공명", 75, 16, 90, "che_event_징병", [27943, 14572, 13776, 426952, 51052], 1, "65f385f.jpg?=20220311", 41, "che_220224_Fj8Q", 15, ["hall:dex4", "hall:dex5", "hall:killcrew"]], + ["41·콩가루", 74, 93, 15, "che_event_무쌍", [11240, 7048, 296328, 13622, 22317], 1, "c65bf58.jpg?=20220224", 41, "che_220224_Fj8Q", 17, ["hall:betrate", "hall:dex3", "hall:firenum", "hall:tsrate"]], + ["41·SARS", 90, 76, 15, "che_event_징병", [27287, 426889, 44972, 42835, 19903], 1, "b84944.jpg?=20180829", 41, "che_220224_Fj8Q", 21, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["41·악동핑", 74, 92, 15, "che_event_위압", [79547, 31456, 264832, 35411, 20533], 1, "e27f92b.jpg?=20220224", 41, "che_220224_Fj8Q", 22, ["hall:betgold", "hall:betwingold", "hall:dex3", "hall:firenum", "hall:tsrate"]], + ["41·아우", 75, 86, 16, "che_event_보병", [108027, 1133, 10053, 2178, 15152], 1, "cdab72d.jpg?=20220311", 41, "che_220224_Fj8Q", 26, ["hall:dex1", "hall:killrate"]], + ["41·코케 레수렉시온", 20, 86, 74, "che_event_위압", [11991, 7158, 260072, 31833, 20262], 1, "b04a5f3.png?=20220224", 41, "che_220224_Fj8Q", 28, ["chief:7", "hall:killrate", "hall:killrate_person", "hall:ttrate"]], + ["41·앵버거독피자시스시", 77, 86, 15, "che_event_필살", [17917, 15385, 339551, 15195, 30243], 1, "4791e3e.png?=20220228", 41, "che_220224_Fj8Q", 30, ["hall:dex3"]], + ["41·평민킬러", 94, 73, 15, "che_event_견고", [449497, 7882, 41591, 25395, 29311], 1, "fb23a32.jpg?=20190904", 41, "che_220224_Fj8Q", 31, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["41·초코맛국수", 78, 16, 86, "che_event_반계", [22432, 32964, 14135, 332658, 27111], 1, "4bcd3f5.jpg?=20200904", 41, "che_220224_Fj8Q", 32, ["hall:dex4", "hall:ttrate"]], + ["41·퍄퍄", 75, 88, 15, "che_event_척사", [35503, 35372, 281079, 66369, 11616], 0, "default.jpg", 41, "che_220224_Fj8Q", 34, ["hall:dex3", "hall:ttrate"]], + ["41·카이스트", 75, 15, 89, "che_event_집중", [31652, 29636, 25506, 413076, 35780], 1, "9361ef8.jpg?=20180907", 41, "che_220224_Fj8Q", 35, ["hall:betwin", "hall:dex4", "hall:killrate_person", "hall:winrate"]], + ["41·반도핑", 80, 86, 15, "che_event_위압", [444881, 40282, 76960, 41638, 30272], 1, "e6269b8.png?=20220223", 41, "che_220224_Fj8Q", 38, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["41·게르니카", 78, 15, 87, "che_event_필살", [5338, 8934, 13868, 152359, 9650], 1, "40874e3.jpg?=20220304", 41, "che_220224_Fj8Q", 39, ["hall:ttrate"]], + ["41·조승상", 86, 78, 16, "che_event_징병", [383320, 16298, 43382, 57809, 40538], 1, "bda7d37.jpg?=20200606", 41, "che_220224_Fj8Q", 40, ["hall:dex1", "hall:dex5", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["41·네이미", 85, 80, 15, "che_event_무쌍", [77277, 6360, 1785, 7671, 47658], 0, "default.jpg", 41, "che_220224_Fj8Q", 41, ["hall:dex5", "hall:firenum", "hall:tlrate", "hall:ttrate"]], + ["41·앵벌스♡리즈나", 76, 15, 89, "che_event_환술", [11161, 264, 14990, 157336, 12554], 0, "default.jpg", 41, "che_220224_Fj8Q", 43, ["hall:firenum"]], + ["41·바로핑", 75, 15, 92, "che_event_신중", [29932, 29109, 20100, 435655, 31249], 1, "fad2d4d.gif?=20220226", 41, "che_220224_Fj8Q", 45, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:tirate"]], + ["41·유카", 74, 92, 15, "che_event_필살", [32022, 220114, 8249, 21112, 25980], 0, "default.jpg", 41, "che_220224_Fj8Q", 46, ["hall:dex2"]], + ["41·루리나", 15, 73, 91, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 41, "che_220224_Fj8Q", 47, ["hall:firenum"]], + ["41·1.0", 73, 15, 93, "che_event_의술", [19744, 11102, 10924, 378546, 21790], 0, "default.jpg", 41, "che_220224_Fj8Q", 49, ["hall:betrate", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["41·핑", 77, 16, 88, "che_event_반계", [19719, 27389, 18374, 326154, 45549], 1, "5b67ef7.gif?=20220224", 41, "che_220224_Fj8Q", 51, ["hall:dex4", "hall:dex5"]], + ["41·갈근", 89, 75, 15, "che_event_척사", [420849, 17484, 20526, 59786, 25936], 0, "default.jpg", 41, "che_220224_Fj8Q", 52, ["hall:dex1", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["41·도9", 86, 77, 16, "che_event_견고", [244863, 2803, 18539, 35060, 28143], 0, "default.jpg", 41, "che_220224_Fj8Q", 53, ["hall:dex1"]], + ["41·시뉴카린", 75, 88, 16, "che_event_의술", [335381, 9479, 5494, 26662, 28282], 1, "a0900f2.jpg?=20220224", 41, "che_220224_Fj8Q", 54, ["chief:6", "hall:betwin", "hall:dedication", "hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["41·불패", 75, 15, 90, "che_event_신중", [16090, 10349, 8786, 267626, 38685], 1, "3efdfcc.jpg?=20220224", 41, "che_220224_Fj8Q", 55, ["hall:dedication", "hall:experience", "hall:killrate_person", "hall:occupied"]], + ["41·시진핑", 89, 78, 15, "che_event_견고", [35857, 51264, 461518, 58913, 41876], 1, "aabda9a.png?=20220224", 41, "che_220224_Fj8Q", 57, ["hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["41·ZZARA", 75, 89, 15, "che_event_위압", [403599, 10202, 16749, 31807, 26313], 1, "1d43adb.jpg?=20220224", 41, "che_220224_Fj8Q", 58, ["hall:dex1", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["41·마휘핑", 74, 15, 92, "che_event_의술", [32176, 15977, 14948, 412194, 32175], 1, "d2e91a.png?=20220220", 41, "che_220224_Fj8Q", 59, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:tirate"]], + ["41·차차핑", 77, 87, 16, "che_event_견고", [11993, 39166, 297921, 21401, 71308], 1, "c86f7b.gif?=20220226", 41, "che_220224_Fj8Q", 60, ["hall:betrate", "hall:betwin", "hall:dex3", "hall:dex5"]], + ["41·임사영", 76, 15, 91, "che_event_환술", [28696, 21170, 7537, 453587, 27951], 1, "10e5f72.jpg?=20210430", 41, "che_220224_Fj8Q", 61, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["41·커여운홍차", 19, 83, 79, "che_event_환술", [2008, 12986, 32509, 6089, 41006], 1, "567fec5.png?=20220224", 41, "che_220224_Fj8Q", 63, ["hall:dex5"]], + ["41·넌못지나간다", 93, 73, 15, "che_event_의술", [22890, 15106, 17593, 34781, 192833], 1, "deab2f.png?=20220312", 41, "che_220224_Fj8Q", 64, ["hall:dex5", "hall:firenum", "hall:ttrate"]], + ["41·뉴턴", 74, 16, 90, "che_event_척사", [13078, 18275, 31557, 259969, 29006], 0, "default.jpg", 41, "che_220224_Fj8Q", 66, ["hall:dedication", "hall:tirate"]], + ["41·고독한삐에로", 91, 75, 15, "che_event_징병", [18721, 390604, 9010, 34384, 29969], 1, "44f3d1e.jpg?=20220224", 41, "che_220224_Fj8Q", 68, ["hall:dex2", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["41·페르난도", 73, 93, 15, "che_event_무쌍", [22861, 312434, 9286, 35172, 31654], 1, "6c07b3e.jpg?=20220305", 41, "che_220224_Fj8Q", 69, ["chief:10", "hall:dedication", "hall:dex2", "hall:experience", "hall:killrate", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["41·민방위n년차", 83, 15, 81, "che_event_필살", [15261, 22389, 8240, 206868, 35025], 0, "default.jpg", 41, "che_220224_Fj8Q", 70, ["hall:occupied"]], + ["41·불곰", 38, 52, 90, "che_event_신산", [7300, 4300, 7554, 98769, 12063], 1, "80ee728.png?=20220224", 41, "che_220224_Fj8Q", 71, ["hall:dedication"]], + ["41·군필22학번", 74, 15, 90, "che_event_신산", [13849, 15586, 24052, 254690, 38855], 0, "default.jpg", 41, "che_220224_Fj8Q", 72, ["hall:betrate", "hall:dex5", "hall:experience", "hall:firenum"]], + ["41·네시", 93, 72, 15, "che_event_위압", [98135, 25649, 210036, 33285, 23269], 0, "default.jpg", 41, "che_220224_Fj8Q", 74, ["hall:dex1", "hall:tlrate"]], + ["41·칠리크랩", 15, 73, 93, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 41, "che_220224_Fj8Q", 75, ["hall:tirate"]], + ["41·AI 흑우", 76, 15, 90, "che_event_저격", [20885, 36148, 18960, 289777, 22512], 1, "50b617f.jpg?=20220206", 41, "che_220224_Fj8Q", 76, ["hall:betgold", "hall:tirate", "hall:winrate"]], + ["41·tqtt", 72, 15, 91, "che_event_척사", [7489, 3328, 1111, 102259, 22328], 0, "default.jpg", 41, "che_220224_Fj8Q", 77, ["hall:dedication"]], + ["41·호갱", 77, 87, 15, "che_event_필살", [2920, 37271, 243527, 28901, 10186], 0, "default.jpg", 41, "che_220224_Fj8Q", 78, ["hall:winrate"]], + ["41·3", 76, 87, 16, "che_event_저격", [20570, 10717, 452051, 29756, 21682], 0, "default.jpg", 41, "che_220224_Fj8Q", 79, ["hall:dex3", "hall:tsrate", "hall:winrate"]], + ["41·무장입니다", 74, 94, 15, "che_event_필살", [9499, 17007, 399963, 25618, 20559], 0, "default.jpg", 41, "che_220224_Fj8Q", 118, ["chief:11", "hall:betwin", "hall:dedication", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["41·갓갓가가갓갓", 77, 87, 15, "che_event_돌격", [17464, 13134, 307569, 41865, 29963], 0, "default.jpg", 41, "che_220224_Fj8Q", 129, ["hall:dex3"]], + ["41·아야핑", 76, 89, 15, "che_event_척사", [18358, 93171, 364886, 49216, 26193], 1, "b959298.gif?=20220226", 41, "che_220224_Fj8Q", 142, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person"]], + ["41·수장", 75, 89, 15, "che_event_척사", [29947, 310066, 15063, 59867, 14164], 1, "5c1a589.jpg?=20220106", 41, "che_220224_Fj8Q", 281, ["hall:dex2", "hall:tsrate"]], + ["41·봄꽃", 86, 15, 78, "che_event_필살", [12065, 7559, 22313, 156037, 13345], 1, "1390e40.jpg?=20211015", 41, "che_220224_Fj8Q", 284, ["hall:tlrate"]], + ["41·천마", 75, 15, 90, "che_event_신산", [26090, 5952, 19702, 261314, 24068], 1, "141e365.jpg?=20220127", 41, "che_220224_Fj8Q", 290, ["chief:5", "hall:dedication", "hall:tirate"]], + ["41·중달", 77, 15, 88, "che_event_신산", [10047, 18467, 28378, 483579, 35952], 0, "default.jpg", 41, "che_220224_Fj8Q", 292, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["41·후랴", 73, 15, 92, "che_event_신산", [10432, 2627, 9550, 228265, 52145], 0, "default.jpg", 41, "che_220224_Fj8Q", 296, ["hall:dedication", "hall:dex5", "hall:occupied", "hall:tirate"]], + ["41·료우기시키", 86, 74, 16, "che_event_저격", [17509, 177855, 9211, 31553, 7485], 1, "72a190e.jpg?=20220109", 41, "che_220224_Fj8Q", 413, ["hall:dex2"]], + ["41·맛있는딸기", 74, 90, 15, "che_event_무쌍", [14587, 158281, 1057, 28691, 10061], 0, "default.jpg", 41, "che_220224_Fj8Q", 422, ["hall:dex2", "hall:tsrate"]], + ["41·rwitch", 86, 77, 15, "che_event_무쌍", [149799, 2589, 32606, 23093, 25457], 1, "54e527.png?=20201024", 41, "che_220224_Fj8Q", 435, ["hall:dex1", "hall:tlrate", "hall:ttrate"]], + ["41·냐옹", 74, 87, 15, "che_event_필살", [17419, 95899, 1786, 12508, 476], 1, "b9b1f53.png?=20220301", 41, "che_220224_Fj8Q", 460, ["hall:dex2"]], + ["41·엘독링", 15, 84, 74, "che_event_위압", [0, 0, 0, 0, 0], 0, "default.jpg", 41, "che_220224_Fj8Q", 519, ["hall:firenum"]], + ["41·유산스카", 15, 86, 73, "che_event_징병", [0, 0, 0, 0, 0], 1, "7782366.jpg?=20220304", 41, "che_220224_Fj8Q", 533, ["hall:firenum"]], + ["42·HMR", 77, 15, 91, "che_event_신산", [6727, 15421, 10548, 355505, 30759], 1, "6a2e2a9.png?=20220319", 42, "che_220317_36DC", 17, ["hall:dex4"]], + ["42·카이스트", 75, 15, 93, "che_event_집중", [12376, 705, 18577, 165655, 7488], 1, "9361ef8.jpg?=20180907", 42, "che_220317_36DC", 23, ["hall:betwin", "hall:firenum", "hall:tirate", "hall:ttrate"]], + ["42·천괴은", 76, 93, 15, "che_event_척사", [34276, 4719, 364266, 55731, 27188], 1, "280dc70.png?=20220317", 42, "che_220317_36DC", 24, ["hall:betwin", "hall:dex3", "hall:killnum", "hall:winrate"]], + ["42·갈근", 91, 77, 15, "che_event_돌격", [606120, 19511, 89178, 87614, 46836], 0, "default.jpg", 42, "che_220317_36DC", 25, ["hall:betrate", "hall:betwin", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["42·블루마운틴", 15, 95, 71, "che_event_저격", [0, 0, 0, 0, 0], 1, "9ce4f55.jpg?=20220317", 42, "che_220317_36DC", 26, ["hall:betgold", "hall:experience", "hall:firenum"]], + ["42·엔틱", 77, 15, 93, "che_event_집중", [21198, 20686, 22001, 672464, 19957], 1, "2dc4058.jpg?=20190816", 42, "che_220317_36DC", 28, ["chief:5", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["42·천재마법사", 76, 15, 92, "che_event_신중", [18213, 9734, 8988, 362896, 33302], 1, "141e365.jpg?=20220127", 42, "che_220317_36DC", 32, ["hall:dex4"]], + ["42·심의위원장", 73, 16, 93, "che_event_집중", [12704, 14129, 6126, 295869, 58510], 1, "66f794f.jpg?=20220318", 42, "che_220317_36DC", 35, ["hall:dex5"]], + ["42·수장", 77, 91, 15, "che_event_저격", [4533, 28722, 493346, 31210, 43505], 1, "5c1a589.jpg?=20220106", 42, "che_220317_36DC", 46, ["chief:10", "hall:dedication", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["42·미네르바", 90, 79, 15, "che_event_격노", [37636, 32815, 501935, 75799, 41605], 1, "300a501.jpg?=20220317", 42, "che_220317_36DC", 47, ["hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate"]], + ["42·천괴다이아", 73, 15, 96, "che_event_환술", [13454, 13144, 1555, 238308, 13756], 1, "e47c9ca.png?=20220318", 42, "che_220317_36DC", 49, ["hall:occupied", "hall:tirate"]], + ["42·사사게", 76, 91, 15, "che_event_의술", [420906, 11581, 9636, 36881, 48846], 1, "7d6c295.jpg?=20220318", 42, "che_220317_36DC", 50, ["hall:dex1", "hall:killrate", "hall:occupied", "hall:tsrate"]], + ["42·박일아", 76, 91, 15, "che_event_척사", [523199, 10477, 26851, 71632, 38919], 1, "8608979.gif?=20191024", 42, "che_220317_36DC", 52, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:tsrate", "hall:warnum"]], + ["42·SARS", 88, 78, 16, "che_event_위압", [46419, 21759, 214313, 27401, 258660], 1, "b84944.jpg?=20180829", 42, "che_220317_36DC", 53, ["hall:dex5", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["42·이드", 74, 94, 15, "che_event_저격", [347159, 7448, 15226, 49756, 26678], 1, "5898830.jpg?=20210831", 42, "che_220317_36DC", 59, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["42·킹구", 76, 15, 91, "che_event_신산", [16489, 22855, 12427, 217338, 39743], 1, "35f1b7d.png?=20220106", 42, "che_220317_36DC", 60, ["hall:ttrate"]], + ["42·빵사능홍차", 89, 78, 15, "che_event_척사", [17292, 62615, 622484, 53144, 38500], 1, "567fec5.png?=20220224", 42, "che_220317_36DC", 62, ["chief:8", "hall:betwin", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["42·루피", 74, 95, 15, "che_event_무쌍", [4619, 38241, 359218, 32089, 36023], 1, "9dcd7c3.jpg?=20220317", 42, "che_220317_36DC", 63, ["hall:dex2", "hall:dex3", "hall:occupied", "hall:tsrate"]], + ["42·복숭아좋아", 74, 16, 91, "che_event_신산", [20671, 17889, 35903, 317790, 35818], 1, "57e4a39.jpg?=20190620", 42, "che_220317_36DC", 64, ["chief:9", "hall:dedication"]], + ["42·Mella", 75, 93, 16, "che_event_저격", [11376, 333680, 8130, 53732, 29914], 1, "7cc8da6.jpg?=20220319", 42, "che_220317_36DC", 66, ["hall:betrate", "hall:dex2", "hall:tsrate", "hall:ttrate"]], + ["42·방화범", 72, 93, 16, "che_event_돌격", [86998, 928, 8500, 6888, 6369], 1, "d3f5889.jpg?=20220317", 42, "che_220317_36DC", 69, ["hall:tsrate"]], + ["42·퍄퍄", 75, 16, 91, "che_event_신중", [18741, 21058, 28142, 329065, 33028], 0, "default.jpg", 42, "che_220317_36DC", 70, ["hall:betrate"]], + ["42·마요이", 77, 92, 15, "che_event_무쌍", [25174, 334528, 8838, 36055, 20860], 1, "b17b98f.png?=20220313", 42, "che_220317_36DC", 71, ["hall:dex2", "hall:firenum"]], + ["42·rwitch", 75, 15, 94, "che_event_집중", [15784, 10533, 5446, 364976, 29798], 1, "54e527.png?=20201024", 42, "che_220317_36DC", 72, ["hall:dex4", "hall:killnum", "hall:tirate", "hall:winrate"]], + ["42·천재", 74, 15, 92, "che_event_신중", [19626, 14719, 4089, 338619, 48964], 0, "default.jpg", 42, "che_220317_36DC", 73, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5"]], + ["42·천괴흙", 76, 15, 92, "che_event_집중", [15214, 4902, 2976, 348202, 17365], 1, "a7b607b.png?=20220317", 42, "che_220317_36DC", 75, ["hall:occupied", "hall:tirate"]], + ["42·천괴코인", 91, 77, 15, "che_event_돌격", [12092, 182798, 9778, 27472, 26098], 1, "8f074b9.png?=20220317", 42, "che_220317_36DC", 76, ["hall:dex2", "hall:tlrate"]], + ["42·사스케", 75, 15, 91, "che_event_집중", [13753, 20413, 19875, 498352, 59119], 1, "30dee4e.jpg?=20220225", 42, "che_220317_36DC", 78, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["42·SARS케", 79, 89, 15, "che_event_위압", [7319, 15315, 291997, 30461, 16926], 1, "ad1c68a.jpg?=20220320", 42, "che_220317_36DC", 80, ["hall:dex3", "hall:occupied"]], + ["42·평민킬러", 76, 93, 15, "che_event_척사", [413726, 7004, 20082, 51027, 31004], 1, "fb23a32.jpg?=20190904", 42, "che_220317_36DC", 81, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["42·참고하라고", 75, 92, 15, "che_event_저격", [652011, 14579, 24956, 115319, 54094], 1, "c9273ff.jpg?=20220317", 42, "che_220317_36DC", 82, ["hall:betgold", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:tsrate", "hall:warnum"]], + ["42·임사영", 76, 15, 92, "che_event_척사", [33626, 20972, 14763, 389331, 29795], 1, "ced58f6.jpg?=20220317", 42, "che_220317_36DC", 84, ["chief:7", "hall:betwin", "hall:dedication", "hall:dex4", "hall:experience"]], + ["42·전술핵", 75, 93, 15, "che_event_돌격", [16094, 30289, 835794, 77448, 38574], 1, "4ec7260.jpg?=20220317", 42, "che_220317_36DC", 85, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["42·Hide_D", 77, 15, 91, "che_event_신산", [15048, 7078, 13469, 399070, 19807], 1, "8cf2033.png?=20220228", 42, "che_220317_36DC", 86, ["hall:dex4", "hall:killcrew_person", "hall:warnum"]], + ["42·천괴옥", 77, 91, 15, "che_event_위압", [30921, 15980, 255487, 39720, 26337], 1, "29a4921.png?=20220317", 42, "che_220317_36DC", 87, ["hall:betgold", "hall:betwingold", "hall:dex3"]], + ["42·천괴동", 73, 15, 93, "che_event_신중", [18761, 4162, 0, 130204, 12101], 1, "458d076.png?=20220318", 42, "che_220317_36DC", 88, ["hall:tirate"]], + ["42·갓갓가가갓갓", 77, 15, 91, "che_event_집중", [14171, 1623, 20817, 289335, 24954], 1, "6f00e57.jpg?=20220325", 42, "che_220317_36DC", 89, ["hall:betgold", "hall:betwingold"]], + ["42·페르난도", 78, 89, 16, "che_event_격노", [35771, 443642, 15183, 83463, 32307], 1, "6c07b3e.jpg?=20220305", 42, "che_220317_36DC", 92, ["hall:betrate", "hall:dex2", "hall:killcrew_person", "hall:ttrate"]], + ["42·코로나다메요", 87, 78, 16, "che_event_무쌍", [22819, 13145, 275882, 43705, 36382], 0, "default.jpg", 42, "che_220317_36DC", 93, ["hall:dex3", "hall:tlrate"]], + ["42·불곰", 76, 90, 15, "che_event_위압", [446246, 6247, 11409, 64057, 36700], 1, "2656d9d.png?=20220317", 42, "che_220317_36DC", 94, ["hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["42·천개금", 15, 98, 70, "che_event_신산", [0, 0, 0, 0, 0], 1, "1b322be.png?=20220317", 42, "che_220317_36DC", 95, ["hall:betrate", "hall:betwingold", "hall:experience", "hall:firenum", "hall:tsrate"]], + ["42·황혼중", 87, 15, 80, "che_event_신중", [13574, 11159, 501, 118665, 20397], 1, "64a306e.png?=20220127", 42, "che_220317_36DC", 96, ["hall:tlrate"]], + ["42·불패", 91, 74, 15, "che_event_저격", [29356, 437206, 25696, 46700, 50468], 1, "3efdfcc.jpg?=20220224", 42, "che_220317_36DC", 97, ["hall:dex2", "hall:dex5", "hall:tlrate"]], + ["42·4.6", 79, 91, 15, "che_event_척사", [650110, 19401, 69113, 43724, 42624], 0, "default.jpg", 42, "che_220317_36DC", 98, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["42·네시", 84, 82, 15, "che_event_견고", [245812, 856, 11228, 43545, 26023], 1, "3c436ef.png?=20220322", 42, "che_220317_36DC", 99, ["hall:tlrate"]], + ["42·렌고쿠 쿄주로", 76, 90, 15, "che_event_무쌍", [361108, 9329, 25203, 26853, 33515], 1, "40874e3.jpg?=20220304", 42, "che_220317_36DC", 100, ["hall:dedication", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["42·초코맛국수", 77, 15, 89, "che_event_신중", [21121, 10114, 17979, 374347, 55916], 1, "4bcd3f5.jpg?=20200904", 42, "che_220317_36DC", 101, ["hall:dex4", "hall:dex5"]], + ["42·빛", 77, 90, 15, "che_event_견고", [33510, 22231, 303826, 55675, 75064], 1, "cd7ab74.png?=20220323", 42, "che_220317_36DC", 102, ["hall:betgold", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:firenum", "hall:warnum"]], + ["42·외심장", 73, 18, 93, "che_event_집중", [24057, 11976, 4348, 413702, 39431], 1, "36110cd.jpg?=20180826", 42, "che_220317_36DC", 103, ["hall:dex4", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["42·돈까스에치즈빼라", 75, 15, 94, "che_event_집중", [10119, 16548, 21371, 457714, 53430], 0, "default.jpg", 42, "che_220317_36DC", 104, ["hall:dex4", "hall:dex5", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["42·정승필18센치", 15, 75, 91, "che_event_집중", [0, 0, 0, 0, 0], 1, "d5e518d.png?=20220317", 42, "che_220317_36DC", 109, ["hall:betrate"]], + ["42·네시분신", 74, 15, 93, "che_event_신산", [17165, 1508, 6145, 210596, 6246], 1, "d0b15f1.png?=20220331", 42, "che_220317_36DC", 110, ["hall:tirate"]], + ["42·중달", 96, 72, 15, "che_event_견고", [378922, 20180, 32054, 52630, 60774], 0, "default.jpg", 42, "che_220317_36DC", 112, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:tlrate"]], + ["42·상임위원", 76, 89, 17, "che_event_기병", [2942, 5944, 172269, 26500, 25260], 0, "default.jpg", 42, "che_220317_36DC", 113, ["hall:betrate"]], + ["42·tqtt", 72, 15, 94, "che_event_신산", [15063, 2660, 10959, 126403, 22296], 0, "default.jpg", 42, "che_220317_36DC", 114, ["hall:tirate"]], + ["42·제갈여포", 15, 76, 92, "che_event_필살", [528, 0, 250, 0, 0], 1, "e8e8adc.jpg?=20180419", 42, "che_220317_36DC", 116, ["hall:ttrate"]], + ["42·로아의노예", 15, 80, 86, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 42, "che_220317_36DC", 142, ["chief:6", "hall:dedication", "hall:firenum"]], + ["42·모리쿠보노노", 74, 15, 92, "che_event_집중", [17841, 10129, 16103, 274248, 20508], 1, "fa4755d.jpg?=20220317", 42, "che_220317_36DC", 145, ["hall:firenum", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["42·후랴", 77, 15, 89, "che_event_환술", [18534, 8613, 30530, 194615, 19334], 0, "default.jpg", 42, "che_220317_36DC", 267, ["hall:betrate"]], + ["42·멜덩이", 16, 74, 90, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 42, "che_220317_36DC", 359, ["hall:tirate"]], + ["42·민초치카", 16, 92, 72, "che_event_견고", [0, 0, 0, 0, 0], 0, "default.jpg", 42, "che_220317_36DC", 364, ["hall:firenum"]], + ["42·숨쉴래", 71, 15, 95, "che_event_척사", [0, 0, 0, 0, 0], 1, "9a13729.webp?=20211104", 42, "che_220317_36DC", 367, ["hall:ttrate"]], + ["42·멜랑멜랑", 15, 73, 90, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 42, "che_220317_36DC", 475, ["hall:firenum"]], + ["42·Q1", 83, 77, 15, "che_event_견고", [2770, 49976, 788, 4824, 0], 0, "default.jpg", 42, "che_220317_36DC", 508, ["hall:dex2"]], + ["43·구동매", 78, 94, 15, "che_event_위압", [79750, 758095, 42576, 74745, 17667], 1, "b485136.jpg?=20220424", 43, "che_220414_IXks", 7, ["hall:betrate", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["43·징버거", 76, 91, 15, "che_event_무쌍", [27208, 12076, 330747, 36355, 7372], 1, "e0daaa2.png?=20220417", 43, "che_220414_IXks", 10, ["hall:dex3", "hall:ttrate"]], + ["43·히나", 76, 16, 94, "che_event_집중", [34495, 31680, 22013, 511761, 27662], 1, "85dd2df.jpg?=20220413", 43, "che_220414_IXks", 11, ["hall:betgold", "hall:betwingold", "hall:dex4"]], + ["43·굴먹는고양이", 87, 84, 15, "che_event_돌격", [506354, 38798, 11986, 67001, 56406], 0, "default.jpg", 43, "che_220414_IXks", 14, ["hall:dex1", "hall:dex5"]], + ["43·카리야개팬다", 78, 95, 15, "che_event_견고", [54901, 647590, 12879, 89551, 17321], 0, "default.jpg", 43, "che_220414_IXks", 19, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["43·악질사랑스런케리건", 77, 91, 15, "che_event_견고", [372808, 47438, 29941, 61259, 24145], 1, "abe6c2c.jpg?=20220507", 43, "che_220414_IXks", 26, ["hall:dedication", "hall:dex1"]], + ["43·K9자주포", 101, 15, 70, "che_event_척사", [21015, 40381, 58498, 113666, 628533], 0, "default.jpg", 43, "che_220414_IXks", 27, ["hall:betgold", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["43·고세구", 76, 15, 93, "che_event_집중", [39782, 12622, 20411, 501066, 30927], 1, "3f05e2a.png?=20220408", 43, "che_220414_IXks", 30, ["hall:dex4"]], + ["43·Hide_D", 79, 15, 92, "che_event_귀병", [11275, 33545, 27500, 472781, 24903], 1, "8cf2033.png?=20220228", 43, "che_220414_IXks", 38, ["chief:7", "hall:dex4", "hall:ttrate"]], + ["43·놀러와~~", 78, 92, 15, "che_event_척사", [29786, 38626, 348246, 35922, 16699], 0, "default.jpg", 43, "che_220414_IXks", 43, ["hall:betwingold", "hall:dex3"]], + ["43·이드", 75, 15, 96, "che_event_집중", [17281, 17019, 11619, 377538, 36414], 1, "5898830.jpg?=20210831", 43, "che_220414_IXks", 44, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["43·메스가키", 96, 78, 15, "che_event_무쌍", [63724, 664216, 59507, 65032, 31745], 1, "516b2b5.jpg?=20220414", 43, "che_220414_IXks", 45, ["chief:8", "hall:betwin", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["43·OpenSea", 79, 15, 92, "che_event_반계", [36090, 26737, 15661, 261128, 10398], 1, "4ac3968.png?=20220414", 43, "che_220414_IXks", 47, ["hall:occupied"]], + ["43·페코린느", 79, 93, 15, "che_event_필살", [37458, 33252, 295662, 51538, 24886], 1, "93ee802.png?=20190621", 43, "che_220414_IXks", 52, ["hall:dedication", "hall:dex3", "hall:occupied", "hall:tsrate"]], + ["43·라이언", 100, 70, 15, "che_event_공성", [13187, 9050, 12702, 0, 330986], 1, "3a86f19.gif?=20220419", 43, "che_220414_IXks", 54, ["hall:betrate", "hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["43·마크", 92, 79, 15, "che_event_위압", [369905, 28223, 38723, 51458, 26231], 0, "default.jpg", 43, "che_220414_IXks", 62, ["hall:dedication", "hall:dex1", "hall:tlrate"]], + ["43·SARS", 89, 83, 15, "che_event_무쌍", [655562, 164448, 72989, 49446, 33557], 1, "b84944.jpg?=20180829", 43, "che_220414_IXks", 63, ["chief:12", "hall:betwin", "hall:dex1", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["43·황혼중", 78, 17, 91, "che_event_신산", [12740, 9705, 3430, 240495, 17347], 1, "64a306e.png?=20220127", 43, "che_220414_IXks", 64, ["hall:ttrate"]], + ["43·SARS케앵벌스케", 89, 15, 83, "che_event_신중", [26102, 30692, 25131, 396339, 13096], 1, "30b3a05.jpg?=20220408", 43, "che_220414_IXks", 66, ["hall:betrate", "hall:tlrate"]], + ["43·독피자", 79, 93, 15, "che_event_무쌍", [679279, 18770, 21729, 100387, 13247], 0, "default.jpg", 43, "che_220414_IXks", 67, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["43·예쁜애", 76, 15, 95, "che_event_척사", [28881, 17214, 12983, 633864, 20913], 1, "7b757ae.png?=20220414", 43, "che_220414_IXks", 69, ["chief:11", "hall:betrate", "hall:dex4", "hall:experience", "hall:killnum", "hall:occupied", "hall:winrate"]], + ["43·양아치파이리", 77, 15, 95, "che_event_반계", [16019, 23692, 14236, 399971, 27634], 1, "954fadb.jpg?=20220414", 43, "che_220414_IXks", 71, ["chief:5", "hall:experience"]], + ["43·카리야 깡!", 76, 95, 15, "che_event_돌격", [35425, 400645, 16194, 58494, 19815], 1, "95c66e6.gif?=20220415", 43, "che_220414_IXks", 72, ["hall:dex2", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["43·라이마", 75, 15, 97, "che_event_집중", [27593, 22496, 15604, 518637, 51940], 1, "290f78e.jpg?=20220414", 43, "che_220414_IXks", 74, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:tirate"]], + ["43·라디오", 88, 81, 16, "che_event_저격", [14830, 3047, 562918, 38103, 24105], 0, "default.jpg", 43, "che_220414_IXks", 76, ["hall:dex3", "hall:tlrate"]], + ["43·불패", 76, 15, 94, "che_event_집중", [21951, 12374, 18746, 359026, 43326], 1, "3efdfcc.jpg?=20220224", 43, "che_220414_IXks", 77, ["hall:betgold", "hall:betwingold", "hall:tirate"]], + ["43·제갈여포", 15, 73, 95, "che_event_척사", [0, 0, 0, 0, 3095], 1, "e8e8adc.jpg?=20180419", 43, "che_220414_IXks", 79, ["hall:firenum", "hall:tirate"]], + ["43·양아치파이", 77, 17, 93, "che_event_신중", [5628, 21575, 2943, 459461, 54341], 1, "f76fa74.jpg?=20190629", 43, "che_220414_IXks", 80, ["hall:dex5"]], + ["43·네시", 77, 92, 15, "che_event_무쌍", [55699, 62788, 465642, 62599, 23652], 0, "default.jpg", 43, "che_220414_IXks", 81, ["hall:dex3", "hall:tsrate"]], + ["43·갈근", 94, 76, 16, "che_event_위압", [66387, 460614, 7811, 55495, 39200], 0, "default.jpg", 43, "che_220414_IXks", 82, ["hall:dex2", "hall:tlrate"]], + ["43·김나영", 79, 92, 16, "che_event_의술", [895118, 24392, 49937, 85819, 38378], 1, "171a93a.jpg?=20220413", 43, "che_220414_IXks", 84, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["43·복숭아좋아", 76, 16, 93, "che_event_신중", [23175, 15365, 31707, 427854, 23616], 1, "57e4a39.jpg?=20190620", 43, "che_220414_IXks", 85, ["hall:ttrate"]], + ["43·고애신", 76, 15, 95, "che_event_집중", [33612, 30989, 28079, 577318, 10112], 1, "b73b56e.jpg?=20220407", 43, "che_220414_IXks", 87, ["hall:dex4"]], + ["43·임사영", 77, 16, 93, "che_event_척사", [23364, 11629, 14692, 427070, 31832], 1, "ced58f6.jpg?=20220317", 43, "che_220414_IXks", 91, ["chief:9", "hall:betrate", "hall:betwin", "hall:dedication", "hall:experience"]], + ["43·마요이", 74, 15, 97, "che_event_집중", [33268, 25528, 13642, 468262, 48414], 1, "b17b98f.png?=20220313", 43, "che_220414_IXks", 92, ["hall:dex5", "hall:killrate", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["43·중달", 76, 94, 15, "che_event_척사", [597915, 13863, 22779, 54390, 24427], 0, "default.jpg", 43, "che_220414_IXks", 93, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["43·천괴금", 77, 15, 95, "che_event_척사", [32929, 47455, 22617, 669346, 27825], 1, "c15e0b0.png?=20220318", 43, "che_220414_IXks", 94, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["43·달", 77, 15, 96, "che_event_집중", [22998, 32280, 14300, 590851, 26960], 0, "default.jpg", 43, "che_220414_IXks", 95, ["hall:betrate", "hall:dex4", "hall:experience", "hall:occupied", "hall:tirate"]], + ["43·제롬파월", 79, 90, 16, "che_event_저격", [572475, 20785, 26053, 39810, 23540], 0, "default.jpg", 43, "che_220414_IXks", 96, ["hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["43·트윈터보", 78, 95, 15, "che_event_필살", [42997, 39441, 618546, 67653, 53289], 1, "6db8bf6.jpg?=20220414", 43, "che_220414_IXks", 97, ["chief:6", "hall:dex3", "hall:dex5", "hall:tsrate"]], + ["43·5.5", 77, 94, 15, "che_event_의술", [283230, 158826, 32497, 48701, 67828], 0, "default.jpg", 43, "che_220414_IXks", 99, ["chief:10", "hall:betwin", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:occupied"]], + ["43·카이스트", 75, 15, 95, "che_event_척사", [20145, 17074, 20163, 423940, 29287], 1, "9361ef8.jpg?=20180907", 43, "che_220414_IXks", 100, ["hall:betwin", "hall:killrate", "hall:killrate_person"]], + ["43·사스케", 109, 15, 71, "che_event_돌격", [121422, 116746, 61621, 164963, 2120864], 1, "30dee4e.jpg?=20220225", 43, "che_220414_IXks", 101, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["43·카류", 75, 15, 101, "che_event_돌격", [44264, 41338, 68146, 1326882, 44633], 1, "ae614e3.jpg?=20220410", 43, "che_220414_IXks", 102, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["43·외심장", 75, 15, 96, "che_event_신산", [9255, 21208, 13922, 295584, 36385], 1, "36110cd.jpg?=20180826", 43, "che_220414_IXks", 103, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["43·불멍", 16, 78, 91, "che_event_신산", [5833, 0, 0, 2610, 9483], 1, "6ccaab6.gif?=20220416", 43, "che_220414_IXks", 104, ["hall:betwin", "hall:firenum"]], + ["43·농부", 79, 93, 17, "che_event_위압", [32510, 642389, 9768, 32239, 33451], 1, "a00fe87.jpg?=20220404", 43, "che_220414_IXks", 105, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum"]], + ["43·바나나파이", 79, 91, 15, "che_event_돌격", [32872, 54402, 426150, 118776, 28674], 1, "90608db.png?=20220415", 43, "che_220414_IXks", 106, ["hall:betgold", "hall:betwingold", "hall:dex3"]], + ["43·은월떡상", 76, 94, 16, "che_event_견고", [24798, 307035, 28493, 25848, 13940], 0, "default.jpg", 43, "che_220414_IXks", 107, ["hall:betrate", "hall:dex2", "hall:tsrate"]], + ["43·근작", 74, 98, 15, "che_event_돌격", [93597, 50047, 348730, 73579, 30910], 0, "default.jpg", 43, "che_220414_IXks", 108, ["hall:betgold", "hall:betwingold", "hall:dex3", "hall:firenum", "hall:tsrate"]], + ["43·우서", 77, 15, 92, "che_event_집중", [6034, 14809, 5798, 287252, 41249], 0, "default.jpg", 43, "che_220414_IXks", 111, ["hall:dedication"]], + ["43·유진초이", 76, 92, 17, "che_event_위압", [24326, 473523, 13467, 108295, 19241], 1, "ffecd35.jpg?=20220407", 43, "che_220414_IXks", 112, ["hall:dex2", "hall:firenum"]], + ["43·평민킬러", 79, 91, 16, "che_event_척사", [507851, 22181, 35266, 54277, 30382], 1, "fb23a32.jpg?=20190904", 43, "che_220414_IXks", 113, ["hall:dex1"]], + ["43·르세라핌", 88, 79, 16, "che_event_견고", [445818, 16496, 23672, 78386, 36291], 1, "8e3b361.png?=20220414", 43, "che_220414_IXks", 116, ["hall:dex1", "hall:tlrate"]], + ["43·딸깍", 76, 15, 96, "che_event_신중", [10850, 11422, 2415, 363479, 19350], 0, "default.jpg", 43, "che_220414_IXks", 119, ["hall:tirate"]], + ["43·개미호랑이", 79, 15, 92, "che_event_반계", [30444, 40733, 29092, 567147, 48121], 1, "48d0ff5.jpg?=20220328", 43, "che_220414_IXks", 120, ["hall:dex4", "hall:dex5"]], + ["43·미스터정승필", 15, 77, 94, "che_event_집중", [0, 0, 0, 0, 0], 1, "6ff7af5.jpg?=20220415", 43, "che_220414_IXks", 186, ["hall:betrate", "hall:tirate", "hall:ttrate"]], + ["43·페르난도", 77, 95, 15, "che_event_견고", [11340, 21346, 386720, 23546, 26445], 1, "6c07b3e.jpg?=20220305", 43, "che_220414_IXks", 192, ["hall:dex3", "hall:tsrate", "hall:winrate"]], + ["43·류화영", 16, 80, 87, "che_event_위압", [2622, 0, 0, 0, 0], 1, "fd6202c.jpg?=20220417", 43, "che_220414_IXks", 194, ["hall:firenum"]], + ["43·q1", 81, 88, 15, "che_event_견고", [249457, 1096, 20401, 23293, 46588], 0, "default.jpg", 43, "che_220414_IXks", 256, ["hall:betrate"]], + ["43·오드아이즈", 80, 90, 15, "che_event_위압", [14574, 33718, 339406, 58902, 19418], 0, "default.jpg", 43, "che_220414_IXks", 331, ["hall:dex3"]], + ["43·와타메이트", 17, 75, 90, "che_event_신산", [0, 0, 0, 0, 0], 1, "6f7d1b0.jpg?=20211108", 43, "che_220414_IXks", 332, ["hall:ttrate"]], + ["43·Wanderer", 15, 81, 87, "che_event_신산", [0, 0, 0, 0, 0], 1, "f6844a9.png?=20220502", 43, "che_220414_IXks", 352, ["hall:betrate", "hall:dedication", "hall:firenum"]], + ["43·봄꽃", 15, 86, 82, "che_event_의술", [0, 0, 0, 0, 0], 1, "1390e40.jpg?=20211015", 43, "che_220414_IXks", 474, ["hall:firenum"]], + ["43·옴마니밭매용", 15, 75, 89, "che_event_신산", [0, 0, 0, 0, 73], 1, "79dbce5.jpg?=20210918", 43, "che_220414_IXks", 512, ["hall:firenum"]], + ["43·악마가붙잡음", 15, 73, 89, "che_event_신중", [0, 1470, 0, 6363, 2970], 0, "default.jpg", 43, "che_220414_IXks", 523, ["hall:firenum"]], + ["44·카이스트", 75, 17, 89, "che_event_척사", [23256, 18688, 19424, 517273, 16996], 1, "9361ef8.jpg?=20180907", 44, "che_220512_jq1I", 4, ["hall:betwin", "hall:dedication", "hall:dex4", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["44·오리꿍", 75, 92, 15, "che_event_보병", [386098, 2334, 9802, 72393, 18567], 1, "5bbffc8.gif?=20220512", 44, "che_220512_jq1I", 14, ["hall:betrate", "hall:dex1", "hall:firenum", "hall:tsrate"]], + ["44·감흥", 87, 16, 80, "che_event_집중", [34663, 17229, 20437, 488998, 23103], 1, "cd597bb3.jpg?=20220529", 44, "che_220512_jq1I", 15, ["hall:betwin", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["44·뉴비", 76, 89, 15, "che_event_척사", [10309, 37881, 289669, 28495, 20617], 0, "default.jpg", 44, "che_220512_jq1I", 16, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:tsrate"]], + ["44·달스케", 76, 90, 15, "che_event_필살", [379444, 2754, 26811, 76279, 27056], 1, "a411055.jpg?=20220512", 44, "che_220512_jq1I", 18, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:killrate"]], + ["44·SARS", 75, 15, 90, "che_event_신중", [51037, 25935, 24791, 475656, 11965], 1, "b84944.jpg?=20180829", 44, "che_220512_jq1I", 23, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew_person"]], + ["44·공명", 88, 16, 78, "che_event_집중", [5275, 21305, 27269, 292391, 24898], 1, "82d6b6.jpg?=20220510", 44, "che_220512_jq1I", 30, ["hall:betwingold", "hall:tlrate"]], + ["44·나루토", 75, 89, 16, "che_event_척사", [415610, 30631, 42096, 91880, 17238], 1, "6ff49f.png?=20220512", 44, "che_220512_jq1I", 31, ["hall:betgold", "hall:betwingold", "hall:dex1"]], + ["44·리안", 74, 91, 15, "che_event_견고", [19265, 162861, 50219, 57114, 6254], 1, "db0cb7a.jpg?=20190719", 44, "che_220512_jq1I", 36, ["hall:tsrate"]], + ["44·CodeMico", 78, 89, 15, "che_event_격노", [25232, 461552, 15095, 40440, 35047], 1, "8d0fb32c.webp?=20220528", 44, "che_220512_jq1I", 37, ["hall:dex2", "hall:dex5", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["44·에이펙스레전드", 76, 92, 15, "che_event_위압", [31415, 582146, 12983, 46951, 25537], 0, "default.jpg", 44, "che_220512_jq1I", 38, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["44·소피 노이엔뮐러", 74, 15, 93, "che_event_의술", [18929, 41229, 32375, 290423, 26418], 1, "8fd5c9d.jpg?=20220512", 44, "che_220512_jq1I", 40, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["44·정승필실종사건", 87, 15, 79, "che_event_의술", [18647, 26762, 18005, 444203, 30018], 1, "6deb642.jpg?=20220512", 44, "che_220512_jq1I", 41, ["hall:dex4", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["44·미스티", 75, 17, 90, "che_event_신중", [57122, 18445, 16009, 306670, 17812], 1, "1aadcba.png?=20180908", 44, "che_220512_jq1I", 45, ["hall:tirate", "hall:ttrate"]], + ["44·찐승필", 93, 75, 15, "che_event_견고", [34898, 23167, 412612, 68553, 14041], 1, "6ff7af5.jpg?=20220415", 44, "che_220512_jq1I", 46, ["hall:dex3", "hall:tlrate", "hall:warnum"]], + ["44·아누비스", 75, 92, 15, "che_event_견고", [430217, 9159, 17549, 64724, 25811], 1, "fe72709.jpg?=20220511", 44, "che_220512_jq1I", 50, ["hall:dex1", "hall:occupied"]], + ["44·슬라임이당", 89, 78, 15, "che_event_견고", [5643, 15309, 258240, 69507, 8682], 1, "d7af202.jpg?=20220107", 44, "che_220512_jq1I", 52, ["hall:tlrate", "hall:ttrate"]], + ["44·사스캣", 76, 15, 93, "che_event_필살", [31607, 13001, 32727, 648283, 24237], 1, "7ea4128.jpg?=20220512", 44, "che_220512_jq1I", 61, ["hall:betwin", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["44·Hide_D", 82, 15, 85, "che_event_환술", [28795, 29778, 11355, 512838, 27728], 1, "8cf2033.png?=20220228", 44, "che_220512_jq1I", 72, ["hall:dex4", "hall:killcrew", "hall:warnum"]], + ["44·4水Ke", 73, 93, 15, "che_event_신산", [61213, 370279, 9488, 41408, 12045], 1, "d574603.jpg?=20220512", 44, "che_220512_jq1I", 74, ["hall:dex2", "hall:firenum", "hall:winrate"]], + ["44·?바나나?", 77, 90, 15, "che_event_무쌍", [476380, 21081, 24227, 51013, 26017], 1, "72596d91.gif?=20220520", 44, "che_220512_jq1I", 77, ["chief:8", "hall:betgold", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["44·정승필", 79, 87, 16, "che_event_견고", [30558, 812994, 27455, 93309, 28098], 1, "998ad08.jpg?=20220511", 44, "che_220512_jq1I", 78, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum"]], + ["44·ㅋㅋㄹ", 74, 15, 92, "che_event_신중", [28814, 14124, 40620, 270271, 20439], 1, "2251e0.jpg?=20220509", 44, "che_220512_jq1I", 80, ["hall:tirate"]], + ["44·콘", 76, 15, 90, "che_event_척사", [22483, 9002, 24585, 413667, 32662], 1, "7ca38d3.jpg?=20220324", 44, "che_220512_jq1I", 82, ["hall:dex5", "hall:experience"]], + ["44·날먹유카", 80, 87, 16, "che_event_필살", [555273, 9157, 34230, 42811, 21470], 0, "default.jpg", 44, "che_220512_jq1I", 83, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:ttrate"]], + ["44·이드", 95, 74, 15, "che_event_보병", [540848, 6125, 14620, 42589, 8634], 1, "5898830.jpg?=20210831", 44, "che_220512_jq1I", 86, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["44·6.5", 87, 78, 15, "che_event_견고", [125740, 239280, 40781, 19370, 13459], 0, "default.jpg", 44, "che_220512_jq1I", 87, ["hall:dex2", "hall:tlrate"]], + ["44·박일아", 78, 15, 89, "che_event_집중", [24606, 11712, 7883, 229132, 27296], 1, "8608979.gif?=20191024", 44, "che_220512_jq1I", 88, ["hall:betrate"]], + ["44·망냥냥", 75, 90, 15, "che_event_척사", [53426, 367070, 19009, 84269, 31499], 1, "6584c19d.jpg?=20220525", 44, "che_220512_jq1I", 90, ["hall:dex2", "hall:ttrate"]], + ["44·야스케", 74, 16, 89, "che_event_환술", [7407, 59058, 22986, 365981, 30848], 1, "85e0ded9.jpg?=20220528", 44, "che_220512_jq1I", 92, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication"]], + ["44·유스케", 76, 15, 90, "che_event_집중", [37652, 40838, 12735, 360279, 34196], 1, "558bdd.jpg?=20220512", 44, "che_220512_jq1I", 93, ["hall:betwin", "hall:dex5", "hall:occupied"]], + ["44·몰⸮루", 74, 15, 93, "che_event_집중", [40977, 17252, 20871, 530771, 28416], 1, "b59e3c8b.gif?=20220520", 44, "che_220512_jq1I", 96, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:tirate"]], + ["44·사스가키", 74, 93, 15, "che_event_격노", [36459, 49676, 436498, 36296, 26652], 1, "ba69325.png?=20220512", 44, "che_220512_jq1I", 97, ["hall:dex3", "hall:occupied", "hall:tsrate"]], + ["44·한시", 75, 15, 92, "che_event_신중", [61567, 18567, 25126, 355792, 15360], 0, "default.jpg", 44, "che_220512_jq1I", 99, ["hall:tirate"]], + ["44·오디오", 76, 90, 16, "che_event_견고", [414456, 19574, 51692, 28916, 14907], 0, "default.jpg", 44, "che_220512_jq1I", 100, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1"]], + ["44·사스케", 76, 15, 91, "che_event_필살", [72561, 30042, 21413, 441929, 19582], 1, "c4005f8.jpg?=20220512", 44, "che_220512_jq1I", 101, ["hall:dex4", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["44·퇴사까지4달", 78, 15, 89, "che_event_저격", [17121, 9595, 11247, 329796, 25379], 0, "default.jpg", 44, "che_220512_jq1I", 102, ["hall:firenum"]], + ["44·평민킬러", 77, 88, 15, "che_event_견고", [515217, 13976, 43063, 64370, 27763], 1, "fb23a32.jpg?=20190904", 44, "che_220512_jq1I", 103, ["chief:12", "hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person"]], + ["44·덕구", 78, 89, 15, "che_event_필살", [686869, 37724, 51723, 33751, 29737], 1, "d2f17b7.png?=20220512", 44, "che_220512_jq1I", 104, ["hall:betrate", "hall:dex1", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["44·몰?루", 75, 90, 16, "che_event_무쌍", [130162, 40564, 319794, 44839, 15487], 1, "fbe325ac.gif?=20220520", 44, "che_220512_jq1I", 105, ["hall:betwin", "hall:dex3"]], + ["44·왓슨 아멜리아", 75, 91, 16, "che_event_필살", [11321, 61891, 505364, 45510, 31012], 1, "24e2c563.gif?=20220522", 44, "che_220512_jq1I", 106, ["hall:dedication", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["44·마스케", 76, 89, 15, "che_event_위압", [91928, 261561, 17474, 22846, 14293], 1, "bb33c0e.png?=20220512", 44, "che_220512_jq1I", 108, ["hall:dex2"]], + ["44·돌아온너구리", 77, 88, 15, "che_event_척사", [0, 0, 0, 0, 0], 1, "79dbce5.jpg?=20210918", 44, "che_220512_jq1I", 109, ["hall:ttrate"]], + ["44·닥터승필레인지", 77, 16, 89, "che_event_척사", [16750, 6601, 24869, 368674, 31257], 1, "e130b03.jpg?=20220512", 44, "che_220512_jq1I", 110, ["hall:firenum"]], + ["44·갈근", 93, 75, 15, "che_event_의술", [497716, 3403, 15678, 76760, 29316], 0, "default.jpg", 44, "che_220512_jq1I", 111, ["hall:betrate", "hall:dex1", "hall:experience", "hall:killcrew", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["44·오스케", 77, 88, 16, "che_event_견고", [41387, 371053, 9742, 41907, 13591], 0, "default.jpg", 44, "che_220512_jq1I", 113, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["44·세시", 91, 73, 15, "che_event_위압", [17119, 19508, 372683, 51278, 17736], 1, "b8a03ae.jpg?=20220512", 44, "che_220512_jq1I", 114, ["hall:betrate", "hall:dex3", "hall:tlrate"]], + ["44·아이언승필", 77, 15, 90, "che_event_필살", [45151, 12303, 37466, 584871, 23365], 1, "4abdaaf.jpg?=20220513", 44, "che_220512_jq1I", 115, ["chief:7", "hall:betrate", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["44·캡틴승필리카", 74, 91, 15, "che_event_돌격", [16943, 51626, 297819, 55401, 33767], 1, "7702db2.jpg?=20220512", 44, "che_220512_jq1I", 116, ["hall:dex3", "hall:dex5", "hall:tsrate"]], + ["44·가짜", 15, 95, 72, "che_event_신산", [0, 0, 0, 0, 0], 1, "cbec18d.jpg?=20220512", 44, "che_220512_jq1I", 117, ["hall:experience", "hall:firenum", "hall:tsrate"]], + ["44·サンソン", 73, 94, 15, "che_event_무쌍", [9230, 7680, 161185, 17863, 4480], 1, "5e2f387.jpg?=20220512", 44, "che_220512_jq1I", 118, ["hall:firenum", "hall:tsrate"]], + ["44·여캠시뉴카린", 75, 89, 16, "che_event_징병", [56348, 42126, 323600, 50054, 14789], 1, "5b37ae0.jpg?=20220514", 44, "che_220512_jq1I", 120, ["hall:dex3"]], + ["44·외심장", 76, 15, 91, "che_event_신중", [22068, 6875, 5309, 195652, 11583], 1, "36110cd.jpg?=20180826", 44, "che_220512_jq1I", 123, ["hall:tirate"]], + ["44·아메리카", 74, 15, 92, "che_event_신중", [16790, 17757, 26392, 304847, 36662], 1, "19ae19b2.jpg?=20220521", 44, "che_220512_jq1I", 124, ["chief:5", "hall:dex5"]], + ["44·비앙키", 78, 88, 15, "che_event_돌격", [38818, 13376, 477495, 31766, 29393], 0, "default.jpg", 44, "che_220512_jq1I", 125, ["hall:dex3", "hall:killnum", "hall:occupied"]], + ["44·루나", 16, 71, 95, "che_event_집중", [0, 0, 0, 16417, 2790], 0, "default.jpg", 44, "che_220512_jq1I", 127, ["hall:tirate", "hall:ttrate"]], + ["44·호각", 77, 85, 17, "che_event_견고", [14462, 66656, 363619, 63622, 32567], 1, "ffbb6e8.png?=20220512", 44, "che_220512_jq1I", 128, ["chief:6", "hall:dex3", "hall:firenum"]], + ["44·로리", 76, 17, 89, "che_event_집중", [0, 0, 0, 0, 0], 1, "50794a6.jpg?=20190923", 44, "che_220512_jq1I", 132, ["hall:tirate"]], + ["44·봄꽃", 15, 71, 96, "che_event_신산", [0, 0, 0, 0, 0], 1, "1390e40.jpg?=20211015", 44, "che_220512_jq1I", 135, ["hall:dedication", "hall:tirate"]], + ["44·무천도사", 74, 16, 91, "che_event_신중", [25381, 24024, 18734, 339054, 19550], 1, "f533ba4.jpg?=20220516", 44, "che_220512_jq1I", 137, ["hall:betwin"]], + ["44·황혼중", 75, 16, 90, "che_event_환술", [30229, 15711, 17379, 414730, 40846], 1, "64a306e.png?=20220127", 44, "che_220512_jq1I", 140, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killrate"]], + ["44·배팅의신", 77, 16, 90, "che_event_집중", [24846, 9188, 41063, 382237, 15492], 0, "default.jpg", 44, "che_220512_jq1I", 142, ["hall:betgold"]], + ["44·르세라핌", 86, 78, 16, "che_event_위압", [48516, 302457, 22268, 79557, 36989], 1, "8e3b361.png?=20220414", 44, "che_220512_jq1I", 145, ["chief:10", "hall:dedication", "hall:dex2", "hall:dex5"]], + ["44·파도", 76, 16, 86, "che_event_신중", [55283, 14527, 28386, 283948, 5485], 0, "default.jpg", 44, "che_220512_jq1I", 239, ["hall:winrate"]], + ["44·중집", 78, 17, 89, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 44, "che_220512_jq1I", 241, ["hall:ttrate"]], + ["44·개미호랑이", 74, 16, 90, "che_event_집중", [16493, 12090, 16503, 444121, 48665], 1, "48d0ff5.jpg?=20220328", 44, "che_220512_jq1I", 243, ["chief:9", "hall:betrate", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience"]], + ["44·태수", 77, 15, 89, "che_event_신산", [24543, 27641, 17739, 391671, 11889], 0, "default.jpg", 44, "che_220512_jq1I", 244, ["hall:firenum", "hall:winrate"]], + ["44·페르난도", 76, 15, 92, "che_event_필살", [31584, 7971, 8519, 405765, 15604], 1, "6c07b3e.jpg?=20220305", 44, "che_220512_jq1I", 249, ["hall:killnum", "hall:ttrate", "hall:winrate"]], + ["44·로비", 16, 73, 91, "che_event_신중", [0, 0, 0, 0, 0], 1, "d38cb34.png?=20220106", 44, "che_220512_jq1I", 251, ["hall:dedication"]], + ["44·지옥", 90, 74, 15, "che_event_저격", [17644, 8329, 379877, 56967, 33116], 0, "default.jpg", 44, "che_220512_jq1I", 287, ["hall:dex3", "hall:dex5", "hall:tlrate"]], + ["44·어피치", 89, 72, 15, "che_event_위압", [65336, 9729, 20386, 64686, 173354], 0, "default.jpg", 44, "che_220512_jq1I", 464, ["hall:dex5"]], + ["44·페코린느", 75, 87, 16, "che_event_위압", [14270, 174583, 6993, 52603, 2268], 1, "93ee802.png?=20190621", 44, "che_220512_jq1I", 477, ["hall:dex2"]], + ["44·아이", 74, 17, 86, "che_event_집중", [6598, 16978, 10633, 197150, 14171], 0, "default.jpg", 44, "che_220512_jq1I", 502, ["hall:firenum"]], + ["46·소피", 74, 91, 15, "che_event_궁병", [18562, 109494, 2584, 29236, 10591], 1, "adda4462.jpg?=20220706", 46, "che_220707_R8Fd", 3, ["hall:dex2", "hall:tsrate"]], + ["46·박일아", 73, 15, 93, "che_event_필살", [17102, 8223, 7751, 180106, 19938], 1, "8608979.gif?=20191024", 46, "che_220707_R8Fd", 4, ["hall:tirate"]], + ["46·임춘식", 75, 91, 15, "che_event_척사", [122430, 12783, 421956, 58841, 21415], 1, "70ab6caa.webp?=20220604", 46, "che_220707_R8Fd", 6, ["hall:betwin", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate"]], + ["46·라이츄", 76, 87, 15, "che_event_척사", [77630, 337331, 10246, 75574, 14845], 1, "f7e5422a.png?=20220706", 46, "che_220707_R8Fd", 8, ["hall:dex2"]], + ["46·킹구", 76, 15, 90, "che_event_집중", [16080, 6024, 8154, 542226, 10365], 1, "35f1b7d.png?=20220106", 46, "che_220707_R8Fd", 9, ["hall:dex4", "hall:experience", "hall:killrate_person", "hall:winrate"]], + ["46·페이몬", 75, 16, 89, "che_event_집중", [31712, 1623, 28196, 246091, 13769], 1, "39e3f3a2.gif?=20220716", 46, "che_220707_R8Fd", 12, ["hall:ttrate"]], + ["46·바나낫", 74, 92, 15, "che_event_무쌍", [385231, 5499, 11250, 14109, 26902], 1, "ea75c1dd.gif?=20220707", 46, "che_220707_R8Fd", 13, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["46·레이스", 77, 90, 15, "che_event_필살", [748569, 16035, 76404, 48093, 16403], 1, "30f69493.jpg?=20220707", 46, "che_220707_R8Fd", 14, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["46·오에에에엑시뉴카린", 74, 15, 92, "che_event_신중", [24485, 15707, 12478, 376396, 43422], 1, "dcfd2298.png?=20220710", 46, "che_220707_R8Fd", 24, ["hall:dex5", "hall:occupied", "hall:tirate"]], + ["46·페르난도", 76, 89, 15, "che_event_필살", [612685, 4628, 38005, 86166, 18051], 1, "6c07b3e.jpg?=20220305", 46, "che_220707_R8Fd", 25, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["46·류화영", 28, 73, 80, "che_event_위압", [10312, 4496, 88390, 4664, 11017], 1, "2eca7aec.png?=20220705", 46, "che_220707_R8Fd", 27, ["chief:5", "hall:dedication"]], + ["46·츄츄족", 75, 88, 16, "che_event_척사", [34696, 23189, 375594, 85823, 28811], 1, "7f7a1c81.jpg?=20220707", 46, "che_220707_R8Fd", 30, ["hall:dex3"]], + ["46·SARS", 80, 86, 15, "che_event_무쌍", [25530, 33349, 421023, 69133, 17527], 1, "b84944.jpg?=20180829", 46, "che_220707_R8Fd", 31, ["hall:betwin", "hall:dex3", "hall:ttrate"]], + ["46·홍홍", 77, 87, 15, "che_event_위압", [17944, 294201, 6673, 26697, 16611], 0, "default.jpg", 46, "che_220707_R8Fd", 33, ["hall:dex2", "hall:tsrate"]], + ["46·노인을묶으면타이틀", 76, 89, 16, "che_event_돌격", [33397, 214784, 7151, 60754, 10639], 0, "default.jpg", 46, "che_220707_R8Fd", 34, ["hall:dex2", "hall:tsrate", "hall:ttrate"]], + ["46·장원영", 91, 73, 15, "che_event_위압", [491036, 5258, 15383, 50672, 31303], 1, "011601c5.jpg?=20220713", 46, "che_220707_R8Fd", 37, ["hall:dex1", "hall:dex5", "hall:experience", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["46·POCARI.", 90, 75, 15, "che_event_징병", [822, 1547, 587509, 3161, 9653], 1, "085bc73a.jpg?=20220716", 46, "che_220707_R8Fd", 38, ["hall:dex3", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["46·삼체미시뉴카린", 75, 92, 15, "che_event_필살", [923850, 21898, 44244, 38865, 29161], 1, "c3aee291.png?=20220711", 46, "che_220707_R8Fd", 50, ["hall:betwin", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["46·나옹이", 80, 88, 15, "che_event_필살", [20594, 18744, 625650, 23764, 5349], 1, "44fa6a24.png?=20220610", 46, "che_220707_R8Fd", 61, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["46·제갈여포", 88, 15, 76, "che_event_신중", [38472, 21626, 18486, 388426, 6828], 1, "d87fd80.png?=20220515", 46, "che_220707_R8Fd", 63, ["hall:tlrate"]], + ["46·8", 89, 77, 15, "che_event_척사", [153188, 13320, 151725, 40607, 53954], 0, "default.jpg", 46, "che_220707_R8Fd", 65, ["hall:dex5", "hall:firenum", "hall:occupied", "hall:tlrate"]], + ["46·피카츄", 87, 15, 78, "che_event_집중", [27940, 10363, 27755, 280937, 16685], 1, "d1ceeec0.png?=20220707", 46, "che_220707_R8Fd", 66, ["hall:betgold", "hall:betwingold", "hall:tlrate"]], + ["46·감흥", 76, 15, 90, "che_event_집중", [43165, 53864, 16837, 449684, 24952], 1, "cd597bb3.jpg?=20220529", 46, "che_220707_R8Fd", 68, ["hall:betwin", "hall:dex4", "hall:firenum"]], + ["46·마요이", 75, 15, 93, "che_event_필살", [11999, 5453, 13412, 552696, 13874], 1, "96bc8973.png?=20220529", 46, "che_220707_R8Fd", 72, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["46·아약스", 77, 86, 15, "che_event_견고", [21820, 360945, 10894, 61549, 6440], 1, "4068a98e.jpg?=20220707", 46, "che_220707_R8Fd", 73, ["hall:dex2"]], + ["46·고통의가시", 89, 15, 74, "che_event_척사", [27827, 14642, 9606, 262544, 7425], 1, "f5e184b6.gif?=20220718", 46, "che_220707_R8Fd", 74, ["hall:tlrate"]], + ["46·짭뉴카린", 75, 15, 90, "che_event_집중", [38594, 28784, 35761, 392715, 15932], 0, "default.jpg", 46, "che_220707_R8Fd", 75, ["hall:dex4", "hall:tirate"]], + ["46·와일드플라워", 83, 81, 15, "che_event_필살", [0, 165, 15821, 1215, 3416], 0, "default.jpg", 46, "che_220707_R8Fd", 76, ["hall:experience", "hall:firenum"]], + ["46·깡패", 80, 85, 15, "che_event_필살", [56103, 326615, 22258, 44619, 14673], 0, "default.jpg", 46, "che_220707_R8Fd", 77, ["hall:dex2", "hall:firenum"]], + ["46·바나나OUT", 75, 15, 89, "che_event_필살", [6385, 19339, 2511, 206601, 13355], 1, "b4ae42d1.jpg?=20220716", 46, "che_220707_R8Fd", 78, ["chief:9", "hall:dedication"]], + ["46·나이스네이처", 76, 88, 16, "che_event_척사", [337351, 19831, 52055, 71133, 25209], 1, "12e4fa8e.png?=20220708", 46, "che_220707_R8Fd", 79, ["hall:dex1"]], + ["46·물자조달", 17, 89, 74, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 46, "che_220707_R8Fd", 80, ["hall:ttrate"]], + ["46·이드", 74, 15, 92, "che_event_환술", [20746, 7959, 10591, 231150, 12054], 1, "5898830.jpg?=20210831", 46, "che_220707_R8Fd", 81, ["hall:tirate", "hall:ttrate"]], + ["46·카이스트", 77, 15, 88, "che_event_집중", [15118, 10256, 14585, 321237, 20296], 1, "9361ef8.jpg?=20180907", 46, "che_220707_R8Fd", 82, ["hall:betwin"]], + ["46·미스티", 78, 15, 88, "che_event_필살", [37617, 1677, 8141, 237884, 7152], 1, "1aadcba.png?=20180908", 46, "che_220707_R8Fd", 83, ["hall:tirate"]], + ["46·슬라임", 88, 76, 15, "che_event_척사", [246109, 8331, 17002, 27756, 25179], 0, "default.jpg", 46, "che_220707_R8Fd", 85, ["chief:6", "hall:dedication", "hall:experience", "hall:tlrate"]], + ["46·칸나", 76, 15, 91, "che_event_필살", [10490, 16782, 29794, 512757, 9010], 1, "b11efa74.webp?=20220707", 46, "che_220707_R8Fd", 86, ["hall:betgold", "hall:betwin", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["46·호나", 80, 85, 15, "che_event_척사", [18466, 16621, 567556, 25922, 26529], 0, "default.jpg", 46, "che_220707_R8Fd", 87, ["hall:betrate", "hall:dex3"]], + ["46·사스케", 94, 72, 15, "che_event_견고", [61839, 12878, 10521, 51881, 744542], 1, "f9c9d6b6.jpg?=20220613", 46, "che_220707_R8Fd", 88, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["46·평민킬러", 76, 93, 15, "che_event_필살", [934053, 23975, 39230, 49842, 35792], 1, "70bf9aac.jpg?=20220707", 46, "che_220707_R8Fd", 89, ["chief:8", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["46·마이멜로디", 76, 16, 87, "che_event_필살", [9981, 24321, 36408, 413789, 20936], 1, "ba8513af.jpg?=20220707", 46, "che_220707_R8Fd", 92, ["hall:dex4"]], + ["46·퍄퍄", 77, 15, 87, "che_event_집중", [53580, 22223, 53973, 399935, 28154], 0, "default.jpg", 46, "che_220707_R8Fd", 93, ["hall:dex4"]], + ["46·쫒겨난애옹이", 77, 15, 86, "che_event_필살", [24591, 34925, 19649, 329191, 2786], 0, "default.jpg", 46, "che_220707_R8Fd", 94, ["hall:betgold", "hall:betwingold"]], + ["46·독괴금", 73, 15, 90, "che_event_신중", [4793, 10595, 2080, 117563, 16199], 1, "715fc358.png?=20220707", 46, "che_220707_R8Fd", 95, ["hall:dedication"]], + ["46·스시카린", 74, 15, 91, "che_event_신중", [18145, 42535, 11704, 332815, 41005], 1, "7c27c1f5.png?=20220721", 46, "che_220707_R8Fd", 97, ["hall:betrate", "hall:dex5"]], + ["46·료우기시키", 76, 15, 89, "che_event_의술", [19237, 18156, 22692, 307661, 18795], 1, "72a190e.jpg?=20220109", 46, "che_220707_R8Fd", 98, ["hall:betrate", "hall:betwingold"]], + ["46·갈근", 92, 72, 15, "che_event_견고", [4684, 11653, 168034, 22056, 27593], 1, "b0d5a26b.png?=20220717", 46, "che_220707_R8Fd", 99, ["hall:betrate", "hall:betwin", "hall:dedication", "hall:tlrate"]], + ["46·초코바나나빽스치노", 74, 91, 15, "che_event_돌격", [109766, 69678, 94226, 35686, 26325], 1, "6a48d1fc.png?=20220707", 46, "che_220707_R8Fd", 100, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["46·시뉴카린", 79, 84, 15, "che_event_위압", [495820, 14255, 51856, 61163, 23874], 1, "fc0cd4b2.png?=20220707", 46, "che_220707_R8Fd", 101, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:occupied"]], + ["46·복숭아좋아", 75, 15, 89, "che_event_환술", [31283, 13315, 31561, 316198, 32538], 1, "57e4a39.jpg?=20190620", 46, "che_220707_R8Fd", 102, ["hall:dex5"]], + ["46·비챤", 72, 15, 92, "che_event_집중", [26465, 3200, 1637, 156799, 28994], 1, "9d8b0902.png?=20220707", 46, "che_220707_R8Fd", 103, ["hall:tirate"]], + ["46·흑화시뉴카린", 78, 86, 16, "che_event_척사", [18032, 27066, 280680, 55608, 24306], 1, "f87023ad.png?=20220707", 46, "che_220707_R8Fd", 104, ["hall:dex3"]], + ["46·물조만하는기상술사", 15, 85, 78, "che_event_저격", [0, 0, 0, 0, 0], 1, "fbe60147.png?=20220707", 46, "che_220707_R8Fd", 105, ["hall:betgold", "hall:betwingold"]], + ["46·난배팅만한다", 72, 15, 93, "che_event_집중", [4493, 18665, 20915, 162455, 22596], 0, "default.jpg", 46, "che_220707_R8Fd", 109, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:firenum"]], + ["46·안유진", 73, 18, 89, "che_event_필살", [41632, 11309, 22173, 316881, 30387], 1, "280c16b7.jpg?=20220707", 46, "che_220707_R8Fd", 110, ["hall:dex5", "hall:ttrate"]], + ["46·가든", 76, 16, 88, "che_event_집중", [60379, 23576, 25846, 529447, 25711], 1, "901fcbb6.png?=20220718", 46, "che_220707_R8Fd", 111, ["hall:dex4"]], + ["46·무쌍", 74, 93, 15, "che_event_필살", [120103, 3901, 467994, 56155, 31694], 1, "4cecf224.jpg?=20220709", 46, "che_220707_R8Fd", 121, ["hall:betwin", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["46·르세라핌", 85, 78, 15, "che_event_격노", [5539, 15225, 207932, 31948, 27651], 1, "c5ac308f.png?=20220725", 46, "che_220707_R8Fd", 122, ["chief:10", "hall:dedication", "hall:dex3", "hall:ttrate"]], + ["46·바나나킥", 15, 71, 93, "che_event_집중", [0, 0, 0, 0, 0], 1, "a4af5d3b.png?=20220708", 46, "che_220707_R8Fd", 125, ["hall:dedication"]], + ["46·베라", 74, 15, 91, "che_event_필살", [24575, 27909, 35361, 498858, 52930], 1, "f4e625c7.jpg?=20220707", 46, "che_220707_R8Fd", 127, ["hall:dex4", "hall:dex5", "hall:firenum", "hall:killrate", "hall:tirate"]], + ["46·아샤", 77, 15, 86, "che_event_신중", [4736, 11773, 18132, 256444, 11480], 0, "default.jpg", 46, "che_220707_R8Fd", 131, ["hall:ttrate"]], + ["46·삼국지", 74, 15, 89, "che_event_집중", [4800, 7308, 17756, 199170, 22909], 0, "default.jpg", 46, "che_220707_R8Fd", 133, ["chief:7", "hall:firenum", "hall:killrate"]], + ["46·tqtt", 83, 83, 15, "che_event_격노", [55719, 161437, 11559, 34559, 6922], 0, "default.jpg", 46, "che_220707_R8Fd", 134, ["hall:dex2", "hall:ttrate"]], + ["46·묵언수행", 72, 16, 91, "che_event_환술", [19734, 12936, 5362, 174770, 18867], 0, "default.jpg", 46, "che_220707_R8Fd", 135, ["hall:dedication"]], + ["46·아무고토몰라요", 79, 85, 15, "che_event_격노", [35709, 15041, 272098, 62288, 12798], 1, "79dbce5.jpg?=20210918", 46, "che_220707_R8Fd", 227, ["hall:dex3"]], + ["46·민트토끼", 15, 75, 90, "che_event_반계", [0, 0, 0, 0, 0], 1, "de6c89a2.jpg?=20220707", 46, "che_220707_R8Fd", 229, ["hall:dedication", "hall:tirate"]], + ["46·미친과학", 87, 76, 17, "che_event_필살", [166262, 10020, 27611, 7986, 4913], 1, "f3fe11f4.png?=20220708", 46, "che_220707_R8Fd", 233, ["hall:tlrate"]], + ["46·엘리시아", 76, 88, 15, "che_event_의술", [12202, 140073, 3184, 42200, 9692], 0, "default.jpg", 46, "che_220707_R8Fd", 234, ["hall:dex2"]], + ["46·루나3.0", 78, 15, 86, "che_event_집중", [50620, 20354, 19511, 417650, 24517], 0, "default.jpg", 46, "che_220707_R8Fd", 235, ["hall:dex4", "hall:occupied", "hall:warnum"]], + ["46·감소영", 78, 85, 15, "che_event_무쌍", [462706, 9211, 35910, 75600, 15686], 1, "52903079.jpg?=20220707", 46, "che_220707_R8Fd", 248, ["hall:dex1", "hall:ttrate"]], + ["46·바이돌", 86, 16, 76, "che_event_신중", [26577, 25949, 14389, 253507, 16068], 0, "default.jpg", 46, "che_220707_R8Fd", 254, ["hall:betrate"]], + ["46·꿀벌", 76, 85, 15, "che_event_저격", [18506, 154821, 3637, 46763, 15457], 0, "default.jpg", 46, "che_220707_R8Fd", 303, ["hall:dex2"]], + ["46·체비", 78, 86, 15, "che_event_필살", [309696, 16547, 44788, 63827, 23534], 0, "default.jpg", 46, "che_220707_R8Fd", 305, ["hall:dex1"]], + ["46·허허허", 15, 71, 92, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 46, "che_220707_R8Fd", 316, ["hall:tirate"]], + ["46·월급오른페이트", 15, 90, 73, "che_event_징병", [0, 0, 0, 0, 0], 1, "6045256.png?=20220317", 46, "che_220707_R8Fd", 404, ["hall:tsrate"]], + ["47·민트토끼", 17, 75, 94, "che_event_신산", [704, 0, 0, 162, 0], 1, "de6c89a2.jpg?=20220707", 47, "che_220728_ymSZ", 6, ["hall:firenum", "hall:tirate"]], + ["47·우영우", 76, 16, 96, "che_event_필살", [45139, 47414, 42847, 981543, 30640], 1, "60be4a9f.jpg?=20220728", 47, "che_220728_ymSZ", 8, ["chief:9", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["47·김나영", 80, 93, 15, "che_event_척사", [47092, 55772, 581357, 92546, 32181], 1, "6a9eaa87.jpg?=20220728", 47, "che_220728_ymSZ", 10, ["hall:betrate", "hall:dex3"]], + ["47·카레니나", 76, 98, 15, "che_event_무쌍", [22567, 27098, 477329, 62410, 10332], 1, "c44ab977.jpg?=20220728", 47, "che_220728_ymSZ", 11, ["hall:dex3", "hall:tsrate"]], + ["47·마요이", 77, 15, 94, "che_event_신산", [35754, 19540, 38559, 533490, 18482], 1, "96bc8973.png?=20220529", 47, "che_220728_ymSZ", 12, ["hall:dedication"]], + ["47·독구독", 99, 72, 15, "che_event_공성", [41851, 28699, 33879, 47916, 1038341], 1, "b6e4e6cc.jpg?=20220730", 47, "che_220728_ymSZ", 14, ["hall:betrate", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["47·천사소녀네티", 15, 82, 90, "che_event_신산", [0, 0, 0, 0, 0], 1, "9fab67a1.png?=20220728", 47, "che_220728_ymSZ", 17, ["hall:betgold", "hall:betwingold", "hall:firenum"]], + ["47·NK", 87, 84, 15, "che_event_돌격", [19921, 39654, 527658, 49765, 43192], 1, "cca357a7.jpg?=20220729", 47, "che_220728_ymSZ", 22, ["hall:betgold", "hall:dex3", "hall:winrate"]], + ["47·역삼역", 15, 73, 97, "che_event_저격", [0, 0, 0, 0, 0], 1, "c6c1a55a.jpg?=20220728", 47, "che_220728_ymSZ", 25, ["hall:tirate"]], + ["47·슬라임♡", 94, 75, 16, "che_event_격노", [35870, 29392, 401995, 72310, 19680], 0, "default.jpg", 47, "che_220728_ymSZ", 31, ["hall:tlrate"]], + ["47·이준호", 79, 94, 15, "che_event_필살", [80884, 77147, 789467, 56588, 36767], 1, "1b28fcd9.png?=20220728", 47, "che_220728_ymSZ", 39, ["chief:10", "hall:betgold", "hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["47·갈근", 95, 76, 15, "che_event_견고", [36653, 56882, 473091, 80853, 32546], 1, "0cd671cc.png?=20220815", 47, "che_220728_ymSZ", 42, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tlrate"]], + ["47·시나모롤", 91, 79, 15, "che_event_척사", [30683, 398243, 11965, 30767, 23895], 1, "c5ac308f.png?=20220725", 47, "che_220728_ymSZ", 46, ["hall:dex2", "hall:tlrate"]], + ["47·박일아", 96, 75, 15, "che_event_돌격", [56843, 25672, 47064, 61224, 453210], 1, "8608979.gif?=20191024", 47, "che_220728_ymSZ", 47, ["hall:dex5", "hall:tlrate"]], + ["47·마이멜로디", 96, 76, 15, "che_event_척사", [40670, 52817, 88544, 121271, 734905], 1, "d2459ba4.png?=20220811", 47, "che_220728_ymSZ", 48, ["hall:dex5", "hall:killcrew", "hall:tlrate"]], + ["47·더 월드", 78, 93, 15, "che_event_돌격", [15785, 17239, 206327, 15142, 21109], 1, "5c53b3a6.jpg?=20220729", 47, "che_220728_ymSZ", 50, ["hall:tsrate"]], + ["47·수장", 15, 82, 86, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 47, "che_220728_ymSZ", 54, ["hall:firenum"]], + ["47·스피드왜건", 84, 84, 16, "che_event_보병", [364269, 18026, 56822, 62852, 6694], 1, "b112d9ff.png?=20220728", 47, "che_220728_ymSZ", 55, ["hall:dex1"]], + ["47·털게", 91, 80, 15, "che_event_필살", [991231, 19254, 78611, 60314, 57149], 1, "3b4fd339.jpg?=20220728", 47, "che_220728_ymSZ", 62, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["47·엔틱", 76, 15, 95, "che_event_신중", [55267, 27530, 65775, 534673, 40861], 1, "b11efa74.webp?=20220707", 47, "che_220728_ymSZ", 65, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:experience", "hall:occupied", "hall:tirate"]], + ["47·방가방가햄토리", 80, 91, 15, "che_event_격노", [22605, 44321, 460767, 62766, 18425], 0, "default.jpg", 47, "che_220728_ymSZ", 68, ["hall:dex3"]], + ["47·불패", 81, 92, 15, "che_event_위압", [56938, 418405, 13674, 56726, 16210], 1, "45efe231.jpg?=20220726", 47, "che_220728_ymSZ", 69, ["hall:dex2"]], + ["47·DIO", 80, 92, 15, "che_event_보병", [319598, 2336, 12019, 36923, 15603], 1, "08fffee2.jpg?=20220728", 47, "che_220728_ymSZ", 70, ["hall:dex1"]], + ["47·고래", 15, 95, 76, "che_event_돌격", [0, 0, 0, 0, 0], 1, "56f491fe.jpg?=20220728", 47, "che_220728_ymSZ", 72, ["hall:tsrate"]], + ["47·제갈여포", 92, 15, 83, "che_event_필살", [59726, 27847, 41080, 814950, 37209], 1, "d87fd80.png?=20220515", 47, "che_220728_ymSZ", 74, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["47·나이샤", 78, 15, 93, "che_event_척사", [23900, 24220, 14725, 296416, 8125], 0, "default.jpg", 47, "che_220728_ymSZ", 79, ["hall:ttrate"]], + ["47·나나", 89, 81, 15, "che_event_저격", [110144, 162520, 429269, 80834, 46795], 0, "default.jpg", 47, "che_220728_ymSZ", 80, ["hall:dex5", "hall:occupied", "hall:warnum"]], + ["47·카이스트", 80, 15, 93, "che_event_집중", [60538, 13673, 45040, 572383, 30164], 1, "9361ef8.jpg?=20180907", 47, "che_220728_ymSZ", 81, ["hall:betwin", "hall:dex4"]], + ["47·네이미", 90, 79, 16, "che_event_돌격", [46020, 219345, 151332, 60672, 18671], 0, "default.jpg", 47, "che_220728_ymSZ", 87, ["hall:dex2"]], + ["47·삼모처음하는강아지", 91, 80, 15, "che_event_저격", [313850, 201720, 105675, 80531, 27310], 0, "default.jpg", 47, "che_220728_ymSZ", 88, ["hall:tlrate"]], + ["47·자택경비담당자", 79, 90, 16, "che_event_의술", [16176, 393809, 26776, 55294, 19707], 1, "bae896c1.png?=20220729", 47, "che_220728_ymSZ", 89, ["hall:dex2"]], + ["47·토마토", 77, 16, 92, "che_event_필살", [34278, 28085, 46780, 609588, 39404], 1, "56e43f99.jpg?=20220728", 47, "che_220728_ymSZ", 93, ["hall:dex4"]], + ["47·십원", 83, 90, 15, "che_event_척사", [541616, 17988, 67485, 68543, 35102], 0, "default.jpg", 47, "che_220728_ymSZ", 94, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:ttrate"]], + ["47·독미손", 76, 15, 98, "che_event_필살", [72285, 10223, 10907, 605429, 17524], 1, "979d7f25.jpg?=20220728", 47, "che_220728_ymSZ", 95, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:tirate"]], + ["47·네시", 79, 15, 92, "che_event_필살", [81191, 31873, 81909, 638802, 55092], 0, "default.jpg", 47, "che_220728_ymSZ", 96, ["hall:dex4", "hall:dex5"]], + ["47·킹구", 78, 15, 92, "che_event_척사", [16515, 15519, 22209, 804223, 13996], 1, "35f1b7d.png?=20220106", 47, "che_220728_ymSZ", 97, ["chief:7", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate_person"]], + ["47·9.9", 79, 93, 15, "che_event_무쌍", [511205, 4610, 23593, 40886, 25773], 0, "default.jpg", 47, "che_220728_ymSZ", 99, ["hall:betrate", "hall:dex1", "hall:firenum"]], + ["47·사스케", 80, 91, 15, "che_event_필살", [974465, 37395, 67806, 96648, 50594], 1, "f9c9d6b6.jpg?=20220613", 47, "che_220728_ymSZ", 100, ["chief:6", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["47·SARS", 76, 15, 95, "che_event_신중", [37504, 9284, 31223, 443215, 14779], 1, "b84944.jpg?=20180829", 47, "che_220728_ymSZ", 101, ["hall:betwin"]], + ["47·임사영", 79, 96, 15, "che_event_무쌍", [1395214, 91647, 72323, 63836, 44061], 1, "5cd8be38.jpg?=20220720", 47, "che_220728_ymSZ", 102, ["chief:12", "hall:betwin", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["47·평민킬러", 79, 95, 15, "che_event_무쌍", [41688, 66261, 1040852, 54254, 44225], 1, "70bf9aac.jpg?=20220707", 47, "che_220728_ymSZ", 103, ["chief:8", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:warnum"]], + ["47·Hide_D", 79, 15, 93, "che_event_필살", [65336, 46446, 54610, 788230, 41027], 1, "8cf2033.png?=20220228", 47, "che_220728_ymSZ", 104, ["chief:5", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["47·나이스네짱!", 75, 97, 15, "che_event_위압", [31230, 5766, 295692, 61374, 24279], 1, "12e4fa8e.png?=20220708", 47, "che_220728_ymSZ", 106, ["hall:tsrate"]], + ["47·껄룩", 15, 94, 75, "che_event_돌격", [0, 0, 0, 0, 0], 1, "14e967cf.jpg?=20220728", 47, "che_220728_ymSZ", 107, ["hall:firenum", "hall:tsrate"]], + ["47·호나", 89, 79, 15, "che_event_견고", [536812, 12966, 27166, 39630, 10090], 0, "default.jpg", 47, "che_220728_ymSZ", 108, ["hall:betrate", "hall:dex1"]], + ["47·퍄퍄", 74, 98, 15, "che_event_저격", [21135, 17490, 242858, 29833, 14432], 0, "default.jpg", 47, "che_220728_ymSZ", 109, ["hall:firenum", "hall:tsrate"]], + ["47·와일드플라워", 93, 77, 16, "che_event_필살", [12387, 50714, 555878, 58674, 40869], 0, "default.jpg", 47, "che_220728_ymSZ", 110, ["hall:dex3", "hall:occupied", "hall:tlrate"]], + ["47·큐베", 77, 15, 95, "che_event_필살", [77419, 21660, 22756, 507655, 42931], 1, "afd0d98c.png?=20220728", 47, "che_220728_ymSZ", 112, ["hall:betwingold", "hall:ttrate"]], + ["47·군필22학번", 78, 15, 93, "che_event_집중", [81892, 27842, 60506, 654540, 35163], 0, "default.jpg", 47, "che_220728_ymSZ", 113, ["hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:winrate"]], + ["47·UK", 85, 17, 84, "che_event_환술", [30831, 22293, 31801, 344233, 38122], 1, "5233cf4d.jpg?=20220729", 47, "che_220728_ymSZ", 114, ["hall:betwin"]], + ["47·불멍", 74, 19, 91, "che_event_집중", [7964, 1153, 737, 68434, 4234], 1, "9293a176.png?=20220728", 47, "che_220728_ymSZ", 115, ["hall:betrate", "hall:betwingold", "hall:ttrate", "hall:winrate"]], + ["47·페르난도", 78, 94, 15, "che_event_필살", [21067, 470679, 11539, 34388, 21524], 1, "6c07b3e.jpg?=20220305", 47, "che_220728_ymSZ", 116, ["hall:dex2", "hall:firenum"]], + ["47·화난나옹이", 79, 93, 15, "che_event_척사", [714273, 6702, 39725, 72213, 13247], 1, "44fa6a24.png?=20220610", 47, "che_220728_ymSZ", 118, ["hall:dex1", "hall:killcrew_person", "hall:warnum"]], + ["47·충치", 77, 15, 96, "che_event_신산", [37485, 10757, 32540, 587576, 16093], 1, "ff4431ac.png?=20220728", 47, "che_220728_ymSZ", 120, ["hall:betrate", "hall:dex4", "hall:ttrate"]], + ["47·외심장", 78, 16, 95, "che_event_집중", [14730, 30945, 36560, 556340, 33487], 1, "36110cd.jpg?=20180826", 47, "che_220728_ymSZ", 121, ["hall:tirate", "hall:ttrate"]], + ["47·사쿠라미코", 76, 15, 95, "che_event_집중", [70799, 25011, 24428, 557767, 22681], 1, "caa96049.jpg?=20220728", 47, "che_220728_ymSZ", 123, ["hall:ttrate"]], + ["47·ARES군주", 78, 94, 17, "che_event_무쌍", [64833, 58972, 751151, 96252, 47568], 1, "5590a863.jpg?=20220729", 47, "che_220728_ymSZ", 124, ["chief:11", "hall:betwin", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["47·찍먹", 79, 96, 15, "che_event_필살", [10713, 6088, 602219, 42530, 22803], 0, "default.jpg", 47, "che_220728_ymSZ", 126, ["hall:dex3", "hall:firenum", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["47·칠리크랩", 15, 80, 90, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 47, "che_220728_ymSZ", 127, ["hall:dedication"]], + ["47·여행자", 80, 90, 16, "che_event_무쌍", [78926, 826857, 24802, 100685, 48475], 1, "6cf3163d.png?=20220809", 47, "che_220728_ymSZ", 130, ["hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["47·아라타키 이토", 82, 88, 15, "che_event_무쌍", [695040, 16943, 71538, 83635, 24581], 1, "a76349e6.png?=20220810", 47, "che_220728_ymSZ", 132, ["hall:dex1", "hall:warnum"]], + ["47·사하드", 73, 16, 97, "che_event_반계", [53739, 7321, 30712, 306783, 21123], 1, "31f10b32.jpg?=20220717", 47, "che_220728_ymSZ", 135, ["hall:tirate"]], + ["47·소현", 88, 81, 15, "che_event_위압", [87404, 410457, 13143, 57294, 29735], 1, "63dd05f8.jpg?=20220815", 47, "che_220728_ymSZ", 137, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["47·멍", 15, 82, 89, "che_event_신산", [0, 0, 0, 0, 0], 1, "5cedbb3.jpg?=20190817", 47, "che_220728_ymSZ", 138, ["hall:dedication", "hall:firenum"]], + ["47·rwitch", 76, 15, 95, "che_event_의술", [11280, 29289, 17602, 394645, 18466], 1, "54e527.png?=20201024", 47, "che_220728_ymSZ", 292, ["hall:tirate"]], + ["47·천괴금", 75, 15, 93, "che_event_의술", [48730, 47367, 33474, 407921, 53847], 1, "c5fbb210.png?=20220729", 47, "che_220728_ymSZ", 300, ["hall:dex5"]], + ["47·호각", 76, 93, 16, "che_event_의술", [23960, 17649, 274831, 43951, 16199], 0, "default.jpg", 47, "che_220728_ymSZ", 303, ["hall:firenum", "hall:tsrate"]], + ["47·불끈불끈", 15, 73, 98, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 47, "che_220728_ymSZ", 317, ["hall:tirate", "hall:ttrate"]], + ["47·무지무지", 16, 71, 99, "che_event_척사", [0, 0, 0, 0, 0], 1, "0d9869ae.png?=20220730", 47, "che_220728_ymSZ", 318, ["hall:tirate"]], + ["47·사슴곰", 16, 72, 98, "che_event_반계", [0, 0, 0, 0, 0], 1, "74dec00.png?=20201114", 47, "che_220728_ymSZ", 355, ["hall:tirate"]], + ["47·우마무스메", 15, 83, 88, "che_event_돌격", [0, 0, 0, 0, 0], 0, "default.jpg", 47, "che_220728_ymSZ", 391, ["hall:dedication", "hall:ttrate"]], + ["47·클레", 90, 76, 15, "che_event_무쌍", [55555, 277211, 115116, 59275, 22898], 1, "f1c9d1ef.jpg?=20220803", 47, "che_220728_ymSZ", 520, ["hall:dex2"]], + ["47·페이트", 16, 92, 74, "che_event_저격", [0, 0, 0, 0, 0], 1, "6045256.png?=20220317", 47, "che_220728_ymSZ", 524, ["hall:tsrate"]], + ["47·아무것도안하는사람", 76, 91, 15, "che_event_척사", [63895, 308625, 22949, 50989, 36000], 0, "default.jpg", 47, "che_220728_ymSZ", 539, ["hall:dex2"]], + ["47·Bianchi", 77, 86, 15, "che_event_위압", [36497, 306430, 41839, 39274, 24241], 0, "default.jpg", 47, "che_220728_ymSZ", 640, ["hall:dex2"]], + ["47·멜덩이멜랑멜랑", 15, 72, 86, "che_event_필살", [2254, 0, 0, 0, 132], 0, "default.jpg", 47, "che_220728_ymSZ", 693, ["hall:killrate_person"]], + ["48·셀레미", 65, 13, 83, "che_event_신중", [4312, 1656, 7877, 308888, 12228], 1, "6145713a.jpg?=20220829", 48, "che_220901_bxX6", 7, ["hall:betgold", "hall:betwingold", "hall:dedication"]], + ["48·칼든피아노", 66, 82, 13, "che_event_필살", [24599, 272474, 13144, 50554, 15099], 1, "48055d32.jpg?=20220912", 48, "che_220901_bxX6", 8, ["hall:betrate", "hall:dex2", "hall:tsrate"]], + ["48·세레나", 66, 83, 13, "che_event_필살", [30310, 317828, 5191, 42959, 7662], 1, "f17aed2a.png?=20220831", 48, "che_220901_bxX6", 12, ["hall:dex2", "hall:tsrate"]], + ["48·SARS", 84, 63, 13, "che_event_필살", [20200, 12104, 25173, 22872, 665032], 1, "b84944.jpg?=20180829", 48, "che_220901_bxX6", 13, ["chief:10", "hall:betrate", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["48·임사영", 68, 13, 82, "che_event_집중", [33680, 28459, 20177, 531650, 40848], 1, "5cd8be38.jpg?=20220720", 48, "che_220901_bxX6", 19, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["48·칼든멜로디", 66, 13, 82, "che_event_신중", [32413, 13947, 12109, 248813, 22442], 1, "46f5474b.jpg?=20220924", 48, "che_220901_bxX6", 22, ["hall:betrate", "hall:tirate"]], + ["48·마요이", 66, 14, 81, "che_event_환술", [51400, 8947, 18006, 421087, 41099], 1, "96bc8973.png?=20220529", 48, "che_220901_bxX6", 23, ["hall:dex4", "hall:dex5", "hall:experience"]], + ["48·독구", 67, 13, 82, "che_event_신중", [21257, 11151, 9977, 425459, 26280], 1, "f729c74e.png?=20220801", 48, "che_220901_bxX6", 24, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4"]], + ["48·무지무지막지", 15, 64, 81, "che_event_집중", [0, 0, 0, 0, 0], 1, "0d9869ae.png?=20220730", 48, "che_220901_bxX6", 26, ["hall:tirate"]], + ["48·미래없는영끌족", 86, 64, 13, "che_event_필살", [459095, 8040, 23149, 36803, 23692], 1, "83e5de42.jpg?=20220924", 48, "che_220901_bxX6", 27, ["hall:dex1", "hall:killcrew", "hall:killnum", "hall:occupied", "hall:tlrate"]], + ["48·네시", 81, 92, 15, "che_event_위압", [71579, 14790, 540560, 73502, 4573], 0, "default.jpg", 48, "che_220901_bxX6", 28, ["hall:dex3"]], + ["48·김나영", 68, 82, 13, "che_event_필살", [48198, 681993, 32114, 58199, 60708], 1, "6a9eaa87.jpg?=20220728", 48, "che_220901_bxX6", 30, ["hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["48·Tiger VI", 86, 63, 13, "che_event_필살", [9800, 27201, 430728, 47037, 29783], 1, "682fea71.png?=20220901", 48, "che_220901_bxX6", 31, ["hall:dex3", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["48·11", 78, 95, 15, "che_event_위압", [404558, 18858, 79717, 60840, 15455], 0, "default.jpg", 48, "che_220901_bxX6", 37, ["hall:betrate", "hall:dex3"]], + ["48·륜", 70, 13, 78, "che_event_환술", [24842, 18411, 7887, 363091, 38708], 1, "e56dcf5a.png?=20220919", 48, "che_220901_bxX6", 40, ["hall:occupied"]], + ["48·페르난도", 72, 76, 13, "che_event_필살", [25470, 19426, 453469, 96155, 55796], 1, "6c07b3e.jpg?=20220305", 48, "che_220901_bxX6", 45, ["hall:dex3", "hall:dex5"]], + ["48·카이스트", 67, 13, 80, "che_event_척사", [41918, 30827, 28133, 473604, 41197], 1, "9361ef8.jpg?=20180907", 48, "che_220901_bxX6", 46, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex4", "hall:warnum"]], + ["48·Hide_D", 66, 13, 84, "che_event_환술", [62367, 18673, 18910, 699401, 41774], 1, "8cf2033.png?=20220228", 48, "che_220901_bxX6", 47, ["chief:12", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["48·바나낫", 65, 83, 13, "che_event_견고", [340155, 3151, 12962, 28576, 11869], 1, "10f12b0c.gif?=20220829", 48, "che_220901_bxX6", 53, ["hall:dex1", "hall:experience", "hall:firenum", "hall:occupied"]], + ["48·금강", 67, 81, 13, "che_event_필살", [16461, 289705, 7147, 54260, 11652], 1, "a84b4220.jpg?=20220901", 48, "che_220901_bxX6", 57, ["hall:betrate", "hall:dex2", "hall:tsrate"]], + ["48·독구리", 84, 64, 13, "che_event_필살", [22088, 25699, 10494, 57222, 423367], 1, "b316e3cb.webp?=20220830", 48, "che_220901_bxX6", 58, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["48·꽈배기", 65, 13, 82, "che_event_신산", [10715, 2712, 11971, 137351, 4987], 0, "default.jpg", 48, "che_220901_bxX6", 63, ["hall:betgold", "hall:betwingold"]], + ["48·이드", 65, 13, 84, "che_event_집중", [26452, 6930, 6396, 278151, 14061], 1, "5898830.jpg?=20210831", 48, "che_220901_bxX6", 64, ["hall:dedication"]], + ["48·밧줄이 유일한 희망", 13, 82, 65, "che_event_의술", [718, 0, 2056, 252, 0], 0, "default.jpg", 48, "che_220901_bxX6", 66, ["hall:tsrate"]], + ["48·갈근", 94, 79, 15, "che_event_견고", [27734, 59046, 792706, 116215, 53247], 1, "8d1d320d.png?=20220904", 48, "che_220901_bxX6", 68, ["hall:betwin", "hall:dex2", "hall:dex3", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["48·로비", 77, 13, 70, "che_event_환술", [29872, 9607, 11895, 184572, 7583], 1, "d38cb34.png?=20220106", 48, "che_220901_bxX6", 69, ["hall:tlrate"]], + ["48·독재자", 65, 13, 84, "che_event_집중", [27278, 10634, 9840, 432666, 43128], 1, "13753408.jpg?=20220907", 48, "che_220901_bxX6", 70, ["hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["48·Hide_Doc", 77, 96, 16, "che_event_척사", [979329, 8944, 21442, 27678, 24185], 1, "066fbe95.png?=20220908", 48, "che_220901_bxX6", 73, ["hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["48·예쁜꽃에는독이있다", 65, 13, 81, "che_event_필살", [27879, 22144, 3870, 375596, 27637], 1, "572172fc.png?=20220901", 48, "che_220901_bxX6", 74, ["hall:dex4", "hall:occupied", "hall:winrate"]], + ["48·독단비", 86, 60, 13, "che_event_저격", [26058, 18580, 31223, 64808, 252200], 1, "1e2e3608.png?=20220902", 48, "che_220901_bxX6", 76, ["hall:dex5", "hall:tlrate"]], + ["48·악질", 15, 79, 93, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 48, "che_220901_bxX6", 78, ["hall:firenum"]], + ["48·원영토끼", 14, 85, 62, "che_event_징병", [0, 0, 0, 0, 0], 1, "e95b192f.jpg?=20220811", 48, "che_220901_bxX6", 79, ["hall:firenum", "hall:tsrate", "hall:ttrate"]], + ["48·돌아온너구리", 14, 74, 72, "che_event_신산", [0, 0, 0, 0, 0], 1, "79dbce5.jpg?=20210918", 48, "che_220901_bxX6", 80, ["hall:firenum", "hall:ttrate"]], + ["48·독극물", 65, 13, 85, "che_event_필살", [22962, 7179, 6977, 508782, 33109], 1, "f2b3955b.png?=20220901", 48, "che_220901_bxX6", 84, ["chief:9", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["48·호나", 72, 13, 76, "che_event_신산", [27874, 4926, 30184, 505273, 41311], 0, "default.jpg", 48, "che_220901_bxX6", 85, ["hall:betrate", "hall:dex4", "hall:ttrate"]], + ["48·독워그레이몬", 87, 60, 14, "che_event_공성", [11077, 2143, 7543, 7439, 406416], 1, "1eb81f35.png?=20220831", 48, "che_220901_bxX6", 86, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["48·6시내고향", 68, 79, 14, "che_event_필살", [597327, 12763, 22243, 75143, 38651], 1, "9c85b757.png?=20220902", 48, "che_220901_bxX6", 87, ["chief:6", "hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum"]], + ["48·하루", 68, 78, 14, "che_event_무쌍", [562881, 14485, 14840, 17244, 23405], 1, "664b0a55.jpg?=20220923", 48, "che_220901_bxX6", 88, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["48·내정내정", 61, 14, 85, "che_event_신산", [7518, 2996, 5920, 68768, 2189], 0, "default.jpg", 48, "che_220901_bxX6", 90, ["hall:tirate"]], + ["48·불곰", 13, 84, 62, "che_event_척사", [0, 0, 0, 0, 0], 1, "5cd8411.png?=20220513", 48, "che_220901_bxX6", 92, ["hall:firenum"]], + ["48·웨이더", 69, 77, 14, "che_event_저격", [35031, 174890, 9819, 40959, 14658], 1, "4035e659.png?=20220901", 48, "che_220901_bxX6", 93, ["hall:dex2", "hall:ttrate"]], + ["48·Hide의과거형HideD", 69, 79, 14, "che_event_척사", [19648, 18004, 576863, 30865, 25800], 1, "54fe0f3d.jpg?=20220926", 48, "che_220901_bxX6", 96, ["chief:8", "hall:betrate", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["48·나옹이", 79, 16, 93, "che_event_집중", [67980, 31675, 27875, 872009, 62717], 1, "44fa6a24.png?=20220610", 48, "che_220901_bxX6", 97, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["48·Air", 66, 82, 13, "che_event_돌격", [9108, 1288, 165539, 40962, 10805], 0, "default.jpg", 48, "che_220901_bxX6", 98, ["hall:dex3", "hall:ttrate"]], + ["48·대교", 83, 62, 13, "che_event_척사", [156381, 1464, 9881, 43255, 66924], 1, "9f0e6dcc.jpg?=20220808", 48, "che_220901_bxX6", 99, ["hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["48·히메모리루나", 68, 13, 81, "che_event_집중", [30133, 29686, 5267, 301207, 22490], 1, "a0ebf2d4.jpg?=20220902", 48, "che_220901_bxX6", 101, ["hall:dex2", "hall:tirate"]], + ["48·유카", 79, 92, 15, "che_event_위압", [498928, 2276, 33601, 89915, 22495], 0, "default.jpg", 48, "che_220901_bxX6", 102, ["hall:dex1"]], + ["48·엔틱", 64, 13, 83, "che_event_척사", [20699, 4767, 12731, 187000, 10813], 1, "b11efa74.webp?=20220707", 48, "che_220901_bxX6", 104, ["hall:tirate"]], + ["48·벽돌도둑", 13, 85, 61, "che_event_견고", [0, 0, 0, 0, 0], 1, "38cd7c1d.png?=20220901", 48, "che_220901_bxX6", 105, ["hall:firenum", "hall:tsrate"]], + ["48·와일드플라워", 65, 83, 13, "che_event_척사", [224496, 3504, 14168, 22184, 20109], 0, "default.jpg", 48, "che_220901_bxX6", 108, ["hall:tsrate"]], + ["48·소현", 90, 81, 16, "che_event_견고", [81283, 675506, 14684, 111500, 70431], 1, "71f2ac5b.png?=20220902", 48, "che_220901_bxX6", 109, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["48·꿀벌군단", 67, 78, 13, "che_event_보병", [208129, 4699, 3613, 56551, 29753], 0, "default.jpg", 48, "che_220901_bxX6", 112, ["hall:ttrate"]], + ["48·카겜디져라", 67, 81, 13, "che_event_견고", [374240, 14765, 13847, 47063, 31060], 1, "12e4fa8e.png?=20220708", 48, "che_220901_bxX6", 113, ["hall:dex1", "hall:tsrate"]], + ["48·아키카와 야요이", 68, 14, 79, "che_event_집중", [18205, 16588, 18902, 395724, 36092], 1, "325c6336.png?=20220901", 48, "che_220901_bxX6", 115, ["hall:dex4"]], + ["48·껄룩", 70, 76, 14, "che_event_견고", [261640, 1970, 15377, 36473, 10105], 1, "14e967cf.jpg?=20220728", 48, "che_220901_bxX6", 117, ["hall:dex1"]], + ["48·데스네이트", 66, 81, 13, "che_event_견고", [381777, 11032, 17487, 46657, 46608], 1, "4d2184f9.jpg?=20220819", 48, "che_220901_bxX6", 120, ["hall:betwin", "hall:dex1", "hall:tsrate"]], + ["48·료우기시키", 66, 14, 82, "che_event_징병", [3659, 3047, 9592, 128337, 3001], 1, "72a190e.jpg?=20220109", 48, "che_220901_bxX6", 121, ["hall:ttrate"]], + ["48·대한총대장그레이스", 69, 13, 79, "che_event_집중", [27534, 24852, 11082, 266221, 6511], 1, "901f33f2.png?=20220903", 48, "che_220901_bxX6", 122, ["hall:dex2"]], + ["48·우마무스메", 77, 14, 67, "che_event_필살", [15199, 11125, 5932, 144574, 7319], 0, "default.jpg", 48, "che_220901_bxX6", 126, ["hall:firenum"]], + ["48·네코 아르크", 81, 91, 15, "che_event_기병", [39845, 25532, 675351, 78287, 40848], 1, "14c3add6.jpg?=20220901", 48, "che_220901_bxX6", 128, ["hall:dex3"]], + ["48·바이돌", 77, 13, 71, "che_event_필살", [8352, 9565, 10097, 197814, 7512], 0, "default.jpg", 48, "che_220901_bxX6", 129, ["hall:ttrate"]], + ["48·칼든사냥꾼", 13, 64, 82, "che_event_환술", [0, 0, 0, 0, 0], 0, "default.jpg", 48, "che_220901_bxX6", 130, ["hall:firenum", "hall:tirate"]], + ["48·물조멜로디", 13, 65, 81, "che_event_필살", [2587, 390, 0, 1613, 627], 1, "51bb6c35.png?=20220826", 48, "che_220901_bxX6", 132, ["hall:dedication", "hall:firenum"]], + ["48·1004", 65, 82, 13, "che_event_돌격", [23287, 9671, 239053, 41481, 18850], 0, "default.jpg", 48, "che_220901_bxX6", 134, ["hall:dex3"]], + ["48·운영자님글카업글좀", 17, 63, 79, "che_event_의술", [28, 0, 1919, 212, 0], 1, "975933c2.jpg?=20220808", 48, "che_220901_bxX6", 135, ["hall:dedication"]], + ["48·아기쿠로미", 67, 81, 13, "che_event_견고", [178820, 2776, 38663, 28936, 12808], 1, "0215322b.jpg?=20220902", 48, "che_220901_bxX6", 263, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tsrate"]], + ["48·내정만함", 14, 79, 66, "che_event_견고", [0, 106, 922, 71, 0], 1, "30690ec1.jpg?=20220927", 48, "che_220901_bxX6", 271, ["hall:dedication"]], + ["48·Evans", 66, 80, 13, "che_event_필살", [410934, 10518, 28722, 34812, 25609], 0, "default.jpg", 48, "che_220901_bxX6", 272, ["hall:dex1"]], + ["48·잠복기간", 89, 15, 82, "che_event_환술", [95385, 26758, 32381, 820092, 70442], 0, "default.jpg", 48, "che_220901_bxX6", 273, ["hall:dex4", "hall:dex5"]], + ["48·사하드", 65, 13, 81, "che_event_의술", [8819, 11066, 12065, 185163, 25573], 1, "31f10b32.jpg?=20220717", 48, "che_220901_bxX6", 281, ["hall:dedication"]], + ["48·만샘", 16, 60, 82, "che_event_신중", [0, 0, 0, 990, 2053], 1, "4a206a1.jpg?=20181122", 48, "che_220901_bxX6", 283, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["48·조선아", 79, 66, 15, "che_event_필살", [1545, 735, 37120, 2558, 1360], 1, "76aae8e.jpg?=20220514", 48, "che_220901_bxX6", 286, ["hall:betrate", "hall:tlrate"]], + ["48·메지로 맥퀸", 78, 93, 15, "che_event_무쌍", [21007, 19074, 632240, 59667, 39577], 1, "80ee36b9.png?=20220901", 48, "che_220901_bxX6", 287, ["hall:dex3"]], + ["48·무지장", 15, 75, 87, "che_event_반계", [0, 0, 0, 0, 0], 0, "default.jpg", 48, "che_220901_bxX6", 641, ["hall:firenum"]], + ["49·부관", 77, 94, 15, "che_event_필살", [33601, 817257, 33735, 57065, 33746], 1, "bf096c12.jpg?=20221017", 49, "che_221006_WnwE", 10, ["hall:betrate", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["49·셀레미", 73, 15, 96, "che_event_집중", [17739, 17026, 12814, 382588, 16471], 1, "c6c8f418.jpg?=20220902", 49, "che_221006_WnwE", 15, ["hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["49·갈근", 93, 73, 15, "che_event_필살", [41353, 9978, 76390, 147044, 277337], 1, "f61a1fbb.png?=20221004", 49, "che_221006_WnwE", 16, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5"]], + ["49·자", 74, 15, 94, "che_event_집중", [18525, 10188, 22228, 276524, 20035], 1, "bd47d1e5.png?=20221006", 49, "che_221006_WnwE", 18, ["hall:tirate", "hall:winrate"]], + ["49·우마무스메", 77, 90, 16, "che_event_무쌍", [348688, 18802, 40197, 50014, 12163], 0, "default.jpg", 49, "che_221006_WnwE", 19, ["hall:dex1", "hall:firenum"]], + ["49·마요이", 73, 15, 95, "che_event_필살", [9514, 13496, 7051, 263934, 19258], 1, "0af2c879.jpg?=20221002", 49, "che_221006_WnwE", 20, ["hall:tirate"]], + ["49·쿠라마", 76, 15, 89, "che_event_집중", [27299, 12309, 24731, 383414, 14754], 1, "0e46614a.png?=20221023", 49, "che_221006_WnwE", 29, ["hall:betrate", "hall:firenum"]], + ["49·스누피", 97, 71, 15, "che_event_필살", [61471, 11827, 247599, 32285, 111535], 1, "c5c6bcfb.png?=20221006", 49, "che_221006_WnwE", 30, ["chief:11", "hall:betwin", "hall:dex3", "hall:occupied", "hall:tlrate"]], + ["49·강유", 80, 16, 89, "che_event_환술", [15714, 13705, 21526, 491407, 20725], 1, "95534aea.jpg?=20220617", 49, "che_221006_WnwE", 31, ["hall:betrate", "hall:betwin", "hall:dex4"]], + ["49·SARS", 89, 78, 15, "che_event_돌격", [19448, 10187, 331459, 85371, 112462], 1, "b84944.jpg?=20180829", 49, "che_221006_WnwE", 38, ["chief:12", "hall:dedication", "hall:dex3", "hall:experience", "hall:winrate"]], + ["49·장원영", 98, 70, 15, "che_event_공성", [0, 1614, 2547, 27667, 870470], 1, "38360a82.jpg?=20221004", 49, "che_221006_WnwE", 39, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["49·만리향", 15, 93, 74, "che_event_의술", [4373, 17258, 0, 1890, 6930], 1, "9e805440.jpg?=20221006", 49, "che_221006_WnwE", 41, ["hall:betgold", "hall:betwingold", "hall:firenum", "hall:tsrate"]], + ["49·곡", 75, 95, 15, "che_event_척사", [632843, 3385, 47043, 65516, 34610], 1, "dcfcc021.jpg?=20221018", 49, "che_221006_WnwE", 43, ["hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["49·제갈여포", 77, 15, 93, "che_event_집중", [37589, 7622, 23151, 440456, 28114], 1, "d87fd80.png?=20220515", 49, "che_221006_WnwE", 44, ["hall:tirate"]], + ["49·정기예금들어라", 76, 16, 90, "che_event_환술", [43093, 21737, 7809, 337466, 29988], 0, "default.jpg", 49, "che_221006_WnwE", 45, ["hall:ttrate"]], + ["49·이드", 73, 93, 16, "che_event_견고", [255975, 11012, 11370, 35555, 29400], 1, "5898830.jpg?=20210831", 49, "che_221006_WnwE", 47, ["hall:dex1", "hall:killrate"]], + ["49·카이스트", 76, 15, 90, "che_event_필살", [25261, 23543, 34518, 463323, 15825], 1, "9361ef8.jpg?=20180907", 49, "che_221006_WnwE", 51, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:firenum"]], + ["49·엄마슈퍼", 77, 93, 15, "che_event_필살", [4535, 6218, 799527, 10233, 6941], 1, "aa3e02ce.jpg?=20221008", 49, "che_221006_WnwE", 54, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["49·민트토끼", 75, 93, 15, "che_event_필살", [513077, 11917, 15671, 45361, 16178], 1, "957e7732.jpg?=20221006", 49, "che_221006_WnwE", 64, ["hall:betgold", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["49·박일아", 78, 15, 91, "che_event_집중", [12736, 7542, 62262, 550107, 22938], 1, "8608979.gif?=20191024", 49, "che_221006_WnwE", 65, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["49·독", 97, 70, 15, "che_event_무쌍", [29533, 18789, 60237, 37838, 707288], 1, "abf61eb8.png?=20221006", 49, "che_221006_WnwE", 66, ["chief:6", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate"]], + ["49·리플리", 77, 16, 91, "che_event_필살", [21324, 7947, 20602, 317406, 22011], 1, "102c5ecc.png?=20221009", 49, "che_221006_WnwE", 75, ["hall:betrate"]], + ["49·와일드플라워", 96, 72, 15, "che_event_돌격", [531620, 5812, 66235, 87659, 65600], 0, "default.jpg", 49, "che_221006_WnwE", 76, ["hall:dex1", "hall:tlrate", "hall:warnum"]], + ["49·군필22학번", 76, 16, 92, "che_event_필살", [10035, 9575, 8622, 361132, 36387], 0, "default.jpg", 49, "che_221006_WnwE", 78, ["hall:tirate"]], + ["49·유기의길", 77, 89, 16, "che_event_필살", [265079, 1929, 17482, 37897, 30125], 0, "default.jpg", 49, "che_221006_WnwE", 79, ["hall:dex1", "hall:ttrate", "hall:winrate"]], + ["49·오의난무위소", 90, 76, 15, "che_event_필살", [54696, 8769, 70591, 39686, 211193], 0, "default.jpg", 49, "che_221006_WnwE", 81, ["hall:dex5", "hall:tlrate"]], + ["49·12", 78, 89, 15, "che_event_무쌍", [106036, 29004, 576781, 92625, 49993], 0, "default.jpg", 49, "che_221006_WnwE", 82, ["chief:10", "hall:betrate", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["49·다람쥐헌터", 89, 15, 78, "che_event_징병", [26114, 22742, 7101, 83500, 277483], 0, "default.jpg", 49, "che_221006_WnwE", 83, ["hall:dex5", "hall:occupied", "hall:ttrate"]], + ["49·앤젤라", 75, 15, 93, "che_event_신중", [31638, 14456, 7137, 153146, 24900], 1, "4f82f26f.png?=20221006", 49, "che_221006_WnwE", 84, ["hall:dedication", "hall:tirate"]], + ["49·응애", 90, 77, 15, "che_event_위압", [6624, 38083, 417999, 103071, 26243], 1, "0d9869ae.png?=20220730", 49, "che_221006_WnwE", 85, ["hall:dex2", "hall:dex3"]], + ["49·바이돌", 84, 15, 83, "che_event_집중", [37030, 31892, 57577, 494068, 21577], 0, "default.jpg", 49, "che_221006_WnwE", 86, ["hall:dex2", "hall:dex4"]], + ["49·가을?", 98, 70, 15, "che_event_징병", [33823, 22153, 63120, 62370, 264877], 1, "d1db2a6d.webp?=20221006", 49, "che_221006_WnwE", 87, ["hall:betwin", "hall:dedication", "hall:dex5", "hall:experience", "hall:tlrate"]], + ["49·앙투아네트", 74, 15, 95, "che_event_반계", [25251, 7789, 41112, 283381, 25793], 1, "0cdeeaea.jpg?=20221006", 49, "che_221006_WnwE", 88, ["hall:experience", "hall:tirate"]], + ["49·대교", 89, 15, 79, "che_event_필살", [13302, 34828, 39784, 521351, 67041], 1, "9f0e6dcc.jpg?=20220808", 49, "che_221006_WnwE", 89, ["hall:dex2", "hall:dex4", "hall:killnum"]], + ["49·잘거야", 76, 89, 15, "che_event_무쌍", [13732, 23747, 249470, 39120, 27233], 0, "default.jpg", 49, "che_221006_WnwE", 90, ["chief:8", "hall:dedication", "hall:dex3", "hall:firenum"]], + ["49·피", 76, 90, 15, "che_event_저격", [23179, 18978, 392251, 69700, 18690], 1, "7b387a5a.png?=20221006", 49, "che_221006_WnwE", 92, ["hall:dex3", "hall:tsrate"]], + ["49·평민킬러", 94, 76, 15, "che_event_무쌍", [32648, 943971, 30653, 31730, 25257], 1, "83e5de42.jpg?=20220924", 49, "che_221006_WnwE", 93, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["49·예초기", 74, 92, 15, "che_event_징병", [374827, 11672, 25190, 106615, 14161], 1, "f55d1b6f.jpg?=20221007", 49, "che_221006_WnwE", 95, ["hall:dex1", "hall:tsrate"]], + ["49·뭘봐", 88, 78, 16, "che_event_필살", [242434, 31123, 60405, 45878, 8514], 0, "default.jpg", 49, "che_221006_WnwE", 96, ["hall:dex1", "hall:dex2", "hall:tlrate"]], + ["49·관부", 77, 15, 90, "che_event_집중", [23913, 8086, 24821, 470122, 30132], 1, "59bb4c31.jpg?=20221016", 49, "che_221006_WnwE", 98, ["hall:betwin", "hall:dex4", "hall:occupied"]], + ["49·네시", 78, 15, 90, "che_event_필살", [9544, 6037, 37551, 455462, 5140], 0, "default.jpg", 49, "che_221006_WnwE", 99, ["hall:dex4", "hall:ttrate"]], + ["49·마왕", 76, 15, 90, "che_event_환술", [35209, 17285, 13320, 223136, 39332], 1, "f39217aa.gif?=20220916", 49, "che_221006_WnwE", 100, ["chief:9", "hall:dedication", "hall:experience"]], + ["49·사스케", 75, 15, 93, "che_event_필살", [2770, 19972, 16080, 295043, 36874], 1, "2babffbe.jpg?=20220910", 49, "che_221006_WnwE", 102, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["49·환선", 78, 89, 15, "che_event_징병", [18290, 26262, 18952, 27186, 315322], 0, "default.jpg", 49, "che_221006_WnwE", 103, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex5"]], + ["49·Hide_D", 77, 16, 90, "che_event_척사", [27670, 6447, 7768, 505892, 39254], 1, "8cf2033.png?=20220228", 49, "che_221006_WnwE", 104, ["hall:betrate", "hall:dex4", "hall:warnum"]], + ["49·마작왕페이트", 94, 74, 15, "che_event_필살", [51341, 19149, 21200, 67283, 529709], 1, "82f377d3.png?=20221006", 49, "che_221006_WnwE", 105, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["49·나옹이", 77, 89, 15, "che_event_견고", [7702, 12664, 502475, 67173, 53015], 1, "44fa6a24.png?=20220610", 49, "che_221006_WnwE", 106, ["hall:dex3", "hall:tsrate"]], + ["49·아싸", 76, 16, 91, "che_event_필살", [37954, 13685, 48181, 555099, 41256], 0, "default.jpg", 49, "che_221006_WnwE", 107, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum"]], + ["49·독여시", 77, 89, 16, "che_event_필살", [47168, 315201, 88504, 71425, 23780], 1, "89f1014d.png?=20221006", 49, "che_221006_WnwE", 109, ["hall:dex2", "hall:tsrate"]], + ["49·평민힐러", 15, 73, 95, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 49, "che_221006_WnwE", 111, ["hall:dedication", "hall:ttrate"]], + ["49·소현", 89, 79, 16, "che_event_저격", [43090, 379233, 19591, 50280, 33147], 1, "47ee1148.png?=20221007", 49, "che_221006_WnwE", 112, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["49·료우기시키", 78, 15, 90, "che_event_환술", [47506, 9369, 7209, 260421, 22052], 1, "72a190e.jpg?=20220109", 49, "che_221006_WnwE", 113, ["hall:dedication"]], + ["49·태홍", 75, 92, 15, "che_event_필살", [10399, 29486, 255694, 39736, 9828], 1, "fc6a0e0f.png?=20221006", 49, "che_221006_WnwE", 114, ["hall:dex3", "hall:tsrate"]], + ["49·페르난도", 79, 87, 15, "che_event_필살", [583172, 20614, 45864, 96619, 44727], 1, "6c07b3e.jpg?=20220305", 49, "che_221006_WnwE", 116, ["hall:betrate", "hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["49·골든치즈렐라와퍼", 89, 78, 15, "che_event_필살", [28136, 53052, 624283, 126494, 50654], 1, "75aec126.jpg?=20221007", 49, "che_221006_WnwE", 118, ["hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["49·Bianchi", 79, 90, 15, "che_event_무쌍", [513815, 15088, 19467, 19157, 12842], 0, "default.jpg", 49, "che_221006_WnwE", 120, ["hall:dex1"]], + ["49·くま", 77, 16, 91, "che_event_집중", [38972, 21386, 14065, 489449, 25893], 1, "770f53.jpg?=20190718", 49, "che_221006_WnwE", 125, ["hall:dex4", "hall:killcrew_person"]], + ["49·개미호랑이", 76, 15, 92, "che_event_집중", [7806, 10039, 24375, 251800, 22771], 1, "817c8a88.jpg?=20221007", 49, "che_221006_WnwE", 127, ["hall:betrate"]], + ["49·반역의루돌프", 75, 15, 91, "che_event_신중", [23561, 9545, 37577, 211095, 17747], 0, "default.jpg", 49, "che_221006_WnwE", 128, ["hall:tirate"]], + ["49·구경꾼", 15, 87, 78, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 49, "che_221006_WnwE", 131, ["hall:firenum"]], + ["49·POCARI.", 74, 15, 93, "che_event_집중", [18013, 17000, 23702, 401726, 36200], 0, "default.jpg", 49, "che_221006_WnwE", 132, ["hall:tirate", "hall:ttrate"]], + ["49·네이미", 89, 78, 15, "che_event_돌격", [91525, 451626, 51895, 133172, 76572], 0, "default.jpg", 49, "che_221006_WnwE", 137, ["hall:dex2"]], + ["49·호시마치스이세이", 75, 15, 92, "che_event_신중", [10952, 11150, 13761, 115328, 18813], 1, "e2e5d0de.jpg?=20221007", 49, "che_221006_WnwE", 224, ["chief:5", "hall:dedication", "hall:tirate"]], + ["49·돌아온너구리", 93, 73, 16, "che_event_돌격", [17013, 19055, 29363, 72159, 311777], 1, "79dbce5.jpg?=20210918", 49, "che_221006_WnwE", 226, ["hall:dex5"]], + ["49·낙지꿈", 73, 17, 91, "che_event_집중", [8669, 11407, 22297, 214149, 25919], 0, "default.jpg", 49, "che_221006_WnwE", 228, ["hall:ttrate"]], + ["49·신", 90, 15, 77, "che_event_필살", [20109, 15279, 19854, 25664, 457839], 0, "default.jpg", 49, "che_221006_WnwE", 234, ["hall:dex5", "hall:tlrate"]], + ["49·게을로트레이너", 15, 73, 92, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 49, "che_221006_WnwE", 381, ["hall:dedication"]], + ["49·앵벌스의결혼식", 15, 85, 75, "che_event_돌격", [0, 0, 0, 0, 0], 0, "default.jpg", 49, "che_221006_WnwE", 492, ["hall:ttrate"]], + ["51·3성구", 90, 79, 15, "che_event_무쌍", [38292, 5810, 19927, 30402, 860423], 1, "3d15eaec.jpg?=20221130", 51, "che_221201_Fmth", 6, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["51·자유", 78, 91, 15, "che_event_무쌍", [513433, 18235, 23684, 53404, 38414], 0, "default.jpg", 51, "che_221201_Fmth", 13, ["chief:6", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["51·문피아", 79, 15, 90, "che_event_환술", [52450, 26217, 8497, 534600, 46785], 0, "default.jpg", 51, "che_221201_Fmth", 15, ["hall:dex4"]], + ["51·밍나뇽", 74, 95, 15, "che_event_척사", [40097, 257157, 48021, 36541, 28308], 1, "c2f36fd2.jpg?=20221201", 51, "che_221201_Fmth", 22, ["hall:betrate", "hall:dex2", "hall:dex3", "hall:occupied", "hall:tsrate"]], + ["51·장만월", 74, 16, 94, "che_event_신중", [35683, 11575, 22261, 206525, 11328], 1, "ba0edf47.jpg?=20221201", 51, "che_221201_Fmth", 26, ["hall:tirate"]], + ["51·1성구", 16, 70, 98, "che_event_척사", [0, 0, 0, 0, 0], 1, "fd45c7dd.jpg?=20221126", 51, "che_221201_Fmth", 28, ["hall:betrate", "hall:firenum", "hall:tirate"]], + ["51·그린치", 98, 74, 15, "che_event_필살", [67295, 80289, 687843, 70200, 31158], 1, "d1280de8.jpg?=20221202", 51, "che_221201_Fmth", 30, ["hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["51·가자미", 85, 83, 16, "che_event_필살", [432442, 2907, 54237, 52279, 24598], 1, "a7160fed.jpg?=20221127", 51, "che_221201_Fmth", 31, ["hall:dex1", "hall:dex3"]], + ["51·겨울엔 군고구마", 94, 76, 15, "che_event_필살", [502059, 2533, 3127, 42967, 36648], 1, "52bd973a.jpg?=20221201", 51, "che_221201_Fmth", 34, ["hall:dex1", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["51·0성구", 76, 15, 92, "che_event_신산", [14619, 12679, 19927, 348809, 61421], 1, "57a0fa21.png?=20221130", 51, "che_221201_Fmth", 35, ["hall:tirate"]], + ["51·독황상제", 78, 16, 90, "che_event_귀병", [62349, 4576, 9006, 554760, 62400], 1, "ae0dba3d.jpg?=20221201", 51, "che_221201_Fmth", 37, ["hall:betrate", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:occupied"]], + ["51·소용돌이", 86, 81, 15, "che_event_무쌍", [162069, 77308, 13919, 43582, 111235], 1, "1e3418b3.webp?=20221201", 51, "che_221201_Fmth", 50, ["hall:dex2", "hall:dex5"]], + ["51·퍄퍄", 93, 75, 16, "che_event_필살", [486328, 91963, 29309, 87969, 22572], 0, "default.jpg", 51, "che_221201_Fmth", 57, ["hall:dex1", "hall:dex2", "hall:killcrew_person"]], + ["51·카류", 76, 92, 16, "che_event_척사", [11459, 6600, 267394, 68199, 18012], 1, "147e2e39.png?=20221201", 51, "che_221201_Fmth", 58, ["hall:dex3", "hall:tsrate"]], + ["51·유카", 76, 16, 92, "che_event_신산", [25671, 52776, 44570, 520905, 39964], 0, "default.jpg", 51, "che_221201_Fmth", 60, ["hall:dex3", "hall:dex4"]], + ["51·tqtt", 78, 15, 92, "che_event_필살", [21442, 27043, 20298, 450153, 23985], 0, "default.jpg", 51, "che_221201_Fmth", 61, ["hall:tirate"]], + ["51·くま", 78, 15, 91, "che_event_징병", [27236, 42312, 22504, 528444, 55891], 1, "770f53.jpg?=20190718", 51, "che_221201_Fmth", 68, ["hall:dex4", "hall:killnum", "hall:warnum"]], + ["51·멍멍", 15, 91, 78, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "883b4237.png?=20221201", 51, "che_221201_Fmth", 69, ["hall:dedication", "hall:tsrate", "hall:ttrate"]], + ["51·바이돌", 76, 15, 93, "che_event_집중", [35801, 22603, 27839, 259662, 25911], 0, "default.jpg", 51, "che_221201_Fmth", 70, ["hall:betrate"]], + ["51·월성대군", 77, 91, 16, "che_event_저격", [16829, 269748, 4352, 28047, 40325], 0, "default.jpg", 51, "che_221201_Fmth", 75, ["hall:dex2", "hall:tsrate"]], + ["51·후랴", 74, 15, 93, "che_event_척사", [11089, 26720, 807, 185393, 39247], 0, "default.jpg", 51, "che_221201_Fmth", 76, ["hall:dedication"]], + ["51·와일드플라워", 98, 70, 15, "che_event_저격", [37935, 27417, 20212, 35528, 346902], 0, "default.jpg", 51, "che_221201_Fmth", 77, ["hall:dex5", "hall:killrate", "hall:tlrate"]], + ["51·독황", 96, 71, 15, "che_event_필살", [40730, 34970, 13472, 76148, 693088], 1, "011b2ab4.png?=20221211", 51, "che_221201_Fmth", 78, ["hall:betgold", "hall:betwin", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["51·강유", 75, 95, 15, "che_event_무쌍", [596460, 17690, 26297, 48706, 22690], 1, "5e9af240.png?=20221201", 51, "che_221201_Fmth", 79, ["chief:12", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["51·NK", 74, 15, 95, "che_event_반계", [42546, 18606, 8110, 502740, 57873], 1, "d48fe93a.jpg?=20221209", 51, "che_221201_Fmth", 80, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience"]], + ["51·월향", 73, 15, 94, "che_event_집중", [25089, 10565, 17754, 461543, 24022], 1, "b832f05e.jpg?=20221202", 51, "che_221201_Fmth", 81, ["chief:5", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["51·7성구", 100, 71, 15, "che_event_척사", [70766, 51783, 65791, 110893, 806670], 1, "08b43652.jpg?=20221129", 51, "che_221201_Fmth", 82, ["hall:dex3", "hall:dex5", "hall:experience", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["51·호나", 76, 90, 16, "che_event_저격", [1335, 17575, 16219, 30491, 276407], 0, "default.jpg", 51, "che_221201_Fmth", 83, ["hall:betrate", "hall:dex5"]], + ["51·임사영", 74, 95, 15, "che_event_무쌍", [396296, 19946, 26543, 39765, 37668], 1, "99458b9f.jpg?=20221104", 51, "che_221201_Fmth", 84, ["hall:betrate", "hall:betwin", "hall:dex1", "hall:occupied", "hall:tsrate"]], + ["51·그걸다먹냐~", 76, 91, 16, "che_event_척사", [784914, 45265, 37665, 71787, 42920], 1, "ff019218.jpg?=20221201", 51, "che_221201_Fmth", 85, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["51·카와이세이야", 91, 76, 15, "che_event_위압", [44323, 441651, 10922, 70913, 26492], 1, "618ef9e2.jpg?=20221201", 51, "che_221201_Fmth", 86, ["hall:dex2"]], + ["51·삼모안식년", 76, 91, 16, "che_event_필살", [51445, 28669, 282477, 35265, 41576], 1, "448f9d33.png?=20221201", 51, "che_221201_Fmth", 87, ["hall:dex3", "hall:tsrate"]], + ["51·초승달", 75, 16, 94, "che_event_집중", [15821, 14497, 23130, 466533, 41794], 0, "default.jpg", 51, "che_221201_Fmth", 88, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["51·SARS", 92, 76, 16, "che_event_저격", [69042, 823897, 5019, 115061, 36192], 1, "b84944.jpg?=20180829", 51, "che_221201_Fmth", 89, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["51·료우기시키", 75, 15, 94, "che_event_신산", [15058, 19115, 8760, 200085, 18463], 1, "72a190e.jpg?=20220109", 51, "che_221201_Fmth", 90, ["hall:ttrate"]], + ["51·대교", 87, 15, 82, "che_event_집중", [10292, 7846, 8831, 282029, 44232], 1, "9f0e6dcc.jpg?=20220808", 51, "che_221201_Fmth", 91, ["hall:dedication", "hall:ttrate"]], + ["51·간지밍이", 77, 15, 92, "che_event_신중", [11781, 28931, 8097, 267073, 18860], 1, "41b12b95.png?=20221102", 51, "che_221201_Fmth", 92, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["51·사스케", 75, 15, 94, "che_event_집중", [39004, 9593, 14431, 428930, 40791], 1, "bb31c034.jpg?=20221125", 51, "che_221201_Fmth", 93, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:experience", "hall:occupied", "hall:tirate"]], + ["51·강有", 77, 15, 93, "che_event_의술", [41001, 39801, 12381, 458195, 28491], 1, "e633c12c.jpg?=20221206", 51, "che_221201_Fmth", 94, ["hall:tirate"]], + ["51·4성구", 76, 15, 92, "che_event_필살", [37762, 24884, 15754, 450130, 40668], 1, "5e5b5d13.jpg?=20221201", 51, "che_221201_Fmth", 95, ["chief:7", "hall:occupied"]], + ["51·구찬성", 76, 90, 15, "che_event_징병", [166460, 834, 466, 33723, 9656], 1, "557e3202.jpg?=20221201", 51, "che_221201_Fmth", 96, ["hall:tsrate", "hall:ttrate"]], + ["51·쇼쿠호미사키", 79, 89, 15, "che_event_척사", [583081, 17937, 14491, 63496, 28393], 1, "4856449d.jpg?=20221130", 51, "che_221201_Fmth", 97, ["hall:dex1", "hall:warnum"]], + ["51·진도준", 98, 70, 15, "che_event_징병", [49242, 31370, 30928, 75808, 498124], 1, "e1b87876.jpg?=20221130", 51, "che_221201_Fmth", 99, ["chief:11", "hall:betgold", "hall:betwingold", "hall:dex5", "hall:killrate", "hall:tlrate"]], + ["51·장수명", 13, 68, 75, "che_event_의술", [0, 0, 0, 0, 0], 1, "451bd74f.jpg?=20221218", 51, "che_221201_Fmth", 100, ["hall:dedication", "hall:ttrate"]], + ["51·100", 85, 83, 16, "che_event_필살", [203015, 65328, 12544, 35612, 27709], 0, "default.jpg", 51, "che_221201_Fmth", 101, ["hall:betgold", "hall:betwingold", "hall:firenum"]], + ["51·파이", 79, 87, 15, "che_event_필살", [49281, 7634, 373233, 47749, 44435], 1, "4583d988.jpg?=20221109", 51, "che_221201_Fmth", 102, ["hall:dex3"]], + ["51·21호", 92, 77, 15, "che_event_의술", [546225, 7423, 8577, 83715, 35545], 1, "e6ae27a0.jpg?=20221103", 51, "che_221201_Fmth", 103, ["hall:dex1", "hall:tlrate"]], + ["51·독구", 67, 14, 77, "che_event_신산", [19335, 7096, 15143, 356629, 25077], 1, "106bc0e4.png?=20221125", 51, "che_221201_Fmth", 105, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:warnum"]], + ["51·초선", 77, 15, 90, "che_event_신중", [28804, 29005, 15130, 502721, 23711], 0, "default.jpg", 51, "che_221201_Fmth", 106, ["hall:dex4"]], + ["51·풀문", 73, 15, 96, "che_event_신중", [14840, 5936, 12198, 156197, 11261], 1, "5a2c9000.jpg?=20221201", 51, "che_221201_Fmth", 107, ["hall:dedication", "hall:tirate"]], + ["51·이누가미코로네", 78, 15, 92, "che_event_집중", [46541, 31997, 9167, 538671, 30782], 1, "c0779da0.jpg?=20221201", 51, "che_221201_Fmth", 108, ["hall:dex4", "hall:tirate"]], + ["51·산책중", 77, 16, 91, "che_event_필살", [34652, 25924, 2094, 488395, 31683], 0, "default.jpg", 51, "che_221201_Fmth", 110, ["hall:dex4"]], + ["51·리안", 81, 87, 15, "che_event_무쌍", [29061, 29649, 429205, 39116, 19121], 1, "db0cb7a.jpg?=20190719", 51, "che_221201_Fmth", 112, ["hall:dex3", "hall:ttrate"]], + ["51·마법소년", 86, 83, 15, "che_event_격노", [725793, 6756, 14565, 100171, 28119], 1, "ae83730b.jpg?=20221219", 51, "che_221201_Fmth", 116, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum"]], + ["51·키리코", 76, 17, 91, "che_event_필살", [10141, 17282, 6376, 263180, 6068], 1, "a53dca28.jpg?=20221129", 51, "che_221201_Fmth", 118, ["hall:ttrate"]], + ["51·블랙어니언와퍼", 96, 75, 15, "che_event_위압", [61197, 651146, 1387, 56937, 34486], 1, "dc53c7c8.png?=20221201", 51, "che_221201_Fmth", 120, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["51·2성구", 16, 92, 74, "che_event_신산", [0, 0, 0, 0, 0], 1, "133134ac.png?=20221130", 51, "che_221201_Fmth", 122, ["hall:firenum", "hall:tsrate"]], + ["51·야근왕", 92, 75, 16, "che_event_필살", [44284, 341803, 10262, 48004, 25593], 0, "default.jpg", 51, "che_221201_Fmth", 123, ["hall:dex2"]], + ["51·템먹튀하야", 76, 15, 93, "che_event_저격", [54438, 7106, 1180, 383113, 28085], 0, "default.jpg", 51, "che_221201_Fmth", 205, ["hall:firenum", "hall:tirate"]], + ["51·사하드", 80, 15, 90, "che_event_집중", [28585, 27605, 34029, 475106, 34970], 1, "31f10b32.jpg?=20220717", 51, "che_221201_Fmth", 214, ["hall:dex4", "hall:firenum", "hall:winrate"]], + ["51·독무장", 95, 71, 16, "che_event_징병", [165419, 49573, 31151, 106524, 355756], 1, "d5b2c4c6.jpg?=20220901", 51, "che_221201_Fmth", 245, ["hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["51·득점왕모라타", 81, 86, 15, "che_event_돌격", [19911, 336032, 1465, 57646, 5961], 1, "20913c88.png?=20221204", 51, "che_221201_Fmth", 250, ["hall:dex2", "hall:ttrate"]], + ["51·돌아온너구리", 86, 83, 16, "che_event_돌격", [60011, 17656, 39177, 104736, 524981], 1, "79dbce5.jpg?=20210918", 51, "che_221201_Fmth", 268, ["chief:8", "hall:dex5", "hall:winrate"]], + ["51·Bianchi", 77, 87, 15, "che_event_필살", [14032, 17829, 355824, 40676, 23174], 0, "default.jpg", 51, "che_221201_Fmth", 392, ["hall:dex3"]], + ["52·골든리트리버", 88, 60, 13, "che_event_무쌍", [69834, 17705, 10475, 71962, 681372], 1, "40bbf68e.jpg?=20221229", 52, "che_221229_iTyB", 7, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["52·Mella", 76, 97, 15, "che_event_필살", [49799, 917918, 18973, 113550, 68645], 1, "f86f0436.jpg?=20221230", 52, "che_221229_iTyB", 12, ["chief:6", "hall:betrate", "hall:dex2", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["52·륜", 96, 15, 76, "che_event_척사", [64760, 38848, 14533, 625024, 68688], 1, "69880da3.png?=20230109", 52, "che_221229_iTyB", 13, ["hall:tlrate"]], + ["52·굴먹는고양이", 93, 74, 15, "che_event_척사", [30101, 54062, 541223, 70887, 91982], 0, "default.jpg", 52, "che_221229_iTyB", 14, ["chief:10", "hall:betrate", "hall:betwingold", "hall:dex3"]], + ["52·Chuck", 67, 78, 13, "che_event_척사", [37124, 18057, 413529, 46612, 32835], 1, "7cb75480.png?=20221202", 52, "che_221229_iTyB", 23, ["hall:dex3", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["52·123", 95, 76, 15, "che_event_필살", [103696, 639931, 28017, 95110, 104480], 1, "189bef26.png?=20230118", 52, "che_221229_iTyB", 24, ["hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["52·민트토끼", 13, 65, 78, "che_event_신산", [0, 0, 1535, 0, 675], 1, "1223e7e9.jpg?=20230114", 52, "che_221229_iTyB", 26, ["hall:betrate", "hall:dedication", "hall:firenum"]], + ["52·Hide_D", 79, 15, 89, "che_event_신산", [65765, 74152, 14643, 460120, 45390], 1, "f2838dce.png?=20221201", 52, "che_221229_iTyB", 28, ["hall:dex2"]], + ["52·키류 카즈마", 81, 15, 93, "che_event_신중", [77110, 27028, 14337, 893359, 29135], 1, "baae4e33.jpg?=20230108", 52, "che_221229_iTyB", 29, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["52·200", 95, 75, 15, "che_event_척사", [88288, 70718, 26604, 110861, 891423], 0, "default.jpg", 52, "che_221229_iTyB", 33, ["hall:dex5", "hall:warnum"]], + ["52·초선", 82, 15, 90, "che_event_신산", [47079, 62028, 20229, 773123, 39980], 1, "b24730b1.jpg?=20230112", 52, "che_221229_iTyB", 35, ["hall:dex4"]], + ["52·호나", 92, 78, 15, "che_event_징병", [598466, 25264, 124089, 80774, 138606], 0, "default.jpg", 52, "che_221229_iTyB", 36, ["hall:betrate", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["52·바이돌", 78, 15, 92, "che_event_신중", [45693, 29569, 11410, 416582, 89857], 0, "default.jpg", 52, "che_221229_iTyB", 40, ["hall:betrate", "hall:ttrate"]], + ["52·스크루지", 77, 97, 15, "che_event_척사", [36147, 577030, 4530, 23690, 9120], 1, "944f91de.jpg?=20221229", 52, "che_221229_iTyB", 41, ["hall:dex2", "hall:firenum", "hall:tsrate"]], + ["52·무작위왕", 66, 13, 81, "che_event_환술", [26265, 19010, 3177, 324427, 10459], 0, "default.jpg", 52, "che_221229_iTyB", 42, ["hall:tirate"]], + ["52·컴퓨터", 92, 78, 15, "che_event_격노", [74368, 31255, 405516, 102311, 71981], 0, "default.jpg", 52, "che_221229_iTyB", 44, ["hall:dex3"]], + ["52·갈근", 90, 81, 15, "che_event_무쌍", [765611, 21804, 26249, 77840, 95624], 0, "default.jpg", 52, "che_221229_iTyB", 47, ["hall:betwin", "hall:dex1", "hall:experience", "hall:occupied"]], + ["52·아냐", 77, 15, 94, "che_event_환술", [87632, 20144, 9162, 491436, 34817], 1, "f6ee915a.webp?=20230106", 52, "che_221229_iTyB", 48, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:firenum"]], + ["52·감흥", 77, 15, 94, "che_event_필살", [30605, 24279, 21545, 698051, 55331], 1, "11e7fe14.jpg?=20230114", 52, "che_221229_iTyB", 50, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:ttrate"]], + ["52·마요이", 66, 13, 82, "che_event_집중", [32263, 17766, 9861, 443564, 21529], 1, "2ffe4a7d.png?=20221201", 52, "che_221229_iTyB", 52, ["hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["52·임사영", 88, 64, 13, "che_event_필살", [77044, 12587, 50834, 55156, 984120], 1, "99458b9f.jpg?=20221104", 52, "che_221229_iTyB", 55, ["hall:betwin", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["52·SARS", 80, 89, 16, "che_event_위압", [749945, 38574, 29532, 171606, 221004], 1, "b84944.jpg?=20180829", 52, "che_221229_iTyB", 59, ["hall:betrate", "hall:dex1", "hall:dex5", "hall:occupied"]], + ["52·쪼꼬미", 76, 15, 95, "che_event_집중", [58918, 26031, 33232, 585703, 83540], 1, "308472b8.jpg?=20230105", 52, "che_221229_iTyB", 60, ["hall:betrate", "hall:tirate"]], + ["52·바르바로스", 15, 73, 99, "che_event_의술", [0, 0, 0, 0, 0], 1, "6e14bc28.png?=20221229", 52, "che_221229_iTyB", 61, ["hall:dedication", "hall:experience", "hall:ttrate"]], + ["52·카이스트", 82, 15, 91, "che_event_환술", [47360, 41779, 5621, 601656, 31110], 1, "e7e27cd6.jpg?=20221125", 52, "che_221229_iTyB", 64, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["52·불패", 80, 92, 15, "che_event_필살", [723496, 10316, 53978, 55587, 59988], 1, "f84e4789.jpg?=20221229", 52, "che_221229_iTyB", 66, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1"]], + ["52·제갈여포", 77, 15, 94, "che_event_필살", [61302, 27330, 31528, 517590, 100621], 1, "6e163e9b.jpg?=20221227", 52, "che_221229_iTyB", 69, ["hall:betrate", "hall:tirate"]], + ["52·tqtt", 79, 92, 16, "che_event_척사", [893019, 15615, 26791, 67899, 46154], 0, "default.jpg", 52, "che_221229_iTyB", 71, ["hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["52·시진핑핑이", 77, 92, 15, "che_event_척사", [89147, 392597, 10144, 80808, 82673], 0, "default.jpg", 52, "che_221229_iTyB", 72, ["hall:dex2", "hall:tsrate"]], + ["52·제갈초선", 76, 15, 95, "che_event_집중", [42395, 20662, 30608, 499527, 83925], 1, "c3a17b46.jpg?=20221229", 52, "che_221229_iTyB", 74, ["chief:7", "hall:tirate"]], + ["52·로아온너구리", 15, 71, 99, "che_event_필살", [0, 0, 0, 0, 0], 1, "79dbce5.jpg?=20210918", 52, "che_221229_iTyB", 75, ["hall:experience", "hall:tirate"]], + ["52·바나낫", 78, 91, 16, "che_event_견고", [649517, 23917, 42302, 102528, 87870], 1, "dd91a734.gif?=20221226", 52, "che_221229_iTyB", 77, ["chief:11", "hall:dedication"]], + ["52·그걸다먹냐~", 82, 92, 16, "che_event_견고", [1727098, 19009, 34430, 43325, 51842], 1, "ff019218.jpg?=20221201", 52, "che_221229_iTyB", 78, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:ttrate", "hall:warnum"]], + ["52·월향", 69, 13, 79, "che_event_필살", [27612, 25008, 10116, 582299, 35904], 1, "0b45cdf8.webp?=20230101", 52, "che_221229_iTyB", 79, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["52·독구", 76, 15, 96, "che_event_필살", [49905, 32700, 20887, 758084, 110257], 1, "106bc0e4.png?=20221125", 52, "che_221229_iTyB", 80, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["52·카류", 95, 76, 15, "che_event_무쌍", [84773, 766512, 18854, 68923, 47069], 1, "3110b45f.jpg?=20221229", 52, "che_221229_iTyB", 81, ["hall:dex2", "hall:tlrate"]], + ["52·정장이좋아", 98, 74, 15, "che_event_위압", [82285, 458059, 2638, 79615, 15523], 0, "default.jpg", 52, "che_221229_iTyB", 82, ["hall:dex2", "hall:tlrate"]], + ["52·평민킬러", 76, 95, 15, "che_event_필살", [683597, 19274, 33776, 74003, 79150], 1, "b0d4a54f.jpg?=20221229", 52, "che_221229_iTyB", 83, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["52·23턴휴식예정", 76, 95, 15, "che_event_무쌍", [86181, 432504, 5403, 78040, 66335], 1, "22794a52.jpg?=20230110", 52, "che_221229_iTyB", 84, ["hall:dex2", "hall:tsrate"]], + ["52·라스트댄스", 77, 98, 15, "che_event_필살", [1694954, 20059, 25629, 53437, 35619], 0, "default.jpg", 52, "che_221229_iTyB", 85, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["52·구몬선생", 79, 91, 15, "che_event_필살", [567974, 24871, 33979, 87612, 90552], 1, "442ae972.jpg?=20221229", 52, "che_221229_iTyB", 86, ["hall:ttrate"]], + ["52·사스케", 80, 90, 15, "che_event_의술", [88864, 592453, 4787, 59198, 71677], 1, "bb31c034.jpg?=20221125", 52, "che_221229_iTyB", 87, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:firenum"]], + ["52·크렌스", 78, 91, 15, "che_event_돌격", [60326, 33225, 648039, 145324, 75777], 1, "448f9d33.png?=20221201", 52, "che_221229_iTyB", 88, ["hall:dex3", "hall:winrate"]], + ["52·비상식량", 15, 74, 96, "che_event_징병", [0, 0, 0, 0, 0], 1, "3031b888.gif?=20221229", 52, "che_221229_iTyB", 89, ["hall:dedication", "hall:tirate"]], + ["52·올리비아", 77, 15, 95, "che_event_징병", [27302, 21059, 38343, 1386215, 25803], 1, "2c5f8db3.jpg?=20221229", 52, "che_221229_iTyB", 91, ["hall:betgold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:tirate", "hall:warnum"]], + ["52·간지밍이", 77, 16, 91, "che_event_집중", [45836, 24003, 22678, 593884, 58166], 1, "41b12b95.png?=20221102", 52, "che_221229_iTyB", 92, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:firenum"]], + ["52·파초선", 79, 92, 16, "che_event_필살", [1262684, 32987, 25211, 108498, 47304], 1, "27a492db.jpg?=20221231", 52, "che_221229_iTyB", 93, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["52·개미호랑이", 75, 15, 95, "che_event_신중", [83243, 19611, 9344, 473664, 48080], 1, "817c8a88.jpg?=20221007", 52, "che_221229_iTyB", 96, ["hall:dedication"]], + ["52·라콘타", 98, 72, 15, "che_event_필살", [50168, 48402, 515144, 118124, 86574], 1, "ba444769.png?=20230111", 52, "che_221229_iTyB", 97, ["hall:dex3", "hall:tlrate"]], + ["52·가후", 81, 15, 90, "che_event_집중", [35721, 15376, 15421, 539581, 84783], 0, "default.jpg", 52, "che_221229_iTyB", 99, ["hall:ttrate"]], + ["52·장원영", 96, 71, 15, "che_event_징병", [27065, 6134, 9945, 36510, 733467], 1, "cd51d961.jpg?=20221229", 52, "che_221229_iTyB", 101, ["chief:8", "hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["52·마왕", 80, 91, 16, "che_event_필살", [61021, 63317, 609928, 73282, 53203], 1, "f39217aa.gif?=20220916", 52, "che_221229_iTyB", 106, ["hall:dex3", "hall:tsrate"]], + ["52·온달", 81, 16, 90, "che_event_집중", [90006, 43549, 22588, 933010, 56051], 0, "default.jpg", 52, "che_221229_iTyB", 109, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["52·겨울홍차", 15, 76, 92, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 52, "che_221229_iTyB", 214, ["hall:dedication", "hall:firenum"]], + ["52·료우기시키", 78, 15, 93, "che_event_집중", [62714, 22829, 40223, 694503, 61295], 1, "72a190e.jpg?=20220109", 52, "che_221229_iTyB", 220, ["hall:dex4"]], + ["52·리안", 78, 92, 15, "che_event_필살", [272174, 51729, 237517, 145363, 113254], 1, "db0cb7a.jpg?=20190719", 52, "che_221229_iTyB", 222, ["hall:dex3", "hall:dex5", "hall:tsrate"]], + ["52·슈퍼소닉", 78, 15, 95, "che_event_집중", [54633, 55449, 10568, 738317, 51786], 0, "default.jpg", 52, "che_221229_iTyB", 225, ["hall:dex4", "hall:winrate"]], + ["52·콘", 90, 82, 16, "che_event_무쌍", [1006387, 48342, 16882, 82144, 65627], 1, "60e808e2.jpg?=20230121", 52, "che_221229_iTyB", 226, ["hall:dex1", "hall:killcrew", "hall:killcrew_person"]], + ["52·아마자라시", 78, 91, 15, "che_event_무쌍", [359197, 28081, 7867, 136664, 66681], 1, "4bb484b9.jpg?=20221229", 52, "che_221229_iTyB", 228, ["hall:tsrate"]], + ["52·자축인묘", 95, 16, 74, "che_event_필살", [64806, 21533, 4126, 115880, 210556], 1, "057d5c72.webp?=20221230", 52, "che_221229_iTyB", 232, ["hall:dex5", "hall:firenum"]], + ["52·야로나", 78, 91, 15, "che_event_위압", [25855, 15908, 410788, 113774, 48654], 0, "default.jpg", 52, "che_221229_iTyB", 261, ["hall:dex3"]], + ["52·50040", 88, 76, 15, "che_event_돌격", [653111, 30750, 21125, 173840, 65708], 0, "default.jpg", 52, "che_221229_iTyB", 262, ["hall:dex1"]], + ["52·くま", 76, 16, 92, "che_event_척사", [44389, 17142, 23184, 427978, 104985], 1, "770f53.jpg?=20190718", 52, "che_221229_iTyB", 273, ["chief:5"]], + ["52·대교", 95, 15, 74, "che_event_징병", [18478, 11684, 19979, 86779, 643393], 1, "9f0e6dcc.jpg?=20220808", 52, "che_221229_iTyB", 274, ["hall:dex5", "hall:occupied", "hall:tlrate"]], + ["52·껄룩", 80, 90, 15, "che_event_위압", [28962, 166889, 2779, 13465, 658], 0, "default.jpg", 52, "che_221229_iTyB", 275, ["hall:dex2"]], + ["52·NK", 16, 95, 74, "che_event_필살", [0, 0, 0, 0, 0], 1, "d48fe93a.jpg?=20221209", 52, "che_221229_iTyB", 284, ["hall:ttrate"]], + ["52·독급함", 15, 74, 93, "che_event_필살", [0, 0, 0, 0, 0], 1, "d5b2c4c6.jpg?=20220901", 52, "che_221229_iTyB", 453, ["hall:dedication", "hall:tirate"]], + ["52·기", 16, 72, 91, "che_event_저격", [0, 0, 0, 0, 0], 1, "3a86f19.gif?=20220419", 52, "che_221229_iTyB", 471, ["hall:firenum"]], + ["53·사스케", 64, 84, 13, "che_event_돌격", [32787, 33906, 641827, 30674, 15519], 1, "bb31c034.jpg?=20221125", 53, "che_230126_2I4P", 3, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["53·카류", 104, 70, 15, "che_event_돌격", [93715, 50129, 29987, 170203, 1045473], 1, "8bc994bd.jpg?=20230122", 53, "che_230126_2I4P", 4, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["53·평민킬러", 96, 81, 15, "che_event_척사", [58011, 1809898, 40397, 120221, 65420], 1, "b0d4a54f.jpg?=20221229", 53, "che_230126_2I4P", 6, ["hall:betwin", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["53·물냉면", 93, 77, 15, "che_event_위압", [30516, 39529, 389448, 51730, 32689], 1, "3741d475.png?=20230124", 53, "che_230126_2I4P", 8, ["chief:6", "hall:betrate", "hall:dex3"]], + ["53·크렌스", 85, 60, 13, "che_event_공성", [1501, 13596, 10203, 19489, 487904], 1, "448f9d33.png?=20221201", 53, "che_230126_2I4P", 11, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["53·SARS", 69, 13, 78, "che_event_신산", [10991, 15008, 12319, 313885, 12434], 1, "b84944.jpg?=20180829", 53, "che_230126_2I4P", 13, ["hall:dex4"]], + ["53·뤼에르", 75, 96, 15, "che_event_견고", [60702, 440329, 16254, 31671, 21490], 1, "a27bb4f3.png?=20230126", 53, "che_230126_2I4P", 15, ["hall:dex2", "hall:firenum", "hall:tsrate", "hall:winrate"]], + ["53·장원영", 100, 70, 15, "che_event_공성", [1476, 5951, 9271, 26933, 1595218], 1, "cd51d961.jpg?=20221229", 53, "che_230126_2I4P", 18, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["53·복분자막걸리", 104, 70, 15, "che_event_돌격", [76230, 45531, 34482, 150241, 1049733], 1, "144c38ab.png?=20230126", 53, "che_230126_2I4P", 19, ["chief:8", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["53·키리코", 64, 13, 82, "che_event_집중", [10785, 23010, 16915, 246852, 17779], 1, "283f3a39.jpg?=20230129", 53, "che_230126_2I4P", 21, ["hall:tirate", "hall:ttrate"]], + ["53·와일드플라워", 94, 74, 15, "che_event_견고", [60387, 771551, 18330, 89244, 34314], 0, "default.jpg", 53, "che_230126_2I4P", 28, ["hall:dex2", "hall:warnum"]], + ["53·월향", 91, 76, 18, "che_event_필살", [195414, 6261, 42121, 10796, 11809], 1, "0b45cdf8.webp?=20230101", 53, "che_230126_2I4P", 29, ["hall:dex1", "hall:firenum", "hall:tlrate"]], + ["53·렌스옹 근위병", 64, 82, 13, "che_event_돌격", [373176, 38642, 34585, 73235, 21374], 0, "default.jpg", 53, "che_230126_2I4P", 33, ["hall:betwin", "hall:dex1", "hall:experience", "hall:killnum", "hall:tsrate", "hall:winrate"]], + ["53·북오더", 93, 15, 77, "che_event_필살", [23528, 85398, 84546, 115228, 503039], 1, "f39217aa.gif?=20220916", 53, "che_230126_2I4P", 34, ["hall:dex5", "hall:occupied", "hall:tlrate"]], + ["53·정일품", 77, 89, 16, "che_event_위압", [21242, 461728, 11094, 59905, 14210], 1, "b3470750.jpg?=20230205", 53, "che_230126_2I4P", 35, ["hall:betrate", "hall:dex2"]], + ["53·이서", 73, 15, 97, "che_event_신중", [21546, 26000, 9860, 376645, 51447], 1, "78bf16fd.jpg?=20230126", 53, "che_230126_2I4P", 38, ["chief:5", "hall:dedication", "hall:dex5", "hall:experience", "hall:tirate", "hall:ttrate"]], + ["53·에드몬드", 87, 83, 15, "che_event_위압", [663524, 30440, 63189, 69087, 33699], 1, "226617c7.jpg?=20230127", 53, "che_230126_2I4P", 40, ["hall:dex1", "hall:warnum"]], + ["53·리안", 89, 79, 16, "che_event_저격", [24624, 19312, 424075, 37472, 11726], 1, "db0cb7a.jpg?=20190719", 53, "che_230126_2I4P", 42, ["hall:dex3"]], + ["53·라콘타", 73, 97, 15, "che_event_척사", [24930, 33348, 332111, 48185, 19782], 1, "6c49660d.png?=20230127", 53, "che_230126_2I4P", 43, ["hall:tsrate"]], + ["53·안유진", 74, 96, 15, "che_event_견고", [374992, 14140, 23599, 42389, 18764], 1, "c195cb5d.jpg?=20230126", 53, "che_230126_2I4P", 44, ["hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["53·나나미", 76, 94, 15, "che_event_견고", [22080, 25775, 423943, 53647, 44288], 1, "812786e4.jpg?=20230126", 53, "che_230126_2I4P", 46, ["hall:dex3", "hall:tsrate"]], + ["53·머털도사", 97, 74, 15, "che_event_필살", [77862, 55043, 753840, 196537, 36129], 1, "5dff87e7.jpg?=20230126", 53, "che_230126_2I4P", 47, ["hall:betwin", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["53·5초만함", 78, 15, 92, "che_event_집중", [14726, 35911, 15066, 563547, 20202], 0, "default.jpg", 53, "che_230126_2I4P", 48, ["hall:dex4"]], + ["53·카이스트", 78, 16, 92, "che_event_환술", [20957, 46292, 10667, 453954, 30736], 1, "e7e27cd6.jpg?=20221125", 53, "che_230126_2I4P", 49, ["hall:betwin", "hall:firenum"]], + ["53·김나영", 81, 91, 15, "che_event_저격", [51617, 627858, 17321, 84740, 19226], 1, "12f75f31.jpg?=20230126", 53, "che_230126_2I4P", 50, ["hall:dex2", "hall:firenum", "hall:killnum", "hall:winrate"]], + ["53·복숭아좋아", 64, 13, 82, "che_event_집중", [5146, 6682, 18310, 247815, 7308], 1, "57e4a39.jpg?=20190620", 53, "che_230126_2I4P", 58, ["hall:tirate", "hall:winrate"]], + ["53·네시", 78, 92, 15, "che_event_척사", [42766, 609090, 16192, 63322, 44491], 0, "default.jpg", 53, "che_230126_2I4P", 59, ["hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["53·양념소갈비", 74, 15, 96, "che_event_필살", [26587, 23335, 21680, 518301, 36307], 1, "6b6e744b.jpg?=20230126", 53, "che_230126_2I4P", 62, ["chief:11", "hall:dedication", "hall:experience", "hall:killrate_person", "hall:tirate"]], + ["53·득구", 96, 73, 15, "che_event_척사", [611843, 19483, 79080, 109517, 17852], 1, "30e42c39.png?=20230126", 53, "che_230126_2I4P", 63, ["hall:dex1"]], + ["53·호나", 79, 15, 92, "che_event_필살", [20877, 29563, 14354, 582231, 47545], 0, "default.jpg", 53, "che_230126_2I4P", 66, ["hall:dex4"]], + ["53·200", 91, 80, 15, "che_event_격노", [41229, 516241, 77558, 61832, 17637], 0, "default.jpg", 53, "che_230126_2I4P", 68, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:ttrate"]], + ["53·교수님", 78, 16, 93, "che_event_집중", [27435, 19555, 53161, 849572, 16780], 1, "3bc0705a.png?=20230131", 53, "che_230126_2I4P", 69, ["hall:betrate", "hall:dex4", "hall:killcrew_person", "hall:killnum"]], + ["53·박회장", 77, 91, 15, "che_event_무쌍", [14531, 31391, 406604, 48716, 50651], 1, "ec6fe86b.png?=20230126", 53, "che_230126_2I4P", 71, ["hall:dex3", "hall:dex5"]], + ["53·파이", 78, 15, 91, "che_event_필살", [18396, 27824, 29487, 786596, 28089], 1, "420cb96e.png?=20230129", 53, "che_230126_2I4P", 72, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum"]], + ["53·발터모델", 80, 92, 15, "che_event_무쌍", [28953, 41139, 1139220, 68307, 46160], 0, "default.jpg", 53, "che_230126_2I4P", 73, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["53·청하", 15, 74, 95, "che_event_의술", [0, 0, 0, 0, 0], 1, "693eb11d.jpg?=20230125", 53, "che_230126_2I4P", 74, ["hall:betrate", "hall:dedication", "hall:experience"]], + ["53·개미호랑이", 82, 15, 89, "che_event_집중", [28193, 41867, 28038, 607666, 51584], 1, "817c8a88.jpg?=20221007", 53, "che_230126_2I4P", 75, ["hall:dex4", "hall:dex5", "hall:ttrate"]], + ["53·돼지갈비", 19, 72, 91, "che_event_징병", [1184, 6230, 48473, 13147, 17663], 1, "296ff940.jpg?=20230126", 53, "che_230126_2I4P", 77, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication"]], + ["53·NK", 92, 78, 15, "che_event_필살", [44666, 50309, 820786, 89289, 48556], 1, "d48fe93a.jpg?=20221209", 53, "che_230126_2I4P", 78, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["53·간지밍이", 74, 15, 96, "che_event_필살", [7731, 14567, 6491, 383628, 39726], 1, "41b12b95.png?=20221102", 53, "che_230126_2I4P", 79, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication"]], + ["53·독구", 75, 15, 96, "che_event_필살", [14923, 27679, 37459, 558471, 33135], 1, "106bc0e4.png?=20221125", 53, "che_230126_2I4P", 80, ["hall:betrate", "hall:dex4", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["53·1초장", 13, 62, 82, "che_event_의술", [0, 0, 270, 236, 0], 1, "63abb0e9.jpg?=20230126", 53, "che_230126_2I4P", 82, ["hall:dedication", "hall:tirate"]], + ["53·하야마 우미", 75, 15, 96, "che_event_필살", [5561, 28468, 57857, 596850, 35145], 1, "527169ae.jpg?=20230127", 53, "che_230126_2I4P", 83, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:occupied", "hall:tirate"]], + ["53·독구교3인자", 96, 71, 16, "che_event_의술", [37836, 28489, 111440, 67108, 588526], 0, "default.jpg", 53, "che_230126_2I4P", 84, ["hall:dex5", "hall:occupied"]], + ["53·무라사키시온", 80, 15, 88, "che_event_집중", [42628, 47906, 25550, 655047, 37851], 1, "8f1aa121.jpg?=20230126", 53, "che_230126_2I4P", 86, ["hall:dex4"]], + ["53·아이리 칸나", 79, 90, 15, "che_event_위압", [889292, 24445, 21058, 27749, 31155], 1, "89cd7e20.jpg?=20230126", 53, "che_230126_2I4P", 89, ["hall:dex1", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["53·임사영", 76, 95, 15, "che_event_필살", [86206, 35915, 374651, 37840, 17043], 1, "99458b9f.jpg?=20221104", 53, "che_230126_2I4P", 90, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["53·허니츄러스", 96, 73, 15, "che_event_필살", [388677, 18356, 71349, 60631, 13459], 1, "f2ebbf1e.png?=20230126", 53, "che_230126_2I4P", 92, ["hall:dex1", "hall:tlrate"]], + ["53·경국지색소교", 79, 90, 15, "che_event_필살", [101965, 356204, 62005, 35072, 11405], 0, "default.jpg", 53, "che_230126_2I4P", 93, ["hall:dex2", "hall:tsrate"]], + ["53·네이미", 89, 79, 15, "che_event_위압", [128891, 480958, 14906, 92268, 46261], 0, "default.jpg", 53, "che_230126_2I4P", 94, ["hall:dex2"]], + ["53·동네 이장", 82, 63, 13, "che_event_격노", [242129, 7275, 42840, 35689, 5937], 1, "78fcb540.jpg?=20230126", 53, "che_230126_2I4P", 95, ["hall:dex1", "hall:tlrate"]], + ["53·대교", 93, 75, 15, "che_event_무쌍", [15808, 87859, 680421, 207670, 32962], 1, "9f0e6dcc.jpg?=20220808", 53, "che_230126_2I4P", 101, ["hall:dex3"]], + ["53·무광", 69, 13, 75, "che_event_저격", [20066, 13106, 16125, 334417, 10740], 0, "default.jpg", 53, "che_230126_2I4P", 103, ["hall:dex4"]], + ["53·Chuck", 76, 16, 93, "che_event_반계", [11620, 82869, 10969, 427587, 26433], 1, "7cb75480.png?=20221202", 53, "che_230126_2I4P", 104, ["hall:tirate", "hall:ttrate"]], + ["53·삭턴사", 15, 73, 97, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 53, "che_230126_2I4P", 105, ["hall:tirate"]], + ["53·비상식량", 90, 79, 15, "che_event_격노", [402335, 12219, 9417, 60548, 18354], 1, "3031b888.gif?=20221229", 53, "che_230126_2I4P", 107, ["hall:dex1", "hall:occupied"]], + ["53·23학번경영학도", 92, 75, 15, "che_event_견고", [12175, 201793, 68378, 56856, 4127], 0, "default.jpg", 53, "che_230126_2I4P", 108, ["hall:dex2"]], + ["53·비빔냉면", 75, 15, 93, "che_event_집중", [1770, 37512, 6698, 257756, 13540], 1, "0b7d1199.jpg?=20230128", 53, "che_230126_2I4P", 110, ["hall:dedication"]], + ["53·외심장", 75, 16, 93, "che_event_징병", [25894, 2704, 17900, 272609, 16856], 1, "36110cd.jpg?=20180826", 53, "che_230126_2I4P", 111, ["hall:tirate"]], + ["53·Bianchi", 65, 79, 14, "che_event_돌격", [248024, 13078, 24657, 57108, 10575], 0, "default.jpg", 53, "che_230126_2I4P", 178, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["53·국04", 87, 81, 15, "che_event_돌격", [7891, 39316, 364378, 86818, 49404], 1, "36e514d2.jpg?=20230207", 53, "che_230126_2I4P", 225, ["hall:betgold"]], + ["53·Samo", 79, 15, 87, "che_event_집중", [19230, 60198, 15038, 403499, 263], 1, "25449b0.png?=20190626", 53, "che_230126_2I4P", 366, ["hall:betrate", "hall:betwingold"]], + ["53·건달", 74, 88, 15, "che_event_척사", [4728, 43378, 205878, 63450, 23561], 0, "default.jpg", 53, "che_230126_2I4P", 477, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["54·카이스트", 78, 15, 90, "che_event_신산", [44889, 12464, 11489, 409426, 23413], 1, "e7e27cd6.jpg?=20221125", 54, "che_230223_bffE", 3, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:firenum", "hall:tirate"]], + ["54·여포", 78, 15, 88, "che_event_필살", [49926, 36667, 39778, 546042, 43164], 1, "160c3e3e.jpg?=20230225", 54, "che_230223_bffE", 4, ["hall:dex4", "hall:occupied"]], + ["54·버터링딥초코", 97, 72, 15, "che_event_필살", [402068, 71984, 37868, 75228, 125486], 1, "570c2ff6.jpg?=20230224", 54, "che_230223_bffE", 8, ["hall:betwin", "hall:dex1", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate"]], + ["54·덕구", 79, 93, 15, "che_event_무쌍", [85002, 1105608, 23785, 145540, 48522], 1, "c1713ebf.jpg?=20230223", 54, "che_230223_bffE", 13, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["54·Chuck", 76, 91, 16, "che_event_저격", [551491, 13208, 33962, 58662, 48409], 1, "7cb75480.png?=20221202", 54, "che_230223_bffE", 16, ["hall:dex1", "hall:experience", "hall:occupied"]], + ["54·불패", 75, 15, 92, "che_event_필살", [23966, 24078, 27672, 521391, 46080], 1, "c6d07baa.jpg?=20230223", 54, "che_230223_bffE", 24, ["chief:5", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:occupied"]], + ["54·재선충", 76, 92, 15, "che_event_돌격", [735608, 40279, 24020, 105310, 51946], 0, "default.jpg", 54, "che_230223_bffE", 25, ["chief:8", "hall:betwin", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["54·토오노 아키하", 77, 15, 91, "che_event_필살", [8050, 6739, 17489, 341682, 5005], 1, "c909ac38.png?=20230223", 54, "che_230223_bffE", 26, ["hall:killrate_person"]], + ["54·ㅊㄹㅊㄹ", 78, 90, 15, "che_event_필살", [29107, 19572, 421350, 81142, 19863], 1, "63f1c106.png?=20230223", 54, "che_230223_bffE", 30, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["54·Mayday", 95, 73, 15, "che_event_필살", [435798, 3067, 4755, 53409, 19255], 1, "7ff7c2c9.jpg?=20230225", 54, "che_230223_bffE", 31, ["hall:dex1", "hall:tlrate"]], + ["54·내정장", 76, 15, 91, "che_event_신중", [15605, 27523, 26744, 520501, 19238], 1, "53dd108f.jpg?=20230225", 54, "che_230223_bffE", 33, ["hall:betgold"]], + ["54·김채원", 77, 89, 15, "che_event_견고", [41399, 304198, 6178, 80931, 21497], 1, "a7a529f5.jpg?=20230223", 54, "che_230223_bffE", 35, ["hall:dex2", "hall:firenum", "hall:tsrate"]], + ["54·국04", 87, 15, 77, "che_event_환술", [62748, 26309, 41697, 478996, 37957], 1, "36e514d2.jpg?=20230207", 54, "che_230223_bffE", 36, ["hall:betrate", "hall:betwingold", "hall:tlrate"]], + ["54·엔틱", 77, 15, 90, "che_event_척사", [54761, 22120, 15550, 733581, 23612], 1, "4a4bcd77.jpg?=20230223", 54, "che_230223_bffE", 37, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["54·임사영", 76, 15, 91, "che_event_집중", [30519, 37577, 15852, 517536, 39601], 1, "99458b9f.jpg?=20221104", 54, "che_230223_bffE", 38, ["hall:tirate"]], + ["54·Bianchi", 74, 91, 15, "che_event_필살", [429721, 15887, 20093, 63316, 52311], 0, "default.jpg", 54, "che_230223_bffE", 39, ["hall:dex1", "hall:tsrate"]], + ["54·헬창법사", 94, 15, 74, "che_event_신산", [42941, 5038, 24062, 493394, 47887], 1, "d906854f.png?=20230224", 54, "che_230223_bffE", 42, ["hall:tlrate", "hall:warnum"]], + ["54·바나낫", 79, 88, 16, "che_event_척사", [641112, 17414, 15524, 60668, 73441], 1, "d52c3ea5.jpg?=20230215", 54, "che_230223_bffE", 48, ["hall:dex1", "hall:dex5", "hall:killcrew", "hall:warnum"]], + ["54·나나미", 94, 75, 15, "che_event_필살", [495836, 6074, 37977, 52473, 13138], 1, "812786e4.jpg?=20230126", 54, "che_230223_bffE", 51, ["hall:dex1", "hall:firenum", "hall:killcrew_person", "hall:tlrate"]], + ["54·초선", 76, 16, 89, "che_event_필살", [37001, 30173, 15035, 522852, 42685], 1, "b24730b1.jpg?=20230112", 54, "che_230223_bffE", 56, ["hall:dex4"]], + ["54·SARS", 77, 89, 16, "che_event_척사", [26336, 327083, 1205, 94157, 132141], 1, "b84944.jpg?=20180829", 54, "che_230223_bffE", 59, ["hall:dex2", "hall:dex5", "hall:firenum", "hall:tsrate"]], + ["54·동물", 75, 16, 90, "che_event_필살", [27892, 20894, 18166, 588582, 34336], 0, "default.jpg", 54, "che_230223_bffE", 68, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["54·환승역", 93, 74, 15, "che_event_척사", [10466, 22674, 334400, 103476, 37346], 0, "default.jpg", 54, "che_230223_bffE", 69, ["hall:dex3", "hall:firenum"]], + ["54·대교", 93, 74, 15, "che_event_돌격", [43465, 23123, 390783, 155508, 29314], 1, "9f0e6dcc.jpg?=20220808", 54, "che_230223_bffE", 71, ["hall:dex3", "hall:tlrate", "hall:winrate"]], + ["54·네이미", 89, 75, 16, "che_event_돌격", [78640, 183613, 152233, 88482, 29282], 0, "default.jpg", 54, "che_230223_bffE", 74, ["hall:dex2", "hall:dex3"]], + ["54·에드몬드", 83, 15, 84, "che_event_척사", [15130, 23370, 12381, 431296, 63256], 1, "226617c7.jpg?=20230127", 54, "che_230223_bffE", 75, ["hall:dex5", "hall:ttrate"]], + ["54·제갈여포", 75, 15, 94, "che_event_의술", [21161, 5148, 21777, 557443, 29311], 1, "6e163e9b.jpg?=20221227", 54, "che_230223_bffE", 76, ["hall:betrate", "hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["54·비상식량", 89, 78, 15, "che_event_견고", [42080, 21908, 760371, 97788, 37433], 1, "3031b888.gif?=20221229", 54, "che_230223_bffE", 77, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["54·북오더", 15, 72, 92, "che_event_필살", [0, 0, 0, 1710, 218], 1, "f39217aa.gif?=20220916", 54, "che_230223_bffE", 79, ["hall:experience"]], + ["54·셀레미", 75, 16, 91, "che_event_집중", [32762, 15206, 16298, 649639, 58258], 1, "bcc7eb25.jpg?=20230131", 54, "che_230223_bffE", 80, ["chief:12", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["54·월향", 76, 15, 91, "che_event_환술", [33219, 11118, 24199, 453429, 58487], 1, "0b45cdf8.webp?=20230101", 54, "che_230223_bffE", 83, ["hall:dex5", "hall:experience", "hall:killrate"]], + ["54·홍Kill동", 90, 74, 15, "che_event_보병", [624223, 17088, 18269, 67889, 44174], 1, "13ac0db2.png?=20230223", 54, "che_230223_bffE", 85, ["chief:6", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:occupied", "hall:warnum"]], + ["54·평민킬러", 97, 70, 15, "che_event_징병", [51376, 64134, 40475, 82571, 900850], 1, "b0d4a54f.jpg?=20221229", 54, "che_230223_bffE", 86, ["chief:11", "hall:betwin", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["54·유카", 76, 90, 15, "che_event_징병", [15777, 39650, 397932, 58752, 43402], 0, "default.jpg", 54, "che_230223_bffE", 89, ["hall:betrate", "hall:dex3", "hall:occupied", "hall:tsrate"]], + ["54·독구", 75, 15, 93, "che_event_환술", [30119, 27716, 21628, 565856, 58485], 1, "17b0fe48.gif?=20230224", 54, "che_230223_bffE", 90, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["54·자동태수", 76, 87, 16, "che_event_견고", [342462, 7931, 55693, 32261, 46505], 0, "default.jpg", 54, "che_230223_bffE", 91, ["hall:dex1", "hall:dex3"]], + ["54·Aeng572", 15, 93, 71, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 54, "che_230223_bffE", 92, ["hall:firenum", "hall:tsrate"]], + ["54·300", 90, 78, 15, "che_event_척사", [15799, 176794, 52614, 64927, 186234], 0, "default.jpg", 54, "che_230223_bffE", 93, ["hall:betrate", "hall:dex2", "hall:dex5", "hall:firenum"]], + ["54·간지밍이", 91, 15, 73, "che_event_필살", [29870, 19060, 20804, 133505, 356512], 1, "41b12b95.png?=20221102", 54, "che_230223_bffE", 95, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:tlrate"]], + ["54·사스케", 18, 93, 70, "che_event_필살", [12423, 236077, 15765, 33005, 10977], 1, "bb31c034.jpg?=20221125", 54, "che_230223_bffE", 96, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["54·라콘타", 75, 15, 93, "che_event_집중", [48756, 39308, 31785, 474545, 26468], 1, "d1c5c355.png?=20230312", 54, "che_230223_bffE", 97, ["hall:tirate"]], + ["54·모라스", 77, 16, 91, "che_event_신중", [26585, 24537, 38325, 456139, 40087], 1, "fda33b70.jpg?=20230223", 54, "che_230223_bffE", 98, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:ttrate"]], + ["54·tqtt", 86, 79, 15, "che_event_필살", [430031, 25981, 41008, 84186, 20672], 0, "default.jpg", 54, "che_230223_bffE", 99, ["hall:dex1"]], + ["54·무지파이", 15, 77, 89, "che_event_저격", [0, 0, 0, 0, 0], 1, "420cb96e.png?=20230129", 54, "che_230223_bffE", 102, ["hall:betrate", "hall:dedication", "hall:ttrate"]], + ["54·키리코", 78, 88, 15, "che_event_돌격", [14996, 28237, 413200, 74530, 14235], 1, "283f3a39.jpg?=20230129", 54, "che_230223_bffE", 105, ["hall:betgold", "hall:dex3", "hall:tsrate"]], + ["54·고기방패", 89, 76, 15, "che_event_견고", [20469, 41580, 175219, 40087, 70582], 0, "default.jpg", 54, "che_230223_bffE", 110, ["hall:dex3", "hall:dex5"]], + ["54·panpenpan", 76, 15, 91, "che_event_환술", [22927, 13810, 10548, 357063, 33911], 0, "default.jpg", 54, "che_230223_bffE", 112, ["hall:tirate"]], + ["54·개미호랑이", 78, 15, 88, "che_event_집중", [36789, 31876, 6729, 546835, 49534], 1, "b0bc82cd.png?=20230226", 54, "che_230223_bffE", 119, ["hall:betrate", "hall:dex4"]], + ["54·くま", 74, 16, 90, "che_event_신중", [25698, 19903, 10473, 345071, 21896], 1, "770f53.jpg?=20190718", 54, "che_230223_bffE", 121, ["hall:firenum", "hall:tirate"]], + ["54·아바타라", 74, 15, 92, "che_event_의술", [15947, 18628, 1504, 369099, 18609], 0, "default.jpg", 54, "che_230223_bffE", 219, ["hall:tirate"]], + ["54·돌아온너구리", 75, 16, 90, "che_event_집중", [47396, 20863, 12487, 340780, 16044], 1, "79dbce5.jpg?=20210918", 54, "che_230223_bffE", 222, ["hall:tirate", "hall:ttrate"]], + ["54·호나", 91, 16, 75, "che_event_징병", [26545, 39138, 19677, 531385, 36321], 0, "default.jpg", 54, "che_230223_bffE", 227, ["hall:betrate", "hall:dex4", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["54·影:", 15, 75, 92, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 54, "che_230223_bffE", 230, ["hall:dedication"]], + ["54·2초장프레기", 15, 76, 90, "che_event_징병", [0, 0, 0, 0, 0], 1, "7b54c93b.jpg?=20230126", 54, "che_230223_bffE", 272, ["hall:dedication", "hall:ttrate"]], + ["54·민트토끼", 15, 70, 95, "che_event_의술", [0, 0, 0, 0, 0], 1, "b80db368.jpg?=20230221", 54, "che_230223_bffE", 273, ["hall:dedication", "hall:tirate"]], + ["54·정일품", 75, 16, 87, "che_event_신중", [26083, 8806, 18946, 306312, 41186], 1, "b3470750.jpg?=20230205", 54, "che_230223_bffE", 310, ["hall:betrate"]], + ["54·경국지색소교", 75, 89, 15, "che_event_격노", [32866, 230869, 24762, 59169, 27573], 0, "default.jpg", 54, "che_230223_bffE", 352, ["hall:dex2", "hall:ttrate"]], + ["54·이노리", 15, 79, 85, "che_event_척사", [0, 0, 0, 0, 0], 1, "3dbc688f.jpg?=20230228", 54, "che_230223_bffE", 404, ["hall:betrate"]], + ["54·본드래곤", 75, 86, 15, "che_event_저격", [40577, 270187, 5183, 65751, 38466], 0, "default.jpg", 54, "che_230223_bffE", 429, ["hall:dex2"]], + ["54·서희", 73, 84, 15, "che_event_무쌍", [10598, 10802, 102238, 41069, 8354], 1, "8debf7e5.png?=20230308", 54, "che_230223_bffE", 581, ["hall:dex3", "hall:firenum"]], + ["56·카이스트", 78, 15, 93, "che_event_필살", [73093, 19820, 24639, 591210, 15687], 1, "e7e27cd6.jpg?=20221125", 56, "che_230413_JOa2", 5, ["hall:betgold", "hall:betwin", "hall:dex4", "hall:firenum"]], + ["56·척", 76, 91, 15, "che_event_무쌍", [15410, 21414, 405248, 48548, 51509], 1, "7cb75480.png?=20221202", 56, "che_230413_JOa2", 8, ["hall:dex3", "hall:firenum", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["56·바나낫", 80, 93, 15, "che_event_무쌍", [1175496, 2909, 18163, 63331, 75066], 1, "54bb31d3.gif?=20230412", 56, "che_230413_JOa2", 9, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["56·멜리오다스", 99, 73, 15, "che_event_징병", [47912, 38097, 73526, 100618, 838984], 1, "4f753b4b.jpg?=20230413", 56, "che_230413_JOa2", 10, ["hall:betwin", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["56·맥날스", 75, 94, 15, "che_event_필살", [35043, 613159, 13053, 73849, 87140], 1, "4031a718.png?=20230413", 56, "che_230413_JOa2", 12, ["hall:betrate", "hall:betwingold", "hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["56·구구단", 77, 15, 94, "che_event_집중", [83685, 22018, 30860, 677065, 42248], 0, "default.jpg", 56, "che_230413_JOa2", 15, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["56·사스케", 99, 70, 15, "che_event_공성", [37788, 35175, 20346, 136530, 894986], 1, "b824cb97.jpg?=20230411", 56, "che_230413_JOa2", 18, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["56·경국지색소교", 16, 76, 93, "che_event_집중", [0, 0, 0, 493, 270], 0, "default.jpg", 56, "che_230413_JOa2", 19, ["hall:dedication", "hall:ttrate"]], + ["56·드래곤본", 69, 88, 27, "che_event_보병", [375645, 6523, 12207, 59101, 62284], 0, "default.jpg", 56, "che_230413_JOa2", 21, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["56·Mbappe", 76, 15, 92, "che_event_필살", [7501, 5984, 5585, 214248, 24792], 0, "default.jpg", 56, "che_230413_JOa2", 25, ["hall:betrate"]], + ["56·서희", 88, 81, 15, "che_event_필살", [20064, 616203, 4514, 69018, 90478], 1, "8debf7e5.png?=20230308", 56, "che_230413_JOa2", 26, ["hall:dex2", "hall:warnum"]], + ["56·조달요이2트", 16, 79, 89, "che_event_환술", [0, 0, 0, 0, 0], 1, "2ffe4a7d.png?=20221201", 56, "che_230413_JOa2", 29, ["hall:experience"]], + ["56·tqtt", 91, 77, 16, "che_event_의술", [57687, 21275, 707344, 142944, 53570], 0, "default.jpg", 56, "che_230413_JOa2", 32, ["hall:dex3", "hall:killcrew_person", "hall:warnum"]], + ["56·장원영", 98, 71, 15, "che_event_징병", [27581, 64965, 26623, 83739, 396413], 1, "69cd1735.jpg?=20230413", 56, "che_230413_JOa2", 33, ["hall:tlrate"]], + ["56·예니체리", 79, 15, 89, "che_event_집중", [51635, 32283, 23684, 247446, 9194], 0, "default.jpg", 56, "che_230413_JOa2", 34, ["hall:ttrate"]], + ["56·호나", 96, 74, 15, "che_event_필살", [66095, 30874, 198498, 70624, 550065], 0, "default.jpg", 56, "che_230413_JOa2", 36, ["hall:betrate", "hall:dex3", "hall:dex5", "hall:killnum", "hall:winrate"]], + ["56·이서", 75, 15, 94, "che_event_신중", [53076, 23489, 24817, 350512, 24617], 1, "ed799cdb.jpg?=20230413", 56, "che_230413_JOa2", 37, ["hall:tirate", "hall:ttrate"]], + ["56·와일드플라워", 76, 15, 93, "che_event_환술", [36513, 19818, 12584, 385093, 49754], 0, "default.jpg", 56, "che_230413_JOa2", 38, ["hall:dedication"]], + ["56·Hide_D", 76, 15, 93, "che_event_척사", [19555, 20852, 28049, 379589, 56443], 1, "77b7fa0d.png?=20230222", 56, "che_230413_JOa2", 44, ["hall:tirate"]], + ["56·SARS", 93, 16, 78, "che_event_저격", [42746, 34846, 23285, 117767, 788396], 1, "b84944.jpg?=20180829", 56, "che_230413_JOa2", 45, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:winrate"]], + ["56·정일품", 81, 86, 16, "che_event_돌격", [9084, 17895, 66359, 80747, 268271], 1, "b3470750.jpg?=20230205", 56, "che_230413_JOa2", 50, ["hall:firenum", "hall:tsrate"]], + ["56·신의배팅", 79, 92, 15, "che_event_격노", [31029, 668677, 11668, 102466, 59796], 0, "default.jpg", 56, "che_230413_JOa2", 53, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:tsrate"]], + ["56·AI", 79, 90, 15, "che_event_의술", [472765, 26280, 12609, 55334, 17168], 1, "49d964ae.png?=20230413", 56, "che_230413_JOa2", 55, ["hall:dex1"]], + ["56·독구는 승리한다", 15, 72, 96, "che_event_신산", [0, 0, 0, 0, 0], 1, "40d0e506.png?=20230312", 56, "che_230413_JOa2", 57, ["hall:betwin", "hall:firenum", "hall:tirate"]], + ["56·강유", 75, 16, 93, "che_event_신산", [26621, 20207, 30776, 436143, 37401], 1, "160c3e3e.jpg?=20230225", 56, "che_230413_JOa2", 58, ["hall:dedication"]], + ["56·카레", 93, 75, 15, "che_event_무쌍", [84792, 34542, 33405, 66821, 510790], 1, "2e68382d.jpg?=20230413", 56, "che_230413_JOa2", 60, ["hall:dex5", "hall:tlrate"]], + ["56·유카", 15, 75, 94, "che_event_신중", [0, 0, 0, 68, 0], 0, "default.jpg", 56, "che_230413_JOa2", 62, ["hall:dedication", "hall:tirate"]], + ["56·돌아온너구리", 79, 15, 93, "che_event_필살", [1826, 14848, 6880, 391834, 14718], 1, "79dbce5.jpg?=20210918", 56, "che_230413_JOa2", 63, ["hall:ttrate", "hall:winrate"]], + ["56·520", 98, 73, 15, "che_event_척사", [97192, 19858, 40408, 79339, 784252], 0, "default.jpg", 56, "che_230413_JOa2", 65, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["56·윤보미", 97, 74, 15, "che_event_필살", [38957, 63557, 960486, 101298, 52760], 1, "0ccffa02.jpg?=20230418", 56, "che_230413_JOa2", 66, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["56·김효진", 79, 15, 92, "che_event_필살", [22631, 6758, 12590, 520855, 49906], 1, "0ca04a8c.jpg?=20230413", 56, "che_230413_JOa2", 67, ["hall:betgold", "hall:betwingold", "hall:dex4"]], + ["56·귀욤스", 76, 15, 92, "che_event_집중", [25866, 6838, 12367, 500635, 96706], 1, "f1409128.jpg?=20230422", 56, "che_230413_JOa2", 68, ["chief:9", "hall:dedication", "hall:dex4", "hall:experience"]], + ["56·파프타", 96, 72, 15, "che_event_필살", [109711, 20255, 22690, 85861, 388668], 1, "4743ee13.png?=20230413", 56, "che_230413_JOa2", 69, ["hall:betwin", "hall:dex1"]], + ["56·임사영", 99, 73, 15, "che_event_무쌍", [78095, 28892, 59204, 78010, 961028], 1, "3185ceca.jpg?=20230322", 56, "che_230413_JOa2", 70, ["hall:betrate", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["56·동탄역", 76, 15, 94, "che_event_필살", [32745, 19203, 14066, 460148, 45336], 1, "33964777.jpg?=20230413", 56, "che_230413_JOa2", 71, ["hall:ttrate"]], + ["56·지원", 76, 15, 95, "che_event_집중", [9644, 12643, 4803, 418343, 24471], 1, "0b45cdf8.webp?=20230101", 56, "che_230413_JOa2", 72, ["hall:tirate"]], + ["56·춤과파티", 79, 89, 15, "che_event_위압", [28140, 15447, 480384, 67851, 62704], 0, "default.jpg", 56, "che_230413_JOa2", 73, ["hall:dex3", "hall:killrate", "hall:killrate_person"]], + ["56·대교", 97, 71, 17, "che_event_돌격", [115684, 50658, 70595, 168616, 421924], 1, "9f0e6dcc.jpg?=20220808", 56, "che_230413_JOa2", 74, ["hall:dex1", "hall:tlrate"]], + ["56·굴먹는고양이", 77, 89, 16, "che_event_필살", [286742, 4063, 4891, 39943, 53129], 0, "default.jpg", 56, "che_230413_JOa2", 75, ["hall:dex1"]], + ["56·SamGPT", 75, 15, 95, "che_event_환술", [33309, 24253, 21953, 626016, 32948], 1, "2b1b9e9e.png?=20230413", 56, "che_230413_JOa2", 76, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["56·간지밍이", 107, 70, 15, "che_event_돌격", [103058, 76505, 103451, 160379, 1514147], 1, "41b12b95.png?=20221102", 56, "che_230413_JOa2", 77, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["56·라콘타2", 77, 16, 92, "che_event_척사", [34064, 7136, 37022, 713296, 74543], 1, "244be9e6.png?=20230427", 56, "che_230413_JOa2", 78, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["56·라콘타", 96, 75, 15, "che_event_돌격", [20533, 301860, 2855, 78160, 31022], 1, "b44c3710.png?=20230422", 56, "che_230413_JOa2", 79, ["hall:dex2"]], + ["56·이오", 97, 74, 15, "che_event_견고", [50087, 643125, 7643, 62646, 72651], 1, "547eba6b.jpg?=20230413", 56, "che_230413_JOa2", 81, ["hall:dex2"]], + ["56·여동사친", 75, 15, 95, "che_event_집중", [26892, 18350, 7522, 715544, 91153], 1, "b663c463.jpg?=20230413", 56, "che_230413_JOa2", 82, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["56·카갈비", 98, 72, 15, "che_event_돌격", [48103, 34756, 49452, 76768, 678264], 1, "147e2e39.png?=20221201", 56, "che_230413_JOa2", 83, ["chief:10", "hall:betwin", "hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["56·키리코", 77, 90, 15, "che_event_돌격", [60492, 353691, 17019, 92765, 36188], 1, "c1869cb8.jpg?=20230413", 56, "che_230413_JOa2", 84, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:tsrate"]], + ["56·하입보이", 91, 77, 15, "che_event_필살", [493850, 24940, 38316, 72312, 43460], 1, "e9a1a5be.png?=20230413", 56, "che_230413_JOa2", 85, ["hall:dex1"]], + ["56·응애", 74, 15, 95, "che_event_집중", [23406, 27335, 9726, 342243, 70963], 1, "fda33b70.jpg?=20230223", 56, "che_230413_JOa2", 86, ["chief:7", "hall:tirate"]], + ["56·1", 97, 71, 15, "che_event_무쌍", [25502, 9096, 12300, 41851, 582865], 0, "default.jpg", 56, "che_230413_JOa2", 87, ["chief:11", "hall:betrate", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["56·페파", 76, 16, 92, "che_event_집중", [31992, 15310, 12616, 496804, 46318], 1, "add686a6.jpg?=20230413", 56, "che_230413_JOa2", 88, ["hall:winrate"]], + ["56·Samo", 77, 91, 15, "che_event_척사", [18197, 17948, 285516, 38324, 29597], 1, "0b53e4d0.png?=20230502", 56, "che_230413_JOa2", 90, ["chief:8", "hall:betrate", "hall:dex3"]], + ["56·외심장", 79, 15, 91, "che_event_척사", [4895, 10032, 1634, 282975, 41577], 1, "36110cd.jpg?=20180826", 56, "che_230413_JOa2", 91, ["hall:dedication"]], + ["56·비상식량", 94, 73, 15, "che_event_돌격", [12795, 30833, 304197, 80677, 52661], 1, "3031b888.gif?=20221229", 56, "che_230413_JOa2", 96, ["hall:dex3"]], + ["56·북오더", 80, 90, 16, "che_event_돌격", [434393, 17873, 11413, 39549, 25345], 1, "f39217aa.gif?=20220916", 56, "che_230413_JOa2", 99, ["hall:dex1"]], + ["56·머큐리스", 76, 91, 16, "che_event_척사", [53094, 533678, 16544, 157623, 25194], 0, "default.jpg", 56, "che_230413_JOa2", 101, ["hall:dex2", "hall:tsrate"]], + ["56·김채원", 76, 89, 15, "che_event_필살", [17067, 210394, 5710, 47553, 35335], 1, "a7a529f5.jpg?=20230223", 56, "che_230413_JOa2", 102, ["hall:dex2"]], + ["56·산월장수", 80, 87, 15, "che_event_척사", [565530, 12751, 50048, 27235, 67530], 1, "a9b13d87.jpg?=20230413", 56, "che_230413_JOa2", 103, ["hall:dex1"]], + ["56·くま", 76, 16, 92, "che_event_환술", [25449, 13841, 8528, 507744, 98810], 1, "770f53.jpg?=20190718", 56, "che_230413_JOa2", 107, ["chief:5", "hall:dedication", "hall:dex4", "hall:tirate"]], + ["56·료우기시키", 80, 15, 86, "che_event_필살", [48932, 37429, 74785, 539139, 56678], 1, "72a190e.jpg?=20220109", 56, "che_230413_JOa2", 215, ["hall:dex4"]], + ["56·김나영", 78, 91, 15, "che_event_궁병", [54434, 355223, 13749, 37011, 82721], 1, "1d64c6d3.jpg?=20230414", 56, "che_230413_JOa2", 217, ["hall:dex2", "hall:tsrate"]], + ["56·어둠", 91, 76, 15, "che_event_무쌍", [833242, 35548, 86462, 61360, 51641], 0, "default.jpg", 56, "che_230413_JOa2", 226, ["hall:dex1", "hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["56·봇치", 17, 78, 89, "che_event_신중", [0, 0, 0, 0, 0], 1, "eecd0f36.jpg?=20230414", 56, "che_230413_JOa2", 234, ["hall:dedication"]], + ["56·뉴턴", 79, 15, 89, "che_event_집중", [32590, 13736, 55153, 605711, 72909], 0, "default.jpg", 56, "che_230413_JOa2", 242, ["hall:dex4", "hall:tirate"]], + ["56·고고라니고고고라니", 88, 80, 15, "che_event_견고", [7534, 15817, 306228, 37552, 59729], 1, "27e19b67.gif?=20230414", 56, "che_230413_JOa2", 244, ["hall:dex3"]], + ["56·ㅊㄹㅊㄹ", 76, 92, 15, "che_event_필살", [23274, 274326, 7600, 53731, 35584], 1, "63f1c106.png?=20230223", 56, "che_230413_JOa2", 248, ["hall:dex2", "hall:tsrate"]], + ["56·두꺼비", 16, 71, 95, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 56, "che_230413_JOa2", 380, ["hall:dedication"]], + ["56·사필귀정", 71, 15, 88, "che_event_필살", [3878, 168, 76, 115525, 52720], 0, "default.jpg", 56, "che_230413_JOa2", 482, ["hall:betrate"]], + ["57·민트도끼", 94, 80, 15, "che_event_필살", [760326, 15629, 69037, 60111, 27903], 1, "b3d7f239.png?=20230511", 57, "che_230511_WkQk", 3, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["57·카이스트", 67, 13, 81, "che_event_필살", [7535, 5669, 11384, 197331, 10388], 1, "e7e27cd6.jpg?=20221125", 57, "che_230511_WkQk", 4, ["hall:betgold", "hall:betwin", "hall:firenum", "hall:ttrate"]], + ["57·척", 77, 95, 15, "che_event_필살", [18513, 42572, 505646, 107318, 15904], 1, "7cb75480.png?=20221202", 57, "che_230511_WkQk", 5, ["hall:dex3", "hall:firenum", "hall:tsrate"]], + ["57·카류열전없는Hide_D", 65, 13, 82, "che_event_필살", [11711, 3390, 17848, 176887, 20489], 1, "83a66610.jpg?=20230511", 57, "che_230511_WkQk", 8, ["hall:dex5", "hall:tirate"]], + ["57·SARS", 68, 78, 14, "che_event_견고", [25327, 271115, 9153, 30592, 14557], 1, "b84944.jpg?=20180829", 57, "che_230511_WkQk", 11, ["hall:dex2"]], + ["57·셀레미", 15, 101, 71, "che_event_신산", [0, 0, 0, 0, 0], 1, "e33d656a.gif?=20230510", 57, "che_230511_WkQk", 13, ["hall:firenum", "hall:tsrate"]], + ["57·열전도둑카류", 14, 82, 64, "che_event_징병", [2403, 1536, 1200, 5490, 0], 1, "dee5e629.jpg?=20230510", 57, "che_230511_WkQk", 18, ["hall:betrate", "hall:firenum", "hall:tsrate"]], + ["57·자동포탑시스템", 80, 96, 15, "che_event_필살", [951643, 20066, 13100, 65357, 22054], 1, "cbb3c8e5.jpg?=20230512", 57, "che_230511_WkQk", 19, ["chief:8", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["57·예니체리", 78, 15, 91, "che_event_집중", [20465, 16768, 6778, 255655, 41965], 0, "default.jpg", 57, "che_230511_WkQk", 20, ["hall:dex5"]], + ["57·김나영", 67, 82, 13, "che_event_척사", [13001, 2491, 271274, 29656, 7035], 1, "1d64c6d3.jpg?=20230414", 57, "che_230511_WkQk", 23, ["hall:dex3", "hall:firenum", "hall:killrate_person"]], + ["57·글린다", 63, 13, 85, "che_event_필살", [12387, 11890, 14935, 293793, 19306], 1, "4d99585a.jpg?=20230510", 57, "che_230511_WkQk", 25, ["hall:betwin", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["57·대의", 80, 94, 16, "che_event_위압", [32370, 550770, 45342, 41006, 19572], 0, "default.jpg", 57, "che_230511_WkQk", 26, ["hall:dex2", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["57·MSI우승 기원 독구", 67, 81, 13, "che_event_척사", [14361, 161189, 3010, 40673, 8270], 1, "40d0e506.png?=20230312", 57, "che_230511_WkQk", 27, ["hall:betwin", "hall:dex2", "hall:tsrate"]], + ["57·Ceo카류", 67, 78, 14, "che_event_돌격", [33733, 16447, 202192, 45119, 16827], 1, "1c6fdd91.png?=20230515", 57, "che_230511_WkQk", 31, ["hall:dex3"]], + ["57·악질카류열전내놔", 88, 60, 13, "che_event_공성", [9018, 7538, 6174, 20952, 601002], 1, "e4e4a57b.jpg?=20230606", 57, "che_230511_WkQk", 35, ["chief:11", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["57·료우기시키", 67, 13, 81, "che_event_환술", [8034, 9931, 11646, 263219, 13776], 1, "72a190e.jpg?=20220109", 57, "che_230511_WkQk", 36, ["hall:dex4"]], + ["57·열전먹튀범카류잡자", 64, 13, 84, "che_event_집중", [14646, 16478, 11374, 239063, 32031], 1, "d18cb5f1.jpg?=20230511", 57, "che_230511_WkQk", 39, ["hall:dedication", "hall:dex5"]], + ["57·리안", 64, 85, 13, "che_event_필살", [21517, 381257, 9202, 26118, 9891], 1, "17285c76.png?=20230512", 57, "che_230511_WkQk", 43, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["57·경국지색소교", 78, 92, 15, "che_event_저격", [385448, 4897, 12677, 50970, 29391], 1, "ad2669b5.jpg?=20230605", 57, "che_230511_WkQk", 44, ["hall:dex1", "hall:tsrate"]], + ["57·서희", 89, 86, 15, "che_event_무쌍", [12248, 13771, 703086, 68815, 26955], 1, "8debf7e5.png?=20230308", 57, "che_230511_WkQk", 45, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["57·먹튀카류패는마동석", 78, 15, 94, "che_event_신중", [15055, 23792, 34602, 428981, 49098], 1, "42a3a23a.jpg?=20230511", 57, "che_230511_WkQk", 46, ["chief:5", "hall:dedication", "hall:dex5"]], + ["57·환자킬러", 15, 73, 99, "che_event_의술", [0, 0, 0, 0, 0], 1, "25e9db9e.jpg?=20230603", 57, "che_230511_WkQk", 47, ["hall:betrate", "hall:dedication", "hall:tirate"]], + ["57·월향", 64, 14, 82, "che_event_집중", [13341, 8926, 23099, 308660, 10514], 1, "ceaaa7f5.webp?=20230505", 57, "che_230511_WkQk", 53, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["57·평민킬러", 75, 99, 15, "che_event_필살", [45457, 45886, 840144, 54206, 36022], 1, "4cdaa18a.jpg?=20230510", 57, "che_230511_WkQk", 55, ["chief:12", "hall:betwin", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["57·불패", 76, 15, 98, "che_event_필살", [19877, 8990, 27653, 539882, 22922], 1, "c6d07baa.jpg?=20230223", 57, "che_230511_WkQk", 57, ["chief:7", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["57·엔틱", 75, 15, 98, "che_event_집중", [17245, 16199, 23664, 325300, 29140], 0, "default.jpg", 57, "che_230511_WkQk", 60, ["hall:tirate"]], + ["57·양민킬러", 82, 65, 13, "che_event_의술", [147784, 14860, 9575, 48251, 14464], 1, "f877a057.png?=20230511", 57, "che_230511_WkQk", 63, ["chief:6", "hall:dex1", "hall:tlrate"]], + ["57·농부", 77, 15, 95, "che_event_필살", [32581, 42975, 21153, 395903, 22166], 1, "1dcfe486.jpg?=20230317", 57, "che_230511_WkQk", 67, ["hall:ttrate"]], + ["57·와일드플라워", 94, 78, 16, "che_event_돌격", [15427, 46498, 474338, 152105, 26199], 0, "default.jpg", 57, "che_230511_WkQk", 71, ["hall:dex2", "hall:dex3", "hall:ttrate"]], + ["57·Mercy", 78, 18, 91, "che_event_환술", [25881, 34339, 20761, 387978, 19419], 1, "a1bf6b72.jpg?=20230509", 57, "che_230511_WkQk", 72, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["57·카류놈아열전내놔라", 95, 77, 15, "che_event_돌격", [96974, 30872, 625605, 136508, 37401], 1, "5cbbf955.jpg?=20230511", 57, "che_230511_WkQk", 75, ["hall:dex1", "hall:dex3", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["57·임사영", 77, 94, 16, "che_event_필살", [448240, 35174, 84402, 45391, 20990], 1, "3185ceca.jpg?=20230322", 57, "che_230511_WkQk", 77, ["hall:dex1", "hall:tsrate"]], + ["57·몬테크리스토", 92, 79, 15, "che_event_필살", [3097, 15432, 310920, 26013, 14936], 0, "default.jpg", 57, "che_230511_WkQk", 78, ["hall:betrate", "hall:tlrate"]], + ["57·차율라의파편", 63, 13, 84, "che_event_집중", [9735, 14116, 28694, 233212, 23005], 1, "6e009d9.jpg?=20190620", 57, "che_230511_WkQk", 79, ["hall:dex5", "hall:occupied"]], + ["57·ㅊㄹㅊㄹ", 67, 80, 13, "che_event_격노", [6078, 19232, 210462, 28343, 22103], 1, "63f1c106.png?=20230223", 57, "che_230511_WkQk", 81, ["hall:dex3", "hall:dex5", "hall:tsrate"]], + ["57·대교", 99, 72, 16, "che_event_기병", [1306, 26884, 307973, 42855, 26934], 1, "9f0e6dcc.jpg?=20220808", 57, "che_230511_WkQk", 83, ["hall:tlrate"]], + ["57·비상식량", 97, 75, 15, "che_event_격노", [2901, 30651, 343863, 77463, 20241], 1, "3031b888.gif?=20221229", 57, "che_230511_WkQk", 84, ["hall:tlrate", "hall:ttrate"]], + ["57·전역킬러", 63, 13, 84, "che_event_필살", [4535, 12483, 19918, 191221, 13391], 1, "7b54c93b.jpg?=20230126", 57, "che_230511_WkQk", 85, ["hall:tirate"]], + ["57·돈내놔", 75, 15, 97, "che_event_환술", [26174, 50998, 16304, 306664, 17492], 0, "default.jpg", 57, "che_230511_WkQk", 87, ["hall:dex2"]], + ["57·독구", 65, 13, 82, "che_event_집중", [15492, 5219, 13988, 250249, 13482], 1, "afdf2e78.gif?=20230317", 57, "che_230511_WkQk", 91, ["hall:betrate", "hall:experience"]], + ["57·네이", 88, 16, 83, "che_event_필살", [37214, 45956, 34593, 540201, 33323], 0, "default.jpg", 57, "che_230511_WkQk", 92, ["hall:dex4"]], + ["57·괴물습격!사스템!", 90, 81, 15, "che_event_위압", [6807, 17154, 415144, 54915, 27412], 1, "2c4eab0d.png?=20230511", 57, "che_230511_WkQk", 93, ["hall:dex3", "hall:tlrate"]], + ["57·개미호랑이", 74, 15, 100, "che_event_집중", [26292, 24198, 50911, 434735, 24150], 1, "c2dc2b59.png?=20230511", 57, "che_230511_WkQk", 94, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["57·악질홍차", 67, 13, 80, "che_event_환술", [1665, 3712, 23063, 135484, 9057], 0, "default.jpg", 57, "che_230511_WkQk", 95, ["hall:tirate"]], + ["57·새신랑카류", 79, 93, 15, "che_event_견고", [342818, 15665, 9439, 37970, 7585], 1, "3e32dab3.jpg?=20230511", 57, "che_230511_WkQk", 96, ["hall:dex1"]], + ["57·777", 78, 94, 15, "che_event_척사", [64024, 373517, 92530, 29735, 36688], 0, "default.jpg", 57, "che_230511_WkQk", 97, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["57·사필귀정", 89, 15, 82, "che_event_징병", [9364, 2036, 8258, 264902, 14453], 0, "default.jpg", 57, "che_230511_WkQk", 98, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:firenum", "hall:tlrate", "hall:ttrate"]], + ["57·감흥", 76, 15, 98, "che_event_필살", [8475, 41638, 25201, 519771, 11441], 1, "a73ecaa1.jpg?=20230313", 57, "che_230511_WkQk", 101, ["chief:9", "hall:betrate", "hall:dedication", "hall:dex4", "hall:winrate"]], + ["57·굴먹는고양이", 64, 13, 86, "che_event_필살", [7420, 4686, 16414, 262955, 8731], 0, "default.jpg", 57, "che_230511_WkQk", 102, ["hall:betgold", "hall:betwin", "hall:dedication", "hall:dex4", "hall:experience", "hall:winrate"]], + ["57·복숭아좋아", 65, 13, 82, "che_event_신산", [7841, 3325, 32569, 206428, 19398], 0, "default.jpg", 57, "che_230511_WkQk", 104, ["hall:dedication", "hall:experience"]], + ["57·황금표호나우두", 88, 82, 16, "che_event_견고", [100352, 12193, 311979, 57209, 18304], 1, "16a9b5c4.png?=20230515", 57, "che_230511_WkQk", 107, ["hall:dex1"]], + ["57·간지밍이", 87, 60, 13, "che_event_공성", [25977, 13008, 12960, 18238, 923260], 1, "847a61de.jpg?=20230606", 57, "che_230511_WkQk", 108, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["57·응애", 75, 15, 98, "che_event_필살", [39414, 8275, 31012, 387596, 21294], 1, "fda33b70.jpg?=20230223", 57, "che_230511_WkQk", 109, ["hall:tirate"]], + ["57·카갈비열전좀써라", 76, 15, 98, "che_event_집중", [19583, 13818, 19894, 544640, 40397], 1, "4975a9f5.jpg?=20230511", 57, "che_230511_WkQk", 110, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:occupied", "hall:tirate"]], + ["57·열전먹튀카갈비", 76, 16, 95, "che_event_필살", [14789, 66330, 17550, 339404, 26107], 1, "87ce8145.jpg?=20230511", 57, "che_230511_WkQk", 114, ["hall:dex2"]], + ["57·월클센터백", 75, 72, 13, "che_event_무쌍", [5670, 191380, 26262, 50148, 12809], 1, "530894d6.png?=20230511", 57, "che_230511_WkQk", 115, ["hall:betrate", "hall:betwingold", "hall:dex2"]], + ["57·くま", 78, 16, 94, "che_event_집중", [9333, 13050, 10081, 682933, 49896], 1, "770f53.jpg?=20190718", 57, "che_230511_WkQk", 121, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:warnum"]], + ["57·국04", 90, 15, 82, "che_event_신중", [10094, 15839, 22502, 284742, 27445], 1, "36e514d2.jpg?=20230207", 57, "che_230511_WkQk", 123, ["hall:betrate", "hall:ttrate"]], + ["57·장수풍뎅이", 89, 79, 15, "che_event_저격", [286193, 10108, 39248, 58977, 8043], 0, "default.jpg", 57, "che_230511_WkQk", 125, ["hall:dex1"]], + ["57·NK", 74, 15, 101, "che_event_집중", [30291, 16682, 45156, 710437, 34024], 1, "d48fe93a.jpg?=20221209", 57, "che_230511_WkQk", 129, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["57·뉴턴", 81, 15, 92, "che_event_필살", [7356, 12939, 18224, 397078, 14217], 0, "default.jpg", 57, "che_230511_WkQk", 130, ["hall:winrate"]], + ["57·잠수중1반복", 15, 73, 98, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 57, "che_230511_WkQk", 215, ["hall:firenum"]], + ["57·벽돌도둑", 96, 73, 16, "che_event_공성", [28487, 23433, 21221, 56573, 974299], 0, "default.jpg", 57, "che_230511_WkQk", 222, ["hall:dex5", "hall:killcrew", "hall:killrate", "hall:occupied"]], + ["57·은채", 75, 15, 98, "che_event_필살", [15236, 10733, 30871, 329082, 7224], 1, "0b53e4d0.png?=20230502", 57, "che_230511_WkQk", 232, ["hall:dedication", "hall:tirate"]], + ["57·Bianchi", 79, 91, 16, "che_event_필살", [14884, 34085, 505140, 60172, 28344], 0, "default.jpg", 57, "che_230511_WkQk", 238, ["hall:dex3"]], + ["57·Fragile", 74, 15, 98, "che_event_집중", [16086, 12780, 18529, 337136, 11016], 1, "03ba3579.webp?=20230512", 57, "che_230511_WkQk", 252, ["hall:killrate_person"]], + ["57·냐옹", 17, 78, 89, "che_event_징병", [0, 0, 0, 0, 0], 1, "23ba519.jpg?=20190318", 57, "che_230511_WkQk", 444, ["hall:ttrate"]], + ["57·푸키삼모", 85, 15, 82, "che_event_집중", [22069, 17462, 20818, 227551, 6530], 0, "default.jpg", 57, "che_230511_WkQk", 474, ["hall:betrate"]], + ["57·황진", 74, 88, 17, "che_event_저격", [243446, 28440, 7491, 46866, 5834], 0, "default.jpg", 57, "che_230511_WkQk", 563, ["hall:dex1"]], + ["57·Navy마초", 75, 86, 15, "che_event_저격", [17958, 138012, 1290, 63797, 13252], 0, "default.jpg", 57, "che_230511_WkQk", 639, ["hall:dex2"]], + ["58·호시노 아이", 96, 78, 15, "che_event_필살", [36107, 51759, 837565, 47400, 9404], 1, "8831878b.gif?=20230615", 58, "che_230615_6aXZ", 4, ["hall:dex3", "hall:firenum", "hall:killnum", "hall:tlrate", "hall:winrate"]], + ["58·하츄핑", 80, 92, 15, "che_event_척사", [99831, 39376, 60242, 55670, 879190], 1, "0f430520.gif?=20230614", 58, "che_230615_6aXZ", 6, ["hall:betrate", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["58·SARS", 90, 82, 15, "che_event_척사", [72889, 758197, 28011, 97661, 37156], 1, "b84944.jpg?=20180829", 58, "che_230615_6aXZ", 12, ["hall:dex2"]], + ["58·강유", 76, 15, 95, "che_event_필살", [57918, 12864, 31110, 592324, 47685], 1, "160c3e3e.jpg?=20230225", 58, "che_230615_6aXZ", 13, ["hall:dedication"]], + ["58·피해자의눈물", 80, 96, 15, "che_event_척사", [25577, 620123, 529428, 106418, 21654], 0, "default.jpg", 58, "che_230615_6aXZ", 18, ["hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["58·아자핑", 80, 15, 91, "che_event_반계", [83169, 32873, 59041, 533852, 29793], 1, "1fbf194b.jpg?=20230613", 58, "che_230615_6aXZ", 26, ["hall:ttrate"]], + ["58·Sarspear", 79, 95, 15, "che_event_필살", [105059, 88792, 1619032, 114195, 54963], 0, "default.jpg", 58, "che_230615_6aXZ", 27, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["58·바쁜척", 79, 91, 15, "che_event_무쌍", [134238, 142600, 420831, 72248, 48238], 1, "7cb75480.png?=20221202", 58, "che_230615_6aXZ", 32, ["hall:dex3"]], + ["58·집합장 앵벌스", 15, 70, 103, "che_event_징병", [0, 0, 0, 0, 0], 1, "01e6478e.png?=20230615", 58, "che_230615_6aXZ", 36, ["hall:betrate", "hall:tirate"]], + ["58·호나", 95, 76, 15, "che_event_징병", [79130, 110651, 60079, 133632, 670130], 0, "default.jpg", 58, "che_230615_6aXZ", 40, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex5", "hall:occupied", "hall:warnum"]], + ["58·도비이즈프리", 91, 78, 15, "che_event_견고", [48178, 515833, 28531, 153863, 46400], 1, "60767302.png?=20230703", 58, "che_230615_6aXZ", 41, ["hall:dex2", "hall:tlrate"]], + ["58·비비안", 79, 98, 15, "che_event_필살", [1294564, 15192, 41421, 124187, 46822], 1, "f764f97c.jpg?=20230615", 58, "che_230615_6aXZ", 48, ["hall:betwin", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["58·SAS", 77, 15, 95, "che_event_필살", [55669, 13789, 18785, 967205, 53157], 1, "099b8b1f.jpg?=20230616", 58, "che_230615_6aXZ", 54, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["58·행운핑", 83, 91, 15, "che_event_필살", [32807, 42834, 948515, 46515, 24369], 1, "b815483b.png?=20230622", 58, "che_230615_6aXZ", 58, ["hall:dex3", "hall:killcrew_person"]], + ["58·김나영", 83, 87, 15, "che_event_위압", [540051, 20631, 67877, 158175, 18652], 1, "1d64c6d3.jpg?=20230414", 58, "che_230615_6aXZ", 59, ["hall:dex1", "hall:ttrate"]], + ["58·가면핑", 91, 15, 81, "che_event_집중", [23515, 49814, 37988, 65845, 593340], 1, "81902004.jpg?=20230626", 58, "che_230615_6aXZ", 60, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:ttrate"]], + ["58·카이스트", 80, 18, 88, "che_event_집중", [2577, 26534, 9596, 309141, 10770], 1, "e7e27cd6.jpg?=20221125", 58, "che_230615_6aXZ", 68, ["hall:firenum"]], + ["58·독스훈트", 82, 92, 15, "che_event_필살", [395481, 39122, 390781, 87248, 23627], 1, "40d0e506.png?=20230312", 58, "che_230615_6aXZ", 69, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3"]], + ["58·푸키삼모", 93, 78, 15, "che_event_무쌍", [159373, 91852, 204203, 76566, 30075], 1, "85de0e3b.jpg?=20230621", 58, "che_230615_6aXZ", 75, ["hall:tlrate"]], + ["58·SAR$", 83, 87, 16, "che_event_무쌍", [94956, 586833, 73620, 114809, 24125], 1, "6c35e4c8.jpg?=20230615", 58, "che_230615_6aXZ", 76, ["hall:dex2"]], + ["58·SARS걸린 이연", 78, 15, 92, "che_event_집중", [45618, 23112, 52033, 582700, 56976], 1, "eba7e0fe.jpg?=20230615", 58, "che_230615_6aXZ", 78, ["chief:7", "hall:dedication", "hall:dex5", "hall:experience", "hall:occupied"]], + ["58·렌스쪼앙", 80, 15, 93, "che_event_의술", [23418, 57917, 33121, 780894, 40944], 0, "default.jpg", 58, "che_230615_6aXZ", 80, ["hall:dex4"]], + ["58·아휴핑", 81, 92, 15, "che_event_징병", [49553, 621640, 38499, 119643, 20415], 1, "5a952cfc.png?=20230615", 58, "che_230615_6aXZ", 81, ["hall:dex2", "hall:tsrate"]], + ["58·진희", 15, 71, 99, "che_event_필살", [0, 0, 0, 0, 0], 1, "0ea762f7.jpg?=20230615", 58, "che_230615_6aXZ", 82, ["hall:dedication", "hall:tirate"]], + ["58·SARS", 77, 15, 95, "che_event_집중", [39064, 48903, 13657, 625536, 63994], 1, "f4d1a1d5.jpg?=20230615", 58, "che_230615_6aXZ", 83, ["hall:dedication", "hall:dex5", "hall:experience"]], + ["58·네이", 92, 15, 79, "che_event_환술", [43538, 21612, 58881, 738359, 25645], 0, "default.jpg", 58, "che_230615_6aXZ", 85, ["hall:dex4", "hall:tlrate", "hall:ttrate"]], + ["58·ㅊㄹㅊㄹ", 78, 91, 15, "che_event_척사", [66809, 389463, 1823, 92423, 27342], 1, "63f1c106.png?=20230223", 58, "che_230615_6aXZ", 86, ["hall:dex2"]], + ["58·서희", 89, 80, 15, "che_event_필살", [25969, 80488, 300499, 81375, 33623], 1, "8debf7e5.png?=20230308", 58, "che_230615_6aXZ", 87, ["hall:dex3"]], + ["58·차차핑", 79, 15, 93, "che_event_필살", [73306, 45808, 46359, 749573, 24956], 1, "49096043.jpg?=20230617", 58, "che_230615_6aXZ", 89, ["hall:dex4"]], + ["58·지원", 81, 15, 94, "che_event_집중", [33758, 47648, 21307, 1012713, 38989], 1, "42fe8df4.webp?=20230627", 58, "che_230615_6aXZ", 90, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["58·아라핑", 13, 64, 83, "che_event_의술", [0, 0, 0, 0, 0], 1, "9060b69c.jpg?=20230613", 58, "che_230615_6aXZ", 91, ["hall:tirate"]], + ["58·북오더", 89, 82, 15, "che_event_척사", [57925, 9921, 578676, 77782, 46130], 1, "f39217aa.gif?=20220916", 58, "che_230615_6aXZ", 92, ["hall:dex3"]], + ["58·간지밍이", 79, 15, 94, "che_event_의술", [44308, 43395, 33621, 859576, 42958], 1, "19c0150f.png?=20230615", 58, "che_230615_6aXZ", 93, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["58·샤일록", 15, 79, 91, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 58, "che_230615_6aXZ", 94, ["hall:ttrate"]], + ["58·시진핑", 80, 91, 16, "che_event_필살", [445662, 207070, 199355, 123939, 52799], 1, "d25cdae5.png?=20230615", 58, "che_230615_6aXZ", 95, ["hall:dex1", "hall:tsrate"]], + ["58·셀린", 76, 15, 97, "che_event_집중", [113297, 23286, 48110, 946218, 48755], 1, "f60f0b4b.jpg?=20230616", 58, "che_230615_6aXZ", 96, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["58·SRAS", 77, 15, 92, "che_event_반계", [38278, 51599, 28445, 391940, 27455], 1, "c320c031.jpg?=20230615", 58, "che_230615_6aXZ", 97, ["hall:dedication"]], + ["58·5ARS", 79, 101, 15, "che_event_필살", [72182, 1991346, 32796, 87851, 64610], 1, "812be77d.jpg?=20230709", 58, "che_230615_6aXZ", 98, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["58·XARS", 99, 72, 15, "che_event_필살", [599289, 35000, 53515, 80013, 49081], 1, "03eea19b.jpg?=20230615", 58, "che_230615_6aXZ", 99, ["chief:6", "hall:dedication", "hall:dex1", "hall:occupied", "hall:tlrate"]], + ["58·살스", 78, 15, 97, "che_event_필살", [21904, 19621, 16256, 1266795, 41615], 1, "dc09183b.jpg?=20230709", 58, "che_230615_6aXZ", 100, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["58·SAR5", 76, 15, 97, "che_event_집중", [70722, 28837, 36907, 624988, 49706], 1, "fd23fa03.jpg?=20230615", 58, "che_230615_6aXZ", 101, ["chief:9", "hall:betrate", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["58·문익점", 91, 15, 78, "che_event_저격", [59930, 20609, 20494, 143567, 389829], 1, "73eff778.png?=20230615", 58, "che_230615_6aXZ", 102, ["hall:dedication", "hall:dex5"]], + ["58·12345678910111213", 91, 80, 16, "che_event_필살", [522670, 21645, 81291, 53946, 18629], 1, "ec03a7ce.png?=20230615", 58, "che_230615_6aXZ", 103, ["hall:dex1", "hall:tlrate"]], + ["58·.", 99, 71, 16, "che_event_무쌍", [46664, 70870, 34825, 163664, 590994], 0, "default.jpg", 58, "che_230615_6aXZ", 104, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:occupied", "hall:tlrate"]], + ["58·PARS", 74, 97, 15, "che_event_필살", [62510, 361886, 184538, 59050, 44535], 1, "0d3c867d.gif?=20230616", 58, "che_230615_6aXZ", 105, ["hall:dedication", "hall:dex2", "hall:killrate", "hall:tsrate"]], + ["58·료우기시키", 77, 15, 95, "che_event_집중", [82847, 36293, 59352, 587967, 33844], 1, "72a190e.jpg?=20220109", 58, "che_230615_6aXZ", 106, ["hall:tirate"]], + ["58·Hide_D", 80, 15, 95, "che_event_필살", [85689, 63404, 27869, 847090, 31623], 1, "4569d848.png?=20230612", 58, "che_230615_6aXZ", 109, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["58·와일드플라워", 97, 73, 15, "che_event_돌격", [592053, 29454, 84014, 129046, 30387], 0, "default.jpg", 58, "che_230615_6aXZ", 110, ["hall:dex1", "hall:tlrate"]], + ["58·SABS", 75, 17, 94, "che_event_척사", [87437, 17045, 31123, 748598, 35923], 1, "f86fd948.jpg?=20230615", 58, "che_230615_6aXZ", 111, ["chief:12", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["58·응애", 77, 15, 96, "che_event_신중", [28178, 26281, 10954, 458964, 16168], 1, "fda33b70.jpg?=20230223", 58, "che_230615_6aXZ", 113, ["hall:tirate"]], + ["58·악어의눈물", 77, 15, 95, "che_event_필살", [84011, 28367, 22913, 647446, 35368], 0, "default.jpg", 58, "che_230615_6aXZ", 115, ["hall:ttrate"]], + ["58·기병", 80, 90, 16, "che_event_견고", [126244, 88353, 747030, 102814, 32841], 1, "f552576a.png?=20230705", 58, "che_230615_6aXZ", 116, ["hall:dex3"]], + ["58·경국지색소교", 79, 93, 15, "che_event_무쌍", [547991, 7536, 33582, 83805, 35588], 1, "ad2669b5.jpg?=20230605", 58, "che_230615_6aXZ", 119, ["hall:dex1", "hall:tsrate"]], + ["58·이랑", 77, 94, 15, "che_event_필살", [101086, 655195, 12978, 102673, 38306], 1, "c1d305d5.jpg?=20230616", 58, "che_230615_6aXZ", 211, ["hall:dex2", "hall:tsrate"]], + ["58·황진", 92, 79, 15, "che_event_격노", [537859, 86039, 81233, 114864, 27200], 0, "default.jpg", 58, "che_230615_6aXZ", 214, ["hall:dex1", "hall:tlrate"]], + ["58·돌아온너구리", 15, 72, 100, "che_event_반계", [0, 0, 0, 0, 0], 1, "79dbce5.jpg?=20210918", 58, "che_230615_6aXZ", 218, ["hall:tirate"]], + ["58·ㅂ1상식량", 93, 77, 16, "che_event_의술", [604374, 58382, 68468, 127437, 21057], 1, "3031b888.gif?=20221229", 58, "che_230615_6aXZ", 229, ["hall:dex1"]], + ["58·무림", 91, 77, 16, "che_event_위압", [130695, 388405, 9360, 90290, 19966], 0, "default.jpg", 58, "che_230615_6aXZ", 230, ["hall:dex2"]], + ["58·Bianchi", 81, 90, 15, "che_event_격노", [532643, 66770, 41671, 96824, 16340], 0, "default.jpg", 58, "che_230615_6aXZ", 231, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["58·예니체리", 90, 15, 79, "che_event_척사", [40895, 36198, 58315, 354618, 9240], 0, "default.jpg", 58, "che_230615_6aXZ", 234, ["hall:ttrate"]], + ["58·만샘", 93, 77, 15, "che_event_격노", [26241, 86817, 571012, 101479, 52618], 1, "4a206a1.jpg?=20181122", 58, "che_230615_6aXZ", 235, ["hall:dex3", "hall:tlrate"]], + ["58·삭턴전문가", 78, 15, 92, "che_event_집중", [48306, 81170, 28382, 576979, 55788], 0, "default.jpg", 58, "che_230615_6aXZ", 256, ["hall:dex5"]], + ["58·Navy마초", 79, 15, 91, "che_event_신산", [70167, 45359, 42430, 531192, 42439], 0, "default.jpg", 58, "che_230615_6aXZ", 282, ["hall:firenum"]], + ["58·진솔", 18, 74, 86, "che_event_신산", [0, 0, 0, 0, 0], 1, "a076cf9f.webp?=20230626", 58, "che_230615_6aXZ", 541, ["hall:betrate"]], + ["59·아픈척", 79, 92, 15, "che_event_필살", [416616, 83647, 121002, 74572, 33417], 1, "7cb75480.png?=20221202", 59, "che_230713_zRPI", 7, ["hall:firenum", "hall:occupied"]], + ["59·양사영", 81, 96, 15, "che_event_필살", [477922, 109568, 509749, 60580, 8559], 1, "77c40ccc.jpg?=20230713", 59, "che_230713_zRPI", 8, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["59·헬조선망해라", 69, 80, 13, "che_event_견고", [19399, 434996, 9425, 32936, 11014], 0, "default.jpg", 59, "che_230713_zRPI", 10, ["hall:betrate", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["59·鳴海大我", 77, 15, 94, "che_event_집중", [21332, 33718, 35403, 593790, 53288], 1, "663df7a3.jpg?=20230713", 59, "che_230713_zRPI", 11, ["chief:11", "hall:betrate", "hall:dedication", "hall:dex4", "hall:dex5", "hall:tirate"]], + ["59·만디", 84, 88, 15, "che_event_견고", [38958, 1009292, 27950, 21126, 27271], 1, "528b77f4.jpg?=20230713", 59, "che_230713_zRPI", 12, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["59·돌아온너구리", 98, 72, 16, "che_event_공성", [40278, 16279, 71516, 80281, 1433988], 1, "79dbce5.jpg?=20210918", 59, "che_230713_zRPI", 21, ["chief:10", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["59·SARS", 90, 84, 15, "che_event_척사", [117211, 95255, 625860, 87068, 36005], 1, "b84944.jpg?=20180829", 59, "che_230713_zRPI", 25, ["hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["59·GATA미코가미리코", 77, 94, 18, "che_event_돌격", [127477, 38674, 832516, 135320, 50717], 1, "dfd9105a.jpg?=20230713", 59, "che_230713_zRPI", 26, ["chief:6", "hall:dedication", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["59·응애", 76, 15, 96, "che_event_필살", [21925, 36969, 39272, 449508, 26390], 1, "fda33b70.jpg?=20230223", 59, "che_230713_zRPI", 29, ["hall:tirate"]], + ["59·Sase Kim", 82, 16, 89, "che_event_집중", [30375, 27252, 34276, 495261, 39046], 1, "8e71251b.jpg?=20230713", 59, "che_230713_zRPI", 32, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["59·길을가던냥이", 95, 76, 15, "che_event_척사", [95078, 256749, 62479, 49249, 26875], 1, "fcf03180.png?=20230713", 59, "che_230713_zRPI", 35, ["hall:betrate", "hall:dex2", "hall:tlrate"]], + ["59·바나낫", 80, 91, 15, "che_event_돌격", [671473, 21362, 43058, 50496, 39199], 1, "29bda5a8.gif?=20230712", 59, "che_230713_zRPI", 36, ["hall:dex1", "hall:tsrate"]], + ["59·사카마타클로에", 77, 16, 95, "che_event_환술", [24800, 21474, 42877, 676737, 17576], 1, "80447eca.jpg?=20230713", 59, "che_230713_zRPI", 40, ["hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["59·나가", 75, 96, 15, "che_event_필살", [27856, 29966, 629479, 100680, 54202], 1, "f0aa9701.jpg?=20230712", 59, "che_230713_zRPI", 42, ["hall:dex3", "hall:dex5", "hall:firenum", "hall:tsrate"]], + ["59·요리의신 청설모", 76, 95, 15, "che_event_척사", [35762, 37918, 188325, 23662, 20017], 1, "aa2db600.png?=20230713", 59, "che_230713_zRPI", 43, ["hall:tsrate"]], + ["59·Hide_D", 79, 15, 94, "che_event_척사", [16477, 14067, 13436, 433001, 24434], 1, "4569d848.png?=20230612", 59, "che_230713_zRPI", 46, ["hall:tirate", "hall:ttrate"]], + ["59·진솔", 16, 71, 99, "che_event_반계", [0, 0, 0, 0, 0], 1, "a076cf9f.webp?=20230626", 59, "che_230713_zRPI", 47, ["hall:experience", "hall:firenum", "hall:tirate"]], + ["59·이연", 80, 93, 15, "che_event_위압", [901762, 16139, 71848, 65115, 39344], 1, "eba7e0fe.jpg?=20230615", 59, "che_230713_zRPI", 49, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["59·로니", 82, 90, 15, "che_event_저격", [23821, 42708, 629086, 95303, 27725], 1, "19aa078e.png?=20230713", 59, "che_230713_zRPI", 52, ["hall:dex3"]], + ["59·외심장", 76, 16, 93, "che_event_신산", [4501, 5683, 7695, 215525, 38439], 1, "36110cd.jpg?=20180826", 59, "che_230713_zRPI", 53, ["hall:tirate"]], + ["59·호시노 앵벌스", 92, 78, 16, "che_event_무쌍", [842265, 8325, 60957, 60471, 26192], 1, "15f87f0d.webp?=20230712", 59, "che_230713_zRPI", 57, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["59·무녀", 79, 15, 91, "che_event_척사", [18235, 11239, 23656, 245080, 628], 1, "59339fe7.gif?=20230704", 59, "che_230713_zRPI", 58, ["hall:ttrate"]], + ["59·네이", 79, 16, 91, "che_event_필살", [35253, 16810, 47737, 542123, 60987], 0, "default.jpg", 59, "che_230713_zRPI", 60, ["chief:7", "hall:dex5"]], + ["59·키리코", 77, 93, 16, "che_event_필살", [521650, 14890, 44844, 113305, 29988], 1, "8f4e6d3e.jpg?=20230622", 59, "che_230713_zRPI", 65, ["hall:dex1", "hall:tsrate"]], + ["59·묵은지닭찜과보드카", 90, 81, 15, "che_event_무쌍", [541343, 23770, 25879, 75574, 9307], 1, "0cd92b02.png?=20230714", 59, "che_230713_zRPI", 71, ["hall:betrate", "hall:dex1", "hall:firenum"]], + ["59·셀레미", 78, 15, 95, "che_event_필살", [26038, 15509, 45087, 609670, 69077], 1, "097305fb.jpg?=20230703", 59, "che_230713_zRPI", 72, ["hall:betwin", "hall:dex4", "hall:dex5", "hall:experience"]], + ["59·감흥", 15, 75, 95, "che_event_반계", [0, 0, 0, 0, 0], 1, "a73ecaa1.jpg?=20230313", 59, "che_230713_zRPI", 73, ["hall:experience"]], + ["59·와플", 96, 75, 15, "che_event_필살", [23791, 32468, 609367, 90755, 49414], 0, "default.jpg", 59, "che_230713_zRPI", 80, ["hall:dex3", "hall:tlrate"]], + ["59·학군사관", 80, 89, 15, "che_event_돌격", [40288, 297062, 31977, 81862, 17595], 0, "default.jpg", 59, "che_230713_zRPI", 85, ["hall:dex2"]], + ["59·그림리퍼", 80, 89, 15, "che_event_무쌍", [10452, 26478, 479140, 86633, 45111], 0, "default.jpg", 59, "che_230713_zRPI", 88, ["hall:firenum"]], + ["59·하디아", 90, 81, 15, "che_event_필살", [57020, 123860, 391607, 57501, 10990], 1, "77816dac.png?=20230713", 59, "che_230713_zRPI", 90, ["hall:tlrate"]], + ["59·비상식량", 90, 82, 15, "che_event_저격", [33639, 16485, 614679, 71957, 52779], 1, "3031b888.gif?=20221229", 59, "che_230713_zRPI", 91, ["hall:dex3", "hall:dex5"]], + ["59·유카", 80, 91, 15, "che_event_위압", [495555, 18320, 57341, 86906, 45028], 0, "default.jpg", 59, "che_230713_zRPI", 92, ["hall:dex1"]], + ["59·NK", 77, 96, 15, "che_event_필살", [18868, 36182, 785443, 38268, 27587], 1, "d48fe93a.jpg?=20221209", 59, "che_230713_zRPI", 96, ["hall:dex3", "hall:tsrate"]], + ["59·블로니", 16, 73, 96, "che_event_의술", [150, 0, 1650, 11102, 0], 1, "a65dfd69.jpg?=20230712", 59, "che_230713_zRPI", 100, ["hall:killrate_person", "hall:tirate"]], + ["59·비건 독구", 78, 91, 15, "che_event_견고", [82165, 36044, 668195, 92912, 51977], 1, "40d0e506.png?=20230312", 59, "che_230713_zRPI", 101, ["chief:8", "hall:betwin", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killrate"]], + ["59·나무사이", 78, 92, 15, "che_event_위압", [417013, 129499, 75341, 100461, 42308], 1, "7d1bfc64.png?=20230731", 59, "che_230713_zRPI", 102, ["hall:betrate", "hall:firenum"]], + ["59·칼라", 15, 82, 89, "che_event_신산", [0, 0, 0, 0, 0], 1, "709f4ae7.jpg?=20230713", 59, "che_230713_zRPI", 103, ["hall:firenum"]], + ["59·간지밍이", 78, 16, 93, "che_event_필살", [24409, 35369, 43610, 547732, 17258], 1, "19c0150f.png?=20230615", 59, "che_230713_zRPI", 104, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:firenum", "hall:tirate"]], + ["59·호나", 93, 17, 76, "che_event_징병", [53030, 49396, 47861, 154495, 484305], 0, "default.jpg", 59, "che_230713_zRPI", 105, ["hall:betgold", "hall:dex5", "hall:tlrate"]], + ["59·지원", 79, 92, 16, "che_event_척사", [34300, 40098, 772430, 60618, 12452], 1, "13c59544.webp?=20230712", 59, "che_230713_zRPI", 106, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tsrate"]], + ["59·불패", 81, 93, 15, "che_event_필살", [603424, 15020, 44268, 52295, 18741], 1, "e52adea8.jpg?=20230712", 59, "che_230713_zRPI", 107, ["hall:betrate", "hall:dex1"]], + ["59·크렌스", 81, 92, 15, "che_event_필살", [25782, 33838, 713364, 80014, 36873], 0, "default.jpg", 59, "che_230713_zRPI", 108, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3"]], + ["59·인고나", 78, 15, 93, "che_event_집중", [28117, 23868, 34607, 561114, 44688], 0, "default.jpg", 59, "che_230713_zRPI", 109, ["hall:dex4"]], + ["59·황진", 82, 92, 15, "che_event_위압", [39240, 748716, 19495, 68269, 39658], 0, "default.jpg", 59, "che_230713_zRPI", 110, ["hall:dex2", "hall:ttrate", "hall:warnum"]], + ["59·라콘타", 76, 15, 95, "che_event_집중", [19495, 18950, 25118, 431517, 27176], 1, "8a091db0.png?=20230714", 59, "che_230713_zRPI", 113, ["hall:tirate"]], + ["59·카이스트", 79, 15, 91, "che_event_신산", [21524, 50882, 18417, 506090, 31325], 1, "e7e27cd6.jpg?=20221125", 59, "che_230713_zRPI", 115, ["hall:firenum"]], + ["59·사스케", 20, 95, 71, "che_event_필살", [22252, 378039, 31041, 41017, 35157], 1, "812be77d.jpg?=20230709", 59, "che_230713_zRPI", 116, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["59·pray", 79, 63, 14, "che_event_돌격", [144983, 1445, 9475, 15845, 7894], 1, "7b54c93b.jpg?=20230126", 59, "che_230713_zRPI", 117, ["hall:tlrate", "hall:ttrate"]], + ["59·독구", 78, 15, 94, "che_event_집중", [58807, 40336, 22097, 780927, 19147], 1, "29a7e597.gif?=20230709", 59, "che_230713_zRPI", 118, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["59·사마귀", 75, 98, 15, "che_event_필살", [924948, 17061, 58500, 50357, 35196], 1, "817fb3a2.png?=20230713", 59, "che_230713_zRPI", 119, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["59·우돌", 98, 72, 16, "che_event_징병", [66902, 46809, 126680, 133977, 765463], 0, "default.jpg", 59, "che_230713_zRPI", 120, ["hall:dex5", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["59·군견", 75, 15, 97, "che_event_집중", [27305, 11828, 19010, 588205, 43119], 1, "5c337cdd.png?=20230713", 59, "che_230713_zRPI", 122, ["chief:9", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["59·아야츠노 유니", 79, 15, 95, "che_event_필살", [19077, 8319, 24390, 790110, 37549], 1, "a6f82a19.gif?=20230715", 59, "che_230713_zRPI", 123, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["59·잉여_국04", 76, 15, 94, "che_event_필살", [73993, 10428, 45092, 436419, 41274], 1, "36e514d2.jpg?=20230207", 59, "che_230713_zRPI", 125, ["hall:betrate", "hall:dedication"]], + ["59·대교", 95, 73, 16, "che_event_무쌍", [23635, 6367, 483827, 98098, 62840], 1, "9f0e6dcc.jpg?=20220808", 59, "che_230713_zRPI", 127, ["hall:dex5", "hall:occupied", "hall:tlrate"]], + ["59·Navy마초", 97, 73, 15, "che_event_위압", [27284, 537354, 40858, 101631, 22289], 0, "default.jpg", 59, "che_230713_zRPI", 129, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:tlrate"]], + ["59·초롱초롱 무지", 80, 92, 15, "che_event_무쌍", [629410, 119344, 45647, 88128, 29547], 1, "63f1c106.png?=20230223", 59, "che_230713_zRPI", 132, ["hall:dex1", "hall:ttrate"]], + ["59·경국지색소교", 80, 16, 91, "che_event_환술", [25138, 34618, 18632, 606728, 17860], 1, "ad2669b5.jpg?=20230605", 59, "che_230713_zRPI", 137, ["hall:dex4"]], + ["59·고양이", 91, 15, 81, "che_event_집중", [59260, 37670, 8506, 743894, 20163], 0, "default.jpg", 59, "che_230713_zRPI", 142, ["hall:dex4", "hall:killnum", "hall:winrate"]], + ["59·다유", 78, 15, 93, "che_event_환술", [28688, 21251, 34593, 416701, 14779], 1, "f489a2a.jpg?=20181226", 59, "che_230713_zRPI", 143, ["hall:ttrate"]], + ["59·기연노예", 76, 15, 95, "che_event_집중", [50039, 36156, 17007, 496473, 16043], 0, "default.jpg", 59, "che_230713_zRPI", 208, ["hall:ttrate"]], + ["59·서희", 78, 91, 15, "che_event_돌격", [38955, 400244, 16179, 51934, 29861], 1, "8debf7e5.png?=20230308", 59, "che_230713_zRPI", 210, ["hall:dex2"]], + ["59·김유현", 87, 15, 84, "che_event_필살", [14797, 5711, 18609, 312088, 4889], 0, "default.jpg", 59, "che_230713_zRPI", 211, ["hall:killrate_person", "hall:winrate"]], + ["59·문어", 77, 90, 16, "che_event_의술", [354, 249173, 15895, 50575, 8961], 0, "default.jpg", 59, "che_230713_zRPI", 216, ["hall:dex2"]], + ["59·나이많음의아이콘", 80, 16, 92, "che_event_환술", [39522, 20877, 32054, 766709, 22817], 0, "default.jpg", 59, "che_230713_zRPI", 223, ["hall:dex4", "hall:warnum"]], + ["59·블러드", 78, 91, 15, "che_event_무쌍", [77289, 353463, 113498, 85271, 19034], 0, "default.jpg", 59, "che_230713_zRPI", 226, ["hall:betrate", "hall:dex2"]], + ["59·くま", 80, 15, 92, "che_event_환술", [93622, 104123, 24622, 540885, 16422], 1, "770f53.jpg?=20190718", 59, "che_230713_zRPI", 228, ["hall:ttrate"]], + ["59·어린양", 15, 73, 95, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 59, "che_230713_zRPI", 375, ["hall:betrate"]], + ["59·초선", 16, 83, 83, "che_event_의술", [0, 0, 0, 0, 0], 1, "b24730b1.jpg?=20230112", 59, "che_230713_zRPI", 492, ["hall:dedication"]], + ["59·임태산북두", 15, 73, 92, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 59, "che_230713_zRPI", 512, ["hall:dedication"]], + ["61·앵벌스", 73, 15, 92, "che_event_반계", [9926, 11729, 22298, 224360, 25316], 1, "0e4b2a86.png?=20230907", 61, "che_230831_qUn8", 14, ["chief:12", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:experience", "hall:tirate"]], + ["61·천지개불", 76, 15, 89, "che_event_필살", [3806, 0, 5940, 164152, 23879], 1, "b09d6aef.jpg?=20230831", 61, "che_230831_qUn8", 15, ["hall:betrate", "hall:tirate"]], + ["61·마요이", 94, 71, 15, "che_event_필살", [334020, 3211, 16584, 42709, 32473], 1, "5d6919bb.webp?=20230831", 61, "che_230831_qUn8", 23, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tlrate"]], + ["61·감흥", 15, 73, 90, "che_event_척사", [0, 5554, 0, 9147, 859], 1, "a73ecaa1.jpg?=20230313", 61, "che_230831_qUn8", 26, ["hall:dedication", "hall:tirate"]], + ["61·호그와트냉장고", 76, 15, 87, "che_event_집중", [28488, 3651, 2984, 321529, 31624], 1, "6abbcc81.jpg?=20230831", 61, "che_230831_qUn8", 28, ["hall:experience"]], + ["61·강유", 75, 15, 89, "che_event_집중", [6906, 9960, 5537, 229640, 21007], 1, "663df7a3.jpg?=20230713", 61, "che_230831_qUn8", 30, ["hall:ttrate"]], + ["61·척", 75, 87, 16, "che_event_저격", [19139, 9441, 82748, 27830, 6570], 1, "7cb75480.png?=20221202", 61, "che_230831_qUn8", 35, ["hall:dex3"]], + ["61·바나낫", 73, 15, 92, "che_event_필살", [15029, 21577, 12912, 393690, 18426], 1, "39e76b74.gif?=20230830", 61, "che_230831_qUn8", 38, ["hall:betrate", "hall:dex4", "hall:killcrew"]], + ["61·나데코", 75, 88, 16, "che_event_필살", [20853, 27443, 399608, 61842, 34221], 1, "7e5de341.gif?=20230831", 61, "che_230831_qUn8", 42, ["hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["61·평민킬러", 76, 89, 15, "che_event_돌격", [268270, 4077, 23124, 45305, 31439], 1, "95fee767.jpg?=20230810", 61, "che_230831_qUn8", 49, ["chief:6", "hall:betrate", "hall:betwin", "hall:dedication", "hall:dex1", "hall:killrate"]], + ["61·냐옹", 75, 89, 15, "che_event_돌격", [6796, 163113, 14551, 38237, 10990], 1, "23ba519.jpg?=20190318", 61, "che_230831_qUn8", 50, ["hall:dex2", "hall:winrate"]], + ["61·근설모", 74, 91, 15, "che_event_무쌍", [249591, 15560, 7210, 33307, 16630], 1, "19aa078e.png?=20230713", 61, "che_230831_qUn8", 51, ["hall:betgold", "hall:betwingold", "hall:dex1", "hall:killrate_person", "hall:winrate"]], + ["61·김채원", 84, 16, 80, "che_event_집중", [11124, 17174, 2681, 215168, 14388], 1, "139e1bed.jpg?=20230831", 61, "che_230831_qUn8", 53, ["hall:tlrate"]], + ["61·카이스트", 77, 15, 88, "che_event_척사", [22377, 15588, 11024, 391799, 24460], 1, "e7e27cd6.jpg?=20221125", 61, "che_230831_qUn8", 55, ["hall:dex4", "hall:killcrew_person", "hall:warnum"]], + ["61·호두", 73, 91, 15, "che_event_필살", [1732, 11978, 190270, 30594, 21722], 1, "f6082814.png?=20230903", 61, "che_230831_qUn8", 56, ["hall:dex3", "hall:killrate", "hall:tsrate"]], + ["61·데스티니차일드", 73, 15, 92, "che_event_집중", [30988, 8130, 10562, 411807, 29933], 0, "default.jpg", 61, "che_230831_qUn8", 61, ["hall:dex4", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["61·라콘타", 77, 87, 15, "che_event_무쌍", [203798, 109850, 52722, 59660, 12044], 1, "581b1a38.webp?=20230831", 61, "che_230831_qUn8", 70, ["hall:dex1", "hall:tsrate"]], + ["61·메메", 91, 71, 16, "che_event_필살", [14989, 229768, 12555, 40004, 26774], 1, "245c352f.jpg?=20230831", 61, "che_230831_qUn8", 73, ["hall:dex2", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["61·네이미", 84, 78, 15, "che_event_징병", [12584, 28826, 130576, 50415, 26783], 0, "default.jpg", 61, "che_230831_qUn8", 77, ["hall:dex3", "hall:tlrate"]], + ["61·페브리", 73, 89, 15, "che_event_저격", [23867, 283757, 5392, 63580, 13228], 1, "dc0c120c.jpg?=20230830", 61, "che_230831_qUn8", 79, ["hall:dex2"]], + ["61·내정.D.ream", 15, 70, 95, "che_event_반계", [0, 0, 0, 0, 0], 0, "default.jpg", 61, "che_230831_qUn8", 85, ["hall:betrate", "hall:dedication", "hall:ttrate"]], + ["61·미친과학", 93, 70, 15, "che_event_공성", [31103, 8805, 0, 4226, 314375], 1, "bb6e0198.png?=20230913", 61, "che_230831_qUn8", 86, ["hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["61·딸배왕앵벌스", 77, 15, 87, "che_event_반계", [12267, 3483, 9071, 254818, 24510], 1, "0db8b663.jpg?=20230831", 61, "che_230831_qUn8", 87, ["hall:killnum", "hall:winrate"]], + ["61·SARS", 76, 88, 15, "che_event_견고", [193631, 16350, 60751, 33608, 9016], 1, "b84944.jpg?=20180829", 61, "che_230831_qUn8", 88, ["hall:dex1", "hall:tsrate"]], + ["61·북오더", 74, 15, 88, "che_event_신산", [6231, 12107, 13205, 206568, 15188], 1, "f39217aa.gif?=20220916", 61, "che_230831_qUn8", 92, ["hall:killrate_person"]], + ["61·돌아온너구리", 77, 15, 88, "che_event_반계", [13815, 16969, 8606, 205260, 14845], 0, "default.jpg", 61, "che_230831_qUn8", 94, ["hall:ttrate"]], + ["61·키리코", 74, 89, 15, "che_event_필살", [246161, 8089, 10180, 48173, 24999], 1, "8f4e6d3e.jpg?=20230622", 61, "che_230831_qUn8", 95, ["hall:dex1"]], + ["61·대교", 89, 71, 16, "che_event_필살", [19520, 6068, 99644, 15463, 24994], 1, "9f0e6dcc.jpg?=20220808", 61, "che_230831_qUn8", 98, ["hall:dex3", "hall:tlrate"]], + ["61·정찬성", 75, 87, 16, "che_event_필살", [4164, 4674, 163723, 73750, 23483], 1, "e0bda04b.jpg?=20230831", 61, "che_230831_qUn8", 99, ["hall:betrate", "hall:betwin", "hall:dex3", "hall:tsrate"]], + ["61·지력5", 74, 15, 91, "che_event_신중", [25127, 21225, 7310, 329055, 7795], 0, "default.jpg", 61, "che_230831_qUn8", 100, ["hall:firenum", "hall:killcrew_person", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["61·앵두한", 74, 15, 89, "che_event_징병", [43437, 14034, 5166, 363774, 23585], 1, "76c8a8f6.png?=20230831", 61, "che_230831_qUn8", 101, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["61·설치류 사냥꾼 독구", 76, 89, 15, "che_event_무쌍", [19133, 15071, 239820, 15975, 24475], 1, "40d0e506.png?=20230312", 61, "che_230831_qUn8", 102, ["hall:betgold", "hall:betwin", "hall:dex3", "hall:occupied"]], + ["61·앵목사", 73, 15, 91, "che_event_징병", [39226, 2357, 9107, 344071, 37461], 1, "1a9cf100.gif?=20230903", 61, "che_230831_qUn8", 103, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5"]], + ["61·미친수학", 75, 15, 91, "che_event_필살", [40304, 8291, 13063, 367991, 19773], 1, "99cad231.jpg?=20230906", 61, "che_230831_qUn8", 104, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["61·하늘다람쥐", 73, 15, 92, "che_event_필살", [47651, 24256, 31431, 389919, 29392], 1, "b9915640.jpg?=20230831", 61, "che_230831_qUn8", 106, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum"]], + ["61·ㅊㄹㅊㄹ", 74, 89, 15, "che_event_필살", [7488, 4536, 106318, 20688, 7854], 1, "63f1c106.png?=20230223", 61, "che_230831_qUn8", 107, ["hall:dex3"]], + ["61·초선", 73, 15, 90, "che_event_집중", [454, 2299, 14036, 81341, 15823], 1, "b24730b1.jpg?=20230112", 61, "che_230831_qUn8", 108, ["hall:tirate"]], + ["61·앵만희", 76, 15, 89, "che_event_척사", [26284, 2662, 29029, 338074, 29329], 1, "eb7d483b.jpg?=20230829", 61, "che_230831_qUn8", 109, ["hall:dex4"]], + ["61·정소민", 73, 15, 93, "che_event_집중", [4773, 5571, 6392, 229947, 15897], 1, "79df2262.jpg?=20230831", 61, "che_230831_qUn8", 110, ["hall:experience", "hall:occupied"]], + ["61·간지밍이", 74, 15, 89, "che_event_집중", [19131, 2711, 12843, 270561, 36949], 1, "19c0150f.png?=20230615", 61, "che_230831_qUn8", 111, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5"]], + ["61·매일영혼을바나낫", 76, 88, 15, "che_event_돌격", [12224, 203316, 4082, 46548, 22665], 1, "910675b6.png?=20230831", 61, "che_230831_qUn8", 113, ["hall:dex2"]], + ["61·성기사 이즈 킹", 88, 75, 18, "che_event_필살", [113115, 584282, 3183, 35004, 26469], 1, "f3cedd04.jpg?=20230831", 61, "che_230831_qUn8", 114, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["61·앵틀러", 74, 90, 15, "che_event_필살", [289062, 5913, 19426, 48718, 29049], 1, "ec01b1bf.jpg?=20230831", 61, "che_230831_qUn8", 115, ["hall:dex1"]], + ["61·사스케", 72, 15, 92, "che_event_반계", [7661, 1970, 1045, 191347, 23680], 1, "812be77d.jpg?=20230709", 61, "che_230831_qUn8", 116, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["61·1000", 72, 91, 15, "che_event_필살", [134417, 6286, 63947, 25469, 6018], 0, "default.jpg", 61, "che_230831_qUn8", 117, ["hall:tsrate", "hall:ttrate"]], + ["61·Hide_D", 74, 15, 91, "che_event_신산", [19784, 8288, 12076, 300440, 33017], 1, "4569d848.png?=20230612", 61, "che_230831_qUn8", 118, ["hall:occupied", "hall:tirate"]], + ["61·병종뭐할까요?", 90, 75, 15, "che_event_격노", [366988, 45574, 30772, 68276, 75744], 0, "default.jpg", 61, "che_230831_qUn8", 119, ["hall:betwin", "hall:dex1", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["61·ㅂ1상식량", 88, 78, 15, "che_event_격노", [66583, 555878, 61672, 66721, 32963], 1, "3031b888.gif?=20221229", 61, "che_230831_qUn8", 120, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["61·민트토끼", 15, 72, 93, "che_event_신산", [0, 0, 0, 0, 0], 1, "2b5418ac.jpg?=20230831", 61, "che_230831_qUn8", 121, ["hall:tirate"]], + ["61·독구", 73, 15, 91, "che_event_환술", [5266, 8786, 9940, 205901, 38099], 1, "7a9073de.gif?=20230816", 61, "che_230831_qUn8", 122, ["chief:11", "hall:betrate", "hall:betwin", "hall:dex5", "hall:occupied", "hall:ttrate"]], + ["61·크렌스", 75, 88, 15, "che_event_척사", [249161, 6859, 73, 35327, 44113], 1, "a2fef500.png?=20230831", 61, "che_230831_qUn8", 123, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:ttrate"]], + ["61·엔틱", 73, 15, 89, "che_event_필살", [12997, 405, 14364, 213509, 34186], 1, "a6f82a19.gif?=20230715", 61, "che_230831_qUn8", 124, ["chief:7", "hall:experience", "hall:occupied"]], + ["61·선덕", 74, 15, 88, "che_event_신중", [5659, 5219, 14218, 210577, 22971], 0, "default.jpg", 61, "che_230831_qUn8", 125, ["hall:occupied"]], + ["61·료우기시키", 75, 15, 90, "che_event_신중", [2341, 6164, 1400, 135952, 20704], 1, "72a190e.jpg?=20220109", 61, "che_230831_qUn8", 126, ["hall:ttrate"]], + ["61·불패", 74, 15, 89, "che_event_필살", [2824, 4090, 17995, 209892, 36955], 1, "e52adea8.jpg?=20230712", 61, "che_230831_qUn8", 127, ["chief:9", "hall:dex5"]], + ["61·덕구", 73, 91, 15, "che_event_보병", [43712, 1952, 0, 1980, 6308], 1, "f6b9a68b.jpg?=20230810", 61, "che_230831_qUn8", 129, ["hall:firenum"]], + ["61·Jr. Aeng", 74, 15, 88, "che_event_신중", [31598, 21666, 29523, 331037, 10892], 0, "default.jpg", 61, "che_230831_qUn8", 132, ["hall:dex4"]], + ["61·장원영", 73, 15, 90, "che_event_징병", [11202, 11980, 20152, 129510, 14864], 1, "747944df.jpg?=20230731", 61, "che_230831_qUn8", 133, ["hall:dedication"]], + ["61·시뉴카린", 73, 15, 89, "che_event_집중", [720, 0, 19902, 177406, 35329], 1, "8eae7038.png?=20230902", 61, "che_230831_qUn8", 137, ["hall:dex5"]], + ["61·삼겹살", 73, 15, 92, "che_event_필살", [12375, 22786, 13413, 370406, 22748], 1, "6cf61a1a.gif?=20230831", 61, "che_230831_qUn8", 142, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["61·페이트", 15, 72, 90, "che_event_의술", [300, 0, 0, 10551, 0], 1, "6045256.png?=20220317", 61, "che_230831_qUn8", 147, ["hall:dedication"]], + ["61·Navy마초", 90, 74, 16, "che_event_무쌍", [54012, 379023, 59228, 73118, 13349], 1, "37644ed3.png?=20230831", 61, "che_230831_qUn8", 148, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["61·경국지색소교", 78, 15, 86, "che_event_귀병", [941, 13037, 9133, 122741, 17701], 1, "ad2669b5.jpg?=20230605", 61, "che_230831_qUn8", 151, ["hall:ttrate"]], + ["61·지원", 72, 92, 15, "che_event_척사", [78350, 39543, 138677, 32667, 18056], 1, "13c59544.webp?=20230712", 61, "che_230831_qUn8", 193, ["hall:dex3", "hall:tsrate"]], + ["61·앵사노바", 92, 72, 15, "che_event_돌격", [59453, 166546, 26317, 44709, 52591], 1, "6eb0046a.jpg?=20230906", 61, "che_230831_qUn8", 199, ["hall:dex2", "hall:dex5", "hall:tlrate"]], + ["61·응애", 73, 15, 91, "che_event_귀병", [15442, 2349, 10961, 270323, 24853], 1, "fda33b70.jpg?=20230223", 61, "che_230831_qUn8", 200, ["hall:tirate"]], + ["61·초아인지", 72, 86, 20, "che_event_필살", [334, 6267, 218980, 49618, 18858], 1, "c314b02e.jpg?=20230830", 61, "che_230831_qUn8", 206, ["hall:dex3"]], + ["61·피나콜라다", 72, 91, 15, "che_event_궁병", [23532, 196345, 3799, 36818, 17643], 1, "b634e866.png?=20230901", 61, "che_230831_qUn8", 211, ["hall:betrate", "hall:dex2", "hall:killrate", "hall:tsrate"]], + ["61·숨진사람", 76, 15, 87, "che_event_척사", [9201, 6632, 1770, 133385, 14158], 1, "9a13729.webp?=20211104", 61, "che_230831_qUn8", 212, ["hall:ttrate"]], + ["61·앵여시", 75, 15, 87, "che_event_집중", [5440, 6903, 6543, 202877, 25116], 1, "4a1c8c23.jpg?=20230831", 61, "che_230831_qUn8", 233, ["hall:firenum"]], + ["61·Meddugi", 75, 88, 15, "che_event_격노", [92473, 1719, 19157, 25195, 7780], 0, "default.jpg", 61, "che_230831_qUn8", 237, ["hall:tsrate"]], + ["61·칠리크랩", 15, 73, 89, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 61, "che_230831_qUn8", 245, ["hall:dedication"]], + ["61·블러드", 73, 87, 16, "che_event_궁병", [10520, 168107, 4507, 7474, 21620], 0, "default.jpg", 61, "che_230831_qUn8", 258, ["hall:dex2", "hall:tsrate"]], + ["61·Bianchi", 74, 86, 15, "che_event_격노", [193381, 5130, 14141, 32113, 16971], 0, "default.jpg", 61, "che_230831_qUn8", 333, ["hall:dex1"]], + ["61·안유진", 15, 90, 72, "che_event_견고", [0, 0, 0, 0, 0], 1, "eae194e7.jpg?=20230904", 61, "che_230831_qUn8", 360, ["hall:dedication"]], + ["62·SARS", 78, 89, 15, "che_event_필살", [16216, 10111, 326084, 54813, 72981], 1, "b84944.jpg?=20180829", 62, "che_230921_gV5c", 3, ["hall:dex3", "hall:dex5"]], + ["62·카이스트", 83, 15, 89, "che_event_집중", [56690, 12136, 50088, 829249, 38148], 1, "e7e27cd6.jpg?=20221125", 62, "che_230921_gV5c", 4, ["hall:dex4"]], + ["62·Samo", 79, 15, 91, "che_event_저격", [22941, 24806, 13717, 473590, 13461], 1, "0b53e4d0.png?=20230502", 62, "che_230921_gV5c", 8, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["62·임사영", 80, 15, 93, "che_event_집중", [40530, 20450, 29706, 723548, 52186], 1, "a526f6c9.jpg?=20230901", 62, "che_230921_gV5c", 11, ["hall:occupied"]], + ["62·POCARI.", 77, 95, 15, "che_event_필살", [529104, 27491, 18413, 69924, 48671], 1, "b4f94da0.jpg?=20230927", 62, "che_230921_gV5c", 15, ["chief:12", "hall:betgold", "hall:dex1", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["62·청설모", 80, 15, 92, "che_event_집중", [12607, 14042, 56972, 536828, 21942], 1, "54b6efea.jpg?=20230921", 62, "che_230921_gV5c", 18, ["hall:tirate", "hall:ttrate"]], + ["62·크렌스", 76, 97, 15, "che_event_돌격", [1027082, 54291, 59247, 154089, 72858], 1, "15c33d02.jpg?=20231003", 62, "che_230921_gV5c", 20, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["62·笠原桃奈", 13, 13, 87, "che_event_집중", [0, 0, 0, 0, 0], 1, "7ad2ec21.jpg?=20230921", 62, "che_230921_gV5c", 22, ["hall:dedication", "hall:tirate"]], + ["62·신도4", 85, 61, 13, "che_event_공성", [27970, 7523, 7936, 49663, 1581533], 1, "fa2d5d65.png?=20230922", 62, "che_230921_gV5c", 23, ["chief:11", "hall:betrate", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["62·푸바오", 93, 76, 15, "che_event_저격", [30236, 15395, 264179, 79680, 35140], 1, "c2230aea.jpg?=20231007", 62, "che_230921_gV5c", 24, ["chief:8", "hall:dex3", "hall:tlrate", "hall:ttrate"]], + ["62·Navy마초", 98, 72, 15, "che_event_위압", [61464, 401717, 9598, 76902, 44994], 1, "37644ed3.png?=20230831", 62, "che_230921_gV5c", 30, ["hall:dex2", "hall:firenum", "hall:tlrate"]], + ["62·염소희", 77, 92, 15, "che_event_징병", [27941, 269804, 25236, 50805, 31728], 1, "90807e89.png?=20230921", 62, "che_230921_gV5c", 33, ["chief:6", "hall:dex2", "hall:firenum"]], + ["62·무통", 76, 69, 13, "che_event_격노", [27861, 15498, 300183, 38320, 37580], 0, "default.jpg", 62, "che_230921_gV5c", 35, ["hall:betrate", "hall:dex3", "hall:dex5"]], + ["62·서림동", 77, 91, 15, "che_event_척사", [23334, 16887, 263289, 70410, 35308], 0, "default.jpg", 62, "che_230921_gV5c", 39, ["hall:firenum"]], + ["62·신도40000", 77, 99, 15, "che_event_필살", [1158225, 14570, 22270, 65055, 31463], 1, "f7b26d0e.png?=20230921", 62, "che_230921_gV5c", 40, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["62·카멘", 81, 15, 92, "che_event_집중", [40698, 38274, 36765, 796911, 53680], 1, "45672d20.jpg?=20231011", 62, "che_230921_gV5c", 43, ["hall:dex4", "hall:warnum"]], + ["62·유카", 15, 73, 95, "che_event_의술", [1947, 0, 3523, 7472, 0], 1, "e4b9e9c6.png?=20230927", 62, "che_230921_gV5c", 45, ["hall:dedication", "hall:firenum", "hall:ttrate"]], + ["62·홍마진척왕근", 69, 80, 13, "che_event_돌격", [621053, 16347, 55247, 60965, 23278], 1, "f39e5fac.jpg?=20230921", 62, "che_230921_gV5c", 46, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["62·프레데리카", 78, 95, 15, "che_event_척사", [49166, 882531, 10682, 87221, 70219], 1, "b5a16765.jpg?=20230920", 62, "che_230921_gV5c", 47, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["62·치유의부적", 17, 76, 93, "che_event_의술", [0, 0, 0, 0, 0], 1, "0e2c7802.jpg?=20230921", 62, "che_230921_gV5c", 49, ["hall:dedication"]], + ["62·김채원", 90, 16, 77, "che_event_저격", [20947, 72808, 91920, 662492, 42653], 1, "139e1bed.jpg?=20230831", 62, "che_230921_gV5c", 52, ["hall:tlrate"]], + ["62·크멘의 애완견", 76, 15, 98, "che_event_필살", [21484, 24827, 29804, 899457, 35712], 1, "8c10d836.png?=20230921", 62, "che_230921_gV5c", 58, ["hall:betgold", "hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["62·강유", 67, 13, 82, "che_event_환술", [6368, 32045, 18213, 596967, 19143], 1, "79e150d0.jpg?=20230921", 62, "che_230921_gV5c", 63, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["62·파랑새", 80, 16, 92, "che_event_집중", [40104, 17336, 30780, 743778, 60661], 1, "be8c069a.jpg?=20231010", 62, "che_230921_gV5c", 64, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:occupied"]], + ["62·크멘교 배제대생", 97, 75, 15, "che_event_필살", [973704, 46655, 34875, 109135, 51335], 0, "default.jpg", 62, "che_230921_gV5c", 65, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate"]], + ["62·따라큐", 91, 16, 79, "che_event_징병", [62134, 24586, 92864, 1097632, 62338], 1, "12a4e4b9.png?=20230919", 62, "che_230921_gV5c", 68, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["62·초롱초롱 무지", 75, 16, 95, "che_event_집중", [52219, 23637, 3114, 355659, 36444], 1, "63f1c106.png?=20230223", 62, "che_230921_gV5c", 78, ["hall:dedication"]], + ["62·신도119", 101, 15, 71, "che_event_의술", [76898, 107098, 72304, 171748, 948278], 1, "a0dafe81.jpg?=20230922", 62, "che_230921_gV5c", 79, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["62·뭐하지", 90, 80, 16, "che_event_필살", [88504, 217433, 67394, 76163, 30670], 1, "21bbdaa9.jpg?=20230921", 62, "che_230921_gV5c", 80, ["hall:dex2", "hall:firenum"]], + ["62·냐옹", 79, 90, 15, "che_event_척사", [16388, 4181, 417316, 85580, 48724], 1, "23ba519.jpg?=20190318", 62, "che_230921_gV5c", 82, ["hall:dex3", "hall:occupied"]], + ["62·신도44", 76, 95, 15, "che_event_필살", [664511, 22566, 37872, 47885, 90950], 0, "default.jpg", 62, "che_230921_gV5c", 84, ["hall:dex1", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["62·신도444", 76, 15, 95, "che_event_필살", [48868, 16192, 31393, 618276, 77441], 0, "default.jpg", 62, "che_230921_gV5c", 85, ["hall:dex5", "hall:killrate", "hall:killrate_person", "hall:ttrate"]], + ["62·서희", 92, 78, 15, "che_event_척사", [32311, 451286, 40527, 76778, 39347], 1, "8debf7e5.png?=20230308", 62, "che_230921_gV5c", 87, ["hall:dex2"]], + ["62·로열가드", 77, 15, 96, "che_event_집중", [18456, 35041, 19514, 619681, 22599], 1, "90b9119c.jpg?=20230921", 62, "che_230921_gV5c", 89, ["hall:betrate", "hall:tirate", "hall:ttrate"]], + ["62·9999999999999", 98, 73, 15, "che_event_징병", [156672, 70446, 788104, 215783, 10484], 0, "default.jpg", 62, "che_230921_gV5c", 90, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["62·신도5", 76, 15, 98, "che_event_돌격", [65359, 63198, 55520, 773654, 37126], 1, "2fb36a1b.jpg?=20230921", 62, "che_230921_gV5c", 91, ["hall:betwin", "hall:dex4", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["62·샤를마뉴 렌쏭", 79, 93, 16, "che_event_필살", [25411, 30805, 479827, 127962, 25275], 1, "b1648929.jpg?=20230921", 62, "che_230921_gV5c", 92, ["hall:betrate", "hall:betwin", "hall:dex3"]], + ["62·신도9", 77, 97, 15, "che_event_필살", [36434, 740022, 75930, 105543, 102304], 1, "269968d8.png?=20230921", 62, "che_230921_gV5c", 94, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["62·진솔", 82, 88, 16, "che_event_의술", [12478, 4888, 647653, 133182, 18953], 1, "261b4a01.jpg?=20230921", 62, "che_230921_gV5c", 96, ["hall:dex3"]], + ["62·데바", 96, 75, 15, "che_event_견고", [412918, 10034, 34046, 84602, 39400], 1, "c196c1a4.gif?=20230921", 62, "che_230921_gV5c", 98, ["hall:dex1", "hall:firenum", "hall:tlrate"]], + ["62·쓸모없음", 15, 70, 102, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 62, "che_230921_gV5c", 101, ["hall:betrate", "hall:experience", "hall:tirate"]], + ["62·와일드플라워", 13, 63, 83, "che_event_환술", [0, 0, 0, 0, 0], 0, "default.jpg", 62, "che_230921_gV5c", 102, ["hall:dedication", "hall:experience"]], + ["62·오토노세 카나데", 78, 93, 15, "che_event_척사", [988479, 16434, 44542, 44599, 26566], 1, "70d0b33e.jpg?=20230921", 62, "che_230921_gV5c", 103, ["hall:dex1", "hall:tsrate"]], + ["62·F", 77, 95, 15, "che_event_위압", [65997, 683008, 21451, 91019, 34848], 0, "default.jpg", 62, "che_230921_gV5c", 104, ["hall:dex2", "hall:tsrate"]], + ["62·대교", 82, 63, 13, "che_event_필살", [18346, 42323, 434779, 31159, 20838], 1, "9f0e6dcc.jpg?=20220808", 62, "che_230921_gV5c", 105, ["hall:dex3", "hall:tlrate"]], + ["62·만샘", 75, 15, 98, "che_event_신중", [39711, 19762, 18833, 478610, 34612], 1, "9bf1a807.jpg?=20230921", 62, "che_230921_gV5c", 107, ["chief:7", "hall:betrate", "hall:dedication", "hall:experience", "hall:tirate"]], + ["62·간지밍이", 82, 13, 67, "che_event_필살", [6651, 19541, 28153, 886528, 23488], 1, "19c0150f.png?=20230615", 62, "che_230921_gV5c", 108, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["62·북오더", 90, 77, 15, "che_event_척사", [5523, 33012, 501481, 232164, 34268], 1, "f39217aa.gif?=20220916", 62, "che_230921_gV5c", 109, ["hall:dex3"]], + ["62·초선", 79, 15, 93, "che_event_징병", [25010, 57008, 45503, 719036, 31660], 1, "b24730b1.jpg?=20230112", 62, "che_230921_gV5c", 112, ["hall:tirate"]], + ["62·땃지", 75, 17, 91, "che_event_신산", [45944, 13388, 11858, 298568, 45100], 1, "8be933cf.jpg?=20230810", 62, "che_230921_gV5c", 113, ["hall:ttrate"]], + ["62·덕구", 85, 89, 15, "che_event_무쌍", [17153, 1058479, 26969, 24470, 13644], 1, "ca2fa1d4.jpg?=20230923", 62, "che_230921_gV5c", 115, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["62·doz IP Zak", 83, 15, 89, "che_event_필살", [43157, 24562, 57247, 927816, 18413], 0, "default.jpg", 62, "che_230921_gV5c", 116, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["62·기술만올리는척", 16, 72, 99, "che_event_저격", [0, 0, 0, 0, 0], 1, "7cb75480.png?=20221202", 62, "che_230921_gV5c", 119, ["hall:tirate"]], + ["62·퍄퍄", 79, 15, 93, "che_event_집중", [60991, 17560, 12167, 613687, 42831], 1, "2d51ff50.jpg?=20230828", 62, "che_230921_gV5c", 120, ["hall:ttrate"]], + ["62·외심장", 78, 15, 92, "che_event_집중", [52531, 5781, 7432, 392328, 42148], 1, "36110cd.jpg?=20180826", 62, "che_230921_gV5c", 121, ["hall:dedication"]], + ["62·POCAPI", 83, 15, 89, "che_event_척사", [6534, 11103, 20350, 511624, 7470], 0, "default.jpg", 62, "che_230921_gV5c", 126, ["hall:ttrate"]], + ["62·임관권유거부", 80, 16, 88, "che_event_필살", [42123, 47332, 67473, 768490, 34301], 1, "6cf61a1a.gif?=20230831", 62, "che_230921_gV5c", 127, ["hall:dex4"]], + ["62·초아인지", 66, 81, 13, "che_event_필살", [158706, 34630, 209650, 68034, 33157], 1, "c314b02e.jpg?=20230830", 62, "che_230921_gV5c", 128, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:occupied", "hall:tsrate"]], + ["62·미에 아이", 75, 17, 92, "che_event_신산", [28870, 17104, 11622, 320429, 49232], 1, "c2572f0d.png?=20230921", 62, "che_230921_gV5c", 130, ["hall:dedication"]], + ["62·배틀마스터", 83, 90, 16, "che_event_필살", [911426, 56401, 44517, 189758, 35814], 1, "3b7d08d7.png?=20230922", 62, "che_230921_gV5c", 189, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["62·민트토끼", 16, 72, 97, "che_event_의술", [0, 0, 0, 0, 0], 1, "2b5418ac.jpg?=20230831", 62, "che_230921_gV5c", 195, ["hall:dedication"]], + ["62·초딩대우직딩", 17, 76, 91, "che_event_저격", [2189, 4800, 2200, 51487, 6557], 1, "a266e440.jpg?=20230831", 62, "che_230921_gV5c", 196, ["hall:dedication"]], + ["62·불패", 75, 96, 15, "che_event_징병", [43457, 200965, 36030, 48228, 34974], 1, "e52adea8.jpg?=20230712", 62, "che_230921_gV5c", 197, ["hall:dex2", "hall:firenum", "hall:tsrate"]], + ["62·くま", 78, 15, 94, "che_event_신산", [36936, 15371, 17346, 366640, 55343], 1, "770f53.jpg?=20190718", 62, "che_230921_gV5c", 199, ["chief:5"]], + ["62·코노가고싶다", 78, 15, 93, "che_event_집중", [33026, 15505, 16910, 640102, 64419], 0, "default.jpg", 62, "che_230921_gV5c", 201, ["chief:9", "hall:tirate"]], + ["62·주사위논리학", 88, 76, 16, "che_event_돌격", [37276, 165322, 14008, 52075, 31805], 0, "default.jpg", 62, "che_230921_gV5c", 418, ["hall:dex2", "hall:firenum"]], + ["63·팬이에요.", 73, 85, 13, "che_event_필살", [813818, 10976, 6880, 23367, 10170], 1, "33ba7162.jpg?=20231110", 63, "che_231019_ta2u", 3, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["63·사스케", 62, 13, 93, "che_event_집중", [5227, 0, 3237, 55827, 13989], 1, "9243587d.jpg?=20231018", 63, "che_231019_ta2u", 13, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:tirate"]], + ["63·조승상", 85, 70, 14, "che_event_필살", [21425, 559953, 20582, 59794, 16275], 1, "99f1e7e3.png?=20231102", 63, "che_231019_ta2u", 15, ["hall:dex2"]], + ["63·장원영", 62, 14, 89, "che_event_환술", [5425, 3258, 10776, 36137, 9045], 1, "e8f309fc.jpg?=20230928", 63, "che_231019_ta2u", 18, ["hall:dedication"]], + ["63·아보크", 70, 13, 87, "che_event_집중", [19788, 23245, 32519, 519269, 28227], 1, "616e54ff.jpg?=20231019", 63, "che_231019_ta2u", 22, ["hall:dex4", "hall:warnum"]], + ["63·양사영", 69, 13, 87, "che_event_필살", [42719, 22768, 25177, 776067, 37685], 1, "c98febd6.jpg?=20231019", 63, "che_231019_ta2u", 25, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum"]], + ["63·또도가스", 86, 72, 13, "che_event_척사", [604211, 14015, 14550, 20690, 11304], 1, "36d96a91.png?=20231019", 63, "che_231019_ta2u", 35, ["hall:dex2", "hall:experience", "hall:tlrate"]], + ["63·엘사", 70, 86, 13, "che_event_의술", [50349, 529411, 20711, 34118, 26829], 1, "64d29ccf.jpg?=20231018", 63, "che_231019_ta2u", 38, ["hall:betrate", "hall:betwin", "hall:dex2", "hall:tsrate"]], + ["63·이누바시리 모미지", 69, 14, 76, "che_event_환술", [18849, 8693, 19626, 293812, 23955], 1, "3148bc72.jpg?=20231019", 63, "che_231019_ta2u", 40, ["hall:dex4", "hall:dex5", "hall:occupied"]], + ["63·초아인지", 65, 13, 89, "che_event_집중", [7382, 19091, 34669, 239950, 13402], 1, "c314b02e.jpg?=20230830", 63, "che_231019_ta2u", 43, ["hall:tirate"]], + ["63·히이라기 카가미", 66, 13, 86, "che_event_집중", [21284, 18706, 20734, 318582, 19379], 1, "d787d3e7.webp?=20231021", 63, "che_231019_ta2u", 44, ["hall:tirate", "hall:ttrate"]], + ["63·렌고쿠 쿄주로", 66, 84, 13, "che_event_견고", [116596, 8662, 25973, 20559, 4346], 1, "40874e3.jpg?=20220304", 63, "che_231019_ta2u", 49, ["hall:dex1"]], + ["63·경국지색소교", 69, 82, 14, "che_event_견고", [14837, 28498, 200456, 27250, 18380], 1, "ad2669b5.jpg?=20230605", 63, "che_231019_ta2u", 50, ["hall:ttrate"]], + ["63·재간둥이", 80, 70, 14, "che_event_견고", [186473, 18527, 43509, 43800, 20590], 0, "default.jpg", 63, "che_231019_ta2u", 53, ["hall:dex1", "hall:tlrate"]], + ["63·Hide_D", 71, 14, 83, "che_event_필살", [41195, 32567, 31969, 409348, 26858], 1, "4569d848.png?=20230612", 63, "che_231019_ta2u", 54, ["hall:dex5", "hall:ttrate", "hall:winrate"]], + ["63·서희", 65, 13, 89, "che_event_필살", [3755, 2208, 1699, 44875, 16039], 1, "8debf7e5.png?=20230308", 63, "che_231019_ta2u", 60, ["hall:dedication"]], + ["63·ㅊㄹㅊㄹ", 66, 13, 88, "che_event_필살", [15873, 25794, 21759, 364021, 13406], 1, "63f1c106.png?=20230223", 63, "che_231019_ta2u", 63, ["hall:dedication"]], + ["63·로사", 13, 68, 86, "che_event_의술", [0, 0, 0, 0, 0], 1, "3dc68488.jpg?=20231018", 63, "che_231019_ta2u", 67, ["hall:betgold"]], + ["63·SARS", 81, 73, 14, "che_event_격노", [39624, 39902, 578775, 80551, 82862], 1, "b84944.jpg?=20180829", 63, "che_231019_ta2u", 68, ["chief:12", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killrate", "hall:occupied"]], + ["63·피엔나", 71, 13, 88, "che_event_환술", [17471, 20688, 17006, 614107, 20899], 1, "3f9081cd.png?=20231019", 63, "che_231019_ta2u", 70, ["hall:betrate", "hall:dex4", "hall:winrate"]], + ["63·양요이", 67, 14, 84, "che_event_집중", [22896, 10116, 6911, 372394, 30394], 1, "2b49c945.png?=20230921", 63, "che_231019_ta2u", 72, ["hall:ttrate"]], + ["63·마자용", 67, 13, 90, "che_event_집중", [53805, 18707, 57089, 535048, 19793], 1, "af204688.jpg?=20231019", 63, "che_231019_ta2u", 75, ["chief:9", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience"]], + ["63·후라이팬", 73, 87, 13, "che_event_위압", [2930, 1011638, 2076, 15101, 4568], 1, "1ec2709d.png?=20231019", 63, "che_231019_ta2u", 77, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["63·미야와키 사쿠라", 78, 13, 76, "che_event_척사", [14790, 39468, 22163, 247021, 16179], 1, "9d6f0f6a.jpg?=20231017", 63, "che_231019_ta2u", 80, ["hall:tlrate"]], + ["63·초딩대우직딩", 81, 70, 14, "che_event_저격", [4510, 31165, 265485, 41731, 22363], 1, "a266e440.jpg?=20230831", 63, "che_231019_ta2u", 82, ["hall:betrate", "hall:dex3"]], + ["63·PEPSI", 68, 13, 86, "che_event_집중", [22062, 32581, 32747, 581703, 23218], 1, "436b9ead.jpg?=20231019", 63, "che_231019_ta2u", 88, ["chief:11", "hall:dex4", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["63·예턴장", 83, 71, 14, "che_event_필살", [40282, 423676, 99500, 46583, 27270], 0, "default.jpg", 63, "che_231019_ta2u", 89, ["hall:dex2"]], + ["63·랜덤박스", 73, 79, 14, "che_event_의술", [583198, 49296, 33754, 86081, 25973], 1, "a96c6cf1.gif?=20231022", 63, "che_231019_ta2u", 93, ["hall:dex1"]], + ["63·나옹", 68, 13, 89, "che_event_필살", [35849, 25635, 28801, 437709, 16848], 1, "ad47316d.png?=20231019", 63, "che_231019_ta2u", 97, ["chief:5", "hall:betrate", "hall:experience", "hall:occupied", "hall:winrate"]], + ["63·북오더", 71, 83, 13, "che_event_필살", [36432, 681870, 18618, 51544, 48613], 1, "f39217aa.gif?=20220916", 63, "che_231019_ta2u", 98, ["chief:8", "hall:dex2", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["63·무쇠팬", 70, 84, 13, "che_event_척사", [60134, 17725, 490298, 45058, 21642], 1, "97bbb8a2.jpg?=20231019", 63, "che_231019_ta2u", 99, ["hall:betrate", "hall:dex3", "hall:dex5", "hall:firenum", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["63·안아줘요", 14, 87, 64, "che_event_척사", [3576, 2060, 1779, 243, 1194], 0, "default.jpg", 63, "che_231019_ta2u", 100, ["hall:firenum", "hall:tsrate"]], + ["63·진솔", 71, 82, 13, "che_event_격노", [45953, 33391, 218177, 66597, 9947], 1, "261b4a01.jpg?=20230921", 63, "che_231019_ta2u", 101, ["hall:tsrate"]], + ["63·마즈피플", 70, 83, 15, "che_event_격노", [8833, 41899, 298508, 53148, 20500], 1, "fddf0280.gif?=20231101", 63, "che_231019_ta2u", 102, ["hall:dex3"]], + ["63·지원", 73, 82, 13, "che_event_필살", [30712, 44646, 482378, 58217, 15906], 1, "eb7f760e.webp?=20231019", 63, "che_231019_ta2u", 104, ["hall:dex3", "hall:tsrate"]], + ["63·Sase Kim", 67, 87, 13, "che_event_필살", [29473, 57842, 414482, 51841, 21616], 1, "61c98531.jpg?=20231017", 63, "che_231019_ta2u", 105, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:occupied"]], + ["63·로이", 69, 13, 86, "che_event_필살", [37016, 16498, 22814, 632264, 33051], 1, "1561c512.jpg?=20231110", 63, "che_231019_ta2u", 107, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:firenum", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["63·Love", 70, 13, 84, "che_event_집중", [15893, 26458, 15328, 360877, 17960], 0, "default.jpg", 63, "che_231019_ta2u", 108, ["hall:tirate"]], + ["63·비주기", 90, 69, 13, "che_event_필살", [18552, 22245, 25533, 23294, 853257], 1, "03b6316b.png?=20231016", 63, "che_231019_ta2u", 109, ["chief:6", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["63·간지밍이", 16, 62, 87, "che_event_필살", [5948, 52959, 9291, 14307, 0], 1, "19c0150f.png?=20230615", 63, "che_231019_ta2u", 110, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience"]], + ["63·로켓맨", 71, 14, 87, "che_event_집중", [15577, 19135, 17299, 663219, 24069], 1, "60fe3ef9.jpg?=20231023", 63, "che_231019_ta2u", 111, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["63·초선", 66, 13, 88, "che_event_집중", [19168, 13645, 4027, 258803, 8463], 1, "b24730b1.jpg?=20230112", 63, "che_231019_ta2u", 112, ["hall:tirate"]], + ["63·くま", 70, 14, 86, "che_event_신산", [30431, 30946, 26059, 760353, 55815], 1, "770f53.jpg?=20190718", 63, "che_231019_ta2u", 113, ["hall:dex4", "hall:dex5", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:warnum"]], + ["63·시험감독곰", 76, 79, 14, "che_event_견고", [87818, 754889, 41828, 86752, 25313], 1, "e5be393f.jpg?=20231019", 63, "che_231019_ta2u", 114, ["hall:betwin", "hall:betwingold", "hall:dex2"]], + ["63·노예", 92, 66, 13, "che_event_필살", [1008759, 36793, 113115, 58580, 27404], 0, "default.jpg", 63, "che_231019_ta2u", 116, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["63·통솔", 83, 74, 13, "che_event_필살", [282758, 34084, 449528, 57544, 15911], 0, "default.jpg", 63, "che_231019_ta2u", 117, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["63·김나영", 68, 84, 13, "che_event_견고", [296694, 18771, 38604, 63959, 11781], 1, "d07b6eb2.jpg?=20231027", 63, "che_231019_ta2u", 118, ["hall:dex1"]], + ["63·독구", 67, 13, 90, "che_event_필살", [15857, 28561, 27845, 361186, 6683], 1, "1f67d7c9.gif?=20231019", 63, "che_231019_ta2u", 119, ["hall:killrate_person", "hall:winrate"]], + ["63·대교", 89, 62, 14, "che_event_돌격", [46042, 336279, 8863, 53962, 9839], 1, "9f0e6dcc.jpg?=20220808", 63, "che_231019_ta2u", 120, ["hall:dex2", "hall:tlrate"]], + ["63·송건중기마초맹기", 70, 83, 13, "che_event_위압", [243097, 14176, 41350, 42699, 8650], 0, "default.jpg", 63, "che_231019_ta2u", 126, ["hall:dex1", "hall:tsrate"]], + ["63·멜파고", 14, 67, 83, "che_event_신중", [0, 0, 0, 0, 0], 1, "715fc358.png?=20220707", 63, "che_231019_ta2u", 127, ["hall:firenum"]], + ["63·앵버거먹튀범대머리", 14, 62, 85, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 63, "che_231019_ta2u", 128, ["hall:tirate"]], + ["63·SARSKE", 67, 13, 91, "che_event_필살", [42695, 31341, 31623, 445980, 22020], 1, "e6632937.jpg?=20231112", 63, "che_231019_ta2u", 129, ["chief:7", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["63·밤안개", 72, 83, 13, "che_event_격노", [26535, 682257, 9206, 35899, 14445], 0, "default.jpg", 63, "che_231019_ta2u", 130, ["hall:betgold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:tsrate", "hall:warnum"]], + ["63·와일드플라워", 92, 68, 13, "che_event_필살", [7475, 12329, 966604, 13863, 9547], 0, "default.jpg", 63, "che_231019_ta2u", 131, ["hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["63·슬슬쉬고싶은karl", 87, 64, 14, "che_event_징병", [57889, 65766, 47699, 107795, 317048], 0, "default.jpg", 63, "che_231019_ta2u", 132, ["hall:dex5"]], + ["63·Navy마초", 71, 83, 13, "che_event_의술", [24326, 40567, 303655, 58645, 17240], 1, "37644ed3.png?=20230831", 63, "che_231019_ta2u", 133, ["hall:tsrate"]], + ["63·땅땅이", 84, 68, 13, "che_event_의술", [13137, 65986, 397275, 72915, 18310], 1, "27813a48.gif?=20231019", 63, "che_231019_ta2u", 135, ["hall:dex3"]], + ["63·경력있는신입", 88, 67, 13, "che_event_필살", [476323, 8471, 49018, 57107, 46827], 0, "default.jpg", 63, "che_231019_ta2u", 137, ["hall:betwin", "hall:dex1", "hall:dex5", "hall:tlrate"]], + ["63·예니체리", 68, 13, 86, "che_event_필살", [2890, 4482, 3538, 106704, 3371], 1, "51b3a4c5.jpg?=20230813", 63, "che_231019_ta2u", 148, ["hall:ttrate"]], + ["63·척", 74, 80, 13, "che_event_필살", [37076, 40910, 596468, 75432, 31265], 1, "7cb75480.png?=20221202", 63, "che_231019_ta2u", 150, ["hall:betrate", "hall:dex3", "hall:dex5", "hall:killrate", "hall:killrate_person"]], + ["63·성수전용", 14, 89, 63, "che_event_격노", [782, 4332, 180, 81, 0], 0, "default.jpg", 63, "che_231019_ta2u", 152, ["hall:tsrate"]], + ["63·로비", 13, 72, 82, "che_event_신산", [0, 0, 0, 0, 0], 1, "d38cb34.png?=20220106", 63, "che_231019_ta2u", 153, ["hall:firenum"]], + ["63·십수생", 14, 64, 87, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 63, "che_231019_ta2u", 155, ["hall:dedication"]], + ["63·청기사", 16, 60, 89, "che_event_집중", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 63, "che_231019_ta2u", 156, ["hall:dedication"]], + ["63·료우기시키", 71, 14, 84, "che_event_필살", [36205, 22945, 41923, 486242, 26217], 1, "72a190e.jpg?=20220109", 63, "che_231019_ta2u", 241, ["hall:dex4"]], + ["63·LISARS", 68, 82, 14, "che_event_필살", [525391, 16819, 45069, 46067, 25052], 1, "f045adca.gif?=20231020", 63, "che_231019_ta2u", 249, ["chief:10", "hall:dex1", "hall:firenum", "hall:winrate"]], + ["63·땃 지", 77, 14, 76, "che_event_집중", [14568, 27139, 20281, 248528, 11924], 1, "8be933cf.jpg?=20230810", 63, "che_231019_ta2u", 250, ["hall:tlrate"]], + ["63·김유현", 65, 13, 86, "che_event_필살", [19519, 27048, 26733, 207083, 3445], 0, "default.jpg", 63, "che_231019_ta2u", 343, ["hall:tirate"]], + ["63·세르네오", 13, 66, 85, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 63, "che_231019_ta2u", 402, ["hall:firenum"]], + ["63·주다사", 61, 14, 90, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 63, "che_231019_ta2u", 408, ["hall:dedication", "hall:tirate"]], + ["63·파이어로", 14, 66, 83, "che_event_저격", [0, 0, 0, 0, 0], 1, "4087bcc1.jpg?=20231025", 63, "che_231019_ta2u", 474, ["hall:betgold", "hall:betwingold", "hall:dedication", "hall:tirate", "hall:ttrate"]], + ["63·코미", 15, 74, 98, "che_event_반계", [0, 0, 0, 0, 0], 1, "5aa2c0cb.png?=20231029", 63, "che_231019_ta2u", 529, ["hall:betrate", "hall:ttrate"]], + ["63·민초조아", 15, 85, 85, "che_event_위압", [0, 0, 0, 0, 0], 1, "45bf072c.jpg?=20231030", 63, "che_231019_ta2u", 567, ["hall:betrate", "hall:firenum", "hall:ttrate"]], + ["63·슈퍼블루문", 85, 15, 77, "che_event_신중", [2534, 830, 14038, 112708, 21222], 1, "1a6951e4.jpg?=20231112", 63, "che_231019_ta2u", 863, ["hall:ttrate"]], + ["64·김계란", 80, 92, 15, "che_event_필살", [15753, 19955, 695976, 41716, 19766], 1, "09fa15fe.png?=20231128", 64, "che_231130_sSDJ", 3, ["hall:betgold", "hall:dex3", "hall:tsrate"]], + ["64·키리코", 76, 15, 98, "che_event_신산", [12093, 3369, 4210, 405252, 9460], 1, "bd82ed7d.jpg?=20231201", 64, "che_231130_sSDJ", 12, ["hall:firenum", "hall:tirate", "hall:ttrate"]], + ["64·로드롤러", 102, 70, 15, "che_event_공성", [23276, 0, 7530, 7445, 963214], 1, "d82f656e.jpg?=20231130", 64, "che_231130_sSDJ", 17, ["hall:betrate", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["64·밀키스", 90, 83, 15, "che_event_척사", [54021, 437249, 113416, 117633, 59833], 1, "d774cbb7.jpg?=20231130", 64, "che_231130_sSDJ", 18, ["chief:6", "hall:dex2"]], + ["64·환타", 75, 15, 97, "che_event_신산", [27492, 21956, 17793, 519518, 43400], 1, "2689238a.jpg?=20231128", 64, "che_231130_sSDJ", 20, ["hall:tirate"]], + ["64·슬라임", 80, 67, 14, "che_event_필살", [334221, 26536, 38811, 41380, 8381], 1, "2d2da7c0.jpg?=20231130", 64, "che_231130_sSDJ", 21, ["hall:dex1", "hall:killcrew_person", "hall:warnum"]], + ["64·누군가", 20, 73, 94, "che_event_환술", [0, 5082, 149, 0, 1977], 0, "default.jpg", 64, "che_231130_sSDJ", 24, ["hall:betrate"]], + ["64·라콘타", 80, 93, 15, "che_event_필살", [873413, 33379, 49004, 76126, 48820], 1, "2c56a251.png?=20231019", 64, "che_231130_sSDJ", 25, ["hall:betwin", "hall:dex1", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["64·개미호랑이", 78, 15, 93, "che_event_집중", [56201, 29823, 32703, 736414, 34977], 1, "adca7564.jpg?=20231205", 64, "che_231130_sSDJ", 26, ["hall:dex4"]], + ["64·실비아", 68, 77, 14, "che_event_무쌍", [383807, 3144, 18548, 40988, 18781], 1, "53979bb5.png?=20231216", 64, "che_231130_sSDJ", 27, ["hall:dex1", "hall:firenum", "hall:killcrew_person", "hall:warnum"]], + ["64·로베르트", 66, 13, 82, "che_event_징병", [10866, 9123, 9668, 536369, 4577], 1, "0a1e099c.png?=20231129", 64, "che_231130_sSDJ", 28, ["hall:dedication", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["64·박광덕", 97, 74, 15, "che_event_필살", [34126, 14084, 34010, 39793, 286211], 0, "default.jpg", 64, "che_231130_sSDJ", 29, ["hall:dex5", "hall:tlrate"]], + ["64·효", 83, 63, 13, "che_event_필살", [33333, 38288, 21136, 52411, 444764], 1, "6f5aaf4e.jpg?=20231204", 64, "che_231130_sSDJ", 33, ["hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["64·역병군주시진핑핑이", 65, 13, 86, "che_event_돌격", [37802, 15862, 23378, 730790, 39749], 1, "08fb4c5b.png?=20231206", 64, "che_231130_sSDJ", 35, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["64·역병자산운용앵대리", 66, 13, 80, "che_event_집중", [7770, 3149, 11257, 218804, 22899], 1, "fb333e04.png?=20231130", 64, "che_231130_sSDJ", 46, ["hall:firenum"]], + ["64·평민킬러", 77, 95, 15, "che_event_필살", [668076, 12137, 53078, 133051, 48079], 1, "b6291bc6.jpg?=20231130", 64, "che_231130_sSDJ", 52, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:tsrate"]], + ["64·이터널리턴", 77, 15, 94, "che_event_척사", [31648, 14512, 28596, 535228, 68836], 0, "default.jpg", 64, "che_231130_sSDJ", 54, ["hall:ttrate"]], + ["64·숭배자", 80, 68, 13, "che_event_기병", [5107, 14644, 428899, 45229, 25235], 1, "ea7ef719.jpg?=20231201", 64, "che_231130_sSDJ", 57, ["hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["64·Navy마초", 79, 15, 93, "che_event_집중", [31204, 19473, 43062, 578773, 90308], 1, "37644ed3.png?=20230831", 64, "che_231130_sSDJ", 58, ["hall:dex5"]], + ["64·마운틴 듀", 77, 16, 95, "che_event_집중", [32755, 12967, 36030, 547112, 36087], 1, "1de50632.jpg?=20231201", 64, "che_231130_sSDJ", 62, ["hall:betgold", "hall:betwingold"]], + ["64·Mella", 79, 93, 15, "che_event_견고", [635559, 23331, 46896, 101822, 51388], 1, "a98dfb52.jpg?=20231204", 64, "che_231130_sSDJ", 70, ["hall:dex1", "hall:tsrate"]], + ["64·타불", 89, 82, 15, "che_event_위압", [27598, 6934, 544441, 90125, 22669], 0, "default.jpg", 64, "che_231130_sSDJ", 76, ["hall:dex3"]], + ["64·역병의사", 79, 17, 93, "che_event_집중", [29607, 13424, 27384, 706659, 40604], 1, "d4bfc131.jpg?=20231130", 64, "che_231130_sSDJ", 78, ["hall:betgold", "hall:betwingold", "hall:occupied"]], + ["64·코카콜라", 90, 80, 15, "che_event_의술", [18015, 529676, 32913, 130166, 69891], 1, "f46ff3db.jpg?=20231130", 64, "che_231130_sSDJ", 79, ["hall:betgold", "hall:dex2"]], + ["64·SARS", 77, 93, 15, "che_event_돌격", [39366, 50176, 594893, 178869, 73468], 1, "b84944.jpg?=20180829", 64, "che_231130_sSDJ", 85, ["chief:8", "hall:dex3", "hall:tsrate"]], + ["64·미나토", 89, 15, 82, "che_event_척사", [25382, 26052, 62397, 810604, 71307], 1, "89667628.jpg?=20231130", 64, "che_231130_sSDJ", 90, ["hall:dex4"]], + ["64·마요이", 78, 15, 96, "che_event_집중", [12774, 26625, 29400, 765027, 31527], 1, "2b49c945.png?=20230921", 64, "che_231130_sSDJ", 91, ["hall:dex4", "hall:killnum", "hall:winrate"]], + ["64·젤렌스키", 101, 70, 15, "che_event_척사", [17654, 10903, 23094, 67298, 438237], 1, "ef940c31.jpg?=20231130", 64, "che_231130_sSDJ", 92, ["hall:betwin", "hall:dex5", "hall:tlrate"]], + ["64·크돌프", 85, 61, 13, "che_event_필살", [27918, 3455, 17240, 39075, 220287], 1, "4fade407.png?=20231130", 64, "che_231130_sSDJ", 93, ["hall:dex5", "hall:tlrate"]], + ["64·Parrot", 98, 74, 15, "che_event_징병", [44034, 18035, 21292, 86406, 614700], 1, "c34132a2.gif?=20231224", 64, "che_231130_sSDJ", 94, ["hall:dex5", "hall:tlrate"]], + ["64·ㅊㄹㅊㄹ", 79, 95, 15, "che_event_무쌍", [47940, 825179, 16051, 161626, 71495], 1, "63f1c106.png?=20230223", 64, "che_231130_sSDJ", 95, ["hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["64·슈퍼블루문", 80, 65, 14, "che_event_의술", [74817, 108953, 28350, 37780, 22948], 1, "1cb49970.png?=20231224", 64, "che_231130_sSDJ", 99, ["hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["64·panpenpan", 75, 16, 96, "che_event_척사", [27783, 34916, 18743, 569355, 59030], 0, "default.jpg", 64, "che_231130_sSDJ", 100, ["hall:dedication", "hall:killrate", "hall:killrate_person"]], + ["64·POCARI", 76, 15, 96, "che_event_필살", [22948, 16632, 23719, 503743, 61486], 1, "39eb983d.png?=20231130", 64, "che_231130_sSDJ", 101, ["hall:betrate"]], + ["64·깨수깡", 101, 71, 15, "che_event_징병", [51503, 52575, 104805, 145188, 546298], 0, "default.jpg", 64, "che_231130_sSDJ", 102, ["hall:betwin", "hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["64·코코아", 78, 15, 94, "che_event_환술", [45157, 3877, 23128, 545299, 15872], 1, "445209e2.jpg?=20231130", 64, "che_231130_sSDJ", 103, ["hall:betrate", "hall:tirate"]], + ["64·간지밍이", 67, 13, 79, "che_event_필살", [18202, 6343, 15360, 369302, 24131], 1, "19c0150f.png?=20230615", 64, "che_231130_sSDJ", 104, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killrate_person"]], + ["64·와일드플라워", 76, 15, 97, "che_event_환술", [39232, 27492, 43136, 598341, 50933], 0, "default.jpg", 64, "che_231130_sSDJ", 105, ["chief:7"]], + ["64·역병을뒤집으면병역", 66, 79, 14, "che_event_척사", [19233, 19731, 363968, 18817, 19108], 1, "3ee5b847.jpg?=20231223", 64, "che_231130_sSDJ", 106, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:experience", "hall:occupied"]], + ["64·맥콜", 76, 94, 16, "che_event_필살", [371338, 8694, 26081, 96996, 53663], 0, "default.jpg", 64, "che_231130_sSDJ", 109, ["hall:dex1", "hall:tsrate"]], + ["64·RPG", 90, 16, 80, "che_event_반계", [82876, 14272, 28538, 646755, 33013], 1, "10e5f66d.gif?=20231202", 64, "che_231130_sSDJ", 110, ["hall:dex1", "hall:firenum"]], + ["64·북오더", 78, 93, 15, "che_event_척사", [16321, 13821, 479335, 72025, 19050], 1, "f39217aa.gif?=20220916", 64, "che_231130_sSDJ", 111, ["hall:dex3", "hall:tsrate"]], + ["64·산타크렌스", 83, 62, 13, "che_event_공성", [18803, 4540, 5921, 21094, 645181], 1, "bd0e2a76.png?=20231130", 64, "che_231130_sSDJ", 112, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["64·대교", 98, 74, 15, "che_event_필살", [26069, 17738, 661647, 95551, 66270], 1, "9f0e6dcc.jpg?=20220808", 64, "che_231130_sSDJ", 113, ["hall:dex3", "hall:tlrate"]], + ["64·외심장", 78, 16, 94, "che_event_환술", [28009, 15196, 19830, 540123, 13738], 1, "36110cd.jpg?=20180826", 64, "che_231130_sSDJ", 114, ["hall:tirate"]], + ["64·셀레미", 75, 15, 98, "che_event_집중", [27571, 26795, 29471, 800079, 58994], 1, "7cc3cabb.jpg?=20231125", 64, "che_231130_sSDJ", 115, ["chief:12", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["64·코난", 92, 17, 75, "che_event_집중", [50838, 13544, 63495, 544707, 77736], 1, "05b2351f.jpg?=20231209", 64, "che_231130_sSDJ", 116, ["chief:9", "hall:dedication"]], + ["64·별이다섯개이렇게", 79, 94, 15, "che_event_격노", [305307, 9393, 19445, 31545, 10039], 1, "b7b758f8.jpg?=20231205", 64, "che_231130_sSDJ", 118, ["hall:dex1", "hall:tsrate"]], + ["64·독구", 77, 97, 15, "che_event_무쌍", [890870, 9036, 44751, 85056, 49514], 1, "3716ada7.gif?=20231207", 64, "che_231130_sSDJ", 119, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["64·BlueArchive", 78, 93, 16, "che_event_필살", [644072, 12444, 31584, 131618, 63576], 0, "default.jpg", 64, "che_231130_sSDJ", 120, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience"]], + ["64·예턴장", 78, 16, 92, "che_event_집중", [41549, 23755, 33081, 416709, 49185], 0, "default.jpg", 64, "che_231130_sSDJ", 123, ["hall:betwin", "hall:ttrate"]], + ["64·황혼중", 75, 15, 97, "che_event_척사", [15877, 5720, 20658, 219591, 36755], 1, "e5161df9.jpg?=20231110", 64, "che_231130_sSDJ", 124, ["hall:tirate", "hall:ttrate"]], + ["64·카라", 13, 65, 77, "che_event_신산", [0, 0, 0, 0, 0], 1, "9495d4a2.jpg?=20231130", 64, "che_231130_sSDJ", 125, ["hall:firenum"]], + ["64·무지성4반복5반복", 65, 13, 82, "che_event_집중", [10722, 6465, 21842, 367217, 19487], 0, "default.jpg", 64, "che_231130_sSDJ", 129, ["hall:dex4", "hall:killcrew_person", "hall:killrate_person", "hall:tirate"]], + ["64·척", 78, 93, 16, "che_event_저격", [48491, 35959, 690932, 104669, 79275], 1, "7cb75480.png?=20221202", 64, "che_231130_sSDJ", 130, ["hall:dex3", "hall:killrate_person"]], + ["64·청기사", 15, 71, 100, "che_event_신중", [0, 0, 0, 0, 0], 1, "9fdc4fd.jpg?=20181213", 64, "che_231130_sSDJ", 136, ["hall:firenum", "hall:tirate"]], + ["64·레이무", 68, 13, 80, "che_event_집중", [11962, 9871, 7657, 353608, 7824], 0, "default.jpg", 64, "che_231130_sSDJ", 137, ["hall:dex4", "hall:experience", "hall:firenum", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:winrate"]], + ["64·Samo", 18, 73, 95, "che_event_징병", [38043, 36683, 11154, 12061, 6900], 1, "0b53e4d0.png?=20230502", 64, "che_231130_sSDJ", 139, ["hall:dedication"]], + ["64·진솔", 15, 72, 99, "che_event_집중", [0, 0, 0, 0, 0], 1, "261b4a01.jpg?=20230921", 64, "che_231130_sSDJ", 140, ["hall:dedication", "hall:tirate"]], + ["64·くま", 78, 16, 92, "che_event_집중", [49377, 16574, 53748, 856992, 68816], 1, "770f53.jpg?=20190718", 64, "che_231130_sSDJ", 142, ["chief:11", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["64·팍씨", 80, 15, 91, "che_event_필살", [21651, 15427, 18152, 285691, 15053], 1, "67601b4e.jpg?=20231101", 64, "che_231130_sSDJ", 226, ["hall:ttrate"]], + ["64·지원", 16, 72, 100, "che_event_의술", [0, 0, 0, 0, 0], 1, "eb7f760e.webp?=20231019", 64, "che_231130_sSDJ", 229, ["hall:ttrate"]], + ["64·마지막춤은나와함께", 76, 16, 94, "che_event_집중", [63729, 12404, 37341, 495780, 47777], 0, "default.jpg", 64, "che_231130_sSDJ", 233, ["chief:5", "hall:occupied"]], + ["64·경국지색소교", 90, 79, 15, "che_event_징병", [16799, 61248, 674726, 118222, 34289], 1, "ad2669b5.jpg?=20230605", 64, "che_231130_sSDJ", 235, ["hall:dex2", "hall:dex3", "hall:warnum"]], + ["64·기술연구", 15, 72, 100, "che_event_징병", [0, 0, 0, 0, 0], 0, "default.jpg", 64, "che_231130_sSDJ", 241, ["hall:tirate"]], + ["64·세르네오", 65, 79, 14, "che_event_견고", [28328, 318264, 9282, 49121, 20834], 0, "default.jpg", 64, "che_231130_sSDJ", 253, ["hall:dex2", "hall:firenum", "hall:tsrate"]], + ["64·서림동", 75, 93, 15, "che_event_위압", [37828, 374959, 12536, 92295, 27907], 0, "default.jpg", 64, "che_231130_sSDJ", 290, ["hall:dex2"]], + ["64·협동전조아", 15, 88, 82, "che_event_의술", [0, 0, 0, 0, 0], 1, "45bf072c.jpg?=20231030", 64, "che_231130_sSDJ", 353, ["hall:firenum"]], + ["64·BARBAROSSA", 89, 15, 77, "che_event_반계", [31944, 7438, 17913, 215165, 22148], 0, "default.jpg", 64, "che_231130_sSDJ", 431, ["hall:betrate"]], + ["64·kimset23", 59, 87, 32, "che_event_기병", [20289, 134082, 113756, 47759, 48166], 0, "default.jpg", 64, "che_231130_sSDJ", 504, ["hall:dex2", "hall:dex3"]], + ["64·다루이젠", 84, 75, 16, "che_event_견고", [22222, 208568, 5968, 26320, 0], 1, "d3b9aeeb.jpg?=20231213", 64, "che_231130_sSDJ", 652, ["hall:dex2"]], + ["66·카이스트", 77, 16, 93, "che_event_필살", [77435, 25179, 44050, 609542, 11666], 1, "e7e27cd6.jpg?=20221125", 66, "che_240201_0aVv", 3, ["hall:dex4", "hall:firenum"]], + ["66·백설공주", 95, 76, 15, "che_event_돌격", [47120, 87798, 658544, 102733, 27579], 1, "44492ef0.png?=20240201", 66, "che_240201_0aVv", 5, ["hall:dex3", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["66·호나", 88, 15, 82, "che_event_집중", [59631, 53082, 24319, 638910, 36565], 0, "default.jpg", 66, "che_240201_0aVv", 7, ["hall:betgold", "hall:betwingold", "hall:dex4"]], + ["66·바나낫", 79, 95, 15, "che_event_필살", [39088, 70444, 1181670, 48964, 28103], 1, "13e4f6d1.gif?=20240125", 66, "che_240201_0aVv", 8, ["hall:betgold", "hall:betwingold", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["66·ㅤ", 76, 93, 16, "che_event_필살", [326145, 41884, 65314, 49121, 35498], 1, "863fb0b3.png?=20240129", 66, "che_240201_0aVv", 12, ["hall:betgold", "hall:betwingold", "hall:dedication", "hall:tsrate"]], + ["66·kims23", 79, 89, 15, "che_event_위압", [37504, 359712, 25567, 51483, 16343], 1, "8368fde2.png?=20240201", 66, "che_240201_0aVv", 13, ["hall:betrate", "hall:dex2", "hall:firenum"]], + ["66·모아나", 78, 99, 15, "che_event_반계", [1873604, 20138, 38453, 35231, 39229], 1, "d54ea479.png?=20240201", 66, "che_240201_0aVv", 15, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["66·밥", 13, 69, 74, "che_event_의술", [213, 0, 75, 0, 0], 1, "d1c7595e.jpg?=20240129", 66, "che_240201_0aVv", 16, ["hall:dedication", "hall:firenum"]], + ["66·목구", 79, 15, 88, "che_event_의술", [23230, 13971, 13155, 430378, 15623], 0, "default.jpg", 66, "che_240201_0aVv", 18, ["hall:ttrate"]], + ["66·babychuck", 78, 92, 15, "che_event_돌격", [55485, 36629, 442470, 65192, 22963], 1, "7cb75480.png?=20221202", 66, "che_240201_0aVv", 19, ["hall:dex3"]], + ["66·루비", 77, 15, 93, "che_event_집중", [42471, 9259, 19807, 548287, 31077], 1, "22007347.gif?=20240222", 66, "che_240201_0aVv", 24, ["chief:5", "hall:betgold", "hall:betwingold", "hall:dex4"]], + ["66·무지한 독구", 15, 73, 95, "che_event_징병", [0, 0, 0, 0, 0], 1, "4ffaa6e2.png?=20240201", 66, "che_240201_0aVv", 28, ["hall:betwin"]], + ["66·SARS", 75, 15, 97, "che_event_돌격", [31557, 48091, 36592, 665111, 75540], 1, "b84944.jpg?=20180829", 66, "che_240201_0aVv", 30, ["chief:12", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["66·이차원의 도망자", 95, 74, 15, "che_event_돌격", [47387, 351335, 140889, 89621, 45571], 1, "d7cea6ce.jpg?=20240203", 66, "che_240201_0aVv", 33, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:tlrate"]], + ["66·이순신", 100, 70, 15, "che_event_공성", [28974, 26360, 18315, 28868, 1427630], 1, "1df91fc9.jpg?=20240201", 66, "che_240201_0aVv", 34, ["chief:11", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["66·북오더", 78, 93, 15, "che_event_돌격", [43320, 49609, 504613, 73331, 64298], 1, "f39217aa.gif?=20220916", 66, "che_240201_0aVv", 35, ["chief:6", "hall:dex3", "hall:dex5", "hall:winrate"]], + ["66·빈첸조", 81, 15, 92, "che_event_필살", [54340, 31053, 13967, 910174, 24617], 0, "default.jpg", 66, "che_240201_0aVv", 36, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["66·ForTheEmperor", 75, 96, 15, "che_event_견고", [493393, 14940, 44856, 48552, 31802], 0, "default.jpg", 66, "che_240201_0aVv", 39, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:tsrate"]], + ["66·엘사", 76, 92, 15, "che_event_필살", [367564, 7930, 48559, 42832, 64399], 1, "9d001775.jpg?=20240201", 66, "che_240201_0aVv", 40, ["hall:dex5", "hall:occupied", "hall:tsrate"]], + ["66·쵸단", 75, 95, 15, "che_event_격노", [64714, 517636, 5379, 97798, 24192], 1, "d0616ff2.jpg?=20240121", 66, "che_240201_0aVv", 43, ["hall:dex2", "hall:tsrate"]], + ["66·도로롱", 79, 15, 90, "che_event_반계", [81310, 6737, 49569, 514194, 47829], 1, "f4ec4729.png?=20240201", 66, "che_240201_0aVv", 50, ["hall:dex5"]], + ["66·신세희", 95, 15, 75, "che_event_척사", [70928, 36567, 34333, 590410, 21137], 1, "b58e4f77.jpg?=20231229", 66, "che_240201_0aVv", 52, ["hall:dex4", "hall:tlrate", "hall:warnum"]], + ["66·서희", 78, 94, 15, "che_event_필살", [621218, 21320, 34273, 61895, 28831], 1, "8debf7e5.png?=20230308", 66, "che_240201_0aVv", 57, ["chief:8", "hall:betrate", "hall:dedication", "hall:dex1", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["66·장원영", 75, 15, 96, "che_event_필살", [24215, 19515, 37199, 322883, 70412], 1, "799a5f0b.jpg?=20240201", 66, "che_240201_0aVv", 58, ["hall:dedication", "hall:dex5", "hall:tirate", "hall:ttrate"]], + ["66·태평동", 79, 15, 90, "che_event_집중", [75747, 40386, 30161, 573743, 20979], 0, "default.jpg", 66, "che_240201_0aVv", 67, ["hall:dex4"]], + ["66·페이트", 17, 73, 94, "che_event_의술", [0, 0, 0, 0, 0], 1, "6045256.png?=20220317", 66, "che_240201_0aVv", 71, ["hall:firenum"]], + ["66·로비", 16, 72, 96, "che_event_신중", [0, 0, 0, 0, 0], 1, "3e5926b7.png?=20231228", 66, "che_240201_0aVv", 72, ["hall:ttrate"]], + ["66·바낫크톤", 65, 14, 80, "che_event_신중", [9316, 14061, 12254, 320268, 19494], 1, "86a67a9f.png?=20240206", 66, "che_240201_0aVv", 75, ["hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate"]], + ["66·윈드디어", 71, 75, 13, "che_event_척사", [304384, 6963, 24192, 32081, 15068], 1, "5a3b7cce.png?=20240202", 66, "che_240201_0aVv", 76, ["hall:betwin", "hall:dex1"]], + ["66·임사영", 77, 94, 15, "che_event_척사", [92152, 416187, 80840, 57095, 29735], 1, "ae9eb0d5.jpg?=20240108", 66, "che_240201_0aVv", 77, ["hall:dex2", "hall:winrate"]], + ["66·ㄱㅈ", 80, 90, 18, "che_event_징병", [31862, 41521, 603325, 57603, 29608], 0, "default.jpg", 66, "che_240201_0aVv", 78, ["hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:ttrate"]], + ["66·최진리", 76, 95, 15, "che_event_격노", [536081, 15025, 46948, 97405, 23524], 1, "8f1d63a1.jpg?=20240202", 66, "che_240201_0aVv", 80, ["hall:dex1", "hall:tsrate"]], + ["66·림사영", 79, 15, 90, "che_event_집중", [116344, 1054, 59466, 521028, 16984], 1, "7188e0eb.jpg?=20240202", 66, "che_240201_0aVv", 81, ["hall:betrate"]], + ["66·지원", 15, 72, 97, "che_event_의술", [0, 0, 0, 0, 0], 1, "3abfc677.webp?=20240129", 66, "che_240201_0aVv", 83, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["66·지듣노", 81, 65, 13, "che_event_격노", [18065, 48625, 343023, 38688, 16172], 1, "51264298.jpg?=20240202", 66, "che_240201_0aVv", 85, ["hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["66·우렉", 77, 93, 15, "che_event_저격", [394075, 16677, 161856, 92673, 13108], 0, "default.jpg", 66, "che_240201_0aVv", 87, ["hall:betrate"]], + ["66·개척자", 94, 74, 15, "che_event_필살", [98128, 734243, 17351, 97347, 46297], 1, "b79e771f.jpg?=20240221", 66, "che_240201_0aVv", 88, ["hall:dex2", "hall:dex5", "hall:killcrew", "hall:killnum", "hall:occupied", "hall:tlrate"]], + ["66·둑구", 77, 15, 93, "che_event_신산", [55859, 35682, 15800, 464044, 16215], 1, "d11bd6fe.gif?=20240126", 66, "che_240201_0aVv", 89, ["hall:tirate", "hall:ttrate"]], + ["66·독피자", 78, 91, 15, "che_event_척사", [487412, 59255, 24936, 92368, 20592], 1, "06143703.gif?=20231207", 66, "che_240201_0aVv", 91, ["hall:dex1"]], + ["66·빙글빙글", 80, 15, 89, "che_event_척사", [72100, 21996, 26175, 364857, 15701], 1, "d11dd209.webp?=20240207", 66, "che_240201_0aVv", 93, ["hall:firenum"]], + ["66·젠이츠", 82, 63, 13, "che_event_필살", [271758, 2378, 13911, 18013, 14799], 1, "bc45fdf5.webp?=20240201", 66, "che_240201_0aVv", 94, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:tlrate"]], + ["66·다라", 76, 91, 15, "che_event_징병", [42895, 225488, 2996, 44538, 15312], 0, "default.jpg", 66, "che_240201_0aVv", 96, ["hall:dex2"]], + ["66·마요이", 65, 13, 81, "che_event_집중", [34339, 2970, 3637, 224608, 12609], 1, "2b49c945.png?=20230921", 66, "che_240201_0aVv", 97, ["hall:tirate"]], + ["66·스튜어트", 79, 15, 92, "che_event_환술", [89813, 23022, 17154, 517397, 28134], 1, "009cf9f4.png?=20240129", 66, "che_240201_0aVv", 98, ["hall:betrate", "hall:killrate", "hall:occupied", "hall:ttrate"]], + ["66·독구", 65, 13, 80, "che_event_필살", [20251, 16151, 10171, 347823, 21422], 1, "4a94b941.png?=20240202", 66, "che_240201_0aVv", 99, ["hall:betwin", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["66·케빈", 65, 83, 13, "che_event_필살", [11941, 586549, 5219, 32074, 20787], 1, "9326dcf1.jpg?=20240201", 66, "che_240201_0aVv", 100, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["66·독이별택시", 95, 73, 16, "che_event_공성", [16870, 18359, 51368, 83374, 587412], 1, "74924e06.jpg?=20240201", 66, "che_240201_0aVv", 101, ["hall:dex5", "hall:occupied"]], + ["66·Yennefer", 79, 15, 91, "che_event_집중", [44995, 9148, 49169, 546539, 20761], 1, "7af96ddd.jpg?=20240129", 66, "che_240201_0aVv", 102, ["hall:betwin", "hall:dex4"]], + ["66·사스케", 19, 95, 71, "che_event_필살", [784, 45375, 4806, 2529, 1475], 1, "c4272184.jpg?=20240131", 66, "che_240201_0aVv", 104, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:firenum", "hall:killrate_person", "hall:tsrate"]], + ["66·진솔", 77, 15, 94, "che_event_환술", [17438, 26634, 24711, 438995, 38523], 1, "eac1560c.png?=20240114", 66, "che_240201_0aVv", 105, ["hall:tirate", "hall:ttrate"]], + ["66·스폰지바낫", 82, 64, 13, "che_event_필살", [529481, 6913, 12507, 42643, 27645], 1, "b7e0986a.jpg?=20240201", 66, "che_240201_0aVv", 106, ["hall:betgold", "hall:betwin", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["66·간지밍이", 76, 15, 92, "che_event_필살", [25107, 5640, 8378, 345401, 32953], 1, "19c0150f.png?=20230615", 66, "che_240201_0aVv", 108, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold"]], + ["66·고여르미르", 78, 90, 15, "che_event_필살", [12700, 8588, 200789, 33207, 1489], 0, "default.jpg", 66, "che_240201_0aVv", 110, ["hall:firenum"]], + ["66·뮬란", 96, 73, 15, "che_event_위압", [46335, 57716, 738354, 149627, 42269], 1, "351badde.png?=20240201", 66, "che_240201_0aVv", 111, ["hall:betrate", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["66·슬라임", 95, 75, 15, "che_event_필살", [59976, 431182, 9874, 68858, 25639], 1, "2d2da7c0.jpg?=20231130", 66, "che_240201_0aVv", 113, ["hall:dex2"]], + ["66·초코송이", 77, 91, 15, "che_event_기병", [18584, 5479, 306272, 55733, 21976], 1, "6b371ec.jpg?=20190909", 66, "che_240201_0aVv", 114, ["hall:dex3"]], + ["66·Navy마초", 76, 91, 15, "che_event_필살", [66595, 465093, 11863, 81328, 19421], 1, "37644ed3.png?=20230831", 66, "che_240201_0aVv", 115, ["hall:dex2"]], + ["66·와일드플라워", 97, 74, 15, "che_event_무쌍", [776083, 21154, 54030, 87530, 19016], 0, "default.jpg", 66, "che_240201_0aVv", 116, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["66·나는무장", 76, 94, 15, "che_event_의술", [413864, 10061, 50643, 51944, 31433], 0, "default.jpg", 66, "che_240201_0aVv", 120, ["hall:tsrate"]], + ["66·지각생", 74, 15, 97, "che_event_필살", [20430, 17353, 31852, 438603, 25525], 0, "default.jpg", 66, "che_240201_0aVv", 128, ["hall:tirate"]], + ["66·경국지색소교", 75, 90, 19, "che_event_위압", [10105, 42822, 213239, 59369, 7740], 1, "ad2669b5.jpg?=20230605", 66, "che_240201_0aVv", 134, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["66·라푼젤", 81, 88, 15, "che_event_필살", [474595, 38162, 55811, 61159, 27487], 1, "283a257a.jpg?=20240202", 66, "che_240201_0aVv", 191, ["hall:dex1"]], + ["66·ㅊㄹㅊㄹ", 79, 89, 15, "che_event_위압", [26669, 35874, 516787, 112153, 13204], 1, "63f1c106.png?=20230223", 66, "che_240201_0aVv", 205, ["hall:dex3"]], + ["66·페르난도", 76, 16, 91, "che_event_집중", [53914, 25358, 39234, 536831, 23338], 0, "default.jpg", 66, "che_240201_0aVv", 207, ["hall:betrate"]], + ["66·크루오네", 15, 95, 72, "che_event_격노", [347, 0, 11972, 928, 1046], 1, "45bf072c.jpg?=20231030", 66, "che_240201_0aVv", 317, ["hall:firenum", "hall:killrate_person", "hall:tsrate"]], + ["66·잉여_국04", 75, 16, 91, "che_event_환술", [64573, 15503, 21583, 229331, 14067], 1, "546ecd10.png?=20231007", 66, "che_240201_0aVv", 396, ["hall:firenum"]], + ["66·무지장감흥", 16, 71, 95, "che_event_저격", [0, 0, 0, 0, 0], 1, "a73ecaa1.jpg?=20230313", 66, "che_240201_0aVv", 409, ["hall:tirate"]], + ["66·도움전용유산싸개", 15, 74, 83, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 66, "che_240201_0aVv", 709, ["hall:firenum"]], + ["67·피카리오", 77, 94, 15, "che_event_돌격", [533261, 29321, 75381, 69251, 50136], 1, "24411f77.png?=20240229", 67, "che_240229_do1t", 5, ["hall:betgold", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["67·바나낫", 80, 93, 15, "che_event_필살", [716826, 17246, 7744, 32033, 29373], 1, "0f540a13.gif?=20240227", 67, "che_240229_do1t", 7, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["67·방통", 15, 74, 95, "che_event_신산", [0, 0, 0, 0, 0], 1, "fc8eab23.jpg?=20240311", 67, "che_240229_do1t", 8, ["hall:betgold", "hall:tirate"]], + ["67·슈퍼블루문", 77, 91, 16, "che_event_무쌍", [518409, 24257, 65111, 54679, 40344], 1, "51af5229.jpg?=20240229", 67, "che_240229_do1t", 9, ["chief:6", "hall:dex1", "hall:occupied"]], + ["67·앵벌스", 75, 93, 15, "che_event_징병", [489502, 16351, 28564, 43665, 28212], 1, "d787d3e7.webp?=20231021", 67, "che_240229_do1t", 13, ["hall:dex1", "hall:tsrate"]], + ["67·태호", 92, 78, 15, "che_event_견고", [42909, 411199, 28982, 50286, 23588], 1, "69494fa1.jpg?=20240228", 67, "che_240229_do1t", 17, ["hall:dex2", "hall:tlrate"]], + ["67·간지밍이", 76, 15, 98, "che_event_돌격", [80134, 32931, 42094, 889807, 52360], 1, "19c0150f.png?=20230615", 67, "che_240229_do1t", 24, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["67·최진리", 74, 15, 97, "che_event_징병", [31327, 14504, 16906, 445041, 40612], 1, "cd91897d.jpg?=20240315", 67, "che_240229_do1t", 30, ["hall:betrate", "hall:dedication", "hall:firenum"]], + ["67·엘리자베스", 96, 75, 15, "che_event_필살", [28599, 282687, 61571, 53393, 22571], 1, "034962af.png?=20240229", 67, "che_240229_do1t", 31, ["hall:dex2", "hall:tlrate"]], + ["67·뱌뱌", 76, 93, 15, "che_event_견고", [12712, 222775, 13111, 43689, 16230], 0, "default.jpg", 67, "che_240229_do1t", 35, ["hall:dex2", "hall:tsrate"]], + ["67·서희", 75, 95, 15, "che_event_돌격", [29471, 28113, 465372, 82253, 42831], 1, "8debf7e5.png?=20230308", 67, "che_240229_do1t", 39, ["chief:10", "hall:dedication", "hall:dex3", "hall:tsrate"]], + ["67·미과 팬 독구", 77, 93, 15, "che_event_필살", [29982, 14912, 382861, 21499, 24588], 1, "4ffaa6e2.png?=20240201", 67, "che_240229_do1t", 40, ["hall:betrate", "hall:betwin", "hall:dex3"]], + ["67·panpenpan", 75, 15, 95, "che_event_필살", [19404, 14933, 15994, 332399, 49233], 1, "546051df.jpg?=20240205", 67, "che_240229_do1t", 49, ["hall:dex5", "hall:winrate"]], + ["67·외심장", 78, 15, 92, "che_event_필살", [28401, 25887, 31222, 292267, 21069], 1, "36110cd.jpg?=20180826", 67, "che_240229_do1t", 51, ["hall:betrate"]], + ["67·Navy마초", 77, 95, 15, "che_event_필살", [56066, 549481, 17051, 50575, 13065], 1, "37644ed3.png?=20230831", 67, "che_240229_do1t", 56, ["hall:dex2", "hall:firenum", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["67·독튜버", 93, 79, 15, "che_event_필살", [771623, 54338, 25452, 41692, 51706], 1, "0e44328f.webp?=20240229", 67, "che_240229_do1t", 57, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["67·베이커리", 75, 15, 97, "che_event_집중", [47640, 19570, 28451, 594811, 47581], 1, "60eeda4c.jpg?=20240303", 67, "che_240229_do1t", 58, ["chief:5", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["67·마오마오", 81, 88, 16, "che_event_필살", [30158, 387420, 5679, 35882, 23784], 1, "484fce25.png?=20240304", 67, "che_240229_do1t", 59, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2"]], + ["67·로비", 15, 77, 93, "che_event_신산", [0, 0, 0, 0, 0], 1, "3e5926b7.png?=20231228", 67, "che_240229_do1t", 62, ["hall:firenum"]], + ["67·사스케", 98, 15, 80, "che_event_돌격", [83625, 45898, 56813, 1879843, 55868], 1, "c4272184.jpg?=20240131", 67, "che_240229_do1t", 65, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["67·조승상", 95, 75, 16, "che_event_위압", [338662, 42656, 14934, 40637, 23415], 1, "22e3e2c7.jpg?=20240229", 67, "che_240229_do1t", 71, ["hall:dex1", "hall:firenum", "hall:tlrate"]], + ["67·강서유서", 76, 94, 15, "che_event_위압", [488085, 22568, 17718, 64555, 36080], 1, "e5915385.png?=20240229", 67, "che_240229_do1t", 74, ["hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["67·틴더", 80, 87, 15, "che_event_위압", [112086, 211547, 10308, 46198, 32447], 1, "568faa72.png?=20240229", 67, "che_240229_do1t", 75, ["hall:dex2"]], + ["67·황혼중", 15, 72, 97, "che_event_집중", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 67, "che_240229_do1t", 78, ["hall:tirate"]], + ["67·슬라임", 93, 74, 16, "che_event_위압", [86417, 474354, 30078, 64702, 39114], 1, "2d2da7c0.jpg?=20231130", 67, "che_240229_do1t", 79, ["hall:dex2", "hall:tlrate"]], + ["67·독구탕", 76, 16, 91, "che_event_필살", [24320, 29248, 26100, 394430, 40741], 1, "41cad7ed.jpg?=20240229", 67, "che_240229_do1t", 80, ["hall:dedication"]], + ["67·지원", 15, 71, 97, "che_event_반계", [0, 0, 0, 0, 0], 1, "3abfc677.webp?=20240129", 67, "che_240229_do1t", 83, ["hall:tirate"]], + ["67·불패", 92, 77, 15, "che_event_필살", [220135, 4127, 16441, 30088, 11226], 0, "default.jpg", 67, "che_240229_do1t", 85, ["hall:tlrate"]], + ["67·해피캣", 92, 75, 15, "che_event_필살", [344208, 32555, 40699, 36541, 22174], 1, "6676fc3c.jpg?=20240229", 67, "che_240229_do1t", 88, ["hall:dex1"]], + ["67·진솔", 78, 91, 15, "che_event_저격", [26994, 281365, 11534, 21061, 34301], 1, "eac1560c.png?=20240114", 67, "che_240229_do1t", 91, ["hall:dex2"]], + ["67·북오더", 77, 15, 90, "che_event_신산", [0, 0, 0, 11438, 113004], 1, "f39217aa.gif?=20220916", 67, "che_240229_do1t", 92, ["hall:dex5", "hall:killrate"]], + ["67·신두리", 94, 74, 15, "che_event_필살", [93093, 52238, 384330, 42080, 41837], 0, "default.jpg", 67, "che_240229_do1t", 94, ["hall:dex3", "hall:tlrate"]], + ["67·Hide_D", 76, 15, 96, "che_event_환술", [20341, 8371, 10500, 387452, 22432], 1, "4569d848.png?=20230612", 67, "che_240229_do1t", 95, ["hall:tirate", "hall:ttrate"]], + ["67·날아라", 78, 92, 15, "che_event_견고", [1483, 217228, 7069, 33970, 9288], 0, "default.jpg", 67, "che_240229_do1t", 96, ["hall:dex2"]], + ["67·독구", 77, 93, 15, "che_event_무쌍", [19183, 22770, 766907, 41082, 31868], 1, "eba13a1c.png?=20240229", 67, "che_240229_do1t", 97, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["67·파우스트", 77, 15, 93, "che_event_집중", [61363, 21088, 22784, 340744, 24434], 1, "89cd31db.png?=20240229", 67, "che_240229_do1t", 98, ["hall:ttrate"]], + ["67·딸기알러지", 77, 94, 15, "che_event_필살", [86950, 17679, 553584, 78714, 41282], 0, "default.jpg", 67, "che_240229_do1t", 99, ["hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:winrate"]], + ["67·덕구", 76, 92, 16, "che_event_필살", [287848, 2897, 32480, 14309, 19363], 1, "7031e789.jpg?=20240201", 67, "che_240229_do1t", 100, ["hall:tsrate", "hall:ttrate"]], + ["67·카제", 79, 94, 15, "che_event_필살", [570926, 16597, 19980, 79772, 24430], 1, "5960bb2c.webp?=20240306", 67, "che_240229_do1t", 101, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:firenum", "hall:occupied", "hall:tsrate", "hall:ttrate"]], + ["67·링크", 79, 90, 15, "che_event_필살", [6262, 19780, 419965, 58580, 29613], 1, "bb39c026.jpg?=20240307", 67, "che_240229_do1t", 102, ["hall:dex3"]], + ["67·모래마녀", 74, 15, 96, "che_event_필살", [45768, 17698, 42008, 343517, 54689], 1, "ba50768f.jpg?=20240229", 67, "che_240229_do1t", 104, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:tirate"]], + ["67·카리나", 76, 16, 93, "che_event_척사", [28647, 14406, 44186, 512940, 39622], 1, "70256bf2.png?=20240229", 67, "che_240229_do1t", 105, ["chief:9", "hall:dedication", "hall:dex4", "hall:warnum"]], + ["67·서림동", 79, 92, 15, "che_event_돌격", [16532, 42377, 480212, 83986, 35088], 0, "default.jpg", 67, "che_240229_do1t", 106, ["hall:dex3"]], + ["67·기연만합니다", 71, 15, 98, "che_event_귀병", [0, 0, 0, 18322, 4958], 0, "default.jpg", 67, "che_240229_do1t", 107, ["hall:dedication", "hall:killrate_person", "hall:tirate", "hall:ttrate"]], + ["67·대교", 91, 15, 78, "che_event_필살", [64314, 26586, 37625, 547221, 21345], 1, "9f0e6dcc.jpg?=20220808", 67, "che_240229_do1t", 108, ["chief:7", "hall:dex4"]], + ["67·100000$", 96, 76, 15, "che_event_견고", [1211871, 20386, 36288, 53949, 30015], 1, "eebb4e34.jpg?=20240229", 67, "che_240229_do1t", 110, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["67·파이", 78, 15, 89, "che_event_척사", [28908, 44041, 29608, 451009, 40711], 0, "default.jpg", 67, "che_240229_do1t", 112, ["hall:dex4"]], + ["67·육각형무지장", 15, 70, 100, "che_event_필살", [0, 0, 0, 0, 0], 1, "fab823dd.png?=20240229", 67, "che_240229_do1t", 116, ["hall:betrate", "hall:experience", "hall:tirate"]], + ["67·무지와플", 15, 71, 98, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 67, "che_240229_do1t", 117, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["67·순욱", 78, 15, 89, "che_event_필살", [37860, 6309, 11991, 287311, 11356], 1, "769bfc03.jpg?=20240229", 67, "che_240229_do1t", 118, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["67·예턴이나", 78, 15, 93, "che_event_집중", [52184, 22698, 41830, 613568, 36958], 0, "default.jpg", 67, "che_240229_do1t", 119, ["hall:betwin", "hall:dex4", "hall:experience"]], + ["67·춤추는달패이", 86, 84, 15, "che_event_공성", [6687, 6686, 5604, 6065, 814292], 1, "fc3385d6.gif?=20240301", 67, "che_240229_do1t", 120, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:ttrate"]], + ["67·사렌", 75, 15, 96, "che_event_반계", [38495, 23825, 51959, 585918, 26819], 1, "9fb04557.png?=20240229", 67, "che_240229_do1t", 121, ["hall:dex4", "hall:killcrew_person", "hall:winrate"]], + ["67·아키노", 76, 94, 15, "che_event_필살", [13347, 40375, 554225, 83460, 37500], 1, "69421e4e.png?=20240319", 67, "che_240229_do1t", 122, ["hall:betwin", "hall:dex3", "hall:tsrate"]], + ["67·유카", 95, 73, 15, "che_event_공성", [41887, 37268, 33338, 53476, 841064], 0, "default.jpg", 67, "che_240229_do1t", 127, ["hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:ttrate"]], + ["67·kims24", 88, 80, 15, "che_event_무쌍", [47425, 513394, 17367, 52223, 25639], 1, "8368fde2.png?=20240201", 67, "che_240229_do1t", 128, ["hall:dex2"]], + ["67·세르네오", 15, 78, 92, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 67, "che_240229_do1t", 129, ["hall:firenum", "hall:ttrate"]], + ["67·덕", 96, 76, 15, "che_event_필살", [29050, 11990, 562260, 30837, 27648], 0, "default.jpg", 67, "che_240229_do1t", 133, ["hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["67·마요이", 70, 15, 101, "che_event_집중", [0, 0, 0, 5520, 2648], 1, "2b49c945.png?=20230921", 67, "che_240229_do1t", 138, ["hall:tirate", "hall:ttrate"]], + ["67·니쉬", 15, 77, 90, "che_event_척사", [0, 0, 0, 0, 0], 1, "40dc4af6.png?=20240130", 67, "che_240229_do1t", 141, ["hall:betrate"]], + ["67·무능장", 15, 83, 86, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 67, "che_240229_do1t", 211, ["hall:firenum"]], + ["67·부활한협동전", 80, 90, 15, "che_event_격노", [20288, 33082, 436264, 73614, 21891], 1, "45bf072c.jpg?=20231030", 67, "che_240229_do1t", 213, ["hall:dex3"]], + ["67·ㅊㄹㅊㄹ", 78, 15, 91, "che_event_필살", [46594, 30099, 54399, 544385, 47946], 1, "63f1c106.png?=20230223", 67, "che_240229_do1t", 227, ["hall:dex4", "hall:dex5", "hall:occupied"]], + ["67·캬루", 76, 15, 93, "che_event_필살", [48355, 42410, 41551, 470368, 33730], 1, "98bfa089.jpg?=20240302", 67, "che_240229_do1t", 352, ["hall:dex4"]], + ["68·공학토끼", 78, 16, 90, "che_event_필살", [50359, 28761, 33219, 527291, 41203], 1, "a236c64b.jpg?=20240328", 68, "che_240328_MzI5", 5, ["hall:occupied"]], + ["68·포카리나메코", 78, 89, 15, "che_event_저격", [614753, 9255, 13411, 71681, 20476], 1, "28431fbf.jpg?=20240328", 68, "che_240328_MzI5", 7, ["hall:dex1"]], + ["68·핑핑이나메코", 93, 74, 16, "che_event_징병", [103996, 9796, 28096, 88710, 187496], 1, "da6b8964.jpg?=20240328", 68, "che_240328_MzI5", 9, ["hall:dex5", "hall:occupied", "hall:tlrate"]], + ["68·無名別動隊", 66, 13, 79, "che_event_환술", [15378, 25776, 1425, 329029, 24600], 1, "45701851.gif?=20240417", 68, "che_240328_MzI5", 12, ["hall:betwin", "hall:dex4", "hall:dex5", "hall:occupied", "hall:tirate"]], + ["68·인민의 영웅 독구", 18, 71, 93, "che_event_환술", [0, 0, 0, 0, 0], 1, "4ffaa6e2.png?=20240201", 68, "che_240328_MzI5", 14, ["hall:betwin"]], + ["68·척", 78, 90, 15, "che_event_척사", [25093, 40518, 626471, 120429, 35898], 1, "7cb75480.png?=20221202", 68, "che_240328_MzI5", 15, ["hall:dex3", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["68·압도적으로 긍정적", 95, 77, 15, "che_event_돌격", [938825, 45630, 75014, 179787, 35391], 1, "00051cde.png?=20240328", 68, "che_240328_MzI5", 16, ["hall:betgold", "hall:dex1", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["68·원영토끼", 78, 90, 15, "che_event_무쌍", [570086, 20923, 71405, 105167, 30152], 1, "c7152c79.jpg?=20240328", 68, "che_240328_MzI5", 18, ["hall:dex1", "hall:ttrate"]], + ["68·크루오네시아유카류", 82, 91, 15, "che_event_필살", [792558, 6051, 16200, 86835, 17918], 1, "15d7852e.jpg?=20240328", 68, "che_240328_MzI5", 22, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["68·와일드플라워", 93, 77, 16, "che_event_돌격", [59276, 31116, 1126634, 21202, 38264], 0, "default.jpg", 68, "che_240328_MzI5", 23, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["68·마요이", 76, 15, 92, "che_event_반계", [83475, 9750, 10630, 418616, 18198], 1, "2b49c945.png?=20230921", 68, "che_240328_MzI5", 25, ["hall:dedication", "hall:tirate"]], + ["68·카이스트", 81, 15, 91, "che_event_필살", [35040, 14886, 25971, 773732, 13484], 1, "e7e27cd6.jpg?=20221125", 68, "che_240328_MzI5", 27, ["hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["68·덕구", 79, 89, 16, "che_event_위압", [613774, 15265, 46213, 118817, 32955], 1, "7031e789.jpg?=20240201", 68, "che_240328_MzI5", 35, ["hall:dex1", "hall:firenum", "hall:ttrate"]], + ["68·히메카와 네네", 77, 15, 93, "che_event_신중", [23155, 24322, 18906, 387754, 17988], 1, "0c226afa.png?=20240327", 68, "che_240328_MzI5", 36, ["hall:tirate"]], + ["68·최진리", 78, 15, 94, "che_event_징병", [74120, 48638, 27321, 794233, 131294], 1, "2d3506dd.webp?=20240414", 68, "che_240328_MzI5", 46, ["chief:5", "hall:betrate", "hall:dex4", "hall:dex5"]], + ["68·SARS", 79, 15, 93, "che_event_환술", [75387, 27861, 30107, 853934, 35277], 1, "b84944.jpg?=20180829", 68, "che_240328_MzI5", 48, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:winrate"]], + ["68·뭐할까나", 79, 95, 15, "che_event_필살", [1215471, 20156, 21948, 76692, 32740], 0, "default.jpg", 68, "che_240328_MzI5", 49, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["68·리안", 77, 15, 92, "che_event_필살", [55995, 15227, 19006, 628390, 35901], 0, "default.jpg", 68, "che_240328_MzI5", 54, ["hall:dedication", "hall:experience"]], + ["68·경국지색소교", 80, 87, 15, "che_event_무쌍", [55077, 515643, 26951, 127413, 21014], 1, "ad2669b5.jpg?=20230605", 68, "che_240328_MzI5", 56, ["hall:dex2"]], + ["68·Navy마초", 87, 85, 15, "che_event_척사", [116546, 665580, 17688, 149230, 37106], 1, "37644ed3.png?=20230831", 68, "che_240328_MzI5", 58, ["hall:dex2", "hall:ttrate", "hall:winrate"]], + ["68·서림동", 79, 89, 15, "che_event_기병", [15298, 45432, 472219, 95984, 17574], 0, "default.jpg", 68, "che_240328_MzI5", 59, ["hall:dex3", "hall:tsrate"]], + ["68·이드", 94, 73, 15, "che_event_필살", [550122, 37964, 40712, 109486, 22011], 1, "fc3385d6.gif?=20240301", 68, "che_240328_MzI5", 62, ["hall:tlrate"]], + ["68·조예린", 97, 15, 74, "che_event_환술", [32160, 44326, 13855, 553560, 24250], 1, "a7a31038.png?=20240328", 68, "che_240328_MzI5", 69, ["hall:tlrate"]], + ["68·파츄리", 15, 73, 96, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 68, "che_240328_MzI5", 74, ["hall:dedication", "hall:tirate"]], + ["68·ㅊㄹㅊㄹ", 79, 90, 15, "che_event_위압", [51411, 501103, 7051, 88596, 14764], 1, "63f1c106.png?=20230223", 68, "che_240328_MzI5", 75, ["hall:dex2"]], + ["68·라라", 79, 89, 15, "che_event_격노", [70196, 465655, 19709, 130252, 30677], 1, "89907c4a.jpg?=20240324", 68, "che_240328_MzI5", 76, ["hall:dex2"]], + ["68·임사영", 80, 15, 92, "che_event_필살", [49165, 36794, 18594, 612062, 12487], 1, "0b5a2642.jpg?=20240305", 68, "che_240328_MzI5", 78, ["hall:ttrate"]], + ["68·라콘타", 79, 93, 15, "che_event_의술", [77123, 1236559, 19776, 144996, 35777], 0, "default.jpg", 68, "che_240328_MzI5", 84, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["68·응나", 77, 15, 96, "che_event_귀병", [29931, 42974, 35373, 1109595, 33903], 1, "35be5013.png?=20240328", 68, "che_240328_MzI5", 86, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["68·황금나메코", 79, 88, 15, "che_event_무쌍", [41263, 33545, 477747, 172676, 29335], 1, "b489d617.png?=20240328", 68, "che_240328_MzI5", 89, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3"]], + ["68·대장토끼", 75, 16, 92, "che_event_필살", [77889, 33900, 39092, 765188, 50023], 1, "6cfc470a.jpg?=20240328", 68, "che_240328_MzI5", 91, ["hall:dex4", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["68·야생토끼", 90, 79, 15, "che_event_척사", [42687, 28705, 661860, 122570, 35017], 1, "cfd1aa8a.png?=20240328", 68, "che_240328_MzI5", 94, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3"]], + ["68·스탈린", 92, 78, 16, "che_event_위압", [1187106, 22451, 56283, 138076, 48842], 1, "dbf33f82.jpg?=20240328", 68, "che_240328_MzI5", 95, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["68·1일1접속", 78, 88, 15, "che_event_징병", [28899, 36097, 385464, 81401, 45535], 0, "default.jpg", 68, "che_240328_MzI5", 97, ["hall:dex5"]], + ["68·kims24", 80, 90, 16, "che_event_돌격", [13378, 12877, 705830, 13021, 19854], 1, "8368fde2.png?=20240201", 68, "che_240328_MzI5", 98, ["hall:dex3", "hall:tsrate"]], + ["68·지장", 76, 16, 91, "che_event_집중", [48686, 34636, 84987, 456810, 12948], 0, "default.jpg", 68, "che_240328_MzI5", 99, ["hall:betrate", "hall:tirate"]], + ["68·탕후루", 96, 73, 15, "che_event_필살", [1038844, 47751, 62251, 107945, 44444], 1, "2f5f2060.jpg?=20240328", 68, "che_240328_MzI5", 100, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate"]], + ["68·진솔", 78, 90, 16, "che_event_저격", [61550, 350608, 17137, 74735, 19334], 1, "eac1560c.png?=20240114", 68, "che_240328_MzI5", 101, ["hall:dex2", "hall:tsrate"]], + ["68·셀레미나메코", 78, 15, 92, "che_event_환술", [13474, 31095, 20675, 598824, 14177], 1, "13fb8af2.jpg?=20240328", 68, "che_240328_MzI5", 103, ["hall:tirate"]], + ["68·마이나메코", 91, 15, 76, "che_event_집중", [36655, 50184, 85996, 459030, 35624], 1, "432f679b.jpg?=20240328", 68, "che_240328_MzI5", 104, ["hall:tlrate"]], + ["68·하나미 코토하", 78, 89, 15, "che_event_척사", [552521, 19457, 52816, 94067, 28238], 1, "7557b51f.png?=20240329", 68, "che_240328_MzI5", 105, ["hall:betrate", "hall:dex1"]], + ["68·쿄스케", 77, 93, 15, "che_event_필살", [63342, 24083, 644191, 141738, 24695], 1, "81c9cf40.jpg?=20240331", 68, "che_240328_MzI5", 106, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:experience", "hall:tsrate"]], + ["68·김정은", 82, 90, 15, "che_event_필살", [78651, 1293785, 17307, 52133, 60298], 1, "2a25e139.png?=20240328", 68, "che_240328_MzI5", 107, ["chief:8", "hall:betgold", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["68·ㅎㄴ", 89, 80, 15, "che_event_무쌍", [387291, 35863, 318925, 54248, 19141], 0, "default.jpg", 68, "che_240328_MzI5", 108, ["hall:betrate", "hall:warnum"]], + ["68·사스케", 77, 15, 92, "che_event_필살", [45578, 30686, 12761, 517924, 14999], 1, "8c868c0c.jpg?=20240328", 68, "che_240328_MzI5", 110, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:occupied"]], + ["68·래빗홀", 81, 89, 15, "che_event_돌격", [519409, 39068, 65164, 169799, 34582], 1, "1f21130f.gif?=20240402", 68, "che_240328_MzI5", 112, ["hall:tsrate"]], + ["68·Hide_D", 77, 15, 93, "che_event_신중", [22971, 20022, 5006, 645179, 26283], 1, "4569d848.png?=20230612", 68, "che_240328_MzI5", 114, ["chief:9", "hall:dedication", "hall:dex4", "hall:ttrate"]], + ["68·퍄퍄", 79, 89, 15, "che_event_견고", [672441, 14972, 51929, 106140, 35456], 0, "default.jpg", 68, "che_240328_MzI5", 115, ["hall:dex1", "hall:tsrate"]], + ["68·대교", 94, 15, 74, "che_event_필살", [27137, 33044, 38138, 432157, 16349], 1, "9f0e6dcc.jpg?=20220808", 68, "che_240328_MzI5", 116, ["hall:tlrate"]], + ["68·전사의 모험", 93, 73, 15, "che_event_척사", [115961, 324296, 113936, 93571, 28040], 1, "61f67d71.jpg?=20240329", 68, "che_240328_MzI5", 117, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:tlrate"]], + ["68·모니카", 79, 91, 15, "che_event_의술", [60290, 29597, 835404, 81291, 45884], 1, "b7b0c496.jpg?=20240328", 68, "che_240328_MzI5", 118, ["hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:tsrate", "hall:warnum"]], + ["68·간지밍이", 77, 16, 91, "che_event_신산", [57391, 12598, 25996, 535967, 37861], 1, "19c0150f.png?=20230615", 68, "che_240328_MzI5", 119, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["68·니쉬", 87, 16, 79, "che_event_신중", [37970, 42380, 44763, 436507, 21067], 1, "215c3ff3.png?=20240402", 68, "che_240328_MzI5", 122, ["hall:betrate", "hall:betwingold"]], + ["68·슬라임", 91, 76, 15, "che_event_격노", [20962, 45319, 477016, 97922, 22086], 1, "2d2da7c0.jpg?=20231130", 68, "che_240328_MzI5", 124, ["hall:dex3", "hall:tlrate"]], + ["68·깔깔유머", 80, 88, 15, "che_event_필살", [17144, 24092, 494678, 95611, 12196], 0, "default.jpg", 68, "che_240328_MzI5", 125, ["hall:dex3"]], + ["68·개미호랑이", 78, 15, 93, "che_event_징병", [58105, 46967, 21865, 768900, 23013], 0, "default.jpg", 68, "che_240328_MzI5", 126, ["hall:dex4", "hall:tirate"]], + ["68·압도적으로 부정적", 79, 15, 91, "che_event_집중", [48636, 16808, 33055, 673110, 34019], 1, "0e7dcff6.gif?=20240417", 68, "che_240328_MzI5", 130, ["chief:7", "hall:dedication", "hall:dex4"]], + ["68·resin", 79, 15, 90, "che_event_필살", [23337, 19098, 18713, 575866, 38465], 0, "default.jpg", 68, "che_240328_MzI5", 132, ["hall:dedication", "hall:experience", "hall:occupied"]], + ["68·불패", 79, 15, 91, "che_event_필살", [23681, 40435, 44154, 615888, 19302], 1, "b2fd1cac.jpg?=20240401", 68, "che_240328_MzI5", 136, ["hall:winrate"]], + ["68·제이크", 78, 15, 92, "che_event_집중", [20267, 20180, 9952, 556250, 52512], 1, "63937425.jpg?=20240328", 68, "che_240328_MzI5", 139, ["hall:dex5"]], + ["68·세르네오", 15, 76, 90, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 68, "che_240328_MzI5", 141, ["hall:ttrate"]], + ["68·깔보지마라", 78, 16, 91, "che_event_필살", [33562, 8785, 7300, 276097, 17651], 0, "default.jpg", 68, "che_240328_MzI5", 143, ["hall:betwin"]], + ["68·주사위나메코", 78, 16, 91, "che_event_반계", [33417, 18236, 20172, 447166, 33236], 1, "521bb79a.jpg?=20240329", 68, "che_240328_MzI5", 144, ["hall:ttrate"]], + ["68·Air", 79, 90, 15, "che_event_위압", [73101, 560697, 25758, 107954, 59409], 0, "default.jpg", 68, "che_240328_MzI5", 145, ["hall:dex2", "hall:dex5", "hall:firenum"]], + ["68·황혼중", 15, 72, 98, "che_event_집중", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 68, "che_240328_MzI5", 197, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["68·くま", 77, 15, 92, "che_event_집중", [37546, 30801, 26889, 676801, 38582], 1, "770f53.jpg?=20190718", 68, "che_240328_MzI5", 216, ["hall:dex4"]], + ["68·서희", 76, 15, 92, "che_event_필살", [44321, 38127, 32534, 539920, 40848], 1, "8debf7e5.png?=20230308", 68, "che_240328_MzI5", 221, ["hall:betrate", "hall:tirate"]], + ["68·하루5분", 79, 16, 88, "che_event_신산", [34335, 6568, 11854, 364144, 16014], 0, "default.jpg", 68, "che_240328_MzI5", 255, ["hall:firenum"]], + ["68·냐옹", 16, 75, 92, "che_event_집중", [230, 0, 0, 649, 0], 0, "default.jpg", 68, "che_240328_MzI5", 312, ["hall:dedication"]], + ["68·조승상", 15, 91, 76, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "6f27503f.png?=20240322", 68, "che_240328_MzI5", 330, ["hall:firenum", "hall:ttrate"]], + ["68·초아인지", 81, 15, 86, "che_event_필살", [24579, 57946, 10466, 568180, 36926], 1, "fc1050ec.png?=20240408", 68, "che_240328_MzI5", 443, ["hall:dex2", "hall:occupied"]], + ["69·쀼관", 17, 85, 82, "che_event_의술", [4942, 1760, 9294, 2809, 8341], 1, "058ad315.gif?=20240429", 69, "che_240425_kTje", 7, ["hall:dedication"]], + ["69·수사반장1958", 15, 74, 97, "che_event_의술", [0, 0, 0, 0, 0], 1, "f933d65f.jpg?=20240424", 69, "che_240425_kTje", 9, ["hall:dedication", "hall:tirate"]], + ["69·바나낫", 81, 91, 15, "che_event_필살", [430764, 280946, 290162, 39644, 29562], 1, "7a75777f.gif?=20240422", 69, "che_240425_kTje", 16, ["hall:dex2", "hall:firenum", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["69·와일드플라워", 78, 15, 92, "che_event_필살", [34606, 54569, 13654, 925819, 42935], 0, "default.jpg", 69, "che_240425_kTje", 21, ["hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["69·Stardust", 78, 89, 15, "che_event_필살", [54383, 47093, 400161, 74833, 22320], 0, "default.jpg", 69, "che_240425_kTje", 26, ["hall:ttrate"]], + ["69·panpenpan", 78, 15, 93, "che_event_필살", [83917, 9116, 13268, 566788, 17184], 1, "521bb79a.jpg?=20240329", 69, "che_240425_kTje", 28, ["hall:ttrate", "hall:winrate"]], + ["69·로비", 15, 73, 96, "che_event_척사", [0, 0, 0, 0, 0], 1, "3e5926b7.png?=20231228", 69, "che_240425_kTje", 30, ["hall:tirate"]], + ["69·텟사", 76, 93, 16, "che_event_척사", [494711, 18082, 25961, 70927, 42137], 0, "default.jpg", 69, "che_240425_kTje", 31, ["chief:8", "hall:tsrate"]], + ["69·기연봇", 15, 74, 95, "che_event_집중", [0, 0, 0, 0, 0], 1, "61c5e215.png?=20240426", 69, "che_240425_kTje", 32, ["hall:dedication"]], + ["69·くま", 78, 16, 90, "che_event_집중", [27451, 25569, 27347, 536566, 25803], 1, "770f53.jpg?=20190718", 69, "che_240425_kTje", 33, ["hall:occupied"]], + ["69·Navy마초", 78, 92, 15, "che_event_필살", [693181, 11058, 52826, 107277, 31134], 1, "37644ed3.png?=20230831", 69, "che_240425_kTje", 44, ["hall:dex1", "hall:tsrate"]], + ["69·무다구치 렌야", 96, 73, 15, "che_event_견고", [30404, 585468, 36872, 27065, 29206], 1, "0e023deb.jpg?=20240425", 69, "che_240425_kTje", 47, ["hall:dex2", "hall:tlrate"]], + ["69·불패", 82, 88, 15, "che_event_위압", [68685, 540104, 72079, 95514, 23913], 1, "b2fd1cac.jpg?=20240401", 69, "che_240425_kTje", 48, ["hall:dex2"]], + ["69·Air", 78, 88, 18, "che_event_위압", [77721, 374512, 121068, 136307, 9210], 0, "default.jpg", 69, "che_240425_kTje", 49, ["hall:betrate", "hall:dex2"]], + ["69·임사영", 77, 15, 98, "che_event_필살", [67566, 30307, 26308, 1274387, 26248], 1, "0b5a2642.jpg?=20240305", 69, "che_240425_kTje", 51, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["69·이세리아", 81, 94, 15, "che_event_필살", [33172, 1076241, 25999, 73768, 28573], 1, "de1e45d5.png?=20240425", 69, "che_240425_kTje", 58, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["69·호무새", 76, 92, 16, "che_event_필살", [46960, 50271, 601638, 55681, 8725], 1, "1b455e86.png?=20240425", 69, "che_240425_kTje", 60, ["hall:dex3", "hall:tsrate"]], + ["69·사스", 80, 15, 91, "che_event_집중", [68838, 101547, 41842, 823000, 60921], 1, "eea28986.webp?=20240501", 69, "che_240425_kTje", 67, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:occupied"]], + ["69·셀레미", 78, 15, 92, "che_event_환술", [14878, 39575, 9823, 460899, 47817], 1, "13fb8af2.jpg?=20240328", 69, "che_240425_kTje", 70, ["hall:occupied"]], + ["69·네이", 80, 15, 92, "che_event_필살", [41312, 17986, 22496, 579510, 23619], 0, "default.jpg", 69, "che_240425_kTje", 72, ["hall:ttrate"]], + ["69·서희", 82, 15, 90, "che_event_필살", [47360, 40045, 50878, 731346, 21537], 1, "8debf7e5.png?=20230308", 69, "che_240425_kTje", 75, ["hall:dex4"]], + ["69·POCARI", 89, 80, 15, "che_event_필살", [33635, 53345, 570879, 99768, 95451], 1, "28431fbf.jpg?=20240328", 69, "che_240425_kTje", 77, ["hall:dex3", "hall:dex5", "hall:occupied"]], + ["69·김수현", 94, 78, 16, "che_event_필살", [849633, 13157, 19239, 93281, 26156], 1, "3ce20bb4.jpg?=20240425", 69, "che_240425_kTje", 78, ["hall:betrate", "hall:dex1", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["69·평민킬러", 80, 90, 16, "che_event_척사", [879713, 42019, 51388, 78967, 15642], 1, "841f30aa.jpg?=20240425", 69, "che_240425_kTje", 80, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:killrate_person"]], + ["69·꿀병", 93, 76, 15, "che_event_궁병", [470287, 250273, 109437, 121141, 51925], 0, "default.jpg", 69, "che_240425_kTje", 81, ["hall:betrate", "hall:occupied"]], + ["69·SARS", 82, 91, 15, "che_event_필살", [1419778, 39300, 77394, 66649, 68857], 1, "b84944.jpg?=20180829", 69, "che_240425_kTje", 85, ["chief:12", "hall:betrate", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["69·니쉬", 89, 80, 16, "che_event_견고", [676558, 16541, 26724, 53012, 22104], 1, "215c3ff3.png?=20240402", 69, "che_240425_kTje", 86, ["hall:dex1"]], + ["69·색스", 95, 78, 15, "che_event_필살", [106675, 10020, 782964, 70047, 31757], 1, "4a26369c.jpg?=20240425", 69, "che_240425_kTje", 89, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["69·블랙죠", 92, 78, 16, "che_event_필살", [33957, 87204, 647253, 81542, 41281], 0, "default.jpg", 69, "che_240425_kTje", 90, ["hall:dex3", "hall:firenum", "hall:ttrate"]], + ["69·프리허그", 77, 15, 95, "che_event_필살", [46926, 19528, 56730, 864955, 29845], 1, "6a5c250a.gif?=20240425", 69, "che_240425_kTje", 91, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:killrate", "hall:killrate_person"]], + ["69·無名別動隊", 91, 77, 16, "che_event_필살", [53036, 556840, 43053, 81377, 29421], 1, "b9858da9.png?=20240516", 69, "che_240425_kTje", 92, ["hall:dex2", "hall:firenum"]], + ["69·Attila the Hun", 93, 78, 15, "che_event_돌격", [39080, 504207, 4294, 64452, 21848], 1, "40cc109c.png?=20240425", 69, "che_240425_kTje", 95, ["hall:betwin", "hall:dex2", "hall:tlrate", "hall:winrate"]], + ["69·방시혁", 90, 80, 15, "che_event_척사", [341654, 35907, 78460, 40638, 46224], 1, "9be18403.png?=20240425", 69, "che_240425_kTje", 96, ["hall:tlrate"]], + ["69·ㅊㄹㅊㄹ", 80, 89, 15, "che_event_필살", [10514, 91781, 465972, 108215, 14002], 1, "63f1c106.png?=20230223", 69, "che_240425_kTje", 98, ["hall:dex3"]], + ["69·봄꽃", 81, 89, 15, "che_event_필살", [568002, 6898, 54948, 77416, 28040], 1, "51333a34.png?=20240425", 69, "che_240425_kTje", 99, ["hall:dex1"]], + ["69·TASK0400", 79, 15, 88, "che_event_집중", [63858, 44756, 37178, 561944, 59405], 1, "1cac76d9.jpg?=20240427", 69, "che_240425_kTje", 101, ["hall:betrate", "hall:dex5"]], + ["69·독구", 79, 15, 94, "che_event_필살", [34481, 19724, 24787, 827237, 36399], 1, "d83bcfac.gif?=20240424", 69, "che_240425_kTje", 102, ["hall:betwin", "hall:dex4", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:winrate"]], + ["69·개미호랑이", 78, 15, 94, "che_event_필살", [58471, 38893, 43723, 732517, 62052], 1, "4baaf9fc.png?=20240507", 69, "che_240425_kTje", 103, ["chief:7", "hall:dex4", "hall:dex5", "hall:tirate"]], + ["69·RAKONTA", 83, 88, 15, "che_event_견고", [988855, 24718, 114075, 132927, 65400], 1, "578d3ce5.png?=20240428", 69, "che_240425_kTje", 104, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["69·무장", 80, 96, 15, "che_event_필살", [14534, 31964, 1202376, 80858, 27098], 0, "default.jpg", 69, "che_240425_kTje", 105, ["hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["69·덕구", 80, 90, 15, "che_event_위압", [620815, 15407, 32328, 143238, 20711], 1, "7031e789.jpg?=20240201", 69, "che_240425_kTje", 108, ["hall:dex1", "hall:tsrate"]], + ["69·홍해인", 16, 80, 88, "che_event_반계", [0, 0, 0, 0, 0], 1, "53aea32c.jpg?=20240425", 69, "che_240425_kTje", 109, ["hall:betrate", "hall:dedication"]], + ["69·강서유서", 15, 81, 87, "che_event_징병", [0, 0, 0, 0, 0], 1, "0439156f.png?=20240425", 69, "che_240425_kTje", 110, ["hall:betrate", "hall:dedication", "hall:firenum"]], + ["69·베이커리", 16, 95, 72, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "b9acbf2a.jpg?=20240425", 69, "che_240425_kTje", 111, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:firenum", "hall:tsrate"]], + ["69·태호", 16, 74, 94, "che_event_신중", [0, 0, 0, 0, 0], 1, "9f7ba4f9.jpg?=20240425", 69, "che_240425_kTje", 112, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience"]], + ["69·카이스트", 77, 15, 92, "che_event_환술", [38117, 46289, 26472, 532270, 41877], 1, "e7e27cd6.jpg?=20221125", 69, "che_240425_kTje", 113, ["hall:occupied"]], + ["69·에드워드", 81, 17, 92, "che_event_필살", [34640, 46697, 30435, 1312596, 47690], 1, "4a395057.png?=20240427", 69, "che_240425_kTje", 115, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["69·마요이", 78, 15, 92, "che_event_집중", [27984, 35777, 41274, 673542, 41251], 1, "2b49c945.png?=20230921", 69, "che_240425_kTje", 117, ["hall:dex4", "hall:ttrate"]], + ["69·이세리 니나", 90, 78, 15, "che_event_징병", [649389, 31072, 66231, 98080, 16974], 1, "3bfbbb49.jpg?=20240415", 69, "che_240425_kTje", 118, ["hall:dex1", "hall:tlrate"]], + ["69·갈길도바쁜데", 77, 15, 94, "che_event_집중", [24523, 42005, 32400, 569231, 59123], 0, "default.jpg", 69, "che_240425_kTje", 119, ["hall:betwin", "hall:dex5", "hall:tirate"]], + ["69·냐옹", 76, 92, 17, "che_event_무쌍", [19024, 43871, 320964, 56482, 18909], 1, "9a6bf29a.jpg?=20231130", 69, "che_240425_kTje", 121, ["hall:firenum"]], + ["69·척", 77, 90, 15, "che_event_필살", [129219, 81396, 435812, 124899, 23189], 1, "7cb75480.png?=20221202", 69, "che_240425_kTje", 122, ["hall:tsrate"]], + ["69·Hide_D", 78, 15, 94, "che_event_신산", [41638, 30295, 28884, 449354, 16427], 1, "4569d848.png?=20230612", 69, "che_240425_kTje", 123, ["hall:tirate"]], + ["69·슬라임", 82, 60, 14, "che_event_공성", [23537, 5962, 29947, 27226, 796237], 1, "2d2da7c0.jpg?=20231130", 69, "che_240425_kTje", 124, ["hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["69·킬라그램", 93, 74, 15, "che_event_척사", [360292, 25080, 43686, 49040, 13245], 1, "75677fe6.jpg?=20240427", 69, "che_240425_kTje", 125, ["hall:tlrate"]], + ["69·슈퍼블루문", 15, 89, 78, "che_event_위압", [0, 0, 0, 0, 0], 0, "default.jpg", 69, "che_240425_kTje", 128, ["hall:dedication"]], + ["69·난천", 15, 77, 91, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 69, "che_240425_kTje", 129, ["hall:dedication"]], + ["69·통장", 97, 15, 73, "che_event_신산", [101499, 15748, 33400, 500072, 23349], 0, "default.jpg", 69, "che_240425_kTje", 130, ["hall:tlrate"]], + ["69·호두", 80, 92, 15, "che_event_격노", [87678, 115760, 713852, 101235, 58382], 1, "fc6ca4d9.png?=20240425", 69, "che_240425_kTje", 132, ["hall:dex3", "hall:dex5", "hall:occupied"]], + ["69·무지쟝", 76, 15, 93, "che_event_환술", [14060, 8479, 26210, 382516, 25464], 0, "default.jpg", 69, "che_240425_kTje", 136, ["hall:betgold"]], + ["69·최진리", 78, 94, 15, "che_event_돌격", [96320, 60341, 650881, 167576, 24532], 1, "2d3506dd.webp?=20240414", 69, "che_240425_kTje", 139, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:tsrate"]], + ["69·러브레터", 15, 73, 97, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 69, "che_240425_kTje", 141, ["hall:tirate"]], + ["69·북오더", 79, 92, 16, "che_event_필살", [125047, 1001618, 27519, 140633, 58705], 1, "0e7dcff6.gif?=20240417", 69, "che_240425_kTje", 142, ["chief:11", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["69·알렉스 카젤느", 77, 15, 95, "che_event_징병", [49058, 24097, 20070, 578601, 13244], 1, "9486aab8.png?=20240424", 69, "che_240425_kTje", 144, ["hall:tirate"]], + ["69·지원", 15, 72, 94, "che_event_저격", [0, 0, 0, 0, 0], 1, "3abfc677.webp?=20240129", 69, "che_240425_kTje", 204, ["hall:ttrate"]], + ["69·경매장테러범", 91, 15, 76, "che_event_필살", [95043, 63932, 43860, 746415, 51169], 0, "default.jpg", 69, "che_240425_kTje", 205, ["chief:5", "hall:dex4"]], + ["69·열국지", 90, 78, 15, "che_event_위압", [533340, 92969, 50903, 124251, 27895], 1, "59758e06.webp?=20240427", 69, "che_240425_kTje", 213, ["hall:dex1", "hall:tlrate"]], + ["69·황혼중", 15, 72, 96, "che_event_척사", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 69, "che_240425_kTje", 268, ["hall:ttrate"]], + ["69·돌아온너구리", 81, 87, 17, "che_event_돌격", [46986, 424716, 19406, 125423, 6444], 0, "default.jpg", 69, "che_240425_kTje", 276, ["hall:dex2"]], + ["69·리안", 77, 92, 15, "che_event_무쌍", [31041, 54343, 518673, 96177, 52032], 0, "default.jpg", 69, "che_240425_kTje", 289, ["chief:6", "hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["69·진솔", 79, 87, 15, "che_event_견고", [49469, 323507, 13195, 94410, 8317], 1, "eac1560c.png?=20240114", 69, "che_240425_kTje", 292, ["hall:dex2"]], + ["69·이재모피자", 17, 74, 90, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 69, "che_240425_kTje", 311, ["hall:firenum"]], + ["69·tqtt", 16, 75, 91, "che_event_의술", [0, 0, 160, 7789, 0], 0, "default.jpg", 69, "che_240425_kTje", 318, ["hall:killrate_person"]], + ["69·종방징", 15, 85, 77, "che_event_무쌍", [0, 0, 0, 0, 0], 0, "default.jpg", 69, "che_240425_kTje", 328, ["hall:firenum"]], + ["69·불곰", 15, 74, 92, "che_event_의술", [0, 0, 0, 0, 0], 1, "5cd8411.png?=20220513", 69, "che_240425_kTje", 412, ["hall:tirate"]], + ["69·조승상", 91, 74, 15, "che_event_징병", [45304, 68363, 501152, 147749, 33977], 1, "6f27503f.png?=20240322", 69, "che_240425_kTje", 426, ["hall:dex3", "hall:firenum"]], + ["69·유니스", 15, 78, 84, "che_event_집중", [0, 0, 0, 0, 0], 1, "66b5c5cb.jpg?=20240507", 69, "che_240425_kTje", 611, ["hall:ttrate"]], + ["71·대마법사호바스", 76, 16, 92, "che_event_집중", [26360, 6661, 22852, 385100, 30264], 1, "fa5fdda7.png?=20240620", 71, "che_240620_EurY", 9, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:ttrate", "hall:winrate"]], + ["71·로비", 15, 72, 94, "che_event_신중", [0, 0, 0, 0, 0], 1, "eadfd9b9.png?=20240620", 71, "che_240620_EurY", 12, ["hall:dedication"]], + ["71·씩씩한아붕이", 73, 19, 88, "che_event_반계", [3415, 953, 10948, 173135, 14843], 1, "42b242d1.png?=20240620", 71, "che_240620_EurY", 17, ["hall:ttrate"]], + ["71·북오더", 78, 16, 91, "che_event_집중", [35283, 40406, 26892, 787393, 39400], 1, "b6edc575.gif?=20240624", 71, "che_240620_EurY", 20, ["hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["71·시끄럽고버거나줘요", 75, 15, 91, "che_event_집중", [20899, 4261, 22331, 263042, 45840], 1, "831c275c.jpg?=20240620", 71, "che_240620_EurY", 26, ["hall:dex5"]], + ["71·☆☀️徠假淚構慨?️★", 88, 70, 15, "che_event_공성", [25853, 2365, 2103, 0, 87078], 1, "1c770707.png?=20240619", 71, "che_240620_EurY", 27, ["hall:dex5", "hall:killrate", "hall:occupied", "hall:winrate"]], + ["71·tqtt", 89, 77, 15, "che_event_저격", [160747, 979, 24480, 15150, 15259], 0, "default.jpg", 71, "che_240620_EurY", 35, ["hall:tlrate"]], + ["71·오호", 94, 74, 15, "che_event_견고", [241697, 81113, 209436, 42748, 13822], 0, "default.jpg", 71, "che_240620_EurY", 38, ["hall:betrate", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["71·앵버거추심상담사", 73, 16, 90, "che_event_집중", [5907, 2872, 1928, 119298, 1657], 1, "800d41cd.jpg?=20240620", 71, "che_240620_EurY", 44, ["hall:tirate"]], + ["71·척", 74, 91, 15, "che_event_필살", [12681, 4350, 228975, 45514, 28534], 1, "7cb75480.png?=20221202", 71, "che_240620_EurY", 47, ["hall:tsrate"]], + ["71·로비아", 15, 73, 94, "che_event_환술", [0, 0, 0, 0, 0], 1, "28719e7f.png?=20240620", 71, "che_240620_EurY", 50, ["hall:dedication", "hall:experience"]], + ["71·강유", 78, 15, 88, "che_event_필살", [26890, 19626, 27669, 419636, 18599], 1, "79e150d0.jpg?=20230921", 71, "che_240620_EurY", 51, ["hall:dex4"]], + ["71·독신", 15, 73, 92, "che_event_신산", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 71, "che_240620_EurY", 56, ["hall:betrate", "hall:betwin", "hall:firenum"]], + ["71·임사영", 76, 15, 92, "che_event_집중", [5327, 15561, 13782, 425254, 34439], 1, "0b5a2642.jpg?=20240305", 71, "che_240620_EurY", 61, ["chief:12", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["71·Hide_D", 76, 15, 90, "che_event_척사", [51583, 41893, 15695, 358334, 38104], 1, "4569d848.png?=20230612", 71, "che_240620_EurY", 64, ["hall:dex2"]], + ["71·윌리스 캐리어", 80, 88, 15, "che_event_필살", [566163, 2817, 79399, 63078, 24412], 1, "b2c2ba42.png?=20240620", 71, "che_240620_EurY", 66, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["71·버걱스", 75, 15, 94, "che_event_신산", [39000, 6938, 10899, 572830, 35841], 1, "7cd11f02.png?=20240620", 71, "che_240620_EurY", 68, ["hall:betgold", "hall:betwin", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["71·슬라임", 90, 77, 15, "che_event_필살", [11583, 13056, 321222, 27855, 33955], 1, "2d2da7c0.jpg?=20231130", 71, "che_240620_EurY", 71, ["hall:dex3", "hall:killrate_person"]], + ["71·니쉬", 16, 88, 78, "che_event_척사", [0, 0, 0, 0, 0], 1, "444bfc57.png?=20240620", 71, "che_240620_EurY", 74, ["hall:experience"]], + ["71·사카마따끄로에", 74, 15, 92, "che_event_필살", [6367, 58, 14920, 52889, 2788], 1, "22d99bd1.png?=20240620", 71, "che_240620_EurY", 76, ["hall:tirate"]], + ["71·퍄퍄", 75, 91, 15, "che_event_징병", [67648, 8100, 367066, 32198, 19246], 0, "default.jpg", 71, "che_240620_EurY", 77, ["hall:dex3"]], + ["71·테테", 76, 90, 15, "che_event_무쌍", [62570, 63645, 487939, 41288, 45229], 0, "default.jpg", 71, "che_240620_EurY", 82, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:tsrate"]], + ["71·샬럿", 75, 86, 17, "che_event_징병", [337820, 9223, 33147, 28935, 13216], 1, "ccb81fc6.png?=20240620", 71, "che_240620_EurY", 84, ["hall:dex1"]], + ["71·Navy마초", 75, 15, 92, "che_event_집중", [16339, 2659, 1240, 216775, 22389], 1, "37644ed3.png?=20230831", 71, "che_240620_EurY", 85, ["hall:ttrate", "hall:winrate"]], + ["71·불패", 76, 15, 91, "che_event_의술", [28894, 913, 5718, 204983, 19631], 1, "b2fd1cac.jpg?=20240401", 71, "che_240620_EurY", 87, ["hall:betrate"]], + ["71·라콘타", 75, 93, 15, "che_event_필살", [664374, 30382, 35546, 51206, 26639], 1, "578d3ce5.png?=20240428", 71, "che_240620_EurY", 89, ["hall:betwin", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum"]], + ["71·대교", 96, 71, 15, "che_event_필살", [473234, 3230, 22061, 30923, 43361], 1, "9f0e6dcc.jpg?=20220808", 71, "che_240620_EurY", 92, ["chief:11", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate"]], + ["71·좋소고양이", 93, 75, 16, "che_event_필살", [535316, 3212, 22901, 36053, 19647], 1, "c4a04b74.png?=20240619", 71, "che_240620_EurY", 93, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["71·비치나는솔로", 77, 15, 89, "che_event_집중", [23611, 4608, 55014, 296765, 17948], 0, "default.jpg", 71, "che_240620_EurY", 94, ["hall:betgold", "hall:betwingold"]], + ["71·지원", 72, 15, 96, "che_event_필살", [18398, 10745, 11118, 542593, 45013], 1, "3abfc677.webp?=20240129", 71, "che_240620_EurY", 95, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["71·외심장", 16, 91, 76, "che_event_돌격", [0, 0, 0, 0, 0], 1, "36110cd.jpg?=20180826", 71, "che_240620_EurY", 96, ["hall:dedication"]], + ["71·류화영", 74, 95, 15, "che_event_필살", [27675, 39527, 353068, 29658, 33932], 1, "75b3ba30.jpg?=20240705", 71, "che_240620_EurY", 97, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["71·춤추는달팽이", 95, 73, 15, "che_event_무쌍", [685022, 13011, 38667, 69541, 30395], 1, "fc3385d6.gif?=20240301", 71, "che_240620_EurY", 98, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["71·UGG", 75, 93, 15, "che_event_척사", [79200, 16280, 349983, 35249, 25293], 0, "default.jpg", 71, "che_240620_EurY", 99, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:tsrate"]], + ["71·와일드플라워", 72, 15, 95, "che_event_필살", [3173, 13082, 15243, 395095, 40852], 0, "default.jpg", 71, "che_240620_EurY", 102, ["chief:5", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate"]], + ["71·유리아", 73, 95, 15, "che_event_돌격", [35875, 299788, 5365, 53213, 30947], 1, "bd92e2e4.png?=20240619", 71, "che_240620_EurY", 103, ["chief:6", "hall:dedication", "hall:dex2", "hall:experience", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["71·레몬뽕", 73, 15, 95, "che_event_집중", [5574, 700, 4454, 160582, 20839], 1, "bdca266b.png?=20240620", 71, "che_240620_EurY", 104, ["hall:ttrate"]], + ["71·황혼중", 15, 72, 96, "che_event_신산", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 71, "che_240620_EurY", 105, ["hall:tirate"]], + ["71·쌍근", 87, 79, 15, "che_event_저격", [35813, 44133, 529603, 58047, 66973], 1, "7a2dbace.webp?=20240620", 71, "che_240620_EurY", 106, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["71·이걸로끝이다", 81, 85, 16, "che_event_궁병", [52331, 194204, 10961, 38501, 16336], 0, "default.jpg", 71, "che_240620_EurY", 107, ["hall:betgold", "hall:betwin", "hall:dex2"]], + ["71·ㅊㄹㅊㄹ", 78, 86, 16, "che_event_척사", [18895, 19351, 461227, 78356, 25232], 1, "63f1c106.png?=20230223", 71, "che_240620_EurY", 108, ["hall:dex3", "hall:killcrew_person"]], + ["71·앵버거안주면머머리", 74, 15, 93, "che_event_필살", [3869, 10106, 16132, 270013, 46008], 1, "d9f23781.png?=20240620", 71, "che_240620_EurY", 109, ["chief:7", "hall:dex5", "hall:occupied"]], + ["71·선배마음에", 76, 15, 91, "che_event_집중", [31579, 6506, 22430, 209819, 24727], 1, "85ad2c36.png?=20240620", 71, "che_240620_EurY", 110, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:tirate", "hall:ttrate"]], + ["71·시끄럽고홍삼주세요", 96, 70, 15, "che_event_공성", [17297, 5878, 5693, 26831, 618866], 1, "2aa6a7c5.jpg?=20240620", 71, "che_240620_EurY", 112, ["hall:betwin", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["71·셀레미", 75, 15, 94, "che_event_척사", [45311, 5744, 15073, 311992, 9600], 1, "777144cc.jpg?=20240527", 71, "che_240620_EurY", 113, ["hall:tirate"]], + ["71·호호", 77, 88, 15, "che_event_필살", [12125, 4746, 381149, 60178, 25389], 1, "37357e28.jpg?=20240506", 71, "che_240620_EurY", 114, ["hall:dex3"]], + ["71·감흥", 16, 73, 92, "che_event_의술", [0, 0, 0, 0, 0], 1, "a73ecaa1.jpg?=20230313", 71, "che_240620_EurY", 116, ["hall:dedication"]], + ["71·선배맘에탕탕", 79, 88, 15, "che_event_위압", [388524, 8246, 26820, 59069, 9683], 0, "default.jpg", 71, "che_240620_EurY", 118, ["hall:betrate", "hall:dex1", "hall:ttrate", "hall:warnum"]], + ["71·Air", 73, 94, 15, "che_event_돌격", [9727, 14767, 329003, 24923, 22568], 0, "default.jpg", 71, "che_240620_EurY", 119, ["chief:10", "hall:dex3", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["71·참새", 92, 74, 15, "che_event_위압", [12406, 219971, 5008, 8238, 50165], 1, "36711c25.jpg?=20240624", 71, "che_240620_EurY", 121, ["hall:dex2", "hall:dex5", "hall:tlrate"]], + ["71·서희", 88, 15, 79, "che_event_필살", [12480, 23430, 26624, 397984, 26573], 1, "8debf7e5.png?=20230308", 71, "che_240620_EurY", 122, ["hall:dex4"]], + ["71·마요이", 15, 72, 95, "che_event_징병", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 71, "che_240620_EurY", 123, ["hall:dedication", "hall:tirate"]], + ["71·로스트아크", 75, 15, 92, "che_event_필살", [29506, 13475, 13817, 444234, 28825], 1, "33dfdd64.png?=20240620", 71, "che_240620_EurY", 124, ["hall:dex4", "hall:tirate"]], + ["71·세르네오", 15, 72, 93, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 71, "che_240620_EurY", 128, ["hall:dedication"]], + ["71·의술내정장", 24, 66, 66, "che_event_의술", [5677, 1048, 3911, 9043, 5736], 0, "default.jpg", 71, "che_240620_EurY", 129, ["hall:betrate", "hall:betwingold", "hall:ttrate"]], + ["71·그러지마", 75, 16, 91, "che_event_집중", [17009, 13706, 18323, 236912, 33579], 0, "default.jpg", 71, "che_240620_EurY", 136, ["hall:tirate"]], + ["71·독치킨", 80, 89, 15, "che_event_징병", [415881, 7261, 12218, 21108, 13887], 0, "default.jpg", 71, "che_240620_EurY", 141, ["hall:dex1"]], + ["71·홍삼엑기스", 75, 90, 15, "che_event_의술", [18617, 190206, 9765, 17586, 17782], 0, "default.jpg", 71, "che_240620_EurY", 224, ["hall:dex2", "hall:tsrate"]], + ["71·최진리", 74, 93, 15, "che_event_징병", [153989, 3610, 20158, 18738, 10919], 1, "2d3506dd.webp?=20240414", 71, "che_240620_EurY", 227, ["hall:tsrate", "hall:ttrate"]], + ["71·사하드", 73, 93, 15, "che_event_격노", [240751, 252, 14625, 30628, 38797], 1, "31f10b32.jpg?=20220717", 71, "che_240620_EurY", 231, ["hall:betrate", "hall:tsrate"]], + ["71·쿄스케", 74, 91, 15, "che_event_척사", [369290, 6208, 16157, 26927, 20094], 1, "81c9cf40.jpg?=20240331", 71, "che_240620_EurY", 232, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1"]], + ["71·설지얌", 78, 88, 15, "che_event_위압", [384117, 7262, 27650, 59488, 25436], 1, "e21bfee2.jpg?=20240621", 71, "che_240620_EurY", 235, ["hall:dex1"]], + ["71·코뿔소", 94, 72, 15, "che_event_공성", [17543, 0, 0, 5762, 219088], 0, "default.jpg", 71, "che_240620_EurY", 245, ["hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["71·강서유서", 91, 16, 74, "che_event_집중", [12681, 14004, 19874, 336068, 20969], 0, "default.jpg", 71, "che_240620_EurY", 246, ["hall:tlrate"]], + ["71·くま", 76, 16, 88, "che_event_신산", [16880, 5748, 18117, 396130, 25639], 1, "770f53.jpg?=20190718", 71, "che_240620_EurY", 270, ["hall:dex4"]], + ["71·무지장입니다.", 16, 87, 75, "che_event_돌격", [0, 0, 0, 499, 0], 1, "e50b05b1.png?=20240624", 71, "che_240620_EurY", 339, ["hall:firenum"]], + ["71·진솔", 16, 73, 91, "che_event_반계", [0, 0, 0, 0, 0], 1, "eac1560c.png?=20240114", 71, "che_240620_EurY", 347, ["hall:dedication"]], + ["71·김유신", 79, 87, 15, "che_event_저격", [19422, 29370, 464838, 16385, 8444], 1, "a987e8fa.jpg?=20240628", 71, "che_240620_EurY", 420, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["71·개덥다", 15, 71, 90, "che_event_징병", [0, 0, 0, 0, 0], 1, "fcac03cb.png?=20240628", 71, "che_240620_EurY", 536, ["hall:firenum"]], + ["72·류화영", 72, 13, 85, "che_event_필살", [23219, 26666, 24797, 563794, 372810], 1, "97c97a12.jpg?=20240713", 72, "che_240711_to95", 4, ["hall:betrate", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["72·척", 70, 83, 14, "che_event_척사", [542458, 82859, 103234, 160437, 62460], 1, "7cb75480.png?=20221202", 72, "che_240711_to95", 5, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:tsrate"]], + ["72·헬스요이", 13, 66, 86, "che_event_필살", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 72, "che_240711_to95", 14, ["hall:tirate"]], + ["72·와일드플라워", 69, 14, 81, "che_event_집중", [55605, 34300, 9379, 471468, 50976], 0, "default.jpg", 72, "che_240711_to95", 24, ["hall:dedication"]], + ["72·完顔宗弼", 73, 83, 13, "che_event_필살", [30163, 33840, 728225, 99376, 32868], 1, "fa384037.png?=20240701", 72, "che_240711_to95", 26, ["hall:betgold", "hall:betwingold", "hall:dex3"]], + ["72·외심장", 72, 14, 79, "che_event_필살", [26106, 50382, 45965, 696897, 35960], 1, "36110cd.jpg?=20180826", 72, "che_240711_to95", 27, ["hall:dex4"]], + ["72·퐁구리", 13, 62, 89, "che_event_저격", [0, 0, 0, 0, 0], 1, "10ba8a23.jpg?=20240711", 72, "che_240711_to95", 36, ["hall:dedication", "hall:experience"]], + ["72·So long!", 85, 69, 13, "che_event_무쌍", [94698, 406556, 5882, 61915, 17898], 1, "aa2166d5.png?=20240711", 72, "che_240711_to95", 40, ["hall:betrate", "hall:dex2", "hall:tlrate"]], + ["72·황혼중", 14, 65, 86, "che_event_필살", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 72, "che_240711_to95", 42, ["hall:ttrate"]], + ["72·?", 73, 80, 14, "che_event_필살", [685645, 20575, 49169, 92949, 18188], 0, "default.jpg", 72, "che_240711_to95", 45, ["hall:dex1", "hall:firenum", "hall:ttrate"]], + ["72·모기 물린 독구", 14, 65, 85, "che_event_의술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 72, "che_240711_to95", 47, ["chief:5", "hall:betwin", "hall:dedication", "hall:experience", "hall:tirate"]], + ["72·네이", 82, 13, 72, "che_event_징병", [32215, 18060, 26847, 504033, 23154], 0, "default.jpg", 72, "che_240711_to95", 50, ["hall:tlrate"]], + ["72·감흥", 21, 63, 82, "che_event_필살", [16663, 353652, 12329, 53167, 29812], 1, "a73ecaa1.jpg?=20230313", 72, "che_240711_to95", 51, ["chief:11", "hall:dex2", "hall:tirate"]], + ["72·이드", 89, 62, 13, "che_event_견고", [515019, 66765, 47271, 128844, 29329], 1, "fc3385d6.gif?=20240301", 72, "che_240711_to95", 54, ["hall:tlrate"]], + ["72·카마인", 69, 13, 89, "che_event_집중", [20104, 18552, 13383, 810093, 21205], 1, "3c4b1292.png?=20240811", 72, "che_240711_to95", 66, ["hall:dex4", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:winrate"]], + ["72·장원영", 68, 13, 89, "che_event_필살", [31282, 52724, 23372, 1043653, 43173], 1, "0a92149e.jpg?=20240712", 72, "che_240711_to95", 71, ["chief:12", "hall:betgold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["72·유카", 70, 83, 14, "che_event_견고", [28802, 25210, 482986, 85230, 13840], 1, "0e023deb.jpg?=20240425", 72, "che_240711_to95", 76, ["hall:dex3", "hall:tsrate"]], + ["72·강유", 72, 13, 83, "che_event_필살", [49844, 9830, 18851, 760476, 14794], 1, "79e150d0.jpg?=20230921", 72, "che_240711_to95", 77, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["72·ㅊㄹㅊㄹ", 70, 81, 13, "che_event_필살", [23978, 43653, 515812, 91904, 26989], 1, "63f1c106.png?=20230223", 72, "che_240711_to95", 79, ["hall:dex3", "hall:tsrate"]], + ["72·조승상", 81, 71, 13, "che_event_기병", [35295, 63283, 628995, 106615, 33208], 1, "6f27503f.png?=20240322", 72, "che_240711_to95", 81, ["hall:dex3"]], + ["72·잘가요", 73, 82, 14, "che_event_징병", [85367, 800961, 15494, 95022, 13576], 0, "default.jpg", 72, "che_240711_to95", 82, ["hall:betrate", "hall:betwin", "hall:dex2", "hall:killcrew_person"]], + ["72·미국주식보유자", 74, 89, 15, "che_event_필살", [45625, 1182592, 10739, 101128, 41008], 1, "ff6cdf5d.png?=20240711", 72, "che_240711_to95", 85, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["72·사호", 74, 82, 13, "che_event_필살", [511085, 413439, 28614, 135593, 27190], 0, "default.jpg", 72, "che_240711_to95", 87, ["hall:dex1", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["72·Air", 73, 81, 13, "che_event_징병", [38640, 756130, 2450, 107161, 9874], 0, "default.jpg", 72, "che_240711_to95", 88, ["hall:dex2", "hall:firenum", "hall:occupied"]], + ["72·장마철", 71, 80, 13, "che_event_무쌍", [399772, 45900, 47042, 114983, 24412], 1, "f657a1ae.png?=20240715", 72, "che_240711_to95", 89, ["hall:dex1", "hall:tsrate"]], + ["72·알트아이젠", 69, 84, 13, "che_event_필살", [51283, 735935, 23615, 87383, 62302], 0, "default.jpg", 72, "che_240711_to95", 90, ["chief:10", "hall:betwin", "hall:dedication", "hall:dex2"]], + ["72·대교", 85, 66, 13, "che_event_필살", [665824, 27008, 22205, 107161, 40561], 1, "9f0e6dcc.jpg?=20220808", 72, "che_240711_to95", 91, ["hall:dex1", "hall:tlrate"]], + ["72·강남순", 69, 82, 13, "che_event_필살", [463260, 25158, 49480, 92584, 23380], 1, "21bce52c.jpg?=20240711", 72, "che_240711_to95", 92, ["hall:ttrate"]], + ["72·뜌땨", 86, 66, 14, "che_event_필살", [1003084, 28863, 39633, 87392, 50847], 1, "08dd3856.png?=20240715", 72, "che_240711_to95", 93, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["72·누렁이", 67, 89, 13, "che_event_필살", [909766, 26148, 72476, 88815, 27218], 1, "29922ad9.gif?=20240711", 72, "che_240711_to95", 94, ["hall:betgold", "hall:betwingold", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["72·보디가드", 89, 61, 13, "che_event_공성", [27256, 4001, 17125, 7684, 590442], 1, "5b501aa2.jpg?=20240711", 72, "che_240711_to95", 96, ["hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["72·몽고르기니 우라칸", 71, 81, 14, "che_event_필살", [82166, 472879, 7801, 58739, 35382], 1, "5a26a7f2.jpg?=20240711", 72, "che_240711_to95", 97, ["hall:dex2", "hall:firenum"]], + ["72·루이스", 69, 13, 86, "che_event_의술", [16170, 26170, 33282, 745911, 43676], 1, "819300a0.png?=20240714", 72, "che_240711_to95", 98, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:killrate", "hall:killrate_person"]], + ["72·꼬꼬댁", 67, 13, 88, "che_event_필살", [50130, 41922, 20136, 1045960, 55458], 1, "38d91640.jpg?=20240711", 72, "che_240711_to95", 99, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["72·님들그거아세요?", 69, 13, 82, "che_event_집중", [41572, 52634, 18277, 435933, 24506], 0, "default.jpg", 72, "che_240711_to95", 100, ["hall:tirate"]], + ["72·독피자", 69, 13, 84, "che_event_필살", [33237, 32001, 13675, 621461, 26262], 1, "ef440bed.gif?=20240712", 72, "che_240711_to95", 104, ["hall:betwin", "hall:tirate", "hall:ttrate"]], + ["72·홍삼맛양갱", 76, 82, 13, "che_event_필살", [1105639, 21105, 53982, 51038, 23312], 1, "577d9c34.jpg?=20240716", 72, "che_240711_to95", 105, ["hall:dex1", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["72·임사영", 67, 13, 87, "che_event_필살", [15900, 32348, 24584, 509629, 24014], 1, "0b5a2642.jpg?=20240305", 72, "che_240711_to95", 106, ["hall:tirate"]], + ["72·개복치", 67, 13, 89, "che_event_필살", [42668, 48771, 34670, 845307, 20998], 1, "1ccba920.jpg?=20240711", 72, "che_240711_to95", 107, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["72·Mella", 72, 86, 13, "che_event_척사", [35941, 28745, 1521859, 70028, 41361], 1, "db1a7261.png?=20240716", 72, "che_240711_to95", 108, ["chief:6", "hall:betgold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["72·일레이나", 71, 13, 84, "che_event_필살", [41320, 48371, 20508, 657868, 25423], 1, "e71be59f.png?=20240711", 72, "che_240711_to95", 109, ["hall:ttrate"]], + ["72·라콘타", 84, 13, 70, "che_event_환술", [73657, 30559, 33656, 650152, 20008], 1, "578d3ce5.png?=20240428", 72, "che_240711_to95", 110, ["hall:betrate", "hall:betwin", "hall:tlrate"]], + ["72·사스케", 80, 14, 73, "che_event_필살", [50838, 49026, 11821, 842724, 49957], 1, "1fb66bff.jpg?=20240711", 72, "che_240711_to95", 111, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["72·하마", 85, 73, 15, "che_event_격노", [27843, 62872, 737132, 101631, 36629], 1, "bfc60f51.png?=20240713", 72, "che_240711_to95", 114, ["hall:dex3", "hall:occupied"]], + ["72·유니크는재야에봉인", 80, 71, 13, "che_event_돌격", [31272, 54357, 486202, 147493, 23635], 0, "default.jpg", 72, "che_240711_to95", 115, ["hall:dex3"]], + ["72·애기븝미에얌", 14, 65, 86, "che_event_의술", [0, 0, 0, 0, 0], 1, "a0d3bf19.jpg?=20240710", 72, "che_240711_to95", 116, ["hall:dedication"]], + ["72·간지밍이", 17, 68, 79, "che_event_신산", [0, 0, 0, 0, 0], 1, "05a5f403.png?=20240523", 72, "che_240711_to95", 117, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["72·금주영윤금희", 70, 82, 13, "che_event_척사", [574976, 13302, 34433, 94744, 16194], 1, "e2386370.png?=20240714", 72, "che_240711_to95", 118, ["hall:dex1"]], + ["72·하비", 13, 65, 88, "che_event_의술", [0, 0, 0, 0, 0], 1, "f986b0ba.png?=20240711", 72, "che_240711_to95", 119, ["hall:dedication", "hall:tirate"]], + ["72·유산내놔슬라임", 73, 88, 15, "che_event_필살", [76703, 856226, 24058, 88810, 44593], 1, "2d2da7c0.jpg?=20231130", 72, "che_240711_to95", 120, ["hall:betrate", "hall:dex2", "hall:dex5", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["72·덕구", 71, 80, 14, "che_event_무쌍", [45864, 428726, 16477, 97981, 18563], 1, "7031e789.jpg?=20240201", 72, "che_240711_to95", 121, ["hall:dex2", "hall:firenum"]], + ["72·경국지색소교", 72, 82, 13, "che_event_돌격", [316068, 64068, 73934, 108316, 43857], 1, "ad2669b5.jpg?=20230605", 72, "che_240711_to95", 122, ["hall:tsrate", "hall:ttrate"]], + ["72·구경합니다", 14, 82, 67, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "c22bba79.jpg?=20240711", 72, "che_240711_to95", 123, ["hall:dedication", "hall:experience", "hall:ttrate"]], + ["72·카리나", 84, 61, 13, "che_event_공성", [29411, 18683, 37787, 55500, 909761], 1, "8e9224a0.jpg?=20240711", 72, "che_240711_to95", 127, ["hall:dex3", "hall:dex5", "hall:killrate", "hall:occupied"]], + ["72·카이스트", 69, 14, 85, "che_event_집중", [34652, 37948, 12481, 714125, 20655], 1, "e7e27cd6.jpg?=20221125", 72, "che_240711_to95", 129, ["hall:winrate"]], + ["72·물음표", 69, 84, 13, "che_event_견고", [425204, 18014, 12340, 89212, 7547], 1, "039634a0.jpg?=20240719", 72, "che_240711_to95", 133, ["hall:firenum", "hall:tsrate", "hall:ttrate"]], + ["72·본닉공개반대", 75, 13, 82, "che_event_척사", [37467, 25947, 17579, 731424, 28221], 0, "default.jpg", 72, "che_240711_to95", 141, ["hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["72·くま", 73, 14, 81, "che_event_신중", [38408, 22510, 15513, 700458, 16675], 1, "770f53.jpg?=20190718", 72, "che_240711_to95", 143, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["72·하냥", 72, 81, 13, "che_event_필살", [498068, 27177, 23196, 118618, 18391], 1, "8be1d2b1.jpg?=20240712", 72, "che_240711_to95", 372, ["hall:dex1"]], + ["72·조예린", 88, 13, 64, "che_event_신중", [36869, 33588, 31462, 474866, 23078], 1, "a7a31038.png?=20240328", 72, "che_240711_to95", 380, ["hall:betrate", "hall:tlrate"]], + ["72·Navy마초", 85, 64, 14, "che_event_필살", [54577, 63190, 410922, 104420, 17283], 1, "37644ed3.png?=20230831", 72, "che_240711_to95", 381, ["hall:dex3", "hall:tlrate"]], + ["72·국04", 70, 13, 79, "che_event_환술", [37987, 18557, 13367, 384530, 26034], 1, "546ecd10.png?=20231007", 72, "che_240711_to95", 389, ["hall:betrate"]], + ["72·할아버지", 15, 60, 89, "che_event_의술", [0, 0, 0, 0, 0], 1, "0b94851c.png?=20240712", 72, "che_240711_to95", 392, ["hall:tirate"]], + ["72·북오더", 69, 13, 81, "che_event_필살", [28310, 26289, 25491, 538985, 109251], 1, "f9e4b416.gif?=20240717", 72, "che_240711_to95", 394, ["hall:dex5"]], + ["72·초록소", 13, 81, 67, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 72, "che_240711_to95", 402, ["hall:tsrate", "hall:ttrate"]], + ["72·서희", 77, 13, 72, "che_event_환술", [44699, 35611, 29093, 399564, 27495], 1, "8debf7e5.png?=20230308", 72, "che_240711_to95", 548, ["hall:dedication", "hall:experience"]], + ["73·미친과학", 71, 15, 89, "che_event_필살", [12474, 10887, 4247, 151413, 11099], 1, "ad06a8c4.png?=20240812", 73, "che_240815_wlg6", 4, ["hall:killrate_person", "hall:winrate"]], + ["73·로갈 돈", 91, 70, 15, "che_event_공성", [36924, 694, 317, 0, 1043400], 1, "60e30a65.jpg?=20240814", 73, "che_240815_wlg6", 6, ["chief:10", "hall:betgold", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["73·신도큐어그레이스", 73, 15, 88, "che_event_환술", [13788, 1331, 1499, 180729, 20323], 1, "c3e0f92e.png?=20240815", 73, "che_240815_wlg6", 7, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:firenum", "hall:tirate", "hall:ttrate"]], + ["73·생귀니우스", 72, 15, 89, "che_event_필살", [20769, 11099, 7758, 299917, 26014], 1, "129159ce.jpg?=20240814", 73, "che_240815_wlg6", 8, ["chief:7", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["73·신에게부름받은이", 16, 81, 78, "che_event_격노", [0, 0, 0, 0, 0], 0, "default.jpg", 73, "che_240815_wlg6", 12, ["hall:dedication"]], + ["73·페러스 매너스", 72, 15, 89, "che_event_필살", [14544, 8553, 8825, 208923, 23711], 1, "fbf8ce70.png?=20240815", 73, "che_240815_wlg6", 14, ["hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["73·크렌스", 90, 15, 73, "che_event_돌격", [24325, 29734, 14095, 544941, 18463], 1, "7031c2eb.jpg?=20240817", 73, "che_240815_wlg6", 21, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["73·김정은", 73, 87, 16, "che_event_무쌍", [231618, 2205, 9897, 17602, 11193], 1, "36fe5309.png?=20240815", 73, "che_240815_wlg6", 23, ["hall:dex1", "hall:firenum", "hall:killcrew_person", "hall:tsrate", "hall:warnum"]], + ["73·카토 시카리우스", 89, 15, 71, "che_event_저격", [8874, 3210, 8035, 45978, 140692], 1, "4978fc91.jpg?=20240815", 73, "che_240815_wlg6", 25, ["chief:5", "hall:dedication", "hall:dex5", "hall:occupied", "hall:tlrate"]], + ["73·와일드플라워", 73, 16, 86, "che_event_저격", [9162, 6215, 3378, 228469, 19326], 0, "default.jpg", 73, "che_240815_wlg6", 28, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["73·코르부스 코락스", 72, 89, 15, "che_event_징병", [15983, 211153, 2884, 18834, 19362], 1, "9280d492.png?=20240815", 73, "che_240815_wlg6", 30, ["chief:8", "hall:betrate", "hall:dedication", "hall:dex2", "hall:experience", "hall:tsrate", "hall:winrate"]], + ["73·라이온 엘 존슨", 72, 88, 15, "che_event_필살", [361952, 2579, 22547, 29623, 27918], 1, "8d8a4be5.jpg?=20240815", 73, "che_240815_wlg6", 31, ["chief:6", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["73·조승상", 85, 72, 16, "che_event_견고", [15691, 134023, 2978, 24934, 15876], 1, "6f27503f.png?=20240322", 73, "che_240815_wlg6", 33, ["hall:dex2"]], + ["73·이젠안녕", 79, 81, 15, "che_event_척사", [30677, 237474, 8130, 48212, 14788], 0, "default.jpg", 73, "che_240815_wlg6", 36, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:warnum"]], + ["73·크피자빵", 71, 89, 15, "che_event_필살", [240273, 3108, 2248, 6788, 27433], 1, "d54760e2.jpg?=20240815", 73, "che_240815_wlg6", 37, ["hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["73·CHANGMO", 89, 71, 15, "che_event_격노", [29951, 95196, 6073, 7222, 4586], 1, "eda4d4aa.webp?=20240815", 73, "che_240815_wlg6", 39, ["hall:dex2", "hall:tlrate"]], + ["73·Air", 73, 83, 20, "che_event_필살", [254688, 1030, 1138, 14931, 15311], 0, "default.jpg", 73, "che_240815_wlg6", 44, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["73·최진리", 90, 70, 15, "che_event_공성", [30240, 7871, 8484, 12072, 64422], 1, "2d3506dd.webp?=20240414", 73, "che_240815_wlg6", 45, ["hall:dex5", "hall:tlrate", "hall:ttrate"]], + ["73·더위 먹은 독구", 15, 73, 86, "che_event_징병", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 73, "che_240815_wlg6", 46, ["hall:betwin", "hall:firenum", "hall:tirate"]], + ["73·황혼중", 15, 89, 71, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 73, "che_240815_wlg6", 47, ["hall:tsrate", "hall:ttrate"]], + ["73·북오더", 72, 85, 16, "che_event_위압", [8989, 1307, 103393, 17993, 4855], 1, "f9e4b416.gif?=20240717", 73, "che_240815_wlg6", 49, ["hall:dex3", "hall:tsrate"]], + ["73·신도8", 77, 15, 83, "che_event_의술", [11350, 17652, 0, 174148, 52776], 0, "default.jpg", 73, "che_240815_wlg6", 53, ["hall:dex4", "hall:dex5"]], + ["73·경국지색소교", 75, 16, 84, "che_event_환술", [17118, 2504, 3135, 173533, 21788], 1, "ad2669b5.jpg?=20230605", 73, "che_240815_wlg6", 54, ["hall:firenum", "hall:ttrate"]], + ["73·제키엘", 88, 70, 15, "che_event_징병", [266100, 2109, 23377, 50972, 18733], 1, "c9c4b7c5.png?=20240824", 73, "che_240815_wlg6", 55, ["hall:betrate", "hall:betwin", "hall:dex1", "hall:dex3", "hall:experience", "hall:occupied", "hall:tlrate"]], + ["73·쒸익쒸익", 86, 15, 74, "che_event_집중", [13049, 2590, 2956, 185299, 13008], 1, "c87b3b26.jpg?=20240814", 73, "che_240815_wlg6", 58, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4"]], + ["73·대교", 85, 73, 16, "che_event_필살", [284997, 11867, 657, 67128, 11483], 1, "9f0e6dcc.jpg?=20220808", 73, "che_240815_wlg6", 63, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["73·음양사", 74, 87, 15, "che_event_징병", [100332, 24101, 218521, 28002, 73880], 1, "ef295f95.jpg?=20240816", 73, "che_240815_wlg6", 65, ["hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["73·이드", 72, 15, 89, "che_event_집중", [6527, 5915, 2908, 219238, 13768], 1, "fc3385d6.gif?=20240301", 73, "che_240815_wlg6", 66, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["73·샐래미", 16, 73, 86, "che_event_의술", [0, 0, 0, 0, 0], 1, "f5989c78.jpg?=20240815", 73, "che_240815_wlg6", 68, ["hall:tirate", "hall:ttrate"]], + ["73·저금통", 15, 71, 90, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 73, "che_240815_wlg6", 72, ["hall:dedication", "hall:tirate"]], + ["73·우타즈미 사쿠라코", 72, 88, 15, "che_event_징병", [22687, 14540, 176494, 49636, 21416], 1, "3dc19653.jpg?=20240816", 73, "che_240815_wlg6", 74, ["hall:dex3", "hall:tsrate"]], + ["73·쿠크세이튼", 72, 15, 89, "che_event_집중", [12920, 6773, 4443, 125196, 7237], 1, "e654c472.jpg?=20240815", 73, "che_240815_wlg6", 78, ["hall:tirate"]], + ["73·오레하상급융화재료", 73, 88, 15, "che_event_필살", [369, 0, 30858, 3612, 4184], 1, "6ce72f01.jpg?=20240815", 73, "che_240815_wlg6", 80, ["hall:dedication", "hall:dex3", "hall:tsrate"]], + ["73·신도6", 73, 85, 15, "che_event_무쌍", [234113, 6210, 1625, 22396, 45530], 0, "default.jpg", 73, "che_240815_wlg6", 82, ["hall:dex1", "hall:dex5", "hall:killrate"]], + ["73·두다다다", 75, 85, 16, "che_event_저격", [116460, 2453, 1168, 16941, 5009], 1, "e3bb98ed.jpg?=20240818", 73, "che_240815_wlg6", 83, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:ttrate"]], + ["73·건방진여고생", 76, 15, 84, "che_event_징병", [6484, 3751, 1820, 136575, 15190], 1, "1b61f078.jpg?=20240815", 73, "che_240815_wlg6", 84, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:firenum"]], + ["73·복숭아좋아", 72, 15, 88, "che_event_필살", [16918, 6940, 803, 144149, 14761], 0, "default.jpg", 73, "che_240815_wlg6", 85, ["hall:winrate"]], + ["73·니쉬", 76, 85, 15, "che_event_돌격", [205707, 1802, 28296, 34707, 12491], 1, "92a4ae0c.png?=20240815", 73, "che_240815_wlg6", 86, ["hall:betgold", "hall:betwin", "hall:dex1", "hall:dex3", "hall:occupied", "hall:ttrate"]], + ["73·ㅇㅅㅇ", 74, 84, 16, "che_event_필살", [153308, 11666, 8575, 43201, 4311], 0, "default.jpg", 73, "che_240815_wlg6", 89, ["hall:ttrate"]], + ["73·이단심판관", 73, 88, 15, "che_event_필살", [10457, 237987, 8049, 8603, 14426], 1, "b34bfdc8.png?=20240816", 73, "che_240815_wlg6", 90, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killrate_person", "hall:occupied", "hall:warnum"]], + ["73·독구", 72, 15, 89, "che_event_집중", [20444, 7363, 4640, 237221, 25300], 1, "393f17a6.png?=20240815", 73, "che_240815_wlg6", 92, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["73·웨이드 리플", 74, 84, 15, "che_event_징병", [36385, 21686, 249546, 22838, 16913], 1, "ae9bc2c0.png?=20240820", 73, "che_240815_wlg6", 94, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["73·미친영어", 85, 74, 15, "che_event_저격", [352426, 4309, 7530, 21703, 15820], 1, "d613d3d8.jpg?=20240816", 73, "che_240815_wlg6", 95, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["73·라콘타", 71, 15, 89, "che_event_신산", [4763, 12587, 1950, 62994, 15327], 1, "578d3ce5.png?=20240428", 73, "che_240815_wlg6", 97, ["hall:firenum"]], + ["73·로부테 길리먼", 90, 70, 15, "che_event_징병", [231172, 2402, 15073, 27284, 27207], 1, "adc6319f.png?=20240814", 73, "che_240815_wlg6", 98, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:tlrate"]], + ["73·쌀숭이", 75, 86, 15, "che_event_저격", [34752, 79661, 1986, 11603, 15467], 1, "85458946.png?=20240815", 73, "che_240815_wlg6", 100, ["hall:dex2"]], + ["73·Navy마초", 84, 73, 16, "che_event_의술", [186666, 34727, 24805, 36399, 12959], 1, "37644ed3.png?=20230831", 73, "che_240815_wlg6", 102, ["hall:dex2", "hall:dex3"]], + ["73·보살", 86, 16, 73, "che_event_반계", [47241, 4708, 9478, 200540, 7068], 0, "default.jpg", 73, "che_240815_wlg6", 103, ["hall:betrate", "hall:dex4", "hall:tlrate"]], + ["73·이번기지장", 75, 15, 85, "che_event_반계", [2374, 1793, 345, 154249, 21564], 0, "default.jpg", 73, "che_240815_wlg6", 107, ["hall:firenum"]], + ["73·없는사람", 15, 73, 88, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 73, "che_240815_wlg6", 112, ["hall:tirate"]], + ["73·척", 72, 86, 15, "che_event_징병", [35047, 67845, 123763, 48733, 17225], 1, "7cb75480.png?=20221202", 73, "che_240815_wlg6", 115, ["hall:dex2", "hall:dex3", "hall:tsrate"]], + ["73·스미다 아이코", 88, 15, 71, "che_event_집중", [1523, 1435, 8356, 122380, 4340], 1, "abc1a48f.jpg?=20240815", 73, "che_240815_wlg6", 119, ["hall:tlrate"]], + ["73·@_@", 75, 83, 15, "che_event_의술", [195458, 6236, 21810, 35888, 11155], 0, "default.jpg", 73, "che_240815_wlg6", 219, ["hall:firenum", "hall:occupied"]], + ["73·사하드", 73, 85, 15, null, [13614, 40625, 4195, 3971, 0], 1, "31f10b32.jpg?=20220717", 73, "che_240815_wlg6", 343, ["hall:dex2"]], + ["74·노트북", 73, 15, 92, "che_event_신산", [13603, 18125, 9373, 294252, 58247], 1, "a671127b.jpg?=20240829", 74, "che_240829_P5dI", 5, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate_person"]], + ["74·앵무새", 93, 73, 15, "che_event_필살", [38331, 30883, 445218, 32728, 35465], 1, "36abcbb2.jpg?=20240829", 74, "che_240829_P5dI", 8, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["74·셀레미", 73, 17, 89, "che_event_집중", [11211, 8622, 23206, 246705, 14693], 1, "a4108464.jpg?=20240829", 74, "che_240829_P5dI", 11, ["chief:9", "hall:occupied"]], + ["74·신성제국 시민 독구", 16, 73, 90, "che_event_의술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 74, "che_240829_P5dI", 13, ["hall:betrate", "hall:betwin"]], + ["74·바나낫", 92, 71, 15, "che_event_의술", [33525, 7388, 0, 16350, 237202], 1, "558910bd.gif?=20240827", 74, "che_240829_P5dI", 14, ["hall:betrate", "hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["74·라콘타", 76, 15, 88, "che_event_의술", [6974, 23172, 17432, 304228, 31397], 1, "578d3ce5.png?=20240428", 74, "che_240829_P5dI", 17, ["hall:betrate"]], + ["74·독구", 77, 15, 89, "che_event_집중", [21571, 22902, 26315, 778822, 39641], 1, "393f17a6.png?=20240815", 74, "che_240829_P5dI", 21, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["74·조승상", 86, 77, 15, "che_event_무쌍", [24674, 297405, 7506, 37053, 12004], 1, "6f27503f.png?=20240322", 74, "che_240829_P5dI", 34, ["hall:dex2"]], + ["74·컴퓨터", 76, 15, 89, "che_event_반계", [20564, 544, 6222, 228307, 25950], 0, "default.jpg", 74, "che_240829_P5dI", 37, ["hall:occupied"]], + ["74·나나시무메이", 76, 15, 89, "che_event_필살", [17549, 7669, 16092, 551295, 33511], 1, "2372267c.png?=20240829", 74, "che_240829_P5dI", 40, ["hall:dex4", "hall:killrate_person", "hall:ttrate"]], + ["74·Navy마초", 89, 74, 16, "che_event_격노", [418552, 8375, 67818, 41319, 33311], 1, "37644ed3.png?=20230831", 74, "che_240829_P5dI", 41, ["hall:dex1", "hall:killcrew", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["74·독파이", 78, 16, 86, "che_event_필살", [46180, 19105, 8739, 421681, 29003], 0, "default.jpg", 74, "che_240829_P5dI", 43, ["hall:dex4"]], + ["74·Samo", 74, 15, 91, "che_event_신중", [26101, 32353, 4129, 327328, 25137], 0, "default.jpg", 74, "che_240829_P5dI", 44, ["chief:11", "hall:dedication", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["74·임사영", 89, 75, 16, "che_event_무쌍", [741858, 37773, 55156, 105582, 21194], 1, "0b5a2642.jpg?=20240305", 74, "che_240829_P5dI", 49, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["74·멸화홍염겁화작열", 77, 88, 15, "che_event_저격", [464583, 6529, 36320, 148042, 47754], 0, "default.jpg", 74, "che_240829_P5dI", 50, ["hall:dex1", "hall:dex5", "hall:occupied", "hall:tsrate"]], + ["74·간지밍이", 17, 74, 89, "che_event_신산", [0, 0, 0, 0, 0], 1, "32bc261d.png?=20240824", 74, "che_240829_P5dI", 51, ["hall:betrate", "hall:tirate"]], + ["74·쉬자", 15, 73, 90, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 74, "che_240829_P5dI", 53, ["hall:tirate"]], + ["74·카이스트", 78, 15, 87, "che_event_필살", [24486, 9114, 23597, 442103, 33045], 1, "e7e27cd6.jpg?=20221125", 74, "che_240829_P5dI", 54, ["hall:dex4", "hall:ttrate"]], + ["74·くま", 78, 15, 88, "che_event_신중", [10315, 3628, 9712, 257237, 21324], 1, "770f53.jpg?=20190718", 74, "che_240829_P5dI", 56, ["hall:ttrate"]], + ["74·덕구", 75, 90, 15, "che_event_위압", [295201, 4681, 5788, 28243, 25436], 1, "d317ec54.jpg?=20240829", 74, "che_240829_P5dI", 62, ["hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["74·사스케", 75, 15, 91, "che_event_징병", [22453, 24018, 18357, 678717, 33451], 1, "13d6a4ed.jpg?=20240829", 74, "che_240829_P5dI", 63, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["74·독불장군", 75, 88, 15, "che_event_위압", [396474, 20761, 13383, 39614, 20432], 0, "default.jpg", 74, "che_240829_P5dI", 73, ["chief:8", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["74·누구인가", 79, 87, 15, "che_event_돌격", [522357, 18511, 46294, 160756, 29783], 0, "default.jpg", 74, "che_240829_P5dI", 75, ["hall:dex1", "hall:killnum", "hall:tsrate", "hall:winrate"]], + ["74·클로제린츠", 76, 88, 15, "che_event_징병", [25817, 40036, 334529, 57616, 17028], 0, "default.jpg", 74, "che_240829_P5dI", 77, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:tsrate"]], + ["74·아브렐슈드", 77, 86, 15, "che_event_징병", [65511, 472356, 14673, 113222, 17469], 0, "default.jpg", 74, "che_240829_P5dI", 78, ["hall:dex2", "hall:tsrate"]], + ["74·이드", 73, 15, 92, "che_event_신중", [13677, 29346, 18267, 256907, 22347], 1, "fc3385d6.gif?=20240301", 74, "che_240829_P5dI", 79, ["hall:dedication", "hall:tirate"]], + ["74·Hide_D", 75, 15, 89, "che_event_신중", [22759, 15928, 10251, 245856, 12963], 1, "4569d848.png?=20230612", 74, "che_240829_P5dI", 81, ["hall:tirate"]], + ["74·강유", 79, 15, 88, "che_event_집중", [17885, 2997, 5868, 445902, 27330], 1, "79e150d0.jpg?=20230921", 74, "che_240829_P5dI", 83, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:ttrate"]], + ["74·사랑에 빠진 독구", 78, 15, 86, "che_event_집중", [38936, 34294, 10792, 524692, 46151], 1, "de51857d.png?=20240829", 74, "che_240829_P5dI", 84, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience"]], + ["74·윤하", 75, 91, 15, "che_event_척사", [29333, 29468, 459770, 53442, 37770], 1, "0a8aa57d.jpg?=20240829", 74, "che_240829_P5dI", 85, ["hall:betgold", "hall:betwin", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["74·황진", 75, 87, 16, "che_event_징병", [33016, 42960, 360653, 44676, 32421], 0, "default.jpg", 74, "che_240829_P5dI", 86, ["hall:dex2", "hall:dex3", "hall:tsrate", "hall:warnum"]], + ["74·슈퍼독구문", 74, 15, 90, "che_event_신중", [25361, 26000, 12854, 425125, 24836], 1, "8c62bb26.jpg?=20240829", 74, "che_240829_P5dI", 87, ["hall:dex4"]], + ["74·참세", 15, 73, 89, "che_event_의술", [0, 0, 0, 0, 0], 1, "a069dd6a.jpg?=20240907", 74, "che_240829_P5dI", 88, ["hall:tirate"]], + ["74·와일드플라워", 76, 15, 90, "che_event_척사", [14407, 3884, 8354, 378375, 16080], 0, "default.jpg", 74, "che_240829_P5dI", 89, ["hall:tirate"]], + ["74·독일", 90, 73, 15, "che_event_격노", [300351, 97838, 58569, 92497, 21836], 1, "a93f3060.png?=20240829", 74, "che_240829_P5dI", 90, ["hall:betrate", "hall:dex1", "hall:dex2", "hall:tlrate"]], + ["74·라우리엘", 75, 15, 90, "che_event_필살", [6502, 56670, 29743, 411202, 20848], 1, "d2cee380.png?=20240911", 74, "che_240829_P5dI", 92, ["hall:dex2", "hall:tirate", "hall:ttrate"]], + ["74·독퇴근", 74, 15, 91, "che_event_집중", [18584, 18719, 12763, 535332, 25169], 1, "bf1670c3.png?=20240829", 74, "che_240829_P5dI", 94, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["74·독갸루", 90, 71, 16, "che_event_필살", [22904, 30564, 541709, 132190, 34397], 1, "a1e75917.jpg?=20240831", 74, "che_240829_P5dI", 95, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:tlrate"]], + ["74·가는세월", 78, 85, 15, "che_event_돌격", [23830, 35227, 285508, 80423, 27005], 0, "default.jpg", 74, "che_240829_P5dI", 96, ["hall:betwin", "hall:dex3"]], + ["74·독페이크", 88, 74, 17, "che_event_위압", [75989, 31381, 454180, 108534, 21354], 1, "864c7e74.jpg?=20240906", 74, "che_240829_P5dI", 97, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew_person", "hall:warnum"]], + ["74·민트독끼", 16, 77, 85, "che_event_신중", [0, 0, 0, 0, 0], 1, "6a39feaa.jpg?=20240830", 74, "che_240829_P5dI", 98, ["hall:ttrate"]], + ["74·울란바토르", 75, 15, 89, "che_event_신중", [5569, 19930, 31759, 259649, 16934], 0, "default.jpg", 74, "che_240829_P5dI", 99, ["hall:dedication"]], + ["74·독시노 아이", 76, 92, 15, "che_event_필살", [36816, 49119, 1009937, 51674, 29509], 1, "52c4abad.jpg?=20240829", 74, "che_240829_P5dI", 100, ["hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["74·서희", 78, 15, 87, "che_event_환술", [25237, 20168, 12456, 520675, 16008], 0, "default.jpg", 74, "che_240829_P5dI", 102, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["74·진브", 78, 15, 85, "che_event_집중", [19609, 17564, 24215, 284059, 40144], 0, "default.jpg", 74, "che_240829_P5dI", 108, ["hall:dex5"]], + ["74·상승조", 90, 75, 15, "che_event_필살", [22025, 15426, 368801, 44969, 19146], 1, "8f235d42.png?=20240829", 74, "che_240829_P5dI", 111, ["hall:dex3", "hall:tlrate"]], + ["74·뽀구미", 93, 71, 15, "che_event_징병", [49672, 3249, 18916, 21139, 423817], 1, "9e092d19.jpg?=20240830", 74, "che_240829_P5dI", 113, ["chief:6", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["74·최진리", 92, 72, 15, "che_event_견고", [332511, 16219, 17370, 91966, 9040], 1, "4b0cbce9.jpg?=20240825", 74, "che_240829_P5dI", 117, ["hall:dex1", "hall:tlrate"]], + ["74·panpenpan", 75, 15, 89, "che_event_신산", [19214, 2501, 6191, 243172, 15839], 0, "default.jpg", 74, "che_240829_P5dI", 118, ["hall:tirate", "hall:ttrate"]], + ["74·유카", 15, 72, 92, "che_event_저격", [0, 0, 0, 0, 0], 1, "0e023deb.jpg?=20240425", 74, "che_240829_P5dI", 119, ["hall:dedication"]], + ["74·지각", 76, 15, 87, "che_event_집중", [18165, 13542, 12842, 285065, 21538], 0, "default.jpg", 74, "che_240829_P5dI", 120, ["chief:5", "hall:dedication"]], + ["74·영웅전설", 88, 76, 16, "che_event_위압", [62984, 389914, 14145, 42961, 21731], 1, "f6fbcfb2.jpg?=20240830", 74, "che_240829_P5dI", 121, ["hall:dex2", "hall:experience", "hall:tlrate"]], + ["74·Bianchi", 75, 89, 15, "che_event_징병", [36401, 48152, 327932, 54871, 37975], 0, "default.jpg", 74, "che_240829_P5dI", 122, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:tsrate"]], + ["74·초속70ms", 86, 76, 15, "che_event_위압", [121470, 108143, 27228, 34191, 2239], 0, "default.jpg", 74, "che_240829_P5dI", 123, ["hall:dex2"]], + ["74·니쉬", 77, 15, 88, "che_event_징병", [8670, 1816, 20324, 320231, 6990], 1, "92a4ae0c.png?=20240815", 74, "che_240829_P5dI", 238, ["hall:betrate", "hall:betwingold"]], + ["74·피스오브문", 73, 15, 91, "che_event_환술", [18100, 10898, 9569, 220629, 30496], 0, "default.jpg", 74, "che_240829_P5dI", 242, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["74·웨이드 리플", 79, 87, 15, "che_event_필살", [404280, 27234, 27134, 25020, 26342], 1, "ae9bc2c0.png?=20240820", 74, "che_240829_P5dI", 249, ["hall:dex1", "hall:killcrew_person", "hall:warnum"]], + ["74·다크템플러", 78, 83, 16, "che_event_징병", [321537, 17324, 53240, 72328, 26232], 1, "774e99fe.png?=20240910", 74, "che_240829_P5dI", 391, ["hall:betgold", "hall:betwingold", "hall:dex1"]], + ["76·김만득", 78, 90, 15, "che_event_돌격", [50893, 602355, 113303, 63077, 57302], 1, "d0cacc08.png?=20241015", 76, "che_241010_qMDq", 8, ["hall:betrate", "hall:betwin", "hall:dex2", "hall:dex5", "hall:occupied"]], + ["76·퍄퍄", 67, 13, 80, "che_event_척사", [19223, 14034, 27735, 270018, 25420], 0, "default.jpg", 76, "che_241010_qMDq", 18, ["hall:ttrate"]], + ["76·Ten va pas", 95, 79, 15, "che_event_척사", [789912, 65291, 25759, 103141, 38902], 1, "1f9c4529.png?=20241010", 76, "che_241010_qMDq", 20, ["hall:betrate", "hall:dex1", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["76·독구", 79, 15, 92, "che_event_집중", [89652, 44520, 33140, 693866, 43793], 1, "393f17a6.png?=20240815", 76, "che_241010_qMDq", 22, ["hall:dex4"]], + ["76·냥냥냥", 91, 81, 17, "che_event_필살", [778906, 69231, 138394, 122723, 53434], 1, "458caeac.gif?=20240919", 76, "che_241010_qMDq", 24, ["chief:12", "hall:betgold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:tlrate"]], + ["76·임전호시노", 76, 97, 15, "che_event_필살", [55142, 49006, 621113, 126039, 48200], 0, "default.jpg", 76, "che_241010_qMDq", 30, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tsrate"]], + ["76·강유", 75, 15, 96, "che_event_집중", [17293, 35030, 42862, 696441, 55172], 1, "79e150d0.jpg?=20230921", 76, "che_241010_qMDq", 33, ["chief:7", "hall:dedication", "hall:dex4", "hall:dex5", "hall:killrate", "hall:killrate_person"]], + ["76·민트토끼", 68, 80, 13, "che_event_척사", [153275, 54728, 120439, 22207, 18764], 1, "e0833923.jpg?=20241011", 76, "che_241010_qMDq", 35, ["hall:dex2"]], + ["76·핑크맨", 78, 15, 95, "che_event_집중", [84786, 55613, 26117, 882829, 89269], 1, "b9898f99.png?=20241025", 76, "che_241010_qMDq", 37, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["76·대동강맥주", 78, 15, 96, "che_event_필살", [64331, 21966, 34414, 478699, 23436], 0, "default.jpg", 76, "che_241010_qMDq", 42, ["hall:tirate", "hall:ttrate"]], + ["76·라라란", 67, 82, 13, "che_event_위압", [304695, 25561, 14782, 16214, 14610], 0, "default.jpg", 76, "che_241010_qMDq", 45, ["hall:dedication", "hall:dex1", "hall:experience", "hall:tsrate"]], + ["76·외심장", 68, 13, 81, "che_event_집중", [35115, 5309, 22680, 361714, 20471], 1, "36110cd.jpg?=20180826", 76, "che_241010_qMDq", 47, ["hall:dex4", "hall:occupied", "hall:ttrate", "hall:warnum"]], + ["76·집행관 솔라스", 89, 81, 15, "che_event_견고", [19194, 20165, 534978, 33702, 24097], 1, "b9e8620b.png?=20241010", 76, "che_241010_qMDq", 48, ["hall:tlrate"]], + ["76·설윤아", 68, 13, 81, "che_event_필살", [28019, 18204, 31463, 416369, 20770], 1, "7c1839f7.webp?=20241010", 76, "che_241010_qMDq", 50, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["76·간지밍이", 18, 92, 79, "che_event_필살", [0, 39128, 7556, 1361, 0], 1, "32bc261d.png?=20240824", 76, "che_241010_qMDq", 52, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:firenum", "hall:killrate", "hall:killrate_person"]], + ["76·마요이", 15, 73, 98, "che_event_신중", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 76, "che_241010_qMDq", 53, ["hall:tirate"]], + ["76·네이", 82, 92, 15, "che_event_필살", [56871, 604274, 43331, 132907, 38332], 0, "default.jpg", 76, "che_241010_qMDq", 59, ["hall:dex2"]], + ["76·감흥", 19, 73, 95, "che_event_필살", [10163, 98069, 10859, 27327, 3993], 1, "a73ecaa1.jpg?=20230313", 76, "che_241010_qMDq", 61, ["hall:dedication", "hall:dex2"]], + ["76·4a", 79, 15, 94, "che_event_징병", [90139, 31386, 59705, 690313, 62461], 0, "default.jpg", 76, "che_241010_qMDq", 64, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5"]], + ["76·くま", 75, 15, 96, "che_event_필살", [30575, 4850, 28662, 351821, 17291], 1, "770f53.jpg?=20190718", 76, "che_241010_qMDq", 65, ["hall:tirate"]], + ["76·나츠이로마츠리", 77, 15, 94, "che_event_신중", [29336, 9469, 20881, 465686, 31170], 1, "e023cc8f.png?=20241010", 76, "che_241010_qMDq", 66, ["hall:firenum"]], + ["76·평민킬러", 82, 64, 13, "che_event_필살", [294404, 2892, 36917, 80863, 29333], 1, "b0db4ed9.jpg?=20241011", 76, "che_241010_qMDq", 68, ["hall:betwin", "hall:dex1", "hall:dex5", "hall:occupied", "hall:tlrate"]], + ["76·라콘타", 13, 80, 65, "che_event_견고", [0, 0, 0, 0, 0], 1, "578d3ce5.png?=20240428", 76, "che_241010_qMDq", 70, ["hall:firenum", "hall:tsrate"]], + ["76·Hide_D", 67, 13, 80, "che_event_환술", [38090, 15058, 35047, 313584, 22539], 1, "4569d848.png?=20230612", 76, "che_241010_qMDq", 74, ["hall:tirate"]], + ["76·item", 82, 94, 15, "che_event_징병", [32988, 31665, 1016085, 58640, 20083], 0, "default.jpg", 76, "che_241010_qMDq", 76, ["hall:betrate", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["76·아직도 덥다", 78, 15, 95, "che_event_집중", [35676, 36044, 43754, 626811, 27107], 0, "default.jpg", 76, "che_241010_qMDq", 77, ["hall:tirate"]], + ["76·불안핑", 79, 96, 15, "che_event_무쌍", [67454, 904267, 28944, 60174, 15907], 0, "default.jpg", 76, "che_241010_qMDq", 78, ["hall:dex2", "hall:killcrew_person", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["76·서희", 79, 16, 95, "che_event_필살", [36879, 22772, 34715, 565237, 84965], 0, "default.jpg", 76, "che_241010_qMDq", 79, ["hall:dex5"]], + ["76·카이스트", 79, 16, 98, "che_event_견고", [17267, 23123, 17130, 1522072, 33021], 1, "e7e27cd6.jpg?=20221125", 76, "che_241010_qMDq", 85, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["76·카마인", 68, 13, 80, "che_event_필살", [19636, 7245, 19791, 340275, 9275], 1, "487ed0d5.png?=20241010", 76, "che_241010_qMDq", 86, ["hall:tirate"]], + ["76·우승기원독구", 16, 78, 93, "che_event_신중", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 76, "che_241010_qMDq", 87, ["hall:betwin", "hall:dedication"]], + ["76·진저웨일", 91, 79, 15, "che_event_척사", [63004, 96156, 510932, 102069, 12291], 1, "9cb0a80c.png?=20241010", 76, "che_241010_qMDq", 90, ["hall:dex2", "hall:tlrate"]], + ["76·임사영", 76, 99, 15, "che_event_필살", [57022, 29415, 900222, 95382, 47352], 1, "0b5a2642.jpg?=20240305", 76, "che_241010_qMDq", 91, ["chief:8", "hall:dedication", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["76·삼모하는 돌아이", 79, 15, 93, "che_event_징병", [78901, 40274, 44770, 736489, 59238], 0, "default.jpg", 76, "che_241010_qMDq", 93, ["hall:dex4", "hall:dex5", "hall:warnum"]], + ["76·대교", 99, 76, 15, "che_event_필살", [1010437, 24171, 21990, 45630, 11045], 1, "a53ab5ef.jpg?=20241010", 76, "che_241010_qMDq", 95, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["76·고양", 71, 15, 84, "che_event_필살", [24997, 6515, 25704, 376809, 28314], 1, "96550c77.png?=20241010", 76, "che_241010_qMDq", 96, ["chief:9", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:killrate"]], + ["76·셀레미", 77, 15, 98, "che_event_집중", [59763, 12994, 30020, 822894, 38990], 1, "d4a0bd1d.jpg?=20241010", 76, "che_241010_qMDq", 97, ["hall:dex4", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["76·호구", 95, 77, 16, "che_event_필살", [43997, 52602, 610818, 102095, 33557], 1, "8bc99985.png?=20241010", 76, "che_241010_qMDq", 98, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tlrate"]], + ["76·빠스", 79, 92, 16, "che_event_돌격", [40351, 29850, 660522, 116004, 58078], 1, "91de11ad.png?=20241011", 76, "che_241010_qMDq", 99, ["chief:6", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:occupied"]], + ["76·천통군주", 68, 83, 13, "che_event_징병", [632001, 9132, 34279, 41862, 21885], 1, "623ac631.jpg?=20241003", 76, "che_241010_qMDq", 100, ["hall:betrate", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["76·갬비슨", 70, 78, 13, "che_event_위압", [47366, 212823, 130514, 46970, 13553], 0, "default.jpg", 76, "che_241010_qMDq", 101, ["hall:betwin", "hall:dex2", "hall:killrate_person"]], + ["76·이호", 78, 16, 97, "che_event_집중", [39242, 20152, 26099, 731340, 35315], 0, "default.jpg", 76, "che_241010_qMDq", 104, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["76·류화영", 93, 15, 79, "che_event_집중", [19821, 15172, 20173, 493290, 30620], 1, "2f4c2123.jpg?=20241103", 76, "che_241010_qMDq", 105, ["hall:tlrate"]], + ["76·북오더", 81, 91, 15, "che_event_필살", [40964, 53869, 693755, 102481, 39989], 1, "f9e4b416.gif?=20240717", 76, "che_241010_qMDq", 106, ["hall:dex3", "hall:winrate"]], + ["76·만리향", 14, 66, 78, "che_event_필살", [2092, 16964, 9633, 715, 2386], 1, "8cbbbb37.jpg?=20241010", 76, "che_241010_qMDq", 107, ["hall:betrate", "hall:dedication"]], + ["76·Air", 82, 90, 16, "che_event_견고", [725265, 18353, 70775, 113992, 16123], 0, "default.jpg", 76, "che_241010_qMDq", 108, ["hall:dex1", "hall:warnum"]], + ["76·사스케", 79, 15, 93, "che_event_필살", [45002, 11773, 25041, 636912, 62108], 1, "147a9551.jpg?=20241010", 76, "che_241010_qMDq", 109, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied"]], + ["76·페이크", 16, 73, 99, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 76, "che_241010_qMDq", 110, ["hall:tirate", "hall:ttrate"]], + ["76·도적", 15, 98, 73, "che_event_신산", [233, 150, 187, 2556, 1], 0, "default.jpg", 76, "che_241010_qMDq", 111, ["hall:experience", "hall:firenum", "hall:tsrate"]], + ["76·황혼중", 15, 98, 74, "che_event_격노", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 76, "che_241010_qMDq", 113, ["hall:tsrate"]], + ["76·Sunderland", 78, 93, 15, "che_event_무쌍", [582312, 12087, 27762, 36299, 22871], 0, "default.jpg", 76, "che_241010_qMDq", 114, ["hall:dex1", "hall:tsrate"]], + ["76·니쉬", 13, 83, 63, "che_event_위압", [0, 0, 0, 0, 0], 1, "3a86b056.png?=20240921", 76, "che_241010_qMDq", 116, ["hall:firenum", "hall:tsrate"]], + ["76·Nobel", 91, 79, 17, "che_event_징병", [453226, 8018, 34758, 87536, 24534], 1, "ad93d6a4.webp?=20241010", 76, "che_241010_qMDq", 121, ["hall:dex1", "hall:firenum", "hall:tlrate"]], + ["76·panpenpan", 79, 15, 93, "che_event_집중", [88634, 21005, 39645, 575817, 34789], 1, "521bb79a.jpg?=20240329", 76, "che_241010_qMDq", 123, ["hall:tirate"]], + ["76·토끼카류토끼", 65, 13, 82, "che_event_환술", [22158, 5317, 13677, 157838, 5987], 1, "4370ea2a.jpg?=20241003", 76, "che_241010_qMDq", 126, ["hall:ttrate"]], + ["76·블랙죠", 62, 63, 60, "che_event_징병", [393931, 21403, 35427, 93996, 40620], 0, "default.jpg", 76, "che_241010_qMDq", 190, ["hall:dex1"]], + ["76·최진리", 63, 13, 83, "che_event_필살", [19131, 7580, 20365, 195703, 15080], 1, "4b0cbce9.jpg?=20240825", 76, "che_241010_qMDq", 191, ["hall:tirate"]], + ["76·늦었다냥", 90, 83, 16, "che_event_돌격", [90261, 35061, 981590, 146897, 40589], 1, "aa45cb6f.jpg?=20241011", 76, "che_241010_qMDq", 192, ["hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["76·다육이", 77, 92, 16, "che_event_필살", [48560, 24423, 564651, 78630, 55151], 1, "e04a24e1.jpg?=20241011", 76, "che_241010_qMDq", 194, ["hall:dex3"]], + ["76·와일드플라워", 16, 79, 92, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 76, "che_241010_qMDq", 205, ["hall:firenum", "hall:ttrate"]], + ["76·최강록", 79, 93, 16, "che_event_돌격", [86181, 73338, 855549, 141783, 42854], 1, "1b30296a.png?=20241011", 76, "che_241010_qMDq", 206, ["hall:dex2", "hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["76·서림동", 78, 91, 17, "che_event_위압", [25580, 25670, 553047, 47627, 9845], 0, "default.jpg", 76, "che_241010_qMDq", 260, ["hall:dex3"]], + ["76·쿠가 쥰", 17, 80, 83, "che_event_필살", [7714, 2600, 0, 1350, 0], 1, "eec0d450.png?=20241022", 76, "che_241010_qMDq", 390, ["hall:killrate_person"]], + ["76·진솔", 15, 71, 98, "che_event_신산", [0, 0, 0, 0, 0], 1, "ed6e48d5.png?=20240719", 76, "che_241010_qMDq", 432, ["hall:dedication"]], + ["77·바나낫", 96, 73, 15, "che_event_저격", [415241, 63021, 47602, 57734, 42854], 1, "fe4afbc8.gif?=20241106", 77, "che_241107_mPRd", 7, ["hall:dex1", "hall:dex5", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["77·강유", 78, 16, 88, "che_event_집중", [11366, 2714, 5295, 436869, 26152], 1, "79e150d0.jpg?=20230921", 77, "che_241107_mPRd", 10, ["hall:dex4", "hall:ttrate"]], + ["77·진브", 74, 15, 95, "che_event_집중", [11298, 21348, 10235, 655803, 53230], 1, "4ac37b25.png?=20241107", 77, "che_241107_mPRd", 11, ["chief:12", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["77·임사영", 94, 72, 15, "che_event_공성", [114594, 27234, 39070, 58225, 420665], 1, "0b5a2642.jpg?=20240305", 77, "che_241107_mPRd", 12, ["hall:dex5", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["77·도널드 존 트럼프", 75, 15, 92, "che_event_환술", [12618, 12954, 9409, 419302, 29565], 1, "f795e13c.gif?=20241106", 77, "che_241107_mPRd", 17, ["hall:dex4", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["77·린브", 98, 70, 15, "che_event_공성", [20293, 0, 7551, 24371, 2074681], 1, "654f34a5.png?=20241107", 77, "che_241107_mPRd", 30, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["77·궁녀", 88, 15, 79, "che_event_의술", [37560, 20287, 15868, 294806, 18029], 1, "257dc069.png?=20241107", 77, "che_241107_mPRd", 31, ["hall:occupied", "hall:tlrate"]], + ["77·애쉬", 74, 94, 15, "che_event_돌격", [36378, 18593, 488462, 65501, 18990], 1, "ac5f0a3b.jpg?=20241107", 77, "che_241107_mPRd", 33, ["hall:dex3", "hall:killrate_person", "hall:tsrate"]], + ["77·카류소환수2", 75, 16, 91, "che_event_척사", [30978, 19334, 17036, 310850, 43820], 1, "4370ea2a.jpg?=20241003", 77, "che_241107_mPRd", 36, ["hall:dedication", "hall:dex5"]], + ["77·능송", 93, 15, 79, "che_event_돌격", [48368, 66453, 41190, 1011292, 22735], 0, "default.jpg", 77, "che_241107_mPRd", 39, ["chief:7", "hall:dedication", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["77·5성장군 독구", 15, 77, 90, "che_event_환술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 77, "che_241107_mPRd", 41, ["hall:betwin"]], + ["77·유화영", 15, 87, 78, "che_event_척사", [0, 0, 0, 0, 0], 1, "b32008d0.jpg?=20241122", 77, "che_241107_mPRd", 51, ["hall:firenum"]], + ["77·어린 세자", 75, 15, 93, "che_event_징병", [17774, 22844, 29401, 402541, 18530], 1, "7d1f0c76.jpg?=20241123", 77, "che_241107_mPRd", 53, ["chief:5", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience", "hall:tirate", "hall:ttrate"]], + ["77·라콘타", 77, 88, 15, "che_event_필살", [387000, 11908, 48531, 46333, 11414], 1, "d1606696.png?=20241116", 77, "che_241107_mPRd", 56, ["hall:dex1"]], + ["77·카류소환수1", 73, 15, 94, "che_event_필살", [19756, 15237, 16136, 401413, 28910], 1, "225ebeb9.jpg?=20241107", 77, "che_241107_mPRd", 58, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["77·물패", 75, 15, 90, "che_event_척사", [7060, 10363, 6182, 428580, 36276], 1, "4f35d3f0.jpg?=20241107", 77, "che_241107_mPRd", 62, ["hall:dex4", "hall:dex5"]], + ["77·낭패", 76, 15, 90, "che_event_반계", [4756, 10172, 4399, 154008, 22284], 1, "ffbf5d0f.jpg?=20241107", 77, "che_241107_mPRd", 65, ["hall:ttrate"]], + ["77·냥냥냥", 78, 90, 15, "che_event_필살", [30029, 40553, 421951, 40913, 18101], 1, "458caeac.gif?=20240919", 77, "che_241107_mPRd", 72, ["hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:winrate"]], + ["77·키타가와 마린", 74, 15, 93, "che_event_저격", [15331, 16657, 8030, 323094, 29074], 1, "2e378082.jpg?=20241107", 77, "che_241107_mPRd", 73, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["77·싸패", 93, 76, 15, "che_event_필살", [908342, 4151, 19104, 37035, 21394], 1, "bd1e5318.jpg?=20241107", 77, "che_241107_mPRd", 76, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["77·라리에트", 17, 74, 87, "che_event_저격", [0, 0, 0, 0, 0], 1, "ad28319b.png?=20241106", 77, "che_241107_mPRd", 77, ["hall:dedication"]], + ["77·불패", 74, 95, 15, "che_event_필살", [607247, 4766, 58829, 26592, 29568], 1, "175b1b62.jpg?=20241107", 77, "che_241107_mPRd", 78, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:tsrate", "hall:warnum"]], + ["77·카류", 73, 15, 94, "che_event_척사", [14547, 18219, 20185, 285419, 23864], 1, "20e760b2.jpg?=20240921", 77, "che_241107_mPRd", 80, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["77·깡패", 74, 93, 15, "che_event_궁병", [24047, 330086, 3308, 39759, 20588], 1, "f5fac7ac.png?=20241107", 77, "che_241107_mPRd", 82, ["hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["77·개미호창", 74, 15, 92, "che_event_필살", [47193, 25666, 13921, 458913, 21648], 1, "ecc33763.jpg?=20241107", 77, "che_241107_mPRd", 83, ["hall:dex4", "hall:occupied", "hall:tirate"]], + ["77·비스마르크", 75, 93, 15, "che_event_저격", [1123, 5152, 188079, 37390, 21223], 0, "default.jpg", 77, "che_241107_mPRd", 84, ["hall:dex3", "hall:ttrate"]], + ["77·마요이", 15, 72, 95, "che_event_징병", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 77, "che_241107_mPRd", 86, ["hall:ttrate"]], + ["77·1557번 궁녀", 74, 94, 15, "che_event_필살", [18012, 21478, 680922, 22380, 24525], 1, "fce6fcd1.png?=20241109", 77, "che_241107_mPRd", 87, ["chief:10", "hall:betgold", "hall:dex3", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["77·Sase", 74, 15, 91, "che_event_의술", [25904, 26044, 2065, 312815, 11777], 1, "d6e56049.jpg?=20241106", 77, "che_241107_mPRd", 91, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["77·터보할멈", 90, 78, 16, "che_event_징병", [694052, 41741, 77292, 55727, 26378], 1, "25987dff.webp?=20241113", 77, "che_241107_mPRd", 92, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["77·Air", 79, 89, 15, "che_event_저격", [476140, 9632, 5765, 56551, 10127], 0, "default.jpg", 77, "che_241107_mPRd", 94, ["hall:dex1", "hall:tsrate"]], + ["77·텟사", 77, 91, 15, "che_event_필살", [23802, 19760, 625183, 65135, 31128], 0, "default.jpg", 77, "che_241107_mPRd", 97, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["77·간지밍이", 76, 18, 88, "che_event_집중", [1993, 9862, 10484, 218073, 238], 1, "32bc261d.png?=20240824", 77, "che_241107_mPRd", 98, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["77·아지태", 74, 16, 92, "che_event_징병", [33504, 10278, 10399, 293108, 21516], 1, "826c6458.jpg?=20241106", 77, "che_241107_mPRd", 99, ["hall:betrate", "hall:betwingold", "hall:winrate"]], + ["77·대교", 93, 15, 75, "che_event_필살", [40010, 4515, 36872, 375255, 23602], 1, "a53ab5ef.jpg?=20241010", 77, "che_241107_mPRd", 100, ["hall:tlrate"]], + ["77·패패", 95, 73, 15, "che_event_격노", [514518, 7708, 18273, 36508, 31882], 1, "893fddaf.webp?=20241108", 77, "che_241107_mPRd", 101, ["hall:dex1", "hall:killcrew_person", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["77·시나모롤", 77, 16, 90, "che_event_필살", [10000, 6466, 20303, 448644, 36139], 1, "d5b292ec.jpg?=20241110", 77, "che_241107_mPRd", 102, ["hall:dex4", "hall:dex5"]], + ["77·기녀", 74, 94, 15, "che_event_필살", [451318, 13570, 18780, 74370, 12082], 1, "5aadb16f.jpg?=20241107", 77, "che_241107_mPRd", 103, ["hall:dedication", "hall:dex1", "hall:tsrate"]], + ["77·플랑", 74, 95, 15, "che_event_필살", [44941, 638638, 9417, 48335, 33486], 1, "e0f344d9.png?=20241107", 77, "che_241107_mPRd", 105, ["chief:8", "hall:betgold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["77·황진", 76, 16, 91, "che_event_필살", [21293, 13554, 18302, 404314, 34794], 0, "default.jpg", 77, "che_241107_mPRd", 106, ["hall:dex4", "hall:dex5", "hall:occupied"]], + ["77·복숭아좋아", 76, 16, 89, "che_event_집중", [12977, 14522, 16801, 354860, 37145], 0, "default.jpg", 77, "che_241107_mPRd", 107, ["hall:dex5"]], + ["77·네이", 87, 16, 79, "che_event_집중", [21776, 5969, 14417, 445526, 46961], 0, "default.jpg", 77, "che_241107_mPRd", 110, ["hall:dex4", "hall:dex5", "hall:killnum", "hall:warnum"]], + ["77·단풍놀이", 76, 90, 15, "che_event_필살", [35992, 348443, 9757, 40987, 31657], 0, "default.jpg", 77, "che_241107_mPRd", 111, ["hall:dex2"]], + ["77·9rumee", 76, 15, 91, "che_event_신산", [25267, 4383, 26048, 374586, 20026], 0, "default.jpg", 77, "che_241107_mPRd", 117, ["hall:betrate", "hall:tirate"]], + ["77·くま", 76, 15, 92, "che_event_반계", [28817, 4129, 14951, 324915, 20227], 1, "770f53.jpg?=20190718", 77, "che_241107_mPRd", 118, ["hall:ttrate"]], + ["77·최진리", 90, 76, 15, "che_event_돌격", [365272, 21276, 14208, 85918, 22645], 1, "4b0cbce9.jpg?=20240825", 77, "che_241107_mPRd", 120, ["hall:dex1", "hall:tlrate"]], + ["77·이타도리 유지", 92, 15, 74, "che_event_집중", [29679, 18405, 11440, 357263, 25217], 1, "6e4e1b68.png?=20241010", 77, "che_241107_mPRd", 226, ["hall:ttrate"]], + ["77·황혼중", 15, 91, 75, "che_event_위압", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 77, "che_241107_mPRd", 229, ["hall:dedication", "hall:tsrate"]], + ["77·Navy마초", 76, 88, 15, "che_event_위압", [12220, 285342, 2382, 40149, 4020], 1, "37644ed3.png?=20230831", 77, "che_241107_mPRd", 236, ["hall:dex2"]], + ["77·Bianchi", 77, 91, 15, "che_event_징병", [317369, 3155, 25493, 27827, 3272], 0, "default.jpg", 77, "che_241107_mPRd", 237, ["hall:ttrate"]], + ["77·지각생", 77, 87, 16, "che_event_위압", [349668, 1526, 21779, 33606, 11036], 0, "default.jpg", 77, "che_241107_mPRd", 238, ["hall:dex1"]], + ["77·진 브", 32, 95, 55, "che_event_위압", [4362, 3800, 100994, 32660, 5179], 1, "0b49735d.jpg?=20241108", 77, "che_241107_mPRd", 252, ["hall:dex3", "hall:tsrate"]], + ["77·쥰쥰", 76, 88, 15, "che_event_견고", [23106, 4946, 240561, 56902, 19216], 1, "eec0d450.png?=20241022", 77, "che_241107_mPRd", 257, ["hall:dex3"]], + ["77·으라차", 75, 87, 16, "che_event_척사", [5360, 115157, 260, 17677, 13172], 0, "default.jpg", 77, "che_241107_mPRd", 325, ["hall:dex2"]], + ["77·뇽", 76, 87, 15, "che_event_위압", [9485, 19935, 206484, 20785, 22822], 0, "default.jpg", 77, "che_241107_mPRd", 326, ["hall:dex3"]], + ["77·네팍", 75, 15, 88, "che_event_척사", [4607, 4883, 19021, 172128, 15757], 0, "default.jpg", 77, "che_241107_mPRd", 328, ["hall:tirate"]], + ["77·메이웨더람쥐", 74, 16, 88, "che_event_귀병", [2699, 2811, 591, 72801, 6827], 1, "ee3e5aec.png?=20230902", 77, "che_241107_mPRd", 391, ["hall:ttrate"]], + ["77·ㅊㄹㅊㄹ", 75, 87, 15, "che_event_견고", [15018, 259046, 13072, 33347, 25775], 1, "63f1c106.png?=20230223", 77, "che_241107_mPRd", 407, ["hall:dex2", "hall:tsrate"]], + ["77·춤과파티", 76, 87, 16, "che_event_위압", [52308, 223890, 5766, 48082, 15413], 0, "default.jpg", 77, "che_241107_mPRd", 408, ["hall:dex2"]], + ["77·모찌", 74, 15, 89, "che_event_반계", [21748, 11378, 6100, 163822, 18930], 1, "b24730b1.jpg?=20230112", 77, "che_241107_mPRd", 426, ["hall:tirate"]], + ["77·박치기공룡", 77, 85, 15, "che_event_견고", [9812, 198864, 3452, 27596, 15463], 1, "0b2ff788.png?=20241111", 77, "che_241107_mPRd", 427, ["hall:dex2"]], + ["77·람각", 76, 16, 86, "che_event_집중", [9798, 8265, 6439, 212901, 3516], 0, "default.jpg", 77, "che_241107_mPRd", 517, ["hall:betrate"]], + ["77·.", 73, 18, 85, "che_event_반계", [0, 0, 0, 0, 0], 1, "04830b06.png?=20241115", 77, "che_241107_mPRd", 520, ["hall:betrate"]], + ["77·구경꾼", 72, 15, 88, "che_event_저격", [37627, 13174, 6659, 175000, 3359], 1, "449ebd31.jpg?=20241114", 77, "che_241107_mPRd", 527, ["hall:betrate", "hall:betwingold"]], + ["77·솟쟝", 87, 72, 16, "che_event_위압", [5421, 72256, 4634, 4488, 0], 0, "default.jpg", 77, "che_241107_mPRd", 590, ["hall:dex2"]], + ["78·리춘희", 77, 15, 91, "che_event_신중", [41773, 34625, 25279, 440463, 32907], 1, "212eeb23.jpg?=20241128", 78, "che_241128_0l1Z", 10, ["hall:tirate"]], + ["78·뉴비", 77, 94, 15, "che_event_필살", [849531, 21573, 63691, 121745, 34675], 0, "default.jpg", 78, "che_241128_0l1Z", 11, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killnum", "hall:occupied", "hall:tsrate"]], + ["78·독건적 약탈꾼", 77, 95, 15, "che_event_필살", [40630, 68570, 1197372, 99491, 45995], 1, "db32f614.jpg?=20241127", 78, "che_241128_0l1Z", 16, ["chief:12", "hall:betgold", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["78·Ktaeha", 79, 16, 88, "che_event_신중", [49251, 63016, 55537, 570708, 73227], 1, "bda498ac.jpg?=20241211", 78, "che_241128_0l1Z", 17, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5"]], + ["78·임사영", 79, 91, 15, "che_event_필살", [791655, 28660, 54880, 75971, 39402], 1, "0b5a2642.jpg?=20240305", 78, "che_241128_0l1Z", 18, ["hall:dex1"]], + ["78·김정은", 77, 94, 15, "che_event_필살", [709948, 63535, 78987, 85920, 27564], 1, "f9a90c14.png?=20241125", 78, "che_241128_0l1Z", 21, ["hall:betgold", "hall:dex1", "hall:dex2", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["78·Navy마초", 76, 92, 15, "che_event_의술", [542623, 16598, 18594, 78235, 24895], 1, "37644ed3.png?=20230831", 78, "che_241128_0l1Z", 33, ["hall:tsrate"]], + ["78·이스마엘", 81, 15, 89, "che_event_신산", [51250, 60386, 77552, 617039, 35525], 1, "e4d4e971.jpg?=20241217", 78, "che_241128_0l1Z", 34, ["hall:dex4", "hall:ttrate"]], + ["78·Hide_D", 78, 15, 93, "che_event_신산", [10910, 42883, 39209, 477315, 24194], 1, "4569d848.png?=20230612", 78, "che_241128_0l1Z", 40, ["hall:tirate"]], + ["78·와일드플라워", 76, 15, 94, "che_event_척사", [63821, 70542, 27456, 503717, 36450], 0, "default.jpg", 78, "che_241128_0l1Z", 42, ["hall:dedication", "hall:dex2", "hall:tirate", "hall:ttrate"]], + ["78·아후로디", 77, 91, 16, "che_event_징병", [39142, 48553, 610963, 98943, 55464], 1, "1f1930bb.png?=20241210", 78, "che_241128_0l1Z", 43, ["hall:dex3", "hall:dex5", "hall:occupied"]], + ["78·수장", 80, 91, 15, "che_event_무쌍", [988578, 12891, 23176, 80658, 34265], 1, "21dd7c6d.jpg?=20241128", 78, "che_241128_0l1Z", 44, ["chief:6", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["78·춤과파티", 78, 90, 15, "che_event_위압", [7667, 29813, 333318, 52922, 29810], 0, "default.jpg", 78, "che_241128_0l1Z", 54, ["hall:dex3"]], + ["78·독버지", 79, 91, 15, "che_event_필살", [39112, 852547, 8939, 37418, 33994], 1, "fdcbb12f.png?=20240918", 78, "che_241128_0l1Z", 56, ["chief:11", "hall:dex2", "hall:experience", "hall:firenum", "hall:occupied", "hall:winrate"]], + ["78·독구단 진브도둑", 77, 15, 93, "che_event_필살", [32766, 40822, 33777, 636257, 33170], 1, "29743bee.jpg?=20241128", 78, "che_241128_0l1Z", 63, ["chief:7", "hall:dedication", "hall:dex4", "hall:experience", "hall:ttrate"]], + ["78·김정일", 76, 15, 93, "che_event_돌격", [34299, 29277, 22748, 707349, 41506], 1, "6e40dcd7.png?=20241128", 78, "che_241128_0l1Z", 64, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["78·호나", 90, 83, 15, "che_event_격노", [340745, 47089, 511986, 95190, 20407], 0, "default.jpg", 78, "che_241128_0l1Z", 70, ["hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["78·최진리", 76, 15, 95, "che_event_신산", [34906, 14552, 27571, 368681, 17442], 1, "4b0cbce9.jpg?=20240825", 78, "che_241128_0l1Z", 75, ["hall:tirate"]], + ["78·대설", 79, 93, 15, "che_event_필살", [905933, 20338, 73498, 75865, 37471], 0, "default.jpg", 78, "che_241128_0l1Z", 77, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["78·화환부수기장인독구", 16, 72, 96, "che_event_반계", [0, 0, 0, 2162, 0], 1, "5283daf7.png?=20240511", 78, "che_241128_0l1Z", 80, ["hall:betwin", "hall:killrate_person", "hall:tirate"]], + ["78·대교", 93, 74, 15, "che_event_필살", [752112, 38627, 53651, 101643, 44177], 1, "a53ab5ef.jpg?=20241010", 78, "che_241128_0l1Z", 82, ["hall:dex1", "hall:dex5", "hall:tlrate"]], + ["78·불패", 80, 15, 90, "che_event_필살", [68830, 9973, 15441, 487229, 36974], 1, "175b1b62.jpg?=20241107", 78, "che_241128_0l1Z", 83, ["hall:betrate"]], + ["78·야호로아콘", 76, 15, 96, "che_event_징병", [33025, 36449, 41046, 1059555, 54081], 1, "e69d88ee.png?=20241214", 78, "che_241128_0l1Z", 84, ["hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["78·영차로아콘", 76, 96, 15, "che_event_필살", [987519, 26973, 86451, 71976, 29285], 1, "723b7459.jpg?=20241128", 78, "che_241128_0l1Z", 85, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["78·Sase", 76, 15, 94, "che_event_필살", [68829, 59412, 14169, 595519, 39748], 1, "77c15776.jpg?=20241217", 78, "che_241128_0l1Z", 86, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:tirate"]], + ["78·boogle", 92, 77, 16, "che_event_징병", [623836, 23110, 67129, 95138, 38065], 1, "b322c67d.png?=20241128", 78, "che_241128_0l1Z", 87, ["hall:dex1", "hall:tlrate"]], + ["78·카이스트", 80, 15, 92, "che_event_환술", [62528, 23980, 11984, 634805, 23701], 1, "e7e27cd6.jpg?=20221125", 78, "che_241128_0l1Z", 88, ["hall:dex4"]], + ["78·토바", 94, 75, 15, "che_event_징병", [543528, 48712, 27989, 87314, 62919], 1, "40b47df5.gif?=20241128", 78, "che_241128_0l1Z", 90, ["hall:dex5", "hall:tlrate"]], + ["78·리병철", 78, 92, 15, "che_event_필살", [489839, 20213, 77257, 65397, 19000], 1, "7532d129.png?=20241128", 78, "che_241128_0l1Z", 92, ["hall:firenum"]], + ["78·반입금지", 78, 90, 15, "che_event_무쌍", [653253, 26881, 33287, 24632, 16278], 0, "default.jpg", 78, "che_241128_0l1Z", 93, ["hall:dex1"]], + ["78·정말로아콘", 76, 16, 89, "che_event_징병", [55245, 13621, 98643, 454912, 28053], 1, "0341c030.png?=20241128", 78, "che_241128_0l1Z", 94, ["hall:dex3"]], + ["78·독구", 77, 15, 93, "che_event_필살", [72796, 57076, 12944, 790998, 59157], 1, "512dfad6.jpg?=20241214", 78, "che_241128_0l1Z", 95, ["chief:9", "hall:betwin", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:winrate"]], + ["78·덕구", 78, 90, 15, "che_event_척사", [480260, 25681, 8993, 59729, 30446], 0, "default.jpg", 78, "che_241128_0l1Z", 96, ["hall:tsrate"]], + ["78·크멘의 종", 94, 15, 77, "che_event_필살", [82505, 24862, 29409, 947095, 21199], 0, "default.jpg", 78, "che_241128_0l1Z", 99, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["78·비스마르크", 78, 93, 15, "che_event_필살", [110229, 577879, 6438, 97681, 21904], 0, "default.jpg", 78, "che_241128_0l1Z", 100, ["hall:dex2", "hall:tsrate", "hall:ttrate"]], + ["78·원류환", 94, 79, 15, "che_event_필살", [30959, 48096, 765389, 52244, 36797], 1, "d7afbd3b.jpg?=20241207", 78, "che_241128_0l1Z", 101, ["hall:betrate", "hall:dex3", "hall:tlrate", "hall:winrate"]], + ["78·ranran", 80, 89, 16, "che_event_필살", [48858, 500676, 44590, 80369, 29689], 0, "default.jpg", 78, "che_241128_0l1Z", 102, ["hall:dex2", "hall:firenum"]], + ["78·최룡해", 100, 70, 15, "che_event_공성", [27596, 18501, 27993, 64094, 1618869], 1, "15f34be6.png?=20241127", 78, "che_241128_0l1Z", 103, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["78·김여정", 77, 15, 96, "che_event_필살", [39250, 30331, 25080, 685049, 24238], 1, "b3e9d822.png?=20241127", 78, "che_241128_0l1Z", 104, ["hall:betrate", "hall:dex4", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["78·스야", 76, 15, 93, "che_event_척사", [44822, 24603, 5884, 237618, 14456], 1, "6f83b265.png?=20241128", 78, "che_241128_0l1Z", 105, ["hall:tirate"]], + ["78·눈칫로아콘", 76, 15, 91, "che_event_집중", [59090, 15827, 37413, 446769, 49996], 1, "667ff35d.png?=20241129", 78, "che_241128_0l1Z", 106, ["hall:dex5"]], + ["78·미친과학", 92, 78, 15, "che_event_격노", [639687, 39807, 17456, 89285, 19980], 1, "b95d9132.png?=20241128", 78, "che_241128_0l1Z", 107, ["hall:dex1", "hall:experience", "hall:tlrate"]], + ["78·천리마", 15, 97, 72, "che_event_징병", [0, 0, 0, 0, 0], 1, "b12f5155.jpg?=20241207", 78, "che_241128_0l1Z", 108, ["hall:tsrate"]], + ["78·습설", 79, 90, 15, "che_event_견고", [67941, 631311, 21271, 81158, 39000], 0, "default.jpg", 78, "che_241128_0l1Z", 110, ["hall:betwin", "hall:dex2", "hall:killrate_person"]], + ["78·니나브겨드햇반뚝딱", 80, 16, 88, "che_event_필살", [60477, 3815, 7271, 457262, 22471], 1, "ab9c3e03.png?=20241204", 78, "che_241128_0l1Z", 111, ["hall:ttrate"]], + ["78·굶주린 참새", 81, 93, 15, "che_event_견고", [102325, 889027, 14260, 53883, 26896], 1, "d8f8566d.png?=20241128", 78, "che_241128_0l1Z", 112, ["chief:10", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:ttrate", "hall:warnum"]], + ["78·김일성", 78, 15, 91, "che_event_환술", [40871, 24306, 12540, 479206, 32852], 1, "ad0a05f6.png?=20241126", 78, "che_241128_0l1Z", 113, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["78·NK", 94, 78, 15, "che_event_필살", [81944, 831943, 47389, 135072, 55740], 0, "default.jpg", 78, "che_241128_0l1Z", 114, ["hall:betrate", "hall:dex2", "hall:dex5", "hall:experience", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["78·정성옥", 19, 76, 88, "che_event_필살", [14871, 17004, 18085, 14442, 4290], 1, "84be83e1.png?=20241128", 78, "che_241128_0l1Z", 115, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication"]], + ["78·네이", 91, 81, 16, "che_event_징병", [43219, 44659, 790618, 119306, 37418], 0, "default.jpg", 78, "che_241128_0l1Z", 116, ["hall:dex3", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["78·마요이", 15, 73, 95, "che_event_신중", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 78, "che_241128_0l1Z", 117, ["hall:tirate"]], + ["78·독구?싶다", 77, 15, 92, "che_event_의술", [90686, 26565, 31719, 448962, 32155], 1, "3942e813.jpg?=20241214", 78, "che_241128_0l1Z", 123, ["hall:betrate", "hall:betwingold", "hall:dedication", "hall:ttrate"]], + ["78·염인백화검", 82, 90, 15, "che_event_견고", [36598, 31158, 620260, 62470, 15513], 1, "690ecb79.jpg?=20241202", 78, "che_241128_0l1Z", 214, ["hall:dex3", "hall:ttrate"]], + ["78·인민탱크", 92, 80, 15, "che_event_척사", [56241, 1299194, 27014, 45620, 16384], 1, "429da69d.png?=20241129", 78, "che_241128_0l1Z", 225, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["78·제갈여포", 79, 15, 88, "che_event_집중", [59238, 56422, 16633, 573185, 36044], 1, "bcef0af5.jpg?=20241203", 78, "che_241128_0l1Z", 231, ["hall:dex4", "hall:firenum"]], + ["78·독카류", 76, 90, 15, "che_event_위압", [525675, 15497, 30456, 91958, 36018], 1, "79566ab5.jpg?=20241107", 78, "che_241128_0l1Z", 234, ["hall:firenum", "hall:killrate", "hall:tsrate"]], + ["78·코드명다이스키", 96, 74, 15, "che_event_필살", [111462, 54361, 465180, 53524, 18047], 1, "d00e5575.jpg?=20241213", 78, "che_241128_0l1Z", 260, ["hall:dex3", "hall:tlrate"]], + ["78·독건적 경계근무원", 15, 73, 92, "che_event_환술", [0, 0, 0, 0, 0], 1, "0ebf2920.png?=20241130", 78, "che_241128_0l1Z", 271, ["hall:dedication"]], + ["78·잡았다요놈", 78, 88, 15, "che_event_척사", [530984, 45539, 17438, 61752, 40763], 1, "28b94d56.png?=20241129", 78, "che_241128_0l1Z", 273, ["chief:8", "hall:firenum"]], + ["78·조승상", 89, 76, 16, "che_event_견고", [19421, 63412, 400740, 83454, 40662], 1, "6f27503f.png?=20240322", 78, "che_241128_0l1Z", 275, ["hall:dex3"]], + ["78·로력영웅", 15, 75, 91, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 78, "che_241128_0l1Z", 428, ["hall:dedication"]], + ["78·밥먹달금", 15, 72, 90, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 78, "che_241128_0l1Z", 476, ["hall:dedication", "hall:firenum"]], + ["79·강자", 79, 96, 15, "che_event_필살", [63793, 678995, 12782, 33695, 56926], 1, "6e8de885.jpg?=20241226", 79, "che_241226_nOZq", 8, ["hall:betrate", "hall:dex2", "hall:dex5", "hall:tsrate", "hall:winrate"]], + ["79·임사영", 78, 102, 15, "che_event_필살", [2317835, 35686, 65444, 103215, 66799], 1, "0b5a2642.jpg?=20240305", 79, "che_241226_nOZq", 9, ["chief:12", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["79·에다", 100, 73, 15, "che_event_척사", [38174, 73161, 34501, 85446, 725746], 1, "06457219.png?=20241225", 79, "che_241226_nOZq", 10, ["hall:betrate", "hall:dex5", "hall:tlrate"]], + ["79·Bee폭력티모", 73, 16, 96, "che_event_필살", [14991, 15511, 6941, 194030, 26253], 1, "88704de6.jpg?=20241226", 79, "che_241226_nOZq", 16, ["hall:tirate"]], + ["79·종", 82, 16, 91, "che_event_필살", [33830, 27294, 49816, 1001545, 87784], 1, "22d60298.png?=20241226", 79, "che_241226_nOZq", 19, ["chief:7", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["79·장원영", 102, 70, 15, "che_event_공성", [4062, 0, 0, 9403, 324475], 1, "6314d1a5.jpg?=20241226", 79, "che_241226_nOZq", 22, ["hall:dex5", "hall:killrate", "hall:tlrate"]], + ["79·카류", 97, 75, 15, "che_event_필살", [877789, 33030, 99916, 117676, 41972], 1, "493a6d55.png?=20241227", 79, "che_241226_nOZq", 26, ["hall:dex1", "hall:experience", "hall:firenum", "hall:occupied", "hall:tlrate"]], + ["79·키키라라비비", 82, 15, 88, "che_event_신중", [48908, 52625, 90141, 754078, 35760], 1, "825fe816.png?=20241226", 79, "che_241226_nOZq", 28, ["hall:dex4"]], + ["79·척", 15, 70, 101, "che_event_환술", [0, 0, 0, 0, 0], 1, "7cb75480.png?=20221202", 79, "che_241226_nOZq", 29, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["79·퍄퍄", 79, 92, 15, "che_event_필살", [1222010, 18123, 46499, 35188, 43653], 0, "default.jpg", 79, "che_241226_nOZq", 30, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["79·스쿼트", 96, 77, 15, "che_event_격노", [45040, 62574, 1049335, 53377, 66002], 1, "fb78011e.jpg?=20241227", 79, "che_241226_nOZq", 34, ["hall:betgold", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["79·김나영", 80, 92, 15, "che_event_위압", [706362, 6786, 79647, 93364, 14020], 1, "26decc5a.jpg?=20250103", 79, "che_241226_nOZq", 35, ["hall:dex1"]], + ["79·강유", 79, 15, 92, "che_event_집중", [39796, 50933, 78473, 630373, 43169], 1, "79e150d0.jpg?=20230921", 79, "che_241226_nOZq", 36, ["hall:dex4"]], + ["79·바나낫", 79, 95, 15, "che_event_돌격", [107456, 21706, 260132, 80391, 28414], 1, "95478fad.gif?=20241223", 79, "che_241226_nOZq", 37, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:tsrate"]], + ["79·Hide_D", 74, 15, 98, "che_event_필살", [9095, 2561, 16954, 181157, 10453], 1, "4569d848.png?=20230612", 79, "che_241226_nOZq", 44, ["hall:tirate", "hall:ttrate"]], + ["79·총각파티", 82, 91, 15, "che_event_필살", [34217, 80919, 904274, 86425, 75328], 0, "default.jpg", 79, "che_241226_nOZq", 49, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5"]], + ["79·귀농한 독구", 15, 77, 95, "che_event_환술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 79, "che_241226_nOZq", 51, ["hall:betwin"]], + ["79·영", 96, 78, 15, "che_event_돌격", [34343, 87195, 1170110, 78124, 54891], 0, "default.jpg", 79, "che_241226_nOZq", 64, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["79·유산흡수", 78, 16, 95, "che_event_필살", [42311, 31565, 45042, 835483, 34851], 0, "default.jpg", 79, "che_241226_nOZq", 68, ["hall:dex4", "hall:ttrate"]], + ["79·윤석열", 75, 15, 94, "che_event_신산", [8192, 6536, 3776, 177661, 7559], 1, "3821e77c.jpg?=20241226", 79, "che_241226_nOZq", 70, ["hall:tirate", "hall:ttrate"]], + ["79·호나", 91, 82, 15, "che_event_격노", [540357, 110416, 566795, 79866, 32561], 0, "default.jpg", 79, "che_241226_nOZq", 73, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["79·셀레미파", 92, 80, 15, "che_event_격노", [28027, 12004, 517481, 43187, 28309], 1, "bafe6193.jpg?=20241226", 79, "che_241226_nOZq", 74, ["hall:betrate", "hall:dex3"]], + ["79·세종", 76, 93, 15, "che_event_저격", [35587, 79855, 189496, 32515, 32696], 1, "4907c406.jpg?=20241225", 79, "che_241226_nOZq", 79, ["hall:tsrate"]], + ["79·Navy마초", 80, 91, 15, "che_event_견고", [839378, 74438, 116556, 122221, 30989], 1, "37644ed3.png?=20230831", 79, "che_241226_nOZq", 81, ["hall:dex1"]], + ["79·노네임", 74, 96, 15, "che_event_징병", [256303, 87467, 12622, 31424, 23335], 1, "7c08b5e9.jpg?=20241227", 79, "che_241226_nOZq", 82, ["hall:dex2"]], + ["79·스즈키상", 74, 15, 96, "che_event_환술", [9008, 900, 3560, 130222, 14672], 1, "5d65c98b.jpg?=20241226", 79, "che_241226_nOZq", 83, ["hall:tirate", "hall:ttrate"]], + ["79·새해복많이받으세요", 79, 93, 16, "che_event_저격", [48544, 445268, 14789, 33957, 24493], 0, "default.jpg", 79, "che_241226_nOZq", 84, ["hall:dex2", "hall:tsrate"]], + ["79·마요이", 15, 73, 99, "che_event_척사", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 79, "che_241226_nOZq", 85, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["79·와일드플라워", 79, 16, 97, "che_event_무쌍", [22377, 25269, 36130, 1569675, 36875], 0, "default.jpg", 79, "che_241226_nOZq", 86, ["chief:9", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["79·독죽이", 97, 74, 15, "che_event_필살", [18969, 351230, 1358, 30808, 13444], 1, "4c87df23.png?=20241231", 79, "che_241226_nOZq", 87, ["hall:betrate", "hall:betwin", "hall:dex2", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["79·최진리", 77, 93, 15, "che_event_척사", [415248, 3997, 57469, 74120, 15620], 1, "677580c5.jpg?=20241230", 79, "che_241226_nOZq", 88, ["hall:tsrate"]], + ["79·대교", 94, 82, 15, "che_event_돌격", [1815993, 40758, 134941, 197112, 93118], 1, "a53ab5ef.jpg?=20241010", 79, "che_241226_nOZq", 89, ["chief:11", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["79·NK", 76, 97, 15, "che_event_돌격", [494214, 27814, 63403, 108969, 14764], 0, "default.jpg", 79, "che_241226_nOZq", 90, ["hall:tsrate"]], + ["79·복숭아좋아", 76, 15, 96, "che_event_집중", [24596, 5622, 7937, 265419, 20579], 0, "default.jpg", 79, "che_241226_nOZq", 91, ["hall:ttrate"]], + ["79·매그너스", 94, 77, 15, "che_event_격노", [35029, 72008, 571644, 81430, 29462], 1, "b00f1906.jpg?=20250102", 79, "che_241226_nOZq", 92, ["hall:dex3", "hall:tlrate"]], + ["79·panpenpan", 76, 15, 93, "che_event_필살", [11945, 7696, 14670, 181080, 18726], 0, "default.jpg", 79, "che_241226_nOZq", 93, ["hall:tirate", "hall:ttrate"]], + ["79·백화점레드썬", 78, 92, 15, "che_event_무쌍", [52547, 459440, 17858, 53992, 15652], 0, "default.jpg", 79, "che_241226_nOZq", 94, ["hall:dex2"]], + ["79·비스마르크", 80, 95, 15, "che_event_견고", [36465, 1353438, 39081, 26973, 35090], 0, "default.jpg", 79, "che_241226_nOZq", 96, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:warnum"]], + ["79·로비", 19, 72, 95, "che_event_저격", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 79, "che_241226_nOZq", 97, ["hall:tirate", "hall:ttrate"]], + ["79·카이스트", 80, 17, 93, "che_event_필살", [44266, 49450, 94343, 800064, 27336], 1, "e7e27cd6.jpg?=20221125", 79, "che_241226_nOZq", 101, ["hall:dex4", "hall:winrate"]], + ["79·간지밍이", 19, 78, 91, "che_event_신중", [0, 0, 0, 0, 0], 1, "b3e03d5f.png?=20241207", 79, "che_241226_nOZq", 102, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["79·소수맥", 84, 90, 15, "che_event_필살", [70206, 828055, 106558, 87694, 42239], 0, "default.jpg", 79, "che_241226_nOZq", 103, ["hall:betwin", "hall:dex2", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["79·이바라히메", 79, 92, 16, "che_event_견고", [511396, 8475, 64966, 81113, 35455], 1, "3e8815e4.png?=20241226", 79, "che_241226_nOZq", 104, ["hall:dex1", "hall:tsrate", "hall:ttrate"]], + ["79·사스케", 73, 94, 15, "che_event_징병", [14149, 5605, 427142, 41595, 26178], 1, "53aa49bd.jpg?=20241203", 79, "che_241226_nOZq", 105, ["hall:betgold", "hall:betwin", "hall:betwingold"]], + ["79·크렌스", 77, 94, 15, "che_event_돌격", [49574, 287951, 34088, 41868, 26355], 1, "e48108cf.jpg?=20241226", 79, "che_241226_nOZq", 106, ["hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["79·네이", 87, 15, 89, "che_event_징병", [78671, 32271, 45035, 862340, 45742], 0, "default.jpg", 79, "che_241226_nOZq", 107, ["hall:dex4", "hall:firenum"]], + ["79·독구", 77, 15, 96, "che_event_집중", [58872, 33592, 22578, 529649, 51192], 1, "961027d2.png?=20241226", 79, "che_241226_nOZq", 108, ["hall:tirate"]], + ["79·진솔", 16, 71, 100, "che_event_의술", [0, 0, 0, 0, 0], 1, "ed6e48d5.png?=20240719", 79, "che_241226_nOZq", 111, ["hall:dedication", "hall:tirate"]], + ["79·Sase", 79, 16, 90, "che_event_필살", [113167, 29899, 127194, 618776, 58518], 1, "cb8e4672.jpg?=20241224", 79, "che_241226_nOZq", 112, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:occupied"]], + ["79·쩝쩝", 80, 92, 16, "che_event_무쌍", [969055, 25084, 126899, 81801, 29202], 0, "default.jpg", 79, "che_241226_nOZq", 113, ["chief:6", "hall:dex1", "hall:experience", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["79·눈구", 15, 94, 76, "che_event_필살", [0, 0, 0, 0, 0], 1, "b12f5155.jpg?=20241207", 79, "che_241226_nOZq", 115, ["hall:dedication"]], + ["79·?", 80, 15, 89, "che_event_환술", [40698, 52425, 52064, 1031899, 52036], 0, "default.jpg", 79, "che_241226_nOZq", 116, ["chief:5", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person"]], + ["79·오징어", 78, 95, 15, "che_event_돌격", [820374, 27174, 45572, 91488, 24593], 1, "0157a7f3.png?=20241226", 79, "che_241226_nOZq", 118, ["hall:betwin", "hall:dex1", "hall:tsrate"]], + ["79·Air", 82, 93, 15, "che_event_징병", [19539, 32493, 1422773, 27725, 22673], 0, "default.jpg", 79, "che_241226_nOZq", 119, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["79·외심장", 79, 16, 93, "che_event_집중", [48570, 86879, 86980, 1118072, 43703], 1, "36110cd.jpg?=20180826", 79, "che_241226_nOZq", 123, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["79·이드", 15, 78, 94, "che_event_의술", [0, 0, 0, 0, 0], 1, "ac5f0a3b.jpg?=20241107", 79, "che_241226_nOZq", 126, ["hall:firenum"]], + ["79·ㅊㄹㅊㄹ", 81, 90, 15, "che_event_돌격", [46835, 48440, 800205, 66519, 45865], 1, "63f1c106.png?=20230223", 79, "che_241226_nOZq", 132, ["hall:dex3"]], + ["79·니쉬", 90, 15, 81, "che_event_집중", [13483, 11598, 46489, 600762, 19784], 1, "8d8f0ebd.png?=20241226", 79, "che_241226_nOZq", 135, ["hall:betgold", "hall:betwin"]], + ["79·황혼중", 15, 79, 93, "che_event_신중", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 79, "che_241226_nOZq", 136, ["hall:dedication"]], + ["79·양면 스쿠나", 99, 73, 15, "che_event_위압", [123630, 257990, 591731, 88256, 82812], 1, "7dddaca0.jpg?=20241227", 79, "che_241226_nOZq", 214, ["hall:betrate", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["79·레드캡피자", 74, 16, 96, "che_event_신중", [10450, 1247, 20268, 137187, 11575], 1, "06c40c7e.jpg?=20241015", 79, "che_241226_nOZq", 257, ["hall:ttrate"]], + ["79·도화가", 16, 73, 94, "che_event_필살", [0, 0, 0, 0, 0], 1, "04dc945f.jpg?=20241227", 79, "che_241226_nOZq", 272, ["hall:firenum"]], + ["79·컴퓨터", 78, 90, 17, "che_event_기병", [15205, 58750, 610722, 87150, 24013], 0, "default.jpg", 79, "che_241226_nOZq", 289, ["hall:dex3"]], + ["79·Kman", 16, 90, 73, "che_event_무쌍", [0, 0, 0, 0, 0], 1, "1851f40c.jpg?=20250101", 79, "che_241226_nOZq", 447, ["hall:firenum"]], + ["79·지금퇴근합니다", 15, 73, 93, "che_event_필살", [0, 0, 0, 20, 0], 0, "default.jpg", 79, "che_241226_nOZq", 477, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication"]], + ["81·독구", 76, 15, 93, "che_event_집중", [61374, 10745, 10500, 514741, 45775], 1, "7a46c9cc.png?=20250306", 81, "che_250306_Pw44", 6, ["chief:9", "hall:betwin", "hall:dex5", "hall:experience", "hall:tirate"]], + ["81·바나낫", 82, 85, 15, "che_event_징병", [435741, 21446, 31292, 70570, 32325], 1, "95478fad.gif?=20241223", 81, "che_250306_Pw44", 21, ["hall:betrate", "hall:dex1"]], + ["81·니쉬", 15, 71, 97, "che_event_징병", [0, 0, 0, 0, 0], 1, "acec26d1.png?=20250307", 81, "che_250306_Pw44", 27, ["hall:dedication", "hall:tirate"]], + ["81·이드", 15, 90, 78, "che_event_신산", [0, 0, 0, 0, 0], 1, "ac5f0a3b.jpg?=20241107", 81, "che_250306_Pw44", 30, ["hall:firenum", "hall:ttrate"]], + ["81·강유", 79, 15, 91, "che_event_환술", [19421, 18659, 27179, 716607, 26132], 1, "79e150d0.jpg?=20230921", 81, "che_250306_Pw44", 32, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["81·와일드플라워", 77, 92, 15, "che_event_견고", [49211, 56130, 559299, 61977, 11806], 0, "default.jpg", 81, "che_250306_Pw44", 33, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["81·척", 78, 88, 15, "che_event_의술", [38177, 16176, 409533, 92142, 39807], 1, "7cb75480.png?=20221202", 81, "che_250306_Pw44", 34, ["hall:dex3"]], + ["81·비스마르크", 77, 92, 15, "che_event_척사", [24295, 38796, 421509, 54304, 35851], 0, "default.jpg", 81, "che_250306_Pw44", 36, ["hall:dex3", "hall:tsrate"]], + ["81·호나", 75, 94, 15, "che_event_돌격", [336586, 74267, 46936, 93191, 29894], 0, "default.jpg", 81, "che_250306_Pw44", 39, ["hall:betrate", "hall:betwingold", "hall:tsrate", "hall:winrate"]], + ["81·플로리다", 76, 15, 90, "che_event_신산", [33858, 14205, 22764, 353964, 37370], 0, "default.jpg", 81, "che_250306_Pw44", 40, ["hall:firenum"]], + ["81·이서", 90, 15, 81, "che_event_필살", [27737, 17353, 31278, 708004, 10830], 1, "8c8d0c81.jpg?=20250307", 81, "che_250306_Pw44", 41, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["81·Nunsense", 82, 87, 15, "che_event_필살", [65184, 351336, 7256, 71499, 38966], 1, "f456d3.jpg?=20200828", 81, "che_250306_Pw44", 42, ["hall:dex2", "hall:ttrate"]], + ["81·팔일기", 80, 16, 90, "che_event_징병", [25968, 18439, 45734, 688460, 19279], 0, "default.jpg", 81, "che_250306_Pw44", 43, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["81·꽃가루 알러지 독구", 16, 71, 97, "che_event_척사", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 81, "che_250306_Pw44", 46, ["hall:betwin", "hall:dedication", "hall:tirate"]], + ["81·똑토끼", 15, 71, 96, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 81, "che_250306_Pw44", 49, ["hall:dedication"]], + ["81·강서유서", 87, 15, 79, "che_event_징병", [44958, 16596, 27347, 293680, 48791], 1, "ee334a1d.jpg?=20241130", 81, "che_250306_Pw44", 51, ["hall:dex5"]], + ["81·만렙토끼", 79, 87, 15, "che_event_필살", [68361, 22440, 315701, 52347, 18883], 0, "default.jpg", 81, "che_250306_Pw44", 61, ["hall:dex3", "hall:occupied"]], + ["81·대장토끼", 75, 93, 16, "che_event_척사", [527592, 16151, 34809, 48490, 15553], 1, "8c670172.jpg?=20250306", 81, "che_250306_Pw44", 65, ["hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["81·고죠 사토루", 75, 93, 15, "che_event_무쌍", [52768, 381983, 119725, 40096, 58534], 1, "c31e1985.jpg?=20250123", 81, "che_250306_Pw44", 70, ["chief:8", "hall:dex2", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["81·실훔", 79, 91, 16, "che_event_징병", [97249, 628621, 14178, 50793, 17526], 0, "default.jpg", 81, "che_250306_Pw44", 71, ["hall:betwin", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["81·리치사기꾼진브", 88, 77, 15, "che_event_돌격", [76056, 243978, 902, 65203, 50656], 1, "4458602d.png?=20250306", 81, "che_250306_Pw44", 73, ["hall:dex2", "hall:dex5", "hall:tlrate"]], + ["81·잠수", 76, 15, 94, "che_event_집중", [23999, 14127, 30540, 573774, 18448], 0, "default.jpg", 81, "che_250306_Pw44", 76, ["hall:dex4", "hall:tirate"]], + ["81·Sase", 78, 15, 90, "che_event_의술", [19283, 9187, 36869, 690063, 46254], 1, "cb8e4672.jpg?=20241224", 81, "che_250306_Pw44", 77, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:occupied", "hall:winrate"]], + ["81·Hide_D", 74, 15, 94, "che_event_저격", [24786, 22916, 4190, 173689, 24204], 1, "4569d848.png?=20230612", 81, "che_250306_Pw44", 78, ["hall:tirate"]], + ["81·무당벌레", 92, 76, 15, "che_event_징병", [1060860, 20592, 59611, 135385, 37485], 0, "default.jpg", 81, "che_250306_Pw44", 79, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["81·사스케", 75, 15, 92, "che_event_필살", [19288, 9212, 7131, 367170, 22658], 1, "53aa49bd.jpg?=20241203", 81, "che_250306_Pw44", 80, ["hall:betwin", "hall:winrate"]], + ["81·밀하우스 벤하우튼", 91, 76, 16, "che_event_저격", [562171, 2773, 23680, 84623, 12404], 0, "default.jpg", 81, "che_250306_Pw44", 83, ["hall:dex1", "hall:tlrate", "hall:ttrate"]], + ["81·불패", 81, 15, 88, "che_event_필살", [24356, 19350, 34201, 531912, 39115], 1, "7c08b5e9.jpg?=20241227", 81, "che_250306_Pw44", 84, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:occupied"]], + ["81·TATUM", 77, 15, 89, "che_event_필살", [20824, 14351, 8277, 422889, 28625], 0, "default.jpg", 81, "che_250306_Pw44", 85, ["hall:betrate"]], + ["81·나나치", 93, 75, 16, "che_event_필살", [591899, 7415, 26686, 73697, 14029], 1, "868048bc.jpg?=20250305", 81, "che_250306_Pw44", 86, ["hall:betwin", "hall:dex1", "hall:tlrate", "hall:warnum"]], + ["81·라비린", 76, 16, 92, "che_event_집중", [58133, 12887, 23064, 509603, 49441], 1, "5356229e.png?=20250306", 81, "che_250306_Pw44", 87, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex5", "hall:killrate", "hall:occupied"]], + ["81·평민킬러", 76, 94, 15, "che_event_필살", [798889, 6731, 23205, 72887, 24058], 1, "546a68f4.jpg?=20250305", 81, "che_250306_Pw44", 88, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["81·민희진", 87, 16, 78, "che_event_필살", [54439, 65480, 7775, 525929, 25113], 1, "d7a28ce8.jpg?=20250306", 81, "che_250306_Pw44", 90, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:tlrate"]], + ["81·토냥이", 77, 89, 15, "che_event_견고", [403051, 6816, 29141, 60763, 26205], 1, "964ba5ab.png?=20250306", 81, "che_250306_Pw44", 91, ["hall:dex1"]], + ["81·덕구", 78, 88, 16, "che_event_위압", [71893, 425390, 12222, 83723, 10658], 0, "default.jpg", 81, "che_250306_Pw44", 93, ["hall:dex2"]], + ["81·햄부기", 76, 93, 15, "che_event_무쌍", [22346, 15159, 492365, 68970, 34771], 1, "dd0ec1dd.webp?=20250306", 81, "che_250306_Pw44", 94, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["81·카이스트", 75, 15, 94, "che_event_집중", [50809, 7023, 20760, 445778, 40157], 1, "e7e27cd6.jpg?=20221125", 81, "che_250306_Pw44", 95, ["chief:7", "hall:dedication", "hall:experience", "hall:tirate"]], + ["81·네이", 88, 15, 82, "che_event_집중", [47016, 62576, 22978, 589995, 16010], 0, "default.jpg", 81, "che_250306_Pw44", 96, ["hall:dex4", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["81·진보의 다리", 76, 92, 15, "che_event_필살", [429203, 6348, 26761, 68072, 22031], 1, "20140fd6.jpg?=20250306", 81, "che_250306_Pw44", 99, ["hall:dex1", "hall:tsrate"]], + ["81·평민", 78, 94, 16, "che_event_무쌍", [1248738, 56263, 32712, 43215, 46086], 0, "default.jpg", 81, "che_250306_Pw44", 100, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["81·임마", 78, 91, 16, "che_event_필살", [22964, 601306, 8101, 65288, 49464], 0, "default.jpg", 81, "che_250306_Pw44", 101, ["chief:6", "hall:dex2", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["81·대교", 95, 71, 16, "che_event_의술", [313963, 8845, 9604, 56829, 24474], 1, "a53ab5ef.jpg?=20241010", 81, "che_250306_Pw44", 103, ["hall:tlrate"]], + ["81·벤치프레스", 79, 92, 15, "che_event_필살", [23426, 708886, 21227, 21302, 15671], 1, "f51b712b.jpg?=20250307", 81, "che_250306_Pw44", 104, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum"]], + ["81·임사영", 78, 91, 16, "che_event_위압", [119402, 337916, 198066, 69773, 33578], 1, "0b5a2642.jpg?=20240305", 81, "che_250306_Pw44", 105, ["chief:10", "hall:betrate", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:winrate"]], + ["81·SQQQ", 94, 75, 15, "che_event_필살", [57052, 36648, 510045, 91020, 22584], 1, "86ef0874.png?=20250306", 81, "che_250306_Pw44", 106, ["hall:dex3", "hall:tlrate"]], + ["81·NK", 75, 94, 15, "che_event_필살", [39331, 21808, 522959, 80662, 42573], 0, "default.jpg", 81, "che_250306_Pw44", 107, ["chief:11", "hall:dex3", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["81·황혼중", 15, 82, 86, "che_event_척사", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 81, "che_250306_Pw44", 109, ["hall:dedication"]], + ["81·간지밍이", 16, 73, 88, "che_event_징병", [0, 0, 0, 0, 0], 1, "b3e03d5f.png?=20241207", 81, "che_250306_Pw44", 111, ["hall:ttrate"]], + ["81·犢皮紙", 76, 92, 15, "che_event_견고", [328448, 5274, 13489, 67249, 9414], 1, "41ecab30.png?=20250313", 81, "che_250306_Pw44", 114, ["hall:tsrate"]], + ["81·춤과파티", 75, 15, 96, "che_event_신중", [35917, 24309, 20271, 956481, 22394], 0, "default.jpg", 81, "che_250306_Pw44", 119, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["81·아무개", 15, 72, 97, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 81, "che_250306_Pw44", 120, ["hall:dedication", "hall:experience"]], + ["81·최진리", 89, 78, 15, "che_event_위압", [627525, 20528, 35898, 105960, 20467], 1, "677580c5.jpg?=20241230", 81, "che_250306_Pw44", 121, ["hall:dex1", "hall:killrate_person", "hall:tlrate"]], + ["81·솔의눈", 15, 93, 73, "che_event_의술", [0, 0, 0, 0, 0], 1, "9deba9c0.jpg?=20250306", 81, "che_250306_Pw44", 198, ["hall:betgold"]], + ["81·마요이", 15, 73, 94, "che_event_환술", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 81, "che_250306_Pw44", 204, ["hall:dedication", "hall:tirate"]], + ["81·진솔", 15, 71, 96, "che_event_의술", [0, 0, 0, 0, 0], 1, "ed6e48d5.png?=20240719", 81, "che_250306_Pw44", 208, ["hall:dedication", "hall:tirate"]], + ["81·올해의 새", 79, 15, 100, "che_event_징병", [49356, 33436, 22336, 1541919, 31119], 1, "9a1d6ac7.jpg?=20250318", 81, "che_250306_Pw44", 215, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum"]], + ["81·유카", 78, 88, 15, "che_event_격노", [35634, 32671, 480647, 41221, 42158], 0, "default.jpg", 81, "che_250306_Pw44", 219, ["hall:dex3"]], + ["81·아즈마 레이", 77, 89, 17, "che_event_견고", [21583, 21621, 258567, 35775, 13587], 1, "044cfc1b.png?=20250312", 81, "che_250306_Pw44", 260, ["hall:dex3"]], + ["81·키키라라비비", 76, 15, 91, "che_event_필살", [39300, 6233, 23079, 444648, 68372], 1, "7d3befed.png?=20250307", 81, "che_250306_Pw44", 266, ["hall:dex5"]], + ["81·환수사", 77, 89, 16, "che_event_견고", [52346, 448320, 11622, 92835, 36533], 1, "0bc802fe.png?=20250308", 81, "che_250306_Pw44", 299, ["hall:betrate", "hall:dex2", "hall:occupied"]], + ["81·하우젤", 78, 89, 15, "che_event_필살", [137376, 393829, 25577, 56505, 58850], 1, "dcff9fd.jpg?=20180823", 81, "che_250306_Pw44", 338, ["hall:dex2", "hall:dex5", "hall:killrate", "hall:killrate_person"]], + ["82·임사영", 81, 15, 95, "che_event_필살", [52735, 44916, 35391, 858256, 39414], 1, "0b5a2642.jpg?=20240305", 82, "che_250403_0XkN", 5, ["hall:dedication", "hall:dex4", "hall:experience"]], + ["82·척", 67, 78, 14, "che_event_돌격", [37292, 28211, 353143, 77605, 15177], 1, "7cb75480.png?=20221202", 82, "che_250403_0XkN", 20, ["hall:dex3"]], + ["82·카멘", 66, 83, 13, "che_event_필살", [40223, 414124, 403144, 36044, 30533], 1, "6e36e67b.jpg?=20250328", 82, "che_250403_0XkN", 23, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["82·냥냥냥", 98, 76, 16, "che_event_격노", [80241, 31218, 875320, 172904, 41403], 1, "458caeac.gif?=20240919", 82, "che_250403_0XkN", 26, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:tlrate"]], + ["82·Hide_D", 78, 15, 96, "che_event_반계", [90898, 26700, 37405, 789392, 36653], 1, "4569d848.png?=20230612", 82, "che_250403_0XkN", 28, ["hall:dedication", "hall:dex4"]], + ["82·이노마타 타이키", 77, 15, 96, "che_event_징병", [90541, 27755, 55869, 695341, 32788], 1, "f0fb0fd6.png?=20250327", 82, "che_250403_0XkN", 29, ["hall:betrate", "hall:tirate"]], + ["82·호나", 79, 93, 17, "che_event_위압", [82450, 294425, 572658, 80018, 36507], 0, "default.jpg", 82, "che_250403_0XkN", 41, ["hall:dex2", "hall:dex3", "hall:tsrate"]], + ["82·대교", 79, 14, 68, "che_event_필살", [33455, 12197, 33496, 490217, 15545], 1, "a53ab5ef.jpg?=20241010", 82, "che_250403_0XkN", 42, ["hall:dex4", "hall:experience", "hall:tlrate"]], + ["82·청주꽃돌이관흥", 80, 15, 95, "che_event_필살", [33540, 27816, 35598, 1142339, 27468], 1, "2425f9df.png?=20250402", 82, "che_250403_0XkN", 51, ["chief:7", "hall:dex4", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["82·욕망군단장비아키스", 89, 15, 86, "che_event_징병", [181802, 75957, 53878, 1391331, 35690], 1, "a966680a.jpg?=20250403", 82, "che_250403_0XkN", 55, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["82·가능", 98, 79, 15, "che_event_필살", [1329915, 14019, 29867, 137649, 31241], 1, "8766f81d.jpg?=20250403", 82, "che_250403_0XkN", 59, ["chief:6", "hall:betwin", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["82·독구", 80, 71, 13, "che_event_징병", [835480, 15149, 21465, 68101, 12647], 1, "d3f6b930.png?=20250428", 82, "che_250403_0XkN", 60, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["82·진웅", 80, 97, 15, "che_event_격노", [1284354, 45556, 30584, 36851, 44220], 1, "63fe9175.png?=20250404", 82, "che_250403_0XkN", 61, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["82·딸기", 79, 15, 93, "che_event_신중", [74070, 28071, 80003, 565693, 39477], 1, "f8c96512.png?=20250403", 82, "che_250403_0XkN", 64, ["hall:ttrate"]], + ["82·구루", 83, 91, 15, "che_event_필살", [760870, 30908, 57325, 88909, 35829], 0, "default.jpg", 82, "che_250403_0XkN", 67, ["hall:betwin", "hall:dex1"]], + ["82·이드", 67, 80, 13, "che_event_돌격", [47130, 120178, 167881, 49221, 16517], 1, "ac5f0a3b.jpg?=20241107", 82, "che_250403_0XkN", 69, ["hall:dex2", "hall:dex3", "hall:tsrate"]], + ["82·퍄퍄", 79, 15, 94, "che_event_신중", [50135, 48407, 60889, 597960, 39561], 0, "default.jpg", 82, "che_250403_0XkN", 71, ["hall:tirate"]], + ["82·연미복관흥", 20, 71, 94, "che_event_의술", [0, 0, 0, 0, 0], 1, "9bc030c2.png?=20250403", 82, "che_250403_0XkN", 72, ["hall:dedication", "hall:tirate"]], + ["82·Air", 82, 92, 15, "che_event_위압", [114121, 770673, 32839, 73053, 42437], 0, "default.jpg", 82, "che_250403_0XkN", 73, ["hall:betrate", "hall:dex2"]], + ["82·간지밍이", 15, 77, 65, "che_event_필살", [2007, 838, 2481, 0, 126], 1, "b3e03d5f.png?=20241207", 82, "che_250403_0XkN", 76, ["hall:betwin", "hall:firenum"]], + ["82·(지브리)이해고", 80, 93, 16, "che_event_돌격", [888586, 31362, 33943, 115773, 70191], 1, "3629c4aa.png?=20250403", 82, "che_250403_0XkN", 80, ["hall:betgold", "hall:dex1", "hall:dex5", "hall:occupied"]], + ["82·개미호창", 95, 77, 15, "che_event_공성", [108950, 37060, 148433, 77234, 369706], 1, "ad4f0314.jpg?=20250403", 82, "che_250403_0XkN", 83, ["hall:dex5", "hall:occupied", "hall:tlrate"]], + ["82·쿠크세이튼", 66, 82, 13, "che_event_필살", [622211, 17900, 32257, 52902, 19447], 1, "5a77392d.png?=20250403", 82, "che_250403_0XkN", 84, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["82·발리나크", 78, 93, 16, "che_event_징병", [861979, 20320, 52887, 88904, 35073], 1, "cbfc7ae4.jpg?=20250403", 82, "che_250403_0XkN", 85, ["hall:dex1"]], + ["82·카이스트", 80, 15, 97, "che_event_견고", [69087, 42263, 18910, 1117158, 16745], 1, "e7e27cd6.jpg?=20221125", 82, "che_250403_0XkN", 86, ["hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:warnum"]], + ["82·서희", 78, 16, 94, "che_event_척사", [56699, 37178, 26882, 797574, 22174], 0, "default.jpg", 82, "che_250403_0XkN", 88, ["hall:dex4"]], + ["82·킬리네사", 67, 13, 82, "che_event_집중", [40195, 15663, 14890, 399485, 27338], 1, "81036b10.png?=20250403", 82, "che_250403_0XkN", 89, ["hall:betrate", "hall:dedication", "hall:dex5", "hall:occupied", "hall:tirate"]], + ["82·Sase", 70, 86, 13, "che_event_징병", [432266, 366771, 549857, 49905, 27357], 1, "cb8e4672.jpg?=20241224", 82, "che_250403_0XkN", 90, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["82·KISJ", 78, 96, 15, "che_event_필살", [733942, 11680, 72940, 108427, 24343], 0, "default.jpg", 82, "che_250403_0XkN", 91, ["hall:tsrate", "hall:ttrate"]], + ["82·덕구", 77, 92, 16, "che_event_격노", [581417, 6484, 34823, 109565, 27174], 0, "default.jpg", 82, "che_250403_0XkN", 92, ["hall:tsrate"]], + ["82·둠스데이", 70, 78, 13, "che_event_척사", [321896, 24728, 22216, 46777, 5767], 1, "62e7d3c9.png?=20250423", 82, "che_250403_0XkN", 93, ["hall:ttrate"]], + ["82·불여시헌터관흥", 89, 15, 85, "che_event_집중", [49468, 37334, 37346, 1218732, 31691], 1, "fe5af1e1.png?=20250403", 82, "che_250403_0XkN", 94, ["chief:9", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["82·여심폭격기관흥", 65, 84, 13, "che_event_필살", [874102, 12753, 4354, 19501, 17728], 1, "8c443498.jpg?=20250402", 82, "che_250403_0XkN", 97, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["82·사스케", 101, 70, 15, "che_event_공성", [38471, 11965, 37236, 84271, 2037850], 1, "53aa49bd.jpg?=20241203", 82, "che_250403_0XkN", 98, ["chief:10", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate"]], + ["82·백수", 68, 79, 14, "che_event_무쌍", [367356, 8059, 24120, 25793, 9336], 0, "default.jpg", 82, "che_250403_0XkN", 99, ["hall:ttrate"]], + ["82·진솔", 78, 95, 15, "che_event_격노", [35434, 35925, 664281, 56299, 26982], 1, "ed6e48d5.png?=20240719", 82, "che_250403_0XkN", 101, ["hall:dex3", "hall:winrate"]], + ["82·페로몬뉴클리어관흥", 68, 14, 80, "che_event_집중", [28265, 7500, 13547, 503889, 21794], 1, "8258b1b8.jpg?=20250403", 82, "che_250403_0XkN", 102, ["chief:5", "hall:dedication", "hall:dex4", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["82·주하야", 90, 82, 15, "che_event_징병", [476123, 3034, 23284, 46961, 3476], 0, "default.jpg", 82, "che_250403_0XkN", 103, ["hall:tlrate"]], + ["82·Every Moment", 92, 79, 15, "che_event_무쌍", [128308, 653221, 36770, 104497, 36794], 1, "368dc914.png?=20250404", 82, "che_250403_0XkN", 104, ["hall:dex2", "hall:tlrate"]], + ["82·NK", 67, 82, 13, "che_event_징병", [53051, 513423, 17455, 80311, 13407], 0, "default.jpg", 82, "che_250403_0XkN", 105, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:killcrew_person", "hall:tsrate"]], + ["82·도라에몽", 91, 15, 80, "che_event_필살", [70289, 34523, 39729, 761853, 22166], 1, "a2bd8035.gif?=20250419", 82, "che_250403_0XkN", 106, ["hall:betgold", "hall:betrate", "hall:betwingold"]], + ["82·ㅠ.ㅠ", 88, 15, 85, "che_event_징병", [59442, 39346, 51493, 826552, 31819], 0, "default.jpg", 82, "che_250403_0XkN", 107, ["hall:dex4", "hall:firenum"]], + ["82·로비", 15, 73, 99, "che_event_저격", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 82, "che_250403_0XkN", 108, ["hall:dedication", "hall:tirate"]], + ["82·메로나", 66, 13, 82, "che_event_집중", [32380, 18871, 19692, 387663, 25237], 1, "ab597a59.png?=20250410", 82, "che_250403_0XkN", 109, ["hall:tirate", "hall:ttrate"]], + ["82·니쉬", 15, 72, 98, "che_event_의술", [0, 0, 0, 0, 0], 1, "acec26d1.png?=20250307", 82, "che_250403_0XkN", 113, ["hall:tirate"]], + ["82·로아 그만둔 독구", 15, 73, 99, "che_event_필살", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 82, "che_250403_0XkN", 115, ["hall:betwin", "hall:dedication", "hall:tirate"]], + ["82·최진리", 97, 76, 15, "che_event_필살", [777136, 18197, 112522, 93957, 21284], 1, "677580c5.jpg?=20241230", 82, "che_250403_0XkN", 116, ["hall:dex1", "hall:tlrate"]], + ["82·병리학적자세", 80, 15, 90, "che_event_신중", [37964, 22075, 61541, 466783, 9635], 1, "3679089.jpg?=20180629", 82, "che_250403_0XkN", 121, ["hall:betrate", "hall:betwin"]], + ["82·황혼중", 15, 83, 90, "che_event_징병", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 82, "che_250403_0XkN", 125, ["hall:dedication"]], + ["82·밀리터리 프레스", 82, 93, 16, "che_event_필살", [38415, 48281, 1189177, 85772, 66919], 1, "4c3599f8.jpg?=20250404", 82, "che_250403_0XkN", 216, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["82·기술셔틀", 15, 71, 101, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 82, "che_250403_0XkN", 217, ["hall:firenum", "hall:tirate"]], + ["82·마요이", 16, 73, 98, "che_event_징병", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 82, "che_250403_0XkN", 224, ["hall:tirate", "hall:ttrate"]], + ["82·와일드플라워", 78, 91, 16, "che_event_돌격", [94766, 436660, 43052, 164789, 17964], 0, "default.jpg", 82, "che_250403_0XkN", 228, ["hall:dex2"]], + ["82·비스마르크", 79, 95, 15, "che_event_필살", [80443, 654857, 29093, 89616, 54636], 0, "default.jpg", 82, "che_250403_0XkN", 230, ["hall:dex2", "hall:dex5", "hall:tsrate"]], + ["82·雪原", 81, 93, 15, "che_event_격노", [12709, 21858, 725053, 41496, 50673], 0, "default.jpg", 82, "che_250403_0XkN", 235, ["hall:dex3", "hall:dex5", "hall:ttrate"]], + ["82·어둠의대검", 78, 15, 92, "che_event_필살", [64117, 20513, 37497, 606133, 48542], 1, "58b83f5f.png?=20250408", 82, "che_250403_0XkN", 303, ["hall:dex5"]], + ["82·Navy마초", 77, 92, 15, "che_event_무쌍", [38659, 309360, 9971, 70850, 13121], 1, "37644ed3.png?=20230831", 82, "che_250403_0XkN", 313, ["hall:dex2"]], + ["82·충북미남관흥", 17, 73, 96, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 82, "che_250403_0XkN", 315, ["hall:firenum"]], + ["82·관흥동생관색", 16, 72, 97, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 82, "che_250403_0XkN", 363, ["hall:dedication"]], + ["82·여심도둑가능", 78, 89, 15, "che_event_필살", [26114, 48097, 500633, 100049, 19276], 1, "a55a390e.png?=20250411", 82, "che_250403_0XkN", 501, ["hall:dex3"]], + ["83·아미새", 80, 16, 89, "che_event_집중", [57161, 36399, 38641, 804048, 43663], 1, "16cfc47b.jpg?=20250501", 83, "che_250501_tClO", 6, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:firenum"]], + ["83·어그로천번끄는독구", 15, 72, 97, "che_event_징병", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 83, "che_250501_tClO", 14, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:tirate"]], + ["83·Mr. Boo", 83, 15, 92, "che_event_척사", [47660, 7946, 64857, 1168257, 21840], 1, "93f65efe.gif?=20250501", 83, "che_250501_tClO", 16, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["83·Skt", 78, 92, 15, "che_event_격노", [788123, 17868, 62293, 32290, 19815], 0, "default.jpg", 83, "che_250501_tClO", 17, ["hall:dex1", "hall:tsrate"]], + ["83·바나낫", 78, 15, 93, "che_event_필살", [101902, 44800, 82871, 890266, 42351], 1, "dab9237e.gif?=20250428", 83, "che_250501_tClO", 18, ["chief:9", "hall:dex4", "hall:firenum", "hall:ttrate"]], + ["83·임사영", 93, 77, 15, "che_event_필살", [248173, 480143, 137084, 77623, 36248], 1, "0b5a2642.jpg?=20240305", 83, "che_250501_tClO", 19, ["hall:dex2", "hall:dex3", "hall:tlrate"]], + ["83·와일드플라워", 76, 16, 92, "che_event_집중", [25219, 34255, 29840, 595028, 30758], 0, "default.jpg", 83, "che_250501_tClO", 30, ["hall:tirate"]], + ["83·퍄퍄", 78, 93, 15, "che_event_필살", [551061, 13238, 34655, 93334, 20727], 0, "default.jpg", 83, "che_250501_tClO", 36, ["chief:11", "hall:dedication", "hall:dex1", "hall:tsrate"]], + ["83·하와와", 81, 15, 92, "che_event_필살", [49527, 34417, 60690, 856409, 49310], 1, "7cfb6523.png?=20250522", 83, "che_250501_tClO", 37, ["hall:betrate", "hall:dex4", "hall:dex5"]], + ["83·Hide_D", 79, 15, 93, "che_event_저격", [67024, 25055, 84784, 613822, 39909], 1, "4569d848.png?=20230612", 83, "che_250501_tClO", 38, ["hall:tirate"]], + ["83·비스", 80, 93, 15, "che_event_돌격", [85256, 64341, 979049, 90044, 41685], 0, "default.jpg", 83, "che_250501_tClO", 39, ["hall:dex3", "hall:tsrate"]], + ["83·네시", 81, 87, 15, "che_event_저격", [643417, 20367, 38604, 72680, 24580], 1, "63f1c106.png?=20230223", 83, "che_250501_tClO", 43, ["hall:dex1"]], + ["83·트랄랄레로트랄랄라", 79, 15, 91, "che_event_신중", [58328, 36557, 35328, 829373, 45858], 1, "46aa5701.png?=20250501", 83, "che_250501_tClO", 58, ["hall:dex4", "hall:killrate_person"]], + ["83·봄봄비니구지니", 91, 78, 15, "che_event_필살", [452239, 34090, 90291, 93679, 29404], 1, "12bb2204.png?=20250501", 83, "che_250501_tClO", 60, ["hall:occupied", "hall:tlrate"]], + ["83·평민킬러", 79, 94, 15, "che_event_필살", [68475, 1036843, 58541, 78968, 50230], 1, "ff53d7eb.jpg?=20250503", 83, "che_250501_tClO", 63, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["83·마요이", 15, 76, 90, "che_event_척사", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 83, "che_250501_tClO", 65, ["hall:tirate"]], + ["83·진솔", 77, 92, 15, "che_event_저격", [19286, 45056, 723001, 116586, 53611], 1, "61ab7ca2.jpg?=20250515", 83, "che_250501_tClO", 66, ["hall:dex3", "hall:dex5", "hall:killrate", "hall:killrate_person"]], + ["83·???", 81, 88, 16, "che_event_격노", [622861, 89262, 23678, 109371, 26511], 0, "default.jpg", 83, "che_250501_tClO", 67, ["hall:dex1", "hall:dex2"]], + ["83·로비", 17, 72, 96, "che_event_의술", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 83, "che_250501_tClO", 68, ["hall:tirate"]], + ["83·진브", 77, 16, 90, "che_event_신산", [21334, 11177, 32134, 429882, 26496], 0, "default.jpg", 83, "che_250501_tClO", 69, ["hall:firenum"]], + ["83·비프로스트", 76, 95, 15, "che_event_돌격", [29237, 484841, 30438, 108173, 49497], 0, "default.jpg", 83, "che_250501_tClO", 70, ["hall:betwin", "hall:dedication", "hall:dex2", "hall:dex5", "hall:tsrate"]], + ["83·시드 카게노", 94, 75, 16, "che_event_필살", [138352, 70695, 701681, 102776, 38536], 1, "27fe98e2.webp?=20250508", 83, "che_250501_tClO", 71, ["hall:betwin", "hall:dex3", "hall:tlrate"]], + ["83·지장", 82, 15, 89, "che_event_반계", [98802, 33835, 38140, 638112, 34092], 0, "default.jpg", 83, "che_250501_tClO", 73, ["hall:ttrate"]], + ["83·카이스트", 79, 15, 90, "che_event_의술", [45476, 31594, 67477, 587083, 38506], 1, "e7e27cd6.jpg?=20221125", 83, "che_250501_tClO", 74, ["hall:betrate", "hall:ttrate"]], + ["83·사이드레터럴레이즈", 76, 16, 93, "che_event_집중", [35261, 26648, 29189, 465267, 43345], 1, "e4f546cd.jpg?=20250522", 83, "che_250501_tClO", 76, ["chief:7", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication"]], + ["83·감흥", 75, 97, 16, "che_event_돌격", [963431, 10572, 23084, 35244, 16967], 1, "df1ea5a1.jpg?=20250501", 83, "che_250501_tClO", 77, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew_person", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["83·Lemon", 82, 87, 15, "che_event_공성", [32786, 4468, 61338, 41242, 1098228], 1, "5186ff77.png?=20250518", 83, "che_250501_tClO", 79, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:winrate"]], + ["83·Time", 89, 82, 15, "che_event_필살", [31635, 45067, 612314, 97366, 39495], 0, "default.jpg", 83, "che_250501_tClO", 80, ["hall:dex3", "hall:ttrate"]], + ["83·이드", 76, 15, 92, "che_event_신산", [45644, 18587, 23914, 263165, 22927], 1, "ac5f0a3b.jpg?=20241107", 83, "che_250501_tClO", 81, ["hall:dedication"]], + ["83·리나크", 78, 97, 15, "che_event_필살", [20216, 1297525, 9752, 26901, 20667], 1, "620ea5cb.png?=20250501", 83, "che_250501_tClO", 82, ["hall:betrate", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["83·브르르브르르파타핌", 78, 15, 94, "che_event_필살", [68272, 22185, 26363, 1005782, 46946], 1, "ff7f3cbe.jpg?=20250501", 83, "che_250501_tClO", 83, ["hall:betwin", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["83·Air", 83, 91, 15, "che_event_필살", [14186, 1270013, 21998, 14919, 18412], 0, "default.jpg", 83, "che_250501_tClO", 84, ["chief:6", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["83·사스케", 78, 15, 93, "che_event_징병", [42451, 36266, 23560, 851879, 36681], 1, "53aa49bd.jpg?=20241203", 83, "che_250501_tClO", 85, ["hall:betwin", "hall:dex4", "hall:experience", "hall:killcrew_person"]], + ["83·섀도우", 79, 15, 95, "che_event_징병", [91079, 39108, 61486, 1126927, 45259], 1, "0e8e1739.jpg?=20250516", 83, "che_250501_tClO", 86, ["chief:5", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["83·진브소환수", 89, 15, 79, "che_event_의술", [38637, 17445, 43122, 627990, 28631], 1, "7310fbd1.jpg?=20250520", 83, "che_250501_tClO", 87, ["hall:tlrate"]], + ["83·나 독구 아니다", 93, 81, 15, "che_event_필살", [1181246, 20655, 37842, 132895, 22404], 1, "0f742d3b.png?=20250501", 83, "che_250501_tClO", 88, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["83·냥냥냥", 94, 74, 15, "che_event_공성", [73301, 77580, 66771, 69184, 548576], 1, "458caeac.gif?=20240919", 83, "che_250501_tClO", 89, ["hall:dex2", "hall:dex5", "hall:occupied", "hall:tlrate"]], + ["83·불패", 80, 91, 15, "che_event_돌격", [1342011, 88776, 86924, 104004, 85631], 1, "283bc08c.jpg?=20250522", 83, "che_250501_tClO", 90, ["hall:betgold", "hall:dex1", "hall:dex2", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["83·키키라라비비", 77, 15, 93, "che_event_신중", [47050, 34751, 28592, 607042, 16661], 1, "7d3befed.png?=20250307", 83, "che_250501_tClO", 91, ["hall:tirate"]], + ["83·대교", 94, 74, 17, "che_event_필살", [665942, 40254, 27943, 150024, 11405], 1, "a53ab5ef.jpg?=20241010", 83, "che_250501_tClO", 92, ["hall:dex1", "hall:tlrate"]], + ["83·강유", 79, 15, 93, "che_event_집중", [21154, 25539, 12577, 745918, 23498], 1, "79e150d0.jpg?=20230921", 83, "che_250501_tClO", 93, ["hall:dex4", "hall:killnum", "hall:ttrate", "hall:winrate"]], + ["83·황혼중", 15, 90, 78, "che_event_척사", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 83, "che_250501_tClO", 94, ["hall:ttrate"]], + ["83·독도", 96, 81, 15, "che_event_징병", [240999, 125967, 1784427, 156734, 50597], 1, "298214f8.jpg?=20250505", 83, "che_250501_tClO", 95, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["83·퉁퉁퉁 사후르", 66, 78, 13, "che_event_징병", [181080, 14919, 185981, 73825, 22439], 1, "ca4c57f8.png?=20250507", 83, "che_250501_tClO", 96, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["83·토가메", 78, 92, 15, "che_event_척사", [465229, 6931, 50750, 72179, 14186], 1, "5acd5f56.webp?=20250510", 83, "che_250501_tClO", 98, ["hall:dex1", "hall:tsrate"]], + ["83·척", 78, 93, 15, "che_event_필살", [135968, 37523, 521120, 135410, 12903], 1, "7cb75480.png?=20221202", 83, "che_250501_tClO", 100, ["hall:dex3", "hall:tsrate"]], + ["83·시아", 16, 74, 92, "che_event_의술", [0, 0, 0, 0, 0], 1, "f675cc36.jpg?=20250501", 83, "che_250501_tClO", 103, ["hall:tirate"]], + ["83·최진리", 75, 15, 96, "che_event_필살", [42692, 12191, 28730, 434265, 31219], 1, "677580c5.jpg?=20241230", 83, "che_250501_tClO", 105, ["hall:betrate", "hall:dedication", "hall:tirate"]], + ["83·아니다", 82, 86, 15, "che_event_돌격", [23996, 20454, 560728, 60002, 29625], 0, "default.jpg", 83, "che_250501_tClO", 107, ["hall:dex3"]], + ["83·서희", 82, 15, 88, "che_event_척사", [72083, 16601, 104578, 777787, 47702], 0, "default.jpg", 83, "che_250501_tClO", 109, ["hall:dex4", "hall:dex5", "hall:occupied", "hall:warnum"]], + ["83·코코낸내", 78, 15, 92, "che_event_징병", [66669, 49304, 20308, 605794, 63669], 1, "9069c7d5.png?=20250513", 83, "che_250501_tClO", 111, ["hall:dex5"]], + ["83·무", 77, 15, 94, "che_event_환술", [33815, 41926, 6018, 646423, 22672], 0, "default.jpg", 83, "che_250501_tClO", 113, ["hall:tirate", "hall:ttrate"]], + ["83·ㅁㅁㅁ", 84, 15, 86, "che_event_집중", [68343, 44817, 15250, 563751, 18289], 0, "default.jpg", 83, "che_250501_tClO", 182, ["hall:ttrate"]], + ["83·지각", 91, 15, 77, "che_event_집중", [47674, 27004, 75565, 546896, 37939], 1, "d5a762e7.jpg?=20250523", 83, "che_250501_tClO", 188, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:tlrate"]], + ["83·Audi", 93, 74, 15, "che_event_징병", [34388, 72402, 350299, 91063, 14310], 0, "default.jpg", 83, "che_250501_tClO", 355, ["hall:dex2", "hall:dex3", "hall:tlrate"]], + ["83·보네카 암발라부", 77, 91, 15, "che_event_필살", [467498, 1777, 25384, 76720, 6752], 0, "default.jpg", 83, "che_250501_tClO", 364, ["hall:dex1"]], + ["83·하냥", 15, 73, 89, "che_event_징병", [0, 0, 0, 0, 0], 1, "8be1d2b1.jpg?=20240712", 83, "che_250501_tClO", 457, ["hall:tirate"]], + ["84·진솔", 79, 15, 92, "che_event_저격", [50726, 36175, 22723, 558776, 28184], 1, "61ab7ca2.jpg?=20250515", 84, "che_250529_kaZH", 8, ["hall:dex4"]], + ["84·JOHN CENA", 77, 93, 15, "che_event_필살", [620780, 22116, 23334, 86590, 52886], 1, "f7efef6c.gif?=20250523", 84, "che_250529_kaZH", 10, ["chief:8", "hall:betgold", "hall:dedication", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["84·씩씩한아붕이", 67, 13, 78, "che_event_필살", [19648, 861, 5680, 174412, 16150], 1, "e352b303.jpg?=20250501", 84, "che_250529_kaZH", 23, ["hall:tirate"]], + ["84·임사영", 77, 15, 93, "che_event_필살", [12830, 57716, 26858, 605688, 34863], 1, "0b5a2642.jpg?=20240305", 84, "che_250529_kaZH", 24, ["hall:dedication", "hall:dex4", "hall:experience"]], + ["84·Bianchi", 90, 78, 15, "che_event_돌격", [433999, 20162, 39573, 39062, 57437], 0, "default.jpg", 84, "che_250529_kaZH", 26, ["hall:tlrate"]], + ["84·피그말리온", 78, 93, 15, "che_event_척사", [115179, 231225, 54830, 59747, 61769], 0, "default.jpg", 84, "che_250529_kaZH", 31, ["hall:betwin", "hall:dex2"]], + ["84·ㅎㄴ", 80, 91, 15, "che_event_필살", [595350, 22019, 43529, 94666, 55913], 0, "default.jpg", 84, "che_250529_kaZH", 32, ["hall:dex1", "hall:tsrate"]], + ["84·시진핑핑이", 82, 89, 15, "che_event_무쌍", [720263, 61096, 38675, 108214, 93378], 0, "default.jpg", 84, "che_250529_kaZH", 33, ["hall:dex1", "hall:dex5", "hall:occupied"]], + ["84·강유", 79, 15, 89, "che_event_집중", [37405, 49842, 25686, 400609, 68341], 1, "79e150d0.jpg?=20230921", 84, "che_250529_kaZH", 39, ["hall:occupied"]], + ["84·독구현여친", 66, 13, 78, "che_event_신중", [11874, 33060, 9906, 202347, 38448], 1, "2c1d934d.png?=20250529", 84, "che_250529_kaZH", 40, ["hall:betwingold", "hall:dex2", "hall:firenum", "hall:tirate"]], + ["84·마르크", 66, 81, 13, "che_event_돌격", [16784, 16420, 322498, 33397, 19316], 0, "default.jpg", 84, "che_250529_kaZH", 43, ["hall:dex3", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["84·Sase", 82, 15, 91, "che_event_의술", [79478, 24180, 64894, 1182647, 49405], 1, "94d87df1.jpg?=20250529", 84, "che_250529_kaZH", 47, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["84·쯔모", 13, 61, 84, "che_event_환술", [0, 0, 0, 135, 208], 0, "default.jpg", 84, "che_250529_kaZH", 48, ["hall:tirate"]], + ["84·초이스", 76, 15, 91, "che_event_반계", [479, 36894, 7628, 179679, 57913], 0, "default.jpg", 84, "che_250529_kaZH", 52, ["hall:firenum"]], + ["84·지파이", 78, 66, 13, "che_event_돌격", [14509, 16592, 395790, 39707, 12406], 0, "default.jpg", 84, "che_250529_kaZH", 64, ["hall:dex3", "hall:tlrate"]], + ["84·마츄", 79, 15, 92, "che_event_징병", [15648, 60405, 34265, 585776, 83022], 1, "ae3e8047.png?=20250529", 84, "che_250529_kaZH", 67, ["hall:betrate", "hall:dex4", "hall:dex5", "hall:experience"]], + ["84·삼모 대통령 독구", 16, 71, 97, "che_event_집중", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 84, "che_250529_kaZH", 69, ["hall:betwin", "hall:dedication"]], + ["84·독구미래여친", 95, 72, 17, "che_event_공성", [26629, 14359, 1675, 29486, 615018], 0, "default.jpg", 84, "che_250529_kaZH", 71, ["hall:betgold", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied"]], + ["84·냥냥냥", 81, 15, 88, "che_event_의술", [34314, 45680, 32065, 513326, 66560], 1, "458caeac.gif?=20240919", 84, "che_250529_kaZH", 75, ["hall:occupied"]], + ["84·김현지", 79, 16, 88, "che_event_필살", [48157, 4826, 33771, 510969, 22968], 0, "default.jpg", 84, "che_250529_kaZH", 79, ["hall:tirate"]], + ["84·이재명", 112, 70, 15, "che_event_징병", [162844, 49244, 121452, 203784, 2990401], 1, "101c7390.png?=20250529", 84, "che_250529_kaZH", 81, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["84·와일드플라워", 80, 16, 87, "che_event_신산", [54952, 36266, 39220, 543897, 34306], 0, "default.jpg", 84, "che_250529_kaZH", 82, ["hall:ttrate"]], + ["84·대교", 80, 65, 13, "che_event_필살", [12022, 10212, 13471, 14394, 290463], 1, "a53ab5ef.jpg?=20241010", 84, "che_250529_kaZH", 83, ["hall:betrate", "hall:dex5", "hall:occupied"]], + ["84·김남준", 65, 13, 79, "che_event_징병", [46808, 17311, 53080, 391360, 10844], 1, "ef3e9d1b.png?=20250530", 84, "che_250529_kaZH", 84, ["hall:dex4", "hall:tirate"]], + ["84·잠식수", 68, 78, 13, "che_event_격노", [231004, 27237, 18456, 31473, 16036], 0, "default.jpg", 84, "che_250529_kaZH", 85, ["hall:tsrate", "hall:ttrate"]], + ["84·독구", 77, 96, 15, "che_event_필살", [504380, 398622, 30375, 70267, 81852], 1, "0d0a802e.png?=20250529", 84, "che_250529_kaZH", 87, ["chief:12", "hall:betwin", "hall:dedication", "hall:dex1", "hall:dex2", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["84·김문수", 93, 77, 16, "che_event_필살", [1100335, 16912, 58126, 131960, 27955], 1, "79fd2d9e.webp?=20250620", 84, "che_250529_kaZH", 88, ["hall:betwin", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum"]], + ["84·독버지", 78, 15, 93, "che_event_환술", [11541, 30389, 38820, 538659, 46679], 1, "fdcbb12f.png?=20240918", 84, "che_250529_kaZH", 89, ["chief:11", "hall:dedication"]], + ["84·더", 80, 92, 15, "che_event_저격", [669149, 22214, 28289, 51055, 47469], 0, "default.jpg", 84, "che_250529_kaZH", 90, ["hall:dex1", "hall:tsrate"]], + ["84·NK", 82, 65, 13, "che_event_무쌍", [57984, 573222, 17925, 83682, 23449], 0, "default.jpg", 84, "che_250529_kaZH", 91, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["84·마자용", 81, 94, 15, "che_event_반계", [38907, 32418, 1205477, 29605, 42713], 1, "0fc5e453.jpg?=20250529", 84, "che_250529_kaZH", 92, ["hall:betrate", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["84·네이", 90, 16, 81, "che_event_필살", [26898, 24496, 21768, 668315, 28684], 0, "default.jpg", 84, "che_250529_kaZH", 93, ["chief:7", "hall:dex4", "hall:tlrate"]], + ["84·독구대통령님", 79, 16, 94, "che_event_징병", [77942, 63078, 42709, 1134706, 79286], 1, "2e370c5b.png?=20250529", 84, "che_250529_kaZH", 94, ["hall:betrate", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["84·아야", 91, 78, 15, "che_event_필살", [6052, 22975, 577540, 68015, 113810], 1, "95169261.png?=20250529", 84, "che_250529_kaZH", 95, ["hall:dex3", "hall:dex5", "hall:tlrate"]], + ["84·평민킬러", 66, 80, 13, "che_event_필살", [350719, 30698, 15271, 39354, 16778], 1, "ff53d7eb.jpg?=20250503", 84, "che_250529_kaZH", 96, ["hall:betwin", "hall:dex1", "hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate"]], + ["84·잠맘보", 79, 15, 91, "che_event_환술", [6291, 8424, 31223, 642591, 57132], 1, "1b8ef0c1.png?=20250604", 84, "che_250529_kaZH", 97, ["hall:betrate", "hall:betwingold", "hall:dex4"]], + ["84·애쉬", 80, 15, 91, "che_event_징병", [44580, 27515, 20894, 705355, 28356], 1, "ac5f0a3b.jpg?=20241107", 84, "che_250529_kaZH", 98, ["hall:dex4"]], + ["84·JP", 78, 15, 91, "che_event_징병", [44117, 38330, 49383, 521692, 41920], 0, "default.jpg", 84, "che_250529_kaZH", 100, ["hall:betgold", "hall:dedication"]], + ["84·독구전여친", 76, 15, 94, "che_event_집중", [30220, 28014, 12472, 451402, 57067], 1, "c0db270a.png?=20250528", 84, "che_250529_kaZH", 101, ["hall:betrate", "hall:tirate"]], + ["84·케이네", 101, 70, 15, "che_event_공성", [26433, 4409, 0, 3388, 1047573], 1, "2967d1e4.png?=20250616", 84, "che_250529_kaZH", 103, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["84·서림동", 84, 87, 15, "che_event_필살", [55138, 63193, 980964, 122912, 58842], 0, "default.jpg", 84, "che_250529_kaZH", 104, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:killnum", "hall:warnum"]], + ["84·불패", 77, 15, 94, "che_event_척사", [37738, 72416, 15142, 426797, 40068], 1, "283bc08c.jpg?=20250522", 84, "che_250529_kaZH", 105, ["chief:5", "hall:dedication", "hall:dex2", "hall:tirate"]], + ["84·로비", 13, 61, 83, "che_event_신산", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 84, "che_250529_kaZH", 108, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["84·독자이크", 93, 76, 15, "che_event_필살", [71511, 31231, 648794, 111178, 43060], 1, "8f6a8138.png?=20250618", 84, "che_250529_kaZH", 109, ["hall:betrate", "hall:dex3"]], + ["84·덕구", 69, 77, 13, "che_event_척사", [276597, 2989, 17820, 44252, 41347], 1, "bce319ad.jpg?=20250611", 84, "che_250529_kaZH", 110, ["hall:dex1", "hall:dex5", "hall:ttrate"]], + ["84·추미애", 81, 68, 13, "che_event_징병", [51738, 926766, 73070, 48577, 27453], 1, "8063f4f8.png?=20250529", 84, "che_250529_kaZH", 112, ["hall:betgold", "hall:betwin", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["84·Hide_D", 81, 15, 94, "che_event_신중", [71724, 18270, 58123, 848545, 16673], 1, "4569d848.png?=20230612", 84, "che_250529_kaZH", 115, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["84·황혼중", 15, 91, 79, "che_event_척사", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 84, "che_250529_kaZH", 116, ["hall:ttrate"]], + ["84·셀레미", 95, 15, 72, "che_event_징병", [42129, 86008, 87483, 234704, 748482], 1, "522cef80.jpg?=20250523", 84, "che_250529_kaZH", 118, ["chief:9", "hall:dex2", "hall:dex5", "hall:experience"]], + ["84·최진리", 79, 93, 16, "che_event_필살", [54487, 42980, 969262, 101567, 51289], 1, "677580c5.jpg?=20241230", 84, "che_250529_kaZH", 119, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["84·트럼프", 77, 65, 14, "che_event_징병", [27713, 10236, 281304, 44702, 20842], 1, "b5c0fe11.jpg?=20250606", 84, "che_250529_kaZH", 120, ["hall:dex3", "hall:tlrate"]], + ["84·척", 79, 89, 15, "che_event_격노", [30120, 36741, 435485, 81692, 20000], 1, "7cb75480.png?=20221202", 84, "che_250529_kaZH", 121, ["hall:dex3"]], + ["84·기호 3번 마요이", 16, 74, 96, "che_event_저격", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 84, "che_250529_kaZH", 122, ["hall:dedication", "hall:tirate"]], + ["84·성수용", 15, 96, 73, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 84, "che_250529_kaZH", 126, ["hall:dedication", "hall:tsrate"]], + ["84·ㅊㄹㅊㄹ", 83, 89, 15, "che_event_무쌍", [923493, 25148, 68125, 116033, 29505], 1, "63f1c106.png?=20230223", 84, "che_250529_kaZH", 215, ["hall:dex1", "hall:ttrate"]], + ["84·지?각", 91, 77, 16, "che_event_필살", [42400, 40598, 39539, 86754, 693454], 1, "78c8f750.jpg?=20250616", 84, "che_250529_kaZH", 219, ["chief:6", "hall:betgold", "hall:betwingold", "hall:dex5", "hall:ttrate"]], + ["84·키키라라비비", 79, 15, 89, "che_event_환술", [25685, 51586, 8601, 375574, 52245], 1, "7d3befed.png?=20250307", 84, "che_250529_kaZH", 223, ["hall:firenum"]], + ["84·조모모모", 78, 90, 17, "che_event_돌격", [29035, 35811, 363116, 77546, 75667], 1, "b01ffce3.jpg?=20250601", 84, "che_250529_kaZH", 353, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:occupied"]], + ["84·도지삽니다", 92, 76, 15, "che_event_징병", [859787, 15483, 89207, 67609, 25232], 1, "90e24c46.jpg?=20250601", 84, "che_250529_kaZH", 373, ["hall:dex1", "hall:killcrew_person", "hall:warnum"]], + ["84·나나야시키", 77, 89, 15, "che_event_위압", [18322, 31533, 512411, 139883, 25449], 1, "62e410b1.gif?=20250605", 84, "che_250529_kaZH", 432, ["hall:dex3"]], + ["86·Hide_D", 76, 15, 94, "che_event_척사", [34989, 23734, 37700, 323501, 6068], 1, "4569d848.png?=20230612", 86, "che_250717_L5yr", 5, ["hall:tirate", "hall:ttrate"]], + ["86·불패", 77, 94, 15, "che_event_필살", [723161, 8307, 50085, 56412, 52627], 1, "283bc08c.jpg?=20250522", 86, "che_250717_L5yr", 6, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["86·바나낫", 78, 92, 15, "che_event_필살", [592335, 90449, 19515, 39081, 43752], 1, "176f9107.gif?=20250717", 86, "che_250717_L5yr", 9, ["hall:betrate", "hall:dex1", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["86·도로롱", 93, 75, 15, "che_event_필살", [442719, 9634, 18961, 69635, 13971], 1, "ffda626b.gif?=20250626", 86, "che_250717_L5yr", 10, ["hall:dex1", "hall:tlrate", "hall:ttrate"]], + ["86·비스마르크", 75, 92, 15, "che_event_척사", [408769, 12174, 19409, 49076, 13940], 0, "default.jpg", 86, "che_250717_L5yr", 12, ["hall:tsrate"]], + ["86·까치", 76, 93, 15, "che_event_무쌍", [384403, 6959, 18384, 51295, 21482], 0, "default.jpg", 86, "che_250717_L5yr", 21, ["hall:ttrate"]], + ["86·퍄퍄", 77, 15, 93, "che_event_의술", [13136, 16925, 13921, 378078, 38872], 0, "default.jpg", 86, "che_250717_L5yr", 22, ["hall:dedication", "hall:tirate"]], + ["86·전소미", 79, 15, 89, "che_event_신중", [49782, 41674, 27616, 505349, 28450], 1, "d886752d.jpg?=20250717", 86, "che_250717_L5yr", 23, ["hall:dex2", "hall:dex4"]], + ["86·외심장", 79, 16, 92, "che_event_징병", [32688, 21175, 22803, 453904, 13928], 1, "36110cd.jpg?=20180826", 86, "che_250717_L5yr", 24, ["hall:tirate", "hall:warnum"]], + ["86·호나", 92, 81, 15, "che_event_필살", [578957, 6179, 12454, 75499, 25096], 0, "default.jpg", 86, "che_250717_L5yr", 25, ["hall:dex1", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["86·셋쇼마루", 76, 15, 99, "che_event_반계", [43201, 12308, 10890, 990477, 15078], 1, "5c39c7fc.jpg?=20250716", 86, "che_250717_L5yr", 27, ["hall:betgold", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["86·황혼중", 75, 15, 94, "che_event_척사", [14000, 24725, 7410, 272009, 33427], 1, "e5161df9.jpg?=20231110", 86, "che_250717_L5yr", 31, ["hall:occupied", "hall:tirate"]], + ["86·white hand", 78, 94, 16, "che_event_저격", [15852, 81663, 580323, 70570, 25244], 0, "default.jpg", 86, "che_250717_L5yr", 33, ["hall:betwin", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["86·유산조아", 77, 15, 91, "che_event_환술", [12695, 14607, 35837, 380326, 28787], 0, "default.jpg", 86, "che_250717_L5yr", 35, ["hall:tirate"]], + ["86·덕구", 76, 93, 15, "che_event_징병", [88612, 259851, 861, 24858, 44034], 1, "bce319ad.jpg?=20250611", 86, "che_250717_L5yr", 41, ["hall:dex2", "hall:dex5", "hall:tsrate"]], + ["86·아마테라스", 80, 15, 92, "che_event_징병", [50301, 29119, 52148, 664722, 34058], 1, "639476d7.jpg?=20250717", 86, "che_250717_L5yr", 49, ["hall:betgold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["86·Sase", 76, 94, 15, "che_event_필살", [28719, 4916, 436655, 75913, 52189], 1, "9e1689ae.jpg?=20250716", 86, "che_250717_L5yr", 51, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["86·먹튀예술가", 76, 93, 16, "che_event_필살", [160881, 25291, 441296, 49259, 43892], 0, "default.jpg", 86, "che_250717_L5yr", 53, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:occupied"]], + ["86·뉴진스님", 76, 15, 92, "che_event_집중", [22917, 10540, 2186, 406355, 25540], 1, "b1264aeb.jpg?=20250722", 86, "che_250717_L5yr", 59, ["hall:winrate"]], + ["86·임사영", 75, 96, 15, "che_event_저격", [427818, 35532, 80266, 63762, 35457], 1, "0b5a2642.jpg?=20240305", 86, "che_250717_L5yr", 60, ["hall:dedication", "hall:dex1", "hall:dex3", "hall:experience", "hall:tsrate", "hall:ttrate"]], + ["86·Air", 80, 91, 15, "che_event_의술", [33714, 414577, 6787, 30105, 27661], 0, "default.jpg", 86, "che_250717_L5yr", 65, ["hall:dex2", "hall:tsrate"]], + ["86·로비", 15, 73, 98, "che_event_척사", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 86, "che_250717_L5yr", 66, ["hall:dedication", "hall:experience"]], + ["86·장마철입수장인독구", 16, 73, 96, "che_event_저격", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 86, "che_250717_L5yr", 67, ["hall:betwin", "hall:tirate"]], + ["86·테토견 독구", 79, 91, 15, "che_event_필살", [131768, 203172, 175482, 79041, 41410], 1, "fd85278a.png?=20250717", 86, "che_250717_L5yr", 69, ["chief:8", "hall:dex2", "hall:dex3"]], + ["86·NK", 76, 95, 15, "che_event_척사", [677472, 21128, 51596, 49171, 39028], 0, "default.jpg", 86, "che_250717_L5yr", 71, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate"]], + ["86·대교", 94, 74, 15, "che_event_필살", [498976, 12238, 26901, 38928, 55851], 1, "a53ab5ef.jpg?=20241010", 86, "che_250717_L5yr", 72, ["hall:dex1", "hall:dex5", "hall:experience", "hall:occupied", "hall:tlrate"]], + ["86·이누야샤", 76, 99, 15, "che_event_필살", [46038, 20842, 1157594, 61437, 43160], 1, "29050ccb.jpg?=20250724", 86, "che_250717_L5yr", 73, ["hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["86·불법스님", 94, 75, 16, "che_event_필살", [571113, 8695, 84957, 46746, 26278], 1, "007592e9.png?=20250717", 86, "che_250717_L5yr", 74, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:tlrate"]], + ["86·카이스트", 77, 16, 93, "che_event_환술", [32382, 28806, 7320, 370799, 34233], 1, "e7e27cd6.jpg?=20221125", 86, "che_250717_L5yr", 75, ["hall:occupied"]], + ["86·키라호시 시엘", 76, 15, 92, "che_event_환술", [27555, 14094, 33948, 432730, 59342], 1, "76b33c02.png?=20250717", 86, "che_250717_L5yr", 76, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:occupied"]], + ["86·와일드플라워", 76, 15, 93, "che_event_집중", [17377, 51122, 18269, 456321, 55931], 0, "default.jpg", 86, "che_250717_L5yr", 77, ["hall:dedication", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience"]], + ["86·혜민스님", 74, 15, 96, "che_event_징병", [35283, 35961, 12339, 662398, 58915], 1, "b7febbaa.png?=20250716", 86, "che_250717_L5yr", 80, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["86·강유", 79, 15, 94, "che_event_집중", [42386, 15360, 26503, 607308, 22338], 1, "79e150d0.jpg?=20230921", 86, "che_250717_L5yr", 81, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["86·풀소유", 79, 15, 89, "che_event_필살", [29618, 17411, 15183, 410239, 34494], 0, "default.jpg", 86, "che_250717_L5yr", 82, ["chief:7"]], + ["86·토심이", 75, 15, 95, "che_event_필살", [21021, 22032, 26465, 600572, 60646], 1, "8dce6df3.png?=20250718", 86, "che_250717_L5yr", 83, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["86·네이", 88, 15, 82, "che_event_척사", [74995, 40413, 60494, 639498, 17540], 0, "default.jpg", 86, "che_250717_L5yr", 84, ["hall:dex2", "hall:dex3", "hall:dex4", "hall:killcrew_person", "hall:tlrate"]], + ["86·람", 78, 95, 15, "che_event_무쌍", [1180789, 25794, 40120, 71318, 32722], 1, "1f0dedea.png?=20250804", 86, "che_250717_L5yr", 85, ["hall:betwin", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["86·오란씨", 76, 15, 94, "che_event_집중", [41776, 22937, 22420, 402485, 38009], 0, "default.jpg", 86, "che_250717_L5yr", 86, ["hall:betrate", "hall:tirate"]], + ["86·제갈여포", 90, 16, 78, "che_event_필살", [40397, 28915, 9425, 479179, 7851], 1, "edf4ed84.jpg?=20250604", 86, "che_250717_L5yr", 89, ["hall:betrate", "hall:betwingold", "hall:dex4", "hall:tlrate", "hall:ttrate"]], + ["86·La Dernière Leçon", 89, 80, 16, "che_event_필살", [70266, 378854, 4970, 77408, 27213], 1, "6fb83606.jpg?=20250730", 86, "che_250717_L5yr", 90, ["hall:betwin", "hall:dex2", "hall:tlrate", "hall:ttrate"]], + ["86·쿠로미", 90, 15, 79, "che_event_징병", [36074, 17858, 39281, 533093, 27178], 1, "bb61c612.jpg?=20250717", 86, "che_250717_L5yr", 91, ["hall:dex4", "hall:tlrate"]], + ["86·최진리", 77, 95, 15, "che_event_격노", [21746, 18075, 656818, 48102, 37838], 1, "677580c5.jpg?=20241230", 86, "che_250717_L5yr", 94, ["hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["86·척", 76, 91, 15, "che_event_징병", [502472, 25725, 27133, 80150, 25609], 1, "7cb75480.png?=20221202", 86, "che_250717_L5yr", 97, ["hall:dex1"]], + ["86·칼라브리아", 78, 90, 16, "che_event_저격", [19617, 231552, 6293, 18012, 20695], 0, "default.jpg", 86, "che_250717_L5yr", 221, ["hall:dex2"]], + ["86·타치바나히나노", 78, 90, 15, "che_event_필살", [417429, 13785, 37882, 113826, 14085], 1, "c033385a.jpg?=20250626", 86, "che_250717_L5yr", 227, ["hall:tsrate", "hall:ttrate"]], + ["86·미스티", 77, 15, 93, "che_event_의술", [14136, 13255, 8586, 253171, 27445], 1, "1aadcba.png?=20180908", 86, "che_250717_L5yr", 243, ["hall:ttrate"]], + ["86·햄수타", 87, 81, 15, "che_event_돌격", [27839, 34045, 379460, 90081, 49893], 1, "56621c85.png?=20250719", 86, "che_250717_L5yr", 318, ["chief:6", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["86·국04", 85, 15, 80, "che_event_환술", [12587, 5643, 14395, 141325, 18358], 1, "546ecd10.png?=20231007", 86, "che_250717_L5yr", 340, ["hall:tlrate"]], + ["86·마요이", 15, 71, 95, "che_event_신산", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 86, "che_250717_L5yr", 399, ["hall:dedication"]], + ["86·민트토끼", 16, 82, 84, "che_event_신산", [0, 0, 0, 0, 0], 1, "abee91f3.jpg?=20250721", 86, "che_250717_L5yr", 444, ["hall:dedication", "hall:firenum"]], + ["86·진우", 16, 73, 93, "che_event_의술", [0, 0, 0, 0, 0], 1, "c01f9078.png?=20250722", 86, "che_250717_L5yr", 461, ["hall:tirate"]], + ["86·감흥", 15, 75, 88, "che_event_척사", [2100, 23240, 2100, 3780, 0], 0, "default.jpg", 86, "che_250717_L5yr", 567, ["hall:betrate", "hall:killrate_person"]], + ["87·척", 76, 90, 15, "che_event_척사", [25481, 11491, 267868, 37605, 33013], 1, "7cb75480.png?=20221202", 87, "che_250814_wvNP", 8, ["hall:dedication", "hall:dex3", "hall:killrate_person"]], + ["87·프렝탕", 74, 15, 91, "che_event_신산", [32284, 12823, 8023, 228986, 29493], 1, "59be29d4.jpg?=20250812", 87, "che_250814_wvNP", 10, ["hall:ttrate"]], + ["87·One", 76, 90, 15, "che_event_무쌍", [486199, 9758, 31982, 27171, 21962], 0, "default.jpg", 87, "che_250814_wvNP", 14, ["hall:dex1", "hall:tsrate"]], + ["87·신장수", 87, 79, 15, "che_event_징병", [778534, 6465, 31032, 32572, 38193], 0, "default.jpg", 87, "che_250814_wvNP", 18, ["hall:betrate", "hall:betwin", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["87·해질녘", 77, 89, 16, "che_event_징병", [442490, 14607, 16173, 40572, 33899], 0, "default.jpg", 87, "che_250814_wvNP", 23, ["hall:betwin"]], + ["87·미친과학", 88, 80, 15, "che_event_보병", [767435, 6687, 38352, 44195, 37785], 1, "c0c99280.png?=20250814", 87, "che_250814_wvNP", 25, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["87·대교", 89, 76, 16, "che_event_저격", [620005, 3819, 31679, 73833, 35817], 1, "a53ab5ef.jpg?=20241010", 87, "che_250814_wvNP", 26, ["hall:dex1", "hall:tlrate", "hall:warnum"]], + ["87·외심장", 77, 15, 90, "che_event_신산", [47700, 11203, 15392, 425263, 26762], 1, "36110cd.jpg?=20180826", 87, "che_250814_wvNP", 32, ["hall:dex4", "hall:occupied"]], + ["87·바나낫", 75, 92, 15, "che_event_징병", [458276, 36086, 73645, 64480, 21304], 1, "176f9107.gif?=20250717", 87, "che_250814_wvNP", 36, ["hall:dex1", "hall:dex2", "hall:firenum", "hall:tsrate"]], + ["87·네이", 90, 15, 76, "che_event_징병", [36685, 28084, 40637, 486356, 49559], 0, "default.jpg", 87, "che_250814_wvNP", 43, ["hall:dex4", "hall:dex5", "hall:tlrate"]], + ["87·로비", 15, 72, 93, "che_event_척사", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 87, "che_250814_wvNP", 45, ["hall:dedication"]], + ["87·황혼중", 73, 15, 93, "che_event_신산", [29086, 6436, 19589, 239015, 13464], 1, "e5161df9.jpg?=20231110", 87, "che_250814_wvNP", 46, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["87·갈비탕", 75, 87, 17, "che_event_위압", [14596, 124902, 128, 29405, 4344], 1, "5013705e.jpg?=20250814", 87, "che_250814_wvNP", 48, ["hall:dex2"]], + ["87·와일드플라워", 74, 15, 90, "che_event_집중", [17909, 5278, 10070, 191954, 22478], 0, "default.jpg", 87, "che_250814_wvNP", 49, ["hall:ttrate"]], + ["87·크랙", 94, 77, 15, "che_event_징병", [135762, 47148, 1195148, 58990, 35111], 1, "df57fc9c.jpg?=20250830", 87, "che_250814_wvNP", 51, ["chief:6", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["87·독구탕", 76, 15, 92, "che_event_집중", [17746, 25019, 6566, 351924, 22584], 1, "8281ed34.jpg?=20250813", 87, "che_250814_wvNP", 57, ["hall:tirate"]], + ["87·참새탕", 75, 90, 15, "che_event_무쌍", [61791, 233984, 21793, 32992, 10722], 1, "e08dcf2a.jpg?=20250814", 87, "che_250814_wvNP", 61, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:tsrate"]], + ["87·바낫탕", 94, 72, 15, "che_event_공성", [51843, 3474, 329, 21914, 1174675], 1, "6af544e0.jpg?=20250814", 87, "che_250814_wvNP", 63, ["chief:10", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["87·호나", 88, 78, 16, "che_event_견고", [22064, 19329, 547271, 42961, 31186], 0, "default.jpg", 87, "che_250814_wvNP", 65, ["hall:dex3"]], + ["87·덕구", 78, 88, 15, "che_event_무쌍", [468432, 13799, 39134, 36915, 16132], 1, "bce319ad.jpg?=20250611", 87, "che_250814_wvNP", 68, ["hall:dex1", "hall:firenum"]], + ["87·Air", 76, 89, 15, "che_event_징병", [82977, 459451, 8744, 42537, 37576], 0, "default.jpg", 87, "che_250814_wvNP", 71, ["hall:dex2"]], + ["87·NK", 92, 75, 15, "che_event_징병", [740404, 19273, 43968, 70833, 36430], 0, "default.jpg", 87, "che_250814_wvNP", 72, ["hall:betgold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["87·병리학적자세", 73, 15, 94, "che_event_집중", [27664, 8673, 12169, 316848, 32776], 1, "3679089.jpg?=20180629", 87, "che_250814_wvNP", 73, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate"]], + ["87·크루", 76, 15, 92, "che_event_신산", [35213, 3614, 18928, 432122, 28090], 1, "347d0a54.png?=20250817", 87, "che_250814_wvNP", 74, ["hall:dex4", "hall:tirate"]], + ["87·간지밍이", 15, 74, 88, "che_event_저격", [0, 0, 0, 0, 0], 1, "2565fc24.png?=20250705", 87, "che_250814_wvNP", 75, ["hall:firenum"]], + ["87·청서탕", 89, 74, 15, "che_event_무쌍", [37695, 234725, 8930, 31453, 33981], 0, "default.jpg", 87, "che_250814_wvNP", 76, ["hall:dex2"]], + ["87·라콘탕", 71, 83, 15, "che_event_견고", [37282, 212, 302, 5944, 0], 1, "e5a29d52.png?=20250814", 87, "che_250814_wvNP", 77, ["hall:betwingold"]], + ["87·솔로탕", 91, 77, 15, "che_event_필살", [900414, 10041, 55401, 54497, 33944], 1, "13490054.jpg?=20250813", 87, "che_250814_wvNP", 78, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["87·비스마르크", 78, 93, 15, "che_event_징병", [818569, 8257, 18609, 34253, 20202], 0, "default.jpg", 87, "che_250814_wvNP", 79, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["87·코젠탕", 78, 87, 16, "che_event_격노", [66267, 28743, 504452, 47636, 38613], 1, "1fdeaf37.jpg?=20250813", 87, "che_250814_wvNP", 80, ["hall:dex3", "hall:dex5", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["87·Kalsarikännit", 79, 90, 15, "che_event_필살", [79644, 661381, 15163, 43660, 42295], 1, "7c0144e7.jpg?=20250818", 87, "che_250814_wvNP", 81, ["hall:betgold", "hall:betwin", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["87·맛탕", 86, 15, 80, "che_event_필살", [52344, 12626, 9210, 375200, 23679], 1, "8cddde40.jpg?=20250814", 87, "che_250814_wvNP", 82, ["hall:dex4"]], + ["87·비의", 75, 15, 91, "che_event_환술", [47974, 16407, 6019, 417884, 20351], 1, "8beccfc3.jpg?=20250814", 87, "che_250814_wvNP", 83, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["87·강유", 90, 15, 79, "che_event_돌격", [70200, 19306, 19984, 728405, 41327], 1, "79e150d0.jpg?=20230921", 87, "che_250814_wvNP", 85, ["chief:12", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["87·개가홍보하는삼계탕", 79, 88, 15, "che_event_필살", [506694, 4067, 32135, 76310, 44493], 1, "7e279701.png?=20250814", 87, "che_250814_wvNP", 86, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:dex5"]], + ["87·쌍심장", 76, 90, 15, "che_event_격노", [68599, 16104, 711773, 50405, 31908], 1, "fd606087.jpg?=20250814", 87, "che_250814_wvNP", 87, ["hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["87·호표기병A", 89, 77, 15, "che_event_위압", [14651, 21817, 230562, 58915, 10476], 1, "535fef3f.png?=20250814", 87, "che_250814_wvNP", 88, ["hall:dex3", "hall:tlrate"]], + ["87·싱하", 77, 89, 15, "che_event_징병", [31577, 30757, 307758, 46890, 16310], 1, "671494ea.jpg?=20250814", 87, "che_250814_wvNP", 89, ["hall:dex2", "hall:dex3", "hall:tsrate"]], + ["87·식물탕", 73, 15, 94, "che_event_필살", [40004, 11462, 10888, 403778, 37697], 1, "b2df1679.png?=20250814", 87, "che_250814_wvNP", 90, ["chief:9", "hall:betrate", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["87·슥게탕", 74, 18, 88, "che_event_필살", [15089, 26514, 9529, 233925, 18831], 1, "af240a10.jpg?=20250814", 87, "che_250814_wvNP", 91, ["chief:7"]], + ["87·카이스트", 79, 15, 89, "che_event_필살", [41496, 12251, 19101, 460079, 11198], 1, "e7e27cd6.jpg?=20221125", 87, "che_250814_wvNP", 92, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew_person"]], + ["87·뇌진탕", 95, 71, 15, "che_event_의술", [48488, 27738, 18308, 72383, 398695], 1, "c8b19f90.png?=20250814", 87, "che_250814_wvNP", 94, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:tlrate"]], + ["87·총명탕", 73, 15, 94, "che_event_환술", [23650, 5914, 6245, 347496, 36321], 0, "default.jpg", 87, "che_250814_wvNP", 95, ["hall:dedication", "hall:experience", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["87·퍄퍄", 75, 89, 15, "che_event_위압", [326975, 7013, 15261, 29742, 27578], 0, "default.jpg", 87, "che_250814_wvNP", 96, ["hall:occupied", "hall:tsrate", "hall:ttrate"]], + ["87·해피니스!", 74, 15, 92, "che_event_귀병", [32514, 10047, 12380, 256175, 2531], 1, "caabc0c7.jpg?=20250814", 87, "che_250814_wvNP", 97, ["hall:tirate"]], + ["87·Hide_D", 75, 15, 93, "che_event_징병", [39274, 8866, 8414, 243595, 17086], 1, "4569d848.png?=20230612", 87, "che_250814_wvNP", 103, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["87·송탄강", 75, 16, 89, "che_event_저격", [35960, 21315, 16346, 225125, 18424], 0, "default.jpg", 87, "che_250814_wvNP", 104, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["87·호우주의보", 86, 16, 75, "che_event_필살", [56983, 7588, 24437, 363549, 26021], 0, "default.jpg", 87, "che_250814_wvNP", 106, ["hall:dex4", "hall:ttrate"]], + ["87·타치바나히나노", 77, 89, 15, "che_event_저격", [17422, 18234, 274045, 36631, 17991], 1, "c033385a.jpg?=20250626", 87, "che_250814_wvNP", 108, ["hall:dex3"]], + ["87·민트토끼", 15, 73, 93, "che_event_징병", [0, 0, 0, 0, 0], 1, "abee91f3.jpg?=20250721", 87, "che_250814_wvNP", 178, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["87·ㅊㄹㅊㄹ", 77, 86, 15, "che_event_위압", [4652, 57019, 299373, 19694, 14245], 1, "63f1c106.png?=20230223", 87, "che_250814_wvNP", 183, ["hall:dex2", "hall:dex3", "hall:ttrate"]], + ["87·주기자", 91, 15, 74, "che_event_필살", [30738, 24369, 27901, 496557, 40311], 1, "ac77a77d.jpg?=20250814", 87, "che_250814_wvNP", 266, ["hall:dex4", "hall:dex5", "hall:tlrate"]], + ["87·TATUM", 75, 90, 15, "che_event_징병", [147726, 56179, 6545, 15789, 0], 0, "default.jpg", 87, "che_250814_wvNP", 267, ["hall:dex2", "hall:tsrate"]], + ["87·꽁꽁 고양이", 16, 72, 90, "che_event_집중", [0, 0, 0, 0, 0], 1, "e4c0f0a2.jpg?=20250815", 87, "che_250814_wvNP", 268, ["hall:dedication"]], + ["87·미친개", 79, 85, 15, "che_event_무쌍", [9828, 22947, 302164, 18669, 3351], 1, "e16aa4c8.jpg?=20250811", 87, "che_250814_wvNP", 369, ["hall:dex3", "hall:tsrate"]], + ["88·카마도 탄지로", 78, 85, 15, "che_event_필살", [44341, 375210, 3933, 28952, 18338], 1, "66c356bb.jpg?=20250904", 88, "che_250904_M4Q0", 6, ["hall:dex2"]], + ["88·척", 75, 89, 15, "che_event_필살", [35287, 32990, 236226, 34014, 36297], 1, "7cb75480.png?=20221202", 88, "che_250904_M4Q0", 9, ["hall:dex3", "hall:tsrate"]], + ["88·도로롱", 95, 72, 15, "che_event_격노", [361347, 24821, 108788, 56889, 34196], 1, "9ff5e3ec.gif?=20250904", 88, "che_250904_M4Q0", 10, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex3", "hall:occupied", "hall:tlrate"]], + ["88·토미오카 기유", 91, 76, 15, "che_event_징병", [88796, 73420, 1087686, 95549, 51932], 1, "b01149db.jpg?=20250904", 88, "che_250904_M4Q0", 11, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["88·우즈이 텐겐", 15, 73, 92, "che_event_필살", [0, 0, 0, 127, 0], 1, "10838b72.jpg?=20250904", 88, "che_250904_M4Q0", 20, ["hall:dedication", "hall:tirate"]], + ["88·사마량", 74, 15, 94, "che_event_환술", [9393, 9577, 5076, 288635, 12954], 1, "736b3aec.png?=20250904", 88, "che_250904_M4Q0", 23, ["hall:tirate"]], + ["88·콜드브루", 78, 15, 89, "che_event_필살", [33664, 25109, 25103, 444767, 38564], 1, "90a67b96.jpg?=20250906", 88, "che_250904_M4Q0", 25, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex4", "hall:occupied"]], + ["88·코쵸우 시노부", 77, 15, 88, "che_event_필살", [23745, 20371, 10000, 386150, 48648], 1, "fdf912b5.jpg?=20250904", 88, "che_250904_M4Q0", 28, ["hall:dex4", "hall:dex5", "hall:experience"]], + ["88·서림동결혼반지도둑", 74, 15, 92, "che_event_저격", [1680, 1949, 1524, 90599, 5417], 0, "default.jpg", 88, "che_250904_M4Q0", 30, ["hall:tirate"]], + ["88·히메지마 쿄메이", 74, 93, 15, "che_event_필살", [346916, 10141, 52422, 39270, 23140], 0, "default.jpg", 88, "che_250904_M4Q0", 34, ["hall:dex1", "hall:tsrate"]], + ["88·제갈량", 78, 15, 91, "che_event_징병", [45711, 20964, 17241, 479726, 23485], 1, "8f10f4e0.jpg?=20250904", 88, "che_250904_M4Q0", 37, ["hall:dex4", "hall:experience", "hall:killcrew_person", "hall:warnum"]], + ["88·포클", 76, 89, 15, "che_event_돌격", [42675, 23808, 292944, 47160, 33927], 0, "default.jpg", 88, "che_250904_M4Q0", 40, ["hall:dex3"]], + ["88·Hide_D", 76, 15, 90, "che_event_환술", [32795, 22157, 5686, 300649, 14991], 1, "4569d848.png?=20230612", 88, "che_250904_M4Q0", 41, ["hall:ttrate"]], + ["88·병리학적자세", 73, 15, 95, "che_event_필살", [20172, 6226, 1476, 198785, 20366], 1, "3679089.jpg?=20180629", 88, "che_250904_M4Q0", 43, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tirate"]], + ["88·메로론", 76, 15, 92, "che_event_신중", [41091, 37142, 12840, 608055, 55785], 1, "5c23d811.png?=20250904", 88, "che_250904_M4Q0", 48, ["chief:7", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["88·제5열", 76, 90, 15, "che_event_격노", [350905, 13353, 103695, 60011, 42789], 0, "default.jpg", 88, "che_250904_M4Q0", 50, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3"]], + ["88·바나낫", 76, 93, 15, "che_event_돌격", [1059027, 14627, 49063, 48394, 50298], 1, "0cb9b306.gif?=20250913", 88, "che_250904_M4Q0", 53, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["88·대교", 92, 73, 16, "che_event_돌격", [200278, 9389, 3554, 30682, 10468], 1, "a53ab5ef.jpg?=20241010", 88, "che_250904_M4Q0", 56, ["hall:tlrate"]], + ["88·머쉬베놈", 96, 72, 15, "che_event_견고", [18919, 25837, 339020, 16429, 28239], 1, "7a0ae932.jpg?=20250904", 88, "che_250904_M4Q0", 71, ["hall:dex3", "hall:experience", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["88·잠입", 76, 89, 15, "che_event_위압", [34144, 22436, 396689, 38781, 22770], 1, "caed5c11.jpg?=20250904", 88, "che_250904_M4Q0", 72, ["hall:dex3"]], + ["88·너구리", 76, 15, 93, "che_event_필살", [43978, 32293, 20008, 524857, 45661], 1, "f2434b35.jpg?=20250904", 88, "che_250904_M4Q0", 73, ["hall:dex4", "hall:killcrew", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["88·코쿠시보", 77, 15, 89, "che_event_척사", [43352, 25255, 19167, 540201, 35897], 1, "c5c25f20.png?=20250905", 88, "che_250904_M4Q0", 74, ["hall:dex4", "hall:killcrew_person"]], + ["88·栗花落 カナヲ", 74, 15, 93, "che_event_필살", [13489, 2882, 17635, 298600, 115371], 1, "b3c4d516.jpg?=20250904", 88, "che_250904_M4Q0", 75, ["chief:9", "hall:dedication", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied"]], + ["88·잘생빔맞은루미", 16, 88, 77, "che_event_돌격", [0, 0, 0, 0, 0], 1, "8e4c38c6.jpg?=20250904", 88, "che_250904_M4Q0", 76, ["hall:dedication"]], + ["88·황혼중", 90, 15, 76, "che_event_반계", [21963, 16713, 35970, 220533, 24414], 1, "e5161df9.jpg?=20231110", 88, "che_250904_M4Q0", 77, ["hall:tlrate"]], + ["88·TATUM", 91, 15, 74, "che_event_저격", [47180, 893, 8085, 13611, 125745], 0, "default.jpg", 88, "che_250904_M4Q0", 78, ["hall:dex5", "hall:tlrate"]], + ["88·마이트 가이", 93, 73, 16, "che_event_저격", [627235, 17329, 37893, 48556, 60900], 1, "59e57cfe.webp?=20250921", 88, "che_250904_M4Q0", 79, ["hall:betrate", "hall:betwin", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["88·앵벌스", 76, 93, 15, "che_event_돌격", [527440, 29574, 53302, 50957, 46095], 1, "5163b496.png?=20250919", 88, "che_250904_M4Q0", 80, ["chief:12", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex1", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["88·카이스트", 76, 15, 88, "che_event_필살", [25937, 48447, 28387, 261324, 57254], 1, "e7e27cd6.jpg?=20221125", 88, "che_250904_M4Q0", 81, ["hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex5"]], + ["88·크냥", 92, 77, 15, "che_event_돌격", [1052677, 35085, 35642, 170762, 42264], 0, "default.jpg", 88, "che_250904_M4Q0", 84, ["chief:10", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["88·평민킬러", 77, 93, 15, "che_event_필살", [35194, 44414, 684781, 46361, 41606], 1, "796310d0.jpg?=20250905", 88, "che_250904_M4Q0", 85, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["88·장수", 76, 93, 15, "che_event_필살", [818177, 12239, 35081, 35100, 43768], 0, "default.jpg", 88, "che_250904_M4Q0", 87, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["88·지나가던 선비", 77, 89, 15, "che_event_필살", [66420, 285214, 6755, 19896, 27843], 1, "88381c99.jpg?=20250904", 88, "che_250904_M4Q0", 88, ["hall:dex2"]], + ["88·덥다", 91, 77, 15, "che_event_필살", [622083, 17909, 112973, 52488, 41689], 0, "default.jpg", 88, "che_250904_M4Q0", 89, ["chief:8", "hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["88·우부야시키 카가야", 76, 91, 15, "che_event_필살", [57416, 515957, 22323, 41319, 48868], 1, "d1f0a8f5.jpg?=20250904", 88, "che_250904_M4Q0", 91, ["hall:betwin", "hall:dex2", "hall:dex5", "hall:tsrate"]], + ["88·하시바라 이노스케", 86, 15, 81, "che_event_집중", [29054, 35209, 35610, 280804, 49532], 1, "2c554198.jpg?=20250904", 88, "che_250904_M4Q0", 93, ["hall:dex5", "hall:tlrate"]], + ["88·침묵의 마녀", 75, 15, 94, "che_event_집중", [30703, 19612, 35089, 643784, 46932], 1, "3af39b35.png?=20250904", 88, "che_250904_M4Q0", 94, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["88·맘보", 76, 91, 15, "che_event_무쌍", [341793, 20097, 23145, 30620, 36326], 1, "e8f2075a.png?=20250919", 88, "che_250904_M4Q0", 96, ["chief:11", "hall:dedication", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["88·Air", 79, 89, 15, "che_event_저격", [20507, 226744, 5171, 21768, 10136], 0, "default.jpg", 88, "che_250904_M4Q0", 98, ["hall:dex2", "hall:ttrate"]], + ["88·블러드메이지", 77, 15, 91, "che_event_필살", [29898, 30854, 35435, 456535, 36185], 0, "default.jpg", 88, "che_250904_M4Q0", 99, ["hall:dex4"]], + ["88·츠유리 카나오", 76, 89, 16, "che_event_척사", [510323, 13581, 30733, 48401, 42437], 1, "1b5ef40b.jpg?=20250904", 88, "che_250904_M4Q0", 100, ["hall:dex1", "hall:tsrate"]], + ["88·카마도 네즈코", 76, 16, 90, "che_event_징병", [7803, 19708, 34322, 368096, 35428], 1, "4007383f.jpg?=20250904", 88, "che_250904_M4Q0", 101, ["hall:dex4"]], + ["88·지각", 74, 15, 93, "che_event_저격", [43505, 18176, 1180, 294288, 28462], 0, "default.jpg", 88, "che_250904_M4Q0", 104, ["hall:tirate", "hall:ttrate"]], + ["88·알레르기성비염독구", 16, 73, 91, "che_event_집중", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 88, "che_250904_M4Q0", 106, ["hall:betwin"]], + ["88·미스티", 74, 15, 90, "che_event_귀병", [4062, 12788, 14897, 115465, 13443], 1, "1aadcba.png?=20180908", 88, "che_250904_M4Q0", 109, ["hall:tirate"]], + ["88·마요이", 16, 73, 91, "che_event_집중", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 88, "che_250904_M4Q0", 111, ["hall:dedication"]], + ["88·ㅊㄹㅊㄹ", 81, 88, 15, "che_event_견고", [21516, 268294, 10635, 24909, 8324], 1, "63f1c106.png?=20230223", 88, "che_250904_M4Q0", 215, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:ttrate"]], + ["88·오펜하이머", 75, 16, 89, "che_event_환술", [41693, 6688, 8381, 328268, 42286], 1, "06ac609d.jpg?=20250904", 88, "che_250904_M4Q0", 217, ["chief:5", "hall:dex4", "hall:ttrate"]], + ["88·메종독구네", 15, 72, 93, "che_event_의술", [0, 0, 0, 0, 0], 1, "02dc3a91.gif?=20231019", 88, "che_250904_M4Q0", 225, ["hall:dedication", "hall:tirate"]], + ["88·서림동", 76, 89, 15, "che_event_위압", [12623, 8611, 346041, 9017, 8836], 0, "default.jpg", 88, "che_250904_M4Q0", 227, ["hall:dex3", "hall:killrate", "hall:killrate_person"]], + ["88·레이즐", 76, 86, 16, "che_event_필살", [9511, 114312, 554, 9533, 9018], 0, "default.jpg", 88, "che_250904_M4Q0", 248, ["hall:dex2", "hall:tsrate"]], + ["88·최진리", 78, 15, 89, "che_event_집중", [10733, 5879, 13834, 220199, 23569], 1, "677580c5.jpg?=20241230", 88, "che_250904_M4Q0", 251, ["hall:ttrate"]], + ["88·맛있는거", 61, 56, 64, "che_event_집중", [12527, 13118, 27605, 205528, 31411], 0, "default.jpg", 88, "che_250904_M4Q0", 273, ["hall:ttrate"]], + ["88·춤과파티", 86, 71, 23, "che_event_척사", [332982, 23580, 8869, 57254, 23213], 0, "default.jpg", 88, "che_250904_M4Q0", 285, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:tlrate"]], + ["88·VITAMIN", 16, 73, 88, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 88, "che_250904_M4Q0", 403, ["hall:dedication"]], + ["88·가을이즈커밍", 71, 15, 92, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 88, "che_250904_M4Q0", 453, ["hall:tirate"]], + ["89·NK", 84, 66, 13, "che_event_필살", [10294, 25025, 595549, 46072, 22096], 0, "default.jpg", 89, "che_250925_be9o", 3, ["hall:betgold", "hall:betwingold", "hall:dex3", "hall:killcrew_person", "hall:tlrate"]], + ["89·Hide_D", 80, 15, 93, "che_event_척사", [28172, 82768, 37485, 473212, 44300], 1, "4569d848.png?=20230612", 89, "che_250925_be9o", 4, ["hall:tirate"]], + ["89·척", 77, 96, 15, "che_event_의술", [21332, 33490, 435905, 49484, 20805], 1, "7cb75480.png?=20221202", 89, "che_250925_be9o", 7, ["hall:dex3", "hall:tsrate"]], + ["89·이드", 15, 72, 100, "che_event_저격", [0, 0, 0, 0, 0], 1, "ac5f0a3b.jpg?=20241107", 89, "che_250925_be9o", 19, ["hall:dedication", "hall:firenum", "hall:tirate"]], + ["89·톨루이칸", 78, 15, 97, "che_event_필살", [65915, 116144, 165634, 1826735, 56767], 1, "c5231318.jpg?=20251009", 89, "che_250925_be9o", 24, ["chief:7", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["89·지뢰계멘헤라", 69, 78, 13, "che_event_필살", [15090, 62995, 1265, 11287, 4550], 1, "b2804fb8.jpg?=20250925", 89, "che_250925_be9o", 34, ["hall:dedication"]], + ["89·임사영", 67, 84, 13, "che_event_필살", [56259, 567255, 11743, 43353, 15851], 1, "f0c94d4f.jpg?=20250915", 89, "che_250925_be9o", 41, ["hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["89·호나", 83, 15, 90, "che_event_필살", [62505, 148099, 154920, 1057889, 67840], 0, "default.jpg", 89, "che_250925_be9o", 42, ["hall:dex2", "hall:dex4", "hall:firenum"]], + ["89·몽케칸", 81, 15, 89, "che_event_필살", [44499, 125583, 113815, 992911, 70220], 1, "1f1bad60.jpg?=20250925", 89, "che_250925_be9o", 44, ["hall:dex4", "hall:occupied"]], + ["89·병리학적자세", 67, 13, 80, "che_event_필살", [23265, 33311, 49222, 549685, 38486], 1, "3679089.jpg?=20180629", 89, "che_250925_be9o", 45, ["chief:9", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate"]], + ["89·미스 몽골", 15, 63, 82, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 89, "che_250925_be9o", 46, ["hall:dedication"]], + ["89·간지밍이", 16, 85, 85, "che_event_신산", [0, 0, 0, 0, 0], 1, "2565fc24.png?=20250705", 89, "che_250925_be9o", 47, ["hall:dedication"]], + ["89·황혼중", 76, 13, 72, "che_event_환술", [15010, 2487, 2166, 97164, 6836], 1, "e5161df9.jpg?=20231110", 89, "che_250925_be9o", 48, ["hall:dedication", "hall:tlrate"]], + ["89·올리버 칸", 82, 91, 15, "che_event_필살", [1463275, 83470, 162051, 135735, 104264], 1, "57248a50.png?=20250925", 89, "che_250925_be9o", 53, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["89·김정은", 66, 83, 13, "che_event_징병", [761834, 156735, 180992, 75429, 62182], 1, "543848ac.png?=20250922", 89, "che_250925_be9o", 54, ["chief:12", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["89·사스케", 89, 60, 13, "che_event_징병", [60239, 95019, 119173, 130406, 810108], 1, "377a21fc.jpg?=20250910", 89, "che_250925_be9o", 61, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["89·강유", 93, 15, 80, "che_event_환술", [53276, 66773, 35134, 837083, 34134], 1, "79e150d0.jpg?=20230921", 89, "che_250925_be9o", 64, ["hall:occupied"]], + ["89·마요이", 15, 76, 97, "che_event_의술", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 89, "che_250925_be9o", 67, ["hall:dedication", "hall:tirate"]], + ["89·가자에버그레이스", 82, 15, 92, "che_event_돌격", [137688, 101379, 106112, 1252649, 102746], 1, "1814ac21.jpg?=20250925", 89, "che_250925_be9o", 68, ["hall:dex1", "hall:dex4", "hall:dex5", "hall:experience", "hall:killnum", "hall:winrate"]], + ["89·동수칸", 71, 91, 13, "che_event_무쌍", [40798, 1566544, 43916, 41311, 6958], 1, "7d6511f5.png?=20250925", 89, "che_250925_be9o", 70, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["89·인디애나올아메리칸", 79, 94, 15, "che_event_견고", [1347268, 52586, 55170, 49808, 59095], 1, "af389ca9.png?=20250925", 89, "che_250925_be9o", 72, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate"]], + ["89·외심장", 82, 16, 91, "che_event_집중", [25770, 119601, 98568, 1041335, 60003], 1, "36110cd.jpg?=20180826", 89, "che_250925_be9o", 76, ["hall:dex4", "hall:ttrate"]], + ["89·No way back", 92, 79, 15, "che_event_필살", [33997, 130142, 919910, 122769, 51968], 1, "4981f386.png?=20250925", 89, "che_250925_be9o", 77, ["hall:dex2", "hall:dex3"]], + ["89·리노 잭슨", 78, 93, 16, "che_event_징병", [44577, 78603, 2088623, 71439, 80739], 1, "f659b165.png?=20250925", 89, "che_250925_be9o", 79, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["89·불패", 95, 80, 15, "che_event_필살", [479793, 18025, 53431, 42090, 18536], 1, "88bb8fe0.jpg?=20250911", 89, "che_250925_be9o", 80, ["hall:dex1", "hall:tlrate", "hall:ttrate"]], + ["89·덕구", 80, 93, 15, "che_event_위압", [350701, 10468, 7888, 33918, 11374], 0, "default.jpg", 89, "che_250925_be9o", 81, ["hall:dex1", "hall:tsrate"]], + ["89·bystander", 78, 96, 15, "che_event_필살", [40541, 582727, 27672, 70672, 19891], 0, "default.jpg", 89, "che_250925_be9o", 83, ["hall:betwin", "hall:dex2", "hall:tsrate"]], + ["89·예수게이", 82, 15, 91, "che_event_필살", [76578, 97091, 109050, 967557, 106162], 1, "87945db8.jpg?=20250925", 89, "che_250925_be9o", 84, ["hall:dex4", "hall:dex5"]], + ["89·셀레미", 77, 15, 97, "che_event_필살", [14296, 8147, 6000, 304297, 18268], 1, "d7b6d83d.jpg?=20250925", 89, "che_250925_be9o", 85, ["hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["89·알리시아", 80, 15, 93, "che_event_집중", [56827, 45817, 70788, 1137038, 41004], 0, "default.jpg", 89, "che_250925_be9o", 86, ["hall:dex4", "hall:tirate"]], + ["89·모히칸", 82, 65, 14, "che_event_필살", [15870, 352068, 10851, 39440, 15816], 1, "5aab1dac.jpg?=20250925", 89, "che_250925_be9o", 87, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:occupied", "hall:ttrate", "hall:winrate"]], + ["89·네이", 92, 15, 82, "che_event_의술", [13076, 45032, 14261, 429945, 16735], 0, "default.jpg", 89, "che_250925_be9o", 89, ["hall:tlrate"]], + ["89·?", 76, 15, 99, "che_event_돌격", [34980, 14240, 18146, 485482, 20486], 1, "d12c4734.png?=20250928", 89, "che_250925_be9o", 90, ["hall:tirate"]], + ["89·다영", 78, 70, 13, "che_event_징병", [14823, 7380, 181754, 17115, 13219], 1, "0cda33ad.jpg?=20250925", 89, "che_250925_be9o", 91, ["hall:dedication", "hall:dex3", "hall:tlrate"]], + ["89·Sase", 82, 66, 14, "che_event_징병", [57136, 65069, 686162, 70242, 32741], 1, "6d261e89.jpg?=20250926", 89, "che_250925_be9o", 93, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["89·징기스칸", 68, 81, 13, "che_event_돌격", [791389, 21733, 28811, 36735, 30218], 1, "55c37484.png?=20250925", 89, "che_250925_be9o", 94, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killnum", "hall:killrate", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["89·삼모노잼", 74, 15, 96, "che_event_징병", [17990, 9967, 11785, 247255, 28406], 0, "default.jpg", 89, "che_250925_be9o", 95, ["hall:tirate"]], + ["89·제갈여포", 77, 15, 95, "che_event_필살", [7108, 8758, 26857, 269600, 17268], 0, "default.jpg", 89, "che_250925_be9o", 97, ["hall:tirate"]], + ["89·령리한너구리", 83, 92, 15, "che_event_필살", [39392, 1818295, 55886, 57314, 54163], 1, "31dff9dc.png?=20250925", 89, "che_250925_be9o", 98, ["chief:8", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["89·모모냥", 71, 75, 13, "che_event_격노", [55766, 52390, 340523, 61392, 34048], 1, "6b2b55c5.png?=20250926", 89, "che_250925_be9o", 99, ["hall:dex3", "hall:occupied", "hall:ttrate"]], + ["89·미스티", 79, 15, 93, "che_event_집중", [55550, 76046, 62360, 1017268, 50621], 1, "1aadcba.png?=20180908", 89, "che_250925_be9o", 100, ["hall:dex4"]], + ["89·에버나이트", 96, 78, 16, "che_event_척사", [48707, 1516480, 52499, 84261, 66259], 1, "bf8a5942.jpg?=20250926", 89, "che_250925_be9o", 101, ["chief:10", "hall:betrate", "hall:dex2", "hall:experience", "hall:tlrate"]], + ["89·아폴로", 80, 93, 16, "che_event_의술", [346452, 8218, 4153, 33479, 14464], 0, "default.jpg", 89, "che_250925_be9o", 103, ["hall:dex1"]], + ["89·최진리", 95, 75, 16, "che_event_필살", [66679, 103861, 1004624, 115901, 116300], 1, "c2356432.png?=20250929", 89, "che_250925_be9o", 105, ["hall:betrate", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["89·와일드플라워", 81, 15, 93, "che_event_집중", [21392, 36658, 15905, 557919, 12422], 0, "default.jpg", 89, "che_250925_be9o", 109, ["hall:ttrate"]], + ["89·넹면", 79, 17, 91, "che_event_징병", [86054, 74192, 49699, 1622853, 79025], 1, "405c50cc.webp?=20250929", 89, "che_250925_be9o", 176, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["89·로비", 15, 72, 99, "che_event_환술", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 89, "che_250925_be9o", 180, ["hall:dedication", "hall:experience"]], + ["89·주하여친몽골여신", 17, 70, 98, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 89, "che_250925_be9o", 186, ["hall:dedication"]], + ["89·ㅊㄹㅊㄹ", 76, 95, 15, "che_event_위압", [13166, 3121, 117218, 6411, 6833], 1, "63f1c106.png?=20230223", 89, "che_250925_be9o", 188, ["hall:betrate", "hall:betwin", "hall:tsrate"]], + ["89·풍성한 한가위 독구", 16, 75, 96, "che_event_의술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 89, "che_250925_be9o", 256, ["hall:betwin", "hall:dedication"]], + ["89·카이스트", 81, 15, 92, "che_event_의술", [23586, 13680, 25012, 404309, 1384], 1, "e7e27cd6.jpg?=20221125", 89, "che_250925_be9o", 270, ["hall:betrate"]], + ["89·돌아온너구리", 95, 76, 16, "che_event_견고", [49760, 55888, 58671, 80379, 1132656], 1, "ed33d97a.png?=20251012", 89, "che_250925_be9o", 341, ["chief:6", "hall:dex5", "hall:occupied", "hall:tlrate"]], + ["91·정승필", 77, 92, 16, "che_event_필살", [43046, 136512, 705521, 74280, 191063], 1, "3f10419c.jpg?=20251128", 91, "che_251127_zjtD", 16, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["91·[속보] 정승필,", 87, 80, 15, "che_event_필살", [52793, 657335, 18418, 103642, 62695], 1, "9a6cdd2d.jpg?=20251127", 91, "che_251127_zjtD", 18, ["chief:8", "hall:dex2", "hall:dex5", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["91·어눌한 시루이 씨", 17, 72, 95, "che_event_반계", [0, 0, 0, 0, 0], 1, "f4dfbe9e.jpg?=20251127", 91, "che_251127_zjtD", 21, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["91·호나", 78, 89, 16, "che_event_견고", [40954, 21997, 683320, 115823, 53454], 0, "default.jpg", 91, "che_251127_zjtD", 28, ["hall:dedication", "hall:dex3", "hall:killrate", "hall:killrate_person", "hall:ttrate"]], + ["91·강유", 89, 15, 80, "che_event_필살", [42988, 12984, 23801, 499224, 37315], 1, "79e150d0.jpg?=20230921", 91, "che_251127_zjtD", 31, ["hall:dex4", "hall:tlrate", "hall:ttrate"]], + ["91·카이스트", 77, 16, 91, "che_event_징병", [41420, 4960, 15016, 466103, 52960], 1, "e7e27cd6.jpg?=20221125", 91, "che_251127_zjtD", 36, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["91·쉬멜승필", 95, 73, 15, "che_event_척사", [8680, 8405, 353941, 29440, 28022], 1, "610a5ece.jpg?=20251127", 91, "che_251127_zjtD", 38, ["chief:6", "hall:dex3", "hall:tlrate"]], + ["91·바나낫", 78, 92, 15, "che_event_필살", [606131, 30408, 55397, 31592, 30440], 1, "073c8444.gif?=20251025", 91, "che_251127_zjtD", 41, ["hall:dex1", "hall:dex2", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["91·사스케", 98, 70, 16, "che_event_징병", [37000, 26736, 33711, 81187, 934627], 1, "377a21fc.jpg?=20250910", 91, "che_251127_zjtD", 44, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["91·제갈여포", 80, 15, 93, "che_event_의술", [16342, 13090, 33237, 783030, 14726], 1, "e21b5ca3.jpg?=20251031", 91, "che_251127_zjtD", 45, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["91·생각없음", 76, 16, 92, "che_event_신중", [22935, 13295, 8701, 335517, 25805], 0, "default.jpg", 91, "che_251127_zjtD", 47, ["hall:firenum", "hall:tirate", "hall:ttrate"]], + ["91·승필호4차발사성공", 78, 16, 89, "che_event_집중", [39260, 6967, 55700, 405864, 51761], 1, "7758d458.png?=20251127", 91, "che_251127_zjtD", 49, ["chief:5", "hall:dedication", "hall:dex3"]], + ["91·Malaren", 76, 94, 15, "che_event_징병", [273612, 332772, 171809, 39097, 9924], 0, "default.jpg", 91, "che_251127_zjtD", 50, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["91·마제", 77, 15, 92, "che_event_신산", [2213, 3137, 8539, 295391, 8138], 0, "default.jpg", 91, "che_251127_zjtD", 51, ["hall:betrate", "hall:tirate"]], + ["91·시엘", 79, 88, 15, "che_event_척사", [382481, 99977, 58179, 74153, 21876], 0, "default.jpg", 91, "che_251127_zjtD", 56, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:tlrate"]], + ["91·병리학적자세", 80, 15, 89, "che_event_척사", [49222, 28362, 42275, 812307, 76957], 1, "3679089.jpg?=20180629", 91, "che_251127_zjtD", 59, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum"]], + ["91·커뮤중독자", 93, 75, 16, "che_event_필살", [740938, 5674, 30478, 47081, 43471], 1, "eb3caea9.png?=20251127", 91, "che_251127_zjtD", 60, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["91·승테이크", 78, 15, 90, "che_event_환술", [58428, 9268, 40105, 562622, 33654], 1, "003402de.jpg?=20251127", 91, "che_251127_zjtD", 61, ["chief:7", "hall:dex4"]], + ["91·나다", 89, 78, 15, "che_event_필살", [428156, 3146, 37574, 45849, 28166], 1, "8f519725.png?=20251127", 91, "che_251127_zjtD", 63, ["hall:dex1", "hall:tlrate"]], + ["91·네이", 76, 16, 91, "che_event_필살", [24341, 24378, 36323, 481890, 77685], 0, "default.jpg", 91, "che_251127_zjtD", 64, ["hall:dex4", "hall:dex5", "hall:firenum", "hall:occupied"]], + ["91·정승피리리리?", 76, 93, 15, "che_event_돌격", [866791, 20056, 36224, 107911, 50850], 1, "df67603f.jpg?=20251127", 91, "che_251127_zjtD", 66, ["chief:10", "hall:dedication", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:tsrate", "hall:warnum"]], + ["91·조승상", 81, 90, 16, "che_event_저격", [5664, 1978, 691958, 70894, 6977], 1, "f74ef7a0.jpg?=20251209", 91, "che_251127_zjtD", 68, ["hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["91·명예로운 승필경", 75, 15, 100, "che_event_돌격", [62730, 44183, 44300, 1587673, 64004], 1, "a8470d95.jpg?=20251127", 91, "che_251127_zjtD", 69, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["91·NK", 77, 15, 94, "che_event_필살", [62097, 17571, 47365, 793153, 43239], 0, "default.jpg", 91, "che_251127_zjtD", 70, ["hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["91·배도변", 78, 15, 90, "che_event_필살", [69196, 13355, 32587, 606351, 58643], 1, "31683464.png?=20251127", 91, "che_251127_zjtD", 71, ["hall:dedication", "hall:dex4", "hall:dex5", "hall:experience"]], + ["91·승누피", 75, 15, 95, "che_event_필살", [66498, 13871, 14495, 799836, 66222], 1, "5e8d16a9.jpg?=20251127", 91, "che_251127_zjtD", 72, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["91·냥냥냥", 79, 87, 16, "che_event_위압", [30942, 4971, 600798, 101064, 46715], 1, "6b2b55c5.png?=20250926", 91, "che_251127_zjtD", 74, ["hall:dex3", "hall:occupied"]], + ["91·대교", 89, 15, 81, "che_event_반계", [18178, 8559, 28215, 488332, 22864], 1, "a53ab5ef.jpg?=20241010", 91, "che_251127_zjtD", 76, ["hall:dex4", "hall:experience", "hall:tlrate"]], + ["91·평민킬러", 76, 93, 15, "che_event_필살", [514438, 1353, 25940, 72187, 32840], 1, "4a3cdec0.jpg?=20251030", 91, "che_251127_zjtD", 77, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["91·1210로아시작ㄱ", 75, 95, 15, "che_event_척사", [772239, 10377, 49788, 78478, 39335], 1, "8cd01cd8.png?=20251201", 91, "che_251127_zjtD", 78, ["hall:dex1", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["91·인클라인덤벨프레스", 78, 90, 15, "che_event_징병", [60662, 48187, 967217, 57642, 73738], 1, "9329b69c.jpg?=20251127", 91, "che_251127_zjtD", 80, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["91·와일드플라워", 77, 15, 91, "che_event_저격", [9560, 4652, 27518, 436174, 20498], 0, "default.jpg", 91, "che_251127_zjtD", 87, ["hall:killrate", "hall:killrate_person"]], + ["91·카류", 78, 16, 89, "che_event_집중", [18066, 9941, 12314, 386611, 15139], 0, "default.jpg", 91, "che_251127_zjtD", 88, ["hall:tirate"]], + ["91·레드캡투어", 77, 91, 15, "che_event_필살", [427127, 15912, 18807, 44590, 34083], 1, "e8f2075a.png?=20250919", 91, "che_251127_zjtD", 92, ["hall:dedication", "hall:dex1", "hall:tsrate"]], + ["91·냥냥", 87, 16, 77, "che_event_집중", [53567, 5976, 36324, 429828, 46415], 1, "36f2d8b9.jpg?=20251128", 91, "che_251127_zjtD", 173, ["hall:tlrate"]], + ["91·ㅊㄹㅊㄹ", 82, 87, 16, "che_event_견고", [18877, 27883, 695897, 51482, 38468], 1, "63f1c106.png?=20230223", 91, "che_251127_zjtD", 174, ["hall:dex2", "hall:dex3", "hall:tlrate", "hall:ttrate"]], + ["91·최진리", 75, 92, 16, "che_event_견고", [311450, 5061, 40471, 31473, 15776], 1, "c2356432.png?=20250929", 91, "che_251127_zjtD", 175, ["hall:dex1", "hall:tsrate"]], + ["91·돌아온너구리", 15, 73, 94, "che_event_척사", [0, 0, 0, 0, 0], 1, "ed33d97a.png?=20251012", 91, "che_251127_zjtD", 176, ["hall:dedication", "hall:tirate"]], + ["91·NOV", 74, 90, 15, "che_event_격노", [96846, 12693, 10292, 28981, 62896], 0, "default.jpg", 91, "che_251127_zjtD", 187, ["hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["91·로비", 16, 72, 94, "che_event_신산", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 91, "che_251127_zjtD", 190, ["hall:firenum", "hall:tirate"]], + ["91·서림동결혼식땅따", 16, 88, 76, "che_event_필살", [0, 0, 0, 0, 0], 1, "af10377c.jpg?=20251030", 91, "che_251127_zjtD", 191, ["hall:firenum", "hall:ttrate"]], + ["91·송탄강", 17, 86, 77, "che_event_견고", [0, 0, 0, 0, 0], 1, "55516eae.png?=20251102", 91, "che_251127_zjtD", 192, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold"]], + ["91·Aion", 78, 89, 15, "che_event_징병", [61717, 330104, 30217, 45111, 27055], 1, "8ef3ffcf.jpg?=20251128", 91, "che_251127_zjtD", 232, ["hall:dex2", "hall:tsrate", "hall:ttrate"]], + ["91·미스티", 73, 15, 91, "che_event_환술", [2214, 4485, 3139, 196095, 16638], 1, "1aadcba.png?=20180908", 91, "che_251127_zjtD", 419, ["hall:tirate"]], + ["91·아가공주", 77, 15, 87, "che_event_필살", [15231, 3825, 14640, 432641, 42879], 1, "d45031fa.jpg?=20251202", 91, "che_251127_zjtD", 436, ["hall:betrate", "hall:betwingold"]], + ["92·강유", 91, 16, 80, "che_event_집중", [36331, 4293, 22309, 710865, 16965], 1, "79e150d0.jpg?=20230921", 92, "che_251225_rSL8", 5, ["hall:killcrew_person", "hall:tlrate"]], + ["92·랑", 72, 73, 13, "che_event_척사", [533789, 5214, 16157, 95368, 27187], 1, "54db8000.jpg?=20251225", 92, "che_251225_rSL8", 8, ["hall:betrate", "hall:betwin", "hall:dex1"]], + ["92·Hide_D", 78, 15, 90, "che_event_환술", [31442, 28674, 35769, 409365, 20079], 1, "4569d848.png?=20230612", 92, "che_251225_rSL8", 9, ["hall:tirate", "hall:ttrate"]], + ["92·마제", 75, 15, 95, "che_event_반계", [10789, 2613, 18846, 387962, 22669], 0, "default.jpg", 92, "che_251225_rSL8", 10, ["hall:tirate"]], + ["92·민트토끼", 15, 80, 87, "che_event_의술", [0, 0, 0, 0, 0], 1, "2171ee32.jpg?=20251208", 92, "che_251225_rSL8", 13, ["hall:firenum"]], + ["92·병리학적자세", 80, 15, 95, "che_event_척사", [64580, 16466, 19253, 1134218, 28562], 1, "3679089.jpg?=20180629", 92, "che_251225_rSL8", 14, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tirate", "hall:warnum"]], + ["92·캐럴 부르는 독구", 15, 71, 96, "che_event_의술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 92, "che_251225_rSL8", 16, ["hall:betrate", "hall:dedication", "hall:tirate"]], + ["92·외심장", 80, 15, 92, "che_event_집중", [18980, 7913, 16364, 450721, 20682], 1, "36110cd.jpg?=20180826", 92, "che_251225_rSL8", 17, ["hall:firenum", "hall:winrate"]], + ["92·전두광", 81, 91, 15, "che_event_징병", [997884, 17361, 70985, 121435, 64767], 1, "9c1ffb9f.png?=20251225", 92, "che_251225_rSL8", 20, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:warnum"]], + ["92·6292", 15, 71, 96, "che_event_저격", [0, 0, 0, 0, 0], 0, "default.jpg", 92, "che_251225_rSL8", 22, ["hall:dedication", "hall:tirate"]], + ["92·NK", 95, 75, 15, "che_event_필살", [880284, 48883, 71495, 183058, 44336], 0, "default.jpg", 92, "che_251225_rSL8", 24, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:tlrate", "hall:warnum"]], + ["92·평민킬러", 66, 84, 13, "che_event_필살", [775261, 4136, 15782, 29291, 15760], 1, "4a3cdec0.jpg?=20251030", 92, "che_251225_rSL8", 25, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["92·임사영", 78, 92, 15, "che_event_의술", [719442, 23744, 58563, 81606, 68200], 1, "918d304e.jpg?=20251209", 92, "che_251225_rSL8", 28, ["hall:occupied", "hall:tsrate", "hall:ttrate"]], + ["92·타치바나히나노", 78, 16, 89, "che_event_환술", [48132, 6836, 14810, 532885, 70300], 1, "c033385a.jpg?=20250626", 92, "che_251225_rSL8", 30, ["hall:dex5"]], + ["92·바나낫", 80, 90, 15, "che_event_징병", [96380, 340910, 531391, 107430, 80118], 1, "073c8444.gif?=20251025", 92, "che_251225_rSL8", 32, ["hall:dex2", "hall:dex3", "hall:dex5"]], + ["92·...", 80, 89, 15, "che_event_위압", [24191, 20184, 736170, 71154, 20939], 0, "default.jpg", 92, "che_251225_rSL8", 33, ["hall:dex3", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["92·92년생 숏컷빅맘", 91, 76, 16, "che_event_필살", [928051, 37784, 54603, 125352, 47275], 1, "8a1cf65e.png?=20260112", 92, "che_251225_rSL8", 34, ["hall:dex1", "hall:dex2", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["92·퍄퍄", 79, 90, 15, "che_event_척사", [90664, 21884, 578796, 63630, 48702], 0, "default.jpg", 92, "che_251225_rSL8", 35, ["hall:dex3", "hall:tsrate"]], + ["92·슬라임", 85, 60, 13, "che_event_공성", [84438, 1417, 4346, 37914, 442982], 1, "32482755.jpg?=20251229", 92, "che_251225_rSL8", 37, ["hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["92·불패", 77, 93, 15, "che_event_위압", [930806, 4610, 53877, 99384, 53571], 1, "f08fdbc4.jpg?=20251208", 92, "che_251225_rSL8", 38, ["chief:8", "hall:dex1", "hall:experience", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:warnum"]], + ["92·로비", 15, 72, 96, "che_event_의술", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 92, "che_251225_rSL8", 39, ["hall:dedication", "hall:experience"]], + ["92·단결독", 92, 76, 15, "che_event_필살", [1062148, 14353, 53284, 157585, 62593], 1, "0e6a0d50.png?=20251224", 92, "che_251225_rSL8", 40, ["hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["92·독구", 78, 15, 92, "che_event_집중", [83303, 23931, 33320, 837643, 65746], 1, "0ee99cd7.jpg?=20260110", 92, "che_251225_rSL8", 41, ["chief:11", "hall:betrate", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:occupied", "hall:winrate"]], + ["92·루돌프", 79, 93, 15, "che_event_격노", [198498, 23137, 687621, 117447, 40455], 1, "7b3177da.jpg?=20260110", 92, "che_251225_rSL8", 42, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["92·UMP9", 65, 13, 77, "che_event_환술", [31468, 5400, 18410, 329407, 21416], 1, "676a8b92.png?=20260102", 92, "che_251225_rSL8", 43, ["hall:tirate"]], + ["92·카이스트", 77, 16, 93, "che_event_필살", [67324, 25429, 24182, 699029, 32816], 1, "e7e27cd6.jpg?=20221125", 92, "che_251225_rSL8", 44, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:winrate"]], + ["92·네이", 88, 15, 82, "che_event_필살", [57641, 13183, 37995, 793288, 23269], 0, "default.jpg", 92, "che_251225_rSL8", 45, ["hall:betrate", "hall:dex4"]], + ["92·수장", 76, 94, 15, "che_event_필살", [989048, 16947, 42706, 112117, 76484], 1, "d5a062b8.jpg?=20251225", 92, "che_251225_rSL8", 46, ["chief:12", "hall:dedication", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate"]], + ["92·Sase", 78, 15, 92, "che_event_필살", [36343, 7929, 22139, 795787, 79042], 1, "a6b9efd6.jpg?=20260112", 92, "che_251225_rSL8", 48, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:killrate", "hall:killrate_person"]], + ["92·제갈여포", 78, 90, 16, "che_event_필살", [762993, 12555, 32460, 143929, 39133], 1, "e21b5ca3.jpg?=20251031", 92, "che_251225_rSL8", 49, ["hall:betgold", "hall:tsrate"]], + ["92·사스케", 94, 13, 60, "che_event_징병", [76586, 44017, 101335, 103905, 1439405], 1, "377a21fc.jpg?=20250910", 92, "che_251225_rSL8", 50, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["92·노르딕햄스트링컬", 81, 15, 89, "che_event_저격", [64503, 29854, 47233, 654937, 26553], 1, "6c1fec6e.jpg?=20251226", 92, "che_251225_rSL8", 51, ["hall:betgold", "hall:betwingold"]], + ["92·세울타코", 77, 15, 95, "che_event_집중", [66895, 4835, 26082, 975446, 41846], 0, "default.jpg", 92, "che_251225_rSL8", 52, ["chief:7", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["92·수행", 77, 87, 20, "che_event_격노", [13757, 1556, 64269, 27490, 6444], 0, "default.jpg", 92, "che_251225_rSL8", 53, ["hall:dex3", "hall:ttrate"]], + ["92·간지밍이", 79, 15, 91, "che_event_필살", [29063, 27330, 49158, 766606, 34792], 1, "2565fc24.png?=20250705", 92, "che_251225_rSL8", 54, ["hall:betwin", "hall:dex4", "hall:killnum", "hall:killrate_person", "hall:winrate"]], + ["92·쌀숭이", 80, 15, 91, "che_event_환술", [56883, 11547, 38102, 777244, 16662], 1, "a57b3afe.png?=20251227", 92, "che_251225_rSL8", 56, ["hall:dex4"]], + ["92·메종독구네", 15, 71, 94, "che_event_의술", [0, 0, 0, 0, 0], 1, "02dc3a91.gif?=20231019", 92, "che_251225_rSL8", 61, ["hall:dedication", "hall:tirate"]], + ["92·92년생 김지영", 76, 15, 93, "che_event_환술", [134031, 13385, 17620, 477695, 43505], 0, "default.jpg", 92, "che_251225_rSL8", 62, ["hall:tirate"]], + ["92·셀레미", 83, 15, 87, "che_event_반계", [83901, 15777, 29023, 708801, 84672], 1, "f71ab1e2.jpg?=20260105", 92, "che_251225_rSL8", 71, ["hall:dex5", "hall:ttrate"]], + ["92·대교", 91, 15, 77, "che_event_집중", [114881, 86017, 52487, 1071187, 45680], 1, "a53ab5ef.jpg?=20241010", 92, "che_251225_rSL8", 72, ["hall:dex2", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:tlrate", "hall:warnum"]], + ["92·Jeju", 93, 78, 15, "che_event_격노", [867613, 31939, 34150, 98502, 68636], 0, "default.jpg", 92, "che_251225_rSL8", 73, ["hall:betrate", "hall:dex1", "hall:dex2", "hall:killcrew_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["92·92년생 앵지영", 94, 73, 15, "che_event_저격", [87744, 180635, 592625, 116298, 69505], 1, "eac3900e.jpg?=20260107", 92, "che_251225_rSL8", 74, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:tlrate"]], + ["92·최진리", 79, 15, 90, "che_event_징병", [57730, 19497, 17537, 784324, 79690], 1, "c2356432.png?=20250929", 92, "che_251225_rSL8", 76, ["chief:9", "hall:betrate", "hall:dex4", "hall:dex5"]], + ["92·마요이", 16, 73, 96, "che_event_신중", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 92, "che_251225_rSL8", 77, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["92·세종의종신파딱", 77, 16, 90, "che_event_징병", [113747, 39500, 68010, 1045823, 31015], 0, "default.jpg", 92, "che_251225_rSL8", 79, ["hall:dex2", "hall:dex3", "hall:dex4", "hall:killcrew_person", "hall:ttrate", "hall:warnum"]], + ["92·ㅊㄹㅊㄹ", 80, 89, 15, "che_event_의술", [108924, 634682, 15284, 89944, 60751], 1, "63f1c106.png?=20230223", 92, "che_251225_rSL8", 168, ["chief:6", "hall:betwin", "hall:dex2", "hall:tsrate"]], + ["92·나야, 청솔모", 91, 76, 15, "che_event_징병", [309318, 6067, 32149, 73692, 59228], 1, "c0d11deb.jpg?=20260114", 92, "che_251225_rSL8", 187, ["hall:tlrate", "hall:ttrate"]], + ["92·황혼중", 15, 85, 84, "che_event_필살", [0, 0, 0, 0, 0], 1, "e5161df9.jpg?=20231110", 92, "che_251225_rSL8", 190, ["hall:ttrate"]], + ["92·로즈", 15, 75, 91, "che_event_필살", [0, 0, 0, 0, 0], 1, "4e69b2de.png?=20251226", 92, "che_251225_rSL8", 229, ["hall:dedication"]], + ["92·도화가", 79, 16, 87, "che_event_징병", [92667, 7401, 31844, 619961, 78221], 1, "af10377c.jpg?=20251030", 92, "che_251225_rSL8", 240, ["chief:5", "hall:dex5"]], + ["92·이밤의끝을잡고", 90, 75, 15, "che_event_견고", [512135, 49530, 41676, 117001, 38443], 0, "default.jpg", 92, "che_251225_rSL8", 279, ["hall:dex2"]], + ["92·배가고픈개", 79, 89, 16, "che_event_징병", [795547, 8766, 45473, 108843, 67583], 1, "42f05383.jpg?=20260110", 92, "che_251225_rSL8", 293, ["chief:10", "hall:dex1", "hall:experience"]], + ["92·송탄강", 16, 85, 80, "che_event_위압", [0, 0, 0, 0, 0], 1, "55516eae.png?=20251102", 92, "che_251225_rSL8", 298, ["hall:betgold", "hall:betwin"]], + ["92·재야", 16, 75, 90, "che_event_신중", [0, 0, 2600, 12322, 2340], 0, "default.jpg", 92, "che_251225_rSL8", 430, ["hall:dedication"]], + ["93·카이스트", 76, 15, 85, "che_event_집중", [14080, 17699, 8444, 229192, 11120], 1, "e7e27cd6.jpg?=20221125", 93, "che_260122_rB5D", 3, ["hall:dex2", "hall:dex4"]], + ["93·냥냥의오른팔", 73, 15, 88, "che_event_징병", [464, 168, 1849, 88178, 17325], 1, "8fe5c762.png?=20260124", 93, "che_260122_rB5D", 6, ["chief:5", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:tirate"]], + ["93·냥냥", 74, 15, 87, "che_event_집중", [13541, 2856, 10568, 174738, 36361], 1, "f2f7443f.png?=20260201", 93, "che_260122_rB5D", 8, ["chief:12", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:occupied", "hall:tirate"]], + ["93·병리학적자세", 72, 15, 91, "che_event_신중", [6114, 1470, 2334, 146357, 21322], 0, "default.jpg", 93, "che_260122_rB5D", 9, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:occupied", "hall:tirate"]], + ["93·그런스핔이필요하다", 15, 73, 88, "che_event_척사", [0, 0, 0, 0, 0], 1, "c091fade.jpg?=20260120", 93, "che_260122_rB5D", 15, ["hall:tirate"]], + ["93·긁혔냥", 92, 70, 15, "che_event_공성", [31647, 0, 4095, 5463, 444332], 1, "35103a54.png?=20260122", 93, "che_260122_rB5D", 17, ["chief:10", "hall:betwin", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["93·미스티", 73, 16, 88, "che_event_집중", [1677, 153, 441, 47190, 2626], 1, "1aadcba.png?=20180908", 93, "che_260122_rB5D", 18, ["hall:winrate"]], + ["93·임사영", 89, 72, 15, "che_event_필살", [234959, 351, 8219, 16499, 22777], 1, "918d304e.jpg?=20251209", 93, "che_260122_rB5D", 20, ["hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["93·바나낫", 92, 71, 15, "che_event_필살", [50382, 16749, 18319, 40042, 389484], 1, "073c8444.gif?=20251025", 93, "che_260122_rB5D", 21, ["hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["93·강유", 87, 15, 73, "che_event_반계", [5155, 17353, 1680, 181620, 13305], 1, "79e150d0.jpg?=20230921", 93, "che_260122_rB5D", 23, ["hall:dex2", "hall:dex4", "hall:occupied"]], + ["93·Hide_D", 73, 15, 89, "che_event_저격", [2413, 989, 1622, 94321, 9576], 1, "4569d848.png?=20230612", 93, "che_260122_rB5D", 26, ["hall:tirate", "hall:ttrate"]], + ["93·리퍼", 84, 73, 16, "che_event_징병", [266326, 14138, 27031, 47148, 36651], 1, "a24fd9d6.jpg?=20260122", 93, "che_260122_rB5D", 30, ["hall:dex1", "hall:dex5", "hall:warnum"]], + ["93·끼에에에엑!!!", 84, 15, 75, "che_event_필살", [27822, 9392, 16446, 252902, 11187], 1, "7279dc2d.jpg?=20260122", 93, "che_260122_rB5D", 31, ["hall:dex4"]], + ["93·코트디부아르", 17, 71, 87, "che_event_징병", [0, 0, 0, 0, 0], 1, "b2866d2c.png?=20260122", 93, "che_260122_rB5D", 32, ["hall:ttrate"]], + ["93·륜", 75, 87, 16, "che_event_기병", [2741, 5385, 141987, 7042, 11362], 1, "1ff5947f.png?=20260131", 93, "che_260122_rB5D", 35, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3"]], + ["93·퍄퍄", 73, 89, 15, "che_event_필살", [4107, 6994, 126494, 16710, 8920], 0, "default.jpg", 93, "che_260122_rB5D", 36, ["hall:dex3", "hall:tsrate"]], + ["93·ZETA", 74, 85, 17, "che_event_필살", [224898, 3182, 6394, 22450, 21042], 0, "default.jpg", 93, "che_260122_rB5D", 37, ["hall:dex1"]], + ["93·아라야", 76, 85, 15, "che_event_견고", [266872, 7145, 22808, 27472, 23060], 0, "default.jpg", 93, "che_260122_rB5D", 38, ["hall:dex1", "hall:killnum", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["93·냥뇽녕냥", 76, 87, 15, "che_event_필살", [18613, 120341, 185118, 7735, 25040], 1, "67043db1.jpg?=20260120", 93, "che_260122_rB5D", 39, ["chief:8", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["93·그숙련에잠이오냥", 72, 91, 15, "che_event_필살", [181577, 2364, 5587, 21050, 17894], 1, "39b9f3b3.png?=20260122", 93, "che_260122_rB5D", 42, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["93·동냥", 74, 15, 88, "che_event_집중", [1023, 3191, 4049, 129519, 28178], 1, "decfbf9e.png?=20260121", 93, "che_260122_rB5D", 46, ["chief:7", "hall:dedication", "hall:dex5", "hall:experience", "hall:occupied", "hall:tirate", "hall:ttrate"]], + ["93·빠른94", 74, 89, 15, "che_event_필살", [20423, 121549, 268, 12606, 14304], 0, "default.jpg", 93, "che_260122_rB5D", 54, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:tsrate"]], + ["93·제갈여포", 74, 16, 87, "che_event_반계", [9299, 18496, 21633, 261516, 7075], 1, "e21b5ca3.jpg?=20251031", 93, "che_260122_rB5D", 55, ["hall:dex2", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tirate", "hall:warnum"]], + ["93·ㅊㄹㅊㄹ", 75, 87, 16, "che_event_견고", [3517, 10713, 160070, 5655, 11612], 1, "63f1c106.png?=20230223", 93, "che_260122_rB5D", 56, ["hall:dex3", "hall:tlrate", "hall:tsrate"]], + ["93·주하", 83, 73, 17, "che_event_필살", [33583, 0, 0, 569, 7935], 0, "default.jpg", 93, "che_260122_rB5D", 58, ["hall:occupied", "hall:tlrate", "hall:ttrate"]], + ["93·송탄강", 85, 16, 74, "che_event_귀병", [11594, 16941, 5569, 114372, 7902], 1, "55516eae.png?=20251102", 93, "che_260122_rB5D", 59, ["hall:betgold", "hall:betwin", "hall:dex2"]], + ["93·조승상", 73, 90, 15, "che_event_필살", [7826, 22382, 335109, 36649, 26111], 1, "676a8b92.png?=20260102", 93, "che_260122_rB5D", 60, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["93·서희", 87, 15, 74, "che_event_반계", [5377, 3562, 10587, 230956, 7212], 0, "default.jpg", 93, "che_260122_rB5D", 61, ["hall:dex4"]], + ["93·세르카", 74, 15, 89, "che_event_환술", [8435, 24585, 11903, 428273, 37449], 1, "a2dd94b2.png?=20260122", 93, "che_260122_rB5D", 62, ["hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["93·NK", 90, 73, 15, "che_event_돌격", [599399, 15618, 21393, 114712, 21544], 0, "default.jpg", 93, "che_260122_rB5D", 63, ["hall:betrate", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["93·Sase", 74, 15, 89, "che_event_필살", [5093, 8950, 8550, 215249, 17152], 1, "21f1f418.jpg?=20260120", 93, "che_260122_rB5D", 64, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:tirate"]], + ["93·삼모쉬었음", 76, 15, 84, "che_event_집중", [2954, 13679, 8438, 224936, 19073], 0, "default.jpg", 93, "che_260122_rB5D", 65, ["hall:dex4"]], + ["93·스핔이", 87, 73, 16, "che_event_격노", [324848, 7247, 9103, 41460, 6627], 1, "3889b4e4.gif?=20260124", 93, "che_260122_rB5D", 66, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["93·불패", 73, 89, 15, "che_event_저격", [212549, 4759, 65296, 28931, 21618], 1, "f08fdbc4.jpg?=20251208", 93, "che_260122_rB5D", 67, ["hall:dex1", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate"]], + ["93·나는해고", 73, 87, 15, "che_event_위압", [69602, 711, 100389, 8090, 24353], 1, "d2db0281.png?=20260126", 93, "che_260122_rB5D", 69, ["hall:betrate", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:tsrate"]], + ["93·8ase", 74, 16, 85, "che_event_저격", [13888, 10263, 2549, 147970, 11748], 1, "31436678.jpg?=20260126", 93, "che_260122_rB5D", 70, ["hall:tirate", "hall:ttrate"]], + ["93·단또", 91, 72, 15, "che_event_징병", [27470, 190855, 29744, 20690, 11447], 1, "8675dd3f.jpg?=20260122", 93, "che_260122_rB5D", 71, ["hall:betwin", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["93·뭐하냥", 92, 15, 70, "che_event_필살", [8818, 8543, 12738, 33585, 152545], 1, "68363fe2.png?=20260122", 93, "che_260122_rB5D", 73, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["93·최진리", 73, 15, 88, "che_event_필살", [22229, 12049, 3275, 402624, 34013], 1, "c2356432.png?=20250929", 93, "che_260122_rB5D", 74, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["93·쉬었음참새", 72, 89, 15, "che_event_궁병", [5442, 218301, 3371, 20159, 5374], 0, "default.jpg", 93, "che_260122_rB5D", 79, ["hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["93·호나", 73, 88, 15, "che_event_견고", [177576, 3089, 28716, 12629, 13552], 0, "default.jpg", 93, "che_260122_rB5D", 81, ["hall:dex1", "hall:dex3", "hall:tsrate"]], + ["93·로비", 15, 73, 87, "che_event_신중", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 93, "che_260122_rB5D", 232, ["hall:dedication"]], + ["93·팍팍해요", 75, 85, 15, "che_event_격노", [1590, 3919, 81846, 6631, 2403], 0, "default.jpg", 93, "che_260122_rB5D", 252, ["hall:dex3", "hall:tsrate"]], + ["93·재야", 16, 73, 86, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 93, "che_260122_rB5D", 304, ["hall:dedication"]], + ["94·임사영", 95, 73, 15, "che_event_척사", [583490, 23721, 31743, 104074, 51102], 1, "918d304e.jpg?=20251209", 94, "che_260205_IEBq", 12, ["hall:dex1", "hall:dex5", "hall:killrate", "hall:tlrate"]], + ["94·싱하", 75, 15, 98, "che_event_징병", [40336, 17689, 25156, 1277807, 79737], 1, "194b07e4.jpg?=20260205", 94, "che_260205_IEBq", 18, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["94·Hide_D", 75, 15, 91, "che_event_신중", [2301, 5746, 1187, 125501, 7159], 1, "4569d848.png?=20230612", 94, "che_260205_IEBq", 22, ["hall:tirate"]], + ["94·병리학적자세", 77, 15, 94, "che_event_신산", [49676, 18239, 36394, 658412, 51829], 1, "3679089.jpg?=20180629", 94, "che_260205_IEBq", 24, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:dex5", "hall:killrate", "hall:occupied"]], + ["94·010120", 81, 89, 15, "che_event_격노", [768555, 10489, 31308, 46540, 17080], 0, "default.jpg", 94, "che_260205_IEBq", 27, ["hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["94·외심장", 80, 15, 92, "che_event_필살", [23095, 18565, 25297, 673991, 31790], 1, "36110cd.jpg?=20180826", 94, "che_260205_IEBq", 29, ["hall:dex4", "hall:killcrew", "hall:killcrew_person"]], + ["94·꿀잠자는참새", 77, 15, 95, "che_event_필살", [24238, 5570, 64660, 589831, 23295], 0, "default.jpg", 94, "che_260205_IEBq", 32, ["hall:dex4", "hall:tirate", "hall:ttrate"]], + ["94·최진리", 76, 15, 97, "che_event_필살", [36350, 8336, 46527, 707886, 54074], 1, "c2356432.png?=20250929", 94, "che_260205_IEBq", 35, ["hall:dex4", "hall:dex5", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["94·셀레미", 75, 16, 93, "che_event_신중", [37507, 68728, 35310, 403353, 26658], 1, "91c55fbe.jpg?=20260205", 94, "che_260205_IEBq", 36, ["hall:dex2", "hall:tirate"]], + ["94·카이스트", 77, 17, 92, "che_event_집중", [13143, 9774, 17116, 308420, 21164], 1, "e7e27cd6.jpg?=20221125", 94, "che_260205_IEBq", 43, ["hall:betrate"]], + ["94·코바야시 미쿠루", 77, 94, 15, "che_event_위압", [747908, 7799, 45759, 89991, 36818], 1, "a82c7922.png?=20260205", 94, "che_260205_IEBq", 45, ["chief:10", "hall:dedication", "hall:dex1", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate"]], + ["94·Sase Kim", 75, 15, 97, "che_event_필살", [39336, 26174, 27615, 685667, 46514], 1, "0372425e.jpg?=20260213", 94, "che_260205_IEBq", 46, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:occupied"]], + ["94·냥냥", 78, 91, 15, "che_event_격노", [245618, 13769, 145717, 53408, 25552], 1, "1807ae74.png?=20260213", 94, "che_260205_IEBq", 47, ["hall:dex1", "hall:dex3", "hall:tsrate"]], + ["94·울트라리스크", 94, 85, 15, "che_event_징병", [60968, 79883, 1706191, 109430, 22666], 1, "9ff4b2bb.jpg?=20260205", 94, "che_260205_IEBq", 52, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["94·와일드플라워", 79, 15, 93, "che_event_필살", [14332, 28403, 21943, 449012, 25608], 0, "default.jpg", 94, "che_260205_IEBq", 53, ["hall:ttrate"]], + ["94·m장", 77, 96, 15, "che_event_필살", [55682, 50916, 871320, 99818, 33267], 0, "default.jpg", 94, "che_260205_IEBq", 57, ["chief:6", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["94·NK", 97, 74, 15, "che_event_돌격", [66826, 24481, 69464, 82234, 743071], 1, "b1dd7d45.jpg?=20260205", 94, "che_260205_IEBq", 61, ["hall:betrate", "hall:betwingold", "hall:dex5", "hall:experience", "hall:occupied", "hall:tlrate"]], + ["94·바나낫", 76, 93, 15, "che_event_무쌍", [423438, 18930, 186912, 89121, 42886], 1, "073c8444.gif?=20251025", 94, "che_260205_IEBq", 63, ["chief:8", "hall:dex1", "hall:dex3", "hall:tsrate"]], + ["94·PIKU이상형월드컵", 76, 15, 94, "che_event_반계", [40016, 14599, 47218, 376290, 36075], 1, "38cd61fa.jpg?=20260203", 94, "che_260205_IEBq", 64, ["hall:ttrate"]], + ["94·로즈워드차를로스성", 96, 75, 15, "che_event_징병", [656953, 10301, 35405, 49542, 20745], 1, "53597dab.webp?=20260211", 94, "che_260205_IEBq", 66, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:firenum", "hall:killcrew_person", "hall:tlrate"]], + ["94·뒤집개", 79, 93, 15, "che_event_돌격", [214737, 160640, 683223, 196801, 33058], 1, "3fcbc7a6.jpg?=20260205", 94, "che_260205_IEBq", 68, ["hall:betwin", "hall:dex2", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["94·갈비도둑", 15, 101, 70, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 94, "che_260205_IEBq", 70, ["hall:betgold", "hall:betwin", "hall:firenum", "hall:tsrate"]], + ["94·에드워드", 75, 98, 15, "che_event_필살", [1162729, 80827, 47597, 73933, 37902], 1, "6e8cd94f.jpg?=20260205", 94, "che_260205_IEBq", 73, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["94·퍄퍄", 79, 92, 15, "che_event_징병", [705103, 15992, 58852, 126464, 49542], 0, "default.jpg", 94, "che_260205_IEBq", 74, ["hall:dex1", "hall:dex5", "hall:warnum"]], + ["94·감흥", 76, 15, 94, "che_event_집중", [38524, 7349, 34683, 740489, 32966], 1, "2a79fbad.jpg?=20260131", 94, "che_260205_IEBq", 75, ["chief:5", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:winrate"]], + ["94·호나", 79, 93, 15, "che_event_격노", [53605, 136818, 517248, 66016, 43307], 0, "default.jpg", 94, "che_260205_IEBq", 76, ["hall:dex2", "hall:dex3", "hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["94·감다뒤", 20, 73, 92, "che_event_필살", [2846, 140087, 4675, 14799, 19522], 1, "632b81fe.png?=20260205", 94, "che_260205_IEBq", 77, ["hall:dex2"]], + ["94·독하", 76, 15, 95, "che_event_필살", [35438, 10438, 51478, 601421, 55753], 1, "75bb5ce4.png?=20260227", 94, "che_260205_IEBq", 78, ["chief:9", "hall:dedication", "hall:dex4", "hall:dex5", "hall:firenum", "hall:killrate_person", "hall:tirate"]], + ["94·증바람", 76, 15, 96, "che_event_필살", [19129, 10487, 12451, 454758, 21072], 0, "default.jpg", 94, "che_260205_IEBq", 79, ["hall:betrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["94·불패", 76, 97, 15, "che_event_징병", [93651, 790110, 107668, 115033, 23504], 1, "f08fdbc4.jpg?=20251208", 94, "che_260205_IEBq", 80, ["hall:dex2", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["94·대교", 88, 15, 85, "che_event_필살", [23475, 30762, 16903, 596494, 36789], 1, "a53ab5ef.jpg?=20241010", 94, "che_260205_IEBq", 81, ["hall:dex4", "hall:experience", "hall:killnum", "hall:winrate"]], + ["94·농부", 76, 15, 94, "che_event_귀병", [27174, 9378, 22394, 269654, 22970], 0, "default.jpg", 94, "che_260205_IEBq", 82, ["hall:betrate", "hall:betwingold", "hall:tirate", "hall:ttrate"]], + ["94·조승상", 76, 92, 15, "che_event_돌격", [68071, 41001, 646274, 99370, 55401], 1, "676a8b92.png?=20260102", 94, "che_260205_IEBq", 83, ["hall:dex3", "hall:dex5"]], + ["94·ㅇㅅㅇ", 88, 83, 15, "che_event_필살", [300681, 123819, 320455, 52867, 28809], 0, "default.jpg", 94, "che_260205_IEBq", 84, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:tlrate", "hall:ttrate"]], + ["94·주기자", 77, 16, 95, "che_event_징병", [44986, 9291, 72498, 743278, 35958], 1, "6fd30971.png?=20260205", 94, "che_260205_IEBq", 85, ["hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:warnum"]], + ["94·갈비집막내아들", 15, 95, 73, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 94, "che_260205_IEBq", 86, ["hall:firenum", "hall:tsrate", "hall:ttrate"]], + ["94·송탄강", 16, 76, 93, "che_event_척사", [0, 0, 0, 0, 0], 1, "55516eae.png?=20251102", 94, "che_260205_IEBq", 94, ["hall:betgold", "hall:betwin"]], + ["94·설맞이 독구", 15, 73, 96, "che_event_반계", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 94, "che_260205_IEBq", 96, ["hall:dedication", "hall:tirate"]], + ["94·척", 16, 72, 97, "che_event_저격", [0, 0, 0, 0, 0], 1, "7cb75480.png?=20221202", 94, "che_260205_IEBq", 100, ["hall:ttrate"]], + ["94·조운", 15, 73, 96, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 94, "che_260205_IEBq", 102, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["94·앵벌스", 90, 76, 15, "che_event_무쌍", [48268, 208312, 22255, 44456, 17574], 0, "default.jpg", 94, "che_260205_IEBq", 107, ["hall:dex2", "hall:tlrate"]], + ["94·ㅊㄹㅊㄹ", 79, 90, 16, "che_event_필살", [59630, 28403, 435283, 54910, 26622], 1, "63f1c106.png?=20230223", 94, "che_260205_IEBq", 212, ["hall:betwin", "hall:dex3", "hall:tsrate"]], + ["94·타마모크로스", 90, 79, 15, "che_event_척사", [97949, 21322, 142696, 9397, 17936], 1, "8b76af8b.png?=20260206", 94, "che_260205_IEBq", 229, ["hall:tlrate"]], + ["94·마요이", 16, 75, 92, "che_event_저격", [0, 0, 0, 0, 0], 1, "2b49c945.png?=20230921", 94, "che_260205_IEBq", 264, ["hall:dedication"]], + ["94·기술연구하장", 15, 75, 91, "che_event_의술", [0, 0, 0, 0, 0], 0, "default.jpg", 94, "che_260205_IEBq", 368, ["hall:firenum"]], + ["94·리니지", 89, 77, 18, "che_event_무쌍", [456214, 55289, 42216, 40119, 26274], 1, "cf57616c.png?=20260208", 94, "che_260205_IEBq", 403, ["hall:dex1", "hall:dex2", "hall:firenum", "hall:tlrate"]], + ["94·미도리야 이즈쿠", 94, 15, 73, "che_event_의술", [16250, 9967, 3714, 199960, 6315], 1, "6ff2f836.jpg?=20260210", 94, "che_260205_IEBq", 448, ["hall:tlrate"]], + ["94·74", 15, 72, 94, "che_event_신산", [0, 0, 0, 0, 0], 0, "default.jpg", 94, "che_260205_IEBq", 497, ["hall:betrate", "hall:dedication", "hall:tirate"]], + ["94·Navy마초", 87, 74, 17, "che_event_필살", [41116, 27669, 270151, 58434, 38166], 1, "37644ed3.png?=20230831", 94, "che_260205_IEBq", 508, ["hall:betrate", "hall:dex3", "hall:tlrate"]], + ["96·김야곤", 93, 82, 16, "che_event_필살", [56390, 62522, 1433950, 115221, 145400], 1, "8b70d1b5.jpg?=20260301", 96, "che_260402_97Fh", 6, ["chief:10", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["96·몽골맨", 80, 94, 15, "che_event_필살", [34827, 53714, 883524, 140724, 75433], 1, "c2b2f527.png?=20260402", 96, "che_260402_97Fh", 12, ["hall:dex2", "hall:dex3"]], + ["96·슬라임123", 83, 66, 13, "che_event_필살", [63773, 679531, 26975, 94662, 99439], 0, "default.jpg", 96, "che_260402_97Fh", 14, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["96·아메리칸", 71, 80, 14, "che_event_무쌍", [35212, 14765, 669926, 78748, 22519], 1, "958ecbe2.png?=20260402", 96, "che_260402_97Fh", 15, ["hall:dex3", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["96·갑옷", 84, 66, 14, "che_event_징병", [1121807, 15056, 40187, 40950, 62997], 1, "30018b92.png?=20260420", 96, "che_260402_97Fh", 21, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["96·와일드플라워", 66, 13, 82, "che_event_집중", [23397, 18776, 13046, 398843, 27145], 0, "default.jpg", 96, "che_260402_97Fh", 26, ["hall:dex4", "hall:tirate", "hall:winrate"]], + ["96·바나낫", 66, 83, 14, "che_event_필살", [445009, 24071, 57233, 20423, 25522], 1, "073c8444.gif?=20251025", 96, "che_260402_97Fh", 28, ["hall:dedication", "hall:dex1", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate"]], + ["96·바티칸", 69, 13, 79, "che_event_의술", [39267, 13884, 42372, 458832, 67184], 1, "9fcfa670.jpg?=20260402", 96, "che_260402_97Fh", 41, ["hall:betrate", "hall:dex5"]], + ["96·예턴장", 72, 82, 13, "che_event_징병", [26997, 17820, 1147864, 107970, 44874], 0, "default.jpg", 96, "che_260402_97Fh", 46, ["chief:12", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum"]], + ["96·살로메", 66, 83, 13, "che_event_필살", [17239, 354803, 9288, 23753, 24294], 1, "6ae45121.jpg?=20260404", 96, "che_260402_97Fh", 48, ["hall:dedication", "hall:dex2", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:winrate"]], + ["96·ㅊㄹㅊㄹ", 68, 13, 82, "che_event_척사", [24415, 27204, 28787, 466824, 49044], 1, "63f1c106.png?=20230223", 96, "che_260402_97Fh", 50, ["hall:betwin", "hall:dex4", "hall:tirate"]], + ["96·스테퍼레트로", 70, 77, 13, "che_event_격노", [411469, 13097, 46394, 73046, 23911], 0, "default.jpg", 96, "che_260402_97Fh", 51, ["hall:dex1", "hall:firenum"]], + ["96·참새30마리먹은독구", 15, 73, 99, "che_event_의술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 96, "che_260402_97Fh", 52, ["hall:betrate", "hall:betwin"]], + ["96·KarRiu", 83, 62, 13, "che_event_공성", [16178, 0, 1714, 0, 286889], 1, "1d89eebb.png?=20260402", 96, "che_260402_97Fh", 53, ["hall:dex5", "hall:experience", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["96·카이스트", 81, 15, 94, "che_event_필살", [112423, 37838, 55742, 1163479, 90657], 1, "e7e27cd6.jpg?=20221125", 96, "che_260402_97Fh", 54, ["hall:dex1", "hall:dex4", "hall:dex5", "hall:killnum", "hall:warnum", "hall:winrate"]], + ["96·임사영", 81, 69, 13, "che_event_필살", [146393, 167489, 392511, 127776, 23959], 1, "918d304e.jpg?=20251209", 96, "che_260402_97Fh", 55, ["hall:dex1", "hall:dex2", "hall:dex3"]], + ["96·NK", 82, 70, 13, "che_event_징병", [38297, 1061161, 46677, 101288, 51158], 1, "b1dd7d45.jpg?=20260205", 96, "che_260402_97Fh", 56, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["96·개인전업투자자", 84, 65, 13, "che_event_필살", [502007, 2498, 54571, 50388, 23328], 1, "9acf8689.webp?=20260429", 96, "che_260402_97Fh", 57, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:firenum", "hall:tlrate"]], + ["96·96네코", 71, 13, 78, "che_event_집중", [42593, 4204, 33235, 446163, 34017], 1, "511e4192.jpg?=20260405", 96, "che_260402_97Fh", 58, ["hall:dex4"]], + ["96·ChatGPT", 78, 71, 13, "che_event_필살", [34797, 52832, 589321, 76996, 45463], 0, "default.jpg", 96, "che_260402_97Fh", 59, ["hall:betwin", "hall:dex2", "hall:dex3"]], + ["96·빈칸", 82, 14, 71, "che_event_징병", [26412, 35029, 45950, 947729, 39885], 1, "14a1f684.jpg?=20260402", 96, "che_260402_97Fh", 60, ["chief:5", "hall:betgold", "hall:dex2", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tlrate", "hall:ttrate", "hall:warnum"]], + ["96·Sase Kim", 85, 65, 13, "che_event_신산", [47796, 14097, 30576, 38965, 1049008], 1, "c99d8514.jpg?=20260403", 96, "che_260402_97Fh", 61, ["chief:6", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:firenum", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["96·비브람파이브핑거스", 69, 78, 13, "che_event_위압", [29877, 473992, 15088, 31595, 28113], 1, "7816cecf.jpg?=20260403", 96, "che_260402_97Fh", 63, ["hall:betgold", "hall:betwingold", "hall:dex2", "hall:tsrate"]], + ["96·V", 65, 14, 82, "che_event_척사", [12551, 10881, 15093, 242722, 4592], 0, "default.jpg", 96, "che_260402_97Fh", 64, ["hall:tirate"]], + ["96·몽마 탄 주하", 67, 83, 13, "che_event_견고", [36850, 27512, 416902, 61906, 23638], 0, "default.jpg", 96, "che_260402_97Fh", 66, ["hall:dex3", "hall:tsrate"]], + ["96·미스티", 73, 13, 74, "che_event_반계", [16065, 11509, 17792, 179725, 24679], 1, "1aadcba.png?=20180908", 96, "che_260402_97Fh", 67, ["hall:dedication"]], + ["96·병리학적자세", 66, 13, 85, "che_event_척사", [10027, 10279, 23495, 467509, 28174], 1, "3679089.jpg?=20180629", 96, "che_260402_97Fh", 68, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:tirate", "hall:winrate"]], + ["96·불패", 69, 81, 14, "che_event_징병", [704642, 17240, 54987, 88805, 22099], 1, "f08fdbc4.jpg?=20251208", 96, "che_260402_97Fh", 69, ["hall:betrate", "hall:dex1", "hall:killcrew", "hall:killcrew_person", "hall:warnum"]], + ["96·대교", 82, 66, 13, "che_event_필살", [655417, 10764, 31037, 57343, 34961], 1, "a53ab5ef.jpg?=20241010", 96, "che_260402_97Fh", 70, ["hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["96·오예", 66, 13, 83, "che_event_필살", [17219, 3523, 12577, 229686, 10263], 0, "default.jpg", 96, "che_260402_97Fh", 72, ["hall:dedication", "hall:ttrate"]], + ["96·감흥", 69, 13, 87, "che_event_징병", [35660, 14906, 38790, 1219523, 48977], 1, "2a79fbad.jpg?=20260131", 96, "che_260402_97Fh", 73, ["chief:9", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["96·조승상", 70, 78, 13, "che_event_견고", [26703, 36163, 88152, 51797, 362069], 1, "95aad908.png?=20260429", 96, "che_260402_97Fh", 74, ["hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["96·외심장", 68, 13, 81, "che_event_신산", [14716, 10621, 20403, 325902, 12999], 1, "36110cd.jpg?=20180826", 96, "che_260402_97Fh", 75, ["hall:tirate", "hall:ttrate"]], + ["96·해원", 67, 13, 83, "che_event_필살", [37635, 14701, 24987, 734933, 70078], 1, "8d4baa19.jpg?=20260402", 96, "che_260402_97Fh", 76, ["chief:7", "hall:betrate", "hall:betwin", "hall:dex4", "hall:dex5", "hall:experience", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["96·늦은건가", 66, 13, 82, "che_event_필살", [22990, 28863, 20197, 299227, 12954], 0, "default.jpg", 96, "che_260402_97Fh", 79, ["hall:dex2", "hall:tirate"]], + ["96·채운 카툰", 68, 80, 13, "che_event_징병", [32982, 15101, 523922, 60614, 43731], 1, "1297f1d3.jpg?=20260404", 96, "che_260402_97Fh", 80, ["hall:dex3", "hall:tsrate"]], + ["96·제갈여포", 76, 13, 75, "che_event_환술", [18082, 27162, 22333, 425514, 20013], 0, "default.jpg", 96, "che_260402_97Fh", 84, ["hall:betrate", "hall:dex4"]], + ["96·셀레미", 66, 13, 83, "che_event_집중", [9011, 4687, 2245, 144113, 12021], 1, "91c55fbe.jpg?=20260205", 96, "che_260402_97Fh", 86, ["hall:dedication", "hall:tirate"]], + ["96·빠나나나", 66, 13, 82, "che_event_징병", [15250, 4367, 12929, 235419, 19119], 1, "bcc02a79.png?=20260402", 96, "che_260402_97Fh", 87, ["hall:dedication", "hall:tirate"]], + ["96·지각이다~!", 80, 13, 69, "che_event_징병", [57945, 28633, 26903, 509995, 41900], 0, "default.jpg", 96, "che_260402_97Fh", 89, ["hall:dex4", "hall:tlrate", "hall:ttrate"]], + ["96·사스케", 75, 13, 72, "che_event_징병", [61252, 49880, 76189, 172238, 570319], 1, "1870de1b.jpg?=20260130", 96, "che_260402_97Fh", 90, ["hall:dedication", "hall:dex5", "hall:occupied"]], + ["96·Navy마초", 79, 91, 15, "che_event_필살", [626994, 34361, 49942, 64978, 37635], 1, "37644ed3.png?=20230831", 96, "che_260402_97Fh", 91, ["hall:dex1", "hall:tsrate"]], + ["96·페그오", 68, 82, 14, "che_event_징병", [22242, 23190, 520683, 63420, 23573], 0, "default.jpg", 96, "che_260402_97Fh", 172, ["hall:dex3", "hall:tsrate", "hall:ttrate"]], + ["96·알테오젠", 69, 82, 13, "che_event_위압", [22995, 12423, 447578, 42570, 28831], 0, "default.jpg", 96, "che_260402_97Fh", 230, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:winrate"]], + ["96·탐구생활", 15, 94, 76, "che_event_필살", [0, 0, 0, 0, 0], 0, "default.jpg", 96, "che_260402_97Fh", 388, ["hall:firenum", "hall:tsrate"]], + ["97·감흥", 75, 16, 87, "che_event_집중", [57706, 23331, 13619, 417133, 50828], 1, "2a79fbad.jpg?=20260131", 97, "che_260507_tb0I", 9, ["hall:dex4", "hall:dex5"]], + ["97·유르", 81, 89, 15, "che_event_저격", [65344, 592242, 52200, 39759, 35776], 1, "d2b5f0c4.png?=20260517", 97, "che_260507_tb0I", 11, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2"]], + ["97·병리학적자세", 76, 15, 93, "che_event_필살", [57668, 89488, 9691, 777071, 57877], 1, "3679089.jpg?=20180629", 97, "che_260507_tb0I", 16, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:winrate"]], + ["97·임사영", 77, 15, 89, "che_event_필살", [21121, 60472, 37131, 426607, 26652], 1, "918d304e.jpg?=20251209", 97, "che_260507_tb0I", 20, ["hall:dex4"]], + ["97·강유", 88, 15, 77, "che_event_필살", [68116, 40105, 13402, 391468, 50829], 1, "79e150d0.jpg?=20230921", 97, "che_260507_tb0I", 23, ["hall:dedication", "hall:dex5"]], + ["97·여름비", 76, 93, 15, "che_event_필살", [70370, 604384, 7078, 36573, 28617], 0, "default.jpg", 97, "che_260507_tb0I", 27, ["hall:dex2", "hall:tsrate"]], + ["97·갑옷", 99, 70, 15, "che_event_돌격", [62812, 70295, 24053, 102201, 1154692], 1, "3decdc32.png?=20260513", 97, "che_260507_tb0I", 34, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["97·라인하르트", 92, 74, 15, "che_event_징병", [459405, 98879, 66038, 85773, 18515], 1, "b97c0fb3.jpg?=20260507", 97, "che_260507_tb0I", 39, ["hall:dex1", "hall:dex2", "hall:dex3", "hall:tlrate"]], + ["97·카이스트", 76, 15, 90, "che_event_집중", [37577, 45256, 37034, 493848, 29775], 1, "e7e27cd6.jpg?=20221125", 97, "che_260507_tb0I", 40, ["hall:dex4"]], + ["97·슈퍼마리오", 95, 73, 15, "che_event_필살", [53904, 27019, 463288, 56629, 17800], 1, "16e6d3fe.png?=20260508", 97, "che_260507_tb0I", 42, ["hall:dex3", "hall:tlrate"]], + ["97·효자 독구", 16, 74, 93, "che_event_척사", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 97, "che_260507_tb0I", 43, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["97·북오더", 78, 15, 88, "che_event_신산", [25070, 46315, 21447, 512458, 41761], 1, "f9e4b416.gif?=20240717", 97, "che_260507_tb0I", 44, ["hall:betrate", "hall:betwin", "hall:dex4"]], + ["97·로젤리나", 76, 15, 91, "che_event_필살", [44542, 61710, 14093, 498990, 31879], 1, "5ffe2929.png?=20260508", 97, "che_260507_tb0I", 46, ["chief:5", "hall:dedication", "hall:dex4", "hall:tirate"]], + ["97·외심장", 78, 15, 89, "che_event_필살", [62299, 70397, 16248, 473836, 25970], 1, "36110cd.jpg?=20180826", 97, "che_260507_tb0I", 47, ["hall:dex4", "hall:tirate"]], + ["97·이세리 니나", 78, 89, 15, "che_event_척사", [13169, 79550, 475758, 72255, 53072], 1, "fab3ef47.jpg?=20260519", 97, "che_260507_tb0I", 52, ["chief:10", "hall:dedication", "hall:dex3", "hall:dex5", "hall:tsrate", "hall:ttrate"]], + ["97·펭구 코스프레 주하", 92, 73, 15, "che_event_위압", [343436, 19150, 12441, 45647, 20589], 1, "23eec5d0.webp?=20260507", 97, "che_260507_tb0I", 53, ["hall:tlrate", "hall:ttrate"]], + ["97·대교", 94, 72, 15, "che_event_필살", [543061, 29834, 36236, 68426, 43820], 1, "a53ab5ef.jpg?=20241010", 97, "che_260507_tb0I", 55, ["chief:8", "hall:dex1", "hall:tlrate"]], + ["97·독우가", 96, 72, 15, "che_event_돌격", [49435, 72834, 54496, 115298, 793599], 1, "3ee14b83.png?=20260526", 97, "che_260507_tb0I", 56, ["chief:6", "hall:betwin", "hall:dex5", "hall:experience", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["97·미스터서울", 79, 15, 91, "che_event_필살", [48788, 7506, 15196, 791263, 16077], 1, "8b41777e.jpg?=20260508", 97, "che_260507_tb0I", 57, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["97·독규", 93, 75, 15, "che_event_돌격", [657576, 37860, 458417, 124939, 80356], 1, "702cbac1.png?=20260508", 97, "che_260507_tb0I", 58, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:warnum", "hall:winrate"]], + ["97·커피한잔", 90, 83, 15, "che_event_징병", [1374557, 13797, 44117, 69118, 20370], 1, "75f63c20.jpg?=20260519", 97, "che_260507_tb0I", 59, ["hall:betrate", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tlrate", "hall:warnum"]], + ["97·불패", 77, 93, 15, "che_event_필살", [1010906, 48286, 32734, 78537, 42227], 1, "d9780168.jpg?=20260507", 97, "che_260507_tb0I", 60, ["hall:betgold", "hall:betwingold", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["97·정체를 숨긴자", 73, 93, 16, "che_event_징병", [774921, 114549, 198650, 47865, 46611], 1, "1d5f1e5e.jpg?=20260521", 97, "che_260507_tb0I", 61, ["chief:12", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["97·m유기", 75, 15, 93, "che_event_징병", [29156, 65407, 22427, 415829, 42003], 1, "886b8c24.jpg?=20260507", 97, "che_260507_tb0I", 62, ["hall:dedication", "hall:tirate"]], + ["97·어천독", 78, 90, 15, "che_event_무쌍", [456898, 5206, 34365, 26005, 20302], 0, "default.jpg", 97, "che_260507_tb0I", 63, ["hall:dex1", "hall:tsrate"]], + ["97·뚂뀨", 68, 73, 13, "che_event_견고", [264297, 21626, 23078, 35126, 21799], 1, "18a448ba.png?=20260507", 97, "che_260507_tb0I", 64, ["hall:betrate", "hall:dex1"]], + ["97·실접장", 76, 95, 15, "che_event_무쌍", [62051, 957879, 31441, 78927, 48113], 1, "8331a216.jpg?=20260507", 97, "che_260507_tb0I", 65, ["hall:betgold", "hall:betwin", "hall:dex2", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["97·ㅊㄹㅊㄹ", 78, 92, 15, "che_event_견고", [51741, 40127, 828394, 67430, 26554], 1, "63f1c106.png?=20230223", 97, "che_260507_tb0I", 66, ["hall:betwin", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["97·척", 76, 92, 15, "che_event_돌격", [516037, 35616, 86990, 67122, 43102], 1, "7cb75480.png?=20221202", 97, "che_260507_tb0I", 67, ["hall:dex1", "hall:dex3", "hall:occupied", "hall:tsrate"]], + ["97·챱구", 78, 92, 15, "che_event_견고", [40889, 33591, 1162369, 49987, 28017], 1, "4111c4ad.jpg?=20260516", 97, "che_260507_tb0I", 68, ["hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["97·NK", 100, 71, 15, "che_event_필살", [54145, 81211, 63572, 142703, 1394833], 1, "b1dd7d45.jpg?=20260205", 97, "che_260507_tb0I", 69, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["97·호나", 77, 89, 15, "che_event_징병", [76757, 87525, 692443, 105885, 31920], 0, "default.jpg", 97, "che_260507_tb0I", 70, ["hall:dex3", "hall:killcrew_person", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["97·키레네", 80, 88, 15, "che_event_척사", [69995, 625000, 3808, 81698, 38489], 1, "6f74035f.png?=20260515", 97, "che_260507_tb0I", 71, ["hall:dex2", "hall:occupied", "hall:tsrate", "hall:winrate"]], + ["97·허달려과장", 78, 15, 89, "che_event_신산", [37489, 20276, 24556, 405353, 40009], 1, "ad0adb6d.png?=20260507", 97, "che_260507_tb0I", 76, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:tirate"]], + ["97·장원영", 75, 15, 89, "che_event_필살", [50506, 38884, 6645, 227431, 8115], 1, "837ecd58.jpg?=20260313", 97, "che_260507_tb0I", 89, ["hall:dedication", "hall:ttrate"]], + ["97·또지각이다!", 87, 15, 79, "che_event_징병", [68142, 61379, 50751, 588899, 43921], 0, "default.jpg", 97, "che_260507_tb0I", 90, ["hall:dex4"]], + ["97·아르망디", 77, 90, 16, "che_event_척사", [16217, 32069, 580175, 62144, 44980], 0, "default.jpg", 97, "che_260507_tb0I", 210, ["hall:betrate", "hall:dex3", "hall:killrate_person", "hall:occupied"]], + ["97·김야곤", 90, 80, 15, "che_event_저격", [36687, 739761, 43915, 50136, 17894], 1, "8b70d1b5.jpg?=20260301", 97, "che_260507_tb0I", 218, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex2", "hall:killcrew_person", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:winrate"]], + ["97·사스케", 76, 15, 89, "che_event_필살", [38401, 54913, 34866, 453048, 42896], 1, "1870de1b.jpg?=20260130", 97, "che_260507_tb0I", 219, ["chief:9", "hall:dedication", "hall:dex4"]], + ["97·1557", 78, 86, 17, "che_event_척사", [60065, 436004, 14883, 31195, 16784], 1, "e122674d.png?=20260508", 97, "che_260507_tb0I", 220, ["hall:dex2", "hall:ttrate"]], + ["97·로비", 15, 73, 93, "che_event_척사", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 97, "che_260507_tb0I", 258, ["hall:tirate", "hall:ttrate"]], + ["97·Navy마초", 77, 16, 87, "che_event_신산", [31087, 36962, 45332, 344482, 18382], 1, "37644ed3.png?=20230831", 97, "che_260507_tb0I", 263, ["hall:tirate"]], + ["97·불장", 77, 86, 15, "che_event_징병", [62978, 207865, 21387, 21181, 5183], 0, "default.jpg", 97, "che_260507_tb0I", 271, ["hall:dex2"]], + ["97·우유", 77, 87, 17, "che_event_돌격", [519619, 27666, 53603, 76191, 30298], 0, "default.jpg", 97, "che_260507_tb0I", 307, ["hall:dex1", "hall:ttrate"]], + ["97·지각셀레미", 76, 15, 90, "che_event_집중", [22381, 13804, 9615, 277887, 0], 1, "91c55fbe.jpg?=20260205", 97, "che_260507_tb0I", 318, ["hall:tirate"]], + ["97·바테카", 15, 73, 92, "che_event_집중", [0, 0, 0, 0, 0], 0, "default.jpg", 97, "che_260507_tb0I", 392, ["hall:dedication"]], + ["98·흑인", 91, 83, 15, "che_event_저격", [572727, 316758, 291210, 161537, 41821], 1, "9cf91e24.png?=20260528", 98, "che_260528_bH1D", 12, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:winrate"]], + ["98·쌍화차", 78, 68, 13, "che_event_견고", [433802, 21480, 55819, 65585, 12680], 1, "9435849f.jpg?=20260528", 98, "che_260528_bH1D", 18, ["hall:betrate", "hall:dex1"]], + ["98·모리아 루루카", 80, 92, 15, "che_event_저격", [83320, 1062462, 71218, 166892, 73688], 1, "a81e2a4c.png?=20260528", 98, "che_260528_bH1D", 19, ["hall:dex2", "hall:dex5", "hall:killrate_person"]], + ["98·삼모야호", 67, 13, 83, "che_event_필살", [35879, 17316, 41361, 690414, 47068], 0, "default.jpg", 98, "che_260528_bH1D", 21, ["chief:7", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:dex5", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tirate", "hall:ttrate", "hall:winrate"]], + ["98·MC배짱", 70, 81, 14, "che_event_필살", [67513, 32073, 674156, 77686, 41922], 1, "74c2a27b.jpg?=20260617", 98, "che_260528_bH1D", 23, ["hall:dex1", "hall:dex3", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["98·Hide_D", 67, 13, 81, "che_event_저격", [34207, 22656, 22531, 271143, 23831], 1, "4569d848.png?=20230612", 98, "che_260528_bH1D", 28, ["hall:dedication", "hall:tirate", "hall:ttrate"]], + ["98·감흥", 24, 77, 87, "che_event_저격", [34587, 466755, 25482, 72512, 32231], 1, "2a79fbad.jpg?=20260131", 98, "che_260528_bH1D", 32, ["hall:dex2"]], + ["98·호나", 80, 92, 15, "che_event_돌격", [443488, 54218, 442507, 152335, 43695], 0, "default.jpg", 98, "che_260528_bH1D", 33, ["hall:dex1", "hall:tsrate"]], + ["98·별 수호자 주하", 81, 68, 13, "che_event_위압", [37195, 538097, 35790, 42780, 23364], 1, "f6d0886e.jpg?=20260528", 98, "che_260528_bH1D", 36, ["hall:dex2", "hall:tlrate"]], + ["98·외심장", 81, 15, 92, "che_event_의술", [78141, 19248, 91240, 761617, 73539], 1, "36110cd.jpg?=20180826", 98, "che_260528_bH1D", 42, ["hall:dex5"]], + ["98·랜임장", 67, 83, 13, "che_event_필살", [54796, 723112, 67656, 56826, 20940], 0, "default.jpg", 98, "che_260528_bH1D", 49, ["chief:10", "hall:betwin", "hall:dex2", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:warnum", "hall:winrate"]], + ["98·냥냥냥", 85, 64, 13, "che_event_척사", [460587, 64949, 27259, 47849, 29817], 1, "d1615704.png?=20260530", 98, "che_260528_bH1D", 51, ["hall:dex1", "hall:dex2", "hall:tlrate"]], + ["98·네이", 103, 70, 15, "che_event_무쌍", [94835, 65432, 81037, 142957, 1408396], 0, "default.jpg", 98, "che_260528_bH1D", 55, ["hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["98·대교", 83, 64, 14, "che_event_필살", [27652, 37591, 526666, 57687, 30025], 1, "a53ab5ef.jpg?=20241010", 98, "che_260528_bH1D", 56, ["hall:dex3", "hall:tlrate"]], + ["98·냥떠러지", 80, 15, 96, "che_event_징병", [33775, 31164, 48139, 799929, 20312], 1, "2deacf0d.png?=20260528", 98, "che_260528_bH1D", 63, ["hall:dex4", "hall:tirate"]], + ["98·비열님", 82, 65, 14, "che_event_의술", [41210, 429990, 50724, 60065, 23947], 1, "fc09997e.webp?=20260527", 98, "che_260528_bH1D", 64, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:occupied", "hall:tlrate"]], + ["98·태블릿", 69, 13, 84, "che_event_징병", [30103, 26663, 25414, 684135, 23044], 1, "6273c578.jpg?=20260528", 98, "che_260528_bH1D", 67, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:warnum"]], + ["98·블라디레나 밀리제", 70, 78, 14, "che_event_무쌍", [11530, 40166, 386986, 51301, 10951], 1, "3ff5b554.png?=20260622", 98, "che_260528_bH1D", 68, ["hall:dex3", "hall:ttrate"]], + ["98·라이덴 슈가", 68, 83, 13, "che_event_필살", [66427, 50213, 318264, 45193, 18914], 1, "186bcf9b.jpg?=20260623", 98, "che_260528_bH1D", 69, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex3", "hall:experience", "hall:firenum", "hall:tsrate"]], + ["98·불여시", 67, 13, 82, "che_event_집중", [20508, 22077, 33071, 420053, 28635], 0, "default.jpg", 98, "che_260528_bH1D", 70, ["hall:dedication", "hall:tirate"]], + ["98·독구", 67, 13, 84, "che_event_필살", [41169, 27587, 78553, 829822, 34518], 1, "97fd9350.png?=20260528", 98, "che_260528_bH1D", 71, ["chief:12", "hall:dedication", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["98·크냥", 66, 13, 82, "che_event_의술", [43038, 29605, 40224, 417171, 21249], 0, "default.jpg", 98, "che_260528_bH1D", 72, ["hall:dedication", "hall:dex4", "hall:tirate", "hall:ttrate"]], + ["98·뤼엔", 98, 78, 15, "che_event_무쌍", [54691, 37414, 1543495, 49339, 30517], 1, "b04cbe44.png?=20260601", 98, "che_260528_bH1D", 73, ["hall:dex3", "hall:firenum", "hall:killcrew", "hall:killcrew_person", "hall:occupied", "hall:tlrate", "hall:warnum"]], + ["98·카이스트", 79, 16, 95, "che_event_집중", [34834, 96518, 43247, 1064288, 29447], 1, "e7e27cd6.jpg?=20221125", 98, "che_260528_bH1D", 74, ["hall:dex4", "hall:killrate", "hall:killrate_person"]], + ["98·독나미", 68, 13, 82, "che_event_신중", [33156, 13499, 59686, 645876, 34366], 1, "e2846a3c.png?=20260528", 98, "che_260528_bH1D", 75, ["chief:9", "hall:betrate", "hall:dex4", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["98·척", 79, 98, 15, "che_event_징병", [99279, 46922, 972223, 69724, 33410], 1, "7cb75480.png?=20221202", 98, "che_260528_bH1D", 76, ["hall:dex3", "hall:tsrate"]], + ["98·플로로", 82, 92, 15, "che_event_징병", [1156783, 7703, 196665, 135383, 45702], 0, "default.jpg", 98, "che_260528_bH1D", 77, ["hall:dex1", "hall:experience", "hall:occupied"]], + ["98·임사영", 67, 13, 81, "che_event_집중", [14991, 13456, 66227, 419064, 31046], 1, "918d304e.jpg?=20251209", 98, "che_260528_bH1D", 79, ["hall:tirate", "hall:ttrate"]], + ["98·냥냥 아님", 82, 95, 15, "che_event_견고", [900200, 29723, 610417, 81050, 39916], 1, "1b4c9b05.png?=20260528", 98, "che_260528_bH1D", 80, ["hall:betrate", "hall:dex1", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum"]], + ["98·앵벌스 친구 독구", 100, 72, 15, "che_event_공성", [31151, 0, 15746, 4883, 595718], 1, "ffdb3d79.png?=20260622", 98, "che_260528_bH1D", 81, ["chief:6", "hall:dex5", "hall:killrate", "hall:occupied", "hall:tlrate", "hall:winrate"]], + ["98·북오더", 71, 82, 13, "che_event_필살", [28142, 25236, 905036, 38333, 12854], 1, "f9e4b416.gif?=20240717", 98, "che_260528_bH1D", 82, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:tsrate", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["98·에이메스", 94, 78, 15, "che_event_견고", [115338, 39221, 625926, 138214, 19299], 1, "e2ed861a.png?=20260528", 98, "che_260528_bH1D", 84, ["hall:dex3", "hall:tlrate"]], + ["98·불패", 66, 85, 13, "che_event_징병", [1000260, 22874, 77666, 159131, 38693], 1, "d9780168.jpg?=20260507", 98, "che_260528_bH1D", 85, ["chief:8", "hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:tsrate", "hall:ttrate", "hall:warnum"]], + ["98·해부학적자세", 80, 93, 15, "che_event_징병", [226149, 380921, 433030, 131797, 60056], 1, "50015fed.jpg?=20260528", 98, "che_260528_bH1D", 86, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex1", "hall:dex2", "hall:dex5"]], + ["98·ㅊㄹㅊㄹ", 80, 94, 15, "che_event_척사", [81391, 73586, 733969, 94531, 16957], 1, "63f1c106.png?=20230223", 98, "che_260528_bH1D", 87, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:tsrate"]], + ["98·장원영", 80, 15, 95, "che_event_집중", [49875, 42039, 48355, 1083376, 80747], 1, "837ecd58.jpg?=20260313", 98, "che_260528_bH1D", 88, ["hall:dex4", "hall:dex5", "hall:experience", "hall:ttrate"]], + ["98·독거노인", 88, 60, 13, "che_event_징병", [51165, 32651, 95581, 142909, 598939], 1, "ef3c84a6.png?=20260528", 98, "che_260528_bH1D", 89, ["chief:11", "hall:betgold", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex5", "hall:occupied", "hall:tlrate", "hall:ttrate"]], + ["98·Navy마초", 68, 78, 14, "che_event_징병", [56188, 372983, 19836, 57601, 34657], 1, "37644ed3.png?=20230831", 98, "che_260528_bH1D", 91, ["hall:dex2", "hall:tsrate"]], + ["98·TIME", 80, 94, 17, "che_event_격노", [713718, 23202, 31261, 69206, 17402], 0, "default.jpg", 98, "che_260528_bH1D", 100, ["hall:dex1", "hall:tsrate"]], + ["98·강유", 90, 16, 82, "che_event_의술", [65322, 14841, 85703, 755175, 26325], 1, "79e150d0.jpg?=20230921", 98, "che_260528_bH1D", 103, ["hall:tlrate"]], + ["98·로비", 13, 63, 85, "che_event_반계", [0, 0, 0, 0, 0], 1, "71751125.png?=20240823", 98, "che_260528_bH1D", 174, ["hall:dedication", "hall:experience", "hall:tirate"]], + ["98·마카다미아", 82, 91, 16, "che_event_필살", [32491, 87221, 1185503, 155644, 48380], 0, "default.jpg", 98, "che_260528_bH1D", 190, ["hall:betrate", "hall:dex3", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["98·미스티", 81, 16, 96, "che_event_집중", [32052, 31717, 35052, 1449396, 20130], 1, "1aadcba.png?=20180908", 98, "che_260528_bH1D", 197, ["hall:dex4", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:warnum", "hall:winrate"]], + ["98·또각셀레미", 81, 16, 92, "che_event_필살", [52512, 17331, 66481, 882227, 55622], 1, "91c55fbe.jpg?=20260205", 98, "che_260528_bH1D", 206, ["chief:5", "hall:dex4"]], + ["98·한 살 덜 먹은 독구", 15, 77, 97, "che_event_의술", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 98, "che_260528_bH1D", 292, ["hall:dedication"]], + ["98·소세지야채볶음", 15, 73, 97, "che_event_신중", [0, 0, 0, 0, 0], 0, "default.jpg", 98, "che_260528_bH1D", 315, ["hall:dedication", "hall:tirate"]], + ["99·이", 80, 92, 16, "che_event_무쌍", [884005, 48361, 30834, 92418, 50234], 1, "f7998c26.jpg?=20260703", 99, "che_260702_i0Ri", 6, ["hall:betrate", "hall:dex1", "hall:killcrew_person", "hall:tsrate", "hall:warnum"]], + ["99·Navy마초", 81, 89, 16, "che_event_필살", [758043, 59865, 29462, 104255, 73452], 1, "37644ed3.png?=20230831", 99, "che_260702_i0Ri", 9, ["hall:dex1", "hall:dex2", "hall:dex5", "hall:occupied", "hall:ttrate"]], + ["99·유여", 88, 16, 82, "che_event_신산", [115340, 33767, 45925, 589699, 32469], 0, "default.jpg", 99, "che_260702_i0Ri", 10, ["hall:tlrate"]], + ["99·김야곤", 91, 80, 16, "che_event_무쌍", [222937, 56644, 1293540, 71800, 60504], 1, "3a1f3f25.jpg?=20260702", 99, "che_260702_i0Ri", 12, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["99·와일드플라워", 77, 15, 92, "che_event_집중", [38896, 7567, 38222, 453673, 63244], 0, "default.jpg", 99, "che_260702_i0Ri", 16, ["chief:9", "hall:firenum"]], + ["99·무지장", 13, 60, 87, "che_event_척사", [0, 0, 0, 0, 0], 0, "default.jpg", 99, "che_260702_i0Ri", 17, ["hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:experience", "hall:tirate", "hall:ttrate"]], + ["99·바나낫", 78, 96, 15, "che_event_징병", [179178, 57946, 785577, 65696, 42720], 1, "073c8444.gif?=20251025", 99, "che_260702_i0Ri", 21, ["hall:betgold", "hall:betrate", "hall:betwingold", "hall:dex3", "hall:killcrew", "hall:killcrew_person", "hall:tsrate"]], + ["99·외심장", 76, 97, 15, "che_event_필살", [983587, 134599, 177069, 78413, 54167], 1, "36110cd.jpg?=20180826", 99, "che_260702_i0Ri", 24, ["chief:12", "hall:dedication", "hall:dex1", "hall:dex2", "hall:dex3", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["99·대교", 96, 76, 15, "che_event_견고", [822516, 9604, 34597, 104599, 40101], 1, "a53ab5ef.jpg?=20241010", 99, "che_260702_i0Ri", 31, ["chief:6", "hall:dedication", "hall:dex1", "hall:tlrate"]], + ["99·야치요", 79, 15, 94, "che_event_집중", [60282, 57093, 29309, 1032777, 64881], 1, "c0da6ec8.jpg?=20260702", 99, "che_260702_i0Ri", 32, ["hall:dex4", "hall:dex5", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["99·커리", 94, 76, 15, "che_event_징병", [709781, 5048, 21584, 113922, 24189], 1, "4b9e8b43.jpg?=20260703", 99, "che_260702_i0Ri", 34, ["hall:dex1", "hall:tlrate"]], + ["99·99대장", 81, 89, 16, "che_event_무쌍", [1058649, 6991, 70582, 118434, 78200], 1, "31756edd.png?=20260701", 99, "che_260702_i0Ri", 38, ["hall:dex1", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:ttrate"]], + ["99·골든부츠 독구", 15, 73, 97, "che_event_징병", [0, 0, 0, 0, 0], 1, "5283daf7.png?=20240511", 99, "che_260702_i0Ri", 39, ["hall:tirate"]], + ["99·궁도부", 92, 79, 15, "che_event_척사", [74233, 678055, 11850, 58407, 41706], 1, "48e54643.png?=20260703", 99, "che_260702_i0Ri", 43, ["hall:dex2", "hall:tlrate"]], + ["99·냥냥", 78, 15, 89, "che_event_집중", [44173, 37260, 65242, 633281, 47005], 1, "e66333b8.png?=20260620", 99, "che_260702_i0Ri", 48, ["hall:tirate"]], + ["99·임사영", 81, 91, 15, "che_event_격노", [691881, 9675, 47998, 139959, 15778], 1, "918d304e.jpg?=20251209", 99, "che_260702_i0Ri", 50, ["hall:dex1", "hall:tsrate"]], + ["99·NK", 81, 90, 16, "che_event_필살", [724917, 10243, 22131, 104070, 36984], 1, "b1dd7d45.jpg?=20260205", 99, "che_260702_i0Ri", 52, ["hall:dex1", "hall:ttrate"]], + ["99·칠무해원", 82, 91, 15, "che_event_필살", [105228, 688432, 23124, 84541, 19841], 0, "default.jpg", 99, "che_260702_i0Ri", 54, ["hall:betrate", "hall:dex2", "hall:tsrate", "hall:winrate"]], + ["99·수장", 79, 92, 15, "che_event_척사", [61227, 13917, 619892, 101076, 30524], 1, "be74646a.jpg?=20260702", 99, "che_260702_i0Ri", 55, ["hall:dex3", "hall:killrate", "hall:killrate_person"]], + ["99·ㅁ.ㅁ", 90, 15, 79, "che_event_징병", [114087, 74294, 69113, 743964, 100703], 0, "default.jpg", 99, "che_260702_i0Ri", 56, ["hall:betwin", "hall:dex2", "hall:dex4", "hall:dex5", "hall:ttrate"]], + ["99·나랑사귀자해원", 79, 16, 93, "che_event_필살", [97836, 22632, 33153, 1156682, 41510], 1, "5424a3e3.jpg?=20260702", 99, "che_260702_i0Ri", 58, ["hall:betrate", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["99·카이스트", 79, 15, 93, "che_event_척사", [43715, 8061, 31598, 507194, 58424], 1, "e7e27cd6.jpg?=20221125", 99, "che_260702_i0Ri", 59, ["hall:dedication", "hall:tirate"]], + ["99·불패", 76, 15, 95, "che_event_집중", [48792, 26632, 60859, 800141, 60080], 1, "d9780168.jpg?=20260507", 99, "che_260702_i0Ri", 60, ["chief:5", "hall:dedication", "hall:dex4", "hall:experience", "hall:killrate", "hall:killrate_person", "hall:tirate"]], + ["99·구구가가", 98, 73, 15, "che_event_필살", [85245, 22589, 12038, 74325, 588170], 1, "a18fc03f.webp?=20260724", 99, "che_260702_i0Ri", 61, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:tlrate"]], + ["99·셀레미", 78, 16, 94, "che_event_신중", [64766, 20712, 13208, 810093, 47518], 1, "91c55fbe.jpg?=20260205", 99, "che_260702_i0Ri", 62, ["hall:dex4", "hall:killnum", "hall:occupied", "hall:tirate", "hall:winrate"]], + ["99·갑옷", 86, 60, 13, "che_event_공성", [16835, 9232, 14940, 15034, 622474], 1, "d611c6fb.png?=20260624", 99, "che_260702_i0Ri", 63, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killrate", "hall:occupied", "hall:tlrate"]], + ["99·사스케", 77, 16, 93, "che_event_환술", [61435, 9910, 14414, 655230, 37361], 1, "1870de1b.jpg?=20260130", 99, "che_260702_i0Ri", 64, ["hall:dex4", "hall:tirate"]], + ["99·비", 79, 15, 91, "che_event_집중", [40927, 16898, 32896, 663468, 57826], 1, "530b20f6.jpg?=20260723", 99, "che_260702_i0Ri", 65, ["chief:7", "hall:betgold", "hall:betwin", "hall:dedication", "hall:dex4"]], + ["99·북오더", 77, 94, 15, "che_event_필살", [106432, 602231, 40068, 136094, 109609], 1, "f9e4b416.gif?=20240717", 99, "che_260702_i0Ri", 66, ["chief:10", "hall:betgold", "hall:betwingold", "hall:dex2", "hall:dex5", "hall:tsrate"]], + ["99·구구", 78, 16, 99, "che_event_징병", [55994, 106010, 54322, 1782728, 80846], 1, "d8e06557.jpg?=20260702", 99, "che_260702_i0Ri", 67, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex2", "hall:dex4", "hall:dex5", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:occupied", "hall:tirate", "hall:warnum", "hall:winrate"]], + ["99·ㅊㄹㅊㄹ", 78, 94, 15, "che_event_척사", [663334, 8336, 47882, 86124, 54646], 1, "63f1c106.png?=20230223", 99, "che_260702_i0Ri", 68, ["hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:tsrate"]], + ["99·왜심장", 79, 92, 15, "che_event_필살", [55472, 85058, 822804, 88135, 76031], 1, "436000da.png?=20260702", 99, "che_260702_i0Ri", 69, ["chief:11", "hall:betgold", "hall:betrate", "hall:betwin", "hall:betwingold", "hall:dedication", "hall:dex2", "hall:dex3", "hall:dex5", "hall:firenum", "hall:killrate", "hall:killrate_person", "hall:winrate"]], + ["99·뀨", 16, 96, 17, "che_event_척사", [0, 0, 0, 0, 0], 1, "9afe1e7c.jpg?=20260703", 99, "che_260702_i0Ri", 70, ["hall:tsrate"]], + ["99·독구", 15, 100, 70, "che_event_신산", [0, 0, 0, 0, 0], 1, "97fd9350.png?=20260528", 99, "che_260702_i0Ri", 71, ["hall:betrate", "hall:firenum", "hall:tsrate"]], + ["99·킬라플로르", 78, 92, 15, "che_event_견고", [478436, 25101, 17136, 82102, 37630], 0, "default.jpg", 99, "che_260702_i0Ri", 72, ["hall:tsrate"]], + ["99·병리학적자세", 79, 15, 96, "che_event_필살", [76093, 26601, 63173, 1162535, 39373], 1, "3679089.jpg?=20180629", 99, "che_260702_i0Ri", 73, ["hall:betgold", "hall:betwin", "hall:betwingold", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:ttrate", "hall:warnum", "hall:winrate"]], + ["99·해원나라여행", 91, 76, 16, "che_event_징병", [637267, 73560, 66129, 82297, 21416], 1, "3d4ed095.png?=20260703", 99, "che_260702_i0Ri", 74, ["hall:dex2", "hall:tlrate", "hall:warnum"]], + ["99·지에엥", 81, 88, 15, "che_event_필살", [70535, 421641, 11583, 42145, 14396], 1, "cde6f3f3.png?=20260702", 99, "che_260702_i0Ri", 75, ["hall:dex2"]], + ["99·제갈여포", 80, 16, 93, "che_event_척사", [77429, 45644, 28347, 1364170, 56585], 1, "e37901c4.jpg?=20260712", 99, "che_260702_i0Ri", 80, ["hall:betrate", "hall:dex4", "hall:experience", "hall:killcrew", "hall:killcrew_person", "hall:killnum", "hall:killrate", "hall:killrate_person", "hall:occupied", "hall:warnum", "hall:winrate"]], + ["99·단단(丹丹)", 83, 87, 15, "che_event_저격", [17349, 6934, 554247, 55415, 25705], 1, "38705d90.jpg?=20260707", 99, "che_260702_i0Ri", 81, ["hall:dedication", "hall:dex3"]], + ["99·모훈사출출", 94, 78, 15, "che_event_무쌍", [957074, 12274, 77850, 93202, 53759], 0, "default.jpg", 99, "che_260702_i0Ri", 83, ["hall:dex1", "hall:dex3", "hall:killnum", "hall:killrate_person", "hall:tlrate", "hall:ttrate"]], + ["99·강유", 90, 15, 80, "che_event_척사", [32487, 8583, 23895, 584241, 21621], 1, "79e150d0.jpg?=20230921", 99, "che_260702_i0Ri", 84, ["hall:tlrate"]], + ["99·나나야 시키", 78, 92, 15, "che_event_의술", [77100, 23090, 661081, 88030, 64294], 1, "62e410b1.gif?=20250605", 99, "che_260702_i0Ri", 208, ["chief:8", "hall:betrate", "hall:dedication", "hall:dex3", "hall:dex5", "hall:firenum"]], + ["99·스텝체인", 81, 88, 16, "che_event_견고", [739178, 11475, 58929, 105120, 43175], 0, "default.jpg", 99, "che_260702_i0Ri", 212, ["hall:dex1", "hall:ttrate"]], + ["99·Star", 77, 92, 15, "che_event_무쌍", [599103, 4245, 25111, 66420, 24032], 0, "default.jpg", 99, "che_260702_i0Ri", 215, ["hall:tsrate"]], + ["99·최진리", 78, 15, 91, "che_event_필살", [15046, 21156, 36500, 393557, 31382], 1, "c2356432.png?=20250929", 99, "che_260702_i0Ri", 244, ["hall:tirate"]], + ["99·척", 79, 89, 15, "che_event_견고", [72832, 54943, 763337, 101526, 59694], 1, "7cb75480.png?=20221202", 99, "che_260702_i0Ri", 257, ["hall:dex3"]], + ["99·서희", 94, 15, 76, "che_event_환술", [54686, 31666, 47644, 536433, 31332], 0, "default.jpg", 99, "che_260702_i0Ri", 262, ["hall:tlrate"]], + ["99·뭐야", 80, 90, 15, "che_event_징병", [518426, 42481, 270765, 134884, 30462], 0, "default.jpg", 99, "che_260702_i0Ri", 340, ["hall:dex3", "hall:warnum"]], + ["99·야유해원", 17, 76, 90, "che_event_신산", [0, 0, 0, 0, 0], 1, "f92a57fd.jpg?=20260706", 99, "che_260702_i0Ri", 398, ["hall:ttrate"]], + ["99·푸른양귀비", 17, 73, 89, "che_event_징병", [3547, 7060, 1980, 52049, 18068], 0, "default.jpg", 99, "che_260702_i0Ri", 524, ["hall:dedication"]] + ] +} diff --git a/resources/scenario/scenario_914.json b/resources/scenario/scenario_914.json new file mode 100644 index 00000000..482d1f09 --- /dev/null +++ b/resources/scenario/scenario_914.json @@ -0,0 +1,134 @@ +{ + "title": "【공백지】 요양 ", + "startYear": 180, + "map": { + "mapName": "miniche" + }, + "history": ["●180년 1월:【이벤트】쉬었다 가는 깃수입니다."], + "const": { + "joinRuinedNPCProp": 0, + "npcBanMessageProb": 0.005, + "defaultMaxGeneral": 800, + "allItems": { + "horse": { + "che_명마_01_노기": 0, + "che_명마_02_조랑": 0, + "che_명마_03_노새": 0, + "che_명마_04_나귀": 0, + "che_명마_05_갈색마": 0, + "che_명마_06_흑색마": 0, + "che_명마_07_백마": 2, + "che_명마_07_기주마": 2, + "che_명마_07_오환마": 2, + "che_명마_07_백상": 2, + "che_명마_08_양주마": 2, + "che_명마_08_흉노마": 2, + "che_명마_09_과하마": 2, + "che_명마_09_의남백마": 2, + "che_명마_10_대완마": 2, + "che_명마_10_옥추마": 2, + "che_명마_11_서량마": 2, + "che_명마_11_화종마": 2, + "che_명마_12_사륜거": 2, + "che_명마_12_옥란백용구": 2, + "che_명마_13_절영": 2, + "che_명마_13_적로": 2, + "che_명마_14_적란마": 2, + "che_명마_14_조황비전": 2, + "che_명마_15_한혈마": 2, + "che_명마_15_적토마": 2 + }, + "weapon": { + "che_무기_01_단도": 0, + "che_무기_02_단궁": 0, + "che_무기_03_단극": 0, + "che_무기_04_목검": 0, + "che_무기_05_죽창": 0, + "che_무기_06_소부": 0, + "che_무기_07_동추": 2, + "che_무기_07_철편": 2, + "che_무기_07_철쇄": 2, + "che_무기_07_맥궁": 2, + "che_무기_08_유성추": 2, + "che_무기_08_철질여골": 2, + "che_무기_09_쌍철극": 2, + "che_무기_09_동호비궁": 2, + "che_무기_10_삼첨도": 2, + "che_무기_10_대부": 2, + "che_무기_11_고정도": 2, + "che_무기_11_이광궁": 2, + "che_무기_12_철척사모": 2, + "che_무기_12_칠성검": 2, + "che_무기_13_사모": 2, + "che_무기_13_양유기궁": 2, + "che_무기_14_언월도": 2, + "che_무기_14_방천화극": 2, + "che_무기_15_청홍검": 2, + "che_무기_15_의천검": 2 + }, + "book": { + "che_서적_01_효경전": 0, + "che_서적_02_회남자": 0, + "che_서적_03_변도론": 0, + "che_서적_04_건상역주": 0, + "che_서적_05_여씨춘추": 0, + "che_서적_06_사민월령": 0, + "che_서적_07_위료자": 2, + "che_서적_07_사마법": 2, + "che_서적_07_한서": 2, + "che_서적_07_논어": 2, + "che_서적_08_전론": 2, + "che_서적_08_사기": 2, + "che_서적_09_장자": 2, + "che_서적_09_역경": 2, + "che_서적_10_시경": 2, + "che_서적_10_구국론": 2, + "che_서적_11_상군서": 2, + "che_서적_11_춘추전": 2, + "che_서적_12_산해경": 2, + "che_서적_12_맹덕신서": 2, + "che_서적_13_관자": 2, + "che_서적_13_병법24편": 2, + "che_서적_14_한비자": 2, + "che_서적_14_오자병법": 2, + "che_서적_15_노자": 2, + "che_서적_15_손자병법": 2 + }, + "item": { + "che_치료_환약": 0, + "che_저격_수극": 0, + "che_사기_탁주": 0, + "che_훈련_청주": 0, + "che_계략_이추": 0, + "che_계략_향낭": 0, + "event_전투특기_격노": 0, + "event_전투특기_견고": 0, + "event_전투특기_공성": 0, + "event_전투특기_궁병": 0, + "event_전투특기_귀병": 0, + "event_전투특기_기병": 0, + "event_전투특기_돌격": 0, + "event_전투특기_무쌍": 0, + "event_전투특기_반계": 0, + "event_전투특기_보병": 0, + "event_전투특기_신산": 0, + "event_전투특기_신중": 0, + "event_전투특기_위압": 0, + "event_전투특기_의술": 0, + "event_전투특기_저격": 0, + "event_전투특기_집중": 0, + "event_전투특기_징병": 0, + "event_전투특기_척사": 0, + "event_전투특기_필살": 0, + "event_전투특기_환술": 0 + } + } + }, + "events": [ + ["month", 1000, ["or", ["Date", "==", null, 12], ["Date", "==", null, 6]], ["CreateManyNPC", 15, 10], ["DeleteEvent"]], + ["month", 1000, ["Date", "==", 181, 1], ["RaiseNPCNation"], ["DeleteEvent"]], + ["month", 999, ["Date", "==", 181, 1], ["OpenNationBetting", 4, 5000], ["OpenNationBetting", 1, 2000], ["DeleteEvent"]], + ["month", 1000, ["Date", "==", null, 1], ["ChangeCity", "all", { "trade": 100 }]], + ["month", 1000, ["Date", "==", null, 7], ["ChangeCity", "all", { "trade": 100 }]] + ] +} diff --git a/resources/scenario/scenario_915.json b/resources/scenario/scenario_915.json new file mode 100644 index 00000000..7f13c246 --- /dev/null +++ b/resources/scenario/scenario_915.json @@ -0,0 +1,25 @@ +{ + "title": "【공백지】 100기 올스타 클래식", + "startYear": 180, + "map": { + "mapName": "miniche", + "targetGeneralPool": "SPoolUnderU100", + "generalPoolAllowOption": ["stat", "ego", "picture"], + "centennialNpcDexTargetRatio": 0.4 + }, + "history": ["●180년 1월:【100기 이벤트】 역대 장수들이 평범한 능력으로 다시 모여, 지난 전성기의 힘과 서서히 동조하기 시작했다!"], + "const": { + "npcBanMessageProb": 0.005, + "defaultMaxGeneral": 800, + "uniqueTrialCoef": 2 + }, + "events": [ + ["month", 8000, true, ["AdvanceCentennialAllStar"]], + ["month", 1000, ["Date", "==", null, 12], ["CreateManyNPC", 100, 0], ["DeleteEvent"]], + ["month", 1000, ["Date", "==", 181, 1], ["RaiseNPCNation"], ["DeleteEvent"]], + ["destroy_nation", 1000, ["and", ["Date", ">=", 183, 1], ["RemainNation", "==", 1]], ["BlockScoutAction"], ["DeleteEvent"]], + ["month", 999, ["Date", "==", 181, 1], ["OpenNationBetting", 4, 5000], ["OpenNationBetting", 1, 2000], ["DeleteEvent"]], + ["month", 999, ["and", ["Date", ">=", 183, 1], ["RemainNation", "<=", 8]], ["OpenNationBetting", 1, 1000], ["DeleteEvent"]], + ["destroy_nation", 1000, ["and", ["Date", ">=", 183, 1], ["RemainNation", "==", 1]], ["BlockScoutAction"], ["DeleteEvent"]] + ] +}