/* verifyOXP.plist Various things used internally by the OXP verifier. */ { stages = ( "OOCheckRequiresPListVerifierStage", "OOCheckDemoShipsPListVerifierStage", "OOCheckEquipmentPListVerifierStage", "OOTextureVerifierStage", "OOCheckShipDataPListVerifierStage" ); excludeStages = ( /* Add stages here to stop them from being used. For instance, to skip the texture verification, create a verifyOXP.plist file in your AddOns folder with the following content: { excludeStages = ( "OOTextureVerifierStage" ); } */ ); logControlOverride = { // Note: only yes and no here, no inherit or $metaclass dataCache.rebuild.pathsChanged = "no"; verifyOXP = "yes"; verifyOXP.stage = "yes"; }; logShowMessageClassOverride = "no"; knownRootDirectories = ( // Folder names that are meaningful inside an OXP "AIs", "Config", "Images", "Models", "Music", "Scripts", "Shaders", "Sounds", "Textures" ); knownConfigFiles = ( "autoAImap.plist", "characters.plist", "commodities.plist", "customsounds.plist", "demoships.plist", "descriptions.plist", "equipment.plist", "hud.plist", "illegal_goods.plist", "keyconfig.plist", "material-defaults.plist", "missiontext.plist", "nebulatextures.plist", "planetinfo.plist", "requires.plist", "script.plist", "script.js", "shipdata.plist", "shipyard.plist", "speech_pronounciation_guide.plist", "startextures.plist", "world-scripts.plist" ); junkFiles = ( // Files generated by operating systems and tools which can be ignored. ".DS_Store", "Thumbs.db", "zipinfo.txt" ); skipDirectories = ( // Directories to silently skip (version control systems make these). ".svn", "CVS" ); readMeNames = { stems = ( "readme", "read me", "read_me", "read me now", "read me first", "readme!", "read me!", "read_me!", "read me now!", "read me first!" ); extensions = ( "", ".txt", ".html", ".htm", ".rtf", ".doc" ); }; requiresPListSupportedKeys = ( "version", "max_version" ); debugGraphvizTempate = { /* Bits needed to generate graphviz code describing verifier stage dependency relationships. This is generated (and written to the current working directory) if the preference "oxp-verifier-dump-debug-graphviz" is set to YES. */ preamble = "// OXPVerifier stage dependencies:\n\ndigraph stagedeps\n{\n\tgraph [charset=\"UTF-8\", label=\"OXPVerifier dependency graph\\n%@\", labelloc=t, labeljust=l];\n\tnode [shape=box];\n\t\n\tstart [label=Start shape=Mdiamond];\n\tend [label=End shape=Msquare];\n\t\n"; node = "\tst%p [label=\"%@\\nā€œ%@ā€\"];\n"; forwardPreamble = "\t\n\t// Forward arcs, from dependencies to dependents.\n\t// These indicate acceptable execution orders.\n\tedge [arrowhead=normal, color=blue];\n"; forwardArc = "\tst%p -> st%p;\n"; startArc = "\tstart -> st%p;\n"; backwardPreamble = "\t\n\t// Backward arcs, from dependents to dependencies.\n\t// There should be one backwards arc for each forward arc.\n\tedge [arrowhead=dot, color=green, constraint=false];\n"; backwardArc = "\tst%p -> st%p;\n"; endArc = "\tst%p -> end [constraint=true, arrowhead=none, arrowtail=dot];\n"; postamble = "}\n"; }; shipdataPListSettings = { knownShipKeys = ( "like_ship", "max_flight_speed", "max_flight_roll", "max_flight_pitch", "max_flight_yaw", "thrust", "accuracy", "max_energy", "energy_recharge_rate", "forward_weapon_type", "aft_weapon_type", "weapon_energy", "scanner_range", "missiles", "has_ecm", "has_scoop", "has_escape_pod", "has_energy_bomb", "has_fuel_injection", "has_cloaking_device", "has_military_jammer", "has_military_scanner_filter", "fragment_chance", "has_shield_booster", "has_shield_enhancer", "fuel", "bounty", "ai_type", "max_cargo", "likely_cargo", "extra_cargo", "cargo_carried", "cargo_type", "model", "materials", "shaders", "smooth", "density", "name", "roles", "exhaust", "is_hulk", "subentities", "frangible", "laser_color", "scanClass", "launch_actions", "script_actions", "death_actions", "setup_actions", "escorts", "beacon", "rotational_velocity", "track_contacts", "weapon_position_forward", "weapon_position_aft", "weapon_position_port", "weapon_position_starboard", "scoop_position", "heat_insulation", "pilot", "unpiloted", "escort-role", "escort-ship", "cargo_carried", "missile_launch_position", "missile_role", "escape_pod_model", "aft_eject_position", "auto_ai" ); knownStationKeys = ( "rotating", "defense_ship", "defense_ship_role", "hasShipyard", "port_radius", "port_dimensions", "equivalent_tech_level", "max_scavengers", "max_defense_ships", "max_police", "equipment_price_factor" ); knownPlayerKeys = ( "extra_equipment", "hud", "view_position_forward", "view_position_aft", "view_position_port", "view_position_starboard", "custom_views", "max_missiles" ); entrySchema = { type = "dictionary"; requiredKeys = ( "model", "name", "roles" ); $definitions = { // "Special" types referred to above. $weaponType = { type = "enumeration"; values = ( "WEAPON_NONE", "WEAPON_PLASMA_CANNON", "WEAPON_PULSE_LASER", "WEAPON_BEAM_LASER", "WEAPON_MINING_LASER", "WEAPON_MILITARY_LASER", "WEAPON_THARGOID_LASER" ); }; $materialDict = { type = "dictionary"; schema = { ambient = "$colorSpecifier"; diffuse = "$colorSpecifier"; diffuse_map = "$textureSpecifier"; emission = "$colorSpecifier"; shininess = { type = "positiveInteger"; maximum = "128"; }; specular = "$colorSpecifier"; fragment_shader = "$shaderFileName"; textures = { type = "array"; valueType = "$textureSpecifier"; }; uniforms = { type = "dictionary"; valueType = { type = "oneOf"; options = ( "string", { type = "dictionary"; schema = { asMatrix = "boolean"; binding = "string"; clamped = "boolean"; normalized = "boolean"; type = { type = "enumeration"; values = ( "binding", "float", "real", "int", "integer", "texture" ); }; value = "float"; }; } ); }; }; vertex_shader = "$shaderFileName"; }; }; $textureSpecifier = { type = "oneOf"; options = ( "string", { type = "dictionary"; schema = { anisotropy = "positiveFloat"; mag_filter = { type = "enumeration"; values = ( "nearest", "linear" ); }; min_filter = { type = "enumeration"; values = ( "nearest", "linear", "mipmap", "default" ); }; name = "string"; no_shrink = "boolean"; repeat_s = "boolean"; repeat_t = "boolean"; texture_LOD_bias = "float"; }; } ); }; $scanClass = { type = "enumeration"; values = ( "CLASS_NOT_SET", "CLASS_BUOY", "CLASS_CARGO", "CLASS_MILITARY", "CLASS_MISSILE", "CLASS_POLICE", "CLASS_ROCK", "CLASS_STATION", "CLASS_THARGOID" ); }; $cargoType = { type = "enumeration"; values = ( "CARGO_NOT_CARGO", "CARGO_SLAVES", "CARGO_ALLOY", "CARGO_MINERALS", "CARGO_THARGOID", "CARGO_RANDOM", "CARGO_SCRIPTED_ITEM", "CARGO_CHARACTER" ); }; $customViewSpec = { type = "dictionary"; schema = { view_description = "string"; view_position = "vector"; view_orientation = "quaternion"; weapon_facing = { type = "enumeration"; filter = "lowerCase"; values = ( "forward", "aft", "port", "starboard" ); }; }; }; // Types handled in code. $modelName = { type = "delegatedType"; baseType = { type = "string"; filter = "lowerCase"; requiredSuffix = ".dat"; }; key = "modelName"; }; $colorSpecifier = { type = "delegatedType"; baseType = { type = "oneOf"; options = ( "array", "dictionary", "string" ); }; key = "colorSpecifier"; }; $textureFileName = { type = "delegatedType"; baseType = { type = "string"; filter = "lowerCase"; requiredSuffix = ".png"; }; key = "textureFileName"; }; $aiFileName = { type = "delegatedType"; baseType = { type = "string"; filter = "lowerCase"; requiredSuffix = ".plist"; }; key = "aiFileName"; }; $shaderFileName = { type = "delegatedType"; baseType = { type = "string"; filter = "lowerCase"; requiredSuffix = ( ".vertex", ".vert", ".fragment", ".frag" ); }; key = "shaderFileName"; }; $exhaustSpecifier = { type = "delegatedType"; baseType = "string"; key = "exhaustSpecifier"; }; $subEntitySpecifier = { type = "delegatedType"; baseType = "string"; key = "subEntitySpecifier"; }; $scriptActions = { type = "delegatedType"; baseType = "array"; key = "scriptActions"; }; $characterKey = { type = "delegatedType"; baseType = "string"; key = "characterKey"; }; $shipRole = { type = "delegatedType"; baseType = "string"; key = "shipRole"; }; $shipKey = { type = "delegatedType"; baseType = "string"; key = "shipKey"; }; $roles = { type = "delegatedType"; baseType = "string"; key = "roles"; }; $scriptCondition = { type = "delegatedType"; baseType = "string"; key = "scriptCondition"; }; $scriptCouplet = { type = "delegatedType"; baseType = "dictionary"; key = "scriptCouplet"; }; $portDimensions = { type = "delegatedType"; baseType = "string"; key = "portDimensions"; }; $extraEquipmentDictionary = { type = "delegatedType"; baseType = "dictionary"; key = "extraEquipmentDictionary"; }; $hudFileName = { type = "delegatedType"; baseType = "string"; key = "hudFileName"; }; $cargoCarried = { type = "delegatedType"; baseType = "string"; key = "cargoCarried"; }; }; schema = { like_ship = "$shipRole"; max_flight_speed = "positiveFloat"; max_flight_roll = "positiveFloat"; max_flight_pitch = "positiveFloat"; max_flight_yaw = "positiveFloat"; thrust = "positiveFloat"; accuracy = "float"; max_energy = "positiveFloat"; energy_recharge_rate = "positiveFloat"; forward_weapon_type = "$weaponType"; aft_weapon_type = "$weaponType"; weapon_energy = "positiveFloat"; scanner_range = "positiveFloat"; missiles = "positiveInteger"; has_ecm = "fuzzyBoolean"; has_scoop = "fuzzyBoolean"; has_escape_pod = "positiveInteger"; has_energy_bomb = "fuzzyBoolean"; has_fuel_injection = "fuzzyBoolean"; has_cloaking_device = "fuzzyBoolean"; has_military_jammer = "fuzzyBoolean"; has_military_scanner_filter = "fuzzyBoolean"; fragment_chance = "fuzzyBoolean"; has_shield_booster = "fuzzyBoolean"; has_shield_enhancer = "fuzzyBoolean"; fuel = "positiveInteger"; bounty = "positiveInteger"; ai_type = "$aiFileName"; max_cargo = "positiveInteger"; likely_cargo = "positiveInteger"; extra_cargo = "positiveInteger"; cargo_carried = "$cargoCarried"; cargo_type = "$cargoType"; model = "$modelName"; materials = "$materialDict"; shaders = "$materialDict"; smooth = "boolean"; density = "positiveFloat"; name = "string"; roles = "$roles"; exhaust = { type = "array"; valueType = "$exhaustSpecifier"; }; is_hulk = "boolean"; subentities = { type = "array"; valueType = "$subEntitySpecifier"; }; frangible = "boolean"; laser_color = "$colorSpecifier"; scanClass = "$scanClass"; launch_actions = "$scriptActions"; script_actions = "$scriptActions"; death_actions = "$scriptActions"; setup_actions = "$scriptActions"; escorts = "positiveInteger"; beacon = "string"; rotational_velocity = "quaternion"; track_contacts = "boolean"; weapon_position_forward = "vector"; weapon_position_aft = "vector"; weapon_position_port = "vector"; weapon_position_starboard = "vector"; scoop_position = "vector"; heat_insulation = "positiveFloat"; pilot = "$characterKey"; unpiloted = "fuzzyBoolean"; escort-role = "$shipRole"; escort-ship = "$shipKey"; missile_launch_position = "vector"; missile_role = "$shipRole"; escape_pod_model = "$modelName"; aft_eject_position = "vector"; auto_ai = "boolean"; rotating = "boolean"; defense_ship = "$shipKey"; defense_ship_role = "$shipRole"; hasShipyard = { type = "oneOf"; options = ( "$scriptCondition", "boolean" ); }; conditions = "$scriptCouplet"; port_radius = "positiveFloat"; port_dimensions = "$portDimensions"; equivalent_tech_level = "integer"; max_scavengers = "positiveInteger"; max_defense_ships = "positiveInteger"; max_police = "positiveInteger"; equipment_price_factor = "positiveFloat"; extra_equipment = "$extraEquipmentDictionary"; hud = "$hudFileName"; view_position_forward = "vector"; view_position_aft = "vector"; view_position_port = "vector"; view_position_starboard = "vector"; custom_views = { type = "array"; valueType = "$customViewSpec"; }; max_missiles = "positiveInteger"; }; }; }; }