def export(self, compiler): result = '' id = p_common.convert_to_identifier(self._no_tag_id) result += "%s -1\n" % id result += compiler.process_statement_block(id, False, self._block) result += '\n' return result
def create_auto_id(self): token_ipt = p_common.convert_to_identifier(self._start) token_opt = p_common.convert_to_identifier(self._end) auto_id = self.tag + "_" + token_ipt + ":" + token_opt if auto_id in self._auto_ids and self._auto_ids[auto_id] != self._text: number = 1 new_auto_id = auto_id + "." + str(number) while new_auto_id in self._auto_ids: number += 1 new_auto_id = auto_id + "." + str(number) auto_id = new_auto_id else: self._auto_ids[auto_id] = self._text return auto_id
def export(self, compiler): if isinstance(self._flags, int): flags = self._flags else: flags = self._flags.as_index(compiler) result = "%s %s %d %d %d %d " % (p_common.convert_to_identifier( self._id), p_common.replace_spaces( self._name), flags, compiler.index( self._menu), compiler.index( self._faction), self._personality) for member in self._members: result += "%d %d %d " % (compiler.index( member[0]), member[1], member[2]) if len(member) == 4: result += "%d " % member[3] elif len(member) > 4: logging.warning('Troop in party template "%s" has more than 4 ' 'parameters. Extra parameters ignored.' % self._id) else: result += "0 " for i in range(6 - len(self._members)): result += '-1 ' result += '\n' return result
def export(self, compiler): result = '' result += "%s %s %d %s %s %f %f %f %f %f %s " % \ (convert_to_identifier(self._id), replace_spaces(self._no_tag_id), self._flags, self._mesh, self._body, self._min_pos[0], self._min_pos[1], self._max_pos[0], self._max_pos[1], self._water_level, self._terrain_code) result += "\n %d " % len(self._passages) for passage in self._passages: result += " %d " % self.get_scene_index(passage) result += "\n %d " % len(self._chest_troops) for chest_troop in self._chest_troops: troop_no = compiler.index(chest_troop, tag='trp') if troop_no == 0: logging.error('Unable to find chest-troop "%s" in scene "%s"' % (chest_troop, self._id)) result += " %d " % troop_no result += "\n" if self._outer_scene: result += " %s " % self._outer_scene else: result += " 0 " result += '\n' return result
def export(self, compiler): if isinstance(self._flags, int): flags = self._flags else: flags = self._flags.as_index(compiler) result = "%s %s %d %d %d %d "%(p_common.convert_to_identifier(self._id), p_common.replace_spaces(self._name), flags, compiler.index(self._menu), compiler.index(self._faction), self._personality) for member in self._members: result += "%d %d %d " % (compiler.index(member[0]), member[1], member[2]) if len(member) == 4: result += "%d " % member[3] elif len(member) > 4: logging.warning('Troop in party template "%s" has more than 4 ' 'parameters. Extra parameters ignored.' % self._id) else: result += "0 " for i in range(6 - len(self._members)): result += '-1 ' result += '\n' return result
def export(self, compiler): result = "" id = p_common.convert_to_identifier(self._no_tag_id) result += "%s -1\n" % id result += compiler.process_statement_block(id, False, self._block) result += "\n" return result
def export(self, compiler): result = "%s %s %d %d\n" % (p_common.convert_to_identifier(self.id), p_common.convert_to_identifier(self.no_tag_id), self._flags, self._mission_type) result += "%s \n" % self._description.replace(" ","_") # export groups result += "\n%d " % len(self._groups) for group in self._groups: if len(group[5]) > 8: Exception('Too many item_overrides in Mission template "%s"' % self.id) result += "%d %d %d %d %d %d " % (group[0], group[1], group[2], group[3], group[4], len(group[5])) for item_override in group[5]: # todo: add_tag_use(tag_uses,tag_item,item_override) # todo: why get_index? result += "%d " % compiler.index(item_override) result += "\n" # export triggers result += "%d\n" % len(self._triggers) for trigger in self._triggers: trigger_statement_name = self.name + ".Trigger(%.1f %.1f %.1f)" % ( trigger[h_triggers.trigger_check_pos], trigger[h_triggers.trigger_delay_pos], trigger[h_triggers.trigger_rearm_pos] ) result += "%f %f %f " % (trigger[h_triggers.trigger_check_pos], trigger[h_triggers.trigger_delay_pos], trigger[h_triggers.trigger_rearm_pos]) result += compiler.process_statement_block( trigger_statement_name + '[conditions]', 1, trigger[h_triggers.trigger_conditions_pos]) result += compiler.process_statement_block( trigger_statement_name + '[consequences]', 1, trigger[h_triggers.trigger_consequences_pos]) result += '\n' result += '\n\n' return result
def export(self, compiler): result = '' faction_index = compiler.index(self._faction) scene_index = compiler.index(self._scene) scene_index |= self._scene_entry result += "%s %s %s %s %d %d %d %d " % ( convert_to_identifier(self._id), replace_spaces(self._name), replace_spaces(self._plural), replace_spaces(str(self._image)), self._flags, scene_index, self._reserved, faction_index) result += '%d %d' % tuple( compiler.index(x) for x in self._upgradable_to) result += '\n ' for inventory_item in self._inventory: result += "%d 0 " % compiler.index(inventory_item) for i in range(64 - len(self._inventory)): result += "-1 0 " result += "\n " strength = (self._attributes & 0xff) agility = ((self._attributes >> 8) & 0xff) intelligence = ((self._attributes >> 16) & 0xff) charisma = ((self._attributes >> 24) & 0xff) starting_level = ( self._attributes >> h_trp.level_bits) & h_trp.level_mask result += " %d %d %d %d %d\n" % (strength, agility, intelligence, charisma, starting_level) wp_word = self._proficiencies for wp in range(h_trp.num_weapon_proficiencies): wp_level = wp_word & 0x3FF result += " %d" % wp_level wp_word >>= 10 result += "\n" for i in range(h_skills.num_skill_words): result += "%d " % ((self._skills >> (i * 32)) & 0xffffffff) result += "\n " for fckey in (self._face_code, self._face_code2): word_keys = [] for word_no in range(4): word_keys.append((fckey >> (64 * word_no)) & 0xFFFFFFFFFFFFFFFF) for word_no in range(4): result += "%d " % word_keys[(4 - 1) - word_no] result += '\n\n' return result
def export(self, compiler): result = '' faction_index = compiler.index(self._faction) scene_index = compiler.index(self._scene) scene_index |= self._scene_entry result += "%s %s %s %s %d %d %d %d " % ( convert_to_identifier(self._id), replace_spaces(self._name), replace_spaces(self._plural), replace_spaces(str(self._image)), self._flags, scene_index, self._reserved, faction_index) result += '%d %d' % tuple(compiler.index(x) for x in self._upgradable_to) result += '\n ' for inventory_item in self._inventory: result += "%d 0 " % compiler.index(inventory_item) for i in range(64 - len(self._inventory)): result += "-1 0 " result += "\n " strength = (self._attributes & 0xff) agility = ((self._attributes >> 8) & 0xff) intelligence = ((self._attributes >> 16) & 0xff) charisma = ((self._attributes >> 24) & 0xff) starting_level = (self._attributes >> h_trp.level_bits) & h_trp.level_mask result += " %d %d %d %d %d\n" % (strength, agility, intelligence, charisma, starting_level) wp_word = self._proficiencies for wp in range(h_trp.num_weapon_proficiencies): wp_level = wp_word & 0x3FF result += " %d" % wp_level wp_word >>= 10 result += "\n" for i in range(h_skills.num_skill_words): result += "%d " % ((self._skills >> (i * 32)) & 0xffffffff) result += "\n " for fckey in (self._face_code, self._face_code2): word_keys = [] for word_no in range(4): word_keys.append((fckey >> (64 * word_no)) & 0xFFFFFFFFFFFFFFFF) for word_no in range(4): result += "%d " % word_keys[(4 - 1) - word_no] result += '\n\n' return result
def export(self, compiler): result = "%s %s %d %d \n" % (p_common.convert_to_identifier( self._id), p_common.replace_spaces( self._name), self._flags, self._color) relations = self.all_relations()[self.index] for relation in relations: result += " %f " % relations[relation] result += "\n" result += "%d " % len(self._ranks) for rank in self._ranks: result += " %s " % (p_common.replace_spaces(rank)) return result
def export(self, compiler): result = "%s %s %d %d \n" % ( p_common.convert_to_identifier(self._id), p_common.replace_spaces(self._name), self._flags, self._color) relations = self.all_relations()[self.index] for relation in relations: result += " %f " % relations[relation] result += "\n" result += "%d " % len(self._ranks) for rank in self._ranks: result += " %s " % (p_common.replace_spaces(rank)) return result
def export(self, compiler): result = " {id} {name} {name} {meshes_number} ".format( id=convert_to_identifier(self._id), name=replace_spaces(self._name), meshes_number=len(self._meshes) ) for mesh in self._meshes: result += " %s %d " % (mesh[0], mesh[1]) # hp share the same bits as attack type since items cannot have both. hp = hi.get_hit_points(self._stats) if hi.get_thrust_damage(self._stats) + hi.get_swing_damage(self._stats) > 0: hp = 0 result += " %d %d %d %d %f %d %d %d %d %d %d %d %d %d %d %d %d\n" % ( self._flags, self._capabilities, self._slot_no, self._value, hi.get_weight(self._stats), hi.get_abundance(self._stats), hi.get_head_armor(self._stats), hi.get_body_armor(self._stats), hi.get_leg_armor(self._stats), hi.get_difficulty(self._stats), hp, hi.get_speed_rating(self._stats), hi.get_missile_speed(self._stats), hi.get_weapon_length(self._stats), hi.get_max_ammo(self._stats), hi.get_thrust_damage(self._stats), hi.get_swing_damage(self._stats), ) result += " %d\n" % len(self._factions) for faction in self._factions: result += " %d" % compiler.index(faction) if self._factions: result += "\n" result += "%d\n" % len(self._triggers) for trigger in self._triggers: result += "%f " % trigger[0] result += compiler.process_statement_block(self.name, 1, trigger[1]) result += "\n" result += "\n" return result
def export(self, compiler): result = " {id} {name} {name} {meshes_number} ".format( id=convert_to_identifier(self._id), name=replace_spaces(self._name), meshes_number=len(self._meshes)) for mesh in self._meshes: result += " %s %d " % (mesh[0], mesh[1]) # hp share the same bits as attack type since items cannot have both. hp = hi.get_hit_points(self._stats) if hi.get_thrust_damage(self._stats) + hi.get_swing_damage( self._stats) > 0: hp = 0 result += " %d %d %d %d %f %d %d %d %d %d %d %d %d %d %d %d %d\n" % \ (self._flags, self._capabilities, self._slot_no, self._value, hi.get_weight(self._stats), hi.get_abundance(self._stats), hi.get_head_armor(self._stats), hi.get_body_armor(self._stats), hi.get_leg_armor(self._stats), hi.get_difficulty(self._stats), hp, hi.get_speed_rating(self._stats), hi.get_missile_speed(self._stats), hi.get_weapon_length(self._stats), hi.get_max_ammo(self._stats), hi.get_thrust_damage(self._stats), hi.get_swing_damage(self._stats)) result += " %d\n" % len(self._factions) for faction in self._factions: result += " %d" % compiler.index(faction) if self._factions: result += "\n" result += "%d\n" % len(self._triggers) for trigger in self._triggers: result += "%f " % trigger[0] result += compiler.process_statement_block(self.name, 1, trigger[1]) result += "\n" result += "\n" return result
def export(self, compiler): #if (party[5] >= 0): # add_tag_use(tag_uses,tag_faction,party[5]) if isinstance(self._flags, int): flags = self._flags else: flags = self._flags.as_index(compiler) result = " 1 %d %d " % (self.index, self.index) result += "%s %s %d " % (p_common.convert_to_identifier(self.id), p_common.replace_spaces(self._name), flags) if isinstance(self._menu, str): menu_index = compiler.index(self._menu) else: menu_index = self._menu result += "%d " % menu_index result += "%d %d %d %d %d " % (compiler.index(self._template), compiler.index(self._faction), self._personality, self._personality, self._ai_behavior) if isinstance(self._ai_target, str): ai_target_index = compiler.index(self._ai_target) else: ai_target_index = self._ai_target result += "%d %d " % (ai_target_index, ai_target_index) result += "%f %f " % (self._init_position[0], self._init_position[1]) result += "%f %f " % (self._init_position[0], self._init_position[1]) result += "%f %f 0.0 " % (self._init_position[0], self._init_position[1]) result += "%d " % len(self._members) for member in self._members: # todo: add_tag_use(tag_uses,tag_troop,member[0]) result += "%d %d 0 %d " % (compiler.index(member[0]), member[1], member[2]) result += "\n%.4f\n" % ((3.1415926 / 180.0) * self._bearing) return result
def export(self, compiler): #if (party[5] >= 0): # add_tag_use(tag_uses,tag_faction,party[5]) if isinstance(self._flags, int): flags = self._flags else: flags = self._flags.as_index(compiler) result = " 1 %d %d " % (self.index, self.index) result += "%s %s %d " % (p_common.convert_to_identifier( self.id), p_common.replace_spaces(self._name), flags) if isinstance(self._menu, str): menu_index = compiler.index(self._menu) else: menu_index = self._menu result += "%d " % menu_index result += "%d %d %d %d %d " % (compiler.index( self._template), compiler.index(self._faction), self._personality, self._personality, self._ai_behavior) if isinstance(self._ai_target, str): ai_target_index = compiler.index(self._ai_target) else: ai_target_index = self._ai_target result += "%d %d " % (ai_target_index, ai_target_index) result += "%f %f " % (self._init_position[0], self._init_position[1]) result += "%f %f " % (self._init_position[0], self._init_position[1]) result += "%f %f 0.0 " % (self._init_position[0], self._init_position[1]) result += "%d " % len(self._members) for member in self._members: # todo: add_tag_use(tag_uses,tag_troop,member[0]) result += "%d %d 0 %d " % (compiler.index( member[0]), member[1], member[2]) result += "\n%.4f\n" % ((3.1415926 / 180.0) * self._bearing) return result
def export(self, compiler): result = "%s %d\n %s %s %s\n" % (self._no_tag_id, self._flags, self._body, self._calf, self._hand) result += " %s %d " % (self._head, len(self._faces)) for face_key in self._faces: result += "skinkey_%s %d %d %f %f %s " % \ (p_common.convert_to_identifier(face_key[4]), face_key[0], face_key[1], face_key[2], face_key[3], p_common.replace_spaces(face_key[4])) result += "\n%d\n" % len(self._hair_meshes) for mesh_name in self._hair_meshes: result += " %s " % mesh_name result += "\n %d\n" % len(self._beard_meshes) for bmn in self._beard_meshes: result += " %s\n" % bmn result += '\n' result += " %d " % len(self._hair_textures) for tex in self._hair_textures: result += " %s " % tex result += "\n" result += " %d " % len(self._beard_textures) for tex in self._beard_textures: result += " %s " % tex result += "\n" result += " %d "%len(self._face_textures) for tex in self._face_textures: color = tex[1] hair_mats = tex[2] hair_colors = [] if len(tex) > 3: hair_colors = tex[3] result += " %s %d %d %d "%(tex[0], color, len(hair_mats), len(hair_colors)) for hair_mat in hair_mats: result += " %s "%(p_common.replace_spaces(hair_mat)) for hair_color in hair_colors: result += " %d " % hair_color result += "\n" result += " %d " % len(self._voices) for voice_rec in self._voices: result += " %d %s " % (voice_rec[0], voice_rec[1]) result += "\n" result += " %s %f " % (self._skeleton, self._scale) result += "\n%d %d\n" % (compiler.index(self._blood_particles[0]), compiler.index(self._blood_particles[1])) result += "%d\n" % len(self._face_constraints) for constraint in self._face_constraints: result += "\n%f %d %d " % (constraint[0], constraint[1], (len(constraint) - 2)) for i_pair in range(len(constraint)): if i_pair > 1: result += " %f %d" % (constraint[i_pair][0], constraint[i_pair][1]) result += "\n" return result
def export(self, compiler): return "%s %s\n" % (p_common.convert_to_identifier(self._id), p_common.replace_spaces(self._string))