-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelperFunctions.coffee
More file actions
120 lines (99 loc) · 2.92 KB
/
helperFunctions.coffee
File metadata and controls
120 lines (99 loc) · 2.92 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
@print = (text) ->
($ ".game").append text
@println = (text) ->
print text
print "<br>"
@setState = (newState) ->
@state = newState
run()
@loadState = ->
returnToState
@button = (newState, text) ->
println """<button onclick="setState('#{newState}')">
#{text}
</button>"""
@dropDown = (options) ->
result = "<select>"
for option in options
result += "<option>"
result += option
result += "</option>"
result += "</select>"
return result
@prob = (probability) ->
Math.random() <= probability
@inBounds = (x, y) ->
x >=0 and y >= 0 and x < 4 and y < 4 #The map is currently a 4x4
@randomAdjective = ->
["Mean", "Nasty", "Terrible", "Ugly"][Math.floor(Math.random() * 4)]
@showMap = () ->
if inBounds(@locY+1, @locX) and @map[@locY+1][@locX]
button @map[@locY+1][@locX], """Head south to the #{@map[@locY+1][@locX]}"""
if inBounds(@locY-1, @locX) and @map[@locY-1][@locX]
button @map[@locY-1][@locX], """Head north to the #{@map[@locY-1][@locX]}"""
if inBounds(@locY, @locX+1) and @map[@locY][@locX+1]
button @map[@locY][@locX+1], """Head east to the #{@map[@locY][@locX+1]}"""
if inBounds(@locY, @locX-1) and @map[@locY][@locX-1]
button @map[@locY][@locX-1], """head west to the #{@map[@locY][@locX-1]}"""
@visited = (state) ->
state in @statesEntered
# --- Stats ---
@printstat = (string) ->
($ ".stats").append "<br>"
($ ".stats").append string
@useInventoryItemN = (n) ->
@inventory[n].use()
console.log "TEST"
@convertAlignmentNumberToWord = (number) ->
if (number) == -1
return "Hate"
else if (number) == 0
return "neautral"
else if (number) == 1
return "Love"
else if (number) < -0.5
return "Strongly Dislike"
else if (number) < 0
return "Dislike"
else if (number) > 0.5
return "Strongly Like"
else if (number) > 0
return "Like"
else
return "ERROR, COMPUTER BLOWING UP IN 5... 4... 3... 2... 1... BOOOOOOOOOOOOOOOOOOM (EXPLOSION NOISES)"
@refresh = ->
#Refresh the stats:
($ ".stats").html("")
for enemy in @enemies
printstat ""
printstat "Enemy stats:"
printstat "HP: " + enemy.hp
printstat ""
printstat "Your stats:"
printstat "HP: #{@hp}"
printstat "MP: #{@mp}"
printstat "GP: #{@gp}"
printstat "XP: #{@xp}"
printstat ""
printstat "Your allignments:"
printstat "Zealon: #{convertAlignmentNumberToWord(@zealonAlignment)}"
printstat "Scilo: #{convertAlignmentNumberToWord(@sciloAlignment)}"
printstat "Ajurite: #{convertAlignmentNumberToWord(@ajuriteAlignment)}"
printstat "Weapon:"
printstat "#{@weapon}"
#Refresh the inventory:
($ ".inventory").html("")
($ ".inventory").append "Inventory"
($ ".inventory").append "<br>"
($ ".inventory").append "-------------"
($ ".inventory").append "<br>"
index = 0
for item in @inventory
($ ".inventory").append "<br>"
($ ".inventory").append """<button onclick="useInventoryItemN(#{index})">
#{index}
#{item.toString()}
</button>"""
index++
#Do it all again 10 milliseconds later:
setTimeout(refresh, 1000)