Handicap Mod

Everything about mods can be found here.

Moderator: Morax

Handicap Mod

Postby rockoe10 » 15 Apr 2014, 02:38

So I have been working on a mod for some time now that I call the "Handicap Mod". It provides a player with more resource income than another. Its main use is to provide players with a lower rating/rank to have a chance at playing against higher rated/ranked players. I wanted a mod that would allow me to play with my friends on an equal playing field (i.e. my experience v.s. their extra income). What I have done so far is hard coded an income boost for one faction and not another. And as you may be thinking, its sloppy and unfinished. What I have been doing as of late is looking through "Phantom" and "Murder Party" to see how the vote system works and choosing players to apply those 'bonuses' to. So far I can't tell whats needed and whats extra. Any help would be much appreciated.

P.S.
After thinking about it more, this could even be implemented into the ladder for matches when players within your rating can not be found. Perhaps a notification pops up "A player outside of your rating has been found. A bonus will be given to the lower rated player as a Handicap. Do you except?" -Yes/No

I would sure love to play against some of the pro's, AND have a chance to win :D
ZeP: doesn't matter if it's an avatar, a trophy or a collection of dead cats
ZeP: it's the same code
User avatar
rockoe10
Avatar-of-War
 
Posts: 299
Joined: 05 Jan 2013, 05:09
Has liked: 36 times
Been liked: 17 times
FAF User Name: Rockoe10

Re: Handicap Mod

Postby Adraius » 16 Apr 2014, 03:43

I would love to have a simple mod that gives one or more players a static resource collection (and possibly a build speed?) boost, like that given to AIx bots. Like you, I have some friends who I'd like to play with, but I'm a lot more skilled than them. They don't find normal multiplayer fun and they feel overshadowed in games against the AI. A handicap mod would really increase everyone's enjoyment.

Adding this to ladder would a huge, lengthy discussion that should take place after the mod is complete. However, I'd love to see this mod for custom games, and I think it would really benefit those introducing friends to FAF.
Adraius
Avatar-of-War
 
Posts: 92
Joined: 03 Jul 2012, 08:11
Has liked: 5 times
Been liked: 3 times
FAF User Name: Adraius

Re: Handicap Mod

Postby Ayerelve » 12 May 2014, 16:06

Maybe take some inspiration from Sorian's handicap mod.

Right now it seems the mod causes desyncs, but I'm sure it could be improved ;)
Ayerelve
Crusader
 
Posts: 14
Joined: 09 Sep 2012, 17:27
Has liked: 0 time
Been liked: 14 times
FAF User Name: Lorodion

Re: Handicap Mod

Postby Szakalot » 12 May 2014, 17:15

I think the mod is a great idea, but keep it off the ladder! The whole point of a competitive ladder is that the better player wins, how would one go about determining whether the win was deserved or not, if weaker player was handicapped?

A possible solution would be to include separate matchmaking mode that aims at having 100% game balance via these handicaps. Also solves a problem of balancing 2000 & 0 skill players against two 1000s, you handicap everyone respectively towards the best player.
Szakalot
Avatar-of-War
 
Posts: 134
Joined: 23 Oct 2013, 14:45
Has liked: 8 times
Been liked: 12 times
FAF User Name: Szakalot

Re: Handicap Mod

Postby Ze_PilOt » 12 May 2014, 18:11

The biggest problem is to rate the handicap efficiently.

That would need a lot of data to pinpoint the influence of it.
Nossa wrote:I've never played GPG or even heard of FA until FAF started blowing up.
User avatar
Ze_PilOt
Supreme Commander
 
Posts: 8985
Joined: 24 Aug 2011, 18:41
Location: fafland
Has liked: 18 times
Been liked: 376 times
FAF User Name: Ze_PilOt

Re: Handicap Mod

Postby IceDreamer » 12 May 2014, 18:46

Szakalot wrote:I think the mod is a great idea, but keep it off the ladder! The whole point of a competitive ladder is that the better player wins, how would one go about determining whether the win was deserved or not, if weaker player was handicapped?

A possible solution would be to include separate matchmaking mode that aims at having 100% game balance via these handicaps. Also solves a problem of balancing 2000 & 0 skill players against two 1000s, you handicap everyone respectively towards the best player.


It wouldn't work. One of the biggest problems newer players have is managing their economy efficiently and using it all. You give them more resources, they're just going to waste them
IceDreamer
Supreme Commander
 
