]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
XenoArch Rebalancing (#36604)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Tue, 15 Apr 2025 22:38:26 +0000 (18:38 -0400)
committerGitHub <noreply@github.com>
Tue, 15 Apr 2025 22:38:26 +0000 (00:38 +0200)
* Miscellaneous XenoArch Rebalancing

* Miscellaneous XenoArch Rebalancing

* 1 durability anomaly node

* better version

Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs
Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactNodeComponent.cs
Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs
Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Unlock.cs
Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml
Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml
Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_xenoartifacts.yml
Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml
Resources/Prototypes/XenoArch/effects.yml
Resources/ServerInfo/Guidebook/Science/Xenoarchaeology.xml
Resources/migration.yml

index 85462d0efc32f1b52e4da9b35d1636b2b7ae32e3..b01d3d34f6e5d538180804bd7d048cabf468f8d5 100644 (file)
@@ -69,13 +69,13 @@ public sealed partial class XenoArtifactComponent : Component
     /// By how much unlocking state should be prolonged for each node that was unlocked.
     /// </summary>
     [DataField]
-    public TimeSpan UnlockStateIncrementPerNode = TimeSpan.FromSeconds(5);
+    public TimeSpan UnlockStateIncrementPerNode = TimeSpan.FromSeconds(10);
 
     /// <summary>
     /// Minimum waiting time between unlock states.
     /// </summary>
     [DataField]
-    public TimeSpan UnlockStateRefractory = TimeSpan.FromSeconds(10);
+    public TimeSpan UnlockStateRefractory = TimeSpan.FromSeconds(5);
 
     /// <summary>
     /// When next unlock session can be triggered.
index c4c16731508e92b916fdc40909ba94910734e3a7..4a8b8ec49f796462748853fd2833acc44d3bc125 100644 (file)
@@ -64,7 +64,7 @@ public sealed partial class XenoArtifactNodeComponent : Component
     /// The amount of points a node is worth with no scaling
     /// </summary>
     [DataField, AutoNetworkedField]
-    public float BasePointValue = 5000;
+    public float BasePointValue = 4000;
 
     /// <summary>
     /// Amount of points available currently for extracting.
index e4c1a1bae5599734ce8031ea4b5f34ffc4563621..75f88a41c312fd6029eb60f1caf2aa419674fba0 100644 (file)
@@ -394,6 +394,6 @@ public abstract partial class SharedXenoArtifactSystem
             : 1f + durabilityEffect;
 
         var predecessorNodes = GetPredecessorNodes((artifact, artifact), node);
-        nodeComponent.ResearchValue = (int)(Math.Pow(1.25, predecessorNodes.Count) * nodeComponent.BasePointValue * durabilityMultiplier);
+        nodeComponent.ResearchValue = (int)(Math.Pow(1.25, Math.Pow(predecessorNodes.Count, 1.5f)) * nodeComponent.BasePointValue * durabilityMultiplier);
     }
 }
