简单简介
在3DM Mod站下载其他游戏最新的圣火令mod《封建2.5正式版》 Mod,由圣火令制作。一只双眼皮在我们的平台上分享了这个免费且高质量的游戏模组,让玩家们可以享受到更加丰富的游戏体验。快来3DM Mod站下载并尝试吧!
详细介绍
Mod作者: 圣火令 Mod版本: 2.5 Mod大小: 1.2MB 更新时间: 2020-12-10 00:47:03 发布时间: 2020-12-10 00:47:03
详细说明
2020.12.08 圣火令mod《封建v2.5》
已知机制:Unity引擎游戏,必须先放具有Structure属性的建筑物,才能使这个类及依附物生效,否则会报错退出。
因此:游牧模式开局,第一个建筑不能放矿井、站台等不具备Structure属性的建筑,建议先搭个火堆或房子的架子,哪怕不盖起来都行。
——从Stranded Deep、GreenHell 来的老玩家就不用我再提醒了。凡Unity必如此
已知机制:超过4倍速后(如原版的8倍速),远程打敌人会出现不掉血的现象。
这是Unity引擎的响应效率决定,因此最高给16倍速日常发展,来敌后吹角自动会切到4倍速。
=================================
最后更新:2020.12.08 圣火令mod: 《封建 v2.5稳定版》
适用游戏版本:1.7 [En]
基于3dm-1.7英文版制作,可用于 Version 1.7 released | Cheese Update 官方正版
3dm本体链接:https://bbs.3dmgame.com/forum.ph ... 6orderby%3Ddateline
mod下载地址:https://pan.baidu.com/s/1gjh0ZPw87SJR0HHqv5gMnQ
提取码:[hide]whtn[/hide]
因要开始工作,未来上线会少,不会经常查看回复。有事站内信
=================================
mod缘起及命名:为实现拉起长城宅着发展,“封闭”式“建设”,mod起名为《封建》。
因此一切修改都是朝着起一圈墙,安心发展来制作的。
=================================
功能汇总:
★1、点科技无前置要求,不限时代;
★2、点科技需要的点数降低一半;
★3、建筑无损;
★4、不受时代限制解锁GUI动作(含冶炼、动作条);
★5、不受时代限制解锁主面板按钮(含种植等);
★6、矿井无限资源;
★7、每次钓鱼满包回家;
★8、每次挖泥满包回家;
★9、双倍泥土刷新速度;
★10、改1键为16倍速;
★11、兽栏过冬按动物只数储备食物;
★12、兽栏过冬按动物只数储备水;
★13、商人不空闲可点击;
★14、商人远程响应;
★15、直接在城市里刷流民;
★16、站台放置完全不受限;
★17、种植园允许重叠建筑,可放在水边;
★18、墙放置取消实体限制;
★19、建筑去除地型限制,允许重叠农田等;
★20、吹角后自动改速到4x;
★21、桥解除30码长度限制,解除附近10码内有其他桥限制;
★21、硬核模式下解除暂停限制;
★22、建筑速度10倍(拆解速度正常未改);
★23、水车上岸;
★23、水车上岸后自动寻找其他建筑方向;
★24、双倍最大镜头高度,这回可以观察远景了;
★25、任务指派系统大优化。(去除原版冗余代码,改变优先级)
=================================
以下是修改代码公开,适用于有动手能力的玩家。
经测兼容《大平原》等场景脚本,很可能不兼容1块肉变99那种BT
=================================
isUnlockable ★1、点科技无前置要求,不限时代。 替换代码为
return this.getKnowledgeAmount() >= techType.getKnowledgeRequired();
getKnowledgeRequired ★2、降低科技需要的点数到1/2 RoundToInt( *0.5f);
decayCondition ★3、建筑不随时间流逝耐久,受敌攻击无损 decay(amount * 0f)
guiModifier.setEnabled ★4、解锁GUI动作(含冶炼、动作条) 在第二行增加代码 this.mEnabledState = EnabledState.Enabled;
addMainMenuButton ★5、解锁主面板按钮(含种植等)
element = new GuiModifier(element, false);
flag = false; 共四个,全改为true。
因涉及编译器生成,需用IL指令修改 37 40 58 61 行 ldc.i4.0 全改 ldc.i4.1
BeingStateMiningUnderground.tick ★6、矿井无限资源 删除行 value.decreaseResourceAmount();
bankHasFish ★7、每次钓鱼满包回家 return bank.getFishAmount() > 0.667f;
bankHasMud ★8、每次挖泥满包回家 return bank.getMudAmount() > 0.667f;
BankManager.tick ★9、双倍泥土刷新时间 2400改1200
GameGuiManager.updateSpeedInputs ★10、更改速度快键,1键原为1倍速,现改为16倍速,其他键不变
未知原因需要通过IL改 13行 1 改 16
getRequiredAnimalFood ★11、兽栏过冬按动物只数储备食物
getRequiredAnimalWater ★12、兽栏水储备 两处地址的 min 都改为 max
Trader.onSelected ★13、商人不空闲可点击 (直接替换成下方代码)
Trader trader = this.mTraderSaveState.ParentTrader.Value;
if (trader == null)
{
trader = this;
}
if (!trader.isDone())
{
TransientSingleton<GameGuiManager>.CurrentInstance.requestShowTradePanel(trader);
}
复制代码
AiRuleGoSettlement.run ★14、商人远程响应 铜器时代前走到第一个建筑后站定,铜器时代远距离站定
float num2;
if (TransientSingleton<KnowledgeManager>.CurrentInstance.getSuperEra() == SuperEra.MetalAge)
{
num2 = firstEntity.getMaxHalfSize() + 102f;
}
else
{
num2 = firstEntity.getMaxHalfSize() + 2f;
}
复制代码
SettlementManager.spawnMigrantGroup ★15、直接在城市中刷流民 Vector3 行及之前代码改为
RandomGenerator instance = Singleton<RandomGenerator>.Instance;
Structure firstEntity =TransientSingleton<EntityManager>.CurrentInstance.getFirstEntity<Structure>(EntityFlags.Fireplace);
if (firstEntity == null)
{
firstEntity = TransientSingleton<EntityManager>.CurrentInstance.getFirstEntity<Structure>(EntityFlags.Restplace);
}
if (firstEntity == null)
{
firstEntity = TransientSingleton<EntityManager>.CurrentInstance.getFirstEntity<Structure>();
}
Vector3 a = firstEntity.getPosition();
复制代码
EntityManager.isValidPlatformLocation ★16、站台放置 删除 if (!flag) false; 到最后一行 return true之间的代码
isValidPlantLocation ★17、种植放置
Bounds bounds = new Bounds(position, Constants.Vector3One * size);
new Bounds(bounds.center, bounds.size + Constants.Vector3One * 2f);
return !this.intersectsPlant(bounds) && GameUtil.floorPosition(position).y > TransientSingleton<TerrainManager>.CurrentInstance.getWaterHeight()-1.5f;
复制代码
isValidWallLocation ★18、墙放置
Bounds bounds = new Bounds(position, Constants.Vector3One);
new Bounds(bounds.center, bounds.size + Constants.Vector3One * 2f);
return !this.intersectsBlockedAiNodes(bounds) && !this.intersectsWall(bounds) && !this.intersectsOtherDoors(null, bounds) && !this.intersectsBridge(bounds);
复制代码
isValidBuildableLocation ★19、建筑去除部分限制(修改项很多,建议直接复制替换整个方法的代码)
using System;
using System.Collections.Generic;
using MadrugaShared;
using UnityEngine;
namespace DawnOfMan
{
public partial class EntityManager : TransientSingleton<EntityManager>, SelfSerializable
{
public bool isValidBuildableLocation(BuildableType buildableType, GameObject structureObject, bool flipped, List<int> blockedIndices)
{
Bounds cellBounds = new Bounds(structureObject.transform.position, Constants.Vector3One);
StructureType structureType = buildableType as StructureType;
if (structureType != null)
{
cellBounds = Structure.getCellBounds(structureObject, structureType, flipped);
}
float num = TransientSingleton<TerrainManager>.CurrentInstance.getWaterHeight() -1f;
Vector3 center = cellBounds.center;
float num2 = 20f;
Vector3 terrainSize = TransientSingleton<TerrainManager>.CurrentInstance.getTerrainSize();
if (center.x < num2 || center.z < num2 || center.x > terrainSize.x - num2 || center.z > terrainSize.z - num2)
{
return false;
}
Vector3 vector = GameUtil.floorPosition(center + cellBounds.extents);
Vector3 vector2 = GameUtil.floorPosition(center - cellBounds.extents);
Vector3 vector3 = GameUtil.floorPosition(center + new Vector3(cellBounds.extents.x, 0f, -cellBounds.extents.z));
Vector3 vector4 = GameUtil.floorPosition(center + new Vector3(-cellBounds.extents.x, 0f, cellBounds.extents.z));
float num3 = Mathf.Min(Mathf.Min(vector.y, vector2.y), Mathf.Min(vector3.y, vector4.y));
float num4 = Mathf.Max(Mathf.Max(vector.y, vector2.y), Mathf.Max(vector3.y, vector4.y));
if (num3 < num)
{
return false;
}
if (num4 - num3 > 1.5f)
{
return true;
}
if (!buildableType.hasAnyFlag(EntityFlags.Gate) && this.intersectsWall(cellBounds))
{
return false;
}
Bounds bounds = cellBounds;
bounds.extents += Constants.Vector3One * 0.5f;
if (this.intersectsPlant(bounds))
{
return true;
}
if (this.intersectsUnbuiltTransports(cellBounds))
{
return false;
}
if (this.intersectsBlockedAiNodes(cellBounds))
{
return false;
}
Bounds bounds2 = cellBounds;
bounds2.extents += Constants.Vector3One;
if (TransientSingleton<TerrainManager>.CurrentInstance.treeIntersection(bounds2))
{
return true;
}
EntityFlags exclusionFlags = buildableType.getExclusionFlags();
if (exclusionFlags != EntityFlags.None)
{
Vector3 position = structureObject.transform.position;
Structure structure = this.findNearestStructure(position, exclusionFlags);
if (structure != null && Vector3.Distance(structure.getPosition(), position) < buildableType.getExclusionDistance())
{
return true;
}
}
return true;
}
}
}
复制代码
SettlementManager.setAlertLevel ★20、吹角自动改速到4x 在声音播放代码下加内容
TransientSingleton<TimeManager>.CurrentInstance.setTimeScale(4f);
PlacedBridge.refresh ★21、桥解除30码限制,解除附近有桥限制 min(num,30)改为num 删除 && num>30 多桥同列改true
GameModeHardcore.isPauseAllowed ★21、硬核模式,解除暂停限制。
Buildable.increaseBuildProgress ★22、建筑速度10倍
isValidWaterBuildableLocation ★23、水车上岸(直接复制替换代码)
Bounds cellBounds = Structure.getCellBounds(structureObject, (StructureType)buildableType, false);
Bounds bounds = cellBounds;
bounds.extents += Constants.Vector3One * 0.5f;
if (this.intersectsPlant(bounds))
{
return true;
}
if (this.intersectsBlockedAiNodes(cellBounds))
{
return false;
}
cellBounds.extents += Constants.Vector3One;
if (TransientSingleton<TerrainManager>.CurrentInstance.treeIntersection(cellBounds))
{
return true;
}
if (this.intersectsDoors(structureObject, blockedIndices))
{
return true;
}
if (!TransientSingleton<EntityManager>.CurrentInstance.getNavigationGraph().getNode(structureObject.transform.position).isActive())
{
return false;
}
BankRef bankRef = TransientSingleton<BankManager>.CurrentInstance.findNearest(structureObject.transform.position);
if (bankRef != null)
{
Vector3 normal = bankRef.getBank().getNormal(structureObject.transform.position);
rotation = Quaternion.LookRotation(normal, Constants.Vector3Up).eulerAngles.y;
}
return true;
复制代码
updateBuildableValidity ★23、水车上岸寻址地面高度(配合上岸)。改原79行为
y = TransientSingleton<TerrainManager>.CurrentInstance.getWaterHeight();
position.y = Mathf.Max(position.y, y);
复制代码
CameraModeInteractive.update ★24、设置最大镜头高度 原 8 30 改8 60可观察全景
EntityManager.assignTask ★25、任务指派系统优化 原成年人优先处开始改为
if (human2.getAge() == Age.Young)
{
num2 -= 33f;
}
if (human2.getAge() == Age.Old)
{
num2 -= 25f;
}
删除冗余的一次运输工具验证 Transport currentTransport = human2.getCurrentTransport();
=================================
文件说明
提取码:whtn