Posts: 2607
Joined: 27 Dec 2011, 07:01
Has liked: 138 times
Been liked: 488 times

Re: Handicap Mod

Postby YAHG » 05 Sep 2015, 14:11

I am also trying to do this and I THINK the code is already written (mostly) in phantom and on the FAF github.

I am currently stuck at not being able to get a copypasta version of phantom to work on my computer off of my local files (so I can mess with it and test my code). Solving this problem would likely lead to victory in the end...

How I believe this can be done:

1: Set up Dummy Factions in addition to the regular 5 (an example exists in phantom)

Code: Select all
FACTION_NAMES[6] = "random"

local RandomNoUEFFaction = {
        Key = 'randomNoUEF',
        DisplayName = "Random, but not UEF",       
        SmallIcon = "/faction_icon-sm/random_ico_no_uef.dds",
        TooltipID = 'lob_random_no_uef',
    }
   


Could be something like

Code: Select all
FACTION_NAMES[6] = "Handi UEF"

local HandiUEFFaction = {
        Key = 'HandiUEF',
        DisplayName = "Handicapped UEF with increased build rate and resource production",       
        SmallIcon = "/faction_icon-sm/uef_ico.dds", --Changing this Icon to one with inverted colors would make it easy to see who has it enable and who does not
        TooltipID = 'ThisNeedToBeMadeAsIDontUnderstandThis',  --Probably localization strings?
    }

FACTION_NAMES[7] = "Handi Aeon"

local HandiUEFFaction = {
        Key = 'HandiAEON',
        DisplayName = "Handicapped Aeon with increased build rate and resource production",       
        SmallIcon = "aeon_ico.dds", --Changing this Icon to one with inverted colors would make it easy to see who has it enable and who does not
        TooltipID = 'ThisNeedToBeMadeAsIDontUnderstandThis',  --Probably localization strings?
    }

FACTION_NAMES[8] = "Handi Cybran"

local HandiCybranFaction = {
        Key = 'HandiCybran',
        DisplayName = "Handicapped Cybran with increased build rate and resource production",       
        SmallIcon = "cybran_ico.dds", --Changing this Icon to one with inverted colors would make it easy to see who has it enable and who does not
        TooltipID = 'ThisNeedToBeMadeAsIDontUnderstandThis',  --Probably localization strings?
    }

FACTION_NAMES[9] = "Handi Seraphim"

local HandiSERAPHIMFaction = {
        Key = 'HandiSERAPHIM',
        DisplayName = "Handicapped Seraphim with increased build rate and resource production",       
        SmallIcon = "seraphim_ico.dds",   --Changing this Icon to one with inverted colors would make it easy to see who has it enable and who does not                                                                       
        TooltipID = 'ThisNeedToBeMadeAsIDontUnderstandThis',  --Probably localization strings?
    }

FACTION_NAMES[10] = "Handi Random"

local HandiRANDOMFaction = {
        Key = 'HandiRANDOM',
        DisplayName = "A Randomly selected Handicapped race with increased build rate and resource production",       
        SmallIcon = "random_ico.dds", --Changing this Icon to one with inverted colors would make it easy to see who has it enable and who does not
        TooltipID = 'ThisNeedToBeMadeAsIDontUnderstandThis',  --Probably localization strings?
    }



