Browse Source

Build 3599

master
Taelyn 2 weeks ago
commit
758a917b73
  1. 14
      Animations.ecf
  2. 99
      BAIConfig.ecf
  3. 103
      BlockShapesWindow.ecf
  4. 31841
      BlocksConfig.ecf
  5. 23026
      Config_Example.ecf
  6. 1850
      Containers.ecf
  7. 202
      DefReputation.ecf
  8. 438
      Dialogues-config-and-examples.txt
  9. 2055
      Dialogues.csv
  10. 7220
      Dialogues.ecf
  11. 9586
      EClassConfig.ecf
  12. 507
      EGroupsConfig.ecf
  13. 1478
      FactionWarfare.ecf
  14. 289
      Factions.ecf
  15. 1153
      GalaxyConfig.ecf
  16. 13049
      ItemsConfig.ecf
  17. 665
      LootGroups.ecf
  18. 438
      MaterialConfig.ecf
  19. BIN
      Mif.dll
  20. BIN
      ModApi.dll
  21. 743
      SqlQueries.txt
  22. 1689
      StatusEffects.ecf
  23. BIN
      System.Data.SQLite.dll
  24. 5335
      Templates.ecf
  25. 176
      TokenConfig.ecf
  26. 1225
      TraderNPCConfig.ecf
  27. BIN
      YamlAssembly.dll

14
Animations.ecf

@ -0,0 +1,14 @@
/* For items with weapon hold type=="X" we have a ray cast delay of Y */
/* name=holdtype, value=delay, param1=holster, param2=unholster */
{ Animation Name: animation
0: 0, param1: 0, param2: 0 /* block */
1: 0.16, param1: 0.3, param2: 0.3 /* hand player */
3: 0.6, param1: 0.3, param2: 0.3 /* */
4: 0.65, param1: 0.3, param2: 0.3 /* hand total horror */
5: 0.6, param1: 0.3, param2: 0.3 /* hand talon guardian */
6: 0.6, param1: 0.3, param2: 0.3 /* hand zirax melee, cave worm, megalonops */
14: 0, param1: 0.5, param2: 0.5 /* Player Pistol */
15: 0, param1: 0.5, param2: 0.5 /* Player Rifle */
16: 0, param1: 0.5, param2: 0.5 /* Player Rifle + weaker shooting animation */
20: 0, param1: 0.0, param2: 0.0 /* Animation driven animals */
}

99
BAIConfig.ecf

@ -0,0 +1,99 @@
// *****************************************************
// *************** HI LEVEL *********************
// *****************************************************
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/HiLevelTrees/MainAnimal"
Count: 35
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/HiLevelTrees/ZiraxTroopCommands"
Count: 40
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/HiLevelTrees/AlienBug01"
Count: 30
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/HiLevelTrees/TalonGuardianCommands"
Count: 30
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/HiLevelTrees/Telluropod"
Count: 5
}
// *****************************************************
// ************** ACTIVITIES *********************
// *****************************************************
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/BasicLifeCycle"
Count: 20
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/RandomWalk"
Count: 15
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/SearchTarget"
Count: 40
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/AnimalAttack"
Count: 15
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/AnimalBabyPlay"
Count: 15
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HerbivoreLowAlert"
Count: 20
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HerbivoreFlee"
Count: 30
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HerbivoreBabyHideOrRun"
Count: 3
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HumanoidIdle"
Count: 40
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HumanoidBasicAttack"
Count: 40
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HumanoidPatrolLifeCycle"
Count: 30
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Activities/HumanoidMeleeAttack"
Count: 15
}
{ Element Name: BehaviorPoolPreload
Name: "Behaviors/Actions/AnimalMeleeAttack"
Count: 15
}

103
BlockShapesWindow.ecf

@ -0,0 +1,103 @@
# _Handling Notes_
#
# Max of 22 TabGroups
# Max 8x13 shape slots per page
# Each TabGroup can have unlimited pages. Page-break is done automatically after 8 rows of a page are filled - either with blocks or by <newline>.
#
# Each tab group will create a tab that will apply a formatting filter to a set of blocks, defined in a child element
# ParentBlocks: provide a comma delimited string of parent block ids (from BlocksConfig.ecf)
# Shapes: provide a comma delimited string of child block shape names and formatting tokens:
# Use <empty> for placing a blank slot (You cannot just use a syntax like , , , , for empty slots!)
# Use <newline> to break a line
# Use <pagebreak> to break a page
#
# To allow a filter to be used by all parent blocks, do not provide a ParentBlocks value. You must provide one Shapes value.
# To allow a filter to exclude a set of parent blocks, provide a ParentBlocks value and no Shapes value.
#
# The first shape in the filter represents the shape icon used for the tab. To override this, supply an 'Icon' name to use.
# Use 'shapeswdw reload' in the ingame console to reload the shapes menu and update to the changes you made. Also works when the file is opened in parallel!
#
# _Notes_
# You need to use the KEY name of the shape. To find the KEY name of the shape, open the localization.csv and search for your localization term.
# The FIRST entry in the row of localization terms is always the KEY
# Do NOT use RETURN or SHIFT-RETURN when setting up the TabGroups, pages and shapes. This might result in a CoQ.
# Make sure you only use each shape name ONCE per TabGroup. Multiple use will cause issues with the list.
# Tip: For setup or debugging any config file (like this or the localization.csv etc), use a free tool like Notepad++ and use
# setting 'View > Non Printable Signs > show all' to show linebreaks and other usually hidden characters!
#
# _IMPORTANT_
# Concerning shapes that should not be available in either large (CVBA) or small (SVHV) grid, like the corridor shapes: see example below how this is handled by
# setting Child0 and 1. If you do NOT set Child1, but only Child0, both grids will use the same shapes automatically.
# The 'ParentBlocks' line indicates the Large Grid '396,399,402,405,408,411,1322,1481' and the Small Grid '380,393,1478,1594'
# If you want one grid size to not use ANY of the child blocks, just leave out the 'Shapes' part"
#
{ TabGroup Id: 0
Name: "Basic Shapes"
Icon: "BasicShapes"
{ Child 0
Shapes: "Cube, CubeHalf, CubeQuarter, CubeEighth, <newline>, RampC, RampCMedium, RampCLow, RampD, RampDLow, <newline>, RampADouble, CutCornerA, RampA, CutCornerC, CutCornerEMedium, NotchedB, SlicedCornerD, <newline>, CutCornerB, SlicedCornerA1, CornerHalfB, CornerSmallC, <newline>, CornerDoubleA1, CornerDoubleA3, CornerA, CornerHalfA1, CutCornerE, CornerC, CornerHalfA3, <newline>, Wall, WallLow, Beam, WallCorner, WallLShape, WallSloped, WallSloped3Corner, WallSlopedRound, WallEdgeRound, WallCornerRoundB, <newline>, EdgeRound, RoundCornerA, CornerRoundADouble, CornerRoundATriple, CornerRoundBMediumQuarter, CornerRoundB, <newline>, Cylinder, Cylinder6Way, CylinderThin, CylinderThinTJoint, CylinderThinXJoint, PipesFence, FenceTop, PipesL"
}
}
{ TabGroup Id: 1
Name: "All Shapes"
Icon: "AllShapes"
{ Child 0
ParentBlocks: "396,399,402,405,408,411,1322,1395,1481"
Shapes: "Cube, CubeSliced, CubeLShape, CubeStepped, CubeSteppedEdge, CubeHalfCubeConnector, CubeHalfRamp, CubeHalf, CubeQuarter, CubeQuarterEdge, CubeEighth, RampA, RampB, RampC, RampCMedium, RampBMedium, RampCLow, RampD, RampDLow, RampE, RampEHalf, RampADouble, RampBDouble, RampADoubleHalf, RampBDoubleHalf, RampAHalfleft, RampAHalfright, RampCHalf, RampCMediumHalfright, RampCMediumHalfleft, RampCMediumQuarter, CutCornerA, CutCornerB, CutCornerC, CutCornerD, CutCornerE, CutCornerDMedium, CutCornerEMedium, CutCornerDLow, SlicedCornerA1, SlicedCornerA2, SlicedCornerA1Medium, SlicedCornerA1Low, SlicedCornerB1, SlicedCornerB2, SlicedCornerB1Medium, SlicedCornerB2Medium, NotchedA, NotchedB, NotchedC, SlicedCornerD, NotchedBMedium, NotchedCMedium, SlicedCornerDMedium, NotchedCLow, PyramidA, EdgeRound, EdgeRoundHalf, EdgeRoundThin, EdgeRoundMedium, EdgeRoundLow, EdgeRoundMediumHalfDouble, EdgeRoundMediumHalf, EdgeRoundMediumQuarter, EdgeRoundLowHalf, EdgeRoundLowQuarter, EdgeRoundLowEighth, RoundCornerA, CornerRoundAMedium, CornerRoundALow, CornerRoundAMediumQuarter, CornerRoundALowQuarter, CornerRoundB, CornerRoundBMedium, CornerRoundBLow, CornerRoundBMediumQuarter, CornerRoundBLowQuarter, EdgeRoundDoubleA, EdgeRoundDoubleAHalf, RampRoundADouble, RampRoundADoubleHalf, RampRoundBDouble, RampRoundC, RampRoundDDouble, RampRoundE, RampRoundF, CornerRoundADouble, CornerRoundATriple, RampRoundFTriple, SmallCornerRoundA, SmallCornerRoundB, SmallCornerRoundB2, SmallCornerRoundC, Cylinder, Cylinder6Way, CylinderL, CylinderThin, CylinderThinTJoint, CylinderThin3Way, CylinderThinXJoint, CylinderThin4Way, CylinderThin5Way, CylinderThin6Way, PipesFence, PipesFenceDiagonal, PipesFenceKinked, PipesL, PipesT, PipesX, FenceTop, FenceTopDiagonal, ConeB, SphereHalf, Cone, CornerDoubleA1, CornerDoubleA2, CornerDoubleA3, CornerDoubleB1, CornerDoubleB2, CornerDoubleB3, CornerA, CornerB, CornerC, CornerCMedium, CornerCLow, CornerHalfA1, CornerHalfA2, CornerHalfA3, CornerHalfA3Medium, CornerHalfA3Low, CornerHalfB, CornerHalfC, CornerSmallA, CornerSmallB, CornerSmallBMedium, CornerSmallBMediumLow, CornerSmallBLow, CornerSmallC, CornerSmallCMedium, CornerSmallCMediumLow, CornerSmallCLow, RampConnectorAleft, RampConnectorAright, RampConnectorBleft, RampConnectorBright, RampConnectorCleft, RampConnectorCright, RampConnectorDleft, RampConnectorDright, RampConnectorEleft, RampConnectorFright, CylinderRoundTransition, CubeRoundConnectorA, CubeRoundConnectorAMedium, CubeRoundConnectorALow, CubeRoundConnectorBleft, CubeRoundConnectorBright, RampRoundConnectorAleft, RampRoundConnectorAright, RampRoundConnectorBleft, RampRoundConnectorBright, CubeRoundTransitionleft, CubeRoundTransitionright, CylinderCubeConnector, CylinderCubeHalfConnector, CylinderWallConnector, Wall, WallLow, Beam, BeamQuarter, WallSlopedAright, WallSlopedAleft, WallSlopedC, WallSlopedCMediumright, WallSlopedCMediumleft, CylinderFramed, CubeFramed, WallUShape, WallCorner, WallLShape, WallLShapeMedium, WallLShapeLow, WallDouble, WallMediumDouble, WallLowDouble, WallSlopedADouble, WallSlopedBDouble, WallSlopedCDouble, WallSlopedBDoubleMedium, WallSlopedCDoubleMedium, WallSlopedCDoubleLow, WallEdge, WallCornerSloped, WallSloped, WallSloped3Corner, WallSloped3CornerLow, WallEdgeRound, WallSlopedRound, WallEdgeRound3Way, WallCornerRoundA, WallCornerRoundB, WallCornerRoundC, WallSlopedBold, CorridorWallA, CorridorWallB, CorridorEdgeA, CorridorEdgeB, CorridorEdgeC, CorridorPillarA, CorridorPillarB, CorridorPillarC, CorridorPillarD, CorridorRoof, CorridorRoofCorner, CorridorRoofCornerInverted, CorridorRoofCornerRound, CorridorBulkyWallA, CorridorBulkyWallAWindowed, CorridorBulkyWallB, CorridorBulkyWallBWindowed, CorridorRampA, CorridorRampB, DoorframeA, DoorframeB, DoorframeC "
}
{ Child 1
ParentBlocks: "380,393,1478,1594"
Shapes: "Cube, CubeSliced, CubeLShape, CubeStepped, CubeSteppedEdge, CubeHalfCubeConnector, CubeHalfRamp, CubeHalf, CubeQuarter, CubeQuarterEdge, CubeEighth, RampA, RampB, RampC, RampCMedium, RampBMedium, RampCLow, RampD, RampDLow, RampE, RampEHalf, RampADouble, RampBDouble, RampADoubleHalf, RampBDoubleHalf, RampAHalfleft, RampAHalfright, RampCHalf, RampCMediumHalfright, RampCMediumHalfleft, RampCMediumQuarter, CutCornerA, CutCornerB, CutCornerC, CutCornerD, CutCornerE, CutCornerDMedium, CutCornerEMedium, CutCornerDLow, SlicedCornerA1, SlicedCornerA2, SlicedCornerA1Medium, SlicedCornerA1Low, SlicedCornerB1, SlicedCornerB2, SlicedCornerB1Medium, SlicedCornerB2Medium, NotchedA, NotchedB, NotchedC, SlicedCornerD, NotchedBMedium, NotchedCMedium, SlicedCornerDMedium, NotchedCLow, PyramidA, EdgeRound, EdgeRoundHalf, EdgeRoundThin, EdgeRoundMedium, EdgeRoundLow, EdgeRoundMediumHalfDouble, EdgeRoundMediumHalf, EdgeRoundMediumQuarter, EdgeRoundLowHalf, EdgeRoundLowQuarter, EdgeRoundLowEighth, RoundCornerA, CornerRoundAMedium, CornerRoundALow, CornerRoundAMediumQuarter, CornerRoundALowQuarter, CornerRoundB, CornerRoundBMedium, CornerRoundBLow, CornerRoundBMediumQuarter, CornerRoundBLowQuarter, EdgeRoundDoubleA, EdgeRoundDoubleAHalf, RampRoundADouble, RampRoundADoubleHalf, RampRoundBDouble, RampRoundC, RampRoundDDouble, RampRoundE, RampRoundF, CornerRoundADouble, CornerRoundATriple, RampRoundFTriple, SmallCornerRoundA, SmallCornerRoundB, SmallCornerRoundB2, SmallCornerRoundC, Cylinder, Cylinder6Way, CylinderL, CylinderThin, CylinderThinTJoint, CylinderThin3Way, CylinderThinXJoint, CylinderThin4Way, CylinderThin5Way, CylinderThin6Way, PipesFence, PipesFenceDiagonal, PipesFenceKinked, PipesL, PipesT, PipesX, FenceTop, FenceTopDiagonal, ConeB, SphereHalf, Cone, CornerDoubleA1, CornerDoubleA2, CornerDoubleA3, CornerDoubleB1, CornerDoubleB2, CornerDoubleB3, CornerA, CornerB, CornerC, CornerCMedium, CornerCLow, CornerHalfA1, CornerHalfA2, CornerHalfA3, CornerHalfA3Medium, CornerHalfA3Low, CornerHalfB, CornerHalfC, CornerSmallA, CornerSmallB, CornerSmallBMedium, CornerSmallBMediumLow, CornerSmallBLow, CornerSmallC, CornerSmallCMedium, CornerSmallCMediumLow, CornerSmallCLow, RampConnectorAleft, RampConnectorAright, RampConnectorBleft, RampConnectorBright, RampConnectorCleft, RampConnectorCright, RampConnectorDleft, RampConnectorDright, RampConnectorEleft, RampConnectorFright, CylinderRoundTransition, CubeRoundConnectorA, CubeRoundConnectorAMedium, CubeRoundConnectorALow, CubeRoundConnectorBleft, CubeRoundConnectorBright, RampRoundConnectorAleft, RampRoundConnectorAright, RampRoundConnectorBleft, RampRoundConnectorBright, CubeRoundTransitionleft, CubeRoundTransitionright, CylinderCubeConnector, CylinderCubeHalfConnector, CylinderWallConnector, Wall, WallLow, Beam, BeamQuarter, WallSlopedAright, WallSlopedAleft, WallSlopedC, WallSlopedCMediumright, WallSlopedCMediumleft, CylinderFramed, CubeFramed, WallUShape, WallCorner, WallLShape, WallLShapeMedium, WallLShapeLow, WallDouble, WallMediumDouble, WallLowDouble, WallSlopedADouble, WallSlopedBDouble, WallSlopedCDouble, WallSlopedBDoubleMedium, WallSlopedCDoubleMedium, WallSlopedCDoubleLow, WallEdge, WallCornerSloped, WallSloped, WallSloped3Corner, WallSloped3CornerLow, WallEdgeRound, WallSlopedRound, WallEdgeRound3Way, WallCornerRoundA, WallCornerRoundB, WallCornerRoundC, WallSlopedBold"
}
}
{ TabGroup Id: 2
Name: "Cubes and Ramps"
{ Child 0
Shapes: "Cube, CubeSliced, CubeLShape, CubeStepped, CubeSteppedEdge, CubeHalfCubeConnector, CubeHalfRamp, CubeHalf, CubeQuarter, CubeQuarterEdge, CubeEighth, <newline>, RampA, RampB, RampC, RampCMedium, RampBMedium, RampCLow, RampD, RampDLow, RampE, RampEHalf, <newline>, RampADouble, RampBDouble, RampADoubleHalf, RampBDoubleHalf, RampAHalfleft, RampAHalfright, RampCHalf, RampCMediumHalfright, RampCMediumHalfleft, RampCMediumQuarter, <newline>, CutCornerA, CutCornerB, CutCornerC, CutCornerD, CutCornerE, CutCornerDMedium, CutCornerEMedium, CutCornerDLow, <newline>, SlicedCornerA1, SlicedCornerA2, SlicedCornerA1Medium, SlicedCornerA1Low, <newline>, SlicedCornerB1, SlicedCornerB2, SlicedCornerB1Medium, SlicedCornerB2Medium, <newline>, NotchedA, NotchedB, NotchedC, SlicedCornerD, NotchedBMedium, NotchedCMedium, SlicedCornerDMedium, NotchedCLow, <newline>, PyramidA"
}
}
{ TabGroup Id: 3
Name: "Round Shapes and Pipes"
{ Child 0
Shapes: "EdgeRound, EdgeRoundHalf, EdgeRoundThin, EdgeRoundMedium, EdgeRoundLow, <newline>, EdgeRoundMediumHalfDouble, EdgeRoundMediumHalf, EdgeRoundMediumQuarter, EdgeRoundLowHalf, EdgeRoundLowQuarter, EdgeRoundLowEighth, <newline>, RoundCornerA, CornerRoundAMedium, CornerRoundALow, CornerRoundAMediumQuarter, CornerRoundALowQuarter, CornerRoundB, CornerRoundBMedium, CornerRoundBLow, CornerRoundBMediumQuarter, CornerRoundBLowQuarter, <newline>, EdgeRoundDoubleA, EdgeRoundDoubleAHalf, RampRoundADouble, RampRoundADoubleHalf, RampRoundBDouble, RampRoundC, RampRoundDDouble, RampRoundE, RampRoundF, <newline>, CornerRoundADouble, CornerRoundATriple, RampRoundFTriple, SmallCornerRoundA, SmallCornerRoundB, SmallCornerRoundB2, SmallCornerRoundC, <newline>, Cylinder, Cylinder6Way, CylinderL, CylinderThin, CylinderThinTJoint, CylinderThin3Way, CylinderThinXJoint, CylinderThin4Way, CylinderThin5Way, CylinderThin6Way, <newline>, PipesFence, PipesFenceDiagonal, PipesFenceKinked, PipesL, PipesT, PipesX, FenceTop, FenceTopDiagonal, <newline>, ConeB, SphereHalf, Cone"
}
}
{ TabGroup Id: 4
Name: "Corners and Connectors"
{ Child 0
Shapes: "CornerDoubleA1, CornerDoubleA2, CornerDoubleA3, CornerDoubleB1, CornerDoubleB2, CornerDoubleB3, <newline>, CornerA, CornerB, CornerC, CornerCMedium, CornerCLow, <newline>, CornerHalfA1, CornerHalfA2, CornerHalfA3, CornerHalfA3Medium, CornerHalfA3Low, <newline>, CornerHalfB, CornerHalfC, <newline>, CornerSmallA, CornerSmallB, CornerSmallBMedium, CornerSmallBMediumLow, CornerSmallBLow, CornerSmallC, CornerSmallCMedium, CornerSmallCMediumLow, CornerSmallCLow, <newline>, RampConnectorAleft, RampConnectorAright, RampConnectorBleft, RampConnectorBright, RampConnectorCleft, RampConnectorCright, RampConnectorDleft, RampConnectorDright, RampConnectorEleft, RampConnectorFright, <newline>, CylinderRoundTransition, CubeRoundConnectorA, CubeRoundConnectorAMedium, CubeRoundConnectorALow, CubeRoundConnectorBleft, CubeRoundConnectorBright, RampRoundConnectorAleft, RampRoundConnectorAright, RampRoundConnectorBleft, RampRoundConnectorBright, CubeRoundTransitionleft, CubeRoundTransitionright, <newline>,CylinderCubeConnector, CylinderCubeHalfConnector, CylinderWallConnector"
}
}
{ TabGroup Id: 5
Name: "Thin Walls"
{ Child 0
Shapes: "Wall, WallLow, Beam, BeamQuarter, <newline>, WallSlopedAright, WallSlopedAleft, WallSlopedC, WallSlopedCMediumright, WallSlopedCMediumleft, <newline>, CylinderFramed, CubeFramed, WallUShape, WallCorner, WallLShape, WallLShapeMedium, WallLShapeLow, <newline>, WallDouble, WallMediumDouble, WallLowDouble, WallSlopedADouble, WallSlopedBDouble, WallSlopedCDouble, WallSlopedBDoubleMedium, WallSlopedCDoubleMedium, WallSlopedCDoubleLow, <newline>, WallEdge, WallCornerSloped, WallSloped, WallSloped3Corner, WallSloped3CornerLow, <newline>, WallEdgeRound, WallSlopedRound, WallEdgeRound3Way, WallCornerRoundA, WallCornerRoundB, WallCornerRoundC, <newline>, WallSlopedBold"
}
}
{ TabGroup Id: 6
Name: "Corridor Elements"
{ Child 0
ParentBlocks: "396,399,402,405,408,411,1322,1395,1481"
Shapes: "CorridorWallA, CorridorWallB, CorridorEdgeA, CorridorEdgeB, CorridorEdgeC, <newline>, CorridorPillarA, CorridorPillarB, CorridorPillarC, CorridorPillarD, <newline>, CorridorRoof, CorridorRoofCorner, CorridorRoofCornerInverted, CorridorRoofCornerRound, <newline>, CorridorBulkyWallA, CorridorBulkyWallAWindowed, CorridorBulkyWallB, CorridorBulkyWallBWindowed, <newline>, CorridorRampA, CorridorRampB, <newline>, DoorframeA, DoorframeB, DoorframeC"
}
{ Child 1
ParentBlocks: "380,393,1478,1594"
# no blocks for this tab for the listed parent blocks
}
}

31841
BlocksConfig.ecf

File diff suppressed because it is too large

23026
Config_Example.ecf

File diff suppressed because it is too large

1850
Containers.ecf

File diff suppressed because it is too large

202
DefReputation.ecf

@ -0,0 +1,202 @@
# Allow to override the default reputation for all Origin based factions to NPC factions
{ Reputation Name: "Human:1"
Zirax: 0
Xenu: 0
Rados: 0
Epsilon: 0
Ghyst: 0
Serdu: 0
Abyssal: 8500
Talon: 16500
Polaris: 16500
Pirates: 12020
Kriel: 0
Trader: 16500
Colonists: 15000
Tesch: 13500
Farr: 16500
Wastelanders: 12001
ARC: 12001
}
# Matrix defining reputation points that you get when you do actions to this faction
# Example: if you killed a member of Zirax your reputation is decreased by 300 points
# => define this matrix before defining any trigger or threshold levels and rivalry values
{ Reputation Name: "Action.Reputation"
Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC"
AttackedMember: " -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12" # value is multiplied with damage points || Drops to NeutralMin
KilledMember: " -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, -300" # NOT multiplied with damage points || Drops to UnfriendlyMax
DestroyBlock: " -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30"
ShieldAttacked: " -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30"
OpenContainer: " -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200"
AttackedPrey: " 0.1, -0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # multiplied with damage points
AttackedPredator: " 0.1, 0.3, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1" # multiplied with damage points
StructSpawnedInTerritory:" -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100"
StructStayInTerritory: " -25, -50, -25, -50, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25" # every 5min realtime and only WITH pilot
OreMined: " -15, -5, -30, -15, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20" # about every 10 ores
PlantHarvest: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
PlantDestroy: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OutsideHostileTerritory: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
# If one of these actions was executed, the reputation level will get set back at least to that value
# You can specify reputation levels or reputation levels with added Min/Max to use either the minimum or maximum of a level.
# Example: if you attacked a member of any faction your reputation will drop at least to the minimum value of Neutral
{ Reputation Name: "Action.TriggerLevel"
# AttackedMember: "NeutralMin"
KilledMember: "UnfriendlyMax"
DestroyBlock: "NeutralMin"
ShieldAttacked: "NeutralMin"
OpenContainer: "NeutralMin"
}
# If one of these actions was executed, the reputation points are added/subtracted only if the reputation is already less than to this level
# You can specify reputation levels directly.
# Example: on spawning a structure in Zirax territory, you will only get -25 reputation to Zirax if you are less than Honored
{ Reputation Name: "Action.ThresholdLevel"
StructSpawnedInTerritory: "Honored"
StructStayInTerritory: "Friendly"
OreMined: "Friendly"
PlantHarvest: "Friendly"
PlantDestroy: "Honored"
}
# Matrix defining reputation points that rivalry factions get when you do actions to this faction
# Note: No changes required for the Faction columan that is defined in its own rivalry matrix! This is handled by line 38-47.
# Example: If you killed a member of Zirax, you get 15 points to the reputation to Talon, 5 to Polaris, 15 to Pirates, 25 to Kriel, etc
{ Reputation Name: "Zirax.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, -0.1, -0.1, -0.1, -0.1, -0.1, -1, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 0, 5, 5, 15, 25, 0, 0, -5, -5, -5, -5, -5, -15, 0, 5, 0, 0"
DestroyBlock: " 0, 0, 1, 1, 2, 0, 0, -1, -1, -1, -1, -1, -1, 0, 1, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, -10, -10, -10, -10, -10, -10, 0, 0, 0, 0"
}
{ Reputation Name: "Talon.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 15, 0, -5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
DestroyBlock: " 1, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Polaris.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 5, -5, 0, 15, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0"
DestroyBlock: " 1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Pirates.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 15, 1, 15, 0, 15, 15, 10, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0"
DestroyBlock: " 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 2, 0, 5, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Kriel.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 25, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0"
DestroyBlock: " 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Trader.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 0, 0, 0, 50, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
DestroyBlock: " 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Xenu.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " -0.1, 0, 0, 0, 0, 0, 0, 0, -0.1, -0.5, -1, 0.1, 0.5, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -15, 5, 5, 25, 50, 0, 0, 0, -5, -7, -15, 2, 4, 0, 5, 0, 0"
DestroyBlock: " -1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Rados.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " -0.5, 0, 0, 0, 0, 0, 0, -0.1, 0, -0.1, -0.1, -0.5, -0.5, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -15, 5, 5, 30, 50, 0, 0, -5, 0, -5, -5, -7, -7, 0, 5, 0, 0"
DestroyBlock: " -1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Epsilon.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " -0.5, 0, 0, 0, 0, 0, 0, -0.5, -0.1, 0, -0.5, -0.1, -0.1, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -10, 5, 5, 30, 50, 0, 0, -7, -5, 0, -7, -5, -5, 0, 5, 0, 0"
DestroyBlock: " -1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Ghyst.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " -0.1, 0, 0, 0, 0, 0, 0, -1, -0.5, -0.1, 0, 0.1, 0.5, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -15, 5, 5, 30, 50, 0, 0, -15, -7, -5, 0, 2, 4, 0, 5, 0, 0"
DestroyBlock: " -1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Serdu.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " -0.8, 0, 0, 0, 0, 0, 0, 0.5, -0.1, -0.5, 0.1, 0, -1, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -20, 5, 5, 30, 50, 0, 0, 4, -5, -7, 2, 0, -15, 0, 5, 0, 0"
DestroyBlock: " -1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Abyssal.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " -1, 0, 0, 0, 0, 0, 0, 0.5, -0.1, -0.5, 0.1, -1, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -25, 5, 5, 30, 50, 0, 0, 4, -5, -7, 2, -15, 0, 0, 5, 0, 0"
DestroyBlock: " -1, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0"
OpenContainer: " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Colonists.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " -10, 0, -10, -5, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0"
DestroyBlock: " 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Tesch.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
DestroyBlock: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Farr.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
DestroyBlock: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "Wastelanders.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
DestroyBlock: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}
{ Reputation Name: "ARC.Rivalry"
#Order: "Zirax, Talon, Polaris, Pirates, Kriel, Trader, Colonists, Xenu, Rados, Epsilon, Ghyst, Serdu, Abyssal, Tesch, Farr, Wastelanders, ARC" # this must fit the order defined in "Action.Reputation" above
AttackedMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0" # value is multiplied with damage points
KilledMember: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
DestroyBlock: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
OpenContainer: " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
StructSpawnedInTerritory:" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0"
}

438
Dialogues-config-and-examples.txt

@ -0,0 +1,438 @@
To be used with the Dialogues.ecf!
=================================
= Textflow (UI) =
Text forwarding (player convenience): Right Mouse Button = skip the roll-in text effect and show the page at once
======
=Global=
- Use 'Welcome {PlayerName}' on OUTPUT to greet the player with his profile name. Can also be used in OPTION (answer texts)
- Use 'NPCName' to override or change the default entity/blockname in the dialogue header element; Needs to be set in the FIRST element of the dialogue!
- Use SetNPCName('name') to change the 'NPCName' in follow up states of the same discussion
- Use 'Output' to let the NPC/Questgiver talk to the player
- Use 'OptionNext_' and 'Option_' for dialogues where the user makes a choices (both work in conjunction)
- Use 'NextIf_' and 'Next_' for automatically advancing dialogues (based on the IF condition)(both work in conjunction)
= Basics: Advance a dialogue per user choices (Option*)
1. Set an 'Option_1' > this is what the player can choose
2. Set an 'OptionNext_1' > this is what happens next.
3. Set an 'OptionIf_1' > Dialogue proceeds to OptionNext_1 target only if condition is met
4. Set an 'OptionExecute_1' > Function is called either if Option_1 is chosen AND/OR OptionIf_1 is met
Note: You can set more than one Option/OptionNext/OptionIf/OptionExecute combo, just take care the set items have the same number!
Parameters you can use with OptionNext_1 are for example:
- End = Closes the dialogue when the option is selected
- Add another 'Dialogue Name:' = moves the dialogue to the next element
= Basics: Advance a dialouge per logic, code or automatically (Next*)
1. Set a 'NextIf_1' > Here you define the condition
2. Set a 'Next_1' > Here you define what happens when the condition is met
3. Set an 'Exectue_1' > Function is called when NextIf_1 conditions are met
Note: You can set more than one NextIf/Next/Execute pair, just take care the set items have the same number!!
Parameters you can use with Next_* are for example:
- End = Closes the dialogue when the option is selected
- Add another 'Dialogue Name:' = moves the dialogue to the next element
= Dynamic Jump Target =
With the release of v1.2 we are allowing now to specify a target dialogue state within a string variable. With that you can build f.e. sub routine dialogues that
jump back to a state that is defined before. Use @variablename to indicate that the content of variablename should be used as jump target.
F.e. OptionNext_1: @variablename or Next_1: @variablename
Define variablename as a string variable and assign the target dialogue before using it, f.e. Execute_1: "variablename = 'TargetStateName'".
Attention: when a dialogue is started, it is analyzed which states can be accessed from the start state and only these states are compiled to C# code. As
a dialogue state in a variable cannot be detected as part of the dialogue, this will not be compiled. For that we introduced a new element "RequiredStates" with
that you can force all states in that list to be compiled to C#. Use it like that
RequiredStates: "state1, state2, state3" to add state1-3 to the C# compilation for this dialogue.
= Barking =
With the release of v1.3 we added the possibility of barking: if a dialogue supports a barking state, whenever the player focuses this NPC entity or block, the
barking state will be called and its output will be shown in the UI popup. Add a tag "BarkingState: <state>" in the start dialogue state to handle the barking.
Example: 'BarkingState: TC_SaySomethingInteresting'
Note: the Dialogue state set with BarkingState will not have any interaction or answer options. The "barking" will just display the dialogue output for the NPC. Existing answer-options (for the player) will be ignored.
= Advanced: Functions examples for use in NextIf_, OptionExectue_ or Execute_ statemens
GetReputation(Faction.Talon) < Reputation.FriendlyMin // use > or < or <= or >= ; Also works with NeutralMin etc
GetReputation(Faction.Talon) < 24000 // use > or < or <= or >= ; Steps: 0-6000 = Hostile, 6001-12000 = Undfriendly, 12001-18000 = Neutral, 18001-24000 = Friendly, 24001 = Honored
AddReputation(Faction.Zirax, -100) // Adds amount of reputation points
HasItem('Token', 3, 1234) // item name, count, (meta optional)
AddItem('GoldCoins', 2*GoldCoinsPlayerBet) // item name, count, (meta optional)
RemoveItem('Token', 3, 1234) // item name, count, (meta optional)
GetItems() // returns a list with all items, f.e. use it like that foreach (DialogueSystem.ItemInfo itemInfo in GetItems()) { if (itemInfo.Name == 'Token') return true; }.
public struct ItemInfo {
public string Name;
public int Id;
public int Count;
public int Meta;
}
SetSignal('SignalName', true/false) // signal name and status (on or off = true or false)
bool IsSignalSet('SignalName') // signal name, returns status (see above)
bool IsPdaChapterActive('ChapterTitle') // use chapter title as set in PDA.yaml (no localized text)
AddBookmark('Test Name', 2, 'Jite Pi', 4000, 5000, 6000)"// AddBookmark(name, type, target playfield name, posx, posy, posz) type: 2 = space, 3 = planet
int GetGameTimeInSec() // returns the time in seconds since the game was started
string DeltaTimeToString(gametime) // formats a time intervall to f.e. 1.2 days or 0.7 h
int AddToGlobalVar('VarName', increment) // global vars should only be changed with this call. and only increments (+/- values) can be used to avoid any multi user conflicts.
int SetGlobalVar('VarName', val) // set the value of a global vars. attention: another player can also call this function and overwrite any changes
int GetInstanceTicket() // returns the index number of the current instance or 0 if no instance is active
int GetInstanceTicket('playfieldname') // returns the index number of the instance of 'playfieldname' or 0 if no instance is with this playfield is active
void OpenTraderWindow() // call this when you started the dialogue from a trader (only possible in that case!)
string Loc(string key) // localizes dynamically the given key from the supplied loca csv or the internal loca table
void SetBlockActive(string name, bool bActive) // convenience function to allow setting a block by its name to active/deactive
bool IsBlockActive(string name) // convenience function that returns if a block is active (attention: returns also false if no block is at this position)
bool IsFactionDiscovered(Faction.Zirax) // returns true if the specified faction is discovered by the local player, else false
CallLater(Seconds,FunctionName) // CallLater triggers a function in a time give point later.
Other States that can be used (w. examples)
Player.Stamina = 100 // Check for player stats
Player.Health -= 1 // Check for player stats
Player.Oxygen = 30 // Check for player stats
Player.Food += 1 // Check for player stats
Player.Credit += 1.1 // player credits on his bank account (NOT the moneycard!)
Player.Origin = 0 // For player origins. Requires the ID of the Origin as set in the sectors.yaml
Player.ExperiencePoints = 11// Sets or gets the player's XP
Player.Level // Gets the current level of the player (you can only change the level by changing the ExperiencePoints)
Player.UpgradePoints = 88 // Sets or gets the player's Upgrade/UnlockPoints
Player.Name // the name of the player (string, readonly)
Player.Id // the id of the player on the current platform (string, readonly), on steam this is the steam id of the player
Player.EntityId // the entity id of the player assigned by the game (int, readonly)
Player.Skills['skillname'] // here you can save player local skill values (float). With the Skills you can modify properties of blocks and items: Damage, BlastDAmage, BulletSpread, ReloadDelay, Recoil, RangeAU und RangeLY;
Note: you need to move the value of 'skillname' to a variable in the local dialogue state to be able to work with it in the dialogue.
Note: Adding points to the 'skillname' works like this: Player.Skills['skillname'] += 10
Global Variables that can be used read only:
PlayerName - name of the local player
PlayersInPlayfield - number of players in current playfield
Local Variables:
int, bool, string, float
dbplayer_int: this var holds the same amount for this player in all dialogues
dbstate_int: this var holds the same amount for this player for the current start state
dbglobal_int: this var can be accessed over all dialogs and players (global var). use AddToGlobalVar() or SetGlobalVar() to change it.
dbglobalpf_int: this var can be accessed over all dialogs and players within a playfield (global in a playfield var). use AddToGlobalPfVar() or SetGlobalPfVar() to change it.
dbplayerpoi_int: this var holds the same value for each player only within the current POI.
dbplayer_string: same as dbplayer_int but holds a string
dbstate_string: same as dbstate_int but holds a string
dbglobal_string: same as dbglobal_int but holds a string. use AddToGlobalVar() or SetGlobalVar() to change it.
Text formatting
Colors, bold, italic: can be used
NPC Text flow management and pagination
Global format: '@<type><time>'
type: <p> = break the NPC text into several 'pages' with automatic forwarding (no user interaction required!);
SPECIAL <p>: @p9 will STOP the auto-forward and wait for the user to move the dialogue to the next page!
SPECIAL <p>: @p0 will FORCE the player to stay int he dialogue (he cannot X-out or ESC)
type: <w> = when placed after a word, the text-forward is paused for the time set, then resumed with the next word.
type: <d> = For control element 'd' the time-digit determines the words-per-second speed for the current page from '1' = 17 to '9' = 4.5 words / sec while @d0 means = show entire remaining text instantly!
time = 1-digit timing (integer, not a float!). Each digit is worth 1/2 a second. For examle: @w2 = wait 1 second until showing the next word. 0 = instant.
EXAMPLE: "It seems...@w2 you have no Gold...@p3Get some and come back. Bye"
Note: the new format can be used IN a word (see the example) but only ONCE
Note: if you need the @ as a symblo, just use it twice: @@w2Player
Note: Some examples
"@hello" will show the @ in your text, because the next latter after the @ is NOT a 'w' or 'p'
"@wait" will show the @ as well, because the latter after the 'w' ist not a digit (0-9)
Now you can define your own functions in a node 'Functions'
= User Input
Since v1.7 you can show a dialog for inputting integer, float or text from players. Here is an example how to do that
{ +Dialogue Name: Test_Input_A_Number
Input: "Please enter an integer:", param1: int;Yes;No
Execute: "if (IsInputOk()) result = InputResultAsInt();"
Next_1: State_YesPressed
NextIf_1: "IsInputOk()"
Next_2: State_NoPressed
NextIf_2: "IsInputCancel()"
}
There has to be an int variable of name "result" defined where the result of the player input is put to.
In detail there are these new functions:
Input: <text>, param1: <type>;<ok button>;<cancel button>: the type must be one of int, float or string
IsInputOk(): returns true if the player pressed the Ok button
IsInputCancel(): returns true if the player pressed the Cancel button
InputResultAsInt(), InputResultAsFloat(), InputResultAsString(): returns the player input already converted into the correct type
Text strings can be up to a length of 30 characters for now.
= Techtree
bool UnlockTechTreeItem(string blockOrItemName): Unlocks the specified tech tree item or block. Returns true/false according to success. If you specify now -1 as UnlockCost, the item can only be unlocked with this function!
bool IsTechTreeItemUnlocked(string blockOrItemName): Returns if the specified item/block is already unlocked
============
HANDLING TIPS
=============
When using 'randomizers' make sure to use different values for the randomizer when chaining together dialogue states that shall run randomiziers built upon each other
===========
EXAMPLES
===========
===
Example for Traders to have a dialogue option and not directly opening the trading window; Add the Trader_DialogueSwitchStart to the Dialogue box of a trader ( Control Panel > Trader > right side )
===
{ +Dialogue Name: Trader_DialogueSwitch_Start
NPCName: "Trader"
Output: "How may I serve you?"
Option_1: What are the latest news?
OptionNext_1: Trader_DialogueSwitch_Talk
Option_2: I want to trade
OptionNext_2: Trader_DialogueSwitch_Trade
Functions: "bool HasToken() { foreach (DialogueSystem.ItemInfo itemInfo in GetItems()) { if (itemInfo.Name == 'Token') return true; } return false; } "
}
{ +Dialogue Name: Trader_DialogueSwitch_Talk
NPCName: "Trader"
Output: "The quantumelectric field in Gamma Orionis has shown some fluctuations."
Option_1: Ah..interesting
OptionNext_1: Trader_DialogueSwitch_Start
Option_2: Bye
OptionNext_2: End
}
{ +Dialogue Name: Trader_DialogueSwitch_Trade
NPCName: "Trader"
Execute_1: OpenTraderWindow()
}
TC = TalonChief -----------------------------------------------
{ +Dialogue Name: TC_Start
NPCName: Talon Chief
Variable_1: "FoodCounter", param1: int
Variable_2: "TalkCount", param1: dbstate_int
Variable_3: "PlayerTalkExp", param1: dbplayer_int this var holds the same amount for this player in all dialogues
Variable_4: "GlobalVar", param1: dbglobal_int this var can be accessed across all dialogs and players
Execute_1: "TalkCount = TalkCount + 1"
Execute_2: "PlayerTalkExp = PlayerTalkExp + 1"
Execute_3: "GlobalVar += AddToGlobalVar('GlobalVar', 3)" always use AddToGlobalVar() to change the value. the data is immediately written into the DB.
Next_1: TC_RepuBad
NextIf_1: "GetReputation(Faction.Talon) < Reputation.NeutralMin"
Next_2: TC_HasHolyStatus
NextIf_2: "HasItem('KeyCardBlack',3)"
Next_3: TC_TalkingOk
NextIf_3: "TalkCount > 3 && Random(1, 4) == 1" give player a chance to talk again
Next_4: TC_CameBack
NextIf_4: "TalkCount > 1"
Next_5: TC_DefaultEntry
}
{ +Dialogue Name: TC_CameBack
Output: "Hey we talked already {TalkCount} times, that's enough for now!"
}
{ +Dialogue Name: TC_TalkingOk
Output: "Let's start from the beginning"
Execute_1: "TalkCount = 1"
Next_1: TC_DefaultEntry
}
{ +Dialogue Name: TC_RepuBad
Output: "dlgTCBadRepu"
}
{ +Dialogue Name: TC_HasHolyStatus
Output: "dlgTCHolyStatue"
Option_1: "Yes, I give it to you as a present"
OptionNext_1: TC_GiveHolyStatue
Option_2: "No, I want to keep it"
OptionNext_2: TC_DefaultEntryCont
Option_3: "I need to go"
OptionNext_3: End
}
{ +Dialogue Name: TC_DefaultEntry
Output: "dlgTCGreetings"
Next_1: TC_DefaultEntryCont
}
{ +Dialogue Name: TC_DefaultEntryCont
Option_1: "dlgTCTellMeStory"
OptionNext_1: TC_AskStoryAboutPeople
Option_2: "Can you give me some food?"
OptionNext_2: TC_CheckFood
Option_3: "I need to go."
OptionNext_3: End
}
{ +Dialogue Name: TC_GiveHolyStatue
Output: "I never dreamt that I will get back the statue! I will give you rich presents for that."
RemoveItem: ""
AddItem: ""
Next_1: TC_AskForMore
}
{ +Dialogue Name: TC_CheckFood
Next_1: TC_TooMuchFood
NextIf_1: "FoodCounter == 1"
Next_2: TC_TooMuchFood2
NextIf_2: "FoodCounter > 1"
Next_3: TC_GiveFood
}
{ +Dialogue Name: TC_GiveFood
Execute_1: "FoodCounter = FoodCounter + 1"
Output: "Yes of course. Here is some sea grass. Can I help you more?"
Next_1: TC_DefaultEntryCont
}
{ +Dialogue Name: TC_TooMuchFood
Execute_1: "FoodCounter = FoodCounter + 1"
Output: "You already got food but here is some more sea grass. Now choose something else!"
Next_1: TC_DefaultEntryCont
}
{ +Dialogue Name: TC_TooMuchFood2
Output: "You will not get any more food! Bye!"
}
{ +Dialogue Name: TC_AskStoryAboutPeople
Output: "The story of the Talon began long, long time ago..."
}
BJ = BlackJack ------------------------------------------------
{ +Dialogue Name: BJ_Start
NPCName: txt_UGmuO
Variable_1: "PlayerCards", param1: int
Variable_2: "TalkCount", param1: dbstate_int
Variable_3: "TotalGamesWon", param1: dbstate_int
Variable_4: "TotalGamesLost", param1: dbstate_int
Variable_5: "TableGamesWon", param1: dbstate_int
Variable_6: "TableGamesLost", param1: dbstate_int
Variable_7: "TableCoinsWon", param1: dbstate_int
Variable_8: "TableCoinsLost", param1: dbstate_int
Variable_9: "GamesPlayed", param1: dbstate_int
Output: txt_mWeCe
Next_1: BJ_NoMoney
NextIf_1: "!HasItem('GoldCoins',1)"
Next_2: BJ_AskBet
NextIf_2: "HasItem('GoldCoins',1) && TotalGamesLost < 20 && TotalGamesWon < 10"
Next_3: BJ_Cooldown_Lost
NextIf_3: "TotalGamesLost >= 20"
Next_4: BJ_Cooldown_Won
NextIf_4: "TotalGamesWon >= 10"
}
{ +Dialogue Name: BJ_Cooldown_Won
Output: txt_KaO0m
Execute_1: "TalkCount = TalkCount + 1"
Next_1: BJ_Cooldown_Won_Clear
NextIf_1: "TalkCount >= 10"
}
{ +Dialogue Name: BJ_Cooldown_Won_Clear
Execute_1: "TotalGamesWon = 0"
}
{ +Dialogue Name: BJ_Cooldown_Lost
Output: txt_O4ame
Execute_1: "TalkCount = TalkCount + 1"
Next_1: BJ_Cooldown_Lost_Clear
NextIf_1: "TalkCount >= 20"
}
{ +Dialogue Name: BJ_Cooldown_Lost_Clear
Execute_1: "TotalGamesLost = 0"
}
{ +Dialogue Name: BJ_AskBet
Variable_1: "GoldCoinsPlayerBet", param1: int
Output: txt_mq8OK
Option_1: txt_4WUCq
OptionNext_1: BJ_RemoveCoins
OptionExecute_1: "GoldCoinsPlayerBet = 1"
Option_2: txt_Zi4Gm
OptionIf_2: "HasItem('GoldCoins', 10)"
OptionNext_2: BJ_RemoveCoins
OptionExecute_2: "GoldCoinsPlayerBet = 10"
Option_3: txt_BxmOu
OptionIf_3: "HasItem('GoldCoins', 100)"
OptionNext_3: BJ_RemoveCoins
OptionExecute_3: "GoldCoinsPlayerBet = 100"
Option_4: txt_80qd8
OptionNext_4: BJ_Rules
Option_5: txt_eeUSG
OptionNext_5: BJ_Statistics
Execute_1: "TalkCount = 0"
}
{ +Dialogue Name: BJ_Statistics
Output: txt_WKaie
Option_1: txt_aCMq8
OptionNext_1: BJ_AskBet
}
{ +Dialogue Name: BJ_Rules
Output: txt_oiqaF
Option_1: txt_emqJ4
OptionNext_1: BJ_AskBet
}
{ +Dialogue Name: BJ_RemoveCoins
Execute_1: "RemoveItem('GoldCoins', GoldCoinsPlayerBet)"
Next_1: BJ_StartGame
}
{ +Dialogue Name: BJ_NoMoney
Output: txt_8cmWW
}
{ +Dialogue Name: BJ_StartGame
Execute_1: "PlayerCards = Random(1,11)"
Output: txt_S0uKE
Next_1: BJ_AskCard
}
{ +Dialogue Name: BJ_AskCard
Output: txt_aqCI0
Option_1: txt_GiiaK
OptionNext_1: BJ_NewCard
Option_2: txt_8OGas
OptionNext_2: BJ_DealerTakesFirstCard
}
{ +Dialogue Name: BJ_NewCard
Variable_1: "NextCard", param1: int
Execute_1: "NextCard = Random(1,11)"
Execute_2: "PlayerCards = PlayerCards + NextCard"
Output: txt_GaeK3
Next_1: BJ_CheckPlayerLost
NextIf_1: "PlayerCards > 21"
Next_2: BJ_AskCard
}
{ +Dialogue Name: BJ_CheckPlayerLost
Execute_1: "TotalGamesLost = TotalGamesLost + 1"
Execute_2: "TableGamesLost = TableGamesLost + 1"
Execute_3: "TableCoinsLost = TableCoinsLost + GoldCoinsPlayerBet"
Output: txt_G0Fqm
Next_1: BJ_AskForNewGame
}
{ +Dialogue Name: BJ_DealerTakesFirstCard
Variable_1: "DealerCards", param1: int
Execute_1: "DealerCards = Random(1,11)"
Output: txt_O4W4q
Next_1: BJ_DealerTakesAnotherCard
}
{ +Dialogue Name: BJ_DealerTakesAnotherCard
Variable_1: "DealerNewCard", param1: int
Execute_1: "DealerNewCard = Random(1,11)"
Execute_2: "DealerCards = DealerCards + DealerNewCard"
Output: txt_0CqKm
Next_1: BJ_DealerTakesAnotherCard
NextIf_1: "DealerCards < 21 && DealerCards < PlayerCards"
Next_2: BJ_PlayerWins
NextIf_2: "PlayerCards > DealerCards || DealerCards > 21"
Next_3: BJ_DealerWins
}
{ +Dialogue Name: BJ_PlayerWins
Output: txt_40jMG
Execute_1: "AddItem('GoldCoins', 2*GoldCoinsPlayerBet)"
Execute_2: "TotalGamesWon = TotalGamesWon + 1"
Execute_3: "TableGamesWon = TableGamesWon + 1"
Execute_4: "TableCoinsWon = TableCoinsWon + GoldCoinsPlayerBet"
Next_1: BJ_AskForNewGame
}
{ +Dialogue Name: BJ_DealerWins
Output: txt_8mhiq
Execute_1: "TotalGamesLost = TotalGamesLost + 1"
Execute_2: "TableGamesLost = TableGamesLost + 1"
Execute_3: "TableCoinsLost = TableCoinsLost + GoldCoinsPlayerBet"
Next_1: BJ_AskForNewGame
}
{ +Dialogue Name: BJ_AskForNewGame
Output: txt_8Ujii
Option_1: txt_vmOu4
OptionNext_1: BJ_Start
Option_2: txt_8Oiie
OptionNext_2: BJ_Bye
Execute_1: "GamesPlayed = GamesPlayed + 1"
}
{ +Dialogue Name: BJ_Bye
Output: txt_O8CaF
}

2055
Dialogues.csv

File diff suppressed because one or more lines are too long

7220
Dialogues.ecf

File diff suppressed because it is too large

9586
EClassConfig.ecf

File diff suppressed because it is too large

507
EGroupsConfig.ecf

@ -0,0 +1,507 @@
# Note: Creature's _factions_ are set in the EClassConfig!
# =======================
# ==================================================
# BATTLE GROUPS - Spawned as a group, interacting with each other as a team
# Behavioral AI ===
{ EGroup Name: Alien02_03_BattleGroup
AlienBug03Group: "1, 2" /* Will continuously respawn AlienBug02Group, and bombards player from afar */
AlienBug02Group: "5, 7" /* Will try to protect AlienBug03Group */
SpawnInSameDirection:false /* if true, animals will spawn all in approximately same direction */
}
{ EGroup Name: Alien02_03_BattleGroupLarge
AlienBug03Group: "2, 3" /* Will continuously respawn AlienBug02Group, and bombards player from afar */
AlienBug02Group: "10, 12" /* Will try to protect AlienBug03Group */
SpawnInSameDirection:false
}
# ==================================================
# HERDS
# Behavioral AI ===
{ EGroup Name: Parasaurs
Parasaur02: "5, 6"
ParasaurBaby: "3, 5"
}
{ EGroup Name: ParasaursFew /* (Used on TemperateStarter (Crashsite), to better control max number of possible spawns) */
Parasaur02: "3, 5"
ParasaurBaby: "1, 2"
}
{ EGroup Name: ParasaursOld
Parasaur: "5, 6"
ParasaurBaby: "3, 5"
}
{ EGroup Name: ParasaursFewOld /* (Used on TemperateStarter (Crashsite), to better control max number of possible spawns) */
Parasaur: "3, 5"
ParasaurBaby: "1, 2"
}
{ EGroup Name: Oviraptors
Oviraptor: "2, 2"
OviraptorBaby: "2, 4"
}
{ EGroup Name: Spiders01
Spider01: "3, 5"
SpawnInSameDirection:false
}
{ EGroup Name: Spiders01few /* (Used on TemperateStarter, to keep the threat small) */
Spider01: "1, 3"
SpawnInSameDirection:false
}
{ EGroup Name: CaveWormGreyHerd
CaveWormGrey: "2, 4"
}
{ EGroup Name: CaveWormWhiteHerd
CaveWormWhite: "2, 4"
}
{ EGroup Name: CaveWormGreenHerd
CaveWormGreen: "2, 4"
}
{ EGroup Name: WormDesertHerd
WormDesert: "2, 5"
# WormDesertLeader: "1, 1"
# WormDesertGroup: "3, 4"
}
{ EGroup Name: WormDesertLargeHerd
WormDesertLarge: "2, 4"
# WormDesertLargeLeader: "1, 1"
# WormDesertLargeGroup: "2, 3"
}
{ EGroup Name: RaptorHerd
Raptor02: "5, 8"
SpawnInSameDirection:true
}
{ EGroup Name: RaptorHerdOld
Raptor: "5, 8"
SpawnInSameDirection:true
}
{ EGroup Name: LizardMuleHerd
LizardMule: "2, 4"
LizardMuleBaby: "3, 5"
}
# ===============
{ EGroup Name: ZiraxMinigunPatrol
ZiraxLaser: "1, 1"
ZiraxMinigun: "3, 4"
}
{ EGroup Name: ZiraxMinigunPatrolEasy
ZiraxMinigun: "4, 5"
}
{ EGroup Name: ZiraxRocketPatrol
ZiraxLaser: "1, 1"
ZiraxRocket: "3, 4"
}
{ EGroup Name: ZiraxRocketPatrolEasy
ZiraxMinigun: "1, 1"
ZiraxRocket: "3, 4"
}
{ EGroup Name: ZiraxShotgunPatrol
ZiraxLaser: "1, 1"
ZiraxShotgun: "3, 4"
}
{ EGroup Name: ZiraxShotgunPatrolEasy
ZiraxMinigun: "1, 1"
ZiraxShotgun: "3, 4"
}
{ EGroup Name: ZiraxMechanoidPatrol
ZiraxLaser: "1, 1"
Mechanoid: "3, 5"
}
{ EGroup Name: ZiraxRipperDogPatrol
ZiraxLaser: "1, 1"
RipperDog: "3, 5"
}
{ EGroup Name: ZiraxRipperDogPatrolEasy
ZiraxMinigun: "1, 1"
RipperDog: "3, 5"
}
# Obsolete - keep for old playfield.yaml
{ EGroup Name: ZiraxOverseerPatrol
ZiraxLaser: "1, 1"
RipperDog: "3, 5"
# OverseerGroup: "3, 5"
}
{ EGroup Name: ZiraxCrawlerPatrol
ZiraxLaser: "1, 1"
RipperDog: "3, 5"
# CrawlerGroup: "3, 5"
}
# Polaris Patrols
{ EGroup Name: AssaultCyborgsCommandoPatrol
AssaultCyborg: "3, 4"
AssaultCyborgCommando: "1,1"
SpawnInSameDirection:true
}
{ EGroup Name: AlienSoldierShotgunCommandoPatrol
AssaultCyborgCommando: "1, 1"
SoldierAlienShotgun: "3,4"
SpawnInSameDirection:true
}
{ EGroup Name: AlienSoldierRifleCommandoPatrol
SoldierAlienAssaultRifle: "3, 4"
AssaultCyborgCommando: "1,2"
SpawnInSameDirection:true
}
# Normal AI ===
{ EGroup Name: AssaultCyborgs
AssaultCyborgSentinel: "2, 2"
AlienCivilian1: "1, 1"
SpawnInSameDirection:true
}
{ EGroup Name: TalonGuardianHerd /* Talon faction */
TalonGuardianGroup: "3, 4"
TalonGuardianCrossbowGroup: "1, 3"
}
{ EGroup Name: AssaultCyborgsCommandoHerd /* Polaris Faction. */
AssaultCyborg: "2, 2"
AssaultCyborgCommando: "1, 1"
SpawnInSameDirection:true
}
{ EGroup Name: AssaultCyborgsDamagedHerd /* Pirate Faction. */
AssaultCyborgDamaged: "2, 3"
SpawnInSameDirection:true
}
{ EGroup Name: HexapodsInfectedHerd /* 'TheLegacy' faction. - Aggressive. */
HexapodInfected: "2, 3"
}
{ EGroup Name: AlienAssassinsInfectedHerd /* 'TheLegacy' faction. - Aggressive. */
AlienAssassinInfected: "2, 3"
}
{ EGroup Name: HumanSoldiersInfectedHerd /* 'TheLegacy' faction. - Aggressive. */
SoldierHumanMaleInfected: "1, 1"
SoldierHumanMale2Infected: "2, 3"
}
{ EGroup Name: ZiraxInfectedHerd /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedBlue: "2, 3"
ZiraxInfectedYellow: "1, 1"
TotalHorror: "1,2"
SpawnInSameDirection:true
}
# ==================================================
# Individual behavior but spawned as a group
# Behavioral AI
{ EGroup Name: AlienBugs01 /* (Territorial) */
AlienBug01V2: "3, 5"
SpawnInSameDirection:false
}
{ EGroup Name: AlienBugs01Old /* (Non-Territorial) */
AlienBug01Old: "3, 5"
SpawnInSameDirection:false
}
{ EGroup Name: LizardMules
LizardMule: "1, 3"
LizardMuleBaby: "2, 5"
}
# Normal AI
# ==================================================
# (Mostly) INDIVIDUALS
# Behavioral AI ===
{ EGroup Name: Creepys
Creepy: "1, 1"
}
{ EGroup Name: Triceratopses
Triceratops: "1, 2"
}
{ EGroup Name: Pangolins
Pangolin: "1, 2"
}
{ EGroup Name: Telluropods
Telluropod: "1, 1"
}
{ EGroup Name: AlienBugs03
AlienBug03: "1, 1"
}
# Normal AI ===
{ EGroup Name: Megalonopses
MegalonopsGrey: "1, 1"
}
{ EGroup Name: Raptors
Raptor02: "1, 1"
}
{ EGroup Name: RaptorsOld
Raptor: "1, 1"
}
{ EGroup Name: MegalonopsesBrown
MegalonopsBrown: "1, 1"
}
{ EGroup Name: RaptorsNight
RaptorNight: "2, 4"
}
{ EGroup Name: GolemsDesert
GolemDesert: "1, 1"
}
{ EGroup Name: GolemsIce
GolemIce: "1, 1"
}
{ EGroup Name: GolemsSwamp
GolemSwamp: "1, 1"
}
{ EGroup Name: WoodWalkers
WoodWalker: "1, 1"
}
{ EGroup Name: WormsDesert
WormDesert: "1, 1"
}
{ EGroup Name: WormsDesertLarge
WormDesertLarge: "1, 1"
}
{ EGroup Name: RipperDogs
RipperDog: "1, 1"
}
{ EGroup Name: Otyughs
Otyugh: "1, 1"
}
{ EGroup Name: Spinosauruses
Spinosaurus: "1, 1"
}
{ EGroup Name: CaveWormsGrey
CaveWormGrey: "1, 1"
}
{ EGroup Name: CaveWormsGreen
CaveWormGreen: "1, 1"
}
{ EGroup Name: CaveWormsWhite
CaveWormWhite: "1, 1"
}
{ EGroup Name: Overseers
Overseer: "1, 1"
}
{ EGroup Name: TotalHorrors
TotalHorror: "1, 1"
}
{ EGroup Name: PlantMonsters
PlantMonster: "1, 1"
}
{ EGroup Name: Slimes
Slime: "1, 1"
}
{ EGroup Name: SlimesWhite
SlimeWhite: "1, 1"
}
{ EGroup Name: AlienBugs01
AlienBug01V2: "1, 1"
}
{ EGroup Name: AlienBugs02
AlienBug02: "1, 1"
}
{ EGroup Name: AlienBugs04
AlienBug04: "1, 1"
}
{ EGroup Name: Spiders02
Spider02: "1, 1"
}
{ EGroup Name: Spiders03
Spider03: "1, 1"
}
{ EGroup Name: AlienCivilians1
AlienCivilian1: "1, 1"
}
{ EGroup Name: Hexapods /* Kriel Faction */
Hexapod: "1, 1"
}
{ EGroup Name: AlienAssassinGreys /* Kriel Faction */
AlienAssassinGrey: "1, 1"
}
{ EGroup Name: AlienAssassinReds /* Kriel Faction */
AlienAssassinRed: "1, 1"
}
{ EGroup Name: TalonGuardians /* Talon Faction */
TalonGuardian: "1, 1"
}
{ EGroup Name: Crawlers /* Talon Faction */
Crawler: "1, 1"
}
{ EGroup Name: HexapodsInfected /* 'TheLegacy' faction. - Aggressive. */
HexapodInfected: "1, 1"
}
{ EGroup Name: AlienAssassinGreysInfected /* 'TheLegacy' faction. - Aggressive. */
AlienAssassinInfected: "1, 1"
}
{ EGroup Name: SoldierAliensInfected /* 'TheLegacy' faction. - Aggressive. */
SoldierAlienInfected: "1, 1"
}
{ EGroup Name: TalonGuardiansCrossbowInfected /* 'TheLegacy' faction. - Aggressive. */
TalonGuardianInfectedCrossbow: "1, 1"
}
{ EGroup Name: TalonGuardiansGreenInfected /* 'TheLegacy' faction. - Aggressive. */
TalonGuardianInfectedGreen: "1, 1"
}
{ EGroup Name: TalonGuardiansBlueInfected /* 'TheLegacy' faction. - Aggressive. */
TalonGuardianInfectedBlue: "1, 1"
}
{ EGroup Name: TalonGuardiansRedInfected /* 'TheLegacy' faction. - Aggressive. */
TalonGuardianInfectedRed: "1, 1"
}
{ EGroup Name: SoldierHumanMalesInfected /* 'TheLegacy' faction. - Aggressive. */
SoldierHumanMaleInfected: "1, 1"
}
{ EGroup Name: SoldierHumanMales2Infected /* 'TheLegacy' faction. - Aggressive. */
SoldierHumanMale2Infected: "1, 1"
}
{ EGroup Name: ZiraxBluesInfected /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedBlue: "1, 1"
}
{ EGroup Name: ZiraxGreensInfected /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedGreen: "1, 1"
}
{ EGroup Name: ZiraxRedsInfected /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedRed: "1, 1"
}
{ EGroup Name: ZiraxYellowsInfected /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedYellow: "1, 1"
}
{ EGroup Name: ZiraxPurplesInfected /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedPurple: "1, 1"
}
{ EGroup Name: ZiraxCommandersInfected /* 'TheLegacy' faction. - Aggressive. */
ZiraxInfectedCommander: "1, 1"
}

1478
FactionWarfare.ecf

File diff suppressed because it is too large

289
Factions.ecf

@ -0,0 +1,289 @@
# todo: add a Symbol + Description per faction
#---------------------------------------------------------
# == Required values ==
# Id: - The id must be unique and is used in savegames so if you change it, this will break existing savegames. The id must be < 100 else a player faction will be created! You can have gaps in the id list.
# FactionName: - No spaces and do not use special characters > can be used in the localization! Factio Name = used as KEY; FactionName is the reference for use with playfields, POI and such!
# Abbrev: - Only 3 letters. Avoid special characters
# Color: ",," - To get the RGB color code, multiply 255 with the float. To get the float for the setting, divide the RGB by 255
# Description: - The description (if available) will be shown on top of all NPC factions.
#
# == Settings for STATIC factions ==
# (Factions like the Legacy, Alien .. you cannot interact with or improve your standing or such)
# Friendly: true - Always friendly; DefReputation.ecf. is not used; Do not set 'Reputation: true' when using this;
# Unfriendly: true - Alsways hostile; DefReputation.ecf. is not used; Do not set 'Reputation: true' when using this;
# Note: not setting either Friendly or Unfriendly defaults the faction to a NEUTRAL state
#
# == Settings for DYNAMIC factions ==
# (Factions like the Zirax with Reputation, own territoryclaim on planets, improve/loose reputation etc pp)
# Reputation: true - If NOT set, the reputation matrix in the DefReputation.ecf is NOT used! Faction is static-hostile if FriendlyToPlayers is not set to true then.
# ClaimTerritory: true - If set to true, the faction can have a visual territory on planets; If not set, no territory is created around the factions POIs. Does NOT relate to galactic territories! Thesea are set in the galaxy.ecf
# == Other Settings ===
# OmitMapLegend: true - Of set the factions is HIDDEN from the faction-info list on the maps
# HideAbbrev: true - Will hide the Abbrev of the faction in the HUD (Faction-tag)
# Discovery: true - Factions can be discovered as soon as any of their POIs is discovered. To enable that a faction is 'discoverable', add 'Discovery: true' to the faction in Faction.ecf. Use console cmd 'faction discover <faction>' to debug that.
# AttackNPC: true - NPC factions will attack other NPC faction that have this enabled
# == Notes ===
# You cannot MIX settings for STATIC and DYNAMIC factions!
# Some factions (Zirax, Talon, Alien, Polaris, Prey, Predator, Admin) are not available for customization as they are handled as internal faction references or fallbacks; see comments below!
#
#
#================================================================================
# HARDCODED FACTIONS
# >> Do NOT change anything, except COLOR
# >> Hard coded factions need to be defined/placed BEFORE any other faction!
#================================================================================
#
{ Faction Id: 1, Name: "Public"
Abbrev: Pub
Color: "0.9, 0.9, 0.9"
OmitMapLegend: true
HideAbbrev: true
NPC: false
}
{ Faction Id: 2, Name: "Zirax" #Zirax Empire head faction; split into houses: Xenu, Rados, Epsilon, Ghyst, Serdu,..
Abbrev: Zrx
Color: "0.9, 0.2, 0.2"
ClaimTerritory: true
Reputation: true # Do not change. Hardcoded effect on Base Attacks. Change will lead to issues with related features!
AttackNPC: true
Discovery: true
}
{ Faction Id: 3, Name: "Predator"
Abbrev: Prd
Color: "0.9, 0.75, 0"
HideAbbrev: true
OmitMapLegend: true
}
{ Faction Id: 4, Name: "Prey"
Abbrev: Pry
Color: "0, 0.75, 0.75"
HideAbbrev: true
OmitMapLegend: true
}
{ Faction Id: 5, Name: "Admin"
Abbrev: Adm
Color: "0, 0.9, 0.9"
Friendly: true
HideAbbrev: true
OmitMapLegend: true
NPC: false
}
{ Faction Id: 6, Name: "Talon" #Main Story Faction
Abbrev: Tal
Color: "0.2, 0.9, 0.2"
ClaimTerritory: true
Reputation: true # Do not change. Hardcoded effect on Base Attacks. Change will lead to issues with related features!
Discovery: true
}
{ Faction Id: 7, Name: "Polaris" #Main Story Faction
Abbrev: Pol
Color: "0.9, 0.6, 0.2"
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 8, Name: "Alien" #Use for Dungeons and abandoned POI
Abbrev: Aln
Color: "0.9, 0.9, 0.9"
Unfriendly: true
OmitMapLegend: true
HideAbbrev: true
AttackNPC: true
Discovery: true
}
#===========================
# CUSTOM STATIC Factions
#===========================
{ Faction Id: 9, Name: "DESC" #Only for DESC Modules/Stations with GIN
Abbrev: DSC
Color: "0.9, 0.9, 0.9"
Friendly: true
OmitMapLegend: true
HideAbbrev: true
}
{ Faction Id: 10, Name: "TheLegacy" #Main Story Faction
Abbrev: Lgc
Color: "0, 1, 0.67"
Unfriendly: true
AttackNPC: true
Discovery: true
}
{ Faction Id: 11, Name: "UCH" #Main Story Faction
Abbrev: UCH
Color: "0.2, 0.2, 0.9"
Friendly: true
Discovery: true
}
{ Faction Id: 12, Name: "Progenitor" #Main Story Faction
Abbrev: Prg
Color: "0.9, 0.9, 0.9"
Friendly: true
OmitMapLegend: true
HideAbbrev: true
Discovery: true
}
{ Faction Id: 13, Name: "Void" #Main Story Faction
Abbrev: Voi
Color: "0, 0, 0"
Unfriendly: true
OmitMapLegend: true
HideAbbrev: true
Discovery: true
}
{ Faction Id: 14, Name: "GLaD" #Main Story Faction
Abbrev: GLD
Color: "0.2, 0.2, 0.9"
Friendly: true
Discovery: true
}
{ Faction Id: 15, Name: "Civilian" #Fallback for example for NPC spawners or sitatuions where a "story neutral" factions is required.
Abbrev: Civ
Color: "0.9, 0.9, 0.9"
Friendly: true
OmitMapLegend: true
HideAbbrev: true
Discovery: true
}
{ Faction Id: 27, Name: "Warlord" #Use for hostile random POI and Encounters
Abbrev: War
Color: "0.9, 0.2, 0.2"
Unfriendly: true
OmitMapLegend: true
HideAbbrev: true
AttackNPC: true
#Discovery: true
}
#===========================
# CUSTOM DYNAMIC Factions
#===========================
{ Faction Id: 16, Name: "Pirates"
Abbrev: Pir
Color: "0.8, 0.8, 0"
ClaimTerritory: true
Reputation: true
Discovery: true
AttackNPC: true
}
{ Faction Id: 17, Name: "Kriel"
Abbrev: Kri
Color: "0.5, 0, 0.8"
ClaimTerritory: true
Reputation: true
Discovery: true
AttackNPC: true
}
{ Faction Id: 18, Name: "Trader"
Abbrev: Tra
Color: "0.6, 1, 1"
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 19, Name: "Colonists"
Abbrev: Col
Color: "0.9, 0.9, 0.9"
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 20, Name: "Tesch"
Abbrev: Tsc
Color: "0.9, 0.2, 0.6"
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 28, Name: "Farr" #Brotherhood of Farr
Abbrev: BoF
Color: "1, 0.9, 0.7"
ClaimTerritory: true
Reputation: true
Discovery: true
# AttackNPC: true
}
{ Faction Id: 29, Name: "Wastelanders"
Abbrev: WST
Color: "0.7, 0.4, 0.3"
ClaimTerritory: true
Reputation: true
Discovery: true
# AttackNPC: true
}
{ Faction Id: 30, Name: "ARC"
Abbrev: ARC
Color: "1, 0.9, 0.7"
ClaimTerritory: true
Reputation: true
Discovery: true
# AttackNPC: true
}
#==============================
# Custom dynamic SUB-Factions
#==============================
{ Faction Id: 21, Name: "Xenu" # Zirax Empire - Military
Abbrev: Xen
Color: "0.9, 0.2, 0.2"
OmitMapLegend: true
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 22, Name: "Rados" # Zirax Empire - Support
Abbrev: Rad
Color: "0.9, 0.2, 0.2"
ClaimTerritory: true
OmitMapLegend: true
Reputation: true
Discovery: true
}
{ Faction Id: 23, Name: "Epsilon" # Zirax Empire - Communication
Abbrev: Eps
Color: "0.9, 0.2, 0.2"
OmitMapLegend: true
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 24, Name: "Ghyst" # Zirax Empire - Recon
Abbrev: Ghy
Color: "0.9, 0.2, 0.2"
OmitMapLegend: true
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 25, Name: "Serdu" # Zirax Empire - Religion
Abbrev: Ser
Color: "0.9, 0.2, 0.2"
OmitMapLegend: true
ClaimTerritory: true
Reputation: true
Discovery: true
}
{ Faction Id: 26, Name: "Abyssal" # Zirax Empire - Science
Abbrev: Aby
Color: "0.9, 0.2, 0.2"
OmitMapLegend: true
ClaimTerritory: true
Reputation: true
Discovery: true
}

1153
GalaxyConfig.ecf

File diff suppressed because it is too large

13049
ItemsConfig.ecf

File diff suppressed because it is too large

665
LootGroups.ecf

@ -0,0 +1,665 @@
## Line format: Item_x: name , data: count[-range], xdata: probability (x incrementing, if using a count-range use double quotes)
{ +LootGroup Name: empty
}
## New Escape Pod settings: Difficulty Levels
{ +LootGroup Name: EscapePodEasy
Count: all
Item_0: EmergencyRations, param1: 1
Item_1: WaterBottle, param1: 5
Item_2: RadarSuitT1, param1: 1
Item_3: SurvivalTent, param: 1
Item_4: OreScanner, param:1
Item_5: SantaClausHat, param:1
Item_6: SnowmanHead, param:1
# Item_4: MobileAirCon, param: 1
# Item_5: OxygenGeneratorSmall, param: 1
# Item_6: OreScanner, param: 1
# Item_1: EmergencyRations, param1: 1
# Item_2: RespiratorCharge, param1: 3
# Item_0: Flashlight, param1: 1
# Item_1: Pistol, param1: 1
# Item_2: 50Caliber, param1: 250
# Item_3: Explosives, param1: 5
# Item_4: Drill, param1: 1
# Item_5: Chainsaw, param1: 1
# Item_6: BioFuel, param1: 5
# Item_7: ConstructorSurvival, param1: 1
# Item_8: PlayerBikeKit, param1: 1
# Item_9: AutoMinerCore, param1: 10
# Item_10: Medikit02, param1: 3
# Item_11: AntibioticPills, param1: 3
# Item_12: RadiationPills, param1: 2
# Item_13: EmergencyRations, param1: 4
# Item_14: WaterBottle, param1: 2
# Item_15: RespiratorCharge, param1: 5
# Item_16: SiliconIngot, param1: 200
# Item_17: CopperIngot, param1: 300
# Item_18: IronIngot, param1: 350
# Item_19: CobaltIngot, param1: 175
# Item_20: MagnesiumPowder, param1: 50
# Item_21: PromethiumPellets, param1: 350
# Item_22: EnergyCell, param1: 5
# Item_23: EVABoost, param1: 1
# Item_24: OxygenBottleLarge, param1: 5
# Item_25: OxygenGenerator, param1: 1
# Item_26: Core, param1: 1
# Item_27: GrowingPot, param1: 2
# Item_28: LightPlant01, param1: 1
# Item_29: TomatoStage1, param1: 1
# Item_30: WheatStage1, param1: 1
# Item_31: CornStage1, param1: 1
# Item_32: PumpkinStage1, param1: 1
# Item_33: PearthingStage1, param1: 1
# Item_34: DurianRoot, param1: 1
}
{ +LootGroup Name: EscapePodMedium
Count: all
Item_0: EmergencyRations, param1: 1
Item_1: WaterBottle, param1: 5
Item_2: RadarSuitT1, param1: 1
Item_3: SurvivalTent, param: 1
Item_4: OreScanner, param:1
Item_5: SantaClausHat, param:1
Item_6: SnowmanHead, param:1
# Item_1: EmergencyRations, param1: 1
# Item_2: RespiratorCharge, param1: 2
# Item_0: Flashlight, param1: 1
# Item_1: Pistol, param1: 1
# Item_2: 50Caliber, param1: 150
# Item_3: Drill, param1: 1
# Item_4: Chainsaw, param1: 1
# Item_5: BioFuel, param1: 4
# Item_6: ConstructorSurvival, param1: 1
# Item_7: OxygenGeneratorSmall, param1: 1
# Item_8: EnergyCell, param1: 3
# Item_9: RespiratorCharge, param1: 2
# Item_10: WaterBottle, param1: 2
# Item_11: Medikit02, param1: 2
# Item_12: EmergencyRations, param1: 2
# Item_13: StomachPills, param1: 1
# Item_14: SiliconIngot, param1: 50
# Item_15: CopperIngot, param1: 50
# Item_16: IronIngot, param1: 10
# Item_17: CobaltIngot, param1: 50
# Item_18: MagnesiumPowder, param1: 30
# Item_19: PromethiumPellets, param1: 50
# Item_20: Core, param1: 1
# Item_21: PlayerBikeKit, param1: 1
# Item_22: AutoMinerCore, param1: 8
# Item_23: EVABoost, param1: 1
}
{ +LootGroup Name: EscapePodHard
Count: all
Item_0: EmergencyRations, param1: 1
Item_1: WaterBottle, param1: 5
Item_2: RadarSuitT1, param1: 1
Item_3: SurvivalTent, param: 1
Item_4: OreScanner, param:1
Item_5: SantaClausHat, param:1
Item_6: SnowmanHead, param:1
# Item_1: EmergencyRations, param1: 1
# Item_2: RespiratorCharge, param1: 1
# Item_0: Flashlight, param1: 1
# Item_1: Pistol, param1: 1
# Item_2: 50Caliber, param1: 150
# Item_3: Drill, param1: 1
# Item_4: Chainsaw, param1: 1
# Item_5: BioFuel, param1: 2
# Item_6: ConstructorSurvival, param1: 1
# Item_7: OxygenGeneratorSmall, param1: 1
# Item_8: EnergyCell, param1: 3
# Item_9: EmergencyRations, param1: 1
# Item_10: PlayerBikeKit, param1: 1
# Item_11: AutoMinerCore, param1: 5
}
## Escape pod - New Start
{ +LootGroup Name: StartingEquipment_NewStart
# Count: all
# Item_0: Drill, param1: 1
# Item_1: Chainsaw, param1: 1
# Item_2: BioFuel, param1: 2
# Item_3: ConstructorSurvival, param1: 1
# Item_4: OxygenGeneratorSmall, param1: 1
}
## Random Loot
{ +LootGroup Name: BasicComponents
Count: "1,2"
Item_0: SteelPlate, param1: "1,5", param2: 0.3
Item_1: GlassPlate, param1: "1,2", param2: 0.3
Item_2: Electronics, param1: "1,2", param2: 0.2
Item_3: OpticalFiber, param1: "1,2", param2: 0.3
Item_4: EnergyMatrix, param1: "1,2", param2: 0.3
# Item_5: MetalPieces, param1: "1,5", param2: 0.3
}
{ +LootGroup Name: CompositeComponents
Count: "1,2"
Item_0: MechanicalComponents, param1: "1,5", param2: 0.4
Item_1: Motor, param1: "1,2", param2: 0.2
Item_2: Nanotubes, param1: "1,5", param2: 0.2
Item_3: Computer, param1: "1,2", param2: 0.1
Item_4: CapacitorComponent, param1: "1,2", param2: 0.01
Item_5: CobaltAlloy, param1: 1, param2: 0.01
}
# not yet dropped
{ +LootGroup Name: AdvancedComponents
Count: "1"
Item_0: FluxCoil, param1: "1,3", param2: 0.2
Item_1: Oscillator, param1: "1,2", param2: 0.2
}
{ +LootGroup Name: Ores
Count: "1,2"
Item_0: IronOre, param1: "10,20", param2: 0.4
Item_1: CobaltOre, param1: "10,20", param2: 0.4
Item_2: CopperOre, param1: "10,15", param2: 0.3
Item_3: SiliconOre, param1: "10,15", param2: 0.3
Item_4: NeodymiumOre, param1: "10,15", param2: 0.2
Item_5: TitanOre, param1: "10,15", param2: 0.2
Item_6: MagnesiumOre, param1: "10,15", param2: 0.1
Item_7: PromethiumOre, param1: "10,15", param2: 0.1
/* Item_0: ErestrumOre, param1: "1,20", param2: 0.2
Item_10: ZascosiumOre, param1: "1,20", param2: 0.2 */
}
{ +LootGroup Name: Ingots
Count: "1,2"
Item_0: IronIngot, param1: "10,20", param2: 0.5
Item_1: CobaltIngot, param1: "10,20", param2: 0.4
Item_2: CopperIngot, param1: "10,15", param2: 0.3
Item_3: SiliconIngot, param1: "10,15", param2: 0.2
Item_4: NeodymiumIngot, param1: "10,15", param2: 0.1
Item_5: TitanRods, param1: "10,15", param2: 0.1
Item_6: MagnesiumPowder, param1: "10,15", param2: 0.1
Item_7: PromethiumPellets, param1: "10,20", param2: 0.2
Item_8: PlasticMaterial, param1: "10,20", param2: 0.3
/* Item_0: ErestrumIngot, param1: "1,10", param2: 0.2
Item_0: ZascosiumIngot, param1: "1,10", param2: 0.2 */
}
{ +LootGroup Name: Sprouts
Count: "1,2"
Item_0: DurianRoot, param1: 1, param2: 0.2
Item_1: TomatoStage1, param1: 1, param2: 0.2
Item_2: WheatStage1, param1: 1, param2: 0.2
Item_3: CornStage1, param1: 1, param2: 0.2
Item_4: PumpkinStage1, param1: 1, param2: 0.2
Item_5: PearthingStage1, param1: 1, param2: 0.2
Item_6: InsanityPepperStage1, param1: 1, param2: 0.2
Item_7: DesertPlant20Stage1, param1: 1, param2: 0.2
}
# TEST - nested groups not yet working
/* { +LootGroup Name: PistolAmmo
Count: all
Item_0: Pistol, param1: 1