暂存
This commit is contained in:
Binary file not shown.
@@ -69,6 +69,7 @@
|
|||||||
<!-- 隐藏事件:触发一次袭击 -->
|
<!-- 隐藏事件:触发一次袭击 -->
|
||||||
<WulaFallenEmpire.EventDef>
|
<WulaFallenEmpire.EventDef>
|
||||||
<defName>Wula_HiddenEvent_TriggerRaid</defName>
|
<defName>Wula_HiddenEvent_TriggerRaid</defName>
|
||||||
|
<hiddenWindow>true</hiddenWindow>
|
||||||
<dismissEffects>
|
<dismissEffects>
|
||||||
<li>
|
<li>
|
||||||
<effects>
|
<effects>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
<li Class="WulaFallenEmpire.Effect_ClearVariable">
|
<li Class="WulaFallenEmpire.Effect_ClearVariable">
|
||||||
<name>Wula_FE_Spiritualist_Goodwill</name>
|
<name>Wula_FE_Spiritualist_Goodwill</name>
|
||||||
</li>
|
</li>
|
||||||
<li Class="WulaFallenEmpire.Effect_StoreFactionGoodwill">
|
<li Class="WulaFallenEmpire.Effect_CheckFactionGoodwill">
|
||||||
<factionDef>Wula_FE_Spiritualist_Faction</factionDef>
|
<factionDef>Wula_FE_Spiritualist_Faction</factionDef>
|
||||||
<variableName>Wula_FE_Spiritualist_Goodwill</variableName>
|
<variableName>Wula_FE_Spiritualist_Goodwill</variableName>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
40
1.6/1.6/Defs/EventDefs/WULA_Effect_Examples.xml
Normal file
40
1.6/1.6/Defs/EventDefs/WULA_Effect_Examples.xml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<WulaFallenEmpire.EventDef>
|
||||||
|
<defName>WULA_Debug_StoreAllStats</defName>
|
||||||
|
<label>Debug: Store All Stats</label>
|
||||||
|
<description>一个用于将各种游戏统计数据存储到变量中的调试事件。</description>
|
||||||
|
<hiddenWindow>true</hiddenWindow>
|
||||||
|
|
||||||
|
<dismissEffects>
|
||||||
|
<li>
|
||||||
|
<effects>
|
||||||
|
|
||||||
|
<!-- 1. 存储派系好感度 (int) -->
|
||||||
|
<li Class="WulaFallenEmpire.Effect_CheckFactionGoodwill">
|
||||||
|
<factionDef>Mechanoid</factionDef>
|
||||||
|
<variableName>Debug_MechanoidGoodwill</variableName>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- 2. 存储殖民地财富 (float) -->
|
||||||
|
<li Class="WulaFallenEmpire.Effect_StoreColonyWealth">
|
||||||
|
<variableName>Debug_ColonyWealth</variableName>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- 3. 存储真实游戏时间 (float, 秒) -->
|
||||||
|
<li Class="WulaFallenEmpire.Effect_StoreRealPlayTime">
|
||||||
|
<variableName>Debug_RealPlayTimeSeconds</variableName>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- 4. 存储已过去的游戏天数 (int) -->
|
||||||
|
<li Class="WulaFallenEmpire.Effect_StoreDaysPassed">
|
||||||
|
<variableName>Debug_DaysPassed</variableName>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</effects>
|
||||||
|
</li>
|
||||||
|
</dismissEffects>
|
||||||
|
</WulaFallenEmpire.EventDef>
|
||||||
|
|
||||||
|
</Defs>
|
||||||
@@ -16,7 +16,37 @@ namespace WulaFallenEmpire
|
|||||||
EventDef currentDef = localDef;
|
EventDef currentDef = localDef;
|
||||||
list.Add(new DebugMenuOption(currentDef.defName, DebugMenuOptionMode.Action, delegate
|
list.Add(new DebugMenuOption(currentDef.defName, DebugMenuOptionMode.Action, delegate
|
||||||
{
|
{
|
||||||
Find.WindowStack.Add(new Dialog_CustomDisplay(currentDef));
|
if (currentDef.hiddenWindow)
|
||||||
|
{
|
||||||
|
if (!currentDef.dismissEffects.NullOrEmpty())
|
||||||
|
{
|
||||||
|
foreach (var conditionalEffect in currentDef.dismissEffects)
|
||||||
|
{
|
||||||
|
string reason;
|
||||||
|
bool conditionsMet = true;
|
||||||
|
if (!conditionalEffect.conditions.NullOrEmpty())
|
||||||
|
{
|
||||||
|
foreach (var condition in conditionalEffect.conditions)
|
||||||
|
{
|
||||||
|
if (!condition.IsMet(out reason))
|
||||||
|
{
|
||||||
|
conditionsMet = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (conditionsMet)
|
||||||
|
{
|
||||||
|
conditionalEffect.Execute(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Find.WindowStack.Add(new Dialog_CustomDisplay(currentDef));
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
Find.WindowStack.Add(new Dialog_DebugOptionListLister(list));
|
Find.WindowStack.Add(new Dialog_DebugOptionListLister(list));
|
||||||
|
|||||||
@@ -506,43 +506,53 @@ namespace WulaFallenEmpire
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IncidentParms parms = new IncidentParms
|
||||||
|
{
|
||||||
|
target = map,
|
||||||
|
points = this.points,
|
||||||
|
faction = factionInst,
|
||||||
|
raidStrategy = this.raidStrategy,
|
||||||
|
raidArrivalMode = this.raidArrivalMode,
|
||||||
|
pawnGroupMakerSeed = Rand.Int,
|
||||||
|
forced = true
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!RCellFinder.TryFindRandomPawnEntryCell(out parms.spawnCenter, map, CellFinder.EdgeRoadChance_Hostile))
|
||||||
|
{
|
||||||
|
Log.Error("[WulaFallenEmpire] Effect_TriggerRaid could not find a valid spawn center.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PawnGroupMakerParms groupMakerParms = new PawnGroupMakerParms
|
||||||
|
{
|
||||||
|
groupKind = this.groupKind ?? PawnGroupKindDefOf.Combat,
|
||||||
|
tile = map.Tile,
|
||||||
|
points = this.points,
|
||||||
|
faction = factionInst,
|
||||||
|
raidStrategy = this.raidStrategy,
|
||||||
|
seed = parms.pawnGroupMakerSeed
|
||||||
|
};
|
||||||
|
|
||||||
|
List<Pawn> pawns;
|
||||||
if (!pawnGroupMakers.NullOrEmpty())
|
if (!pawnGroupMakers.NullOrEmpty())
|
||||||
{
|
{
|
||||||
IncidentParms parms = new IncidentParms
|
var groupMaker = pawnGroupMakers.RandomElementByWeight(x => x.commonality);
|
||||||
{
|
pawns = groupMaker.GeneratePawns(groupMakerParms).ToList();
|
||||||
target = map,
|
}
|
||||||
points = this.points,
|
else
|
||||||
faction = factionInst,
|
{
|
||||||
raidStrategy = this.raidStrategy,
|
pawns = PawnGroupMakerUtility.GeneratePawns(groupMakerParms).ToList();
|
||||||
raidArrivalMode = this.raidArrivalMode,
|
}
|
||||||
pawnGroupMakerSeed = Rand.Int,
|
|
||||||
forced = true
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!RCellFinder.TryFindRandomPawnEntryCell(out parms.spawnCenter, map, CellFinder.EdgeRoadChance_Hostile))
|
if (pawns.Any())
|
||||||
{
|
{
|
||||||
Log.Error("[WulaFallenEmpire] Effect_TriggerRaid could not find a valid spawn center.");
|
raidArrivalMode.Worker.Arrive(pawns, parms);
|
||||||
return;
|
// Assign Lord and LordJob to make the pawns actually perform the raid.
|
||||||
}
|
raidStrategy.Worker.MakeLords(parms, pawns);
|
||||||
|
|
||||||
PawnGroupMakerParms groupMakerParms = new PawnGroupMakerParms
|
if (!string.IsNullOrEmpty(letterLabel) && !string.IsNullOrEmpty(letterText))
|
||||||
{
|
{
|
||||||
groupKind = this.groupKind ?? PawnGroupKindDefOf.Combat,
|
Find.LetterStack.ReceiveLetter(letterLabel, letterText, LetterDefOf.ThreatBig, pawns[0]);
|
||||||
tile = map.Tile,
|
|
||||||
points = this.points,
|
|
||||||
faction = factionInst,
|
|
||||||
raidStrategy = this.raidStrategy,
|
|
||||||
seed = parms.pawnGroupMakerSeed
|
|
||||||
};
|
|
||||||
|
|
||||||
List<Pawn> pawns = PawnGroupMakerUtility.GeneratePawns(groupMakerParms).ToList();
|
|
||||||
if (pawns.Any())
|
|
||||||
{
|
|
||||||
raidArrivalMode.Worker.Arrive(pawns, parms);
|
|
||||||
if (!string.IsNullOrEmpty(letterLabel) && !string.IsNullOrEmpty(letterText))
|
|
||||||
{
|
|
||||||
Find.LetterStack.ReceiveLetter(letterLabel, letterText, LetterDefOf.ThreatBig, pawns[0]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -577,4 +587,68 @@ namespace WulaFallenEmpire
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class Effect_StoreRealPlayTime : Effect
|
||||||
|
{
|
||||||
|
public string variableName;
|
||||||
|
|
||||||
|
public override void Execute(Dialog_CustomDisplay dialog = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(variableName))
|
||||||
|
{
|
||||||
|
Log.Error("[WulaFallenEmpire] Effect_StoreRealPlayTime is not configured correctly (missing variableName).");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var eventVarManager = Find.World.GetComponent<EventVariableManager>();
|
||||||
|
float realPlayTime = Find.GameInfo.RealPlayTimeInteracting;
|
||||||
|
Log.Message($"[EventSystem] Storing real play time ({realPlayTime}s) into variable '{variableName}'.");
|
||||||
|
eventVarManager.SetVariable(variableName, realPlayTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Effect_StoreDaysPassed : Effect
|
||||||
|
{
|
||||||
|
public string variableName;
|
||||||
|
|
||||||
|
public override void Execute(Dialog_CustomDisplay dialog = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(variableName))
|
||||||
|
{
|
||||||
|
Log.Error("[WulaFallenEmpire] Effect_StoreDaysPassed is not configured correctly (missing variableName).");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var eventVarManager = Find.World.GetComponent<EventVariableManager>();
|
||||||
|
int daysPassed = GenDate.DaysPassed;
|
||||||
|
Log.Message($"[EventSystem] Storing days passed ({daysPassed}) into variable '{variableName}'.");
|
||||||
|
eventVarManager.SetVariable(variableName, daysPassed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Effect_StoreColonyWealth : Effect
|
||||||
|
{
|
||||||
|
public string variableName;
|
||||||
|
|
||||||
|
public override void Execute(Dialog_CustomDisplay dialog = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(variableName))
|
||||||
|
{
|
||||||
|
Log.Error("[WulaFallenEmpire] Effect_StoreColonyWealth is not configured correctly (missing variableName).");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map currentMap = Find.CurrentMap;
|
||||||
|
if (currentMap == null)
|
||||||
|
{
|
||||||
|
Log.Error("[WulaFallenEmpire] Effect_StoreColonyWealth cannot execute without a current map.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var eventVarManager = Find.World.GetComponent<EventVariableManager>();
|
||||||
|
float wealth = currentMap.wealthWatcher.WealthTotal;
|
||||||
|
Log.Message($"[EventSystem] Storing colony wealth ({wealth}) into variable '{variableName}'.");
|
||||||
|
eventVarManager.SetVariable(variableName, wealth);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user