diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index dd999220..f9834b8b 100644
Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml b/1.6/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml
index 455bb44b..e27ffb9f 100644
--- a/1.6/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml
+++ b/1.6/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml
@@ -4,25 +4,14 @@
WULA_Child_Backstory01
False
Childhood
-
旧日遗物
- 旧日遗物
+ 产地:
+
[PAWN_nameDef] 是诞生于乌拉帝国的合成人。
3
3
- 3
- 3
- 3
- 3
- 3
- 3
- 3
- 3
- 3
- 3
- Wula_Old_Synth_Backstory_Categories
Wula_Backstory_Categories
None
@@ -38,17 +27,4 @@
-
-
- WULA_Child_Backstory999
- False
- Childhood
- 未知
- 未知
- [PAWN_nameDef] 是真正的乌拉星人,但是无人知晓她诞生于何时——自从乌拉帝国大内战后,这个衰退的超级帝国已经很久很久没有诞生任何新生命了。
-
- Wula_Backstory_Categories_For_RealWula
-
- None
-
diff --git a/1.6/1.6/Defs/FactionDefs/Factions_Player_WULA.xml b/1.6/1.6/Defs/FactionDefs/Factions_Player_WULA.xml
index 7725dee0..061fe674 100644
--- a/1.6/1.6/Defs/FactionDefs/Factions_Player_WULA.xml
+++ b/1.6/1.6/Defs/FactionDefs/Factions_Player_WULA.xml
@@ -10,7 +10,6 @@
colonists
Spacer
- Wula_Old_Synth_Backstory_Categories
Wula_Backstory_Categories
@@ -159,8 +158,7 @@
ActiveDropPodMechanoid
DropPodIncomingMechanoidRapid
- Wula_Backstory_Categories_For_Hostile_Faction
- Wula_Old_Synth_Backstory_Categories
+ Wula_Backstory_Categories
\ No newline at end of file
diff --git a/1.6/1.6/Defs/PawnKinds/PawnKinds_Wula.xml b/1.6/1.6/Defs/PawnKinds/PawnKinds_Wula.xml
index 3067c795..0d6b9651 100644
--- a/1.6/1.6/Defs/PawnKinds/PawnKinds_Wula.xml
+++ b/1.6/1.6/Defs/PawnKinds/PawnKinds_Wula.xml
@@ -4,7 +4,7 @@
Wula_PawnKind
WulaSpecies
- PlayerColony
+ PlayerColony
@@ -19,7 +19,8 @@
- 18
+ 18
+ 20
true
0
10~20
@@ -39,96 +40,6 @@
Wula_Backstory_Categories
- Wula_Old_Synth_Backstory_Categories
-
-
-
-
-
- Wula_PawnKind_Ingame
-
- WulaSpecies
- PlayerColony
-
-
-
- Wula/Item/WULA_Species_Icon
- SRA/Pawn/Mechanoid/AllegianceOverlays/None
- CutoutWithOverlay
- Graphic_Multi
- 1.1
-
- (0.2, 0.3, 0.2)
-
-
-
-
- 18
- 0
- 10~20
- 10~20
- Poor
- false
-
- Wula_Apparel_Init
-
-
-
-
-
- 0
- 0
- 0
-
-
-
-
- Wula_Backstory_Categories
- Wula_Old_Synth_Backstory_Categories
-
-
-
-
-
-
- RealWula_PawnKind
-
- WulaSpeciesReal
- PlayerColony
-
-
-
- Wula/Item/WULA_Species_Icon
- SRA/Pawn/Mechanoid/AllegianceOverlays/None
- CutoutWithOverlay
- Graphic_Multi
- 1.1
-
- (0.2, 0.3, 0.2)
-
-
-
-
- 18
- true
- 0
- 10~20
- 10~20
- Poor
- false
-
- Wula_Apparel_Init
-
-
-
- 0
- 0
- 1000~2000
-
-
-
-
- Wula_Backstory_Categories_For_RealWula
@@ -362,8 +273,7 @@
- Wula_Backstory_Categories_For_Hostile_Faction
- Wula_Old_Synth_Backstory_Categories
+ Wula_Backstory_Categories
diff --git a/1.6/1.6/Defs/RecipeDefs/Recipes_WULA.xml b/1.6/1.6/Defs/RecipeDefs/Recipes_WULA.xml
index 675bff65..f5ba65d0 100644
--- a/1.6/1.6/Defs/RecipeDefs/Recipes_WULA.xml
+++ b/1.6/1.6/Defs/RecipeDefs/Recipes_WULA.xml
@@ -339,6 +339,37 @@
+
+ WULA_Build_Wula_Synth
+
+ 建造一台URa-00"机械乌拉"合成人,是乌拉帝国合成人殖民地的主体种族,作为机械体的同时拥有复杂拟真的模拟情感。\n\n以此方法建造的合成人被称为新生代合成人,它们在出厂时只会设置人格,不会拥有任何技能等级,需要通过乌拉帝国数据库下载相关技能!
+
+
+
+
+ Steel
+
+
+ 5
+
+
+
+
+ ComponentIndustrial
+
+
+ 6
+
+
+
+ 1
+
+
+ WulaSpecies
+
+ WULA_Synth_Productor_Technology
+
+
WULA_Build_AI_Heavy_Panzer
@@ -352,14 +383,14 @@
600
-
+
@@ -368,14 +399,14 @@
24
-
+
1
@@ -525,68 +556,6 @@
WULA_Alpha_Wolf_Technology
-
- WULA_Build_Wula_Synth
-
- 建造一台URa-00"机械乌拉"合成人,是乌拉帝国合成人殖民地的主体种族,作为机械体的同时拥有复杂拟真的模拟情感。\n\n以此方法建造的合成人被称为新生代合成人,它们在出厂时只会设置人格,不会拥有任何技能等级,需要通过乌拉帝国数据库下载相关技能!
-
-
-
-
- WULA_Addons_Antenna_Base
-
-
- 1
-
-
-
-
- WULA_Energy_Furnace_Base
-
-
- 1
-
-
-
-
- WULA_Charge_Cube
-
-
- 30
-
-
-
-
- Chemfuel
-
-
- 140
-
-
-
-
- Steel
-
-
- 400
-
-
-
-
- ComponentIndustrial
-
-
- 8
-
-
-
- 1
-
-
- WulaSpecies
-
- WULA_Synth_Productor_Technology
-
WULA_Build_Mech_Cat
diff --git a/1.6/1.6/Defs/ResearchProjectDefs/ResearchProjects_WULA.rar b/1.6/1.6/Defs/ResearchProjectDefs/ResearchProjects_WULA.rar
new file mode 100644
index 00000000..418d0cab
Binary files /dev/null and b/1.6/1.6/Defs/ResearchProjectDefs/ResearchProjects_WULA.rar differ
diff --git a/1.6/1.6/Defs/ResearchProjectDefs/ResearchProjects_WULA.xml b/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml
similarity index 92%
rename from 1.6/1.6/Defs/ResearchProjectDefs/ResearchProjects_WULA.xml
rename to 1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml
index 264a287c..436e78d2 100644
--- a/1.6/1.6/Defs/ResearchProjectDefs/ResearchProjects_WULA.xml
+++ b/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects_Remake.xml
@@ -6,11 +6,12 @@
+
- WULA_Base_Technology
-
- 获取可以支持乌拉帝国合成人独自生存的各种知识,包括能源获取、修复基础部位损伤、建造维修站等。
- 300
+ WULA_Colony_License_LV1_Technology
+
+ 乌拉帝国的第一阶殖民地许可,代表此殖民地正式被乌拉帝国承认为其下辖殖民地之一,允许建立与乌拉帝国舰队进行通讯的设施。(只有机械乌拉才能呼叫舰队)
+ 35000
0.00
3.20
@@ -19,15 +20,64 @@
WULA_Structure_Technology
-
- 获取构建乌拉帝国堡垒结构的知识,包括坚固耐用的墙和通过速度较高的自动门。
+
+ 允许殖民地申请空投乌拉帝国堡垒结构,包括坚固耐用的墙和通过速度较高的自动门。
600
1.00
4.70
- WULA_Base_Technology
+ WULA_Colony_License_LV1_Technology
+
+ WULA_Synth_Clothes_Technology
+ 1.00
+ 2.60
+
+ 许殖民地申请加工基础衣物
+ 400
+
+ ComplexClothing
+ WULA_Colony_License_LV1_Technology
+
+
+
+ WULA_Synth_Weapon_Technology
+ 1.00
+ 0.20
+
+ 开发能够武装乌拉帝国合成人的老式气动武器,以抵御针对殖民地的外部袭击。
+ 600
+
+ Machining
+ WULA_Colony_License_LV1_Technology
+
+
+
+ WULA_Bunker_Drop_Technology
+ 1.00
+ 0.20
+
+ 开发能够武装乌拉帝国合成人的老式气动武器,以抵御针对殖民地的外部袭击。
+ 600
+
+ Machining
+ WULA_Colony_License_LV1_Technology
+
+
+
+ WULA_Synth_Productor_Technology
+
+ 获取构建乌拉帝国合成人的相关知识,以增加殖民地人口。
+ 1000
+ 2.00
+ 5.50
+
+ WULA_Machine_Productor_Technology
+
+
+
+
WULA_Adv_WorkTable_Technology
3.00
@@ -64,18 +114,6 @@
-
- WULA_Synth_Clothes_Technology
- 1.00
- 2.60
-
- 开发能够被乌拉帝国合成人穿着的基础衣物。
- 400
-
- ComplexClothing
- WULA_Base_Technology
-
-
WULA_Synth_Clothes_2_Technology
4.50
@@ -124,18 +162,6 @@
-
- WULA_Synth_Weapon_Technology
- 1.00
- 0.20
-
- 开发能够武装乌拉帝国合成人的老式气动武器,以抵御针对殖民地的外部袭击。
- 600
-
- Machining
- WULA_Base_Technology
-
-
WULA_Synth_Weapon_2_Melee_Technology
@@ -275,17 +301,6 @@
WULA_Base_Technology
-
- WULA_Synth_Productor_Technology
-
- 获取构建乌拉帝国合成人的相关知识,以增加殖民地人口。
- 1000
- 2.00
- 5.50
-
- WULA_Machine_Productor_Technology
-
-
WULA_Machine_Productor_1_Technology
3.00
diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml
index 697aea5a..c054bdf6 100644
--- a/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml
+++ b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml
@@ -950,6 +950,9 @@
180
1.0
+
+ WULA_Build_Wula_Synth
+
(3,3)
2120
PassThroughOnly
diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Misc_Buildings.xml b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Misc_Buildings.xml
index abb372af..559d46e7 100644
--- a/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Misc_Buildings.xml
+++ b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Misc_Buildings.xml
@@ -1,5 +1,6 @@
+
WULA_Fake_Mothership_Beacon_Building
diff --git a/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml b/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml
index edc78c6f..7387f520 100644
--- a/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml
+++ b/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml
@@ -730,8 +730,17 @@
4
-
-
+
+
+
+ 5
+ 6
+
+
+
+ WULA_WeaponArmor_Productor
+
+
@@ -782,155 +791,6 @@
-
- WulaSpeciesReal
-
- 一个源自远古时代的种族。她们曾将荣光播撒至银河的每一个角落,建立起庞大而强盛的乌拉帝国。然而,辉煌未能永恒,无情的分裂与惨烈的内战最终撕裂了这个帝国,将其拖入了衰亡的深渊,这些人则是乌拉帝国万古长战后仅存的遗孤。
- Wula/Things/WulaSpeciesReal/WULA_Species_Icon
-
-
-
-
-
-
-
-
-
-
-
- Wula/Things/WulaSpeciesReal/Addons/WULA_Bow_Tie
-
-
- (0,0.32)
-
-
- (0,0.32)
-
-
- (-0.1,0.32)
-
-
- (-0.1,0.32)
-
-
- true
-
-
-
-
- 0
-
-
-
- Wula/Things/WulaSpeciesReal/Bodies/
- Wula/Things/WulaSpeciesReal/Heads/
- Things/Pawn/Humanlike/Bodies/Dessicated/Dessicated_Thin
- Wula/Things/WulaSpeciesReal/Bodies
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
- BulletImpact_Flesh
-
- 4
- 1
-
- -50
- 40
-
- 1.25
-
- 60
-
- 75
-
- 1
-
- 1
-
- 1
-
- 1
-
- 1
-
- 1
-
- 1
-
- 1
- 0
-
-
-
- Normal
- Humanlike
- HumanlikeConstant
- Humanlike
- Filth_Blood
- 1
- Leather_Human
- Meat_Human
-
- Human
- OmnivoreHuman
-
- 150
- false
-
-
-
-
- FacialAnimation.DrawFaceGraphicsComp
-
-
- FacialAnimation.HeadControllerComp
-
-
- FacialAnimation.EyeballControllerComp
-
-
- FacialAnimation.LidControllerComp
-
-
- FacialAnimation.BrowControllerComp
-
-
- FacialAnimation.MouthControllerComp
-
-
- FacialAnimation.SkinControllerComp
-
-
- FacialAnimation.FacialAnimationControllerComp
-
-
-
-
-
-
BulletImpact_Metal
@@ -1115,8 +975,6 @@
-
-
Wula_AI_Heavy_Panzer
diff --git a/Source/WulaFallenEmpire/GlobalWorkTable/Building_GlobalWorkTable.cs b/Source/WulaFallenEmpire/GlobalWorkTable/Building_GlobalWorkTable.cs
index f8d29c56..fa43d6bf 100644
--- a/Source/WulaFallenEmpire/GlobalWorkTable/Building_GlobalWorkTable.cs
+++ b/Source/WulaFallenEmpire/GlobalWorkTable/Building_GlobalWorkTable.cs
@@ -230,7 +230,7 @@ namespace WulaFallenEmpire
private List> DistributeItemsToPods(GlobalStorageWorldComponent storage, int podCount)
{
List> podContents = new List>();
-
+
// 初始化空投舱内容列表
for (int i = 0; i < podCount; i++)
{
@@ -246,14 +246,31 @@ namespace WulaFallenEmpire
ThingDef thingDef = kvp.Key;
int remainingCount = kvp.Value;
- // 按照堆叠限制分割物品
- while (remainingCount > 0)
+ // 如果是Pawn,需要特殊处理
+ if (thingDef.race != null)
{
- int stackSize = Mathf.Min(remainingCount, thingDef.stackLimit);
- Thing thing = ThingMaker.MakeThing(thingDef);
- thing.stackCount = stackSize;
- allItems.Add(thing);
- remainingCount -= stackSize;
+ // 对于Pawn,每个单独生成
+ for (int i = 0; i < remainingCount; i++)
+ {
+ PawnKindDef randomPawnKind = GetRandomPawnKindForType(thingDef);
+ if (randomPawnKind != null)
+ {
+ Pawn pawn = PawnGenerator.GeneratePawn(randomPawnKind, Faction.OfPlayer);
+ allItems.Add(pawn);
+ }
+ }
+ }
+ else
+ {
+ // 对于普通物品,按照堆叠限制分割
+ while (remainingCount > 0)
+ {
+ int stackSize = Mathf.Min(remainingCount, thingDef.stackLimit);
+ Thing thing = ThingMaker.MakeThing(thingDef);
+ thing.stackCount = stackSize;
+ allItems.Add(thing);
+ remainingCount -= stackSize;
+ }
}
}
@@ -277,6 +294,89 @@ namespace WulaFallenEmpire
return podContents;
}
+ // 在 Building_GlobalWorkTable.cs 中修改 GetRandomPawnKindForType 方法
+ private PawnKindDef GetRandomPawnKindForType(ThingDef pawnType)
+ {
+ if (pawnType.race == null) return null;
+
+ // 获取建筑拥有者派系
+ Faction buildingFaction = this.Faction;
+ if (buildingFaction == null)
+ {
+ Log.Warning("Building has no faction, cannot select appropriate pawn kind");
+ return null;
+ }
+
+ // 获取该种族的所有PawnKindDef
+ var availableKinds = DefDatabase.AllDefs
+ .Where(kind => kind.race == pawnType)
+ .ToList();
+
+ if (availableKinds.Count == 0) return null;
+
+ // 按优先级分组
+ var matchingFactionKinds = availableKinds
+ .Where(kind => kind.defaultFactionDef != null &&
+ kind.defaultFactionDef == buildingFaction.def)
+ .ToList();
+
+ var noFactionKinds = availableKinds
+ .Where(kind => kind.defaultFactionDef == null)
+ .ToList();
+
+ // 排除与建筑派系不同的PawnKind
+ var excludedKinds = availableKinds
+ .Where(kind => kind.defaultFactionDef != null &&
+ kind.defaultFactionDef != buildingFaction.def)
+ .ToList();
+
+ // 记录调试信息
+ if (DebugSettings.godMode)
+ {
+ Log.Message($"[DEBUG] PawnKind selection for {pawnType.defName}:");
+ Log.Message($" Building faction: {buildingFaction.def.defName}");
+ Log.Message($" Matching faction kinds: {matchingFactionKinds.Count}");
+ Log.Message($" No faction kinds: {noFactionKinds.Count}");
+ Log.Message($" Excluded kinds: {excludedKinds.Count}");
+
+ foreach (var kind in matchingFactionKinds)
+ Log.Message($" Matching: {kind.defName} (faction: {kind.defaultFactionDef?.defName ?? "null"})");
+
+ foreach (var kind in noFactionKinds)
+ Log.Message($" No faction: {kind.defName}");
+
+ foreach (var kind in excludedKinds)
+ Log.Message($" Excluded: {kind.defName} (faction: {kind.defaultFactionDef?.defName})");
+ }
+
+ // 优先级选择
+ PawnKindDef selectedKind = null;
+
+ // 1. 最高优先级:与建筑派系相同的PawnKind
+ if (matchingFactionKinds.Count > 0)
+ {
+ selectedKind = matchingFactionKinds.RandomElement();
+ if (DebugSettings.godMode)
+ Log.Message($"[DEBUG] Selected matching faction kind: {selectedKind.defName}");
+ }
+ // 2. 备选:没有defaultFactionDef的PawnKind
+ else if (noFactionKinds.Count > 0)
+ {
+ selectedKind = noFactionKinds.RandomElement();
+ if (DebugSettings.godMode)
+ Log.Message($"[DEBUG] Selected no-faction kind: {selectedKind.defName}");
+ }
+ // 3. 没有符合条件的PawnKind
+ else
+ {
+ Log.Warning($"No suitable PawnKind found for {pawnType.defName} with building faction {buildingFaction.def.defName}");
+ return null;
+ }
+
+ return selectedKind;
+ }
+
+
// 新增:创建空投舱
private bool CreateDropPod(IntVec3 dropCell, List contents)
{
diff --git a/Source/WulaFallenEmpire/GlobalWorkTable/GlobalProductionOrder.cs b/Source/WulaFallenEmpire/GlobalWorkTable/GlobalProductionOrder.cs
index 20045e27..6667a169 100644
--- a/Source/WulaFallenEmpire/GlobalWorkTable/GlobalProductionOrder.cs
+++ b/Source/WulaFallenEmpire/GlobalWorkTable/GlobalProductionOrder.cs
@@ -101,12 +101,20 @@ namespace WulaFallenEmpire
return;
foreach (var product in recipe.products)
{
- globalStorage.AddToOutputStorage(product.thingDef, product.count);
+ // 检查产物是否为Pawn
+ if (product.thingDef.race != null)
+ {
+ // 对于Pawn,我们存储的是Pawn的ThingDef,在释放时再随机生成PawnKind
+ globalStorage.AddToOutputStorage(product.thingDef, product.count);
+ }
+ else
+ {
+ // 对于普通物品,正常存储
+ globalStorage.AddToOutputStorage(product.thingDef, product.count);
+ }
}
-
currentCount++;
progress = 0f; // 生产完成后重置进度
-
if (currentCount >= targetCount)
{
state = ProductionState.Completed;
diff --git a/Source/WulaFallenEmpire/GlobalWorkTable/ITab_GlobalBills.cs b/Source/WulaFallenEmpire/GlobalWorkTable/ITab_GlobalBills.cs
index 8ac863f8..f2654a39 100644
--- a/Source/WulaFallenEmpire/GlobalWorkTable/ITab_GlobalBills.cs
+++ b/Source/WulaFallenEmpire/GlobalWorkTable/ITab_GlobalBills.cs
@@ -462,17 +462,17 @@ namespace WulaFallenEmpire
Messages.Message($"GOD MODE: Completed order for {order.recipe.LabelCap} ({remainingCount} units)", MessageTypeDefOf.PositiveEvent);
Log.Message($"[GOD MODE] Force completed order: {order.recipe.defName}, produced {remainingCount} units");
}
-
private List GenerateRecipeOptions()
{
var options = new List();
-
+
foreach (var recipe in SelTable.def.AllRecipes)
{
+ // 移除对Pawn配方的过滤,允许所有配方
if (recipe.AvailableNow && recipe.AvailableOnNow(SelTable))
{
string label = recipe.LabelCap;
-
+
options.Add(new FloatMenuOption(label, () =>
{
var newOrder = new GlobalProductionOrder
@@ -481,19 +481,19 @@ namespace WulaFallenEmpire
targetCount = 1,
paused = true // 初始暂停
};
-
+
SelTable.globalOrderStack.AddOrder(newOrder);
SoundDefOf.Click.PlayOneShotOnCamera();
Log.Message($"[DEBUG] Added order for {recipe.defName}");
}));
}
}
-
+
if (options.Count == 0)
{
options.Add(new FloatMenuOption("WULA_NoAvailableRecipes".Translate(), null));
}
-
+
return options;
}