index 3238bedcbabcd8b2ad53e13c55d5830003cb22f7..9786e65478d8535d79a70829ac6c51fca28c901b 100644 (file)
@@ -73,6 +73,7 @@ public abstract partial class SharedXenoArtifactSystem
         if (TryGetNodeFromUnlockState(ent, out var node))
         {
             SetNodeUnlocked((ent, artifactComponent), node.Value);
+            ActivateNode((ent, ent), (node.Value, node.Value), null, null, Transform(ent).Coordinates, false);
             unlockAttemptResultMsg = "artifact-unlock-state-end-success";
 
             // as an experiment - unlocking node doesn't activate it, activation is left for player to decide.
index a678ef03f3ebf577fc261baafbe30e0bfe36a1b8..0135361044dbc4858d02a0c3868356bf0a62ecb7 100644 (file)
           state: ano01
     - type: RandomSpawner
       prototypes:
-        - SimpleXenoArtifact
-        - MediumXenoArtifact
-        - MediumXenoArtifact
-        - MediumXenoArtifact
-        - MediumXenoArtifact
         - ComplexXenoArtifact
         - ComplexXenoArtifact
-        - ComplexXenoArtifact
-        - SimpleXenoArtifactItem
-        - MediumXenoArtifactItem
         - ComplexXenoArtifactItem
       chance: 1
 
index 00c6abf362fbe4fd67a2e476cdfbea28bfe0c7c4..83a04a809b33169a20c245818eb510cc63c7a977 100644 (file)
         tableId: XenoArtifactEffectsHandheldOnlyTable
         weight: 2
 
-- type: entity
-  parent: BaseXenoArtifactItem
-  id: SimpleXenoArtifactItem
-  suffix: hand-sized Simple
-  components:
-  - type: XenoArtifact
-    nodeCount:
-      min: 2
-      max: 5
-
-- type: entity
-  parent: BaseXenoArtifactItem
-  id: MediumXenoArtifactItem
-  suffix: hand-sized Medium
-  components:
-  - type: XenoArtifact
-    nodeCount:
-      min: 5
-      max: 9
-
 - type: entity
   parent: BaseXenoArtifactItem
   id: ComplexXenoArtifactItem
-  suffix: hand-sized Complex
+  suffix: Hand-Sized
   components:
   - type: XenoArtifact
     nodeCount:
       min: 9
       max: 13
 
-# this exists for crafting item artifacts so that the final result can be simple, medium, or complex.
-- type: entity
-  parent: BaseXenoArtifactItem
-  id: VariedXenoArtifactItem
-  suffix: hand-sized Varied
-  components:
-  - type: XenoArtifact
-    nodeCount:
-      min: 2
-      max: 13
-
 - type: entity
   id: ArtifactFragment
   parent: BaseItem
index 0b3d95777d923b8f0c1dab8a953d0a13f050fb10..8edbbd71f4ad999cc3357db9e9e232a38ce71a34 100644 (file)
         mask:
         - MachineMask
 
-- type: entity
-  parent: BaseXenoArtifactStructure
-  id: SimpleXenoArtifact
-  suffix: Simple
-  components:
-  - type: XenoArtifact
-    nodeCount:
-      min: 2
-      max: 5
-
-- type: entity
-  parent: BaseXenoArtifactStructure
-  id: MediumXenoArtifact
-  suffix: Medium
-  components:
-  - type: XenoArtifact
-    nodeCount:
-      min: 5
-      max: 9
-
 - type: entity
   parent: BaseXenoArtifactStructure
   id: ComplexXenoArtifact
-  suffix: Complex
   components:
   - type: XenoArtifact
     nodeCount:
index a0961a1669931b04ec38b0ad2f156d5289b9e2cf..d48731ad5a2004fae4559a577725fb79807629ac 100644 (file)
@@ -10,4 +10,4 @@
         amount: 4
         doAfter: 5
   - node: done
-    entity: VariedXenoArtifactItem
+    entity: ComplexXenoArtifactItem
index e02514d2c2b477058d4d1323ac03dabf5a720783..027c79550ccbc7924e278f14276004a83e1ee278 100644 (file)
 
 - type: entity
   id: XenoArtifactAnomalySpawn
-  parent: BaseXenoArtifactEffect
+  parent: BaseOneTimeXenoArtifactEffect
   description: Creates anomaly
   components:
-  - type: XenoArtifactNode
-    maxDurability: 2
-    maxDurabilityCanDecreaseBy:
-      min: 0
-      max: 1
   - type: XAEApplyComponents
     applyIfAlreadyHave: true
     refreshOnReactivate: true
index 87177acbaffd62a09cfa6ce912cffb9c27b5e158..cd717511c39839895fd7768f5f4881f54e784485 100644 (file)
@@ -9,7 +9,7 @@ By researching the unique things each artifact can do, you gain Research Points,
 ## Artifact Nodes
 <Box>
 <GuideEntityEmbed Entity="ComplexXenoArtifact" Caption=""/>
-<GuideEntityEmbed Entity="SimpleXenoArtifactItem" Caption=""/>
+<GuideEntityEmbed Entity="ComplexXenoArtifactItem" Caption=""/>
 </Box>
 Artifacts consist of a randomly-generated tree of nodes. These nodes have a "[color=#a4885c]depth[/color]", representing how dangerous the node is, and the number of other nodes connected to it, called "[color=#a4885c]edges[/color]",
 
index f505db52686df39f04e7d8fccc43f5ab9657787b..851e6ca03cfa4676677057fccdbe3f5ff2a13d0e 100644 (file)
@@ -592,3 +592,10 @@ MailAllAccessSpam: MailSpamLetter
 MailCentcommRetributionSpam: MailSpamLetter
 MailEvilLizardSpam: MailSpamLetter
 MailParentsNeedMoneySpam: MailSpamLetter
+
+# 2025-04-15
+SimpleXenoArtifact: ComplexXenoArtifact
+MediumXenoArtifact: ComplexXenoArtifact
+SimpleXenoArtifactItem: ComplexXenoArtifactItem
+MediumXenoArtifactItem: ComplexXenoArtifactItem
+VariedXenoArtifactItem: ComplexXenoArtifactItem