1
0
mirror of https://github.com/veden/Rampant.git synced 2025-01-30 04:30:52 +02:00

f63db9a: factions no longer can mutate into the same faction

This commit is contained in:
Aaron Veden 2022-12-26 17:43:41 -08:00
parent f9fa028dac
commit 866579f2f4
No known key found for this signature in database
GPG Key ID: FF5990B1C6DD3F84
2 changed files with 21 additions and 6 deletions

View File

@ -12,6 +12,7 @@ Version: 3.2.0
- Fixed worm range scaler setting not adjusting prepareRange so worms could shoot without being out of the ground. (Thanks Garrotte)
- When a faction is removed during play alignment table will default to the neutral faction to prevent alignment table being nil
- Fixed settler groups not respecting expansion map setting for min and max time
- Fixed faction mutation mutating to an existing faction is no longer counted towards max number of mutations per base
Optimizations:
- Moved most constants out of global
- Removed new enemy variations setting

View File

@ -339,28 +339,38 @@ local function pickMutationFromDamageType(universe, damageType, roll, base)
local damageFactions = FACTIONS_BY_DAMAGE_TYPE[damageType]
local mutation
local mutated = false
if (damageFactions and (#damageFactions > 0)) then
if damageFactions and (#damageFactions > 0) then
mutation = damageFactions[universe.random(#damageFactions)]
if baseAlignment[2] then
if (baseAlignment[1] ~= mutation) and (baseAlignment[2] ~= mutation) then
mutated = true
end
if (roll < 0.05) then
baseAlignment[2] = nil
baseAlignment[1] = mutation
baseAlignment[2] = nil
elseif (roll < 0.25) then
baseAlignment[1] = mutation
else
baseAlignment[2] = mutation
end
else
if (baseAlignment[1] ~= mutation) then
mutated = true
end
if (roll < 0.85) then
base.alignment[1] = mutation
baseAlignment[1] = mutation
else
base.alignment[2] = mutation
baseAlignment[2] = mutation
end
end
else
mutation = findBaseMutation(universe)
if baseAlignment[2] then
if (baseAlignment[1] ~= mutation) and (baseAlignment[2] ~= mutation) then
mutated = true
end
if (roll < 0.05) then
baseAlignment[2] = nil
baseAlignment[1] = mutation
@ -370,6 +380,9 @@ local function pickMutationFromDamageType(universe, damageType, roll, base)
baseAlignment[2] = mutation
end
else
if (baseAlignment[1] ~= mutation) then
mutated = true
end
if (roll < 0.85) then
base.alignment[1] = mutation
else
@ -377,7 +390,7 @@ local function pickMutationFromDamageType(universe, damageType, roll, base)
end
end
end
if (universe.printBaseAdaptation) then
if mutated and universe.printBaseAdaptation then
if baseAlignment[2] then
game.print({"description.rampant--adaptation2DebugMessage",
damageType,
@ -397,6 +410,7 @@ local function pickMutationFromDamageType(universe, damageType, roll, base)
universe.MAX_BASE_MUTATIONS})
end
end
return mutated
end
function baseUtils.upgradeBaseBasedOnDamage(universe, base)
@ -422,7 +436,7 @@ function baseUtils.upgradeBaseBasedOnDamage(universe, base)
end
end
pickMutationFromDamageType(universe, pickedDamage, roll, base)
return pickMutationFromDamageType(universe, pickedDamage, roll, base)
end
function baseUtils.processBaseMutation(chunk, map, base)