|
|
|
@ -44,7 +44,13 @@ export class AiShovelPlanner { |
|
|
|
private _pickDig(ctx: AiPlannerContext, digs: MapGrid[]): MapGrid | null { |
|
|
|
private _pickDig(ctx: AiPlannerContext, digs: MapGrid[]): MapGrid | null { |
|
|
|
const policy = ctx.personality.shovelPolicy; |
|
|
|
const policy = ctx.personality.shovelPolicy; |
|
|
|
if (policy === AiShovelPolicyType.Type1) { |
|
|
|
if (policy === AiShovelPolicyType.Type1) { |
|
|
|
|
|
|
|
// 用「剩余可铲集合」作盐,避免整局死盯 digs[固定下标]
|
|
|
|
let x = (Math.floor(Number(ctx.profile.seed) || 0) >>> 0) || 1; |
|
|
|
let x = (Math.floor(Number(ctx.profile.seed) || 0) >>> 0) || 1; |
|
|
|
|
|
|
|
let salt = digs.length >>> 0; |
|
|
|
|
|
|
|
for (let i = 0; i < digs.length; i++) { |
|
|
|
|
|
|
|
salt = (salt * 131 + ((digs[i].Index | 0) + 1)) >>> 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
x ^= salt; |
|
|
|
x ^= x << 13; |
|
|
|
x ^= x << 13; |
|
|
|
x ^= x >>> 17; |
|
|
|
x ^= x >>> 17; |
|
|
|
x ^= x << 5; |
|
|
|
x ^= x << 5; |
|
|
|
|