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
|
-module(sh_attributes).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-record
(
attributes,
{
constitution :: integer(),
dexterity :: integer(),
intelligence :: integer(),
mind :: integer(),
speed :: integer(),
strength :: integer()
}
).
-opaque type() :: #attributes{}.
-export_type([type/0]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Accessors
-export
(
[
get_constitution/1,
get_dexterity/1,
get_intelligence/1,
get_mind/1,
get_speed/1,
get_strength/1,
set_constitution/2,
set_dexterity/2,
set_intelligence/2,
set_mind/2,
set_speed/2,
set_strength/2
]
).
%%%% Accessors
-export
(
[
random/0
]
).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Accessors
-spec get_constitution (type()) -> integer().
get_constitution (Att) -> Att#attributes.constitution.
-spec get_dexterity (type()) -> integer().
get_dexterity (Att) -> Att#attributes.dexterity.
-spec get_intelligence (type()) -> integer().
get_intelligence (Att) -> Att#attributes.intelligence.
-spec get_mind (type()) -> integer().
get_mind (Att) -> Att#attributes.mind.
-spec get_speed (type()) -> integer().
get_speed (Att) -> Att#attributes.speed.
-spec get_strength (type()) -> integer().
get_strength (Att) -> Att#attributes.strength.
-spec set_constitution (integer(), type()) -> type().
set_constitution (Val, Att) -> Att#attributes{ constitution = Val }.
-spec set_dexterity (integer(), type()) -> type().
set_dexterity (Val, Att) -> Att#attributes{ dexterity = Val }.
-spec set_intelligence (integer(), type()) -> type().
set_intelligence (Val, Att) -> Att#attributes{ intelligence = Val }.
-spec set_mind (integer(), type()) -> type().
set_mind (Val, Att) -> Att#attributes{ mind = Val }.
-spec set_speed (integer(), type()) -> type().
set_speed (Val, Att) -> Att#attributes{ speed = Val }.
-spec set_strength (integer(), type()) -> type().
set_strength (Val, Att) -> Att#attributes{ strength = Val }.
-spec random () -> type().
random () ->
#attributes
{
constitution = sh_roll:percentage(),
dexterity = sh_roll:percentage(),
intelligence = sh_roll:percentage(),
mind = sh_roll:percentage(),
speed = sh_roll:percentage(),
strength = sh_roll:percentage()
}.
|