-
Notifications
You must be signed in to change notification settings - Fork 2
/
missions.rb
91 lines (86 loc) · 2.72 KB
/
missions.rb
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
require 'yaml'
class Mission
attr_accessor :name, :type, :reward, :start, :success, :failure
attr_accessor :authors, :outcomes
def initialize(name, type, reward, start, success, failure)
@name = name
@type = type
@reward = reward
@start = start
@success = success
@failure = failure
end
#Alternative Constructor via yaml
def self.fromYAML(yamlInput)
@name = yamlInput["title"]
@type = yamlInput["name"]
@start = yamlInput["mission"]["info"]
end
def attempt(stats)
responses = [@start]
if @type == "DEX"
if rand() > 0.3
responses.push(@success)
responses.push(@reward + (stats[0] * 7))
else
responses.push(@failure)
responses.push(0 - @reward)
end
end
if @type == "STR"
if rand() > 0.3
responses.push(@success)
responses.push(@reward + ((stats[1] * 7) + (stats[3] * 2)))
else
responses.push(@failure)
responses.push(0 - @reward)
end
end
if @type == "INT"
if rand() > 0.3
responses.push(@success)
responses.push(@reward + ((stats[2] * 7) + (stats[3] * 2)))
else
responses.push(@failure)
responses.push(0 - @reward)
end
end
if @type == "LCK"
if rand() > 0.3
responses.push(@success)
responses.push(@reward + stats[3] * 7)
else
responses.push(@failure)
responses.push(0 - @reward)
end
end
if @type == "PSI"
if rand() > 0.3
responses.push(@success)
responses.push(@reward + stats[4] * 7)
else
responses.push(@failure)
responses.push(0 - @reward)
end
end
if @type == "ACC"
if rand() > 0.3
responses.push(@success)
responses.push(@reward + stats[5] * 7)
else
responses.push(@failure)
responses.push(0 - @reward)
end
end
responses
end
end
def loadMissions
tmpArray = []
for path in Dir["missions/**/*.yaml"]
puts "Loaded mission from file: #{path}"
mission = YAML.load_file(path)
tmpArray.push(Mission.new(mission["title"], mission["attr"], mission["reward"], mission["info"], mission["success"], mission["fail"]))
end
return tmpArray
end