summaryrefslogtreecommitdiff
blob: e1cf7fe85193979f40c6f1da2f329c7b1853f48d (plain)
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
-module(character_instance).
-export
(
   [
      set_location/3,
      mod_health/3,
      is_dead/1, % is_alive is reserved.
      get_location/1,
      get_owner/1
   ]
).

-include("timed_cache_data.hrl").

set_location (CharInst, X, Y) ->
   CharInst#character_instance
   {
      x = X,
      y = Y
   }.

mod_health (CharInst, MaxHealth, HealthMod) ->
   NewHealth = (CharInst#character_instance.health + HealthMod),
   if
      (NewHealth < 0) ->
         CharInst#character_instance{ health = 0 };

      (NewHealth > MaxHealth) ->
         CharInst#character_instance{ health = MaxHealth };

      true ->
         CharInst#character_instance{ health = NewHealth }
   end.

is_dead (CharInst) -> (CharInst#character_instance.health == 0).

get_location (CharInst) ->
   {CharInst#character_instance.x, CharInst#character_instance.y}.

get_owner (CharInst) -> CharInst#character_instance.team.