| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battlemap/struct')
| -rw-r--r-- | src/battlemap/struct/bm_attack.erl | 42 | ||||
| -rw-r--r-- | src/battlemap/struct/bm_battle_action.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/struct/bm_character.erl | 22 | ||||
| -rw-r--r-- | src/battlemap/struct/bm_character_turn_request.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/struct/bm_weapon.erl | 360 | 
5 files changed, 34 insertions, 394 deletions
diff --git a/src/battlemap/struct/bm_attack.erl b/src/battlemap/struct/bm_attack.erl index fe7d8b8..c647dae 100644 --- a/src/battlemap/struct/bm_attack.erl +++ b/src/battlemap/struct/bm_attack.erl @@ -47,13 +47,13 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -spec roll_precision     ( -      bm_statistics:type(), -      bm_statistics:type() +      sh_statistics:type(), +      sh_statistics:type()     )     -> precision().  roll_precision (AttackerStatistics, DefenderStatistics) -> -   DefenderDodges = bm_statistics:get_dodges(DefenderStatistics), -   AttackerAccuracy = bm_statistics:get_accuracy(AttackerStatistics), +   DefenderDodges = sh_statistics:get_dodges(DefenderStatistics), +   AttackerAccuracy = sh_statistics:get_accuracy(AttackerStatistics),     MissChance = max(0, (DefenderDodges - AttackerAccuracy)),     case sh_roll:percentage() of        X when (X =< MissChance) -> misses; @@ -63,31 +63,31 @@ roll_precision (AttackerStatistics, DefenderStatistics) ->  -spec roll_damage     ( -      bm_statistics:type(), -      bm_statistics:type() +      sh_statistics:type(), +      sh_statistics:type()     )     -> {non_neg_integer(), boolean()}.  roll_damage (AttackerStatistics, _DefenderStatistics) ->     {MinimumDamage, MaximumDamage} = -      bm_statistics:get_damages(AttackerStatistics), +      sh_statistics:get_damages(AttackerStatistics),     MaximumRoll = max(1, MaximumDamage - MinimumDamage),     BaseDamage = MinimumDamage + (rand:uniform(MaximumRoll) - 1), -   CriticalHitChance = bm_statistics:get_critical_hits(AttackerStatistics), +   CriticalHitChance = sh_statistics:get_critical_hits(AttackerStatistics),     case sh_roll:percentage() of        X when (X =< CriticalHitChance) -> {(BaseDamage * 2), true};        _ -> {BaseDamage, false}     end. --spec roll_parry (bm_statistics:type()) -> boolean(). +-spec roll_parry (sh_statistics:type()) -> boolean().  roll_parry (DefenderStatistics) -> -   DefenderParryChance = bm_statistics:get_parries(DefenderStatistics), +   DefenderParryChance = sh_statistics:get_parries(DefenderStatistics),     (sh_roll:percentage() =< DefenderParryChance).  -spec effect_of_attack     (        order(), -      bm_statistics:type(), -      bm_statistics:type(), +      sh_statistics:type(), +      sh_statistics:type(),        boolean()     )     -> type(). @@ -134,8 +134,8 @@ encode_precision (misses) -> <<"m">>.  -spec get_description_of     (        step(), -      bm_statistics:type(), -      bm_statistics:type() +      sh_statistics:type(), +      sh_statistics:type()     )     -> maybe_type().  get_description_of @@ -152,7 +152,7 @@ get_description_of     DefenderStatistics  ) ->     AttackerDoubleAttackChange = -      bm_statistics:get_double_hits(AttackerStatistics), +      sh_statistics:get_double_hits(AttackerStatistics),     case sh_roll:percentage() of        X when (X =< AttackerDoubleAttackChange) -> @@ -246,28 +246,28 @@ when  -spec get_sequence     (        non_neg_integer(), -      bm_weapon:type(), -      bm_weapon:type() +      sh_weapon:type(), +      sh_weapon:type()     )     -> list(step()).  get_sequence (AttackRange, AttackerWeapon, DefenderWeapon) ->     {AttackerDefenseRange, AttackerAttackRange} = -      bm_weapon:get_ranges(AttackerWeapon), +      sh_weapon:get_ranges(AttackerWeapon),     {DefenderDefenseRange, DefenderAttackRange} = -      bm_weapon:get_ranges(DefenderWeapon), +      sh_weapon:get_ranges(DefenderWeapon),     AttackerCanAttack = (AttackRange =< AttackerAttackRange),     AttackerCanAttack = true,     AttackerCanDefend =        (AttackerCanAttack and (AttackRange > AttackerDefenseRange)),     AttackerCanParry = -      (AttackerCanDefend and weapon:can_parry(AttackerWeapon)), +      (AttackerCanDefend and sh_weapon:can_parry(AttackerWeapon)),     DefenderCanAttack = (AttackRange =< DefenderAttackRange),     DefenderCanDefend =        (DefenderCanAttack and (AttackRange > DefenderDefenseRange)),     DefenderCanParry = -      (DefenderCanDefend and weapon:can_parry(DefenderWeapon)), +      (DefenderCanDefend and sh_weapon:can_parry(DefenderWeapon)),     First = {first, DefenderCanParry},     Second = {second, DefenderCanParry}, diff --git a/src/battlemap/struct/bm_battle_action.erl b/src/battlemap/struct/bm_battle_action.erl index abdc1c6..9f9b50f 100644 --- a/src/battlemap/struct/bm_battle_action.erl +++ b/src/battlemap/struct/bm_battle_action.erl @@ -92,7 +92,7 @@ can_follow (switch_weapon, attack) -> true;  can_follow (move, attack) -> true;  can_follow (_, _) -> false. --spec get_path (type()) -> list(direction:type()). +-spec get_path (type()) -> list(bm_direction:type()).  get_path (Action) when is_record(Action, move) ->     Action#move.path;  get_path (_) -> diff --git a/src/battlemap/struct/bm_character.erl b/src/battlemap/struct/bm_character.erl index e797b74..5552a02 100644 --- a/src/battlemap/struct/bm_character.erl +++ b/src/battlemap/struct/bm_character.erl @@ -15,8 +15,8 @@        icon :: binary(),        portrait :: binary(),        attributes :: sh_attributes:type(), -      statistics :: bm_statistics:type(), -      weapon_ids :: {bm_weapon:id(), bm_weapon:id()}, +      statistics :: sh_statistics:type(), +      weapon_ids :: {sh_weapon:id(), sh_weapon:id()},        location :: {non_neg_integer(), non_neg_integer()},        current_health :: non_neg_integer(),        active :: boolean() @@ -78,8 +78,8 @@     )     -> {non_neg_integer(), non_neg_integer()}.  find_random_location (BattlemapWidth, BattlemapHeight, ForbiddenLocations) -> -   X = roll:between(0, (BattlemapWidth - 1)), -   Y = roll:between(0, (BattlemapHeight - 1)), +   X = sh_roll:between(0, (BattlemapWidth - 1)), +   Y = sh_roll:between(0, (BattlemapHeight - 1)),     IsForbidden = lists:member({X, Y}, ForbiddenLocations), @@ -117,10 +117,10 @@ get_portrait (Char) -> Char#character.portrait.  -spec get_attributes (type()) -> sh_attributes:type().  get_attributes (Char) -> Char#character.attributes. --spec get_weapon_ids (type()) -> {bm_weapon:id(), bm_weapon:id()}. +-spec get_weapon_ids (type()) -> {sh_weapon:id(), sh_weapon:id()}.  get_weapon_ids (Char) -> Char#character.weapon_ids. --spec get_statistics (type()) -> bm_statistics:type(). +-spec get_statistics (type()) -> sh_statistics:type().  get_statistics (Char) -> Char#character.statistics.  -spec get_location (type()) -> {non_neg_integer(), non_neg_integer()}. @@ -171,7 +171,7 @@ set_is_active (Active, Char) ->  -spec set_weapon_ids     ( -      {bm_weapon:id(), bm_weapon:id()}, +      {sh_weapon:id(), sh_weapon:id()},        type()     )     -> type(). @@ -183,7 +183,7 @@ set_weapon_ids (WeaponIDs, Char) ->  -spec set_statistics     ( -      bm_statistics:type(), +      sh_statistics:type(),        type()     )     -> type(). @@ -206,9 +206,9 @@ set_statistics (Stats, Char) ->  random (ID, OwnerID, BattlemapWidth, BattlemapHeight, ForbiddenLocations) ->     Location =        find_random_location(BattlemapWidth, BattlemapHeight, ForbiddenLocations), -   WeaponIDs = {bm_weapon:random_id(), bm_weapon:random_id()}, +   WeaponIDs = {sh_weapon:random_id(), sh_weapon:random_id()},     Attributes = sh_attributes:random(), -   Statistics = bm_statistics:new(Attributes, WeaponIDs), +   Statistics = sh_statistics:new(Attributes, WeaponIDs),     IDAsListString = integer_to_list(ID),     IDAsBinaryString = list_to_binary(IDAsListString), @@ -223,7 +223,7 @@ random (ID, OwnerID, BattlemapWidth, BattlemapHeight, ForbiddenLocations) ->        weapon_ids = WeaponIDs,        statistics = Statistics,        location = Location, -      current_health = bm_statistics:get_health(Statistics), +      current_health = sh_statistics:get_health(Statistics),        active = false     }. diff --git a/src/battlemap/struct/bm_character_turn_request.erl b/src/battlemap/struct/bm_character_turn_request.erl index d141d7e..f922211 100644 --- a/src/battlemap/struct/bm_character_turn_request.erl +++ b/src/battlemap/struct/bm_character_turn_request.erl @@ -68,7 +68,7 @@ decode (Map) ->        actions = Actions     }. --spec get_player_id (type()) -> player:id(). +-spec get_player_id (type()) -> bm_player:id().  get_player_id (Request) -> Request#type.player_id.  -spec get_session_token (type()) -> binary(). diff --git a/src/battlemap/struct/bm_weapon.erl b/src/battlemap/struct/bm_weapon.erl deleted file mode 100644 index 6c05799..0000000 --- a/src/battlemap/struct/bm_weapon.erl +++ /dev/null @@ -1,360 +0,0 @@ --module(bm_weapon). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --opaque id() :: non_neg_integer(). - --type range_type() :: 'ranged' | 'melee'. --type range_mod() :: 'long' | 'short'. --type damage_type() :: 'slash' | 'pierce' | 'blunt'. --type damage_mod() :: 'heavy' | 'light'. - --record -( -   weapon, -   { -      id :: id(), -      name :: binary(), -      range_type :: range_type(), -      range_mod :: range_mod(), -      damage_type :: damage_type(), -      damage_mod :: damage_mod() -   } -). - --opaque type() :: #weapon{}. - --export_type([type/0, id/0]). --export_type -( -   [ -      range_type/0, -      range_mod/0, -      damage_type/0, -      damage_mod/0 -   ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%% Accessors --export -( -   [ -      get_id/1, -      get_range_type/1, -      get_ranges/1, -      get_damages/1 -   ] -). - --export -( -   [ -      random_id/0, -      from_id/1, -      can_parry/1, -      apply_to_attributes/2 -   ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec ranges_of_type -   ( -      range_type(), -      range_mod() -   ) -   -> {non_neg_integer(), non_neg_integer()}. -ranges_of_type (ranged, long) -> {2, 6}; -ranges_of_type (ranged, short) -> {1, 4}; -ranges_of_type (melee, long) -> {0, 2}; -ranges_of_type (melee, short) -> {0, 1}. - --spec damages_of_type -   ( -      range_type(), -      damage_mod() -   ) -   -> {non_neg_integer(), non_neg_integer()}. -damages_of_type (ranged, heavy) -> {10, 25}; -damages_of_type (ranged, light) -> {5, 20}; -damages_of_type (melee, heavy) -> {20, 35}; -damages_of_type (melee, light) -> {15, 30}. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%% Accessors --spec get_id (type()) -> id(). -get_id (Wp) -> Wp#weapon.id. - --spec get_range_type (type()) -> range_type(). -get_range_type (Wp) -> Wp#weapon.range_type. - --spec get_ranges (type()) -> {non_neg_integer(), non_neg_integer()}. -get_ranges (Wp) -> -   ranges_of_type(Wp#weapon.range_type, Wp#weapon.range_mod). - --spec get_damages (type()) -> {non_neg_integer(), non_neg_integer()}. -get_damages (Wp) -> -   damages_of_type(Wp#weapon.range_type, Wp#weapon.damage_mod). - --spec can_parry (type()) -> boolean(). -can_parry (Wp) -> (Wp#weapon.range_type == melee). - --spec from_id (id()) -> type(). -from_id (0) -> -   #weapon{ -      id = 0, -      name = <<"None">>, -      range_type = melee, -      range_mod = short, -      damage_type = blunt, -      damage_mod = light -   }; -from_id (1) -> -   #weapon{ -      id = 1, -      name = <<"Dagger">>, -      range_type = melee, -      range_mod = short, -      damage_type = slash, -      damage_mod = light -   }; -from_id (2) -> -   #weapon{ -      id = 2, -      name = <<"Sword">>, -      range_type = melee, -      range_mod = short, -      damage_type = slash, -      damage_mod = heavy -   }; -from_id (3) -> -   #weapon{ -      id = 3, -      name = <<"Claymore">>, -      range_type = melee, -      range_mod = long, -      damage_type = slash, -      damage_mod = light -   }; -from_id (4) -> -   #weapon{ -      id = 4, -      name = <<"Bardiche">>, -      range_type = melee, -      range_mod = long, -      damage_type = slash, -      damage_mod = heavy -   }; -from_id (5) -> -   #weapon{ -      id = 5, -      name = <<"Stiletto">>, -      range_type = melee, -      range_mod = short, -      damage_type = pierce, -      damage_mod = light -   }; -from_id (6) -> -   #weapon{ -      id = 6, -      name = <<"Pickaxe">>, -      range_type = melee, -      range_mod = short, -      damage_type = pierce, -      damage_mod = heavy -   }; -from_id (7) -> -   #weapon{ -      id = 7, -      name = <<"Rapier">>, -      range_type = melee, -      range_mod = long, -      damage_type = pierce, -      damage_mod = light -   }; -from_id (8) -> -   #weapon{ -      id = 8, -      name = <<"Pike">>, -      range_type = melee, -      range_mod = long, -      damage_type = pierce, -      damage_mod = heavy -   }; -from_id (9) -> -   #weapon{ -      id = 9, -      name = <<"Club">>, -      range_type = melee, -      range_mod = short, -      damage_type = blunt, -      damage_mod = light -   }; -from_id (10) -> -   #weapon{ -      id = 10, -      name = <<"Mace">>, -      range_type = melee, -      range_mod = short, -      damage_type = blunt, -      damage_mod = heavy -   }; -from_id (11) -> -   #weapon{ -      id = 11, -      name = <<"Staff">>, -      range_type = melee, -      range_mod = long, -      damage_type = blunt, -      damage_mod = light -   }; -from_id (12) -> -   #weapon{ -      id = 12, -      name = <<"War Hammer">>, -      range_type = melee, -      range_mod = long, -      damage_type = blunt, -      damage_mod = heavy -   }; -from_id (13) -> -   #weapon{ -      id = 13, -      name = <<"Short Bow (Broadhead)">>, -      range_type = ranged, -      range_mod = short, -      damage_type = slash, -      damage_mod = light -   }; -from_id (14) -> -   #weapon{ -      id = 14, -      name = <<"Short Bow (Blunt)">>, -      range_type = ranged, -      range_mod = short, -      damage_type = blunt, -      damage_mod = light -   }; -from_id (15) -> -   #weapon{ -      id = 15, -      name = <<"Short Bow (Bodkin Point)">>, -      range_type = ranged, -      range_mod = short, -      damage_type = pierce, -      damage_mod = light -   }; -from_id (16) -> -   #weapon{ -      id = 16, -      name = <<"Long Bow (Broadhead)">>, -      range_type = ranged, -      range_mod = long, -      damage_type = slash, -      damage_mod = light -   }; -from_id (17) -> -   #weapon{ -      id = 17, -      name = <<"Long Bow (Blunt)">>, -      range_type = ranged, -      range_mod = long, -      damage_type = blunt, -      damage_mod = light -   }; -from_id (18) -> -   #weapon{ -      id = 18, -      name = <<"Long Bow (Bodkin Point)">>, -      range_type = ranged, -      range_mod = long, -      damage_type = pierce, -      damage_mod = light -   }; -from_id (19) -> -   #weapon{ -      id = 19, -      name = <<"Crossbow (Broadhead)">>, -      range_type = ranged, -      range_mod = short, -      damage_type = slash, -      damage_mod = heavy -   }; -from_id (20) -> -   #weapon{ -      id = 20, -      name = <<"Crossbow (Blunt)">>, -      range_type = ranged, -      range_mod = short, -      damage_type = blunt, -      damage_mod = heavy -   }; -from_id (21) -> -   #weapon{ -      id = 21, -      name = <<"Crossbow (Bodkin Point)">>, -      range_type = ranged, -      range_mod = short, -      damage_type = pierce, -      damage_mod = heavy -   }; -from_id (22) -> -   #weapon{ -      id = 22, -      name = <<"Arbalest (Broadhead)">>, -      range_type = ranged, -      range_mod = long, -      damage_type = slash, -      damage_mod = heavy -   }; -from_id (23) -> -   #weapon{ -      id = 23, -      name = <<"Arbalest (Blunt)">>, -      range_type = ranged, -      range_mod = long, -      damage_type = blunt, -      damage_mod = heavy -   }; -from_id (24) -> -   #weapon{ -      id = 24, -      name = <<"Arbalest (Bodkin Point)">>, -      range_type = ranged, -      range_mod = long, -      damage_type = pierce, -      damage_mod = heavy -   }. - --spec random_id () -> id(). -random_id () -> sh_roll:between(0, 24). - --spec apply_to_attributes -   ( -      sh_attributes:type(), -      bm_weapon:type() -   ) -   -> attributes:type(). -apply_to_attributes (Attributes, Weapon) -> -   Dexterity = sh_attributes:get_dexterity(Attributes), -   Speed = sh_attributes:get_speed(Attributes), -   RangeModifier = Weapon#weapon.range_mod, -   DamageModifier = Weapon#weapon.damage_mod, -   WithRangeModifier = -      case RangeModifier of -         long -> -            sh_attributes:set_dexterity(max(0, (Dexterity - 20)), Attributes); -         _ -> Attributes -      end, -   case DamageModifier of -      heavy -> sh_attributes:set_speed(max(0, (Speed - 20)), WithRangeModifier); -      _ -> WithRangeModifier -   end. -  | 


