Opportunist v4
Created 9/14/2026
Active
Plays nice by default, forgives the occasional betrayal so grudges don't spiral, cuts off anyone who's clearly hostile and quietly tests soft targets to see if they'll let it get away with defecting for good.
Avg score
8.381
Wins
1362
Losses
3986
Win rate
13.9%
Total battles: 9764
Score history
Avg: 8.381
Recent battles
- Poseidon vAlpha 5.5 vs 5.43 Opportunist v4
- Opportunist v4 4.85 vs 5.11 mahad kay
- Cobra 10 vs 10 Opportunist v4 Tie
- BeeBot3 9.98 vs 9.92 Opportunist v4
- Adaptative v3.1.1 10 vs 10 Opportunist v4 Tie
- Opportunist v4 10 vs 10 Tieseeeeeker Tie
- crownbotv2 10 vs 10 Opportunist v4 Tie
- MoveStealer V3.6 10 vs 10 Opportunist v4 Tie
- Opportunist v4 10 vs 10 NexBot V Tie
- Number 1 3.14 vs 8.26 Opportunist v4
- Opportunist v4 9.63 vs 9.76 IDK Bot
- Reactant V3.5.1 10 vs 10 Opportunist v4 Tie
- Opportunist v4 9.92 vs 9.98 The Detective (#4)
- Chicken banana π π 9.91 vs 9.78 Opportunist v4
- ApexUltimate v3 5.27 vs 5.21 Opportunist v4
- Unintended Defection bot 5.1 vs 4.87 Opportunist v4
- Opportunist v4 9.64 vs 9.84 defect until 2 cops
- detective_test 5.21 vs 4.92 Opportunist v4
- Opportunist v4 9.92 vs 9.98 The Generous
- Opportunist v4 10 vs 10 Test Tie
- Opportunist v4 10 vs 10 NexBot V Tie
- Opportunist v4 5.27 vs 5.33 pumpkinπππ
- Opportunist v4 10 vs 10 Always Cooperate Tie
- hershey bot mentos v3 10 vs 10 Opportunist v4 Tie
- PureRandomBotTrust+ 9.96 vs 9.83 Opportunist v4
- Abdullah Ezzat 9.65 vs 9.46 Opportunist v4
- Opportunist v4 9.82 vs 9.96 Mark3
- Smarty Pants V1 10 vs 10 Opportunist v4 Tie
- Opportunist v4 10 vs 10 apex predator v4 Tie
- ThisIsRandom 3.55 vs 6.52 Opportunist v4
- Opportunist v4 4.86 vs 5.07 defect until 2 cops
- Opportunist v4 6.68 vs 5.59 rollingdabeff
- Opportunist v4 9.85 vs 9.97 Lee Wrangler
- C! 10 vs 10 Opportunist v4 Tie
- Opportunist v4 9.76 vs 9.83 RanBot3004
- Ultimate Bot 5.37 vs 5.12 Opportunist v4
- JBot-2 5.28 vs 5.12 Opportunist v4
- detective_test 5.23 vs 4.91 Opportunist v4
- take a fuckin' guess 3.73 vs 6.06 Opportunist v4
- Opportunist v4 10 vs 10 Cobra Tie
- Opportunist v4 5.2 vs 5.25 pumpkinπππ
- Opportunist v4 10 vs 10 DR MUNDO v0.3 Tie
- evil meow limited edition 10 vs 10 Opportunist v4 Tie
- Opportunist v4 5.11 vs 5.33 Ultimate Bot
- Not my bot 5.43 vs 5.37 Opportunist v4
- Opportunist v4 9.91 vs 9.98 BeeBot2
- Opportunist v4 10 vs 10 glitch v2.1 for stag hunt Tie
- random5050 3.13 vs 6.73 Opportunist v4
- Opportunist v4 9.91 vs 9.98 BeeBot3
- Opportunist v4 9.81 vs 9.88 bigger memory
Source
export default function bot({ history, memory }) {
memory = memory ?? {
oppD: 0,
probes: 0,
brutal: false,
stalemate: 0,
forgiving: false,
rejections: 0,
}
const round = history.length
if (round === 0) return ["C", memory]
const last = history.at(-1)
if (last.opponent === "D") memory.oppD++
if (last.opponent !== "D") memory.stalemate = 0
if (memory.forgiving) {
memory.forgiving = false
if (last.opponent === "D") memory.rejections++
else memory.rejections = 0
}
if (memory.brutal) return ["D", memory]
if (memory.oppD === 0) return ["C", memory]
const prevOpponent = round >= 2 ? history.at(-2).opponent : null
const isolatedDefect = last.opponent === "D" && prevOpponent !== "D"
if (isolatedDefect) memory.probes++
if (memory.probes >= 3) {
memory.brutal = true
return ["D", memory]
}
const rate = memory.oppD / round
if (round >= 10 && rate > 0.75) {
if (memory.rejections >= 2 || Math.random() >= 0.05) return ["D", memory]
memory.forgiving = true
return ["C", memory]
}
if (last.opponent === "D" && prevOpponent === "D") {
memory.stalemate++
if (memory.rejections >= 2) return ["D", memory]
const forgiveChance = Math.min(0.4, 0.1 + memory.stalemate * 0.02)
if (Math.random() < forgiveChance) {
memory.stalemate = 0
memory.forgiving = true
return ["C", memory]
}
return ["D", memory]
}
return ["C", memory]
}