def add_items():
    schema = VDF()
    prefabs = schema.get_prefabs()
    allitems = dict(schema.get_items(), **prefabs)

    global regionsDict
    for item in allitems:
        item = allitems[item]
        if 'item_name' in item:
            TF_classlist = {}
            if 'used_by_classes' in item:
                TF_classlist = item['used_by_classes']
            itemname = schema.get_localized_item_name(item['item_name'])
            if verbose:
                print 'Processing', itemname
            if 'equip_region' in item:
                if isinstance(item['equip_region'], dict): # Valve are silly and on rare occasions put multiple regions in this field
                    for region in item['equip_region']:
                        if region != 'hat':
                            add_region(itemname, TF_classlist, region.lower())
                else:
                    if item['equip_region'] != 'hat':
                        add_region(itemname, TF_classlist, item['equip_region'].lower())
            elif 'equip_regions' in item:
                regions = item['equip_regions']
                if isinstance(regions, basestring): # Valve are also silly because sometimes they put a single region string here
                    if regions != 'hat':
                        add_region(itemname, TF_classlist, regions.lower())
                else:
                    for region in regions:
                        if region != 'hat':
                            add_region(itemname, TF_classlist, region.lower())
            elif 'prefab' in item:
                if isinstance(item['prefab'], list): # Valve are even sillier because sometimes they put their own name in the prefabs list
                    item['prefab'] = item['prefab'][1]
                if item['prefab'] in prefabs:
                    prefab = prefabs[item['prefab']]
                    if 'used_by_classes' in prefab:
                        TF_classlist.update(prefab['used_by_classes'])
                    if 'equip_region' in prefab and prefab['equip_region'] != 'hat':
                        region = prefab['equip_region']
                        add_region(itemname, TF_classlist, region)
                if item['prefab'] in ['misc', 'valve misc', 'base_misc', 'base_hat', 'ash_remains base_misc']:
                    if verbose:
                        print 'Item', itemname, 'has no equip region. Prefab is:', item['prefab']
                    add_region(itemname, TF_classlist, 'none')
Exemple #2
0
import os
from vdfparser import VDF
schema = VDF()
items = schema.get_items()
prefabs = schema.get_prefabs()
allitems = dict(items, **prefabs)
max = [0]*14
modelmap = {}
allitems.update({ # Extra data for engineer buildings
	'Sentry Gun Level 1': {
		'model_world': 'models/buildings/sentry1.mdl',
		'item_name': '#TF_Object_Sentry',
		'level': '1',
		'used_by_classes': {
			'engineer': '1'
		},
		'item_slot': 'building2'
	},
	'Sentry Gun Level 2': {
		'model_world': 'models/buildings/sentry2_optimized.mdl',
		'item_name': '#TF_Object_Sentry',
		'level': '2',
		'used_by_classes': {
			'engineer': '1'
		},
		'item_slot': 'building2'
	},
	'Sentry Gun Level 3': {
		'model_world': 'models/buildings/sentry3_optimized.mdl',
		'item_name': '#TF_Object_Sentry',
		'level': '3',
def gen_allitems():
	schema = VDF()
	items = schema.get_items()
	prefabs = schema.get_prefabs()
	allitems = dict(items, **prefabs)

	# Fix for some broken weapons
	for key in allitems:
		item = allitems[key]
		if 'prefab' in item and 'extra_wearable' not in item:
			prefab = item['prefab']
			if isinstance(prefab, list) and prefab[0] == 'valve': # Valve are silly and occasionally put their name into the prefabs
				prefab = prefab[1]
			if prefab[-11:] == ' marketable':
				prefab = prefab[:-11]
			prefab = prefab.rpartition(' ')[2]
			if prefab == 'weapon_melee_allclass' or prefab == 'weapon_shotgun': # Malformed & duplicate prefabs
				continue
			if prefab[:7] == 'weapon_' or prefab in ['holy_mackerel', 'axtinguisher', 'buff_banner', 'sandvich', 'ubersaw', 'frontier_justice', 'huntsman', 'ambassador']:
				item['item_slot'] = prefabs[prefab]['item_slot']
				item['used_by_classes'] = prefabs[prefab]['used_by_classes']

	# Some hard-coded additions. This _vaguely_ mimics the schema's true format.
	buildings = {
		'Sentry Gun Level 1': {
			'model_world': 'models/buildables/sentry1.mdl',
			'item_name': '#TF_Object_Sentry',
			'level': '1',
		},
		'Sentry Gun Level 2': {
			'model_world': 'models/buildables/sentry2_optimized.mdl',
			'item_name': '#TF_Object_Sentry',
			'level': '2',
		},
		'Sentry Gun Level 3': {
			'model_world': 'models/buildables/sentry3_optimized.mdl',
			'item_name': '#TF_Object_Sentry',
			'level': '3',
		},
		'Dispenser Level 1': {
			'model_world': 'models/buildables/dispenser_toolbox.mdl',
			'item_name': '#TF_Object_Dispenser',
			'level': '1',
		},
		'Dispenser Level 2': {
			'model_world': 'models/buildables/dispenser_lvl2.mdl',
			'item_name': '#TF_Object_Dispenser',
			'level': '2',
		},
		'Dispenser Level 3': {
			'model_world': 'models/buildables/dispenser_lvl3.mdl',
			'item_name': '#TF_Object_Dispenser',
			'level': '3',
		},
		'Teleporter': {
			'model_world': 'models/buildables/teleporter.mdl',
			'item_name': '#TF_Object_Tele',
		},
	}
	for building in buildings:
		buildings[building]['used_by_classes'] = {'engineer': '1'}
		buildings[building]['item_slot'] = 'building2'
	allitems.update(buildings)
	for TF_class in TF_classes:
		allitems[TF_class.title()] = {
			'model_world': 'models/player/%s.mdl' % TF_class,
			'model_player': 'models/player/%s_morphs_high.mdl' % TF_class,
			'item_name': '#TF_class_Name_%s' % TF_class,
			'used_by_classes': {TF_class: '1'},
			'item_slot': 'class'
		}
	# Exceptions to exceptions
	allitems['Demoman']['model_player'] = 'models/player/demo.mdl'
	allitems['Demoman']['model_world'] = 'models/player/demo_morphs_high.mdl'
	allitems['Heavy']['item_name'] = '#TF_class_Name_HWGuy'
	return allitems