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; }