def _convert_json_item_to_item(json_item): structure = get_structure() item = Item() item.name = json_item['name'] item.ankama_id = json_item['ankama_id'] item.ankama_type = json_item['ankama_type'] item.level = json_item['level'] item.removed = json_item['removed'] item.dofus_touch = json_item['dofus_touch'] item.type = structure.get_type_id_by_name(json_item['type']) if json_item['set']: item_set = json_item['set'] if '[DT]' in item_set: set_reference = item_set.split(' ', 2) item.set = safe_int(set_reference[1]) else: item.set = structure.get_set_id_by_name(item_set) item.weird_conditions = json_item['weird_conditions'] for stat in json_item['stats']: if stat['stat'] == '' or stat['stat'] == None: continue _add_to_old_stat(item, structure.get_stat_by_name(stat['stat']).id, int(stat['value'])) for cond in json_item['conditions']: if cond['stat'] == '' or cond['stat'] == None: continue new_value = (int(cond['value']) - 1 if cond['min_max'] == '<' else int(cond['value']) + 1) _add_to_old_cond(item, structure.get_stat_by_name(cond['stat']).id, cond['min_max'] == '>', new_value) for lang, extras in json_item['extras'].iteritems(): for extra in extras: if extra == '': continue _add_to_old_extra(item, lang, extra) for lang in NON_EN_LANGUAGES: name_translated = json_item['translated_name_%s' % lang] if not name_translated.startswith('[!]'): item.localized_names[lang] = name_translated weapon = None if json_item['type'] == 'Weapon': weapon = Weapon() weapon.ap = int(json_item['ap']) weapon.crit_chance = int(json_item['crit_chance']) weapon.crit_bonus = int(json_item['crit_bonus']) # item.is_one_handed = json_item['one_handed'] weapon.weapon_type = structure.get_weapon_type_by_name( json_item['weapon_type']).id for hit in json_item['hits']: if hit['min_hit'] == '': continue index = int(hit['index']) weapon.hits_dict[index] = DamageDigest( int(hit['min_hit']), int(hit['max_hit']), ELEMENT_NAME_TO_KEY[hit['stat']], hit['steals'], hit['heals']) return item, weapon
def store_item_set(item_name, set_id): s = get_structure() item = s.get_item_by_name(item_name, True) if not item: filetomod = open('MissingItemsInSets.txt', 'a') name_to_print = item_name + '\n' filetomod.write(name_to_print.encode('utf-8')) filetomod.close() return new_item = Item() new_item.id = item.id new_item.name = item.name new_item.or_name = item.or_name new_item.type = item.type new_item.level = item.level new_item.set = set_id new_item.ankama_id = item.ankama_id new_item.ankama_type = item.ankama_type new_item.is_one_handed = item.is_one_handed new_item.stats = item.stats new_item.min_stats_to_equip = item.min_stats_to_equip new_item.max_stats_to_equip = item.max_stats_to_equip new_item.localized_extras = item.localized_extras new_item.localized_names = item.localized_names new_item.accentless_local_names = item.accentless_local_names new_item.weird_conditions = item.weird_conditions new_item.removed = item.removed new_item.dofus_touch = item.dofus_touch weapon = s.get_weapon_by_name(item_name, True) update_item(item, new_item, weapon, False)
def _convert_json_item_to_item(json_item): structure = get_structure() item = Item() item.removed = False item.name = json_item['name'] item.ankama_id = json_item['ankama_id'] item.ankama_type = 'equipment' item.level = json_item['level'] item.dofus_touch = 1 if json_item['dofustouch'] else 0 if json_item['w_type'] == 'Trophy': json_item['w_type'] = 'Dofus' if json_item['w_type'] == 'Backpack': json_item['w_type'] = 'Cloak' if json_item['w_type'] == 'Petsmount': json_item['w_type'] = 'Pet' item_type = structure.get_type_id_by_name(json_item['w_type']) if item_type: item.type = item_type else: item.type = structure.get_type_id_by_name('Weapon') weapon = None if item.type == structure.get_type_id_by_name('Weapon'): weapon = Weapon() print item.name weapon.ap = int(json_item['ap']) weapon.crit_chance = int(json_item['crit_chance']) weapon.crit_bonus = int(json_item.get('crit_bonus')) if json_item.get( 'crit_bonus') else None wtype = structure.get_weapon_type_by_name(json_item['w_type']) if wtype: weapon.weapon_type = wtype.id else: print 'COULD NOT FIND TYPE: %s' % json_item['w_type'] return None, None index = 0 for stat in json_item['stats']: if stat[2].startswith('('): hit_name = stat[2].strip('()') hit_element = hit_name.split()[0] hit_type = hit_name.split()[1] if hit_name != 'Hunting weapon': element = (ELEMENT_NAME_TO_KEY[hit_element] if hit_element != 'HP' else ELEMENT_NAME_TO_KEY['Fire']) if weapon == None: weapon = Weapon() weapon.hits_dict[index] = DamageDigest( (stat[0]), (stat[1] if stat[1] else stat[0]), element, True if hit_type == 'steal' else False, False if hit_element != 'HP' else True) index = index + 1 elif (stat[0] or stat[1]): if structure.get_stat_by_name(stat[2]): if stat[1] == None: stat_value = stat[0] else: if stat[0] >= 0: stat_value = stat[1] else: stat_value = stat[0] _add_to_old_stat(item, structure.get_stat_by_name(stat[2]).id, stat_value) else: filetomod = open('HPitems.txt', 'a') filetomod.write(item.name + ': ' + stat[2] + '\n') print 'COULD NOT FIND STAT %s' % stat[2] filetomod.close() return item, weapon
def store_weapon_data(item_id, weapon_name, weapon_data): s = get_structure() if 'removed' in weapon_data: delete_item(item_id) else: new_item = Item() old_item = s.get_item_by_id(item_id) new_item.id = old_item.id new_item.name = old_item.name new_item.or_name = old_item.or_name new_item.type = old_item.type new_item.level = old_item.level new_item.set = old_item.set new_item.ankama_id = old_item.ankama_id new_item.ankama_type = old_item.ankama_type new_item.stats = old_item.stats new_item.min_stats_to_equip = old_item.min_stats_to_equip new_item.max_stats_to_equip = old_item.max_stats_to_equip for lang in NON_EN_LANGUAGES: new_item.localized_names[lang] = old_item.localized_names.get(lang) for lang in NON_EN_LANGUAGES: new_item.localized_extras[lang] = old_item.localized_extras.get(lang) new_item.localized_extras['en'] = old_item.localized_extras.get('en') for wc in WEIRD_CONDITIONS: new_item.weird_conditions[wc] = old_item.weird_conditions[wc] new_item = _convert_json_item_to_item(weapon_data, new_item, s) if '(' in old_item.name: new_item.name = old_item.name print 'Checking %s' % new_item.name update_item(old_item, new_item, None, False)