mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 05:57:14 +08:00
(client) feat:实现技能树界面,实现地图生成器,实现维度指定,实现规则瓦片定义,实现逃跑逻辑,实现消息定义,实现武器动画,实现受击动画 fix: 修复单攻击子弹击中多个目标,修复人物属性计算错误 (#56)
Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com> Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/56
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<EventDef>
|
||||
<defName>MonsterAttack</defName>
|
||||
<label>怪物袭击</label>
|
||||
<description>生成一个怪物袭击事件</description>
|
||||
<workClass>Event_EntityGenerater</workClass>
|
||||
<value>
|
||||
{
|
||||
"EntityDefName":"chicken",
|
||||
"EntityDefTypeName":"MonsterDef",
|
||||
"LocationType":"OffMap"
|
||||
}
|
||||
</value>
|
||||
</EventDef>
|
||||
</Define>
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
</Define>
|
||||
@@ -15,11 +15,18 @@
|
||||
<path>Resources\Item\YellowBullet_down.png</path>
|
||||
</ImageDef>
|
||||
|
||||
<ImageDef>
|
||||
<defName>testGunAttackAnimation</defName>
|
||||
<path>Resources\AttackAnimation\AttackAnimations.png</path>
|
||||
<wCount>10</wCount>
|
||||
<hCount>1</hCount>
|
||||
</ImageDef>
|
||||
|
||||
<AttributesDef>
|
||||
<defName>TestGun</defName>
|
||||
<attack>10</attack>
|
||||
<defense>3</defense>
|
||||
<attackSpeed>3</attackSpeed>
|
||||
<attackSpeed>1</attackSpeed>
|
||||
<attackRange>10</attackRange>
|
||||
<attackTargetCount>1</attackTargetCount>
|
||||
</AttributesDef>
|
||||
@@ -28,20 +35,43 @@
|
||||
<defName>TestGun</defName>
|
||||
<label>测试枪</label>
|
||||
<description>一把测试用的枪</description>
|
||||
<!-- 引用属性定义 -->
|
||||
<attributes>TestGun</attributes>
|
||||
<type>Ranged</type>
|
||||
<FPS>10</FPS>
|
||||
<textures>
|
||||
<li>TestGunItem</li>
|
||||
</textures>
|
||||
<attackAnimation>
|
||||
<li>testGunAttackAnimation_0</li>
|
||||
<li>testGunAttackAnimation_1</li>
|
||||
<li>testGunAttackAnimation_2</li>
|
||||
<li>testGunAttackAnimation_3</li>
|
||||
<li>testGunAttackAnimation_4</li>
|
||||
<li>testGunAttackAnimation_5</li>
|
||||
<li>testGunAttackAnimation_6</li>
|
||||
<li>testGunAttackAnimation_7</li>
|
||||
<li>testGunAttackAnimation_8</li>
|
||||
<li>testGunAttackAnimation_9</li>
|
||||
</attackAnimation>
|
||||
<attackDetectionTime>0.5</attackDetectionTime>
|
||||
<maxStack>1</maxStack>
|
||||
<rarity>Uncommon</rarity>
|
||||
<attackDetectionTime>0.3</attackDetectionTime>
|
||||
<!-- 引用子弹定义 -->
|
||||
<bullet>yellowBullet</bullet>
|
||||
</WeaponDef>
|
||||
|
||||
<BulletDef>
|
||||
<defName>yellowBullet</defName>
|
||||
<label>黄色子弹</label>
|
||||
<description>一颗黄色的子弹</description>
|
||||
<!-- 嵌套定义属性 -->
|
||||
<attributes>
|
||||
<health>1</health>
|
||||
<moveSpeed>20</moveSpeed>
|
||||
</attributes>
|
||||
<!-- 嵌套定义纹理绘制顺序 -->
|
||||
<drawingOrder>
|
||||
<idle_down>
|
||||
<textures>
|
||||
@@ -108,6 +138,11 @@
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
<walk_down>
|
||||
<textures>
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</walk_down>
|
||||
</drawingOrder>
|
||||
</BulletDef>
|
||||
<BulletDef>
|
||||
@@ -122,6 +157,11 @@
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
<walk_down>
|
||||
<textures>
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</walk_down>
|
||||
</drawingOrder>
|
||||
</BulletDef>
|
||||
<BulletDef>
|
||||
@@ -136,6 +176,11 @@
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
<walk_down>
|
||||
<textures>
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</walk_down>
|
||||
</drawingOrder>
|
||||
</BulletDef>
|
||||
<BulletDef>
|
||||
@@ -150,6 +195,11 @@
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
<walk_down>
|
||||
<textures>
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</walk_down>
|
||||
</drawingOrder>
|
||||
</BulletDef>
|
||||
<BulletDef>
|
||||
@@ -164,8 +214,14 @@
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
<walk_down>
|
||||
<textures>
|
||||
<li>GenericBulletTexture</li>
|
||||
</textures>
|
||||
</walk_down>
|
||||
</drawingOrder>
|
||||
</BulletDef>
|
||||
|
||||
<!-- Weapon Definitions for all monsters -->
|
||||
<!-- Mechanical Monsters -->
|
||||
<WeaponDef>
|
||||
|
||||
21
Client/Data/Core/Define/Map/Dimension.xml
Normal file
21
Client/Data/Core/Define/Map/Dimension.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<DimensionDef>
|
||||
<defName>DefaultOutsideDimension</defName>
|
||||
<label>默认外部维度地图</label>
|
||||
<description>默认外部维度地图的描述</description>
|
||||
<mapGenerators>
|
||||
<li>DefaultMapGenerator</li>
|
||||
<li>TreeGenerator</li>
|
||||
</mapGenerators>
|
||||
</DimensionDef>
|
||||
<DimensionDef>
|
||||
<defName>DefaultInsideDimension</defName>
|
||||
<label>默认内部维度地图</label>
|
||||
<description>默认内部维度地图的描述</description>
|
||||
<mapGenerators>
|
||||
<li>DefaultMapGenerator2</li>
|
||||
<li>TreeGenerator</li>
|
||||
</mapGenerators>
|
||||
</DimensionDef>
|
||||
</Define>
|
||||
@@ -1,55 +1,334 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<ImageDef>
|
||||
<defName>GrassDirt</defName>
|
||||
<path>Resources\Map\GrassSoild.png</path>
|
||||
<wCount>4</wCount>
|
||||
<hCount>4</hCount>
|
||||
<defName>tileMap</defName>
|
||||
<path>Resources\Map\tilemap_packed.png</path>
|
||||
<wCount>18</wCount>
|
||||
<hCount>11</hCount>
|
||||
</ImageDef>
|
||||
|
||||
<!-- 定义一个普通的草地瓦片 -->
|
||||
<TileDef>
|
||||
<defName>Grass</defName>
|
||||
<name>Grass</name>
|
||||
<label>草地</label>
|
||||
<description>地图上的基础草地瓦片,构成路边的背景。</description>
|
||||
<collider>None</collider>
|
||||
<texture>tileMap_0</texture>
|
||||
<rules>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>Any</li><li>Any</li>
|
||||
<li>Any</li> <li>Any</li>
|
||||
<li>Any</li><li>Any</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<outputType>Random</outputType>
|
||||
<animationTextures>
|
||||
<li>tileMap_0</li>
|
||||
<li>tileMap_1</li>
|
||||
<li>tileMap_2</li>
|
||||
</animationTextures>
|
||||
</rule>
|
||||
</rules>
|
||||
</TileDef>
|
||||
<!-- 定义水体 -->
|
||||
<TileDef>
|
||||
<defName>Dirt</defName>
|
||||
<name>Dirt</name>
|
||||
<defName>Water</defName>
|
||||
<label>水面</label>
|
||||
<description>地图上的水体瓦片,构成河流和湖泊的背景。</description>
|
||||
<collider>Grid</collider>
|
||||
<texture>tileMap_37</texture>
|
||||
<rules>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_37</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
|
||||
|
||||
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>NotThis</li><li>Any</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_19</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>This</li><li>This</li>
|
||||
<li>NotThis</li> <li>This</li>
|
||||
<li>Any</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_36</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>Any</li><li>NotThis</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_55</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>Any</li>
|
||||
<li>This</li> <li>NotThis</li>
|
||||
<li>This</li><li>This</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_38</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
|
||||
|
||||
|
||||
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>NotThis</li><li>NotThis</li><li>Any</li>
|
||||
<li>NotThis</li> <li>This</li>
|
||||
<li>Any</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_18</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>NotThis</li><li>NotThis</li>
|
||||
<li>This</li> <li>NotThis</li>
|
||||
<li>This</li><li>This</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_20</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>Any</li>
|
||||
<li>This</li> <li>NotThis</li>
|
||||
<li>Any</li><li>NotThis</li><li>NotThis</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_56</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>This</li><li>This</li>
|
||||
<li>NotThis</li> <li>This</li>
|
||||
<li>NotThis</li><li>NotThis</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_54</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
|
||||
|
||||
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>NotThis</li><li>NotThis</li><li>Any</li>
|
||||
<li>NotThis</li> <li>This</li>
|
||||
<li>Any</li><li>This</li><li>NotThis</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_4</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>NotThis</li><li>NotThis</li>
|
||||
<li>This</li> <li>NotThis</li>
|
||||
<li>NotThis</li><li>This</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_5</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>NotThis</li><li>This</li><li>Any</li>
|
||||
<li>This</li> <li>NotThis</li>
|
||||
<li>Any</li><li>NotThis</li><li>NotThis</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_22</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>This</li><li>NotThis</li>
|
||||
<li>NotThis</li> <li>This</li>
|
||||
<li>NotThis</li><li>NotThis</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_21</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
|
||||
|
||||
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>NotThis</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_90</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>NotThis</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_91</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>NotThis</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_92</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>NotThis</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_93</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
|
||||
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>NotThis</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>NotThis</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_74</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>NotThis</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>NotThis</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_72</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>NotThis</li><li>This</li><li>NotThis</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_39</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>NotThis</li><li>This</li><li>NotThis</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>This</li><li>This</li><li>This</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_75</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>NotThis</li><li>Any</li>
|
||||
<li>This</li> <li>This</li>
|
||||
<li>Any</li><li>NotThis</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_73</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>This</li><li>Any</li>
|
||||
<li>NotThis</li> <li>NotThis</li>
|
||||
<li>Any</li><li>This</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<animationTextures>
|
||||
<li>tileMap_57</li>
|
||||
</animationTextures>
|
||||
<outputCollider>Grid</outputCollider>
|
||||
</rule>
|
||||
</rules>
|
||||
</TileDef>
|
||||
|
||||
<TileMappingTableDef>
|
||||
<defName>GrassDirtTable</defName>
|
||||
<Grass_Grass_Grass_Grass value="GrassDirt_6"/>
|
||||
<!-- 2 + (1 * 4) = 6 -->
|
||||
<Dirt_Dirt_Dirt_Grass value="GrassDirt_13"/>
|
||||
<!-- 1 + (3 * 4) = 13 -->
|
||||
<Dirt_Dirt_Grass_Dirt value="GrassDirt_0"/>
|
||||
<!-- 0 + (0 * 4) = 0 -->
|
||||
<Dirt_Grass_Dirt_Dirt value="GrassDirt_8"/>
|
||||
<!-- 0 + (2 * 4) = 8 -->
|
||||
<Grass_Dirt_Dirt_Dirt value="GrassDirt_15"/>
|
||||
<!-- 3 + (3 * 4) = 15 -->
|
||||
<Dirt_Grass_Dirt_Grass value="GrassDirt_1"/>
|
||||
<!-- 1 + (0 * 4) = 1 -->
|
||||
<Grass_Dirt_Grass_Dirt value="GrassDirt_11"/>
|
||||
<!-- 3 + (2 * 4) = 11 -->
|
||||
<Dirt_Dirt_Grass_Grass value="GrassDirt_3"/>
|
||||
<!-- 3 + (0 * 4) = 3 -->
|
||||
<Grass_Grass_Dirt_Dirt value="GrassDirt_9"/>
|
||||
<!-- 1 + (2 * 4) = 9 -->
|
||||
<Dirt_Grass_Grass_Grass value="GrassDirt_5"/>
|
||||
<!-- 1 + (1 * 4) = 5 -->
|
||||
<Grass_Dirt_Grass_Grass value="GrassDirt_2"/>
|
||||
<!-- 2 + (0 * 4) = 2 -->
|
||||
<Grass_Grass_Dirt_Grass value="GrassDirt_10"/>
|
||||
<!-- 2 + (2 * 4) = 10 -->
|
||||
<Grass_Grass_Grass_Dirt value="GrassDirt_7"/>
|
||||
<!-- 3 + (1 * 4) = 7 -->
|
||||
<Dirt_Grass_Grass_Dirt value="GrassDirt_14"/>
|
||||
<!-- 2 + (3 * 4) = 14 -->
|
||||
<Grass_Dirt_Dirt_Grass value="GrassDirt_4"/>
|
||||
<!-- 0 + (1 * 4) = 4 -->
|
||||
<Dirt_Dirt_Dirt_Dirt value="GrassDirt_12"/>
|
||||
<!-- 0 + (3 * 4) = 12 -->
|
||||
</TileMappingTableDef>
|
||||
|
||||
</Define>
|
||||
<TileDef>
|
||||
<defName>Tree</defName>
|
||||
<label>树</label>
|
||||
<description>地图上的基础树木瓦片,构成森林。</description>
|
||||
<collider>Sprite</collider>
|
||||
<texture>tileMap_94</texture>
|
||||
<rules>
|
||||
<rule>
|
||||
<neighborConditions>
|
||||
<li>Any</li><li>Any</li><li>Any</li>
|
||||
<li>Any</li> <li>Any</li>
|
||||
<li>Any</li><li>Any</li><li>Any</li>
|
||||
</neighborConditions>
|
||||
<outputType>Random</outputType>
|
||||
<animationTextures>
|
||||
<li>tileMap_94</li>
|
||||
<li>tileMap_112</li>
|
||||
</animationTextures>
|
||||
<collider>Sprite</collider>
|
||||
</rule>
|
||||
</rules>
|
||||
</TileDef>
|
||||
</Define>
|
||||
|
||||
70
Client/Data/Core/Define/Map/MapGenerator.xml
Normal file
70
Client/Data/Core/Define/Map/MapGenerator.xml
Normal file
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<MapGeneratorDef>
|
||||
<defName>DefaultMapGenerator</defName>
|
||||
<label>默认地图生成器</label>
|
||||
<description>一个简单的默认地图生成器,填充地图为草地</description>
|
||||
<workClass>BasicTerrainMapGenerator</workClass>
|
||||
<value>
|
||||
{
|
||||
"tileDefName":"Water",
|
||||
"elseTileDefName":"Grass",
|
||||
"mapCellSizeX":100,
|
||||
"mapCellSizeY":100,
|
||||
"threshold":0,
|
||||
"Scale":7
|
||||
}
|
||||
</value>
|
||||
</MapGeneratorDef>
|
||||
|
||||
<MapGeneratorDef>
|
||||
<defName>DefaultMapGenerator2</defName>
|
||||
<label>默认地图生成器2</label>
|
||||
<description>一个简单的默认地图生成器2,填充地图为草地</description>
|
||||
<workClass>BasicTerrainMapGenerator</workClass>
|
||||
<value>
|
||||
{
|
||||
"tileDefName":"Water",
|
||||
"elseTileDefName":"Grass",
|
||||
"mapCellSizeX":100,
|
||||
"mapCellSizeY":100,
|
||||
"threshold":0.3,
|
||||
"Scale":2,
|
||||
"offsetX":100,
|
||||
"offsetY":0
|
||||
}
|
||||
</value>
|
||||
</MapGeneratorDef>
|
||||
<!-- <MapGeneratorDef>
|
||||
<defName>WaterMapGenerator</defName>
|
||||
<label>水面地图生成器</label>
|
||||
<description>一个简单的水面地图生成器,填充地图为水面</description>
|
||||
<workClass>BasicTerrainMapGenerator</workClass>
|
||||
<value>
|
||||
{
|
||||
"tileDefName":"Water",
|
||||
"mapCellSizeX":100,
|
||||
"mapCellSizeY":100,
|
||||
"threshold":0,
|
||||
"Scale":10
|
||||
}
|
||||
</value>
|
||||
</MapGeneratorDef> -->
|
||||
<MapGeneratorDef>
|
||||
<defName>TreeGenerator</defName>
|
||||
<label>树木地图生成器</label>
|
||||
<description>一个简单的树木地图生成器,填充地图为树木</description>
|
||||
<workClass>PlantMapGenerator</workClass>
|
||||
<value>
|
||||
{
|
||||
"tileDefName":"Tree",
|
||||
"mapCellSizeX":100,
|
||||
"mapCellSizeY":100,
|
||||
"requiredBaseTileDefName":"Grass",
|
||||
"density":0.2,
|
||||
"threshold":0,
|
||||
"Scale":5
|
||||
}
|
||||
</value>
|
||||
</MapGeneratorDef>
|
||||
</Define>
|
||||
@@ -1,71 +1,87 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<!-- 贴图部分 -->
|
||||
<!-- 女仆行走贴图 -->
|
||||
<ImageDef>
|
||||
<defName>testPawnAnimation</defName>
|
||||
<path>res:Character/Test/Body/idle_down</path>
|
||||
<wCount>5</wCount>
|
||||
<hCount>1</hCount>
|
||||
<defName>Character_Maid_Walk</defName>
|
||||
<path>Resources\Character\女仆行走.png</path>
|
||||
<wCount>12</wCount>
|
||||
<hCount>8</hCount>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>testPawn</defName>
|
||||
<path>Resources\Character\test.png</path>
|
||||
<wCount>4</wCount>
|
||||
<hCount>4</hCount>
|
||||
</ImageDef>
|
||||
|
||||
<!-- 人物定义 -->
|
||||
<!-- 玩家角色的详细定义 -->
|
||||
<CharacterDef>
|
||||
<defName>testPawn</defName>
|
||||
<label>测试小人</label>
|
||||
<description>用于测试功能的角色</description>
|
||||
<defName>maid</defName>
|
||||
<label>女仆</label>
|
||||
<description>一个可爱的女仆角色</description>
|
||||
|
||||
<!-- 角色基础属性 -->
|
||||
<attributes>
|
||||
<health>100</health>
|
||||
<moveSpeed>2</moveSpeed>
|
||||
<!-- 更多 attributesDef 中的属性... -->
|
||||
</attributes>
|
||||
<affiliation>player</affiliation>
|
||||
|
||||
<!-- 角色所属阵营 -->
|
||||
<affiliation>player</affiliation> <!-- 引用 AffiliationDef 的 defName -->
|
||||
|
||||
<!-- 角色不同状态和朝向的绘制指令 -->
|
||||
<drawingOrder>
|
||||
<!-- Idle states -->
|
||||
<idle_up>
|
||||
<textures>
|
||||
<li>testPawn_0</li>
|
||||
<li>Character_Maid_Walk_37</li>
|
||||
</textures>
|
||||
</idle_up>
|
||||
<idle_down>
|
||||
<textures>
|
||||
<li>testPawn_4</li>
|
||||
<li>Character_Maid_Walk_1</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
<idle_left>
|
||||
<textures>
|
||||
<li>testPawn_8</li>
|
||||
<li>Character_Maid_Walk_13</li>
|
||||
</textures>
|
||||
</idle_left>
|
||||
<idle_right>
|
||||
<textures>
|
||||
<li>testPawn_12</li>
|
||||
<li>Character_Maid_Walk_25</li>
|
||||
</textures>
|
||||
</idle_right>
|
||||
|
||||
<!-- Walk states -->
|
||||
<walk_up>
|
||||
<FPS>5.0</FPS>
|
||||
<textures>
|
||||
<li>testPawn_1</li>
|
||||
<li>Character_Maid_Walk_36</li>
|
||||
<li>Character_Maid_Walk_37</li>
|
||||
<li>Character_Maid_Walk_38</li>
|
||||
<li>Character_Maid_Walk_37</li>
|
||||
</textures>
|
||||
</walk_up>
|
||||
<walk_down>
|
||||
<FPS>5.0</FPS>
|
||||
<textures>
|
||||
<li>testPawn_5</li>
|
||||
<li>Character_Maid_Walk_0</li>
|
||||
<li>Character_Maid_Walk_1</li>
|
||||
<li>Character_Maid_Walk_2</li>
|
||||
<li>Character_Maid_Walk_1</li>
|
||||
</textures>
|
||||
</walk_down>
|
||||
<walk_left>
|
||||
<FPS>5.0</FPS>
|
||||
<textures>
|
||||
<li>testPawn_9</li>
|
||||
<li>Character_Maid_Walk_12</li>
|
||||
<li>Character_Maid_Walk_13</li>
|
||||
<li>Character_Maid_Walk_14</li>
|
||||
<li>Character_Maid_Walk_13</li>
|
||||
</textures>
|
||||
</walk_left>
|
||||
<walk_right>
|
||||
<FPS>5.0</FPS>
|
||||
<textures>
|
||||
<li>testPawn_13</li>
|
||||
<li>Character_Maid_Walk_24</li>
|
||||
<li>Character_Maid_Walk_25</li>
|
||||
<li>Character_Maid_Walk_26</li>
|
||||
<li>Character_Maid_Walk_25</li>
|
||||
</textures>
|
||||
</walk_right>
|
||||
|
||||
@@ -113,109 +129,37 @@
|
||||
</textures>
|
||||
</rangedAttack_right>
|
||||
</drawingOrder>
|
||||
|
||||
<!-- 角色的AI行为树 -->
|
||||
<behaviorTree>
|
||||
<!-- 行为树的根节点 -->
|
||||
<Node className="ThinkNode_Conditional" value="EntityHealth(50)">
|
||||
<!-- 如果HP低于50,尝试攻击 -->
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
<!-- 否则随机游荡 -->
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
<!-- 如果上方条件不满足,则默认随机游荡 -->
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
</CharacterDef>
|
||||
|
||||
<CharacterDef>
|
||||
<defName>HighHP</defName>
|
||||
<label>耐肘王</label>
|
||||
<description>超高的血条,有了耐肘王,一个人就有一百个人的力量了!</description>
|
||||
<attributes>
|
||||
<health>10000</health>
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<affiliation>player</affiliation>
|
||||
<drawingOrder>
|
||||
<idle_down name="Body" FPS="4">
|
||||
<textures>
|
||||
<li>testPawnAnimation_0</li>
|
||||
<li>testPawnAnimation_1</li>
|
||||
<li>testPawnAnimation_2</li>
|
||||
<li>testPawnAnimation_3</li>
|
||||
<li>testPawnAnimation_4</li>
|
||||
<li>testPawnAnimation_3</li>
|
||||
<li>testPawnAnimation_2</li>
|
||||
<li>testPawnAnimation_1</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
</drawingOrder>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="EntityHealth(50)">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
|
||||
<!-- 死亡动画 (示例中未提供,但结构在此) -->
|
||||
<!-- <deathAnimation>
|
||||
<nodeName>DeathEffect</nodeName>
|
||||
<FPS>15.0</FPS>
|
||||
<textures>
|
||||
<li>DeathAnim_Frame1</li>
|
||||
<li>DeathAnim_Frame2</li>
|
||||
</textures>
|
||||
</deathAnimation> -->
|
||||
|
||||
<!-- 死亡时触发的事件 (示例中未提供,但结构在此) -->
|
||||
<!-- <deathEffects>
|
||||
<li>Event_Explosion</li>
|
||||
<li>Event_DropLoot</li>
|
||||
</deathEffects> -->
|
||||
|
||||
</CharacterDef>
|
||||
|
||||
<CharacterDef>
|
||||
<defName>HighSpeed</defName>
|
||||
<label>跑得快</label>
|
||||
<description>超高速度,只要跑的够快,摄像机也追不上</description>
|
||||
<attributes>
|
||||
<health>100</health>
|
||||
<moveSpeed>20</moveSpeed>
|
||||
</attributes>
|
||||
<affiliation>player</affiliation>
|
||||
<drawingOrder>
|
||||
<idle_down name="Body" FPS="4">
|
||||
<textures>
|
||||
<li>testPawnAnimation_0</li>
|
||||
<li>testPawnAnimation_1</li>
|
||||
<li>testPawnAnimation_2</li>
|
||||
<li>testPawnAnimation_3</li>
|
||||
<li>testPawnAnimation_4</li>
|
||||
<li>testPawnAnimation_3</li>
|
||||
<li>testPawnAnimation_2</li>
|
||||
<li>testPawnAnimation_1</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
</drawingOrder>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="EntityHealth(50)">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
</CharacterDef>
|
||||
|
||||
<CharacterDef>
|
||||
<defName>powerMan</defName>
|
||||
<label>超人</label>
|
||||
<description>跑到又快又难肘</description>
|
||||
<attributes>
|
||||
<health>10000</health>
|
||||
<moveSpeed>20</moveSpeed>
|
||||
</attributes>
|
||||
<affiliation>player</affiliation>
|
||||
<drawingOrder>
|
||||
<idle_down name="Body" FPS="4">
|
||||
<textures>
|
||||
<li>testPawnAnimation_0</li>
|
||||
<li>testPawnAnimation_1</li>
|
||||
<li>testPawnAnimation_2</li>
|
||||
<li>testPawnAnimation_3</li>
|
||||
<li>testPawnAnimation_4</li>
|
||||
<li>testPawnAnimation_3</li>
|
||||
<li>testPawnAnimation_2</li>
|
||||
<li>testPawnAnimation_1</li>
|
||||
</textures>
|
||||
</idle_down>
|
||||
</drawingOrder>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="EntityHealth(50)">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
</CharacterDef>
|
||||
|
||||
</Define>
|
||||
@@ -1,20 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<BehaviorTreeDef>
|
||||
<defName>BasicMonsterBehavior</defName>
|
||||
<Node className="ThinkNode_Selector">
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="ThinkNode_Conditional" value="HasWeapon()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_FleeJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
</BehaviorTreeDef>
|
||||
|
||||
<MonsterDef>
|
||||
<defName>chicken</defName>
|
||||
<label>不大聪明</label>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<moveSpeed>1</moveSpeed>
|
||||
<health>123</health>
|
||||
<health>2</health> <!-- 123 -> approx 2 (round down) -->
|
||||
</attributes>
|
||||
<weapon>Claw</weapon>
|
||||
<drawingOrder>
|
||||
@@ -36,17 +42,11 @@
|
||||
<MonsterDef>
|
||||
<defName>big</defName>
|
||||
<label>大聪明</label>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="EntityHealth(50)">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<moveSpeed>1</moveSpeed>
|
||||
<health>123</health>
|
||||
<health>2</health> <!-- 123 -> approx 2 (round down) -->
|
||||
</attributes>
|
||||
<weapon>TestGun</weapon>
|
||||
<drawingOrder>
|
||||
@@ -69,16 +69,11 @@
|
||||
<defName>MonsterA1</defName>
|
||||
<label>A怪物1 (普通)</label>
|
||||
<description>机械类型怪物,拥有远程攻击能力。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>4600</health>
|
||||
<defense>100</defense>
|
||||
<health>60</health> <!-- 4600 -> 60 (scaled) -->
|
||||
<defense>10</defense> <!-- 100 -> 10 -->
|
||||
<moveSpeed>2.5</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterA1</weapon>
|
||||
@@ -104,22 +99,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterA2</defName>
|
||||
<label>A怪物2 (普通)</label>
|
||||
<description>更快的机械远程怪物。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>6000</health>
|
||||
<defense>10</defense>
|
||||
<health>80</health> <!-- 6000 -> 80 (scaled) -->
|
||||
<defense>1</defense> <!-- 10 -> 1 -->
|
||||
<moveSpeed>4</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterA2</weapon>
|
||||
@@ -145,22 +134,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterB1</defName>
|
||||
<label>B怪物1 (普通)</label>
|
||||
<description>防御较高的机械近战怪物。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>5000</health>
|
||||
<defense>400</defense>
|
||||
<health>70</health> <!-- 5000 -> 70 (scaled) -->
|
||||
<defense>40</defense> <!-- 400 -> 40 -->
|
||||
<moveSpeed>1</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterB1</weapon>
|
||||
@@ -186,22 +169,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterB2</defName>
|
||||
<label>B怪物2 (普通)</label>
|
||||
<description>高血高防的机械近战怪物。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>8000</health>
|
||||
<defense>500</defense>
|
||||
<health>100</health> <!-- 8000 -> 100 (scaled) -->
|
||||
<defense>50</defense> <!-- 500 -> 50 -->
|
||||
<moveSpeed>1.5</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterB2</weapon>
|
||||
@@ -227,22 +204,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterC1</defName>
|
||||
<label>C怪物1 (精英)</label>
|
||||
<description>血量和防御极高的精英机械近战怪物。击杀后掉落10能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>22000</health>
|
||||
<defense>800</defense>
|
||||
<health>300</health> <!-- 22000 -> 300 (scaled) -->
|
||||
<defense>80</defense> <!-- 800 -> 80 -->
|
||||
<moveSpeed>1</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterC1</weapon>
|
||||
@@ -268,22 +239,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>10</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterC2</defName>
|
||||
<label>C怪物2 (精英)</label>
|
||||
<description>血量极高的精英机械近战怪物,攻击力强大。击杀后掉落10能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>22000</health>
|
||||
<defense>450</defense>
|
||||
<health>300</health> <!-- 22000 -> 300 (scaled) -->
|
||||
<defense>45</defense> <!-- 450 -> 45 -->
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterC2</weapon>
|
||||
@@ -309,23 +274,17 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>10</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<!-- Hybrid Monsters -->
|
||||
<MonsterDef>
|
||||
<defName>MonsterD1</defName>
|
||||
<label>D怪物1 (普通)</label>
|
||||
<description>混合类型怪物,拥有远程攻击能力。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>6400</health>
|
||||
<defense>50</defense>
|
||||
<health>85</health> <!-- 6400 -> 85 (scaled) -->
|
||||
<defense>5</defense> <!-- 50 -> 5 -->
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterD1</weapon>
|
||||
@@ -351,22 +310,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterD2</defName>
|
||||
<label>D怪物2 (普通)</label>
|
||||
<description>混合类型怪物,高速远程攻击。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>7200</health>
|
||||
<defense>0</defense>
|
||||
<health>95</health> <!-- 7200 -> 95 (scaled) -->
|
||||
<defense>0</defense> <!-- 0 -> 0 (no change) -->
|
||||
<moveSpeed>3</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterD2</weapon>
|
||||
@@ -392,22 +345,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterE1</defName>
|
||||
<label>E怪物1 (普通)</label>
|
||||
<description>混合类型近战怪物,高速。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>6550</health>
|
||||
<defense>240</defense>
|
||||
<health>90</health> <!-- 6550 -> 90 (scaled) -->
|
||||
<defense>24</defense> <!-- 240 -> 24 -->
|
||||
<moveSpeed>3</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterE1</weapon>
|
||||
@@ -433,22 +380,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterE2</defName>
|
||||
<label>E怪物2 (普通)</label>
|
||||
<description>更强大的混合类型近战怪物。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>9120</health>
|
||||
<defense>320</defense>
|
||||
<health>120</health> <!-- 9120 -> 120 (scaled) -->
|
||||
<defense>32</defense> <!-- 320 -> 32 -->
|
||||
<moveSpeed>3</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterE2</weapon>
|
||||
@@ -474,22 +415,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterF1</defName>
|
||||
<label>F怪物1 (关卡11BOSS)</label>
|
||||
<description>关卡BOSS,血量和防御极高,近战爆发强。击杀后掉落50能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>42000</health>
|
||||
<defense>770</defense>
|
||||
<health>420</health> <!-- 42000 -> 420 (scaled) -->
|
||||
<defense>70</defense> <!-- 770 -> 70 (scaled) -->
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterF1</weapon>
|
||||
@@ -515,22 +450,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>50</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MonsterF2</defName>
|
||||
<label>F怪物2 (关卡11BOSS)</label>
|
||||
<description>终极关卡BOSS,超高血量和攻击力。击杀后掉落50能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>48000</health>
|
||||
<defense>560</defense>
|
||||
<health>480</health> <!-- 48000 -> 480 (scaled) -->
|
||||
<defense>50</defense> <!-- 560 -> 50 (scaled) -->
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MonsterF2</weapon>
|
||||
@@ -556,23 +485,17 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>50</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<!-- Biological Monsters -->
|
||||
<MonsterDef>
|
||||
<defName>MaskMonster1</defName>
|
||||
<label>面具1/2/3 (普通)</label>
|
||||
<description>快速生物近战怪物。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>4800</health>
|
||||
<defense>66</defense>
|
||||
<health>60</health> <!-- 4800 -> 60 (scaled) -->
|
||||
<defense>7</defense> <!-- 66 -> 7 (scaled) -->
|
||||
<moveSpeed>8</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MaskMonster</weapon>
|
||||
@@ -598,22 +521,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>MaskMonster4</defName>
|
||||
<label>面具4/5/6 (精英)</label>
|
||||
<description>更强大的快速精英生物近战怪物。击杀后掉落10能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>9600</health>
|
||||
<defense>132</defense>
|
||||
<health>120</health> <!-- 9600 -> 120 (scaled) -->
|
||||
<defense>13</defense> <!-- 132 -> 13 (scaled) -->
|
||||
<moveSpeed>8</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_MaskMonsterElite</weapon>
|
||||
@@ -639,22 +556,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>10</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>HologramMonster1</defName>
|
||||
<label>全息1/2 (普通)</label>
|
||||
<description>特殊的生物近战怪物,无移动速度。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>6666</health>
|
||||
<defense>-66</defense>
|
||||
<health>90</health> <!-- 6666 -> 90 (scaled) -->
|
||||
<defense>-7</defense> <!-- -66 -> -7 (scaled) -->
|
||||
<moveSpeed>0</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_HologramMonster</weapon>
|
||||
@@ -680,22 +591,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>HologramMonster3</defName>
|
||||
<label>全息3/4 (精英)</label>
|
||||
<description>更强大的精英生物近战怪物,无移动速度。击杀后掉落10能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>16666</health>
|
||||
<defense>-166</defense>
|
||||
<health>200</health> <!-- 16666 -> 200 (scaled) -->
|
||||
<defense>-17</defense> <!-- -166 -> -17 (scaled) -->
|
||||
<moveSpeed>0</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_HologramMonsterElite</weapon>
|
||||
@@ -721,22 +626,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>10</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>SnakeMonster1</defName>
|
||||
<label>蛇1/2/3 (普通)</label>
|
||||
<description>生物远程怪物。击杀后掉落5能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>5630</health>
|
||||
<defense>78</defense>
|
||||
<health>75</health> <!-- 5630 -> 75 (scaled) -->
|
||||
<defense>8</defense> <!-- 78 -> 8 (scaled) -->
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_SnakeMonster</weapon>
|
||||
@@ -762,22 +661,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>5</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>SnakeMonster4</defName>
|
||||
<label>蛇4/5/6 (精英)</label>
|
||||
<description>更强大的精英生物远程怪物。击杀后掉落10能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>11260</health>
|
||||
<defense>156</defense>
|
||||
<health>150</health> <!-- 11260 -> 150 (scaled) -->
|
||||
<defense>16</defense> <!-- 156 -> 16 (scaled) -->
|
||||
<moveSpeed>2</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_SnakeMonsterElite</weapon>
|
||||
@@ -803,22 +696,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>10</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>RatMonster1</defName>
|
||||
<label>鼠鼠1 (普通)</label>
|
||||
<description>弱小的生物近战怪物,每11秒移动一次。击杀后掉落1能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>111</health>
|
||||
<defense>1</defense>
|
||||
<health>3</health> <!-- 111 -> 3 (scaled) -->
|
||||
<defense>0</defense> <!-- 1 -> 0 (scaled) -->
|
||||
<moveSpeed>11</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_RatMonster</weapon>
|
||||
@@ -844,22 +731,16 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>1</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
<MonsterDef>
|
||||
<defName>RatMonster2</defName>
|
||||
<label>鼠鼠2 (精英)</label>
|
||||
<description>更强大的精英生物近战怪物,每22秒移动一次。击杀后掉落2能量。</description>
|
||||
<behaviorTree>
|
||||
<Node className="ThinkNode_Conditional" value="HasEnemyInSight()">
|
||||
<Node className="JobGiver_AttackJob"/>
|
||||
</Node>
|
||||
<Node className="JobGiver_RandomWander"/>
|
||||
</behaviorTree>
|
||||
<behaviorTree>BasicMonsterBehavior</behaviorTree>
|
||||
<affiliation>monster</affiliation>
|
||||
<attributes>
|
||||
<health>222</health>
|
||||
<defense>2</defense>
|
||||
<health>5</health> <!-- 222 -> 5 (scaled) -->
|
||||
<defense>0</defense> <!-- 2 -> 0 (scaled) -->
|
||||
<moveSpeed>22</moveSpeed>
|
||||
</attributes>
|
||||
<weapon>Weapon_RatMonsterElite</weapon>
|
||||
@@ -885,7 +766,6 @@
|
||||
</textures>
|
||||
</rangedAttack_down>
|
||||
</drawingOrder>
|
||||
<tag_dropEnergyOnDefeat>2</tag_dropEnergyOnDefeat>
|
||||
</MonsterDef>
|
||||
|
||||
</Define>
|
||||
</Define>
|
||||
|
||||
@@ -6,36 +6,42 @@
|
||||
<path>res:Texture/Monster/机械/A怪物1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>MechanicalMonsterA2Texture</defName>
|
||||
<path>res:Texture/Monster/机械/A怪物2</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>MechanicalMonsterB1Texture</defName>
|
||||
<path>res:Texture/Monster/机械/B怪物1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>MechanicalMonsterB2Texture</defName>
|
||||
<path>res:Texture/Monster/机械/B怪物2</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>MechanicalMonsterC1Texture</defName>
|
||||
<path>res:Texture/Monster/机械/C怪物1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>MechanicalMonsterC2Texture</defName>
|
||||
<path>res:Texture/Monster/机械/C怪物2</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
|
||||
<!-- ImageDefs for Hybrid Monsters -->
|
||||
@@ -44,36 +50,42 @@
|
||||
<path>res:Texture/Monster/混合/D怪物1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>HybridMonsterD2Texture</defName>
|
||||
<path>res:Texture/Monster/混合/D怪物2</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>HybridMonsterE1Texture</defName>
|
||||
<path>res:Texture/Monster/混合/E怪物1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>HybridMonsterE2Texture</defName>
|
||||
<path>res:Texture/Monster/混合/E怪物2</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>HybridMonsterF1Texture</defName>
|
||||
<path>res:Texture/Monster/混合/F怪物1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<ImageDef>
|
||||
<defName>HybridMonsterF2Texture</defName>
|
||||
<path>res:Texture/Monster/混合/F怪物2</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
|
||||
<!-- ImageDefs for Biological Monsters -->
|
||||
@@ -82,6 +94,7 @@
|
||||
<path>res:Texture/Monster/生物/面具1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<!-- <ImageDef>
|
||||
<defName>BiologicalMaskMonster4Texture</defName>
|
||||
@@ -94,6 +107,7 @@
|
||||
<path>res:Texture/Monster/生物/全息1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<!-- <ImageDef>
|
||||
<defName>BiologicalHologramMonster3Texture</defName>
|
||||
@@ -106,6 +120,7 @@
|
||||
<path>res:Texture/Monster/生物/蛇1</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
<!-- <ImageDef>
|
||||
<defName>BiologicalSnakeMonster4Texture</defName>
|
||||
@@ -131,6 +146,7 @@
|
||||
<path>res:Texture/Bullet/GenericBullet</path>
|
||||
<wCount>1</wCount>
|
||||
<hCount>1</hCount>
|
||||
<pixelsPerUnit>1500</pixelsPerUnit>
|
||||
</ImageDef>
|
||||
|
||||
</Define>
|
||||
</Define>
|
||||
|
||||
241
Client/Data/Core/Define/SkillTree.xml
Normal file
241
Client/Data/Core/Define/SkillTree.xml
Normal file
@@ -0,0 +1,241 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Define>
|
||||
<!-- 仅为符合示例结构,实际测试UI时这些引用可以省略,因为本例的SkillTreeDef并未引用它们 -->
|
||||
<AffiliationDef>
|
||||
<defName>TestFaction</defName>
|
||||
<label>测试派系</label>
|
||||
</AffiliationDef>
|
||||
<WeaponDef>
|
||||
<defName>TestWeapon</defName>
|
||||
<label>测试武器</label>
|
||||
</WeaponDef>
|
||||
<HediffDef>
|
||||
<defName>TestHediff</defName>
|
||||
<label>测试增益</label>
|
||||
</HediffDef>
|
||||
|
||||
<!-- 技能树节点定义,带有前置条件,用于UI结构和链接测试 -->
|
||||
|
||||
<!-- 基础节点:一个起点 -->
|
||||
<SkillTreeDef>
|
||||
<defName>Root_Skill</defName>
|
||||
<label>初始技能</label>
|
||||
<description>所有路径的起点之一。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>0</cost>
|
||||
<faction>TestFaction</faction>
|
||||
</SkillTreeDef>
|
||||
|
||||
<!-- 线性发展路径 A -->
|
||||
<SkillTreeDef>
|
||||
<defName>LinearA_Node1</defName>
|
||||
<label>线性A-1</label>
|
||||
<description>线性路径A的第一个节点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>5</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>Root_Skill</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>LinearA_Node2</defName>
|
||||
<label>线性A-2</label>
|
||||
<description>线性路径A的中间节点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>10</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>LinearA_Node1</li>
|
||||
</prerequisites>
|
||||
<!-- 不指定位置,测试自动布局在下方 -->
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>LinearA_Node3</defName>
|
||||
<label>线性A-3</label>
|
||||
<description>线性路径A的终点,可作为其他路径的前置。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>15</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>LinearA_Node2</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<!-- 分支与汇合路径 B -->
|
||||
<SkillTreeDef>
|
||||
<defName>BranchB_Root</defName>
|
||||
<label>分支B-根</label>
|
||||
<description>分支路径B的起始节点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>8</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>Root_Skill</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>BranchB_Left</defName>
|
||||
<label>分支B-左</label>
|
||||
<description>向左分支。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>12</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>BranchB_Root</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>BranchB_Right</defName>
|
||||
<label>分支B-右</label>
|
||||
<description>向右分支。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>12</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>BranchB_Root</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>MergeB_Output</defName>
|
||||
<label>汇合B-输出</label>
|
||||
<description>分支B汇合后的节点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>20</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>BranchB_Left</li>
|
||||
<li>BranchB_Right</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<!-- 复杂多层网络结构 C:结合自动与手动布局 -->
|
||||
<SkillTreeDef>
|
||||
<defName>ComplexC_Start</defName>
|
||||
<label>复杂C-起点</label>
|
||||
<description>复杂结构起点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>10</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>BranchB_Left</li> <!-- 从分支B的左侧分支连接过来 -->
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>ComplexC_Branch1</defName>
|
||||
<label>复杂C-分支1</label>
|
||||
<description>复杂结构分支1。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>15</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>ComplexC_Start</li>
|
||||
</prerequisites>
|
||||
<!-- 不指定位置,让系统自动布局 -->
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>ComplexC_Branch2</defName>
|
||||
<label>复杂C-分支2</label>
|
||||
<description>复杂结构分支2。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>15</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>ComplexC_Start</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>ComplexC_LinearAfterBranch1</defName>
|
||||
<label>复杂C-分支1后继</label>
|
||||
<description>分支1的后继节点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>20</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>ComplexC_Branch1</li>
|
||||
</prerequisites>
|
||||
<!-- 不指定位置 -->
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>ComplexC_MergePoint</defName>
|
||||
<label>复杂C-汇合点</label>
|
||||
<description>汇合点,需要分支1后继和分支2才能解锁。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>25</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>ComplexC_LinearAfterBranch1</li>
|
||||
<li>ComplexC_Branch2</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<!-- 跨分支汇合 G:从之前两个独立路径汇合 -->
|
||||
<SkillTreeDef>
|
||||
<defName>GlobalMerge_Ultimate</defName>
|
||||
<label>终极技能</label>
|
||||
<description>需要线性路径A终点和分支B汇合点才能解锁的终极技能。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>50</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>LinearA_Node3</li>
|
||||
<li>MergeB_Output</li>
|
||||
</prerequisites>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>GlobalMerge_Finale</defName>
|
||||
<label>大结局</label>
|
||||
<description>需要所有主要复杂分支都解锁才能获得的技能。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>100</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>GlobalMerge_Ultimate</li>
|
||||
<li>ComplexC_MergePoint</li>
|
||||
</prerequisites>
|
||||
<!-- 不指定位置,让UI自动布局在下方 -->
|
||||
</SkillTreeDef>
|
||||
|
||||
<!-- 孤立节点:确保UI能显示未连接的节点 -->
|
||||
<SkillTreeDef>
|
||||
<defName>Isolated_Discovery</defName>
|
||||
<label>孤立发现</label>
|
||||
<description>一个独立存在,不连接任何其他节点的技能。可能通过特殊事件解锁。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>30</cost>
|
||||
<faction>TestFaction</faction>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>AnotherIsolated_Path</defName>
|
||||
<label>另一条孤立路径</label>
|
||||
<description>另一条完全独立的路径起始点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>10</cost>
|
||||
<faction>TestFaction</faction>
|
||||
</SkillTreeDef>
|
||||
|
||||
<SkillTreeDef>
|
||||
<defName>AnotherIsolated_Node2</defName>
|
||||
<label>孤立路径2</label>
|
||||
<description>孤立路径的第二个节点。</description>
|
||||
<tag>test</tag> <!-- 已修改 -->
|
||||
<cost>20</cost>
|
||||
<faction>TestFaction</faction>
|
||||
<prerequisites>
|
||||
<li>AnotherIsolated_Path</li>
|
||||
</prerequisites>
|
||||
<!-- 不指定位置,让系统自动布局 -->
|
||||
</SkillTreeDef>
|
||||
|
||||
</Define>
|
||||
Reference in New Issue
Block a user