소스 검색

Add factory script

JoostSijm 6 년 전
부모
커밋
7081e2a983
1개의 변경된 파일300개의 추가작업 그리고 0개의 파일을 삭제
  1. 300 0
      factories.py

+ 300 - 0
factories.py

@@ -0,0 +1,300 @@
+"""Calculate production in different factories"""
+
+from rival_regions_calc import Item, WorkProduction
+
+DEPARTMENTS = {
+    'oil': 1.5,
+    'gold': 0.4,
+    'diamond': 0.1,
+    'uranium': 0,
+    'ore': 0,
+}
+
+PRICE = {
+    'oil': 255,
+    'gold': 0,
+    'diamond': 1650000,
+    'uranium': 2300,
+    'ore': 235,
+}
+
+REGIONS = {
+    4001: {
+        'name': 'Northern Netherlands',
+        'resources': {
+            'gold': 379,
+            'oil': 223,
+            'ore': 247,
+            # 'uranium': 2,
+            'uranium': 25,
+            'diamond': 5,
+        },
+        'tax': {
+            'gold': 15,
+            'oil': 15,
+            'ore': 15,
+            'uranium': 15,
+            'diamond': 15,
+        },
+    },
+    4002: {
+        'name': 'Eastern Netherlands',
+        'resources': {
+            'gold': 359,
+            # 'oil': 266,
+            'oil': 371,
+            'ore': 250,
+            'uranium': 2,
+            'diamond': 2,
+        },
+        'tax': {
+            'gold': 15,
+            'oil': 2,
+            'ore': 15,
+            'uranium': 15,
+            'diamond': 15,
+        },
+    },
+    4003: {
+        'name': 'Western Netherlands',
+        'resources': {
+            'gold': 372,
+            'oil': 296,
+            'ore': 230,
+            'uranium': 2,
+            'diamond': 2,
+        },
+        'tax': {
+            'gold': 15,
+            'oil': 15,
+            'ore': 15,
+            'uranium': 15,
+            'diamond': 15,
+        },
+    },
+    4004: {
+        'name': 'Southern Netherlands',
+        'resources': {
+            'gold': 366,
+            'oil': 296,
+            'ore': 211,
+            'uranium': 2,
+            'diamond': 2,
+        },
+        'tax': {
+            'gold': 15,
+            'oil': 15,
+            'ore': 15,
+            'uranium': 15,
+            'diamond': 15,
+        },
+    },
+    4008: {
+        'name': 'Amsterdam',
+        'resources': {
+            'gold': 418,
+            'oil': 307,
+            'ore': 303,
+            'uranium': 4,
+            'diamond': 13,
+        },
+        'tax': {
+            'gold': 15,
+            'oil': 15,
+            'ore': 15,
+            'uranium': 15,
+            'diamond': 15,
+        },
+    },
+    4801: {
+        'name': 'Luxembourg',
+        'resources': {
+            'gold': 435,
+            'oil': 283,
+            'ore': 267,
+            'uranium': 2,
+            'diamond': 2,
+        },
+        'tax': {
+            'gold': 15,
+            'oil': 15,
+            'ore': 15,
+            'uranium': 15,
+            'diamond': 15,
+        },
+    }
+}
+
+RESOURCES = {
+    'oil': {
+        45760: {
+            'name': 'OIL RAFINERY',
+            'level': 185,
+            'region_id': 4002,
+            'wage': 100,
+        },
+        32282: {
+            'name': 'OIL - Lorenzo Industries',
+            'level': 157,
+            'region_id': 4801,
+            'wage': 100,
+        },
+        59465: {
+            'name': 'Verenigde Nederlanden Oil',
+            'level': 144,
+            'region_id': 4003,
+            'wage': 99,
+        },
+        90420: {
+            'name': 'Shelby oil',
+            'level': 124,
+            'region_id': 4002,
+            'wage': 95,
+        },
+        61361: {
+            'name': 'Koninklijke Olie',
+            'level': 120,
+            'region_id': 4001,
+            'wage': 100,
+            'fixed_wage': 150500500,
+        },
+        60828: {
+            'name': 'Austins wegenolie',
+            'level': 117,
+            'region_id': 4008,
+            'wage': 100,
+            'fixed_wage': 130000000,
+        },
+    },
+    'ore': {
+        32145: {
+            'name': 'DS ore',
+            'level': 139,
+            'region_id': 4801,
+            'wage': 99,
+        },
+        48500: {
+            'name': 'Shelby ore',
+            'level': 138,
+            'region_id': 4004,
+            'wage': 95,
+        },
+        29239: {
+            'name': 'Nederlands Ore EN',
+            'level': 73,
+            'region_id': 4002,
+            'wage': 80,
+        },
+    },
+    'uranium': {
+        34997: {
+            'name': 'Quite a serious power plant!',
+            'level': 147,
+            'region_id': 4001,
+            'wage': 100,
+            'fixed_wage': 350000000,
+        },
+
+    },
+    'diamond': {
+        33263: {
+            'name': 'Shelby Diamonds #2',
+            'level': 148,
+            'region_id': 4008,
+            'wage': 95,
+        },
+        63317: {
+            'name': 'Vone I',
+            'level': 30,
+            'region_id': 4008,
+            'wage': 80,
+        },
+    },
+}
+
+
+WP = WorkProduction()
+WP.user_level = 95
+WP.work_exp = 80000 + 200 * 350
+WP.nation_bonus = True
+WP.profit_share = 75
+
+
+def calculate_wage(resource_name, factory):
+    """Calculate production"""
+    if 'fixed_wage' in factory:
+        return factory['fixed_wage']
+    resource = Item(resource_name)
+    WP.resource = resource
+    WP.factory_level = factory['level']
+    WP.department_bonus = DEPARTMENTS[resource_name]
+    WP.resource_max = REGIONS[factory['region_id']]['resources'][resource_name]
+    WP.wage_percentage = factory['wage']
+    WP.tax_rate = REGIONS[factory['region_id']]['tax'][resource_name]
+    WP.calculate()
+    return WP.wage() * PRICE[resource_name]
+
+
+def all_factories():
+    """return all factories"""
+    factory_dict = {}
+    for factories in RESOURCES.values():
+        factory_dict.update(factories)
+    return factory_dict 
+
+
+def print_per_resource():
+    """Print wages per resource"""
+    for resource_name, factories in RESOURCES.items():
+        print(resource_name)
+        for factory in sorted(factories.values(), key=lambda k: k['wage'], reverse=True):
+            print('{:30} {:>12}'.format(
+                factory['name'],
+                int(factory['wage']),
+            ))
+
+
+def print_all():
+    """Print wages per resource"""
+    factory_dict = all_factories()
+
+    print("total")
+    sorted_factories = sorted(factory_dict.values(), key=lambda k: k['wage'], reverse=True)
+    top_wage = sorted_factories[0]['wage']
+    for factory in sorted_factories:
+        print('{:28}  {:>11,}  {:>3}'.format(
+            factory['name'],
+            int(factory['wage']),
+            int(100 / top_wage * factory['wage']),
+        ).replace(',', '.'))
+
+
+def print_factory_list():
+    """print all factories"""
+    for resource_name, factories in RESOURCES.items():
+        print('[rr]{}[/rr]'.format(resource_name.capitalize()))
+        for factory_id, factory in factories.items():
+            print('[url=https://rivalregions.com/#factory/index/{}]Desktop[/url] [url=https://m.rivalregions.com/#factory/index/{}]Mobile[/url] {}, {} '.format(
+                factory_id,
+                factory_id,
+                factory['name'],
+                REGIONS[factory['region_id']]['name'],
+            ))
+
+
+
+def main():
+    """Main function"""
+
+    for resource_name, factories in RESOURCES.items():
+        for factory_id, factory in factories.items():
+            wage = calculate_wage(resource_name, factory)
+            RESOURCES[resource_name][factory_id]['wage'] = wage
+
+    # print_per_resource()
+    print_all()
+    # print_factory_list()
+
+
+if __name__ == '__main__':
+    main()