-
Notifications
You must be signed in to change notification settings - Fork 0
/
chessSkill.js
66 lines (65 loc) · 2.23 KB
/
chessSkill.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
export default {
async delay(duration) {
return new Promise((resolve) => setTimeout(resolve, duration));
},
appendAttack(attack, receive, callBack) {
callBack(attack, receive);
},
async addAttack(chess, ourChessList, enemyChessList, callBack) {
const ourList = ourChessList.flat();
this.animation(chess, chess, 1);
ourList.forEach((e) => {
if (!e) return;
if (this.support.includes(e.race)) return;
if (!e.health) return;
if (e.fightAddition?.attack?.level >= 4) return;
this.animation(e, chess, 0);
const chessAttack = e.attack;
const chessAddition = e.fightAddition?.attack?.val || 0;
const chessAdditionLevel = e.fightAddition?.attack?.level
? e.fightAddition?.attack?.level + 1
: 1;
const additionPercent = [0, 0.15, 0.3, 0.5][chess.level];
const chessBattleSkill = e.element.querySelector(
".borard-col-batle-skill"
);
const additionAttack = Math.round(
(chessAttack + chessAddition) * additionPercent
);
e.setFightAddition({
val: additionAttack,
type: "attack",
items: chessAdditionLevel,
});
chessBattleSkill.style.backgroundImage = `url('./static/attack-icon-${chessAdditionLevel}.png')`;
});
await this.delay(1000);
},
async anyTreat(chess, ourChessList, enemyChessList, callBack) {
const ourList = ourChessList.flat();
this.animation(chess, chess, 1);
ourList.forEach((e) => {
if (!e) return;
if (this.support.includes(e.race)) return;
if (!e.health) return;
this.animation(e, chess, 0);
const treat = [0, 20, 50, 80][chess.level];
e.restore(treat);
});
await this.delay(1000);
},
async animation(boardItem, chess, backgroundIndex) {
const itemChildElement = boardItem.element;
const itemBuffElement = itemChildElement.querySelector(
".board-col-item-buff"
);
itemBuffElement.style.backgroundImage = `url('./static/${chess.effect[backgroundIndex]}.png')`;
itemBuffElement.style.height = "100%";
setTimeout(() => {
itemBuffElement.style.height = "0%";
}, 500);
},
anyAttck: ["appendAttack"],
anyAssist: ["addAttack", "anyTreat"],
support: ["medic", "drummer", "ninja"],
};