TimberCommons - ihsoft/TimberbornMods GitHub Wiki
TimberCommons предоставляет переиспользуемые компоненты оросительных башен, которые другие моды могут добавлять в
свои здания.
Текущая публичная поверхность сосредоточена вокруг:
Если ваш мод использует эти компоненты, добавьте TimberCommons в зависимости:
{
"Id": "Timberborn.IgorZ.TimberCommons",
"MinimumVersion": "1.16.0"
}Указывайте минимальную версию, которая соответствует API, на который вы опираетесь.
Оросительная башня поддерживает полную влажность на достижимых клетках, пока башня активна.
Важные особенности:
- Дальность орошения считается от границы здания, а не от центра здания.
- Орошаться могут только клетки на базовом Z-уровне башни.
- Клетки должны быть соединены с башней через ортогональных соседей. Одной диагональной связи недостаточно.
- Разрывы рельефа, другие высоты и полные барьеры влажности блокируют распространение орошения.
- Эффективная дальность меняется вместе с эффективностью здания.
-
Coverage- это отношение текущих достижимых клеток к максимальному покрытию на плоской поверхности. - Потребление масштабируется по
Coverage, поэтому башня, которая может достичь меньше клеток, потребляет меньше ресурсов.
IrrigationTower - базовый компонент. В большинстве модов лучше использовать один из готовых компонентов ниже, а не
наследоваться от него.
Используйте GoodConsumingIrrigationTower для простой башни, которая работает от одного потребляемого товара, обычно
воды.
Она работает вместе со стандартным компонентом Timberborn GoodConsumingBuilding:
- Здание потребляет ровно один товар.
- Башня орошает, пока good-consuming building может потреблять товар и потребление не поставлено на паузу.
- Настроенная скорость потребления должна быть максимальной скоростью для полного покрытия.
- Во время игры TimberCommons масштабирует скорость потребления по
Coverage. - Если на здании есть компоненты
IRangeEffect, все они применяются, пока орошение активно. -
EffectGroupигнорируется для этого типа башни.
Spec башни - GoodConsumingIrrigationTowerSpec:
{
"GoodConsumingIrrigationTowerSpec": {
"IrrigationRange": 12,
"IrrigateFromGroundTilesOnly": true
}
}Поля:
-
IrrigationRange- максимальная дальность орошения от границы здания. -
IrrigateFromGroundTilesOnly- еслиtrue, стартовыми точками считаются только foundation tiles, помеченные как ground-only. Значение по умолчанию:true.
Используйте ManufactoryIrrigationTower, когда орошение должно управляться рецептами.
Она работает вместе со стандартным компонентом Timberborn Manufactory:
- Башня выступает production executor.
- Не добавляйте другой production executor на то же здание, например workplace или
ProductionIncreaser. - Башня орошает, пока manufactory готова производить.
- Производственный прогресс идет, пока возможно орошение.
- Длительность рецепта корректируется по
Coverage, поэтому потребление ингредиентов масштабируется по площади, которую реально можно орошать. - Range effects можно выбирать для каждого рецепта через маппинг
Effects.
Spec башни - ManufactoryIrrigationTowerSpec:
{
"ManufactoryIrrigationTowerSpec": {
"IrrigationRange": 12,
"IrrigateFromGroundTilesOnly": true,
"Effects": [
"MyMod.WaterOnly=wet",
"MyMod.FertilizedWater=fertilized"
]
}
}Поля:
-
IrrigationRange- максимальная дальность орошения от границы здания. -
IrrigateFromGroundTilesOnly- еслиtrue, стартовыми точками считаются только foundation tiles, помеченные как ground-only. Значение по умолчанию:true. -
Effects- соответствия рецептов и групп эффектов в формате<recipe id>=<effect group>.
Когда текущий рецепт меняется, TimberCommons сбрасывает эффекты старого рецепта и применяет эффекты, соответствующие группе нового рецепта.
Range effects - это необязательные компоненты, которые реагируют на состояние орошения.
Интерфейс - IRangeEffect:
-
EffectGroupзадает группу эффекта. -
ApplyEffect(HashSet<Vector3Int> tiles)применяет эффект к текущим достижимым клеткам. -
ResetEffect()удаляет эффект, примененный последним вызовомApplyEffect.
Несколько эффектов могут использовать одну и ту же группу. В этом случае все подходящие эффекты применяются вместе.
ModifyGrowableGrowthRangeEffect
меняет скорость роста growables в радиусе действия.
{
"ModifyGrowableGrowthRangeEffectSpec": {
"EffectGroup": "fertilized",
"GrowthRateModifier": 25.0,
"ComponentsFilter": [
"Timberborn.Forestry.TreeComponent"
],
"PrefabNamesFilter": []
}
}Поля:
-
EffectGroup- имя группы, используемое вManufactoryIrrigationTowerSpec.Effects. -
GrowthRateModifier- относительный процент.25.0означает +25%,-10.0означает -10%. -
ComponentsFilter- необязательные полные имена типов компонентов, которые должны быть у growable. -
PrefabNamesFilter- необязательные точные имена prefab'ов, на которые действует эффект.
Если несколько модификаторов роста влияют на один growable, однотипные модификаторы не складываются. TimberCommons использует самый сильный положительный модификатор и самый сильный отрицательный модификатор.
BlockContaminationRangeEffect
блокирует загрязнение на достижимых клетках, пока эффект активен.
{
"BlockContaminationRangeEffectSpec": {
"EffectGroup": "wet"
}
}Поля:
-
EffectGroup- имя группы, используемое вManufactoryIrrigationTowerSpec.Effects.
Используйте GoodConsumingIrrigationTower, если:
- здание непрерывно потребляет один товар;
- выбор рецепта не нужен;
- все range effects должны всегда применяться, пока активно орошение.
Используйте ManufactoryIrrigationTower, если:
- здание должно использовать рецепты;
- разные рецепты должны давать разные эффекты;
- здание может потреблять несколько ингредиентов или топливо.
Для собственного здания-оросителя:
- Добавьте
Timberborn.IgorZ.TimberCommonsв зависимости вашего мода. - Добавьте в blueprint здания либо
GoodConsumingIrrigationTowerSpec, либоManufactoryIrrigationTowerSpec. - Добавьте соответствующие стандартные компоненты Timberborn, например
GoodConsumingBuildingилиManufactory. - Настройте потребление или рецепты для максимального покрытия.
- При необходимости добавьте specs для range effects в тот же blueprint здания.
- Проверьте башню на плоской земле, рядом с разрывами рельефа, рядом с барьерами влажности и при сниженной эффективности.
-
GoodConsumingIrrigationTowerподдерживает ровно один потребляемый товар. - Орошение не проходит через перепады высоты.
- Орошение не проходит через полные барьеры влажности.
- Башня орошает только клетки, соединенные со зданием через ортогональных соседей.
-
EffectGroupважен дляManufactoryIrrigationTower; дляGoodConsumingIrrigationTowerон игнорируется.