Modrules.lua: Difference between revisions
→Details: block in sub-table headings |
→movement: First sub-table of tags! |
||
| Line 12: | Line 12: | ||
===movement=== | ===movement=== | ||
{{tag | |||
|name = allowAirPlanesToLeaveMap | |||
|type = bool | |||
|default = true | |||
|description = Are aircraft allowed to fly outside the bounds of the map?}} | |||
{{tag | |||
|name = allowPushingEnemyUnits | |||
|type = bool | |||
|default = false | |||
|description = Can enemy units push each other out of the way?}} | |||
{{tag | |||
|name = allowCrushingAlliedUnits | |||
|type = bool | |||
|default = false | |||
|description = Can allied units crush each other? Units still have to be explicitly set as crushable using the <code>crushable</code> parameter of [[Lua_SyncedCtrl#Unit_Control|Spring.SetUnitBlocking]].}} | |||
{{tag | |||
|name = allowUnitCollisionDamage | |||
|type = bool | |||
|default = false | |||
|description = Do unit-unit collisions cause damage?}} | |||
===nanospray=== | ===nanospray=== | ||
Revision as of 23:25, 2 April 2012
Location
modrules.lua is a file in the Gamedata/ directory of a Spring game.
Purpose
This file controls various global parameters of the game, for example how fast units gain experience, what unit types can be transported, how fine grained the LOS system is, etc.
Source
The engine source code which parses the data from this file is viewable here:rts/Sim/Misc/ModInfo.cpp
Details
Modrules.lua is divided into several sub-tables containing tags specific to each section, as follows:
movement
bool allowAirPlanesToLeaveMap default: true
- Are aircraft allowed to fly outside the bounds of the map?
bool allowPushingEnemyUnits default: false
- Can enemy units push each other out of the way?
bool allowCrushingAlliedUnits default: false
- Can allied units crush each other? Units still have to be explicitly set as crushable using the
crushableparameter of Spring.SetUnitBlocking.
bool allowUnitCollisionDamage default: false
- Do unit-unit collisions cause damage?
nanospray
construction
reclaim
repair
resurrect
capture
paralyze
fireAtDead
transportability
experience
flankingBonus
The page Units:FlankingBonus explains the flanking bonus that can be set in this file.
featureLOS
sensors
los
system
Examples
Empty
modrules.lua can simply return an empty table like this:
return {}
if you do this, Spring will use its hardcoded default values.
Complete
This is the full modrules.lua of the zeroK game:
local modrules = {
construction = {
constructionDecay = false; -- defaults to true
constructionDecayTime = 6.66; -- defaults to 6.66
constructionDecaySpeed = 0.03; -- defaults to 0.03
},
reclaim = {
multiReclaim = 1; -- defaults to 0
reclaimMethod = 0; -- defaults to 1
unitMethod = 0; -- defaults to 1
unitEnergyCostFactor = 0; -- defaults to 0
unitEfficiency = 0.5; -- defaults to 1
featureEnergyCostFactor = 0; -- defaults to 0
allowEnemies = false; -- defaults to true
allowAllies = false; -- defaults to true
},
repair = {
energyCostFactor = 1/3, -- defaults to 0
},
resurrect = {
energyCostFactor = 1.2, -- defaults to 0.5
},
capture = {
energyCostFactor = 1, -- defaults to 0
},
paralyze = {
paralyzeOnMaxHealth = true, -- defaults to true
},
sensors = {
requireSonarUnderWater = true, -- defaults to true
los = {
losMipLevel = 3, -- defaults to 1
losMul = 1, -- defaults to 1
airMipLevel = 4, -- defaults to 2
airMul = 1, -- defaults to 1
},
},
transportability = {
transportGround = 1; -- defaults to 1
transportHover = 1; -- defaults to 0
transportShip = 0; -- defaults to 0
transportAir = 0; -- defaults to 0
},
flankingBonus = {
-- defaults to 1
-- 0: no flanking bonus
-- 1: global coords, mobile
-- 2: unit coords, mobile
-- 3: unit coords, locked
defaultMode=0;
},
experience = {
experienceMult = 1.0; -- defaults to 1.0
-- these are all used in the following form:
-- value = defValue * (1 + (scale * (exp / (exp + 1))))
powerScale = 0.7; -- defaults to 1.0
healthScale = 0; -- defaults to 0.7
reloadScale = 0.5; -- defaults to 0.4
},
fireAtDead = {
fireAtKilled = false; -- defaults to false
fireAtCrashing = false; -- defaults to false
},
nanospray = {
allow_team_colors = true; -- defaults to true
},
featureLOS = {
-- 0 - no default LOS for features
-- 1 - gaia features always visible
-- 2 - allyteam/gaia features always visible
-- 3 - all features always visible
-- default 3
featureVisibility = 1;
},
-- new in >84.0
movement = {
allowAirPlanesToLeaveMap = true; -- defaults to true
allowPushingEnemyUnits = false; -- defaults to false
allowCrushingAlliedUnits = false; -- defaults to false
allowUnitCollisionDamage = false; -- defaults to false
},
-- new in >84.0
system = {
luaThreadingModel = 2;
pathFinderSystem = 0;
},
}
return modrules