diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll index ad92913e..dda1f49b 100644 Binary files a/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/1.6/Defs/DamageDefs/Damages_Wula.xml b/1.6/Defs/DamageDefs/Damages_Wula.xml index e671af25..78152004 100644 --- a/1.6/Defs/DamageDefs/Damages_Wula.xml +++ b/1.6/Defs/DamageDefs/Damages_Wula.xml @@ -1,6 +1,6 @@  - + Wula_Darm_Matter_Beam true @@ -41,4 +41,16 @@ {0} 由于暗物质湮灭爆炸而死。 + + + Wula_Darm_Matter_Beam_Explode + +
  • + WULA_Darkmatter_Explosion + 0.01 + true + true +
  • +
    +
    diff --git a/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml b/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml new file mode 100644 index 00000000..3cc27c45 --- /dev/null +++ b/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml @@ -0,0 +1,32 @@ + + + + + WULA_Darkmatter_Explosion + + 你身上沾染了不明暗物质!马上就要爆炸了!只能祝你好运咯~ + (1, 1, 0.8) + HediffWithComps + +
  • + -4 +
  • +
  • + Wula_Darm_Matter_Flame + Explosion_Bomb + 1.5 + true + 15 + 0.10 + 10 +
  • +
  • + + +
  • + + true +
  • + +
    +
    \ No newline at end of file diff --git a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Sample_Weapon.xml b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Sample_Weapon.xml index 4ee608a1..cf9ae383 100644 --- a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Sample_Weapon.xml +++ b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Sample_Weapon.xml @@ -42,10 +42,10 @@
  • WulaFallenEmpire.Verb_ShootArc true - Wula_Darm_Matter_Beam + Wula_Darm_Matter_Beam_Explode 20 20 - 0.5 + 1 34.9 25 1.0 diff --git a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml index 95251cee..16369576 100644 --- a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml +++ b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml @@ -1577,26 +1577,25 @@ Bullet_WULA_RW_Handle_Cannon - - Projectile_Explosive + WulaFallenEmpire.Projectile_ConfigurableHellsphereCannon Things/Projectile/HellsphereCannon Graphic_Single MoteGlow (1.5, 3) - + Vaporize 75 - 300 - 2.5 + 75 + 1.5 0.75 - + diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo index d2045a8f..3a65d2f5 100644 Binary files a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo and b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo differ diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json index 6fc89b93..efa8019f 100644 --- a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json +++ b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json @@ -3,48 +3,12 @@ "WorkspaceRootPath": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\verb\\shootarc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:verb\\shootarc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\verb\\projectile_configurablehellspherecannon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:verb\\projectile_configurablehellspherecannon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\verb\\propershotgun.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:verb\\propershotgun.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\verb\\trackingbullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:verb\\trackingbullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\VerbPropertiesExplosiveBeam.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:Verb\\VerbPropertiesExplosiveBeam.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\eventsystem\\dialog_customdisplay.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:eventsystem\\dialog_customdisplay.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\eventsystem\\condition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:eventsystem\\condition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\eventsystem\\compopencustomui.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:eventsystem\\compopencustomui.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\eventsystem\\debugactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:eventsystem\\debugactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\eventsystem\\effect.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:eventsystem\\effect.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\CustomUIDef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:EventSystem\\CustomUIDef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Verb_ShootBeamExplosive.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:Verb\\Verb_ShootBeamExplosive.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\building_wula_darkenergy_engine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:building_wula_darkenergy_engine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -54,7 +18,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", @@ -63,137 +27,28 @@ { "$type": "Document", "DocumentIndex": 0, - "Title": "ShootArc.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\ShootArc.cs", - "RelativeDocumentMoniker": "Verb\\ShootArc.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\ShootArc.cs", - "RelativeToolTip": "Verb\\ShootArc.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAFAAAA", + "Title": "Projectile_ConfigurableHellsphereCannon.cs", + "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Projectile_ConfigurableHellsphereCannon.cs", + "RelativeDocumentMoniker": "Verb\\Projectile_ConfigurableHellsphereCannon.cs", + "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Projectile_ConfigurableHellsphereCannon.cs", + "RelativeToolTip": "Verb\\Projectile_ConfigurableHellsphereCannon.cs", + "ViewState": "AQIAAC0AAAAAAAAAAAAUwFwAAAABAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-08-01T04:09:11.909Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "Trackingbullet.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Trackingbullet.cs", - "RelativeDocumentMoniker": "Verb\\Trackingbullet.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Trackingbullet.cs", - "RelativeToolTip": "Verb\\Trackingbullet.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvwYAAAAaAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-31T17:19:18.131Z", + "WhenOpened": "2025-08-01T05:40:06.726Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 1, - "Title": "ProperShotgun.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\ProperShotgun.cs", - "RelativeDocumentMoniker": "Verb\\ProperShotgun.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\ProperShotgun.cs", - "RelativeToolTip": "Verb\\ProperShotgun.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAaAAAA", + "Title": "Building_Wula_DarkEnergy_Engine.cs", + "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Building_Wula_DarkEnergy_Engine.cs", + "RelativeDocumentMoniker": "Building_Wula_DarkEnergy_Engine.cs", + "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Building_Wula_DarkEnergy_Engine.cs", + "RelativeToolTip": "Building_Wula_DarkEnergy_Engine.cs", + "ViewState": "AQIAAAAAAAAAAAAAAADwvwUAAAAWAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-31T17:19:04.819Z", + "WhenOpened": "2025-08-01T05:27:49.469Z", "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "VerbPropertiesExplosiveBeam.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\VerbPropertiesExplosiveBeam.cs", - "RelativeDocumentMoniker": "Verb\\VerbPropertiesExplosiveBeam.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\VerbPropertiesExplosiveBeam.cs", - "RelativeToolTip": "Verb\\VerbPropertiesExplosiveBeam.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-31T17:16:20.591Z" - }, - { - "$type": "Document", - "DocumentIndex": 10, - "Title": "Verb_ShootBeamExplosive.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Verb_ShootBeamExplosive.cs", - "RelativeDocumentMoniker": "Verb\\Verb_ShootBeamExplosive.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Verb\\Verb_ShootBeamExplosive.cs", - "RelativeToolTip": "Verb\\Verb_ShootBeamExplosive.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvwYAAAAaAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-31T17:12:13.033Z" - }, - { - "$type": "Document", - "DocumentIndex": 8, - "Title": "Effect.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\Effect.cs", - "RelativeDocumentMoniker": "EventSystem\\Effect.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\Effect.cs", - "RelativeToolTip": "EventSystem\\Effect.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAACICAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-31T16:05:42.638Z" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "CompOpenCustomUI.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\CompOpenCustomUI.cs", - "RelativeDocumentMoniker": "EventSystem\\CompOpenCustomUI.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\CompOpenCustomUI.cs", - "RelativeToolTip": "EventSystem\\CompOpenCustomUI.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-31T07:40:45.671Z" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "Dialog_CustomDisplay.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\Dialog_CustomDisplay.cs", - "RelativeDocumentMoniker": "EventSystem\\Dialog_CustomDisplay.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\Dialog_CustomDisplay.cs", - "RelativeToolTip": "EventSystem\\Dialog_CustomDisplay.cs", - "ViewState": "AQIAAO8AAAAAAAAAAAAiwAAAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-27T10:59:13.84Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "DebugActions.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\DebugActions.cs", - "RelativeDocumentMoniker": "EventSystem\\DebugActions.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\DebugActions.cs", - "RelativeToolTip": "EventSystem\\DebugActions.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvxoAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-27T10:59:11.817Z" - }, - { - "$type": "Document", - "DocumentIndex": 9, - "Title": "CustomUIDef.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\CustomUIDef.cs", - "RelativeDocumentMoniker": "EventSystem\\CustomUIDef.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\CustomUIDef.cs", - "RelativeToolTip": "EventSystem\\CustomUIDef.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-27T10:59:01.929Z" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "Condition.cs", - "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\Condition.cs", - "RelativeDocumentMoniker": "EventSystem\\Condition.cs", - "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\EventSystem\\Condition.cs", - "RelativeToolTip": "EventSystem\\Condition.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-27T10:50:26.799Z" } ] } diff --git a/Source/WulaFallenEmpire/TimedExplosion.cs b/Source/WulaFallenEmpire/TimedExplosion.cs new file mode 100644 index 00000000..0efca5ec --- /dev/null +++ b/Source/WulaFallenEmpire/TimedExplosion.cs @@ -0,0 +1,244 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using Verse; +using Verse.Noise; + +namespace WulaFallenEmpire +{ + public class HediffComp_TimedExplosion : HediffComp + { + // 倒计时相关字段 + public int ticksToDisappear; + public int disappearsAfterTicks; + public int seed; + + // 配置属性快捷访问 + public HediffCompProperties_TimedExplosion Props => + (HediffCompProperties_TimedExplosion)props; + + // 消失判定属性 + public override bool CompShouldRemove + { + get + { + if (ticksToDisappear > 0) return false; + if (Props.requiredMentalState != null) + { + return parent.pawn.MentalStateDef != Props.requiredMentalState; + } + return true; + } + } + + // 进度计算 + public float Progress => + 1f - (float)ticksToDisappear / Mathf.Max(1, disappearsAfterTicks); + + public int EffectiveTicksToDisappear => ticksToDisappear / TicksLostPerTick; + + public float NoisyProgress => AddNoiseToProgress(Progress, seed); + + public virtual int TicksLostPerTick => 1; + + public override string CompLabelInBracketsExtra + { + get + { + if (Props.showRemainingTime) + { + if (EffectiveTicksToDisappear < 2500) + { + return EffectiveTicksToDisappear.ToStringSecondsFromTicks("F0"); + } + return EffectiveTicksToDisappear.ToStringTicksToPeriod(allowSeconds: true, shortForm: true, canUseDecimals: true, allowYears: true, Props.canUseDecimalsShortForm); + } + return base.CompLabelInBracketsExtra; + } + } + + private static float AddNoiseToProgress(float progress, int seed) + { + float num = (float)Perlin.GetValue(progress, 0.0, 0.0, 9.0, seed); + float num2 = 0.25f * (1f - progress); + return Mathf.Clamp01(progress + num2 * num); + } + + // 初始化 + public override void CompPostMake() + { + base.CompPostMake(); + disappearsAfterTicks = Props.disappearsAfterTicks.RandomInRange; + seed = Rand.Int; + ticksToDisappear = disappearsAfterTicks; + } + + // 每帧更新 + public override void CompPostTick(ref float severityAdjustment) + { + ticksToDisappear--; + if (CompShouldRemove) + { + parent.pawn.health.RemoveHediff(parent); + } + } + + // 移除后处理 + public override void CompPostPostRemoved() + { + base.CompPostPostRemoved(); + + // 处理新鲜伤口状态 + if (!Props.leaveFreshWounds && parent.Part != null) + { + foreach (BodyPartRecord part in parent.Part.GetPartAndAllChildParts()) + { + Hediff_MissingPart hediff = parent.pawn.health.hediffSet.GetMissingPartFor(part) as Hediff_MissingPart; + if (hediff != null) + { + hediff.IsFresh = false; + } + } + } + + // 触发爆炸逻辑 + if (ShouldTriggerExplosion()) + { + TriggerExplosion(); + DestroyGearIfNeeded(); + } + + // 发送消息通知 + if (!Props.messageOnDisappear.NullOrEmpty() && PawnUtility.ShouldSendNotificationAbout(parent.pawn)) + { + Messages.Message( + Props.messageOnDisappear.Formatted(parent.pawn.Named("PAWN")), + parent.pawn, + MessageTypeDefOf.NeutralEvent + ); + } + + // 发送信件通知 + if (!Props.letterTextOnDisappear.NullOrEmpty() && + !Props.letterLabelOnDisappear.NullOrEmpty() && + PawnUtility.ShouldSendNotificationAbout(parent.pawn)) + { + Find.LetterStack.ReceiveLetter( + Props.letterLabelOnDisappear.Formatted(parent.pawn.Named("PAWN")), + Props.letterTextOnDisappear.Formatted(parent.pawn.Named("PAWN")), + LetterDefOf.NegativeEvent, + parent.pawn + ); + } + } + + // 爆炸条件检查 + private bool ShouldTriggerExplosion() + { + return parent.pawn.Spawned && + Props.explosionRadius > 0.01f && + Props.damageDef != null && + parent.pawn.Map != null; + } + + // 执行爆炸 + private void TriggerExplosion() + { + GenExplosion.DoExplosion( + center: parent.pawn.Position, + map: parent.pawn.Map, + radius: Props.explosionRadius, + damType: Props.damageDef, + instigator: parent.pawn, + damAmount: Props.damageAmount, + armorPenetration: Props.armorPenetration, + explosionSound: Props.soundDef, + weapon: null, + projectile: null, + intendedTarget: null, + postExplosionSpawnThingDef: Props.postExplosionSpawnThingDef, + postExplosionSpawnChance: Props.postExplosionSpawnChance, + postExplosionSpawnThingCount: Props.postExplosionSpawnThingCount, + postExplosionGasType: null, + applyDamageToExplosionCellsNeighbors: false, + chanceToStartFire: Props.chanceToStartFire, + damageFalloff: Props.damageFalloff, + direction: null, + ignoredThings: new List { parent.pawn } + ); + } + + // 装备销毁 + private void DestroyGearIfNeeded() + { + if (!Props.destroyGear) return; + + if (parent.pawn.equipment != null) + { + parent.pawn.equipment.DestroyAllEquipment(DestroyMode.Vanish); + } + if (parent.pawn.apparel != null) + { + parent.pawn.apparel.DestroyAll(DestroyMode.Vanish); + } + } + + // 数据持久化 + public override void CompExposeData() + { + Scribe_Values.Look(ref ticksToDisappear, "ticksToDisappear", 0); + Scribe_Values.Look(ref disappearsAfterTicks, "disappearsAfterTicks", 0); + Scribe_Values.Look(ref seed, "seed", 0); + } + + // 调试信息 + public override string CompDebugString() + { + return $"倒计时: {ticksToDisappear}\n爆炸半径: {Props.explosionRadius}"; + } + } + + public class HediffCompProperties_TimedExplosion : HediffCompProperties + { + [Header("消失设置")] + public IntRange disappearsAfterTicks = new IntRange(600, 1200); + public bool showRemainingTime = true; + public bool canUseDecimalsShortForm; + public MentalStateDef requiredMentalState; + public bool leaveFreshWounds = true; + + [Header("爆炸设置")] + public float explosionRadius = 3f; + public DamageDef damageDef; + public int damageAmount = 20; + public float armorPenetration; + public SoundDef soundDef; + public float chanceToStartFire; + public bool damageFalloff = true; + + [Header("后续效果")] + public bool destroyGear; + public GasType gasType; + public ThingDef postExplosionSpawnThingDef; + public float postExplosionSpawnChance; + public int postExplosionSpawnThingCount = 1; + + [Header("通知设置")] + [MustTranslate] + public string messageOnDisappear; + [MustTranslate] + public string letterLabelOnDisappear; + [MustTranslate] + public string letterTextOnDisappear; + public bool sendLetterOnDisappearIfDead = true; + + public HediffCompProperties_TimedExplosion() + { + compClass = typeof(HediffComp_TimedExplosion); + } + } +} diff --git a/Source/WulaFallenEmpire/Verb/ExplosionParameters.cs b/Source/WulaFallenEmpire/Verb/ExplosionParameters.cs new file mode 100644 index 00000000..ca857e6a --- /dev/null +++ b/Source/WulaFallenEmpire/Verb/ExplosionParameters.cs @@ -0,0 +1,26 @@ +using Verse; +using RimWorld; +using System.Collections.Generic; + +namespace ConfigurableHellsphereCannon +{ + public class ExplosionParameters : DefModExtension + { + public float explosionRadius = 4.9f; + public SoundDef explosionSound = null; + public ThingDef postExplosionSpawnThingDef = null; + public float postExplosionSpawnChance = 0f; + public int postExplosionSpawnThingCount = 1; + public GasType? postExplosionGasType = null; + public bool applyDamageToExplosionCellsNeighbors = false; + public ThingDef preExplosionSpawnThingDef = null; + public float preExplosionSpawnChance = 0f; + public int preExplosionSpawnThingCount = 1; + public bool damageFalloff = false; + public ThingDef filth = null; + public bool doVisualEffects = true; + public float screenShakeFactor = 1f; + public bool doSoundEffects = true; + public bool doHitEffects = true; + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/Verb/Projectile_ConfigurableHellsphereCannon.cs b/Source/WulaFallenEmpire/Verb/Projectile_ConfigurableHellsphereCannon.cs new file mode 100644 index 00000000..d346985b --- /dev/null +++ b/Source/WulaFallenEmpire/Verb/Projectile_ConfigurableHellsphereCannon.cs @@ -0,0 +1,93 @@ +using Verse; +using RimWorld; +using System.Collections.Generic; + +namespace WulaFallenEmpire +{ + /// + /// ڶXML ڵõԶԡ + /// + public class ProjectileProperties_ConfigurableHellsphereCannon : ProjectileProperties + { + // --- ֣ explosionChanceToStartFire --- + // ʹ 'new' ؼز滻ֶͬ + public new float explosionRadius = 4.9f; + public new float explosionChanceToStartFire = 0f; // <--- УʹXML + public new bool applyDamageToExplosionCellsNeighbors = false; + public new ThingDef preExplosionSpawnThingDef = null; + public new float preExplosionSpawnChance = 0f; + public new int preExplosionSpawnThingCount = 1; + public new ThingDef postExplosionSpawnThingDef = null; + public new float postExplosionSpawnChance = 0f; + public new int postExplosionSpawnThingCount = 1; + public new GasType? postExplosionGasType = null; + public new float screenShakeFactor = 1f; + public new ThingDef postExplosionSpawnThingDefWater = null; + public new ThingDef postExplosionSpawnSingleThingDef = null; + public new ThingDef preExplosionSpawnSingleThingDef = null; + + // ЩӵȫֶΣҪ 'new' ؼ + public SoundDef explosionSound = null; + public bool damageFalloff = false; + public bool doVisualEffects = true; + public bool doSoundEffects = true; + public float? postExplosionGasRadiusOverride = null; + public int postExplosionGasAmount = 255; + public float? direction = null; + public FloatRange? affectedAngle = null; + public float excludeRadius = 0f; + public SimpleCurve flammabilityChanceCurve = null; + } + + /// + /// Ͷĺ߼࣬XMLе ָ + /// + public class Projectile_ConfigurableHellsphereCannon : Projectile + { + public ProjectileProperties_ConfigurableHellsphereCannon Props => (ProjectileProperties_ConfigurableHellsphereCannon)def.projectile; + + protected override void Impact(Thing hitThing, bool blockedByShield = false) + { + Map map = base.Map; + base.Impact(hitThing, blockedByShield); + + GenExplosion.DoExplosion( + center: base.Position, + map: map, + radius: Props.explosionRadius, + damType: base.DamageDef, + instigator: launcher, + damAmount: DamageAmount, + armorPenetration: ArmorPenetration, + explosionSound: Props.explosionSound, + weapon: equipmentDef, + projectile: def, + intendedTarget: intendedTarget.Thing, + postExplosionSpawnThingDef: Props.postExplosionSpawnThingDef, + postExplosionSpawnChance: Props.postExplosionSpawnChance, + postExplosionSpawnThingCount: Props.postExplosionSpawnThingCount, + postExplosionGasType: Props.postExplosionGasType, + postExplosionGasRadiusOverride: Props.postExplosionGasRadiusOverride, + postExplosionGasAmount: Props.postExplosionGasAmount, + applyDamageToExplosionCellsNeighbors: Props.applyDamageToExplosionCellsNeighbors, + preExplosionSpawnThingDef: Props.preExplosionSpawnThingDef, + preExplosionSpawnChance: Props.preExplosionSpawnChance, + preExplosionSpawnThingCount: Props.preExplosionSpawnThingCount, + // --- ֣ʹȷֶ --- + chanceToStartFire: Props.explosionChanceToStartFire, // <--- ˴ + damageFalloff: Props.damageFalloff, + direction: Props.direction, + affectedAngle: Props.affectedAngle, + doVisualEffects: Props.doVisualEffects, + propagationSpeed: base.DamageDef.expolosionPropagationSpeed, + excludeRadius: Props.excludeRadius, + doSoundEffects: Props.doSoundEffects, + postExplosionSpawnThingDefWater: Props.postExplosionSpawnThingDefWater, + screenShakeFactor: Props.screenShakeFactor, + flammabilityChanceCurve: Props.flammabilityChanceCurve, + postExplosionSpawnSingleThingDef: Props.postExplosionSpawnSingleThingDef, + preExplosionSpawnSingleThingDef: Props.preExplosionSpawnSingleThingDef + ); + } + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj index 1237c021..589cf25e 100644 --- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj +++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj @@ -116,6 +116,8 @@ + +