-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathsim2.js
89 lines (87 loc) · 1.58 KB
/
sim2.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
export const initialState = {
player: {
weapon_equipped: false,
bullets: 0,
clips: 1
},
enemy: {
visible: false,
alive: true
}
};
export const actions = {
equipWeapon: {
condition: s => !s.player.weapon_equipped,
effect: s => {
s.player.weapon_equipped = true;
return s;
},
cost: s => 2
},
reload: {
condition: s => s.player.weapon_equipped && s.player.clips > 0,
effect: s => {
s.player.bullets += 6;
return s;
},
cost: s => 2
},
fire: {
condition: s =>
s.enemy.visible === true &&
s.player.weapon_equipped &&
s.player.bullets > 0,
effect: s => {
s.player.bullets--;
s.enemy.alive = false;
return s;
},
cost: s => 2
},
useTurret: {
condition: s => s.enemy.visible,
effect: s => {
s.enemy.alive = false;
return s;
},
cost: s => 10
},
knifeAttack: {
condition: s => s.enemy.visible,
effect: s => {
s.enemy.alive = false;
return s;
},
cost: s => 12
},
scout: {
condition: s => !s.enemy.visible,
effect: s => {
s.enemy.visible = true;
return s;
},
cost: s => 1
},
hide: {
condition: s => true,
effect: s => {
s.enemy.visible = false;
return s;
},
cost: s => 1
}
};
export const goals = {
killEnemy: {
label: "Kill Enemy",
validate: (prevState, nextState) => {
return nextState.enemy.alive === false;
}
},
hide: {
label: "Hide",
validate: (prev, next) => {
return next.enemy.visible === false;
}
}
};