Add a per-player handicap option to the lobby.
Handicaps reduce unit health, firepower, and build speed.
This commit is contained in:
@@ -123,6 +123,7 @@ namespace OpenRA
|
||||
DisplayFactionId = runtimePlayer.DisplayFaction.InternalName,
|
||||
Color = runtimePlayer.Color,
|
||||
Team = client.Team,
|
||||
Handicap = client.Handicap,
|
||||
SpawnPoint = runtimePlayer.SpawnPoint,
|
||||
IsRandomFaction = runtimePlayer.Faction.InternalName != client.Faction,
|
||||
IsRandomSpawnPoint = runtimePlayer.DisplaySpawnPoint == 0,
|
||||
@@ -166,6 +167,7 @@ namespace OpenRA
|
||||
/// <summary>The team ID on start-up, or 0 if the player is not part of a team.</summary>
|
||||
public int Team;
|
||||
public int SpawnPoint;
|
||||
public int Handicap;
|
||||
|
||||
/// <summary>True if the faction was chosen at random; otherwise, false.</summary>
|
||||
public bool IsRandomFaction;
|
||||
|
||||
@@ -50,6 +50,9 @@ namespace OpenRA
|
||||
public bool LockTeam = false;
|
||||
public int Team = 0;
|
||||
|
||||
public bool LockHandicap = false;
|
||||
public int Handicap = 0;
|
||||
|
||||
public string[] Allies = { };
|
||||
public string[] Enemies = { };
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace OpenRA.Network
|
||||
public readonly string Faction;
|
||||
public readonly int SpawnPoint;
|
||||
public readonly int Team;
|
||||
public readonly int Handicap;
|
||||
public readonly string Slot;
|
||||
public readonly string Bot;
|
||||
public readonly bool IsAdmin;
|
||||
@@ -39,6 +40,7 @@ namespace OpenRA.Network
|
||||
Faction = client.Faction;
|
||||
SpawnPoint = client.SpawnPoint;
|
||||
Team = client.Team;
|
||||
Handicap = client.Handicap;
|
||||
Slot = client.Slot;
|
||||
Bot = client.Bot;
|
||||
IsAdmin = client.IsAdmin;
|
||||
@@ -53,6 +55,7 @@ namespace OpenRA.Network
|
||||
client.Faction = Faction;
|
||||
client.SpawnPoint = SpawnPoint;
|
||||
client.Team = Team;
|
||||
client.Handicap = Handicap;
|
||||
client.Slot = Slot;
|
||||
client.Bot = Bot;
|
||||
client.IsAdmin = IsAdmin;
|
||||
|
||||
@@ -144,6 +144,7 @@ namespace OpenRA.Network
|
||||
|
||||
public ClientState State = ClientState.Invalid;
|
||||
public int Team;
|
||||
public int Handicap;
|
||||
public string Slot; // Slot ID, or null for observer
|
||||
public string Bot; // Bot type, null for real clients
|
||||
public int BotControllerClientIndex; // who added the bot to the slot
|
||||
@@ -193,6 +194,7 @@ namespace OpenRA.Network
|
||||
public bool LockFaction;
|
||||
public bool LockColor;
|
||||
public bool LockTeam;
|
||||
public bool LockHandicap;
|
||||
public bool LockSpawn;
|
||||
public bool Required;
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ namespace OpenRA
|
||||
public readonly bool Playable = true;
|
||||
public readonly int ClientIndex;
|
||||
public readonly CPos HomeLocation;
|
||||
public readonly int Handicap;
|
||||
public readonly PlayerReference PlayerReference;
|
||||
public readonly bool IsBot;
|
||||
public readonly string BotType;
|
||||
@@ -180,6 +181,8 @@ namespace OpenRA
|
||||
HomeLocation = assignSpawnPoints?.AssignHomeLocation(world, client, playerRandom) ?? pr.HomeLocation;
|
||||
SpawnPoint = assignSpawnPoints?.SpawnPointForPlayer(this) ?? client.SpawnPoint;
|
||||
DisplaySpawnPoint = client.SpawnPoint;
|
||||
|
||||
Handicap = client.Handicap;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -195,6 +198,7 @@ namespace OpenRA
|
||||
DisplayFaction = ResolveDisplayFaction(world, pr.Faction);
|
||||
HomeLocation = pr.HomeLocation;
|
||||
SpawnPoint = DisplaySpawnPoint = 0;
|
||||
Handicap = pr.Handicap;
|
||||
}
|
||||
|
||||
if (!spectating)
|
||||
|
||||
@@ -93,6 +93,8 @@ namespace OpenRA.Server
|
||||
c.SpawnPoint = pr.Spawn;
|
||||
if (pr.LockTeam)
|
||||
c.Team = pr.Team;
|
||||
if (pr.LockHandicap)
|
||||
c.Team = pr.Handicap;
|
||||
|
||||
c.Color = pr.LockColor ? pr.Color : c.PreferredColor;
|
||||
}
|
||||
@@ -437,6 +439,7 @@ namespace OpenRA.Server
|
||||
Faction = "Random",
|
||||
SpawnPoint = 0,
|
||||
Team = 0,
|
||||
Handicap = 0,
|
||||
State = Session.ClientState.Invalid,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user