2: Assign factions to players with dummy factions while also tripping a boolean variable array for those players with Handicap Enabled (Example code is for cheating AI's but could probably be used in OnCreateHuman instead for our purposes).

Spoiler: show
OnCreateAI = function(self, planName)
self:CreateBrainShared(planName)

--LOG('*AI DEBUG: AI planName = ', repr(planName))
--LOG('*AI DEBUG: SCENARIO AI PLAN LIST = ', repr(aiScenarioPlans))
local civilian = false
for name,data in ScenarioInfo.ArmySetup do
if name == self.Name then
civilian = data.Civilian
break
end
end
if not civilian then
local per = ScenarioInfo.ArmySetup[self.Name].AIPersonality

-- Flag this brain as a possible brain to have skirmish systems enabled on
self.SkirmishSystems = true

local cheatPos = string.find( per, 'cheat')
if cheatPos then
AIUtils.SetupCheat(self, true)
ScenarioInfo.ArmySetup[self.Name].AIPersonality = string.sub( per, 1, cheatPos - 1 )
end


self.CurrentPlan = self.AIPlansList[self:GetFactionIndex()][1]

--LOG('*AI DEBUG: AI PLAN LIST = ', repr(self.AIPlansList))
--LOG('===== AI DEBUG: AI Brain Fork Theads =====')
self.EvaluateThread = self:ForkThread(self.EvaluateAIThread)
self.ExecuteThread = self:ForkThread(self.ExecuteAIThread)

self.PlatoonNameCounter = {}
self.PlatoonNameCounter['AttackForce'] = 0
self.BaseTemplates = {}
self.RepeatExecution = true
self:InitializeEconomyState()
self.IntelData = {
ScoutCounter = 0,
}

------changed this for Sorian AI
--Flag enemy starting locations with threat?
if ScenarioInfo.type == 'skirmish' and string.find(per, 'sorian') then
--Gives the initial threat a type so initial land platoons will actually attack it.
self:AddInitialEnemyThreatSorian(200, 0.005, 'Economy')
elseif ScenarioInfo.type == 'skirmish' then
self:AddInitialEnemyThreat(200, 0.005)
end
end
self.UnitBuiltTriggerList = {}
self.FactoryAssistList = {}
self.BrainType = 'AI'
end,


Code: Select all
            local cheatPos = string.find( per, 'cheat')
            if cheatPos then
                AIUtils.SetupCheat(self, true)
                ScenarioInfo.ArmySetup[self.Name].AIPersonality = string.sub( per, 1, cheatPos - 1 )
            end


I don't REALLY understand whats going on in this as I don't read Lua.

From what I can tell it seems like like for each Computer it spawns it checks their key value that was bound to them when they were given their AI.

See:
Spoiler: show
#****************************************************************************
#**
#** File : /lua/AI/CustomAIs_v2/SorianAI.lua
#** Author(s): Michael Robbins aka Sorian
#**
#** Summary : Utility File to insert custom AI into the game.
#**
#****************************************************************************

AI = {
Name = "Sorian AI",
Version = "2.1.1",
AIList = {
{
key = 'sorian',
name = "AI: Sorian AI",
},
{
key = 'sorianrush',
name = "AI: Sorian AI Rush",
},
{
key = 'sorianair',
name = "AI: Sorian AI Air",
},
{
key = 'sorianwater',
name = "AI: Sorian AI Water",
},
{
key = 'sorianturtle',
name = "AI: Sorian AI Turtle",
},
{
key = 'sorianadaptive',
name = "AI: Sorian AI Adaptive",
},
},
CheatAIList = {
{
key = 'soriancheat',
name = "AIx: Sorian AI",
},
{
key = 'sorianrushcheat',
name = "AIx: Sorian AI Rush",
},
{
key = 'sorianaircheat',
name = "AIx: Sorian AI Air",
},
{
key = 'sorianwatercheat',
name = "AIx: Sorian AI Water",
},
{
key = 'sorianturtlecheat',
name = "AIx: Sorian AI Turtle",
},
{
key = 'sorianadaptivecheat',
name = "AIx: Sorian AI Adaptive",
},
},
}


.. and if it finds the string "cheat" inside it trips the boolean, and then it checks to see if its tripped and then uses the function to add resource production and build power.

See:
Spoiler: show
function SetupCheat(aiBrain, cheatBool)
if cheatBool then
aiBrain.CheatEnabled = true

local buffDef = Buffs['CheatBuildRate']
local buffAffects = buffDef.Affects
buffAffects.BuildRate.Mult = tonumber(ScenarioInfo.Options.BuildMult)
-- LOG('*AI DEBUG: Build Rate Modified to: '..tonumber(ScenarioInfo.Options.BuildMult))

buffDef = Buffs['CheatIncome']
buffAffects = buffDef.Affects
buffAffects.EnergyProduction.Mult = tonumber(ScenarioInfo.Options.CheatMult)
buffAffects.MassProduction.Mult = tonumber(ScenarioInfo.Options.CheatMult)
-- LOG('*AI DEBUG: Resource Rate Modified to: '..tonumber(ScenarioInfo.Options.CheatMult))

local pool = aiBrain:GetPlatoonUniquelyNamed('ArmyPool')
for k,v in pool:GetPlatoonUnits() do
-- Apply build rate and income buffs
ApplyCheatBuffs(v)
end

end
end


I think this can be changed to make a player handicap but I am not all the way sure on the syntax etc.

3: Set up options in the lobby for setting the Handicap rate for the players separately from the rate for the Alx Computers (might as well do this step while at it since it allows people to play vs/with AlxAI while also using handicaps)

This:
Spoiler: show
AIOpts = {
{
default = 11,
label = "AIx Cheat Multiplier",
help = "Set the cheat multiplier for the cheating AIs.",
key = 'CheatMult',
values = {
{
text = "1.0",
help = "Cheat multiplier of 1.0",
key = '1.0',
},
{
text = "1.1",
help = "Cheat multiplier of 1.1",
key = '1.1',
},
{
text = "1.2",
help = "Cheat multiplier of 1.2",
key = '1.2',
},
{
text = "1.3",
help = "Cheat multiplier of 1.3",
key = '1.3',
},
{
text = "1.4",
help = "Cheat multiplier of 1.4",
key = '1.4',
},
{
text = "1.5",
help = "Cheat multiplier of 1.5",
key = '1.5',
},
{
text = "1.6",
help = "Cheat multiplier of 1.6",
key = '1.6',
},
{
text = "1.7",
help = "Cheat multiplier of 1.7",
key = '1.7',
},
{
text = "1.8",
help = "Cheat multiplier of 1.8",
key = '1.8',
},
{
text = "1.9",
help = "Cheat multiplier of 1.9",
key = '1.9',
},
{
text = "2.0",
help = "Cheat multiplier of 2.0",
key = '2.0',
},
{
text = "2.1",
help = "Cheat multiplier of 2.1",
key = '2.1',
},
{
text = "2.2",
help = "Cheat multiplier of 2.2",
key = '2.2',
},
{
text = "2.3",
help = "Cheat multiplier of 2.3",
key = '2.3',
},
{
text = "2.4",
help = "Cheat multiplier of 2.4",
key = '2.4',
},
{
text = "2.5",
help = "Cheat multiplier of 2.5",
key = '2.5',
},
{
text = "2.6",
help = "Cheat multiplier of 2.6",
key = '2.6',
},
{
text = "2.7",
help = "Cheat multiplier of 2.7",
key = '2.7',
},
{
text = "2.8",
help = "Cheat multiplier of 2.8",
key = '2.8',
},
{
text = "2.9",
help = "Cheat multiplier of 2.9",
key = '2.9',
},
{
text = "3.0",
help = "Cheat multiplier of 3.0",
key = '3.0',
},
{
text = "3.1",
help = "Cheat multiplier of 3.1",
key = '3.1',
},
{
text = "3.2",
help = "Cheat multiplier of 3.2",
key = '3.2',
},
{
text = "3.3",
help = "Cheat multiplier of 3.3",
key = '3.3',
},
{
text = "3.4",
help = "Cheat multiplier of 3.4",
key = '3.4',
},
{
text = "3.5",
help = "Cheat multiplier of 3.5",
key = '3.5',
},
{
text = "3.6",
help = "Cheat multiplier of 3.6",
key = '3.6',
},
{
text = "3.7",
help = "Cheat multiplier of 3.7",
key = '3.7',
},
{
text = "3.8",
help = "Cheat multiplier of 3.8",
key = '3.8',
},
{
text = "3.9",
help = "Cheat multiplier of 3.9",
key = '3.9',
},
{
text = "4.0",
help = "Cheat multiplier of 4.0",
key = '4.0',
},
{
text = "4.1",
help = "Cheat multiplier of 4.1",
key = '4.1',
},
{
text = "4.2",
help = "Cheat multiplier of 4.2",
key = '4.2',
},
{
text = "4.3",
help = "Cheat multiplier of 4.3",
key = '4.3',
},
{
text = "4.4",
help = "Cheat multiplier of 4.4",
key = '4.4',
},
{
text = "4.5",
help = "Cheat multiplier of 4.5",
key = '4.5',
},
{
text = "4.6",
help = "Cheat multiplier of 4.6",
key = '4.6',
},
{
text = "4.7",
help = "Cheat multiplier of 4.7",
key = '4.7',
},
{
text = "4.8",
help = "Cheat multiplier of 4.8",
key = '4.8',
},
{
text = "4.9",
help = "Cheat multiplier of 4.9",
key = '4.9',
},
{
text = "5.0",
help = "Cheat multiplier of 5.0",
key = '5.0',
},
{
text = "5.1",
help = "Cheat multiplier of 5.1",
key = '5.1',
},
{
text = "5.2",
help = "Cheat multiplier of 5.2",
key = '5.2',
},
{
text = "5.3",
help = "Cheat multiplier of 5.3",
key = '5.3',
},
{
text = "5.4",
help = "Cheat multiplier of 5.4",
key = '5.4',
},
{
text = "5.5",
help = "Cheat multiplier of 5.5",
key = '5.5',
},
{
text = "5.6",
help = "Cheat multiplier of 5.6",
key = '5.6',
},
{
text = "5.7",
help = "Cheat multiplier of 5.7",
key = '5.7',
},
{
text = "5.8",
help = "Cheat multiplier of 5.8",
key = '5.8',
},
{
text = "5.9",
help = "Cheat multiplier of 5.9",
key = '5.9',
},
{
text = "6.0",
help = "Cheat multiplier of 6.0",
key = '6.0',
},
},
},
{ default = 11,
label = "AIx Build Multiplier",
help = "Set the build rate multiplier for the cheating AIs.",
key = 'BuildMult',
values = {
{
text = "1.0",
help = "Build multiplier of 1.0",
key = '1.0',
},
{
text = "1.1",
help = "Build multiplier of 1.1",
key = '1.1',
},
{
text = "1.2",
help = "Build multiplier of 1.2",
key = '1.2',
},
{
text = "1.3",
help = "Build multiplier of 1.3",
key = '1.3',
},
{
text = "1.4",
help = "Build multiplier of 1.4",
key = '1.4',
},
{
text = "1.5",
help = "Build multiplier of 1.5",
key = '1.5',
},
{
text = "1.6",
help = "Build multiplier of 1.6",
key = '1.6',
},
{
text = "1.7",
help = "Build multiplier of 1.7",
key = '1.7',
},
{
text = "1.8",
help = "Build multiplier of 1.8",
key = '1.8',
},
{
text = "1.9",
help = "Build multiplier of 1.9",
key = '1.9',
},
{
text = "2.0",
help = "Build multiplier of 2.0",
key = '2.0',
},
{
text = "2.1",
help = "Build multiplier of 2.1",
key = '2.1',
},
{
text = "2.2",
help = "Build multiplier of 2.2",
key = '2.2',
},
{
text = "2.3",
help = "Build multiplier of 2.3",
key = '2.3',
},
{
text = "2.4",
help = "Build multiplier of 2.4",
key = '2.4',
},
{
text = "2.5",
help = "Build multiplier of 2.5",
key = '2.5',
},
{
text = "2.6",
help = "Build multiplier of 2.6",
key = '2.6',
},
{
text = "2.7",
help = "Build multiplier of 2.7",
key = '2.7',
},
{
text = "2.8",
help = "Build multiplier of 2.8",
key = '2.8',
},
{
text = "2.9",
help = "Build multiplier of 2.9",
key = '2.9',
},
{
text = "3.0",
help = "Build multiplier of 3.0",
key = '3.0',
},
{
text = "3.1",
help = "Build multiplier of 3.1",
key = '3.1',
},
{
text = "3.2",
help = "Build multiplier of 3.2",
key = '3.2',
},
{
text = "3.3",
help = "Build multiplier of 3.3",
key = '3.3',
},
{
text = "3.4",
help = "Build multiplier of 3.4",
key = '3.4',
},
{
text = "3.5",
help = "Build multiplier of 3.5",
key = '3.5',
},
{
text = "3.6",
help = "Build multiplier of 3.6",
key = '3.6',
},
{
text = "3.7",
help = "Build multiplier of 3.7",
key = '3.7',
},
{
text = "3.8",
help = "Build multiplier of 3.8",
key = '3.8',
},
{
text = "3.9",
help = "Build multiplier of 3.9",
key = '3.9',
},
{
text = "4.0",
help = "Build multiplier of 4.0",
key = '4.0',
},
{
text = "4.1",
help = "Build multiplier of 4.1",
key = '4.1',
},
{
text = "4.2",
help = "Build multiplier of 4.2",
key = '4.2',
},
{
text = "4.3",
help = "Build multiplier of 4.3",
key = '4.3',
},
{
text = "4.4",
help = "Build multiplier of 4.4",
key = '4.4',
},
{
text = "4.5",
help = "Build multiplier of 4.5",
key = '4.5',
},
{
text = "4.6",
help = "Build multiplier of 4.6",
key = '4.6',
},
{
text = "4.7",
help = "Build multiplier of 4.7",
key = '4.7',
},
{
text = "4.8",
help = "Build multiplier of 4.8",
key = '4.8',
},
{
text = "4.9",
help = "Build multiplier of 4.9",
key = '4.9',
},
{
text = "5.0",
help = "Build multiplier of 5.0",
key = '5.0',
},
{
text = "5.1",
help = "Build multiplier of 5.1",
key = '5.1',
},
{
text = "5.2",
help = "Build multiplier of 5.2",
key = '5.2',
},
{
text = "5.3",
help = "Build multiplier of 5.3",
key = '5.3',
},
{
text = "5.4",
help = "Build multiplier of 5.4",
key = '5.4',
},
{
text = "5.5",
help = "Build multiplier of 5.5",
key = '5.5',
},
{
text = "5.6",
help = "Build multiplier of 5.6",
key = '5.6',
},
{
text = "5.7",
help = "Build multiplier of 5.7",
key = '5.7',
},
{
text = "5.8",
help = "Build multiplier of 5.8",
key = '5.8',
},
{
text = "5.9",
help = "Build multiplier of 5.9",
key = '5.9',
},
{
text = "6.0",
help = "Build multiplier of 6.0",
key = '6.0',
},
},


Could simply become something like this:
Spoiler: show
HandiOpts = {
{
default = 11,
label = "Handicap Resource Multiplier",
help = "Set the cheat multiplier for the cheating AIs.",
key = 'HandicapIncomeMult',
values = {
{
text = "1.0",
help = "Handicap multiplier of 1.0",
key = '1.0',
},
{
text = "1.1",
help = "Handicap multiplier of 1.1",
key = '1.1',
},
{
text = "1.2",
help = "Handicap multiplier of 1.2",
key = '1.2',
},
{
text = "1.3",
help = "Handicap multiplier of 1.3",
key = '1.3',
},
{
text = "1.4",
help = "Handicap multiplier of 1.4",
key = '1.4',
},
{
text = "1.5",
help = "Handicap multiplier of 1.5",
key = '1.5',
},
{
text = "1.6",
help = "Handicap multiplier of 1.6",
key = '1.6',
},
{
text = "1.7",
help = "Handicap multiplier of 1.7",
key = '1.7',
},
{
text = "1.8",
help = "Handicap multiplier of 1.8",
key = '1.8',
},
{
text = "1.9",
help = "Handicap multiplier of 1.9",
key = '1.9',
},
{
text = "2.0",
help = "Handicap multiplier of 2.0",
key = '2.0',
},
{
text = "2.1",
help = "Handicap multiplier of 2.1",
key = '2.1',
},
{
text = "2.2",
help = "Handicap multiplier of 2.2",
key = '2.2',
},
{
text = "2.3",
help = "Handicap multiplier of 2.3",
key = '2.3',
},
{
text = "2.4",
help = "Handicap multiplier of 2.4",
key = '2.4',
},
{
text = "2.5",
help = "Handicap multiplier of 2.5",
key = '2.5',
},
{
text = "2.6",
help = "Handicap multiplier of 2.6",
key = '2.6',
},
{
text = "2.7",
help = "Handicap multiplier of 2.7",
key = '2.7',
},
{
text = "2.8",
help = "Handicap multiplier of 2.8",
key = '2.8',
},
{
text = "2.9",
help = "Handicap multiplier of 2.9",
key = '2.9',
},
{
text = "3.0",
help = "Handicap multiplier of 3.0",
key = '3.0',
},
{
text = "3.1",
help = "Handicap multiplier of 3.1",
key = '3.1',
},
{
text = "3.2",
help = "Handicap multiplier of 3.2",
key = '3.2',
},
{
text = "3.3",
help = "Handicap multiplier of 3.3",
key = '3.3',
},
{
text = "3.4",
help = "Handicap multiplier of 3.4",
key = '3.4',
},
{
text = "3.5",
help = "Handicap multiplier of 3.5",
key = '3.5',
},
{
text = "3.6",
help = "Handicap multiplier of 3.6",
key = '3.6',
},
{
text = "3.7",
help = "Handicap multiplier of 3.7",
key = '3.7',
},
{
text = "3.8",
help = "Handicap multiplier of 3.8",
key = '3.8',
},
{
text = "3.9",
help = "Handicap multiplier of 3.9",
key = '3.9',
},
{
text = "4.0",
help = "Handicap multiplier of 4.0",
key = '4.0',
},
{
text = "4.1",
help = "Handicap multiplier of 4.1",
key = '4.1',
},
{
text = "4.2",
help = "Handicap multiplier of 4.2",
key = '4.2',
},
{
text = "4.3",
help = "Handicap multiplier of 4.3",
key = '4.3',
},
{
text = "4.4",
help = "Handicap multiplier of 4.4",
key = '4.4',
},
{
text = "4.5",
help = "Handicap multiplier of 4.5",
key = '4.5',
},
{
text = "4.6",
help = "Handicap multiplier of 4.6",
key = '4.6',
},
{
text = "4.7",
help = "Handicap multiplier of 4.7",
key = '4.7',
},
{
text = "4.8",
help = "Handicap multiplier of 4.8",
key = '4.8',
},
{
text = "4.9",
help = "Handicap multiplier of 4.9",
key = '4.9',
},
{
text = "5.0",
help = "Handicap multiplier of 5.0",
key = '5.0',
},
{
text = "5.1",
help = "Handicap multiplier of 5.1",
key = '5.1',
},
{
text = "5.2",
help = "Handicap multiplier of 5.2",
key = '5.2',
},
{
text = "5.3",
help = "Handicap multiplier of 5.3",
key = '5.3',
},
{
text = "5.4",
help = "Handicap multiplier of 5.4",
key = '5.4',
},
{
text = "5.5",
help = "Handicap multiplier of 5.5",
key = '5.5',
},
{
text = "5.6",
help = "Handicap multiplier of 5.6",
key = '5.6',
},
{
text = "5.7",
help = "Handicap multiplier of 5.7",
key = '5.7',
},
{
text = "5.8",
help = "Handicap multiplier of 5.8",
key = '5.8',
},
{
text = "5.9",
help = "Handicap multiplier of 5.9",
key = '5.9',
},
{
text = "6.0",
help = "Handicap multiplier of 6.0",
key = '6.0',
},
},
},
{ default = 11,
label = "AIx Build Multiplier",
help = "Set the build rate multiplier for the Handicaped Players.",
key = 'HandicapBuildMult',
values = {
{
text = "1.0",
help = "Build multiplier of 1.0",
key = '1.0',
},
{
text = "1.1",
help = "Build multiplier of 1.1",
key = '1.1',
},
{
text = "1.2",
help = "Build multiplier of 1.2",
key = '1.2',
},
{
text = "1.3",
help = "Build multiplier of 1.3",
key = '1.3',
},
{
text = "1.4",
help = "Build multiplier of 1.4",
key = '1.4',
},
{
text = "1.5",
help = "Build multiplier of 1.5",
key = '1.5',
},
{
text = "1.6",
help = "Build multiplier of 1.6",
key = '1.6',
},
{
text = "1.7",
help = "Build multiplier of 1.7",
key = '1.7',
},
{
text = "1.8",
help = "Build multiplier of 1.8",
key = '1.8',
},
{
text = "1.9",
help = "Build multiplier of 1.9",
key = '1.9',
},
{
text = "2.0",
help = "Build multiplier of 2.0",
key = '2.0',
},
{
text = "2.1",
help = "Build multiplier of 2.1",
key = '2.1',
},
{
text = "2.2",
help = "Build multiplier of 2.2",
key = '2.2',
},
{
text = "2.3",
help = "Build multiplier of 2.3",
key = '2.3',
},
{
text = "2.4",
help = "Build multiplier of 2.4",
key = '2.4',
},
{
text = "2.5",
help = "Build multiplier of 2.5",
key = '2.5',
},
{
text = "2.6",
help = "Build multiplier of 2.6",
key = '2.6',
},
{
text = "2.7",
help = "Build multiplier of 2.7",
key = '2.7',
},
{
text = "2.8",
help = "Build multiplier of 2.8",
key = '2.8',
},
{
text = "2.9",
help = "Build multiplier of 2.9",
key = '2.9',
},
{
text = "3.0",
help = "Build multiplier of 3.0",
key = '3.0',
},
{
text = "3.1",
help = "Build multiplier of 3.1",
key = '3.1',
},
{
text = "3.2",
help = "Build multiplier of 3.2",
key = '3.2',
},
{
text = "3.3",
help = "Build multiplier of 3.3",
key = '3.3',
},
{
text = "3.4",
help = "Build multiplier of 3.4",
key = '3.4',
},
{
text = "3.5",
help = "Build multiplier of 3.5",
key = '3.5',
},
{
text = "3.6",
help = "Build multiplier of 3.6",
key = '3.6',
},
{
text = "3.7",
help = "Build multiplier of 3.7",
key = '3.7',
},
{
text = "3.8",
help = "Build multiplier of 3.8",
key = '3.8',
},
{
text = "3.9",
help = "Build multiplier of 3.9",
key = '3.9',
},
{
text = "4.0",
help = "Build multiplier of 4.0",
key = '4.0',
},
{
text = "4.1",
help = "Build multiplier of 4.1",
key = '4.1',
},
{
text = "4.2",
help = "Build multiplier of 4.2",
key = '4.2',
},
{
text = "4.3",
help = "Build multiplier of 4.3",
key = '4.3',
},
{
text = "4.4",
help = "Build multiplier of 4.4",
key = '4.4',
},
{
text = "4.5",
help = "Build multiplier of 4.5",
key = '4.5',
},
{
text = "4.6",
help = "Build multiplier of 4.6",
key = '4.6',
},
{
text = "4.7",
help = "Build multiplier of 4.7",
key = '4.7',
},
{
text = "4.8",
help = "Build multiplier of 4.8",
key = '4.8',
},
{
text = "4.9",
help = "Build multiplier of 4.9",
key = '4.9',
},
{
text = "5.0",
help = "Build multiplier of 5.0",
key = '5.0',
},
{
text = "5.1",
help = "Build multiplier of 5.1",
key = '5.1',
},
{
text = "5.2",
help = "Build multiplier of 5.2",
key = '5.2',
},
{
text = "5.3",
help = "Build multiplier of 5.3",
key = '5.3',
},
{
text = "5.4",
help = "Build multiplier of 5.4",
key = '5.4',
},
{
text = "5.5",
help = "Build multiplier of 5.5",
key = '5.5',
},
{
text = "5.6",
help = "Build multiplier of 5.6",
key = '5.6',
},
{
text = "5.7",
help = "Build multiplier of 5.7",
key = '5.7',
},
{
text = "5.8",
help = "Build multiplier of 5.8",
key = '5.8',
},
{
text = "5.9",
help = "Build multiplier of 5.9",
key = '5.9',
},
{
text = "6.0",
help = "Build multiplier of 6.0",
key = '6.0',
},
},


If someone knows how to get a lobby mod like phantom working in FA off of files they can mess around with then I can start trying to test out the code, it really does look like people have made all the pieces we would need already.

Pretty convenient of em eh? ;)
YAHG
 
Posts: 1
Joined: 05 Sep 2015, 12:52
Has liked: 0 time
Been liked: 0 time
FAF User Name: YAHG

Re: Handicap Mod

Postby IceDreamer » 06 Sep 2015, 04:06

This is worth submitting as a PR to the main game, support in lobby for this is totally something we should have.

Examine the default 2* resources mod to find how to apply a sweeping eco boost, and applying it in lobby should allow you to easily apply it based on player slot
IceDreamer
Supreme Commander
 
Posts: 2607
Joined: 27 Dec 2011, 07:01
Has liked: 138 times
Been liked: 488 times

Re: Handicap Mod

Postby Exotic_Retard » 06 Sep 2015, 14:31

if this is made i would handicap the better player rather than boost the worse one - because then the worse player will see the correct numbers, while the better one won't be as confused.

for same reason as above, i think a mass/power generation nerf would be better than reduced unit hp

however that would ruin some BOs but eh.


also this probably wont see ranked play but that's not exactly the point of it, is it?

you would use this to play vs noobs so they see correct gameplay while not being wrecked as hard
User avatar
Exotic_Retard
Contributor
 
Posts: 1470
Joined: 21 Mar 2013, 22:51
Has liked: 557 times
Been liked: 626 times
FAF User Name: Exotic_Retard

Re: Handicap Mod

Postby Deering » 06 Sep 2015, 15:31

I would use it. Recently installed sorians handicap mod. Hadn't gotten a chance to check it out yet but after reading this thread I wont.
Deering
Evaluator
 
Posts: 673
Joined: 18 Sep 2013, 11:47
Has liked: 16 times
Been liked: 41 times
FAF User Name: Deering

Next

Return to Mods & Tools

Who is online

Users browsing this forum: No registered users and 1 guest