1 from decimal
import Decimal
, ROUND_DOWN
, ROUND_UP
5 {'name': 'Recruit', 'id': 1, 'points': 16}
,
6 {'name': 'Private', 'id': 2, 'points': 46}
,
7 {'name': 'Private*', 'id': 3, 'points': 81}
,
8 {'name': 'Private**', 'id': 4, 'points': 121}
,
9 {'name': 'Private***', 'id': 5, 'points': 171}
,
10 {'name': 'Corporal', 'id': 6, 'points': 251}
,
11 {'name': 'Corporal*', 'id': 7, 'points': 351}
,
12 {'name': 'Corporal**', 'id': 8, 'points': 451}
,
13 {'name': 'Corporal***', 'id': 9, 'points': 601}
,
14 {'name': 'Sergeant', 'id': 10, 'points': 801}
,
15 {'name': 'Sergeant*', 'id': 11, 'points': 1001}
,
16 {'name': 'Sergeant**', 'id': 12, 'points': 1401}
,
17 {'name': 'Sergeant***', 'id': 13, 'points': 1851}
,
18 {'name': 'Lieutenant', 'id': 14, 'points': 2351}
,
19 {'name': 'Lieutenant*', 'id': 15, 'points': 3001}
,
20 {'name': 'Lieutenant**', 'id': 16, 'points': 3751}
,
21 {'name': 'Lieutenant***', 'id': 17, 'points': 5001}
,
22 {'name': 'Captain', 'id': 18, 'points': 6501}
,
23 {'name': 'Captain*', 'id': 19, 'points': 9001}
,
24 {'name': 'Captain**', 'id': 20, 'points': 12001}
,
25 {'name': 'Captain***', 'id': 21, 'points': 15501}
,
26 {'name': 'Major', 'id': 22, 'points': 20001}
,
27 {'name': 'Major*', 'id': 23, 'points': 25001}
,
28 {'name': 'Major**', 'id': 24, 'points': 31001}
,
29 {'name': 'Major***', 'id': 25, 'points': 40001}
,
30 {'name': 'Commander', 'id': 26, 'points': 52001}
,
31 {'name': 'Commander*', 'id': 27, 'points': 67001}
,
32 {'name': 'Commander**', 'id': 28, 'points': 85001}
,
33 {'name': 'Commander***', 'id': 29, 'points': 110001}
,
34 {'name': 'Lt Colonel', 'id': 30, 'points': 140001}
,
35 {'name': 'Lt Colonel*', 'id': 31, 'points': 180001}
,
36 {'name': 'Lt Colonel**', 'id': 32, 'points': 225001}
,
37 {'name': 'Lt Colonel***', 'id': 33, 'points': 285001}
,
38 {'name': 'Colonel', 'id': 34, 'points': 355001}
,
39 {'name': 'Colonel*', 'id': 35, 'points': 435001}
,
40 {'name': 'Colonel**', 'id': 36, 'points': 540001}
,
41 {'name': 'Colonel***', 'id': 37, 'points': 660001}
,
42 {'name': 'General', 'id': 38, 'points': 800001}
,
43 {'name': 'General*', 'id': 39, 'points': 950001}
,
44 {'name': 'General**', 'id': 40, 'points': 1140001}
,
45 {'name': 'General***', 'id': 41, 'points': 1350001}
,
46 {'name': 'Field Marshal', 'id': 42, 'points': 1600001}
,
47 {'name': 'Field Marshal*', 'id': 43, 'points': 1875001}
,
48 {'name': 'Field Marshal**', 'id': 44, 'points': 2185001}
,
49 {'name': 'Field Marshal***', 'id': 45, 'points': 2550001}
,
50 {'name': 'Supreme Marshal', 'id': 46, 'points': 3000001}
,
51 {'name': 'Supreme Marshal*', 'id': 47, 'points': 3500000}
,
52 {'name': 'Supreme Marshal**', 'id': 48, 'points': 4150001}
,
53 {'name': 'Supreme Marshal***', 'id': 49, 'points': 4900001}
,
54 {'name': 'National Force', 'id': 50, 'points': 5800001}
,
55 {'name': 'National Force*', 'id': 51, 'points': 7000001}
,
56 {'name': 'National Force**', 'id': 52, 'points': 9000001}
,
57 {'name': 'National Force***', 'id': 53, 'points': 11500001}
,
58 {'name': 'World Class Force', 'id': 54, 'points': 14500001}
,
59 {'name': 'World Class Force*', 'id': 55, 'points': 18000001}
,
60 {'name': 'World Class Force**', 'id': 56, 'points': 22000001}
,
61 {'name': 'World Class Force***', 'id': 57, 'points': 26500001}
,
62 {'name': 'Legendary Force', 'id': 58, 'points': 31500001}
,
63 {'name': 'Legendary Force*', 'id': 59, 'points': 37000001}
,
64 {'name': 'Legendary Force**', 'id': 60, 'points': 43000001}
,
65 {'name': 'Legendary Force***', 'id': 61, 'points': 50000001}
,
66 {'name': 'God of War', 'id': 62, 'points': 100000001}
,
67 {'name': 'God of War*', 'id': 63, 'points': 200000001}
,
68 {'name': 'God of War**', 'id': 64, 'points': 500000001}
,
69 {'name': 'God of War***', 'id': 65, 'points': 90000000001}
73 'constructions': {'name': 'Constructions'}
,
74 'manufacturing': {'name': 'Manufacturing'}
,
75 'land' : {'name': 'Land'}
79 {'id': 1, 'market_id': 1, 'name': 'Food', 'short': 'food', 'raw_material': 'Grain', 'domain': __domains['manufacturing']}
,
80 {'id': 2, 'market_id': 2, 'name': 'Weapons', 'short': 'weapons', 'raw_material': 'Iron', 'domain': __domains['manufacturing']}
,
81 {'id': 3, 'market_id': 3, 'name': 'Moving Tickets', 'short': 'moving-tickets', 'raw_material': 'Oil', 'domain': __domains['manufacturing']}
,
82 {'id': 4, 'market_id': 4, 'name': 'Housing', 'short': 'house', 'raw_material': 'Stone', 'domain': __domains['constructions']}
,
83 {'id': 5, 'market_id': 5, 'name': 'Hospital', 'short': 'hospital', 'raw_material': 'Stone', 'domain': __domains['constructions']}
,
84 {'id': 6, 'market_id': 6, 'name': 'Defense Systems', 'short': 'defense-system', 'raw_material': 'Stone', 'domain': __domains['constructions']}
,
85 {'id': 7, 'market_id': 7, 'name': 'Grain', 'short': 'grain', 'domain': __domains['land']}
,
86 {'id': 8, 'market_id': 7, 'name': 'Fruits', 'short': 'fruits', 'domain': __domains['land']}
,
87 {'id': 9, 'market_id': 7, 'name': 'Fish', 'short': 'fish', 'domain': __domains['land']}
,
88 {'id': 10, 'market_id': 7, 'name': 'Cattle', 'short': 'cattle', 'domain': __domains['land']}
,
89 {'id': 11, 'market_id': 7, 'name': 'Deer', 'short': 'deer', 'domain': __domains['land']}
,
90 {'id': 12, 'market_id': 12, 'name': 'Iron', 'short': 'iron', 'domain': __domains['land']}
,
91 {'id': 13, 'market_id': 12, 'name': 'Oil', 'short': 'oil', 'domain': __domains['land']}
,
92 {'id': 14, 'market_id': 12, 'name': 'Aluminum', 'short': 'aluminum', 'domain': __domains['land']}
,
93 {'id': 15, 'market_id': 12, 'name': 'Saltpeter', 'short': 'saltpeter', 'domain': __domains['land']}
,
94 {'id': 16, 'market_id': 12, 'name': 'Rubber', 'short': 'rubber', 'domain': __domains['land']}
,
95 {'id': 7, 'market_id': 7, 'name': 'Food Raw Material', 'short': 'food-raw-material', 'domain': __domains['land']}
,
96 {'id': 12, 'market_id': 12, 'name': 'Weapon Raw Material', 'short': 'weapon-raw-material', 'domain': __domains['land']}
99 class InvalidValueError(Exception):
100 def __init__(self
, message
):
106 def fight_calc(firepower
, rank
, strength
, natural_enemy
=False):
107 q_mult
= 1 + Decimal(firepower
) / 100
108 r_mult
= Decimal(rank
['id'])
109 s_mult
= Decimal(strength
)
110 inf
= (((r_mult
-1)/20 + Decimal('0.3')) * ((s_mult
/ 10) + 40)) * q_mult
112 inf
= inf
+ inf
* Decimal('0.1')
113 return inf
.to_integral_value(ROUND_DOWN
)
115 def get_rank(rank_name
):
116 if rank_name
== None:
119 rank_name
= rank_name
.lower()
122 if rank_name
== rank
['name'].lower() or rank_name
== str(rank
['id']):
125 raise InvalidValueError('%s is not a valid military rank' % rank_name
)
127 def get_rank_by_points(rank_points
):
129 while rank_points
> __ranks
[i
]['points']:
135 if isinstance(val
, str) or isinstance(val
, unicode):
137 return __domains
[val
]
140 if val
.lower() in __domains
[x
]['name'].lower():
143 raise InvalidValueError('%s is not a valid domain' % val
)
145 def get_industry(val
):
146 val
= val
.lower() if not isinstance(val
, dict) else val
['name'].lower()
148 for industry
in __industries
:
149 if val
in industry
['short'] or val
in industry
['name'].lower():
152 raise InvalidValueError('%s is not a valid industry' % val
)
154 def get_quality(val
):
158 raise InvalidValueError('%s is not a valid quality' % val
)
160 if val
< 0 or val
> 5:
161 raise InvalidValueError('%d is not a valid quality.' % val
)