
s2clientprotocol.data.proto Maven / Gradle / Ivy
The newest version!
syntax = "proto2";
package SC2APIProtocol;
import "s2clientprotocol/common.proto";
// May not relevant: queueable (everything is queueable).
// May not be important: AbilSetId - marine stim, marauder stim.
// Stuff omitted: transient.
// Stuff that may be important: cost, range, Alignment, targetfilters.
message AbilityData {
optional uint32 ability_id = 1; // Stable ID.
optional string link_name = 2; // Catalog name of the ability.
optional uint32 link_index = 3; // Catalog index of the ability.
optional string button_name = 4; // Name used for the command card. May not always be set.
optional string friendly_name = 5; // A human friendly name when the button name or link name isn't descriptive.
optional string hotkey = 6; // Hotkey. May not always be set.
optional uint32 remaps_to_ability_id = 7; // This ability id may be represented by the given more generic id.
enum Target {
None = 1; // Does not require a target.
Point = 2; // Requires a target position.
Unit = 3; // Requires a unit to target. Given by position using feature layers.
PointOrUnit = 4; // Requires either a target point or target unit.
PointOrNone = 5; // Requires either a target point or no target. (eg. building add-ons)
}
optional bool available = 8; // If true, the ability may be used by this set of mods/map.
optional Target target = 9; // Determines if a point is optional or required.
optional bool allow_minimap = 10; // Can be cast in the minimap.
optional bool allow_autocast = 11; // Autocast can be set.
optional bool is_building = 12; // Requires placement to construct a building.
optional float footprint_radius = 13; // Estimation of the footprint size. Need a better footprint.
optional bool is_instant_placement = 14; // Placement next to an existing structure, e.g., an add-on like a Tech Lab.
optional float cast_range = 15; // Range unit can cast ability without needing to approach target.
}
enum Attribute {
Light = 1;
Armored = 2;
Biological = 3;
Mechanical = 4;
Robotic = 5;
Psionic = 6;
Massive = 7;
Structure = 8;
Hover = 9;
Heroic = 10;
Summoned = 11;
}
message DamageBonus {
optional Attribute attribute = 1;
optional float bonus = 2;
}
message Weapon {
enum TargetType {
Ground = 1;
Air = 2;
Any = 3;
}
optional TargetType type = 1;
optional float damage = 2;
repeated DamageBonus damage_bonus = 3;
optional uint32 attacks = 4; // Number of hits per attack. (eg. Colossus has 2 beams)
optional float range = 5;
optional float speed = 6; // Time between attacks.
}
message UnitTypeData {
optional uint32 unit_id = 1; // Stable ID.
optional string name = 2; // Catalog name of the unit.
optional bool available = 3; // If true, the ability may be used by this set of mods/map.
optional uint32 cargo_size = 4; // Number of cargo slots it occupies in transports.
optional uint32 mineral_cost = 12;
optional uint32 vespene_cost = 13;
optional float food_required = 14;
optional float food_provided = 18;
optional uint32 ability_id = 15; // The ability that builds this unit.
optional Race race = 16;
optional float build_time = 17;
optional bool has_vespene = 19;
optional bool has_minerals = 20;
optional float sight_range = 25; // Range unit reveals vision.
repeated uint32 tech_alias = 21; // Other units that satisfy the same tech requirement.
optional uint32 unit_alias = 22; // The morphed variant of this unit.
optional uint32 tech_requirement = 23; // Structure required to build this unit. (Or any with the same tech_alias)
optional bool require_attached = 24; // Whether tech_requirement is an add-on.
// Values include changes from upgrades
repeated Attribute attributes = 8;
optional float movement_speed = 9;
optional float armor = 10;
repeated Weapon weapons = 11;
}
message UpgradeData {
optional uint32 upgrade_id = 1; // Stable ID.
optional string name = 2;
optional uint32 mineral_cost = 3;
optional uint32 vespene_cost = 4;
optional float research_time = 5;
optional uint32 ability_id = 6;
}
message BuffData {
optional uint32 buff_id = 1; // Stable ID.
optional string name = 2;
}
message EffectData {
optional uint32 effect_id = 1; // Stable ID.
optional string name = 2;
optional string friendly_name = 3;
optional float radius = 4;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy