Added old files
This commit is contained in:
parent
9ae92803ce
commit
ef3620f4f9
86 changed files with 2157 additions and 0 deletions
103
sources/scripts/walkthrough.js
Normal file
103
sources/scripts/walkthrough.js
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
'use strict'
|
||||
|
||||
function Walkthrough () {
|
||||
this.is_running = false
|
||||
this.speed = 2500
|
||||
|
||||
this.start = function () {
|
||||
console.log('Started walkthrough')
|
||||
this.is_running = true
|
||||
}
|
||||
|
||||
this.run = function (force = false) {
|
||||
if (!this.is_running && !force) { return } // Idle
|
||||
if (donsol.player.health.value < 1) { this.is_running = false; return }
|
||||
|
||||
const results = this.rate_room(donsol.board.room)
|
||||
const target = results[0]
|
||||
|
||||
// Return if going to waste potions
|
||||
if (target && target[1] < -10 && donsol.player.can_escape()) {
|
||||
donsol.player.escape_room()
|
||||
return
|
||||
}
|
||||
|
||||
if (target) {
|
||||
donsol.board.room[target[[0]]].touch()
|
||||
}
|
||||
}
|
||||
|
||||
this.rate_room = function (room) {
|
||||
const a = []
|
||||
for (const id in room) {
|
||||
const card = room[id]
|
||||
if (card.is_flipped) { continue }
|
||||
a.push(this.rate_card(id, card))
|
||||
}
|
||||
return a.sort(function (a, b) {
|
||||
return a[1] - b[1]
|
||||
}).reverse()
|
||||
}
|
||||
|
||||
this.rate_card = function (id, card) {
|
||||
let rating = 0
|
||||
if (card.type == 'diamond') {
|
||||
if (donsol.player.shield.value > 0) {
|
||||
rating = donsol.player.shield.value - card.value
|
||||
} else {
|
||||
rating = card.value
|
||||
}
|
||||
}
|
||||
if (card.type == 'heart') {
|
||||
// Will waste
|
||||
if (!donsol.player.can_drink || donsol.player.health.value == 21) {
|
||||
rating = -card.value * 4
|
||||
} else {
|
||||
const after = clamp(donsol.player.health.value + card.value, 0, 21)
|
||||
const actual = (donsol.player.health.value - after)
|
||||
rating = actual - card.value
|
||||
}
|
||||
}
|
||||
if (card.type == 'clove' || card.type == 'spade') {
|
||||
const strongest = this.find_strongest(id)
|
||||
if (card.value < strongest.value) {
|
||||
rating = -strongest.value - card.value
|
||||
} else {
|
||||
rating = -card.value
|
||||
}
|
||||
|
||||
if (donsol.player.shield.limit > card.value) {
|
||||
rating = donsol.player.shield.limit
|
||||
}
|
||||
}
|
||||
// TODO: Run
|
||||
// TODO: Attack in descending order
|
||||
// TODO: Don't waste shields
|
||||
return [parseInt(id), rating, card]
|
||||
}
|
||||
|
||||
this.find_strongest = function () {
|
||||
let strongest = null
|
||||
|
||||
for (const id in donsol.board.room) {
|
||||
const card = donsol.board.room[id]
|
||||
if (card.type == 'diamond' || card.type == 'heart') { continue }
|
||||
if (card.is_flipped) { continue }
|
||||
if (!strongest) { strongest = card; continue }
|
||||
if (card.value > strongest.value) { strongest = card }
|
||||
}
|
||||
return strongest
|
||||
}
|
||||
|
||||
setInterval(() => { donsol.walkthrough.run() }, this.speed)
|
||||
function clamp (v, min, max) { return v < min ? min : v > max ? max : v }
|
||||
}
|
||||
|
||||
document.onkeyup = (e) => {
|
||||
if (e.ctrlKey && e.key.toLowerCase() == 'k') {
|
||||
donsol.walkthrough.start()
|
||||
}
|
||||
if (e.ctrlKey && e.key.toLowerCase() == 'l') {
|
||||
donsol.walkthrough.run(true)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue