整理目录

This commit is contained in:
ProjectKoi-Kalo\Kalo 2025-05-11 23:51:21 +08:00
parent 46b7079385
commit a11e615c55
95 changed files with 612 additions and 2449 deletions

2
.gitattributes vendored
View File

@ -1,2 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,29 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef Name="SimpleLootBoxBase" ParentName="ResourceBase" Abstract="True">
<thingClass>ThingWithComps</thingClass>
<graphicData>
<graphicClass>Graphic_Single</graphicClass><!-- Using Graphic_StackCount, the item's texture will reflect its stack count -->
</graphicData>
<stackLimit>10</stackLimit><!-- Stack count of the item -->
<techLevel>Medieval</techLevel><!-- The item's tech level; it does not affect any functionality and is purely a special tag -->
<thingCategories><!-- Item category -->
<li>Artifacts</li>
</thingCategories>
<tradeTags><!-- Item trade tags -->
<li>Artifacts</li>
</tradeTags>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExampleA</defName><!-- Definition name of the loot box -->
<label>白银大行动武器箱</label><!-- The name of the loot box, which can be localized for translation -->
<description>每周掉落或者击杀掉落的常驻武器箱</description><!-- The description of the loot box, which can be localized for translation -->
<defName>SimpleLootBoxExampleA</defName>
<label>白银大行动武器箱</label>
<description>每周掉落或者击杀掉落的常驻武器箱</description>
<graphicData>
<texPath>SimpleLootBox/ExampleA</texPath><!-- The texture path of the loot box -->
<texPath>SimpleLootBox/ExampleA</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
<drawSize>2.5</drawSize>
</graphicData>
<statBases>
<Mass>1.0</Mass><!-- The mass of the loot box -->
@ -43,7 +28,7 @@
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampleA</thingDef><!-- The loot box's defName, added to the global drop list for killing creatures; if you have a custom key item, consider adding it here as well -->
<chance>0.01</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<chance>0.05</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<lootBoxSpawnGroup>SimpleLootBoxGroupX</lootBoxSpawnGroup><!-- To spawn a loot box every daysBetweenLootBoxSpawns, assign it to a lootBoxSpawnGroup. All loot boxes in the same group share the chance to spawn, based on their assigned weightInGroup -->
<weightInGroup>5</weightInGroup><!-- The generation weight of this loot box in its group; default is 1 -->
<daysBetweenLootBoxSpawns>7</daysBetweenLootBoxSpawns><!-- The frequency of spawning the loot box. daysBetweenLootBoxSpawns = 7, meaning spawn of a such a lootbox every 7 days in the game. All loot boxes in the same lootBoxSpawnGroup should have the same daysBetweenLootBoxSpawns. No default-->
@ -54,14 +39,30 @@
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound><!-- The sound effect played when entering the loot box opening screen; if not set, no sound will be played -->
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound><!-- The sound effect played during the spinning; it's a looping Sustainer that plays a single audio clip -->
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound><!-- Background music for the loot box opening window; it's a single-loop Sustainer -->
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundA</lootBoxBackgroundTexturePath><!-- Background image for the loot box window; the UI resolution is:700*800 -->
<lootBoxOpenCost>Silver</lootBoxOpenCost><!-- The item required to open the loot box. It can be silver, a custom key, or any other item. If not specified, no item is required by default -->
<lootBoxOpenCostCount>128</lootBoxOpenCostCount><!-- The number of items required to open the loot box. Defaults to 0 if not specified -->
<lootBoxThingDef>
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>1</count><!-- 该物品生成的数量 -->
<weight>13.14</weight><!-- 这项奖励的生成权重 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
</li>
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>5</count><!-- 该物品生成的数量 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
</li>
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>15</count><!-- 该物品生成的数量 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -69,7 +70,7 @@
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>10</count><!-- 该物品生成的数量 -->
<weight>13.14</weight><!-- 这项奖励的生成权重 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -77,55 +78,55 @@
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>20</count><!-- 该物品生成的数量 -->
<weight>13.14</weight><!-- 这项奖励的生成权重 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
</li>
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>30</count><!-- 该物品生成的数量 -->
<weight>13.14</weight><!-- 这项奖励的生成权重 -->
<count>25</count><!-- 该物品生成的数量 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
</li>
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名 -->
<count>50</count><!-- 该物品生成的数量 -->
<weight>13.14</weight><!-- 这项奖励的生成权重 -->
<count>3</count><!-- 该物品生成的数量 -->
<weight>15.2</weight><!-- 这项奖励的生成权重 -->
<rarity>1</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
</li>
<li>
<thingDef>Silver</thingDef>
<count>648</count>
<weight>3.24</weight>
<count>127</count>
<weight>3.8</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Silver</thingDef>
<count>748</count>
<weight>3.24</weight>
<count>157</count>
<weight>3.8</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Silver</thingDef>
<count>666</count>
<weight>3.24</weight>
<count>180</count>
<weight>3.8</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Silver</thingDef>
<count>888</count>
<weight>3.24</weight>
<count>260</count>
<weight>3.8</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -134,8 +135,8 @@
<thingDef>Silver</thingDef>
<stuff>WoodLog</stuff><!-- 如果这个物品是stuffable会使用这里设置的stuff -->
<quality>Masterwork</quality><!-- 如果这个物品有品质,会使用这里设置的品质,可用的品质为 Awful Poor Normal Good Excellent Masterwork Legendary-->
<count>5000</count>
<weight>0.9</weight>
<count>1500</count>
<weight>0.6</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -144,8 +145,8 @@
<thingDef>Silver</thingDef>
<stuff>WoodLog</stuff><!-- 如果这个物品是stuffable会使用这里设置的stuff -->
<quality>Masterwork</quality><!-- 如果这个物品有品质,会使用这里设置的品质,可用的品质为 Awful Poor Normal Good Excellent Masterwork Legendary-->
<count>6000</count>
<weight>0.9</weight>
<count>1800</count>
<weight>0.6</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -154,8 +155,8 @@
<thingDef>Silver</thingDef>
<stuff>WoodLog</stuff><!-- 如果这个物品是stuffable会使用这里设置的stuff -->
<quality>Masterwork</quality><!-- 如果这个物品有品质,会使用这里设置的品质,可用的品质为 Awful Poor Normal Good Excellent Masterwork Legendary-->
<count>8000</count>
<weight>0.9</weight>
<count>2200</count>
<weight>0.6</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -164,8 +165,8 @@
<thingDef>Silver</thingDef>
<stuff>WoodLog</stuff><!-- 如果这个物品是stuffable会使用这里设置的stuff -->
<quality>Masterwork</quality><!-- 如果这个物品有品质,会使用这里设置的品质,可用的品质为 Awful Poor Normal Good Excellent Masterwork Legendary-->
<count>9999</count>
<weight>0.9</weight>
<count>2500</count>
<weight>0.6</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -174,7 +175,7 @@
<thingDef>Mechlink</thingDef>
<quality>Legendary</quality>
<count>1</count>
<weight>0.18</weight>
<weight>0.1</weight>
<rarity>5</rarity>
<effecterDef>GiantExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -183,7 +184,7 @@
<thingDef>GoldenCube</thingDef>
<quality>Legendary</quality>
<count>1</count>
<weight>0.18</weight>
<weight>0.1</weight>
<rarity>5</rarity>
<isHidden>true</isHidden>
<effecterDef>GiantExplosion</effecterDef>
@ -191,24 +192,24 @@
</li>
<li>
<thingDef>Silver</thingDef>
<count>22222</count>
<weight>0.54</weight>
<count>8000</count>
<weight>0.3</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Silver</thingDef>
<count>33333</count>
<weight>0.54</weight>
<count>9000</count>
<weight>0.3</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Silver</thingDef>
<count>114514</count>
<weight>0.54</weight>
<count>9999</count>
<weight>0.3</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -228,14 +229,14 @@
<graphicData>
<texPath>SimpleLootBox/ExampleB</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
<drawSize>2.5</drawSize>
</graphicData>
<statBases>
<Mass>1.0</Mass>
<MarketValue>10</MarketValue>
</statBases>
<useHitPoints>false</useHitPoints>
<tradeability>Sellable</tradeability>
<tradeability>None</tradeability>
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
@ -248,7 +249,7 @@
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampleB</thingDef><!-- The loot box's defName, added to the global drop list for killing creatures; if you have a custom key item, consider adding it here as well -->
<chance>0.01</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<chance>0.05</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<lootBoxSpawnGroup>SimpleLootBoxGroupX</lootBoxSpawnGroup><!-- To spawn a loot box every daysBetweenLootBoxSpawns, assign it to a lootBoxSpawnGroup. All loot boxes in the same group share the chance to spawn, based on their assigned weightInGroup -->
<weightInGroup>5</weightInGroup><!-- The generation weight of this loot box in its group; default is 1 -->
<daysBetweenLootBoxSpawns>7</daysBetweenLootBoxSpawns><!-- The frequency of spawning the loot box. daysBetweenLootBoxSpawns = 7, meaning spawn of a such a lootbox every 7 days in the game. All loot boxes in the same lootBoxSpawnGroup should have the same daysBetweenLootBoxSpawns. No default-->
@ -259,14 +260,13 @@
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound>
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound>
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound>
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundB</lootBoxBackgroundTexturePath>
<lootBoxOpenCost>Silver</lootBoxOpenCost>
<lootBoxOpenCostCount>128</lootBoxOpenCostCount>
<lootBoxPawnKindDef>
<li>
<pawnKindDef>Baby_Example</pawnKindDef>
<count>1</count>
<weight>5</weight>
<weight>15.2</weight>
<rarity>1</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -274,7 +274,7 @@
<li MayRequire="rooandgloomy.dragonianracemod">
<pawnKindDef>Dragonian_Boxed</pawnKindDef><!-- 龙娘 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>0.6</weight><!-- 这项奖励的生成权重 -->
<weight>0.3</weight><!-- 这项奖励的生成权重 -->
<rarity>4</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -282,7 +282,7 @@
<li MayRequire="ayameduki.harchaoura">
<pawnKindDef>HAR_Chaoura_Player_kami</pawnKindDef><!-- 混沌 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>0.2</weight><!-- 这项奖励的生成权重 -->
<weight>0.1</weight><!-- 这项奖励的生成权重 -->
<rarity>5</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -290,7 +290,7 @@
<li MayRequire="ayameduki.harneclose">
<pawnKindDef>HAR_Neclose_Player_kami</pawnKindDef><!-- 细菌 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>0.6</weight><!-- 这项奖励的生成权重 -->
<weight>0.3</weight><!-- 这项奖励的生成权重 -->
<rarity>4</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -298,7 +298,7 @@
<li MayRequire="ayameduki.harsilkiera">
<pawnKindDef>HAR_Silkiera_Player_kami</pawnKindDef><!-- 兽娘 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>3.6</weight><!-- 这项奖励的生成权重 -->
<weight>3.8</weight><!-- 这项奖励的生成权重 -->
<rarity>2</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -306,7 +306,7 @@
<li MayRequire="ayameduki.hareveliet">
<pawnKindDef>HAR_Eveliet_Player_kami</pawnKindDef><!-- 伊娃 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>0.2</weight><!-- 这项奖励的生成权重 -->
<weight>0.1</weight><!-- 这项奖励的生成权重 -->
<rarity>5</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -314,7 +314,7 @@
<li MayRequire="ayameduki.haridhale">
<pawnKindDef>HAR_Idhale_Player_kami</pawnKindDef><!-- 幽灵 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>1</weight><!-- 这项奖励的生成权重 -->
<weight>0.6</weight><!-- 这项奖励的生成权重 -->
<rarity>3</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -322,7 +322,7 @@
<li MayRequire="ayameduki.harxenoorca">
<pawnKindDef>HAR_Xenoorca_Player_kami</pawnKindDef><!-- 鱼人 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>3.6</weight><!-- 这项奖励的生成权重 -->
<weight>3.8</weight><!-- 这项奖励的生成权重 -->
<rarity>2</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -330,7 +330,7 @@
<li MayRequire="ayameduki.harnexaga">
<pawnKindDef>HAR_Nexaga_Player_kami</pawnKindDef><!-- 混血 -->
<count>1</count><!-- 该人物生成的数量 -->
<weight>3.6</weight><!-- 这项奖励的生成权重 -->
<weight>3.8</weight><!-- 这项奖励的生成权重 -->
<rarity>2</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效 -->
@ -338,7 +338,7 @@
<li MayRequire="miho.fortifiedoutremer">
<pawnKindDef>Miho_PlayerColonist_kami</pawnKindDef><!-- 美狐 -->
<count>1</count>
<weight>1</weight>
<weight>0.6</weight>
<rarity>3</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -346,7 +346,7 @@
<li>
<pawnKindDef>Megascarab</pawnKindDef><!-- 虫子 -->
<count>1</count>
<weight>14.6</weight>
<weight>15.2</weight>
<rarity>1</rarity>
<isHostile>true</isHostile>
<effecterDef>ExtinguisherExplosion</effecterDef>
@ -355,7 +355,7 @@
<li MayRequire="verniy709.racenhux">
<pawnKindDef>NHUX_PlayerA</pawnKindDef><!-- ux -->
<count>1</count>
<weight>3.6</weight>
<weight>3.8</weight>
<rarity>2</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -363,7 +363,7 @@
<li MayRequire="ayameduki.harnearmare">
<pawnKindDef>HAR_Nearmaere_Player_kami</pawnKindDef><!-- 魅魔 -->
<count>1</count>
<weight>3.6</weight>
<weight>3.8</weight>
<rarity>2</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -371,7 +371,7 @@
<li MayRequire="ayameduki.harlittluna">
<pawnKindDef>HAR_Littluna_Player_kami</pawnKindDef><!-- 伪神 -->
<count>1</count>
<weight>0.2</weight>
<weight>0.1</weight>
<rarity>5</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -379,7 +379,7 @@
<li MayRequire="rooandgloomy.dragonianracemod">
<pawnKindDef>Dragonian_baby</pawnKindDef><!-- 小龙 -->
<count>1</count>
<weight>1</weight>
<weight>0.6</weight>
<rarity>3</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -387,7 +387,7 @@
<li MayRequire="oark.ratkinfaction.oberoniaaurea">
<pawnKindDef>OA_RK_Colonist_A_glod</pawnKindDef><!-- 金鼠 -->
<count>1</count>
<weight>0.6</weight>
<weight>0.3</weight>
<rarity>4</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -397,7 +397,7 @@
<li>
<thingDef>Wastepack</thingDef>
<count>5</count>
<weight>14.6</weight>
<weight>15.2</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -405,7 +405,7 @@
<li>
<thingDef>Leather_Human</thingDef>
<count>5</count>
<weight>14.6</weight>
<weight>15.2</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -413,7 +413,7 @@
<li>
<thingDef>Silver</thingDef>
<count>1</count>
<weight>14.6</weight>
<weight>15.2</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -421,14 +421,12 @@
<li MayRequire="verniy709.racenhux">
<thingDef>Meat_NHUX</thingDef>
<count>8</count>
<weight>14.6</weight>
<weight>15.2</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
</lootBoxThingDef>
</li>
</comps>
</ThingDef>

View File

@ -1,19 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef Name="SimpleLootBoxBase" ParentName="ResourceBase" Abstract="True">
<thingClass>ThingWithComps</thingClass>
<graphicData>
<graphicClass>Graphic_Single</graphicClass><!-- Using Graphic_StackCount, the item's texture will reflect its stack count -->
</graphicData>
<stackLimit>10</stackLimit><!-- Stack count of the item -->
<techLevel>Medieval</techLevel><!-- The item's tech level; it does not affect any functionality and is purely a special tag -->
<thingCategories><!-- Item category -->
<li>Artifacts</li>
</thingCategories>
<tradeTags><!-- Item trade tags -->
<li>Artifacts</li>
</tradeTags>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExampleziyuan</defName><!-- Definition name of the loot box -->
@ -22,14 +8,14 @@
<graphicData>
<texPath>SimpleLootBox/ExampleC</texPath><!-- The texture path of the loot box -->
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
<drawSize>2.5</drawSize>
</graphicData>
<statBases>
<Mass>1.0</Mass><!-- The mass of the loot box -->
<MarketValue>10</MarketValue><!-- The market value of the loot box itself -->
</statBases>
<useHitPoints>false</useHitPoints>
<tradeability>Sellable</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<tradeability>None</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
@ -42,7 +28,7 @@
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampleziyuan</thingDef><!-- The loot box's defName, added to the global drop list for killing creatures; if you have a custom key item, consider adding it here as well -->
<chance>0.01</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<chance>0.05</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<lootBoxSpawnGroup>SimpleLootBoxGroupX</lootBoxSpawnGroup><!-- To spawn a loot box every daysBetweenLootBoxSpawns, assign it to a lootBoxSpawnGroup. All loot boxes in the same group share the chance to spawn, based on their assigned weightInGroup -->
<weightInGroup>5</weightInGroup><!-- The generation weight of this loot box in its group; default is 1 -->
<daysBetweenLootBoxSpawns>7</daysBetweenLootBoxSpawns><!-- The frequency of spawning the loot box. daysBetweenLootBoxSpawns = 7, meaning spawn of a such a lootbox every 7 days in the game. All loot boxes in the same lootBoxSpawnGroup should have the same daysBetweenLootBoxSpawns. No default-->
@ -53,14 +39,14 @@
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound><!-- The sound effect played when entering the loot box opening screen; if not set, no sound will be played -->
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound><!-- The sound effect played during the spinning; it's a looping Sustainer that plays a single audio clip -->
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound><!-- Background music for the loot box opening window; it's a single-loop Sustainer -->
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundA</lootBoxBackgroundTexturePath><!-- Background image for the loot box window; the UI resolution is:700*800 -->
<lootBoxOpenCost>Silver</lootBoxOpenCost><!-- The item required to open the loot box. It can be silver, a custom key, or any other item. If not specified, no item is required by default -->
<lootBoxOpenCostCount>128</lootBoxOpenCostCount><!-- The number of items required to open the loot box. Defaults to 0 if not specified -->
<lootBoxThingDef>
<li>
<thingDef>Meat_NHUX</thingDef>
<count>10</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -68,15 +54,15 @@
<li>
<thingDef>Wastepack</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>steel</thingDef>
<thingDef>Steel</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -84,7 +70,7 @@
<li>
<thingDef>WoodLog</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -92,7 +78,7 @@
<li>
<thingDef>MedicineHerbal</thingDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -100,15 +86,15 @@
<li>
<thingDef>ComponentIndustrial</thingDef>
<count>2</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>steel</thingDef>
<thingDef>Steel</thingDef>
<count>50</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -116,7 +102,7 @@
<li>
<thingDef>Gold</thingDef>
<count>20</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -124,7 +110,7 @@
<li>
<thingDef>DevilstrandCloth</thingDef>
<count>20</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -132,15 +118,15 @@
<li>
<thingDef>WoodLog</thingDef>
<count>200</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Medicinelndustrial</thingDef>
<thingDef>MedicineIndustrial</thingDef>
<count>5</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -148,7 +134,7 @@
<li>
<thingDef>ComponentIndustrial</thingDef>
<count>30</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3 </rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -156,7 +142,7 @@
<li>
<thingDef>steel</thingDef>
<count>600</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -164,7 +150,7 @@
<li>
<thingDef>Gold</thingDef>
<count>200</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -172,7 +158,7 @@
<li>
<thingDef>DevilstrandCloth</thingDef>
<count>250</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -180,7 +166,7 @@
<li>
<thingDef>Plasteel</thingDef>
<count>400</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -188,7 +174,7 @@
<li>
<thingDef>VanometricPowerCell</thingDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -196,7 +182,7 @@
<li>
<thingDef>Plasteel</thingDef>
<count>1000</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -204,7 +190,7 @@
<li>
<thingDef>Techprint_PolarisSecretArchives</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -212,7 +198,7 @@
<li>
<thingDef>MechSerumHealer</thingDef>
<count>2</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -220,7 +206,7 @@
<li>
<thingDef>PsychicAmplifier</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -228,7 +214,7 @@
<li>
<thingDef>PolarisBondorudoDiary</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -236,7 +222,7 @@
<li>
<thingDef>ComponentSpacer</thingDef>
<count>35</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -244,7 +230,7 @@
<li>
<thingDef>ComponentSpacer</thingDef>
<count>80</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -252,7 +238,7 @@
<li>
<thingDef>PolarisVoidKey</thingDef>
<count>2</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -260,7 +246,7 @@
<li>
<thingDef>Miho_CelestialScale</thingDef>
<count>1680</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -268,7 +254,7 @@
<li>
<thingDef>GoldenCube</thingDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHidden>true</isHidden>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -277,7 +263,7 @@
<li>
<thingDef>PolarisRestorer</thingDef>
<count>5</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -288,16 +274,16 @@
<li>
<pawnKindDef>Fingerspike</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
<li>
<pawnKindDef>rat</pawnKindDef>
<pawnKindDef>Rat</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>

View File

@ -1,19 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef Name="SimpleLootBoxBase" ParentName="ResourceBase" Abstract="True">
<thingClass>ThingWithComps</thingClass>
<graphicData>
<graphicClass>Graphic_Single</graphicClass><!-- Using Graphic_StackCount, the item's texture will reflect its stack count -->
</graphicData>
<stackLimit>10</stackLimit><!-- Stack count of the item -->
<techLevel>Medieval</techLevel><!-- The item's tech level; it does not affect any functionality and is purely a special tag -->
<thingCategories><!-- Item category -->
<li>Artifacts</li>
</thingCategories>
<tradeTags><!-- Item trade tags -->
<li>Artifacts</li>
</tradeTags>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExamplejiu</defName><!-- Definition name of the loot box -->
@ -22,14 +8,14 @@
<graphicData>
<texPath>SimpleLootBox/ExampleE</texPath><!-- The texture path of the loot box -->
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
<drawSize>2.5</drawSize>
</graphicData>
<statBases>
<Mass>1.0</Mass><!-- The mass of the loot box -->
<MarketValue>10</MarketValue><!-- The market value of the loot box itself -->
</statBases>
<useHitPoints>false</useHitPoints>
<tradeability>Sellable</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<tradeability>None</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
@ -42,7 +28,7 @@
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExamplejiu</thingDef><!-- The loot box's defName, added to the global drop list for killing creatures; if you have a custom key item, consider adding it here as well -->
<chance>0.01</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<chance>0.05</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<lootBoxSpawnGroup>SimpleLootBoxGroupX</lootBoxSpawnGroup><!-- To spawn a loot box every daysBetweenLootBoxSpawns, assign it to a lootBoxSpawnGroup. All loot boxes in the same group share the chance to spawn, based on their assigned weightInGroup -->
<weightInGroup>5</weightInGroup><!-- The generation weight of this loot box in its group; default is 1 -->
<daysBetweenLootBoxSpawns>7</daysBetweenLootBoxSpawns><!-- The frequency of spawning the loot box. daysBetweenLootBoxSpawns = 7, meaning spawn of a such a lootbox every 7 days in the game. All loot boxes in the same lootBoxSpawnGroup should have the same daysBetweenLootBoxSpawns. No default-->
@ -53,14 +39,14 @@
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound><!-- The sound effect played when entering the loot box opening screen; if not set, no sound will be played -->
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound><!-- The sound effect played during the spinning; it's a looping Sustainer that plays a single audio clip -->
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound><!-- Background music for the loot box opening window; it's a single-loop Sustainer -->
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundA</lootBoxBackgroundTexturePath><!-- Background image for the loot box window; the UI resolution is:700*800 -->
<lootBoxOpenCost>Silver</lootBoxOpenCost><!-- The item required to open the loot box. It can be silver, a custom key, or any other item. If not specified, no item is required by default -->
<lootBoxOpenCostCount>128</lootBoxOpenCostCount><!-- The number of items required to open the loot box. Defaults to 0 if not specified -->
<lootBoxThingDef>
<li>
<thingDef>GoldenCube</thingDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHidden>true</isHidden>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -69,7 +55,7 @@
<li>
<thingDef>Foxbead</thingDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -77,7 +63,7 @@
<li>
<thingDef>Meat_Cow</thingDef>
<count>15</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -85,7 +71,7 @@
<li>
<thingDef>EggChickenUnfertilized</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -93,7 +79,7 @@
<li>
<thingDef>Milk</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -101,7 +87,7 @@
<li>
<thingDef>Wastepack</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -111,7 +97,7 @@
<li>
<pawnKindDef>Ninetailfox</pawnKindDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -120,16 +106,16 @@
<li>
<pawnKindDef>DarkNinetail</pawnKindDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
<li>
<pawnKindDef>Ninetailfoxwt</pawnKindDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -138,7 +124,7 @@
<li>
<pawnKindDef>SZMechNeko_Omega</pawnKindDef>
<count>1</count>
<weight>0.03</weight>
<weight>0.05</weight>
<rarity>5</rarity>
<isHostile>true</isHostile>
<isHidden>true</isHidden>
@ -148,7 +134,7 @@
<li>
<pawnKindDef>AA_Gallatross</pawnKindDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -157,7 +143,7 @@
<li>
<pawnKindDef>BOSS_RQ_Monster_Kind_Summon_z</pawnKindDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -166,7 +152,7 @@
<li>
<pawnKindDef>VAA_Allial</pawnKindDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -175,7 +161,7 @@
<li>
<pawnKindDef>VAA_IA</pawnKindDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -184,7 +170,7 @@
<li>
<pawnKindDef>VAA_TohokuKiritan</pawnKindDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -193,7 +179,7 @@
<li>
<pawnKindDef>VAA_TohokuZunko</pawnKindDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -202,7 +188,7 @@
<li>
<pawnKindDef>Ratkin_KingHamster</pawnKindDef>
<count>1</count>
<weight>1.5</weight>
<weight>1</weight>
<rarity>3</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -211,7 +197,7 @@
<li>
<pawnKindDef>AA_MeadowAve</pawnKindDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -220,7 +206,7 @@
<li>
<pawnKindDef>Thrumbo</pawnKindDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -229,7 +215,7 @@
<li>
<pawnKindDef>AA_DevilSheep</pawnKindDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -238,7 +224,7 @@
<li>
<pawnKindDef>TW_AiruCat</pawnKindDef>
<count>1</count>
<weight>5.67</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -247,7 +233,7 @@
<li>
<pawnKindDef>Pig</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -256,7 +242,7 @@
<li>
<pawnKindDef>Cow</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -265,7 +251,7 @@
<li>
<pawnKindDef>AA_EngorgedTentacularAberration</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -274,7 +260,7 @@
<li>
<pawnKindDef>Horse</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -283,7 +269,7 @@
<li>
<pawnKindDef>AEXP_Boombat</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -292,7 +278,7 @@
<li>
<pawnKindDef>WasteRat</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -301,7 +287,7 @@
<li>
<pawnKindDef>Chicken</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -310,7 +296,7 @@
<li>
<pawnKindDef>Tortoise</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -319,7 +305,7 @@
<li>
<pawnKindDef>Cat</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>

View File

@ -0,0 +1,308 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExampmi</defName><!-- Definition name of the loot box -->
<label>天使行军武器箱</label><!-- The name of the loot box, which can be localized for translation -->
<description>每周掉落或者击杀掉落的稀有武器箱</description><!-- The description of the loot box, which can be localized for translation -->
<graphicData>
<texPath>SimpleLootBox/ExampleF</texPath><!-- The texture path of the loot box -->
<graphicClass>Graphic_Single</graphicClass>
<drawSize>2.5</drawSize>
</graphicData>
<statBases>
<Mass>1.0</Mass><!-- The mass of the loot box -->
<MarketValue>10</MarketValue><!-- The market value of the loot box itself -->
</statBases>
<useHitPoints>false</useHitPoints>
<tradeability>None</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
<useLabel>Activate {0_label}</useLabel>
<showUseGizmo>true</showUseGizmo>
<useDuration>150</useDuration>
</li>
<useHitPoints>false</useHitPoints>
<li Class="SimpleLootBox.CompProperties_SpawnLootBox">
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampmi</thingDef><!-- The loot box's defName, added to the global drop list for killing creatures; if you have a custom key item, consider adding it here as well -->
<chance>0.05</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<lootBoxSpawnGroup>SimpleLootBoxGroupX</lootBoxSpawnGroup><!-- To spawn a loot box every daysBetweenLootBoxSpawns, assign it to a lootBoxSpawnGroup. All loot boxes in the same group share the chance to spawn, based on their assigned weightInGroup -->
<weightInGroup>5</weightInGroup><!-- The generation weight of this loot box in its group; default is 1 -->
<daysBetweenLootBoxSpawns>7</daysBetweenLootBoxSpawns><!-- The frequency of spawning the loot box. daysBetweenLootBoxSpawns = 7, meaning spawn of a such a lootbox every 7 days in the game. All loot boxes in the same lootBoxSpawnGroup should have the same daysBetweenLootBoxSpawns. No default-->
</li>
</lootBoxList>
</li>
<li Class="SimpleLootBox.CompProperties_LootBox">
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound><!-- The sound effect played when entering the loot box opening screen; if not set, no sound will be played -->
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound><!-- The sound effect played during the spinning; it's a looping Sustainer that plays a single audio clip -->
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound><!-- Background music for the loot box opening window; it's a single-loop Sustainer -->
<lootBoxOpenCost>Silver</lootBoxOpenCost><!-- The item required to open the loot box. It can be silver, a custom key, or any other item. If not specified, no item is required by default -->
<lootBoxOpenCostCount>128</lootBoxOpenCostCount><!-- The number of items required to open the loot box. Defaults to 0 if not specified -->
<lootBoxThingDef>
<li>
<thingDef>Techprint_Milira_MilianTech_RookIV</thingDef>
<count>1</count>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Techprint_Milira_MilianTech_RookIII</thingDef>
<count>1</count>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Techprint_Milira_ConceptWeaponry</thingDef>
<count>1</count>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Wastepack</thingDef>
<count>500</count>
<weight>0.15</weight>
<rarity>5</rarity>
<isHidden>true</isHidden>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SolarCrystal</thingDef>
<count>300</count>
<weight>0.45</weight>
<rarity>5</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SolarCrystal</thingDef>
<count>120</count>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SunPlateSteel</thingDef>
<count>500</count>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_StarshipBattery</thingDef>
<count>2</count>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Techprint_Milira_HeavyRocketLauncher</thingDef>
<count>1</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Techprint_Milira_HeavyPlasmaTurret</thingDef>
<count>1</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Techprint_Milira_HeavyParticleTurret</thingDef>
<count>1</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SunLightFuel</thingDef>
<count>500</count>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_FurnaceCoreModel</thingDef>
<count>1</count>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SolarCrystal</thingDef>
<count>30</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SunPlateSteel</thingDef>
<count>200</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SunLightFuel</thingDef>
<count>200</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_FeatherThread</thingDef>
<count>20</count>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Plasteel</thingDef>
<count>10</count>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SolarCrystal</thingDef>
<count>1</count>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_BloodStainedFeather</thingDef>
<count>10</count>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SunLightFuel</thingDef>
<count>5</count>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_SunLightFruit</thingDef>
<count>1</count>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Wastepack</thingDef>
<count>5</count>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Steel</thingDef>
<count>5</count>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Milira_BloodStainedFeather</thingDef>
<count>1</count>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Meat_Milira_Race</thingDef>
<count>10</count>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Gold</thingDef>
<count>1</count>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
</lootBoxThingDef>
<lootBoxPawnKindDef>
<li>
<pawnKindDef>Cat</pawnKindDef>
<count>1</count>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
<li MayRequire="ancot.milirarace">
<pawnKindDef>Milian_Base_mi</pawnKindDef>
<count>1</count>
<weight>0.15</weight>
<rarity>5</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
<li MayRequire="ancot.milirarace">
<pawnKindDef>Milian_Base_baby</pawnKindDef>
<count>1</count>
<weight>0.9</weight>
<rarity>3</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
</lootBoxPawnKindDef>
</li>
</comps>
</ThingDef>
</Defs>

View File

@ -1,19 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef Name="SimpleLootBoxBase" ParentName="ResourceBase" Abstract="True">
<thingClass>ThingWithComps</thingClass>
<graphicData>
<graphicClass>Graphic_Single</graphicClass><!-- Using Graphic_StackCount, the item's texture will reflect its stack count -->
</graphicData>
<stackLimit>10</stackLimit><!-- Stack count of the item -->
<techLevel>Medieval</techLevel><!-- The item's tech level; it does not affect any functionality and is purely a special tag -->
<thingCategories><!-- Item category -->
<li>Artifacts</li>
</thingCategories>
<tradeTags><!-- Item trade tags -->
<li>Artifacts</li>
</tradeTags>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExamplezui</defName><!-- Definition name of the loot box -->
@ -22,14 +8,14 @@
<graphicData>
<texPath>SimpleLootBox/ExampleD</texPath><!-- The texture path of the loot box -->
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
<drawSize>2.5</drawSize>
</graphicData>
<statBases>
<Mass>1.0</Mass><!-- The mass of the loot box -->
<MarketValue>10</MarketValue><!-- The market value of the loot box itself -->
</statBases>
<useHitPoints>false</useHitPoints>
<tradeability>Sellable</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<tradeability>None</tradeability><!-- Whether the loot box can be traded. Some literal values are available for this setting None Sellable Buyable All -->
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
@ -42,7 +28,7 @@
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExamplezui</thingDef><!-- The loot box's defName, added to the global drop list for killing creatures; if you have a custom key item, consider adding it here as well -->
<chance>0.01</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<chance>0.05</chance><!-- The drop chance of this loot box; defaults to 0.05 (5%) if not specified -->
<lootBoxSpawnGroup>SimpleLootBoxGroupX</lootBoxSpawnGroup><!-- To spawn a loot box every daysBetweenLootBoxSpawns, assign it to a lootBoxSpawnGroup. All loot boxes in the same group share the chance to spawn, based on their assigned weightInGroup -->
<weightInGroup>5</weightInGroup><!-- The generation weight of this loot box in its group; default is 1 -->
<daysBetweenLootBoxSpawns>7</daysBetweenLootBoxSpawns><!-- The frequency of spawning the loot box. daysBetweenLootBoxSpawns = 7, meaning spawn of a such a lootbox every 7 days in the game. All loot boxes in the same lootBoxSpawnGroup should have the same daysBetweenLootBoxSpawns. No default-->
@ -53,7 +39,7 @@
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound><!-- The sound effect played when entering the loot box opening screen; if not set, no sound will be played -->
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound><!-- The sound effect played during the spinning; it's a looping Sustainer that plays a single audio clip -->
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound><!-- Background music for the loot box opening window; it's a single-loop Sustainer -->
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundA</lootBoxBackgroundTexturePath><!-- Background image for the loot box window; the UI resolution is:700*800 -->
<lootBoxOpenCost>Silver</lootBoxOpenCost><!-- The item required to open the loot box. It can be silver, a custom key, or any other item. If not specified, no item is required by default -->
<lootBoxOpenCostCount>128</lootBoxOpenCostCount><!-- The number of items required to open the loot box. Defaults to 0 if not specified -->
<lootBoxThingDef>
@ -61,7 +47,7 @@
<li>
<thingDef>GoldenCube</thingDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHidden>true</isHidden>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -70,7 +56,7 @@
<li>
<thingDef>Techprint_HAR_ZC_Research_B</thingDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -78,7 +64,7 @@
<li>
<thingDef>HAR_ZC_Item_a</thingDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -86,7 +72,7 @@
<li>
<thingDef>HAR_ZC_Shell_f</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -95,7 +81,7 @@
<li>
<thingDef>HAR_ZC_Tops_e</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -104,7 +90,7 @@
<li>
<thingDef>HAR_ZC_Heads_e</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -113,7 +99,7 @@
<li>
<thingDef>HAR_EL_Item_a</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<quality>Normal</quality>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
@ -122,7 +108,7 @@
<li>
<thingDef>HAR_EL_Item_b</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -130,7 +116,7 @@
<li>
<thingDef>HAR_EL_Item_c</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -138,7 +124,7 @@
<li>
<thingDef>HAR_EL_Item_d</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -146,7 +132,7 @@
<li>
<thingDef>HAR_EL_Item_e</thingDef>
<count>1</count>
<weight>0.9</weight>
<weight>0.45</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -154,15 +140,15 @@
<li>
<thingDef>Uranium</thingDef>
<count>300</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>ComponentSpacer</thingDef>
<count>5</count>
<weight>1.5</weight>
<count>10</count>
<weight>0.9</weight>
<rarity>3</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -170,7 +156,7 @@
<li>
<thingDef>Meat_HAR_Zoichor</thingDef>
<count>10</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -178,7 +164,7 @@
<li>
<thingDef>Wastepack</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -186,24 +172,24 @@
<li>
<thingDef>Gold</thingDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>Meat_HAR_Xenoorca</thingDef>
<count>15</count>
<weight>21.9</weight>
<rarity>1</rarity>
<thingDef>HAR_NM_Archotech_b</thingDef>
<count>1</count>
<weight>0.15</weight>
<rarity>5</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
</li>
<li>
<thingDef>HAR_SK_Meal_g</thingDef>
<count>5</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -211,7 +197,7 @@
<li>
<thingDef>Meat_HAR_Xenoorca</thingDef>
<count>15</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -219,7 +205,7 @@
<li>
<thingDef>EggChickenUnfertilizec</thingDef>
<count>5</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -227,7 +213,7 @@
<li>
<thingDef>PsychiteTea</thingDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -235,7 +221,7 @@
<li>
<thingDef>Wastepack</thingDef>
<count>10</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
@ -247,7 +233,7 @@
<li MayRequire="ayameduki.harchaoura">
<pawnKindDef>HAR_Zoichor_Player_kami</pawnKindDef>
<count>1</count>
<weight>0.3</weight>
<weight>0.15</weight>
<rarity>5</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -256,7 +242,7 @@
<li MayRequire="ayameduki.harneclose">
<pawnKindDef>HAR_Neclose_Player_baby</pawnKindDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -265,7 +251,7 @@
<li MayRequire="ayameduki.harsaclean">
<pawnKindDef>HAR_Saclean_Player_kami</pawnKindDef>
<count>1</count>
<weight>1.5</weight>
<weight>0.9</weight>
<rarity>3</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -274,7 +260,7 @@
<li>
<pawnKindDef>TW_AiruCat</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -283,7 +269,7 @@
<li MayRequire="ayameduki.harsilkiera">
<pawnKindDef>HAR_Silkiera_Player_kami</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -292,7 +278,7 @@
<li MayRequire="nemonian.my">
<pawnKindDef>Moyo_ColonistPawn_kami</pawnKindDef>
<count>1</count>
<weight>5.4</weight>
<weight>5.7</weight>
<rarity>2</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -301,7 +287,7 @@
<li MayRequire="ayameduki.harsilkiera">
<pawnKindDef>HAR_Silkiera_Player_baby</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>false</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>
@ -310,7 +296,7 @@
<li>
<pawnKindDef>Squirrel</pawnKindDef>
<count>1</count>
<weight>21.9</weight>
<weight>22.8</weight>
<rarity>1</rarity>
<isHostile>true</isHostile>
<effecterDef>Skip_ExitNoDelay</effecterDef>

View File

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnKindDef ParentName="GrenadierBase"><!-- 人物的基本数据继承自GrenadierBase下面的数据中如果有和parent相同的条目会覆盖parent的数值 -->
<defName>Baby_Example</defName><!-- 人物的定义名 -->
<label>baby example</label><!-- 人物的名字,可以进行本地化翻译 -->
<race>Human</race><!-- 人物的种族的定义名 -->
<defaultFactionType>OutlanderCivil</defaultFactionType><!-- 初始的派系类型 -->
<combatPower>10</combatPower><!-- 袭击占用分数 -->
<initialWillRange>1~10</initialWillRange><!-- 奴役难度 -->
<initialResistanceRange>10~20</initialResistanceRange><!-- 招募难度 -->
<minGenerationAge>0.01</minGenerationAge><!-- 生成人物的最小生物年龄 -->
<maxGenerationAge>30</maxGenerationAge><!-- 生成人物的最大生物年龄 -->
<techHediffsMoney>0</techHediffsMoney><!-- 仿生体价值 -->
<apparelMoney>0</apparelMoney><!-- 服装价值 -->
<weaponMoney>0</weaponMoney><!-- 武器价值 -->
<techHediffsTags Inherit="False"><!-- Inherit="False"用来去除可能从parentName里继承的仿生体tag决定了使用的仿生体的标签 -->
</techHediffsTags>
<weaponTags Inherit="False"><!-- 决定了使用的武器的标签 -->
</weaponTags>
<apparelTags Inherit="False"><!-- 决定了使用的服装的标签 -->
</apparelTags>
<inventoryOptions Inherit="False"><!-- 决定了随身携带物品 -->
</inventoryOptions>
<skills><!-- 生成人物的某项技能的范围,比如 Shooting Melee Construction Mining Cooking Plants Animals Crafting Artistic Medicine Social Intellectual -->
<li>
<skill>Shooting</skill>
<range>15~20</range>
</li>
</skills>
<disallowedTraits><!-- 不被允许使用的特性 -->
<li>Brawler</li>
</disallowedTraits>
<disallowedTraitsWithDegree><!-- 不被允许使用的特性以及对应的程度 -->
<PsychicSensitivity>-2</PsychicSensitivity>
</disallowedTraitsWithDegree>
<forcedTraits><!-- 强制生成的特性以及程度通常来讲大部分mod特性不会设置程度 -->
<Recluse>0</Recluse>
</forcedTraits>
<useFactionXenotypes>false</useFactionXenotypes><!-- 去除派系设置的异种生成概率 -->
<xenotypeSet>
<xenotypeChances>
<Neanderthal MayRequire="Ludeon.RimWorld.Biotech">1</Neanderthal><!-- 某个特定异种的生成概率 -->
</xenotypeChances>
</xenotypeSet>
<pawnGroupDevelopmentStage>Baby</pawnGroupDevelopmentStage><!-- 生成特定生长状态的人物,可用参数为 Newborn Baby Child Adult-->
</PawnKindDef>
</Defs>

View File

@ -1,213 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef Name="SimpleLootBoxBase" ParentName="ResourceBase" Abstract="True">
<thingClass>ThingWithComps</thingClass>
<graphicData>
<graphicClass>Graphic_Single</graphicClass><!-- 用 Graphic_StackCount 物品的贴图会反应物品的堆叠数量 -->
</graphicData>
<stackLimit>10</stackLimit><!-- 物品的堆叠数量 -->
<techLevel>Medieval</techLevel><!-- 物品的科技等级,并不影响任何功能,只是个标签 -->
<thingCategories><!-- 物品的分类 -->
<li>Artifacts</li>
</thingCategories>
<tradeTags><!-- 物品的交易标签 -->
<li>Artifacts</li>
</tradeTags>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExampleA</defName><!-- 箱子的定义名 -->
<label>simple loot box example A</label><!-- 箱子的名字,可以进行本地化翻译 -->
<description>Example A.</description><!-- 箱子的描述,可以进行本地化翻译 -->
<graphicData>
<texPath>SimpleLootBox/ExampleA</texPath><!-- 箱子的贴图路径 -->
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<statBases>
<Mass>1.0</Mass><!-- 箱子的重量 -->
<MarketValue>100</MarketValue><!-- 箱子本身的价值 -->
</statBases>
<tradeability>Buyable</tradeability><!-- 箱子是否可以交易,有几个字面意思可以理解的值 None Sellable Buyable All -->
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
<useLabel>Activate {0_label}</useLabel>
<showUseGizmo>true</showUseGizmo>
<useDuration>150</useDuration>
</li>
<li Class="SimpleLootBox.CompProperties_SpawnLootBox">
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampleA</thingDef><!-- 箱子的定义名,加入到全局击杀生物后的掉落列表;如果有自定义的钥匙,也可以考虑加到这里来 -->
<chance>0.01</chance><!-- 这个箱子的掉落概率不填默认为0.05也就是5%的击杀掉率 -->
</li>
</lootBoxList>
</li>
<li Class="SimpleLootBox.CompProperties_LootBox">
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound><!-- 进入开箱界面的音效,不填就没音效 -->
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound><!-- 选取物品时的音效单曲循环sustainer -->
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundA</lootBoxBackgroundMusicSound><!-- 开箱界面的背景音乐单曲循环sustainer -->
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundA</lootBoxBackgroundTexturePath><!-- 开箱界面的背景图界面的分辨率为700*800 -->
<lootBoxOpenCost>Silver</lootBoxOpenCost><!-- 开箱子所需要的物品,可以是白银,自定义的钥匙,或者任何物品,不填就默认为无 -->
<lootBoxOpenCostCount>100</lootBoxOpenCostCount><!-- 开箱子所需要的物品的数量不填默认为0 -->
<lootBoxThingDef>
<li>
<thingDef>Silver</thingDef><!-- 箱子可以开出的物品的定义名,必填 -->
<count>1000</count><!-- 该物品生成的数量,必填 -->
<weight>5</weight><!-- 这项奖励的生成权重,必填 -->
<rarity>2</rarity><!-- 这项奖励的稀有度(使用的颜色与文本)可用选项 0 1 2 3 4 5 不填默认为0数字越大稀有度越高-->
<effecterDef>Skip_ExitNoDelay</effecterDef><!-- 生成奖励时可以播放的特效,不设置就没特效 -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound><!-- 该奖励被选中时的音效,不设置就没音效 -->
<isHidden>false</isHidden><!-- 该物品是否会在可用的奖励列表里隐藏如果你想给开箱的人一个惊喜可以把他设置成true默认为false -->
</li>
<li>
<thingDef>Gold</thingDef>
<count>500</count>
<weight>1</weight>
<rarity>4</rarity>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
<li>
<thingDef>Bed</thingDef>
<stuff>WoodLog</stuff><!-- 如果这个物品是stuffable会使用这里设置的stuff但如果没设置会自动套用默认stuff -->
<quality>Masterwork</quality><!-- 如果这个物品有品质会使用这里设置的品质不设置默认Normal可用的品质为 Awful Poor Normal Good Excellent Masterwork Legendary-->
<count>1</count>
<weight>2</weight>
<rarity>2</rarity>
<isHidden>true</isHidden><!-- 该奖励在列表里被隐藏了 -->
</li>
<li>
<thingDef>MeleeWeapon_MonoSword</thingDef>
<quality>Legendary</quality>
<count>1</count>
<weight>1</weight>
<rarity>5</rarity>
<effecterDef>GiantExplosion</effecterDef>
</li>
</lootBoxThingDef>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExampleB</defName>
<label>simple loot box example B</label>
<thingClass>ThingWithComps</thingClass>
<description>Example B.</description>
<graphicData>
<texPath>SimpleLootBox/ExampleB</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<statBases>
<Mass>1.0</Mass>
<MarketValue>100</MarketValue>
</statBases>
<tradeability>Buyable</tradeability>
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
<useLabel>Activate {0_label}</useLabel>
<showUseGizmo>true</showUseGizmo>
<useDuration>100</useDuration>
</li>
<li Class="SimpleLootBox.CompProperties_SpawnLootBox">
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampleB</thingDef>
<chance>0.5</chance>
</li>
</lootBoxList>
</li>
<li Class="SimpleLootBox.CompProperties_LootBox">
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound>
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound>
<lootBoxBackgroundMusicSound>lootBoxBackgroundMusicSoundB</lootBoxBackgroundMusicSound>
<lootBoxBackgroundTexturePath>SimpleLootBox/LootBoxBackgroundB</lootBoxBackgroundTexturePath>
<lootBoxPawnKindDef>
<li>
<pawnKindDef>Mercenary_Gunner</pawnKindDef><!-- 箱子可以开出的人物的定义名 -->
<count>2</count><!-- 该人物生成的数量 -->
<weight>5</weight><!-- 这项奖励的生成权重 -->
<isHostile>false</isHostile><!-- 生成的人物是否和玩家敌对默认为false -->
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
<li>
<pawnKindDef>Baby_Example</pawnKindDef>
<count>1</count>
<weight>5</weight>
<rarity>3</rarity>
</li>
<li>
<pawnKindDef>Mech_Centurion</pawnKindDef>
<count>1</count>
<weight>5</weight>
<rarity>4</rarity>
<effecterDef>ExtinguisherExplosion</effecterDef>
</li>
<li>
<pawnKindDef>Cat</pawnKindDef>
<count>5</count>
<weight>5</weight>
<rarity>5</rarity>
<isHostile>true</isHostile><!-- 生成的人物和玩家敌对 -->
</li>
</lootBoxPawnKindDef>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="SimpleLootBoxBase">
<defName>SimpleLootBoxExampleC</defName>
<label>simple loot box example C</label>
<thingClass>ThingWithComps</thingClass>
<description>Example C.</description>
<graphicData>
<texPath>SimpleLootBox/ExampleC</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<statBases>
<Mass>1.0</Mass>
<MarketValue>100</MarketValue>
</statBases>
<tradeability>Buyable</tradeability>
<comps>
<li Class="CompProperties_Usable">
<useJob>UseArtifact</useJob>
<useLabel>Activate {0_label}</useLabel>
<showUseGizmo>true</showUseGizmo>
<useDuration>100</useDuration>
</li>
<li Class="SimpleLootBox.CompProperties_SpawnLootBox">
<lootBoxList>
<li>
<thingDef>SimpleLootBoxExampleC</thingDef>
<chance>0.5</chance>
</li>
</lootBoxList>
</li>
<li Class="SimpleLootBox.CompProperties_LootBox">
<lootBoxOpenSound>lootBoxOpenSound</lootBoxOpenSound>
<lootBoxSpinningSound>lootBoxSpinningSound</lootBoxSpinningSound>
<lootBoxPawnKindDef><!-- 箱子开出的奖励可以混合人物和物品 -->
<li>
<pawnKindDef>Mercenary_Gunner</pawnKindDef>
<count>2</count>
<weight>5</weight>
</li>
</lootBoxPawnKindDef>
<lootBoxThingDef><!-- 箱子开出的奖励可以混合人物和物品 -->
<li>
<thingDef>Silver</thingDef>
<count>1000</count>
<weight>5</weight>
<rarity>2</rarity>
<effecterDef>Skip_ExitNoDelay</effecterDef>
<lootBoxFinalizingRewardSound>lootBoxFinalizingRewardSound</lootBoxFinalizingRewardSound>
</li>
</lootBoxThingDef>
</li>
</comps>
</ThingDef>
</Defs>

View File

@ -1,104 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<SoundDef>
<defName>lootBoxOpenSound</defName><!-- 音频定义名-->
<maxVoices>1</maxVoices>
<maxSimultaneous>1</maxSimultaneous>
<subSounds>
<li>
<onCamera>True</onCamera>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>SimpleLootBox/lootBoxOpenSound</clipPath><!-- 音频路径-->
</li>
</grains>
<volumeRange>50~50</volumeRange><!-- 音量-->
</li>
</subSounds>
</SoundDef>
<!-- Sustainer 如果该音频需要持续播放需要设置为sustainer-->
<SoundDef>
<defName>lootBoxSpinningSound</defName>
<maxVoices>1</maxVoices>
<maxSimultaneous>1</maxSimultaneous>
<sustain>True</sustain>
<priorityMode>PrioritizeNearest</priorityMode>
<subSounds>
<li>
<muteWhenPaused>False</muteWhenPaused>
<sustainLoop>False</sustainLoop>
<onCamera>True</onCamera>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>SimpleLootBox/lootBoxSpinningSound</clipPath>
</li>
</grains>
<volumeRange>50~50</volumeRange>
</li>
</subSounds>
</SoundDef>
<!-- Sustainer-->
<SoundDef>
<defName>lootBoxBackgroundMusicSoundA</defName>
<maxVoices>1</maxVoices>
<maxSimultaneous>1</maxSimultaneous>
<sustain>True</sustain>
<priorityMode>PrioritizeNearest</priorityMode>
<subSounds>
<li>
<muteWhenPaused>False</muteWhenPaused>
<sustainLoop>False</sustainLoop>
<onCamera>True</onCamera>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>SimpleLootBox/lootBoxBackgroundMusicSoundA</clipPath>
</li>
</grains>
<volumeRange>35~35</volumeRange>
</li>
</subSounds>
</SoundDef>
<!-- Sustainer-->
<SoundDef>
<defName>lootBoxBackgroundMusicSoundB</defName>
<maxVoices>1</maxVoices>
<maxSimultaneous>1</maxSimultaneous>
<sustain>True</sustain>
<priorityMode>PrioritizeNearest</priorityMode>
<subSounds>
<li>
<muteWhenPaused>False</muteWhenPaused>
<sustainLoop>False</sustainLoop>
<onCamera>True</onCamera>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>SimpleLootBox/lootBoxBackgroundMusicSoundB</clipPath>
</li>
</grains>
<volumeRange>35~35</volumeRange>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>lootBoxFinalizingRewardSound</defName>
<maxVoices>1</maxVoices>
<maxSimultaneous>1</maxSimultaneous>
<subSounds>
<li>
<onCamera>True</onCamera>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>SimpleLootBox/lootBoxFinalizingRewardSound</clipPath>
</li>
</grains>
<volumeRange>70~70</volumeRange>
</li>
</subSounds>
</SoundDef>
</Defs>

View File

@ -1 +0,0 @@
{"RootPath":"D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox","ProjectFileName":"SimpleLootBox.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Class1.cs"},{"SourceFile":"HarmonyPatches\\FileName.cs"},{"SourceFile":"HarmonyPatches\\PatchMain.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\packages\\Lib.Harmony.2.3.6\\lib\\net48\\0Harmony.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\bin\\Debug\\SimpleLootBox.dll","OutputItemRelativePath":"SimpleLootBox.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}

View File

@ -1,311 +0,0 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|d:\\steam\\steamapps\\common\\rimworld\\mods\\simplelootbox\\1.5\\source\\simplelootbox\\gamecomponent_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:gamecomponent_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\compspawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:compspawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\compproperties_lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:compproperties_lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\compproperties_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:compproperties_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\harmonypatches\\pawn_kill.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:harmonypatches\\pawn_kill.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\PatchMain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:HarmonyPatches\\PatchMain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|d:\\steam\\steamapps\\common\\rimworld\\mods\\simplelootbox\\1.5\\source\\simplelootbox\\lootboxopeningwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxopeningwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\complootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:complootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxspinner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxspinner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxthingdef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxthingdef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxdatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxdatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\raritycolor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:raritycolor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\rarity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:rarity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxpawnkinddef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxpawnkinddef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Verniy\\Downloads\\LootBoxSpinner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|SimpleLootBox||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Properties\\AssemblyInfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:Properties\\AssemblyInfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 7,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "GameComponent_SpawnLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\GameComponent_SpawnLootBox.cs",
"RelativeDocumentMoniker": "GameComponent_SpawnLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\GameComponent_SpawnLootBox.cs",
"RelativeToolTip": "GameComponent_SpawnLootBox.cs",
"ViewState": "AgIAADMAAAAAAAAAAAAowBgAAABMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-09T02:40:24.696Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "CompProperties_LootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_LootBox.cs",
"RelativeDocumentMoniker": "CompProperties_LootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_LootBox.cs",
"RelativeToolTip": "CompProperties_LootBox.cs",
"ViewState": "AgIAAAkAAAAAAAAAAAAAAB4AAAA0AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T21:54:49.755Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "LootBoxOpeningWindow.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxOpeningWindow.cs",
"RelativeDocumentMoniker": "LootBoxOpeningWindow.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxOpeningWindow.cs",
"RelativeToolTip": "LootBoxOpeningWindow.cs",
"ViewState": "AgIAADcAAAAAAAAAAAAewE0AAAA5AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T20:18:46.529Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "CompSpawnLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompSpawnLootBox.cs",
"RelativeDocumentMoniker": "CompSpawnLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompSpawnLootBox.cs",
"RelativeToolTip": "CompSpawnLootBox.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T01:26:54.137Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "CompProperties_SpawnLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_SpawnLootBox.cs",
"RelativeDocumentMoniker": "CompProperties_SpawnLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_SpawnLootBox.cs",
"RelativeToolTip": "CompProperties_SpawnLootBox.cs",
"ViewState": "AgIAAAIAAAAAAAAAAAAYwBQAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T01:22:11.223Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "PatchMain.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\PatchMain.cs",
"RelativeDocumentMoniker": "HarmonyPatches\\PatchMain.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\PatchMain.cs",
"RelativeToolTip": "HarmonyPatches\\PatchMain.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T21:58:33.185Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "Pawn_Kill.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\Pawn_Kill.cs",
"RelativeDocumentMoniker": "HarmonyPatches\\Pawn_Kill.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\Pawn_Kill.cs",
"RelativeToolTip": "HarmonyPatches\\Pawn_Kill.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T21:58:18.923Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "LootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBox.cs",
"RelativeDocumentMoniker": "LootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBox.cs",
"RelativeToolTip": "LootBox.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T01:23:17.893Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "LootBoxDatabase.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxDatabase.cs",
"RelativeDocumentMoniker": "LootBoxDatabase.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxDatabase.cs",
"RelativeToolTip": "LootBoxDatabase.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T02:24:30.5Z"
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "LootBoxSpinner.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxSpinner.cs",
"RelativeDocumentMoniker": "LootBoxSpinner.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxSpinner.cs",
"RelativeToolTip": "LootBoxSpinner.cs",
"ViewState": "AQIAAGQAAAAAAAAAAAAYwH0AAAAaAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T20:22:09.628Z"
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "LootBoxThingDef.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxThingDef.cs",
"RelativeDocumentMoniker": "LootBoxThingDef.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxThingDef.cs",
"RelativeToolTip": "LootBoxThingDef.cs",
"ViewState": "AQIAAAYAAAAAAAAAAAAAAB8AAAAlAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:36:06.172Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "CompLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompLootBox.cs",
"RelativeDocumentMoniker": "CompLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompLootBox.cs",
"RelativeToolTip": "CompLootBox.cs",
"ViewState": "AgIAAA4AAAAAAAAAAAAQwBgAAAA5AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:42:42.073Z"
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "RarityColor.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\RarityColor.cs",
"RelativeDocumentMoniker": "RarityColor.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\RarityColor.cs",
"RelativeToolTip": "RarityColor.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABMAAAAGAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-08T13:16:57.175Z"
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "Rarity.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Rarity.cs",
"RelativeDocumentMoniker": "Rarity.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Rarity.cs",
"RelativeToolTip": "Rarity.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABYAAABNAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T12:47:11.303Z"
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "LootBoxPawnKindDef.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxPawnKindDef.cs",
"RelativeDocumentMoniker": "LootBoxPawnKindDef.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxPawnKindDef.cs",
"RelativeToolTip": "LootBoxPawnKindDef.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABgAAAAdAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:37:54.85Z"
},
{
"$type": "Document",
"DocumentIndex": 15,
"Title": "LootBoxSpinner.cs",
"DocumentMoniker": "C:\\Users\\Verniy\\Downloads\\LootBoxSpinner.cs",
"ToolTip": "C:\\Users\\Verniy\\Downloads\\LootBoxSpinner.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T23:49:02.745Z"
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "SimpleLootBox",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\SimpleLootBox.csproj",
"RelativeDocumentMoniker": "SimpleLootBox.csproj",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\SimpleLootBox.csproj",
"RelativeToolTip": "SimpleLootBox.csproj",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
"WhenOpened": "2025-05-06T22:01:57.262Z"
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "AssemblyInfo.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Properties\\AssemblyInfo.cs",
"RelativeDocumentMoniker": "Properties\\AssemblyInfo.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Properties\\AssemblyInfo.cs",
"RelativeToolTip": "Properties\\AssemblyInfo.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:00:49.967Z"
}
]
}
]
}
]
}

View File

@ -1,311 +0,0 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|d:\\steam\\steamapps\\common\\rimworld\\mods\\simplelootbox\\1.5\\source\\simplelootbox\\gamecomponent_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:gamecomponent_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\compspawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:compspawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\compproperties_lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:compproperties_lootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\compproperties_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:compproperties_spawnlootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\harmonypatches\\pawn_kill.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:harmonypatches\\pawn_kill.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\PatchMain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:HarmonyPatches\\PatchMain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|d:\\steam\\steamapps\\common\\rimworld\\mods\\simplelootbox\\1.5\\source\\simplelootbox\\lootboxopeningwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxopeningwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\complootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:complootbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxspinner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxspinner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxthingdef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxthingdef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxdatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxdatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\raritycolor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:raritycolor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\rarity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:rarity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\lootboxpawnkinddef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:lootboxpawnkinddef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Verniy\\Downloads\\LootBoxSpinner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|SimpleLootBox||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
},
{
"AbsoluteMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Properties\\AssemblyInfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{00FCB9AE-563C-4C61-B2E3-317C008E6254}|SimpleLootBox.csproj|solutionrelative:Properties\\AssemblyInfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 7,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "GameComponent_SpawnLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\GameComponent_SpawnLootBox.cs",
"RelativeDocumentMoniker": "GameComponent_SpawnLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\GameComponent_SpawnLootBox.cs",
"RelativeToolTip": "GameComponent_SpawnLootBox.cs",
"ViewState": "AgIAADMAAAAAAAAAAAAowBgAAABMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-09T02:40:24.696Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "CompProperties_LootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_LootBox.cs",
"RelativeDocumentMoniker": "CompProperties_LootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_LootBox.cs",
"RelativeToolTip": "CompProperties_LootBox.cs",
"ViewState": "AgIAAAkAAAAAAAAAAAAAAB4AAAA0AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T21:54:49.755Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "LootBoxOpeningWindow.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxOpeningWindow.cs",
"RelativeDocumentMoniker": "LootBoxOpeningWindow.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxOpeningWindow.cs",
"RelativeToolTip": "LootBoxOpeningWindow.cs",
"ViewState": "AgIAADcAAAAAAAAAAAAewE0AAAA5AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T20:18:46.529Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "CompSpawnLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompSpawnLootBox.cs",
"RelativeDocumentMoniker": "CompSpawnLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompSpawnLootBox.cs",
"RelativeToolTip": "CompSpawnLootBox.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T01:26:54.137Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "CompProperties_SpawnLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_SpawnLootBox.cs",
"RelativeDocumentMoniker": "CompProperties_SpawnLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompProperties_SpawnLootBox.cs",
"RelativeToolTip": "CompProperties_SpawnLootBox.cs",
"ViewState": "AgIAAAIAAAAAAAAAAAAYwBQAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T01:22:11.223Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "PatchMain.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\PatchMain.cs",
"RelativeDocumentMoniker": "HarmonyPatches\\PatchMain.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\PatchMain.cs",
"RelativeToolTip": "HarmonyPatches\\PatchMain.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T21:58:33.185Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "Pawn_Kill.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\Pawn_Kill.cs",
"RelativeDocumentMoniker": "HarmonyPatches\\Pawn_Kill.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\HarmonyPatches\\Pawn_Kill.cs",
"RelativeToolTip": "HarmonyPatches\\Pawn_Kill.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T21:58:18.923Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "LootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBox.cs",
"RelativeDocumentMoniker": "LootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBox.cs",
"RelativeToolTip": "LootBox.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T01:23:17.893Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "LootBoxDatabase.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxDatabase.cs",
"RelativeDocumentMoniker": "LootBoxDatabase.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxDatabase.cs",
"RelativeToolTip": "LootBoxDatabase.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T02:24:30.5Z"
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "LootBoxSpinner.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxSpinner.cs",
"RelativeDocumentMoniker": "LootBoxSpinner.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxSpinner.cs",
"RelativeToolTip": "LootBoxSpinner.cs",
"ViewState": "AQIAAGQAAAAAAAAAAAAYwH0AAAAaAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T20:22:09.628Z"
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "LootBoxThingDef.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxThingDef.cs",
"RelativeDocumentMoniker": "LootBoxThingDef.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxThingDef.cs",
"RelativeToolTip": "LootBoxThingDef.cs",
"ViewState": "AQIAAAYAAAAAAAAAAAAAAB8AAAAlAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:36:06.172Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "CompLootBox.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompLootBox.cs",
"RelativeDocumentMoniker": "CompLootBox.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\CompLootBox.cs",
"RelativeToolTip": "CompLootBox.cs",
"ViewState": "AgIAAA4AAAAAAAAAAAAQwBgAAAA5AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:42:42.073Z"
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "RarityColor.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\RarityColor.cs",
"RelativeDocumentMoniker": "RarityColor.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\RarityColor.cs",
"RelativeToolTip": "RarityColor.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABMAAAAGAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-08T13:16:57.175Z"
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "Rarity.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Rarity.cs",
"RelativeDocumentMoniker": "Rarity.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Rarity.cs",
"RelativeToolTip": "Rarity.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABYAAABNAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T12:47:11.303Z"
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "LootBoxPawnKindDef.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxPawnKindDef.cs",
"RelativeDocumentMoniker": "LootBoxPawnKindDef.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\LootBoxPawnKindDef.cs",
"RelativeToolTip": "LootBoxPawnKindDef.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABgAAAAdAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:37:54.85Z"
},
{
"$type": "Document",
"DocumentIndex": 15,
"Title": "LootBoxSpinner.cs",
"DocumentMoniker": "C:\\Users\\Verniy\\Downloads\\LootBoxSpinner.cs",
"ToolTip": "C:\\Users\\Verniy\\Downloads\\LootBoxSpinner.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-07T23:49:02.745Z"
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "SimpleLootBox",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\SimpleLootBox.csproj",
"RelativeDocumentMoniker": "SimpleLootBox.csproj",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\SimpleLootBox.csproj",
"RelativeToolTip": "SimpleLootBox.csproj",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
"WhenOpened": "2025-05-06T22:01:57.262Z"
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "AssemblyInfo.cs",
"DocumentMoniker": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Properties\\AssemblyInfo.cs",
"RelativeDocumentMoniker": "Properties\\AssemblyInfo.cs",
"ToolTip": "D:\\Steam\\steamapps\\common\\RimWorld\\Mods\\SimpleLootBox\\1.5\\Source\\SimpleLootBox\\Properties\\AssemblyInfo.cs",
"RelativeToolTip": "Properties\\AssemblyInfo.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-06T22:00:49.967Z"
}
]
}
]
}
]
}

View File

@ -1,144 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using UnityEngine;
using Verse;
using Verse.Noise;
using Verse.Sound;
namespace SimpleLootBox
{
public class CompLootBox : CompUseEffect
{
public CompProperties_LootBox Props => (CompProperties_LootBox)props;
public override void DoEffect(Pawn usedBy)
{
base.DoEffect(usedBy);
LootBoxOpeningWindow window = new LootBoxOpeningWindow(this);
Find.WindowStack.Add(window);
}
public bool Spawn(LootBoxSpinner.SpinItem reward)
{
if (reward.count <= 0) return false;
Map map = parent.Map;
IntVec3 position = parent.Position;
if (reward.thingDef != null)
{
for (int i = 0; i < reward.count; i++)
{
Thing thing;
if (reward.thingDef.MadeFromStuff && reward.stuff != null)
{
thing = ThingMaker.MakeThing(reward.thingDef, reward.stuff);
}
else
{
thing = ThingMaker.MakeThing(reward.thingDef);
}
if (thing.TryGetComp<CompQuality>() != null)
{
thing.TryGetComp<CompQuality>().SetQuality(reward.quality, ArtGenerationContext.Outsider);
}
if (thing.def.Minifiable)
{
Thing minifiedThing = MinifyUtility.MakeMinified(thing);
GenPlace.TryPlaceThing(minifiedThing, parent.Position, parent.Map, ThingPlaceMode.Near);
}
else
{
GenPlace.TryPlaceThing(thing, parent.Position, parent.Map, ThingPlaceMode.Near);
}
if (reward.effecterDef != null)
{
Effecter effecter = reward.effecterDef.Spawn();
effecter.Trigger(new TargetInfo(position, map), new TargetInfo(position, map));
effecter.Cleanup();
}
}
}
else if (reward.pawnKindDef != null)
{
for (int i = 0; i < reward.count; i++)
{
PawnGenerationRequest request = new PawnGenerationRequest(
kind: reward.pawnKindDef,
context: PawnGenerationContext.NonPlayer,
canGeneratePawnRelations: false,
colonistRelationChanceFactor: 0f,
forceGenerateNewPawn: true,
//Because people really want to spawn baby using the loot box
developmentalStages: reward.pawnKindDef.pawnGroupDevelopmentStage ?? DevelopmentalStage.Adult,
allowDowned: true
);
Pawn pawn = PawnGenerator.GeneratePawn(request);
if (reward.isHostile)
{
Faction enemy = Find.FactionManager.AllFactionsVisible
.Where(f => !f.IsPlayer && f.HostileTo(Faction.OfPlayer) && f.def.humanlikeFaction)
.RandomElementWithFallback();
pawn.SetFaction(enemy);
if (pawn.RaceProps.Animal)
{
pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent, forced: true);
}
else if (pawn.RaceProps.Humanlike)
{
pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, forced: true);
}
else if (pawn.RaceProps.IsMechanoid)
{
pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.BerserkMechanoid, forced: true);
}
}
else
{
pawn.SetFaction(Faction.OfPlayer);
if (pawn.ideo != null)
{
pawn.ideo.SetIdeo(Faction.OfPlayer.ideos.PrimaryIdeo);
}
}
if (pawn.ideo != null)
{
pawn.ideo.SetIdeo(Faction.OfPlayer.ideos.PrimaryIdeo);
}
GenSpawn.Spawn(pawn, position, map, WipeMode.Vanish);
if (reward.effecterDef != null)
{
Effecter effecter = reward.effecterDef.Spawn();
effecter.Trigger(new TargetInfo(position, map), new TargetInfo(position, map));
effecter.Cleanup();
}
}
}
return true;
}
public void DeleteBox(int count)
{
if (parent.stackCount > count)
{
parent.stackCount -= count;
}
else if (parent.stackCount == count)
{
parent.Destroy(DestroyMode.Vanish);
}
}
}
}

View File

@ -1,36 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using UnityEngine;
using Verse;
namespace SimpleLootBox
{
public class CompProperties_LootBox : CompProperties_UseEffect
{
public CompProperties_LootBox()
{
this.compClass = typeof(CompLootBox);
}
public List<LootBoxThingDef> lootBoxThingDef;
public List<LootBoxPawnKindDef> lootBoxPawnKindDef;
public ThingDef lootBoxOpenCost;
public int lootBoxOpenCostCount = 0;
public SoundDef lootBoxOpenSound;
public SoundDef lootBoxSpinningSound;
public SoundDef lootBoxBackgroundMusicSound;
public string lootBoxBackgroundTexturePath;
}
}

View File

@ -1,21 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using SimpleLootBox.SimpleLootBox;
using Verse;
namespace SimpleLootBox
{
public class CompProperties_SpawnLootBox : CompProperties
{
public List<LootBox> lootBoxList;
public CompProperties_SpawnLootBox()
{
this.compClass = typeof(CompSpawnLootBox);
}
}
}

View File

@ -1,21 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace SimpleLootBox
{
using System.Collections.Generic;
using RimWorld;
using Verse;
namespace SimpleLootBox
{
public class CompSpawnLootBox : ThingComp
{
}
}
}

View File

@ -1,72 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using SimpleLootBox.SimpleLootBox;
using Verse;
namespace SimpleLootBox
{
public class GameComponent_SpawnLootBox : GameComponent
{
private Dictionary<string, int> nextSpawnTick = new Dictionary<string, int>();
public GameComponent_SpawnLootBox(Game game) : base() { }
public override void GameComponentTick()
{
if (Current.Game?.World?.worldObjects == null || Find.TickManager.TicksGame % 250 != 0)
return;
int currentTick = Find.TickManager.TicksGame;
foreach (var def in DefDatabase<ThingDef>.AllDefsListForReading)
{
if (def.HasComp(typeof(CompSpawnLootBox)))
{
var spawnComp = def.GetCompProperties<CompProperties_SpawnLootBox>();
if (spawnComp?.lootBoxList == null) continue;
foreach (var lootBox in spawnComp.lootBoxList)
{
if (lootBox.thingDef == null || lootBox.daysBetweenLootBoxSpawns <= 0) continue;
string key = def.defName + "_" + lootBox.thingDef.defName;
if (!nextSpawnTick.TryGetValue(key, out int tick))
{
tick = currentTick + (int)(lootBox.daysBetweenLootBoxSpawns * 60000);
nextSpawnTick[key] = tick;
}
if (currentTick >= tick)
{
Spawn(lootBox.thingDef);
nextSpawnTick[key] = currentTick + (int)(lootBox.daysBetweenLootBoxSpawns * 60000);
}
}
}
}
}
private void Spawn(ThingDef def)
{
Map map = Find.AnyPlayerHomeMap;
if (map == null) return;
IntVec3 pos = DropCellFinder.TradeDropSpot(map);
Thing thing = ThingMaker.MakeThing(def);
GenPlace.TryPlaceThing(thing, pos, map, ThingPlaceMode.Near);
Messages.Message("SimpleLootBox_ThingArrived".Translate(def.label.CapitalizeFirst()),
new TargetInfo(pos, map), MessageTypeDefOf.PositiveEvent);
}
public override void ExposeData()
{
Scribe_Collections.Look(ref nextSpawnTick, "SimpleLootBox_nextSpawnTick", LookMode.Value, LookMode.Value);
}
}
}

View File

@ -1,23 +0,0 @@
using HarmonyLib;
using JetBrains.Annotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace SimpleLootBox.HarmonyPatches
{
[UsedImplicitly]
[StaticConstructorOnStartup]
public class PatchMain
{
static PatchMain()
{
var instance = new Harmony("SimpleLootBox_HarmonyPatches");
instance.PatchAll(Assembly.GetExecutingAssembly());
}
}
}

View File

@ -1,29 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HarmonyLib;
using RimWorld;
using Verse;
namespace SimpleLootBox.HarmonyPatches
{
[HarmonyPatch(typeof(Pawn), nameof(Pawn.Kill))]
public static class Pawn_Kill_Patch
{
static void Postfix(Pawn __instance)
{
if (!__instance.SpawnedOrAnyParentSpawned) return;
foreach (var lootBox in LootBoxDatabase.allLootBoxes)
{
if (Rand.Value <= lootBox.chance)
{
Thing thing = ThingMaker.MakeThing(lootBox.thingDef);
GenPlace.TryPlaceThing(thing, __instance.PositionHeld, __instance.MapHeld, ThingPlaceMode.Near);
}
}
}
}
}

View File

@ -1,16 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace SimpleLootBox
{
public class LootBox
{
public ThingDef thingDef;
public float chance = 0.05f;
public float daysBetweenLootBoxSpawns;
}
}

View File

@ -1,29 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace SimpleLootBox
{
public static class LootBoxDatabase
{
public static List<LootBox> allLootBoxes = new List<LootBox>();
static LootBoxDatabase()
{
foreach (var def in DefDatabase<ThingDef>.AllDefs)
{
var props = def.GetCompProperties<CompProperties_SpawnLootBox>();
if (props?.lootBoxList != null)
{
foreach (var lootBox in props.lootBoxList)
{
allLootBoxes.Add(lootBox);
}
}
}
}
}
}

View File

@ -1,263 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using RimWorld;
using Verse;
using Verse.Sound;
namespace SimpleLootBox
{
public class LootBoxOpeningWindow : Window
{
private static Vector2 scrollPosition = Vector2.zero;
private readonly CompLootBox compLootBox;
private readonly LootBoxSpinner lootBoxSpinner;
private Sustainer backgroundMusicSustainer;
private Sustainer spinningSustainer;
private Texture2D backgroundTex;
private LootBoxSpinner.SpinItem? pendingFinalizingSoundItem = null;
private LootBoxSpinner.SpinItem? pendingRewardItem = null;
public LootBoxOpeningWindow(CompLootBox comp)
{
this.compLootBox = comp;
this.lootBoxSpinner = new LootBoxSpinner(comp);
this.doCloseX = true;
this.forcePause = true;
}
public override void PreOpen()
{
base.PreOpen();
if (compLootBox.Props.lootBoxOpenSound != null)
{
compLootBox.Props.lootBoxOpenSound.PlayOneShot(SoundInfo.InMap(new TargetInfo(compLootBox.parent.Position, compLootBox.parent.Map)));
}
if (compLootBox.Props.lootBoxBackgroundMusicSound != null)
{
SoundInfo info = SoundInfo.InMap(new TargetInfo(compLootBox.parent.Position, compLootBox.parent.Map), MaintenanceType.PerFrame);
backgroundMusicSustainer = compLootBox.Props.lootBoxBackgroundMusicSound.TrySpawnSustainer(info);
}
if (!string.IsNullOrEmpty(compLootBox.Props.lootBoxBackgroundTexturePath))
{
backgroundTex = ContentFinder<Texture2D>.Get(compLootBox.Props.lootBoxBackgroundTexturePath, true);
}
this.windowRect.width = 700f;
this.windowRect.height = 800f;
this.windowRect.x = (UI.screenWidth - this.windowRect.width) / 2f;
this.windowRect.y = (UI.screenHeight - this.windowRect.height) / 2f;
}
public override void DoWindowContents(Rect inRect)
{
if (backgroundTex != null)
{
GUI.DrawTexture(inRect, backgroundTex, ScaleMode.StretchToFill);
}
GUI.BeginGroup(inRect);
lootBoxSpinner.Draw(new Rect(0f, 100f, inRect.width, 150f));
//Loot box label UI
Text.Font = GameFont.Medium;
Text.Anchor = TextAnchor.MiddleCenter;
Widgets.Label(new Rect(0f, 10f, inRect.width, 40f), compLootBox.parent.LabelCap);
//Open loot box cost UI
if (compLootBox.Props.lootBoxOpenCost != null && compLootBox.Props.lootBoxOpenCostCount > 0)
{
Text.Font = GameFont.Small;
Text.Anchor = TextAnchor.MiddleCenter;
Widgets.Label(
new Rect(0f, 55f, inRect.width, 20f),
"SimpleLootBox_CostLabel".Translate(
compLootBox.Props.lootBoxOpenCostCount,
compLootBox.Props.lootBoxOpenCost.LabelCap
)
);
}
backgroundMusicSustainer?.Maintain();
spinningSustainer?.Maintain();
if (spinningSustainer != null && !lootBoxSpinner.IsSpinning)
{
spinningSustainer.End();
spinningSustainer = null;
}
bool HasEnoughCurrency()
{
if (compLootBox.Props.lootBoxOpenCost == null || compLootBox.Props.lootBoxOpenCostCount <= 0)
return true;
Map map = compLootBox.parent.Map;
ThingDef currencyDef = compLootBox.Props.lootBoxOpenCost;
int requiredCount = compLootBox.Props.lootBoxOpenCostCount;
int availableCount = map.listerThings.AllThings
.Where(thing =>
thing.def == currencyDef &&
thing.def.category == ThingCategory.Item &&
thing.IsInAnyStorage() &&
!thing.Position.Fogged(map))
.Sum(thing => thing.stackCount);
return availableCount >= requiredCount;
}
bool ConsumeCurrency()
{
if (compLootBox.Props.lootBoxOpenCost == null || compLootBox.Props.lootBoxOpenCostCount <= 0)
return true;
Map map = compLootBox.parent.Map;
ThingDef currencyDef = compLootBox.Props.lootBoxOpenCost;
int toConsume = compLootBox.Props.lootBoxOpenCostCount;
foreach (Thing thing in map.listerThings.AllThings
.Where(t =>
t.def == currencyDef &&
t.def.category == ThingCategory.Item &&
t.IsInAnyStorage() &&
!t.Position.Fogged(map))
.OrderByDescending(t => t.stackCount))
{
int take = Math.Min(toConsume, thing.stackCount);
thing.SplitOff(take).Destroy(DestroyMode.Vanish);
toConsume -= take;
if (toConsume <= 0)
return true;
}
return false;
}
bool canOpen = HasEnoughCurrency();
Rect buttonRect = new Rect(255f, 250f, 150f, 50f);
if (Widgets.ButtonText(buttonRect, "SimpleLootBox_OpenBox".Translate(), active: true))
{
if (!canOpen)
{
string label = compLootBox.Props.lootBoxOpenCost?.LabelCap ?? "unknown";
int count = compLootBox.Props.lootBoxOpenCostCount;
Messages.Message("SimpleLootBox_NotEnoughCurrency".Translate(label, count), MessageTypeDefOf.RejectInput);
Text.Anchor = TextAnchor.UpperLeft;
Text.Font = GameFont.Small;
return;
}
if (!lootBoxSpinner.IsSpinning)
{
var itemWon = lootBoxSpinner.Spin();
pendingFinalizingSoundItem = itemWon;
pendingRewardItem = itemWon;
if (compLootBox.Props.lootBoxSpinningSound != null)
{
SoundInfo info = SoundInfo.InMap(new TargetInfo(compLootBox.parent.Position, compLootBox.parent.Map), MaintenanceType.PerFrame);
spinningSustainer = compLootBox.Props.lootBoxSpinningSound.TrySpawnSustainer(info);
}
}
}
if (!lootBoxSpinner.IsSpinning && pendingRewardItem != null)
{
var item = pendingRewardItem.Value;
bool done = compLootBox.Spawn(item);
if (done)
{
compLootBox.DeleteBox(1);
}
if (item.finalizingSound != null)
{
item.finalizingSound.PlayOneShot(SoundInfo.InMap(new TargetInfo(compLootBox.parent.Position, compLootBox.parent.Map)));
}
ConsumeCurrency();
pendingRewardItem = null;
pendingFinalizingSoundItem = null;
}
Rect listRect = new Rect(20f, 300f, inRect.width - 20f, inRect.height - 300f);
int visibleCount = lootBoxSpinner.PossibleRewards.Count(spinItem =>
(spinItem.thingDef != null && !(compLootBox.Props.lootBoxThingDef?.Find(t => t.thingDef == spinItem.thingDef)?.isHidden ?? false)) ||
(spinItem.pawnKindDef != null && !(compLootBox.Props.lootBoxPawnKindDef?.Find(p => p.pawnKindDef == spinItem.pawnKindDef)?.isHidden ?? false)));
Rect contentRect = new Rect(listRect.x, listRect.y, listRect.width - 20f, 10f + visibleCount * 20f);
Widgets.BeginScrollView(listRect, ref scrollPosition, contentRect);
Text.Font = GameFont.Small;
int rowIndex = 0;
foreach (var spinItem in lootBoxSpinner.PossibleRewards)
{
if (spinItem.thingDef != null)
{
var itemForShow = compLootBox.Props.lootBoxThingDef.Find(t => t.thingDef == spinItem.thingDef);
if (itemForShow != null && itemForShow.isHidden)
continue;
}
else if (spinItem.pawnKindDef != null)
{
var pawnForShow = compLootBox.Props.lootBoxPawnKindDef.Find(p => p.pawnKindDef == spinItem.pawnKindDef);
if (pawnForShow != null && pawnForShow.isHidden)
continue;
}
Rect rowRect = new Rect(listRect.x, listRect.y + rowIndex * 20f, 100f, 20f);
Widgets.DrawRectFast(rowRect, RarityColors.GetColor(spinItem.rarity));
Rect labelRect = new Rect(listRect.x + 120f, listRect.y + rowIndex * 20f, listRect.width - 150f, 20f);
Widgets.DrawRectFast(labelRect, RarityColors.GetColor(spinItem.rarity));
Text.Anchor = TextAnchor.MiddleCenter;
Widgets.Label(rowRect, spinItem.rarity.TranslateLabel());
string rewardName = spinItem.thingDef != null
? spinItem.thingDef.LabelCap
: (spinItem.pawnKindDef?.LabelCap ?? "");
Text.Anchor = TextAnchor.MiddleLeft;
Widgets.Label(labelRect, rewardName);
if (spinItem.count > 1)
{
Text.Anchor = TextAnchor.MiddleRight;
Widgets.Label(labelRect, $"x{spinItem.count}");
}
rowIndex++;
}
Text.Anchor = TextAnchor.UpperLeft;
Text.Font = GameFont.Small;
Widgets.EndScrollView();
GUI.EndGroup();
}
public override void PostClose()
{
base.PostClose();
if (backgroundMusicSustainer != null)
{
backgroundMusicSustainer.End();
backgroundMusicSustainer = null;
}
if (spinningSustainer != null)
{
spinningSustainer.End();
spinningSustainer = null;
}
}
}
}

View File

@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace SimpleLootBox
{
public class LootBoxPawnKindDef
{
public PawnKindDef pawnKindDef;
public float weight = 1f;
public int count = 1;
public EffecterDef effecterDef;
public Rarity rarity;
public SoundDef lootBoxFinalizingRewardSound;
public bool isHostile = false;
public bool isHidden = false;
}
}

View File

@ -1,210 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using UnityEngine;
using Verse;
using static SimpleLootBox.LootBoxSpinner;
namespace SimpleLootBox
{
public class LootBoxSpinner
{
private const int CellCount = 50;
private float speed = 0f;
public bool IsSpinning => speed > 0.1f;
private float position = 0f;
private readonly System.Random rng = new System.Random();
private readonly CompLootBox comp;
private readonly SpinItem[] spinWheelItems = new SpinItem[CellCount];
public List<SpinItem> PossibleRewards { get; private set; } = new List<SpinItem>();
public LootBoxSpinner(CompLootBox comp)
{
this.comp = comp;
LoadPossibleRewards();
for (int i = 0; i < CellCount; i++)
{
spinWheelItems[i] = PickRandomReward();
}
}
private void LoadPossibleRewards()
{
PossibleRewards.Clear();
CompProperties_LootBox props = comp.Props;
if (props.lootBoxThingDef != null)
{
foreach (var thing in props.lootBoxThingDef)
{
if (thing.thingDef == null || thing.weight <= 0) continue;
SpinItem item = new SpinItem(thing.thingDef, thing.stuff, thing.quality, thing.count, thing.rarity, thing.weight, thing.effecterDef, thing.lootBoxFinalizingRewardSound, thing.isHostile);
PossibleRewards.Add(item);
}
}
if (props.lootBoxPawnKindDef != null)
{
foreach (var pawn in props.lootBoxPawnKindDef)
{
if (pawn.pawnKindDef == null || pawn.weight <= 0) continue;
SpinItem item = new SpinItem(pawn.pawnKindDef, pawn.count, pawn.rarity, pawn.weight, pawn.effecterDef, pawn.lootBoxFinalizingRewardSound, pawn.isHostile);
PossibleRewards.Add(item);
}
}
PossibleRewards.Sort((a, b) =>
{
int r = b.rarity.CompareTo(a.rarity);
if (r != 0) return r;
string an = a.thingDef != null ? a.thingDef.label : a.pawnKindDef?.label ?? "";
string bn = b.thingDef != null ? b.thingDef.label : b.pawnKindDef?.label ?? "";
return string.Compare(an, bn, StringComparison.OrdinalIgnoreCase);
});
}
public void Draw(Rect rect)
{
if (spinWheelItems.Length == 0) return;
speed = Math.Max(speed - 0.2f, 0f);
position += speed;
float totalWidth = rect.width * CellCount * 0.2f;
for (int i = 0; i < CellCount; i++)
{
float x = totalWidth - ((position + rect.width * (i * 0.2f)) % totalWidth) + rect.x - rect.width * 0.2f;
Rect cellRect = new Rect(x, rect.y, rect.width * 0.2f - 5f, rect.height);
SpinItem item = spinWheelItems[i];
Widgets.DrawRectFast(cellRect, RarityColors.GetColor(item.rarity));
Rect iconRect = new Rect(x, rect.y + 5f, rect.width * 0.2f - 5f, rect.width * 0.2f - 5f);
Texture iconTex = item.thingDef?.uiIcon;
if (item.pawnKindDef != null)
{
iconTex = item.portrait;
}
if (iconTex != null)
{
Widgets.DrawTextureFitted(iconRect, iconTex, 1f);
}
else
{
Text.Anchor = TextAnchor.MiddleCenter;
Text.Font = GameFont.Tiny;
string label = item.thingDef?.LabelCap ?? item.pawnKindDef?.LabelCap ?? "";
if (!string.IsNullOrWhiteSpace(label))
{
Widgets.Label(iconRect, label);
}
}
if (item.count > 1)
{
Rect countRect = new Rect(x, rect.y + 20f, rect.width * 0.2f - 5f, rect.width * 0.2f - 5f);
Text.Anchor = TextAnchor.LowerRight;
Text.Font = GameFont.Medium;
Widgets.Label(countRect, "x" + item.count);
}
Text.Anchor = TextAnchor.UpperLeft;
Text.Font = GameFont.Small;
}
Rect bar = new Rect(rect.x + rect.width / 2f - 1f, rect.y, 2f, rect.height);
Widgets.DrawRectFast(bar, new Color(0.0823f, 0.098f, 0.1137f, 1f));
}
public SpinItem Spin()
{
speed = 100.3f;
position = 0f;
for (int i = 0; i < CellCount; i++)
{
spinWheelItems[i] = PickRandomReward();
}
return spinWheelItems[8];
}
public void Stop()
{
speed = 0f;
position = 0f;
}
private SpinItem PickRandomReward()
{
if (PossibleRewards.Count == 0) return default;
double totalWeight = 0;
foreach (var item in PossibleRewards)
{
totalWeight += item.weight;
}
double pick = rng.NextDouble() * totalWeight;
foreach (var item in PossibleRewards)
{
pick -= item.weight;
if (pick <= 0)
return item;
}
return PossibleRewards[PossibleRewards.Count - 1];
}
public struct SpinItem
{
public ThingDef thingDef;
public PawnKindDef pawnKindDef;
public ThingDef stuff;
public QualityCategory quality;
public int count;
public Rarity rarity;
public float weight;
public EffecterDef effecterDef;
public RenderTexture portrait;
public SoundDef finalizingSound;
public bool isHostile;
public SpinItem(ThingDef thingDef, ThingDef stuff, QualityCategory quality, int count, Rarity rarity, float weight, EffecterDef effecter, SoundDef finalizingSound, bool isHostile)
{
this.thingDef = thingDef;
this.pawnKindDef = null;
this.stuff = stuff;
this.quality = quality;
this.count = count;
this.rarity = rarity;
this.weight = weight;
this.effecterDef = effecter;
this.portrait = null;
this.finalizingSound = finalizingSound;
this.isHostile = false;/*Have to match the struct, always false*/
}
public SpinItem(PawnKindDef pawnKindDef, int count, Rarity rarity, float weight, EffecterDef effecter, SoundDef finalizingSound, bool isHostile)
{
this.thingDef = null;
this.pawnKindDef = pawnKindDef;
this.stuff = null;
this.quality = QualityCategory.Normal;
this.count = count;
this.rarity = rarity;
this.weight = weight;
this.effecterDef = effecter;
this.finalizingSound = finalizingSound;
this.isHostile = isHostile;
Pawn pawn = PawnGenerator.GeneratePawn(pawnKindDef);
this.portrait = PortraitsCache.Get(pawn, new Vector2(128f, 128f), Rot4.South, new Vector3(0f, 0f, 0.1f), 1.25f);
}
}
}
}

View File

@ -1,34 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace SimpleLootBox
{
public class LootBoxThingDef
{
public ThingDef thingDef;
public float weight = 1f;
public int count = 1;
public ThingDef stuff;
public EffecterDef effecterDef;
public QualityCategory quality;
public Rarity rarity = 0;
public SoundDef lootBoxFinalizingRewardSound;
public bool isHostile = false; /*I have no idea why I choose to use the struct*/
public bool isHidden = false;
}
}

View File

@ -1,33 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SimpleLootBox")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SimpleLootBox")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("00fcb9ae-563c-4c61-b2e3-317c008e6254")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace SimpleLootBox
{
public enum Rarity : int
{
None = 0,
Common = 1,
Uncommon = 2,
Rare = 3,
Epic = 4,
Legendary = 5,
}
public static class RarityExtensions
{
public static string TranslateLabel(this Rarity rarity)
{
return ("SimpleLootBox_Rarity_" + rarity.ToString()).Translate();
}
}
}

View File

@ -1,27 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace SimpleLootBox
{
public static class RarityColors
{
public static Dictionary<Rarity, Color> rarityColorDict = new Dictionary<Rarity, Color>
{
{ Rarity.None, new Color(0.6f, 0.6f, 0.6f) },
{ Rarity.Common, new Color(0.3f, 0.3f, 1f) },
{ Rarity.Uncommon, new Color(0.8f, 0.3f, 1f) },
{ Rarity.Rare, new Color(1f, 0.3f, 0.8f) },
{ Rarity.Epic, new Color(1f, 0.3f, 0.3f) },
{ Rarity.Legendary, new Color(0.85f, 0.7f, 0.2f) }
};
public static Color GetColor(Rarity rarity)
{
return rarityColorDict.TryGetValue(rarity, out var color) ? color : Color.white;
}
}
}

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{00FCB9AE-563C-4C61-B2E3-317C008E6254}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SimpleLootBox</RootNamespace>
<AssemblyName>SimpleLootBox</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>..\..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll</HintPath>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine.CoreModule">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.IMGUIModule">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TextRenderingModule">
<HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="CompLootBox.cs" />
<Compile Include="GameComponent_SpawnLootBox.cs" />
<Compile Include="LootBoxDatabase.cs" />
<Compile Include="LootBoxOpeningWindow.cs" />
<Compile Include="LootBoxSpinner.cs" />
<Compile Include="Rarity.cs" />
<Compile Include="CompSpawnLootBox.cs" />
<Compile Include="CompProperties_LootBox.cs" />
<Compile Include="CompProperties_SpawnLootBox.cs" />
<Compile Include="HarmonyPatches\Pawn_Kill.cs" />
<Compile Include="HarmonyPatches\PatchMain.cs" />
<Compile Include="LootBox.cs" />
<Compile Include="LootBoxPawnKindDef.cs" />
<Compile Include="LootBoxThingDef.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RarityColor.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -1,25 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35931.197 d17.13
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleLootBox", "SimpleLootBox.csproj", "{00FCB9AE-563C-4C61-B2E3-317C008E6254}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{00FCB9AE-563C-4C61-B2E3-317C008E6254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00FCB9AE-563C-4C61-B2E3-317C008E6254}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00FCB9AE-563C-4C61-B2E3-317C008E6254}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00FCB9AE-563C-4C61-B2E3-317C008E6254}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {622317E2-B381-4BBE-B0BA-FBC59718BBE4}
EndGlobalSection
EndGlobal

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

View File

@ -1 +0,0 @@
5e2da3e94f7468b69c50cba94c011c2b6d045e493cb681af54aa42fea1387f90

View File

@ -1,14 +0,0 @@
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.csproj.AssemblyReference.cache
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.csproj.CoreCompileInputs.cache
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Assemblies\SimpleLootBox.dll
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Assemblies\SimpleLootBox.pdb
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLo.E20EF750.Up2Date
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.dll
D:\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.pdb
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Assemblies\SimpleLootBox.dll
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Assemblies\SimpleLootBox.pdb
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.csproj.AssemblyReference.cache
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.csproj.CoreCompileInputs.cache
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLo.E20EF750.Up2Date
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.dll
C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\SimpleLootBox\1.5\Source\SimpleLootBox\obj\Debug\SimpleLootBox.pdb

View File

@ -5,7 +5,7 @@
<supportedVersions>
<li>1.5</li>
</supportedVersions>
<packageId>NHUX.SimpleLootBox</packageId>
<packageId>NHUX.SimpleLootBox1</packageId>
<description>
开箱mod适合在服务器里使用目前测试版
</description>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 396 KiB

View File

@ -1 +1 @@
3479112682
3479622537

View File

@ -2,6 +2,7 @@
<LanguageData>
<SimpleLootBox_OpenBox>开箱!</SimpleLootBox_OpenBox>
<SimpleLootBox_NoBoxLeft>这堆箱子都已经开完了。</SimpleLootBox_NoBoxLeft>
<SimpleLootBox_NotEnoughCurrency>储存区里没有足够的 {0} (需要 {1}) 来打开箱子。</SimpleLootBox_NotEnoughCurrency>
<SimpleLootBox_CostLabel>消耗:{0} X {1}</SimpleLootBox_CostLabel>

View File

@ -2,6 +2,7 @@
<LanguageData>
<SimpleLootBox_OpenBox>Open Box!</SimpleLootBox_OpenBox>
<SimpleLootBox_NoBoxLeft>All loot boxes in the stack have been opened.</SimpleLootBox_NoBoxLeft>
<SimpleLootBox_NotEnoughCurrency>Do not have enough {0} (need {1}) in storage to open this box.</SimpleLootBox_NotEnoughCurrency>
<SimpleLootBox_CostLabel>Cost: {0} X {1}</SimpleLootBox_CostLabel>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -18,5 +18,6 @@
<li IfModActive="ayameduki.harzoichor">LoadFolders/ayazui</li><!---->
<li IfModActive="nemonian.my">LoadFolders/moyo</li><!--moyo-->
<li IfModActive="ayameduki.harsaclean">LoadFolders/ayafeie</li><!--飞蛾-->
<li IfModActive="ancot.milirarace">LoadFolders/mili</li><!--米粒-->
</v1.5>
</loadFolders>

View File

@ -15,8 +15,6 @@
</categories>
</li>
</backstoryFilters>
<minGenerationAge>0.01</minGenerationAge><!-- 生成人物的最小生物年龄 -->
<maxGenerationAge>3</maxGenerationAge><!-- 生成人物的最大生物年龄 -->
<techHediffsTags Inherit="true"><!-- 用来去除可能从parentName里继承的仿生体tag -->
</techHediffsTags>
<weaponTags Inherit="true"><!-- 用来去除可能从parentName里继承的武器tag -->
@ -30,7 +28,7 @@
</apparelRequired>-->
<xenotypeSet><!--■1.4以降 ゼノタイプ-->
<xenotypeChances>
<Aya_Race_Xenotype MayRequire="Ludeon.RimWorld.Biotech">9999</Aya_Race_Xenotype>
<Aya_Race_Xenotype MayRequire="Ludeon.RimWorld.Biotech">1</Aya_Race_Xenotype>
</xenotypeChances>
</xenotypeSet>
<pawnGroupDevelopmentStage>Baby</pawnGroupDevelopmentStage>

View File

@ -1,83 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnKindDef ParentName="BaseMihoPlayerPawnKind">
<defName>Miho_PlayerColonist_kami</defName>
<label>盒装美狐</label>
<!--펙션def의 defname
-->
<combatPower>100</combatPower><!-- 袭击占用分数 -->
<defaultFactionType>Miho_PlayerColony</defaultFactionType>
<backstoryFiltersOverride>
<li>
<categories>
<li>MihoPioneer</li>
</categories>
</li>
</backstoryFiltersOverride>
<techHediffsMoney>0</techHediffsMoney><!-- Bionic value -->
<apparelMoney>0</apparelMoney><!-- Apparel value -->
<weaponMoney>0</weaponMoney><!-- Weapon value -->
<techHediffsTags Inherit="False"><!-- 用来去除可能从parentName里继承的仿生体tag -->
</techHediffsTags>
<weaponTags Inherit="False"><!-- 用来去除可能从parentName里继承的武器tag -->
</weaponTags>
<apparelTags Inherit="False"><!-- 用来去除可能从parentName里继承的服装tag -->
</apparelTags>
<inventoryOptions Inherit="False"><!-- 用来去除可能从parentName里继承的随身携带物品 -->
</inventoryOptions>
<!--<specificApparelRequirements>
<li>
<bodyPartGroup>Torso</bodyPartGroup>
<apparelLayer>Miho_Under</apparelLayer>
<requiredTag>MihoCommon</requiredTag>
<stuff>Cloth</stuff>
</li>
<li>
<bodyPartGroup>Torso</bodyPartGroup>
<requiredTag>MihoCommon</requiredTag>
<stuff>Cloth</stuff>
<alternateTagChoices>
<li>
<tag>MihoCommon</tag>
<chance>0.2</chance>
</li>
<li>
<tag>MihoCommonNecessary</tag>
<chance>0.8</chance>
</li>
</alternateTagChoices>
</li>
</specificApparelRequirements>-->
<styleItemTags>
<li>
<tag>Urban</tag>
<baseWeight>1</baseWeight>
<weightFactor>1</weightFactor>
</li>
</styleItemTags>
<apparelMoney>
<min>0</min>
<max>0</max>
</apparelMoney>
<apparelAllowHeadgearChance>0.2</apparelAllowHeadgearChance>
<backstoryCryptosleepCommonality>0</backstoryCryptosleepCommonality>
<initialWillRange>0~0</initialWillRange>
<initialResistanceRange>13~21</initialResistanceRange>
<maxGenerationAge>55</maxGenerationAge>
<useFactionXenotypes>false</useFactionXenotypes> <!-- 去除派系设置的异种生成概率 -->
<xenotypeSet Inherit="False">
<xenotypeChances>
<Xeno_CelestialMiho_Arctic MayRequire="Ludeon.RimWorld.Biotech">22</Xeno_CelestialMiho_Arctic> <!-- 雪凛种 -->
<Xeno_CelestialMiho_Desert MayRequire="Ludeon.RimWorld.Biotech">22</Xeno_CelestialMiho_Desert> <!-- 沙伶种 -->
<Xeno_CelestialMiho_Highland MayRequire="Ludeon.RimWorld.Biotech">12</Xeno_CelestialMiho_Highland> <!-- 战凌种 -->
<Xeno_CelestialMiho_Highmate MayRequire="Ludeon.RimWorld.Biotech">22</Xeno_CelestialMiho_Highmate> <!-- 欲琳种 -->
<Xeno_CelestialMiho MayRequire="Ludeon.RimWorld.Biotech">22</Xeno_CelestialMiho> <!-- 凡灵种 -->
</xenotypeChances>
</xenotypeSet>
</PawnKindDef>
</Defs>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnKindDef ParentName="Milira_PawnBase">
<defName>Milian_Base_mi</defName>
<label>超级米莉拉</label>
<combatPower>100</combatPower><!-- 袭击占用分数 -->
<defaultFactionType>Milira_Faction</defaultFactionType>
<backstoryCategories>
<li>Milira_General</li>
</backstoryCategories>
<techHediffsMoney>0</techHediffsMoney><!-- Bionic value -->
<apparelMoney>0</apparelMoney><!-- Apparel value -->
<weaponMoney>0</weaponMoney><!-- Weapon value -->
<skills>
<li>
<skill>Shooting</skill>
<range>10~18</range>
</li>
<li>
<skill>Shooting</skill>
<range>10~18</range>
</li>
<li>
<skill>Construction</skill>
<range>10~18</range>
</li>
<li>
<skill>Mining</skill>
<range>10~18</range>
</li>
<li>
<skill>Cooking</skill>
<range>10~18</range>
</li>
<li>
<skill>Plants</skill>
<range>10~18</range>
</li>
<li>
<skill>Plants</skill>
<range>10~18</range>
</li>
<li>
<skill>Animals</skill>
<range>10~18</range>
</li>
<li>
<skill>Crafting</skill>
<range>10~18</range>
</li>
<li>
<skill>Artistic</skill>
<range>10~18</range>
</li>
<li>
<skill>Social</skill>
<range>10~18</range>
</li>
<li>
<skill>Medicine</skill>
<range>10~18</range>
</li>
<li>
<skill>Intellectual</skill>
<range>10~18</range>
</li>
</skills>
<techHediffsTags Inherit="False"><!-- 用来去除可能从parentName里继承的仿生体tag -->
</techHediffsTags>
<weaponTags Inherit="False"><!-- 用来去除可能从parentName里继承的武器tag -->
</weaponTags>
<apparelTags Inherit="False"><!-- 用来去除可能从parentName里继承的服装tag -->
</apparelTags>
<inventoryOptions Inherit="False"><!-- 用来去除可能从parentName里继承的随身携带物品 -->
</inventoryOptions>
</PawnKindDef>
</Defs>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnKindDef ParentName="Milira_PawnBase">
<defName>Milian_Base_baby</defName>
<label>小米莉拉</label>
<combatPower>100</combatPower> <!-- 袭击占用分数 -->
<defaultFactionType>Milira_Faction</defaultFactionType>
<backstoryCategories>
<li>Milira_General</li>
</backstoryCategories>
<techHediffsMoney>0</techHediffsMoney> <!-- Bionic value -->
<apparelMoney>0</apparelMoney> <!-- Apparel value -->
<weaponMoney>0</weaponMoney> <!-- Weapon value -->
<techHediffsTags Inherit="False"> <!-- 用来去除可能从parentName里继承的仿生体tag -->
</techHediffsTags>
<weaponTags Inherit="False"> <!-- 用来去除可能从parentName里继承的武器tag -->
</weaponTags>
<apparelTags Inherit="False"> <!-- 用来去除可能从parentName里继承的服装tag -->
</apparelTags>
<inventoryOptions Inherit="False"> <!-- 用来去除可能从parentName里继承的随身携带物品 -->
</inventoryOptions>
<pawnGroupDevelopmentStage>Baby</pawnGroupDevelopmentStage>
</PawnKindDef>
</Defs>