diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset index d34b4199..c58264ec 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset @@ -12,4 +12,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d4cac7ba486f106409799af2bd4b4fc8, type: 3} m_Name: cardDeckList m_EditorClassIdentifier: - cardDeckList: 1327000014270000172700001c2700001e270000162700001a2700001b2700001d2700001f27000020270000222700002327000024270000252700002627000027270000292700002a2700002c27000011270000282700002d270000 + cardDeckList: 1327000014270000172700001c2700001e270000162700001a2700001b2700001d2700001f27000020270000222700002327000024270000252700002627000027270000292700002a2700002c27000011270000282700002d270000122700002b270000182700002127000015270000152700002e270000 diff --git a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity index c27781ee..5807091c 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity +++ b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity @@ -12047,7 +12047,15 @@ MonoBehaviour: generatePoint: {fileID: 514899946} lineOffSet: {x: 1, y: 0, z: 0} columnOffSet: {x: 0, y: 0, z: 0.865} - enemyGenerateDataList: [] + enemyGenerateDataList: + - enemyPrefab: {fileID: 650302351288945714, guid: 7e3e5773e30caab47b324c8549d3aea1, + type: 3} + locationX: 4 + locationY: 4 + - enemyPrefab: {fileID: 650302351288945714, guid: 7e3e5773e30caab47b324c8549d3aea1, + type: 3} + locationX: 4 + locationY: 5 --- !u!4 &1802141879 Transform: m_ObjectHideFlags: 0 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs index 0bb975b5..2e3ed4a3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs @@ -109,7 +109,15 @@ public class CardEntity : MonoBehaviour public void createCardCost() { - cost.text = cardOriginalData.Cost.ToString(); + if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost)) + { + cost.text = "X"; + } + else + { + cost.text = cardOriginalData.Cost.ToString(); + } + } //获取卡牌描述 public void createCardDescription() @@ -164,9 +172,18 @@ public class CardEntity : MonoBehaviour case CardFunction.enhanceShield: sb.Append("获得" + kvp.Value + "层坚固;"); break; + case CardFunction.immunity: + sb.Append("获得" + kvp.Value + "层魔抗;"); + break; case CardFunction.extraDrawCardsNum: sb.Append("下回合多抽" + kvp.Value + "张牌;"); break; + case CardFunction.teleport: + sb.Append("瞬移到目标格子;"); + break; + case CardFunction.clearAllAbnormalConditons: + sb.Append("清除所有异常状态;"); + break; case CardFunction.firm: sb.Append("获得强固;"); break; @@ -185,6 +202,35 @@ public class CardEntity : MonoBehaviour case CardFunction.dyeing: sb.Append("染色;"); break; + case CardFunction.consumePlayerNodesForHealth: + sb.Append("消耗范围内的友方格子,恢复消耗数量的血量;"); + break; + case CardFunction.costStep: + sb.Append("消耗"+ kvp.Value+ "点移动力;"); + break; + case CardFunction.nextTurnExtraOneCost: + sb.Append("下回合额外回复一点能量;"); + break; + case CardFunction.fireShield: + sb.Append("获得" + kvp.Value + "层火盾;"); + break; + case CardFunction.banStep: + sb.Append("施加" + kvp.Value + "层缠绕;"); + break; + case CardFunction.step: + if (int.Parse(kvp.Value)>0) + { + sb.Append("获得" + kvp.Value + "点移动力;"); + } + else + { + sb.Append("失去" + kvp.Value + "点移动力;"); + } + break; + case CardFunction.dyeingAround: + sb.Append("对目标周围染色;"); + break; + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs index bc60ddc2..7d9e9053 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs @@ -31,6 +31,10 @@ public class CardOriginalData : System.Object private string advantageDescription; + private int pierceNum; + + private int advPierceNum; + public int CardId { get { return cardId; } @@ -110,4 +114,15 @@ public class CardOriginalData : System.Object set { advantageDescription = value; } } + public int PierceNum + { + get { return pierceNum; } + set { pierceNum = value; } + } + + public int AdvPierceNum + { + get { return advPierceNum; } + set { advPierceNum = value; } + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs index 1d71be93..f8b13943 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs @@ -134,6 +134,8 @@ public class CardOriginalDataList : Singleton cardOriginalData.CarType = int.Parse(values[11]); cardOriginalData.AdvantageDescription = values[12]; cardOriginalData.ImgPath = values[13]; + cardOriginalData.PierceNum = int.Parse(values[14]); + cardOriginalData.AdvPierceNum = int.Parse(values[15]); getDictionaryFromString(values, cardOriginalData); return cardOriginalData; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/AshBeetle.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/AshBeetle.cs index 3063013f..178522b4 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/AshBeetle.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/AshBeetle.cs @@ -179,6 +179,8 @@ public class AshBeetle : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlastFistMushroom.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlastFistMushroom.cs index 973848da..e2510125 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlastFistMushroom.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlastFistMushroom.cs @@ -188,6 +188,8 @@ public class BlastFistMushroom : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/CorrosiveSludge.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/CorrosiveSludge.cs index e85fc886..14d51277 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/CorrosiveSludge.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/CorrosiveSludge.cs @@ -210,6 +210,8 @@ public class CorrosiveSludge : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/DrowsyShroom.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/DrowsyShroom.cs index f9888235..3243fd44 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/DrowsyShroom.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/DrowsyShroom.cs @@ -196,6 +196,8 @@ public class DrowsyShroom : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EmberWraith.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EmberWraith.cs index 9dfd3e97..b1b93ecd 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EmberWraith.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EmberWraith.cs @@ -215,6 +215,8 @@ public class EmberWraith : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs index 931284f1..072355cf 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs @@ -791,6 +791,15 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver EnemyState.abnormalCondition.Remove(AbnormalCondition.immunity); } } + if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.immunity) && !AbnormalCondition.playUndeterminedBuffList.Contains(condition)&&value<0) + { + isImmunityDispose = true; + EnemyState.abnormalCondition[AbnormalCondition.immunity].value -= 1; + if (EnemyState.abnormalCondition[AbnormalCondition.immunity].value <= 0) + { + EnemyState.abnormalCondition.Remove(AbnormalCondition.immunity); + } + } return isImmunityDispose; } @@ -1168,7 +1177,6 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver //闪位实现 public void FlashPointRealize() { - Debug.Log("654654564"); HashSet targetNodeList= new HashSet(); targetNodeList.Add(GameManager.Instance.X[positionX].Y[positionY]); getNodeTools.getCircleNodeForEnemy(targetNodeList,1); @@ -1222,6 +1230,20 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver } } + public void bleedRealize(MapUnity node) + { + if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed)) + { + sufferDamage(2, false); + EnemyState.abnormalCondition[AbnormalCondition.bleed].value -= 1; + if (EnemyState.abnormalCondition[AbnormalCondition.bleed].value <= 0) + { + EnemyState.abnormalCondition.Remove(AbnormalCondition.bleed); + } + } + + } + #endregion diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs index 9bf5fdcf..67d9ae21 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs @@ -26,6 +26,16 @@ public class EnemyPool : MonoBehaviour { new List { EnemyName.blastFistMushroom,EnemyName.skullmage,EnemyName.skullWarlock}, 0.065f } }; + public static Dictionary, float> eliteEnemyPool = new Dictionary, float>() + { + { new List { EnemyName.skullGuardian,EnemyName.skullWarlock}, 1.0f }, + }; + + public static Dictionary, float> bossEnemyPool = new Dictionary, float>() + { + { new List { EnemyName.skullGuardian,EnemyName.skullmage}, 1.0f }, + }; + public static List GetRandomEnemyPool(Dictionary, float> enemyPool) { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/HoodWanderer.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/HoodWanderer.cs index 649c51b4..85914d15 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/HoodWanderer.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/HoodWanderer.cs @@ -234,6 +234,8 @@ public class HoodWanderer : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ParasiticMushroom.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ParasiticMushroom.cs index 6897b540..d4082981 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ParasiticMushroom.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ParasiticMushroom.cs @@ -248,6 +248,8 @@ public class ParasiticMushroom : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ShatteringFistMushroom.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ShatteringFistMushroom.cs index 8e661d44..53f36a41 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ShatteringFistMushroom.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ShatteringFistMushroom.cs @@ -252,6 +252,8 @@ public class ShatteringFistMushroom : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs index 87054fa4..6d18b6b2 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs @@ -209,6 +209,8 @@ public class SkullGuardian : MonoBehaviour } //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullMage.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullMage.cs index d522107f..b1ce82f0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullMage.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullMage.cs @@ -215,6 +215,8 @@ public class SkullMage : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullWarlock.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullWarlock.cs index ceaa8375..ad5a337d 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullWarlock.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullWarlock.cs @@ -205,6 +205,8 @@ public class SkullWarlock : MonoBehaviour //判断腐蚀 enemyNode.CorrodeRealize(endMapUnity); + //判断流血 + enemyNode.bleedRealize(endMapUnity); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs index 7666fb11..d7075618 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs @@ -54,7 +54,7 @@ public class MapManager : Singleton { yield return StartCoroutine(GenerateProcess()); - test(); + //test(); } IEnumerator GenerateProcess() diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs index ebe82ade..f224fe23 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs @@ -104,10 +104,10 @@ public class MapUnity : MonoBehaviour { colourGameObject.GetComponent().material = enemyColour; } - else - { - //无色 - } + else if (whoColour == WhoColour.noneColour) + { + colourGameObject.GetComponent().material = null; + } } public void RegisterUnit() { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs index bf472379..52cacd10 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs @@ -65,5 +65,7 @@ public class AbnormalCondition : Singleton public static readonly List canNegativeNumberList = new List { angerUpperDamage, shieldUpperValue, addDrawCard }; - public static readonly List playBuffList = new List { angerUpperDamage, shieldUpperValue, firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost }; + public static readonly List playBuffList = new List {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost }; + + public static readonly List playUndeterminedBuffList = new List { angerUpperDamage, shieldUpperValue }; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs index 3b70eabb..24c42e74 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs @@ -58,8 +58,8 @@ public class CardFunction public const string consumePlayerNodesForHealth = "27"; //消耗友方地块回复血量(双倍效果) public const string consumePlayerNodesForDoubleHealth = "28"; - //增加或者减少移动力 - public const string step = "29"; + //魔抗 + public const string immunity = "29"; //获得友方地块数/n的能量点 public const string nodesForCost = "30"; //火盾 @@ -76,5 +76,21 @@ public class CardFunction public const string costStep = "37"; //结算两次 public const string settleAgain = "38"; + //清除所有异常状态 + public const string clearAllAbnormalConditons = "39"; + //增加或者减少移动力 + public const string step = "40"; + //对前方一格造成伤害 + public const string damageForNextNode = "41"; + //瞬移 + public const string teleport = "42"; + //将第一个单位拉至身边 + public const string pullFirstEnemyToSelf = "43"; + //在2格范围内随机弹射n次 + public const string flippyRange2 = "44"; + //费用为x + public const string xCost = "45"; + //随机选择牌库里的一张攻击卡加入手牌 + public const string randomAttactCardToHand = "46"; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs index 7251e97e..bae87bf7 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Xml.Linq; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; @@ -30,6 +31,45 @@ public class getNodeTools return canPass; } + public static void playerMoveToNode(MapUnity mapNode) + { + //角色移动 + if ( mapNode.blocked == false && mapNode.enemyNode == null) + { + if (GameManager.Instance.playerOn != null) + { + GameManager.Instance.playerOn.playerOn = false; + GameManager.Instance.playerOn.influenced = false; + } + + //判断寄生是否生效 + Usermanager.Instance.ParasitismnRealize(GameManager.Instance.playerOn, mapNode); + Usermanager.Instance.bleedRealize(GameManager.Instance.playerOn, mapNode); + + mapNode.playerOn = true; + GameManager.Instance.playerOn = mapNode; + GameObject playerObject = GameObject.Find("player"); + playerObject.transform.position = new Vector3(mapNode.transform.position.x, 0.5f, mapNode.transform.position.z); + } + } + + public static void playerTeleportToNode(MapUnity mapNode) + { + //角色移动 + if (mapNode.blocked == false && mapNode.enemyNode == null) + { + if (GameManager.Instance.playerOn != null) + { + GameManager.Instance.playerOn.playerOn = false; + GameManager.Instance.playerOn.influenced = false; + } + mapNode.playerOn = true; + GameManager.Instance.playerOn = mapNode; + GameObject playerObject = GameObject.Find("player"); + playerObject.transform.position = new Vector3(mapNode.transform.position.x, 0.5f, mapNode.transform.position.z); + } + } + public static void RandomPollute(HashSet set, int num) { HashSet randomNodes = MathTool.GetRandomElements(set, num); @@ -202,6 +242,19 @@ public class getNodeTools } } + public static void getCircleNodeExceptSelf (HashSet nodeList, int range) + { + HashSet oldNodeList=new HashSet(nodeList); + for (int i = 0; i < range; i++) + { + getNearbyNode(nodeList); + } + foreach(MapUnity node in oldNodeList) + { + nodeList.Remove(node); + } + } + public static void getCircleNodeForBoom(HashSet nodeList, int range) { for (int i = 0; i < range; i++) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs index 408e1a70..43fbe7f9 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs @@ -77,7 +77,7 @@ public class CardActiveSort : Singleton float angle = Vector3.SignedAngle(-transform.InverseTransformDirection(cardEntitieList[i].transform.up), direction, transform.InverseTransformDirection(cardEntitieList[i].transform.forward)); cardEntitieList[i].GetComponent().Rotate(0, 0, angle); - Debug .Log (angle); + //Debug .Log (angle); } //重置初始位置 foreach (var card in cardEntitieList) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs index 1fdcb8c3..25da78af 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs @@ -23,7 +23,6 @@ public class BuffDataManager : Singleton abnormalCondition.Add("19", new Buff_Vulnerable()); abnormalCondition.Add("20", new Buff_DrawCardNumber()); abnormalCondition.Add("21", new Buff_BanDrawCard()); - //abnormalCondition.Add("21", new Buff_DownStepRange()); abnormalCondition.Add("22", new Buff_UpperStepRange()); abnormalCondition.Add("23", new Buff_DownStepRange()); abnormalCondition.Add("24", new Buff_levelSeep()); @@ -38,10 +37,7 @@ public class BuffDataManager : Singleton abnormalCondition.Add("35", new Buff_DoubleSettle()); abnormalCondition.Add("36", new Buff_NextTurnExtraOneCost()); - //abnormalCondition.Add("101", new Buff_UpperAnger()); - //abnormalCondition.Add("102", new Buff_UpperShield()); - //abnormalCondition.Add("103", new Buff_Firm()); - abnormalCondition.Add("105", new Buff_UpperStepRange()); + abnormalCondition.Add("106", new Buff_flashPoint()); abnormalCondition.Add("107", new Buff_BonePile()); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs index 23117917..509c2c2b 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs @@ -49,7 +49,34 @@ public class DestructionManager : Singleton public IEnumerator settleStage1(CardOriginalData cardOriginalData, HashSet influencePreviewPool, int cardIndex) { - yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex)); + bool canAdv = GameManager.Instance.SyncColourCountUI(); + int leftCost = GameManager.Instance.playerState.currentCost; + if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost)) + { + GameManager.Instance.playerState.currentCost = 0; + } + else + { + if (canAdv) + { + int trueCost = cardOriginalData.Cost; + string reduceCost; + if (cardOriginalData.AdvantageFunctionVal.TryGetValue(CardFunction.reduceCost, out reduceCost)) + { + + trueCost -= int.Parse(reduceCost); + MathTool.keepNature(trueCost); + } + GameManager.Instance.playerState.currentCost -= trueCost; + + } + else + { + GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost; + } + } + + yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex, leftCost)); if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.doubleSettle)) { Usermanager.playerAbnormalCondition[AbnormalCondition.doubleSettle].value--; @@ -57,14 +84,31 @@ public class DestructionManager : Singleton { Usermanager.playerAbnormalCondition.Remove(AbnormalCondition.doubleSettle); } - yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex)); + yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex, leftCost)); } } - public IEnumerator settleStage2(CardOriginalData cardOriginalData, HashSet influencePreviewPool, int cardIndex) + public IEnumerator settleStage2(CardOriginalData cardOriginalData, HashSet influencePreviewPool, int cardIndex,int leftCost) + { + if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost)) + { + for(int i=0;i< leftCost; i++) + { + yield return StartCoroutine(settleStage3(cardOriginalData, influencePreviewPool, cardIndex)); + } + } + else + { + yield return StartCoroutine(settleStage3(cardOriginalData, influencePreviewPool, cardIndex)); + } + + + } + + public IEnumerator settleStage3(CardOriginalData cardOriginalData, HashSet influencePreviewPool, int cardIndex) { - yield return StartCoroutine(SettlementManager.Instance.settle(cardOriginalData, influencePreviewPool, cardIndex)); bool canAdv = GameManager.Instance.SyncColourCountUI(); + yield return StartCoroutine(SettlementManager.Instance.settle(cardOriginalData, influencePreviewPool, cardIndex)); if (canAdv) { if (cardOriginalData.AdvantageFunctionVal.ContainsKey(CardFunction.settleAgain)) @@ -79,7 +123,7 @@ public class DestructionManager : Singleton yield return StartCoroutine(SettlementManager.Instance.settle(cardOriginalData, influencePreviewPool, cardIndex)); } } - + } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index e0baf677..eb206c68 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using System.Xml; using Unity.VisualScripting; using UnityEditor.VersionControl; using UnityEngine; @@ -51,17 +52,46 @@ public class SettlementManager : Singleton private void consumePlayerNodesForHealthWork(List influencePreviewPool) { int successNodeCount = 0; + Debug.Log("influencePreviewPool" + influencePreviewPool.Count); for (int i = 0; i < influencePreviewPool.Count; i++) { if(influencePreviewPool[i].whoColour == MapUnity.WhoColour.playerColour) { successNodeCount++; influencePreviewPool[i].whoColour= MapUnity.WhoColour.noneColour; + Debug.Log("successNodeCount是" + successNodeCount); } } + GameManager.Instance.SyncColourCountUI(); Usermanager.Instance.recoverHp(successNodeCount); } + private void clearAllAbnormalConditons() + { + List keysToRemove = new List(); + foreach (KeyValuePair kvp in Usermanager.playerAbnormalCondition) + { + if (AbnormalCondition.playUndeterminedBuffList.Contains(kvp.Key)) + { + if (kvp.Value.value < 0) + { + keysToRemove.Add(kvp.Key); + } + } + else if (AbnormalCondition.playBuffList.Contains(kvp.Key)) + { + } + else + { + keysToRemove.Add(kvp.Key); + } + } + foreach (string key in keysToRemove) + { + Usermanager.playerAbnormalCondition.Remove(key); + } + } + private void consumePlayerNodesForDoubleHealthWork(List influencePreviewPool) { int successNodeCount = 0; @@ -76,6 +106,220 @@ public class SettlementManager : Singleton Usermanager.Instance.recoverHp(successNodeCount*2); } + private void damageForNextNode(List influencePreviewPool,int damageVal,int pierceNum) + { + ZeroToFiveCircularCounter counter=new ZeroToFiveCircularCounter(); + int platerPosition=0; + Debug.Log("influencePreviewPool大小" + influencePreviewPool.Count); + if (influencePreviewPool[0].enemyNode!=null) + { + damageWork(damageVal,influencePreviewPool, pierceNum); + } + else + { + for (int i = 0; i < 5; i++) + { + if (influencePreviewPool[0].unitPool[i].Equals(GameManager.Instance.playerOn)) + { + platerPosition = i; + } + } + Debug.Log("platerPosition" + platerPosition); + int damagePosition = counter.Add(platerPosition, 3); + Debug.Log("damagePositionl" + damagePosition); + getNodeTools.playerMoveToNode(influencePreviewPool[0]); + if (influencePreviewPool[0].unitPool[damagePosition]!=null) + { + List damageNode = new List { influencePreviewPool[0].unitPool[damagePosition] }; + damageWork(damageVal, damageNode, pierceNum); + } + + } + } + + private void damageForFlippyRange2(List influencePreviewPool, string damageValAndflippyNum, int pierceNum ) + { + string[] values = damageValAndflippyNum.Split("_"); + int damageVal = int.Parse(values[0]); + int flippyNum = int.Parse(values[1]); + damageWork(damageVal, influencePreviewPool, pierceNum); + HashSet mapUnities = new HashSet(influencePreviewPool); + getNodeTools.getCircleNodeExceptSelf(mapUnities, 2); + for (int i = 0; i < flippyNum; i++) + { + if(findEnemy(mapUnities)!=null) + { + List targetNode= new List { findEnemy(mapUnities) }; + damageWork(damageVal, targetNode, pierceNum); + mapUnities.Clear(); + mapUnities= new HashSet(targetNode); + getNodeTools.getCircleNodeExceptSelf(mapUnities, 2); + } + else + { + break; + } + } + } + + private void randomAttactCardToHand() + { + int targetCardNum = 0; + if (TurnMaster.Instance.handCard.cardEntityList.Count>= TurnMaster.Instance.handCard.maxHandCard) + { + return; + } + else + { + targetCardNum = TurnMaster.Instance.handCard.cardEntityList.Count + 1; + } + List attackCardOriginalDataList = new List(); + foreach (var cardId in TurnMaster.Instance.cardDeck.cardList) + { + CardOriginalData cardOriginalData = new CardOriginalData(); + if (CardOriginalDataList.Instance.cardOriginalDataList.TryGetValue(cardId,out cardOriginalData)&&cardOriginalData.CarType==CardType.attack) + { + attackCardOriginalDataList.Add(cardId); + } + } + var a = Instantiate(TurnMaster.Instance.cardDeck.cardPrefab, TurnMaster.Instance.handCard.cardPanle.transform); + a.GetComponent().localEulerAngles = new Vector3(0, 0, 0); + CardEntity cardEntity = a.GetComponent(); + cardEntity.createCard(attackCardOriginalDataList[0], targetCardNum); + TurnMaster.Instance.cardDeck.cardList.RemoveAt(TurnMaster.Instance.cardDeck.cardList.Count - 1); + TurnMaster.Instance.handCard.cardEntityList.Add(cardEntity); + + //添加卡牌移动脚本 + /*CardSmall cardSmall = a.AddComponent(); + cardSmall.SetDestinationWithDrawCard(CardActiveSort.Instance.newPointList[targetCardNum]);*/ + CardActiveSort.Instance.ReflashCardPoint(); + + } + + private void categorizeCardsByCarType() + { + + + } + + private MapUnity findEnemy(HashSet mapUnityPool) + { + foreach(MapUnity mapUnity in mapUnityPool) + { + if (mapUnity.enemyNode != null) + { + return mapUnity; + } + } + return null; + } + + + private void teleport(List influencePreviewPool) + { + if (influencePreviewPool[0].enemyNode != null) + { + } + else + { + getNodeTools.playerTeleportToNode(influencePreviewPool[0]); + + } + } + + private void pullFirstEnemyToSelf(List influencePreviewPool) + { + /*List ememyList = new List(); + List emptyNodeList = new List(); + foreach(MapUnity mapUnity in influencePreviewPool) + { + if (mapUnity.enemyNode==null) + { + emptyNodeList.Add(mapUnity); + } + else + { + ememyList.Add(mapUnity); + } + }*/ + if (influencePreviewPool[0].enemyNode!=null) + { + return; + } + foreach(MapUnity mapUnity in influencePreviewPool) + { + if (mapUnity.enemyNode != null) + { + if (mapUnity.enemyNode.enemyType == EnemyNode.EnemyType.block) + { + return; + } + else + { + GameObject enemy = mapUnity.enemyNode.GameObject(); + Debug.Log(enemy); + enemyMoveToNode(enemy, influencePreviewPool[0], mapUnity.enemyNode); + return; + } + } + } + + } + + private void ParasitismnRealize(EnemyNode enemyNode, MapUnity start, MapUnity end) + { + if (enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.parasitism) || enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.corrode)) + { + List path = AStarManager.Instance.FindPathWithEndNode(start, end); + foreach (var node in path) + { + node.whoColour = MapUnity.WhoColour.enemyColour; + } + } + + } + + private void bleedRealize(EnemyNode enemyNode, MapUnity start, MapUnity end) + { + if (enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed)) + { + List path = AStarManager.Instance.FindPathWithEndNode(start, end); + foreach (var node in path) + { + enemyNode.sufferDamage(2, false); + enemyNode.EnemyState.abnormalCondition[AbnormalCondition.bleed].value -= 1; + if (enemyNode.EnemyState.abnormalCondition[AbnormalCondition.bleed].value <= 0) + { + enemyNode.EnemyState.abnormalCondition.Remove(AbnormalCondition.bleed); + } + } + } + + } + + private void enemyMoveToNode(GameObject enemy,MapUnity endNode,EnemyNode enemyNode) + { + MapUnity currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY]; + currentNode.blocked = false; + currentNode.enemyNode = null; + enemyNode.positionX = endNode.locationX; + enemyNode.positionY = endNode.locationY; + endNode.enemyNode = enemyNode; + while (true) + { + float dDistance = Vector3.Distance(enemy.transform.position, endNode.transform.position); + + if (dDistance < 0.1f) + { + break; + } + enemy.transform.position = Vector3.Lerp(enemy.transform.position, endNode.transform.position, Time.deltaTime * 4); + } + ParasitismnRealize(enemyNode,currentNode,endNode); + bleedRealize(enemyNode, currentNode, endNode); + //enemy.transform.position = new Vector3(endNode.transform.position.x, 0.5f, endNode.transform.position.z); + } + private void currentStepChange(int val) { if (val > 0) @@ -89,16 +333,37 @@ public class SettlementManager : Singleton GameManager.Instance.playerState.currentStepRange = trueStep; } } - private void damageWork(int damageVal, List influencePreviewPool) + private void damageWork(int damageVal, List influencePreviewPool,int pierceNum) { - for (int i = 0; i < influencePreviewPool.Count; i++) + int pierceCount=0; + if (pierceNum!=0) + { + for (int i = 0; i < influencePreviewPool.Count; i++) + { + //造成伤害 + if (influencePreviewPool[i].enemyNode != null) + { + pierceCount++; + influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true); + if (pierceCount>=pierceNum+1) + { + break; + } + } + } + } + else { - //造成伤害 - if (influencePreviewPool[i].enemyNode != null) + for (int i = 0; i < influencePreviewPool.Count; i++) { - influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true); + //造成伤害 + if (influencePreviewPool[i].enemyNode != null) + { + influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true); + } } } + } public IEnumerator settle(CardOriginalData cardOriginalData, HashSet influencePreviewPoolSet, int cardIndex) @@ -106,25 +371,21 @@ public class SettlementManager : Singleton List influencePreviewPool=new List(influencePreviewPoolSet); Dictionary trueFunctionVal = new Dictionary(); bool canAdv = GameManager.Instance.SyncColourCountUI(); + int pierceNum= cardOriginalData.PierceNum; if (canAdv) { - int trueCost = cardOriginalData.Cost; - string reduceCost; - if (cardOriginalData.AdvantageFunctionVal.TryGetValue(CardFunction.reduceCost, out reduceCost)) - { - - trueCost-=int.Parse(reduceCost); - MathTool.keepNature(trueCost); - } trueFunctionVal.AddRange(cardOriginalData.AdvantageFunctionVal); - GameManager.Instance.playerState.currentCost -= trueCost; + pierceNum = cardOriginalData.AdvPierceNum; } else { - GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost; trueFunctionVal.AddRange(cardOriginalData.FunctionVal); } + foreach (KeyValuePair kvp in trueFunctionVal) + { + Debug.Log("结算了" + kvp.Key); + } //弃牌不能先结算 foreach (KeyValuePair kvp in trueFunctionVal) { @@ -148,12 +409,12 @@ public class SettlementManager : Singleton switch (kvp.Key) { case CardFunction.cardDamage: - damageWork(int.Parse(kvp.Value), influencePreviewPool); + damageWork(int.Parse(kvp.Value), influencePreviewPool, pierceNum); break; case CardFunction.nodeDiffDamage: if (GameManager.Instance.getNodeDiffForPlayer() > 0) { - damageWork(GameManager.Instance.getNodeDiffForPlayer(), influencePreviewPool); + damageWork(GameManager.Instance.getNodeDiffForPlayer(), influencePreviewPool, pierceNum); } break; case CardFunction.cardShield: @@ -194,6 +455,24 @@ public class SettlementManager : Singleton case CardFunction.consumePlayerNodesForDoubleHealth: consumePlayerNodesForDoubleHealthWork(influencePreviewPool); break; + case CardFunction.clearAllAbnormalConditons: + clearAllAbnormalConditons(); + break; + case CardFunction.damageForNextNode: + damageForNextNode(influencePreviewPool, int.Parse(kvp.Value), pierceNum); + break; + case CardFunction.flippyRange2: + damageForFlippyRange2(influencePreviewPool, kvp.Value, pierceNum); + break; + case CardFunction.teleport: + teleport(influencePreviewPool); + break; + case CardFunction.pullFirstEnemyToSelf: + pullFirstEnemyToSelf(influencePreviewPool); + break; + case CardFunction.randomAttactCardToHand: + randomAttactCardToHand(); + break; case CardFunction.ember: case CardFunction.enhanceShield: case CardFunction.firm: @@ -204,6 +483,7 @@ public class SettlementManager : Singleton case CardFunction.fireShield: case CardFunction.doubleSettle: case CardFunction.nextTurnExtraOneCost: + case CardFunction.immunity: Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value)); break; case CardFunction.discard: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs index 981c0c40..790a88d8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs @@ -215,6 +215,15 @@ public class Usermanager : Singleton playerAbnormalCondition.Remove(AbnormalCondition.immunity); } } + if (playerAbnormalCondition.ContainsKey(AbnormalCondition.immunity) && !AbnormalCondition.playUndeterminedBuffList.Contains(condition)&&value<0) + { + isImmunityDispose = true; + playerAbnormalCondition[AbnormalCondition.immunity].value -= 1; + if (playerAbnormalCondition[AbnormalCondition.immunity].value <= 0) + { + playerAbnormalCondition.Remove(AbnormalCondition.immunity); + } + } return isImmunityDispose; } diff --git a/ColorlessWorld-2024-4-2/Assets/data/card_data_2.csv b/ColorlessWorld-2024-4-2/Assets/data/card_data_2.csv index bd1917cc..3df61239 100644 --- a/ColorlessWorld-2024-4-2/Assets/data/card_data_2.csv +++ b/ColorlessWorld-2024-4-2/Assets/data/card_data_2.csv @@ -1,24 +1,31 @@ -锘縄D,鍚嶇О,璐圭敤,绋鏈夊害,鍔熻兘,鏁板,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,娑堣,浼樺娍鍔熻兘,鏁板,鍗$墝绫诲瀷,浼樺娍鎻忚堪,鍥剧墖璺緞 -10003,鎷斿垁鏂,1,2,1,7,1,2,0,1;25,7;3,1,,PlayerIcon -10004,鐕曡繑,3,2,1;14,13;0,1,4_1,0,1;38;14,13;1;0,1,,PlayerIcon -10007,缁崇細鏈,2,2,26,1,3,7_2,0,26;19,1;1,2,,PlayerIcon -10012,姹茬伀鍒,0,1,1;22,4;1,0,6_3,0,1;22,4;1,1,,PlayerIcon -10014,蹇墜,1,2,20,1,0,0,1,20,1,1,,PlayerIcon -10006,鐏劙鍥炲,1,3,27,0,8,7_2,1,28,0,2,,PlayerIcon -10010,瑁呭~,0,2,11,1,0,0,1,11;29,1;2,2,,PlayerIcon -10011,宀╂祮姹插彇,1,1,30,10,0,0,0,30,7,2,,PlayerIcon -10013,鐏亖,2,2,2,12,0,0,0,32;2,2;12,2,,PlayerIcon -10015,澶哄垉,2,2,7,1,1,1,1,7;33,1;1,2,,PlayerIcon -10016,鎰ゆ,1,3,23;16,1;3,0,0,1,23;16,1;3,3,,PlayerIcon -10018,韪忔氮,1,1,29,2,0,0,0,29,2,2,,PlayerIcon -10019,蹇呮潃鍓懧峰鍒,3,3,29;34,0;0,3,1,0,29;34;33,0;0;1,1,,PlayerIcon -10020,缁濇柀,1,1,1;29,13;-2,1,1,0,1;29,13;-2,1,,PlayerIcon -10021,椋炵劙,1,1,14,0,2,4_2,0,14,0,2,,PlayerIcon -10022,鐩剧珛,1,1,2;12,7;1,0,0,0,2;12,7;1,2,,PlayerIcon -10023,鎶戒笣,1,1,1;12,10;1,4,1,0,1;12,10;1,1,,PlayerIcon -10025,鏈哄叧浼,3,1,1;2,10;15,0,6_3,0,1;2,10;15,2,,PlayerIcon -10026,娈嬪奖,1,1,12;2,2;6,0,0,0,12;2,2;6,2,,PlayerIcon -10028,鍑垮嚮,1,1,6,1,0,0,0,1;6,5;1,1,,PlayerIcon -10001,绾冲垁,1,3,35,1,0,0,0,35;33,0;1,1,,PlayerIcon -10024,鍒鑳屽嚮鎵,1,1,1;36,8;1,1,1,0,1;36,8;1,1,,PlayerIcon -10029,鏂吙,0,2,37;11,3;1,1,1,0,37;11,3;1,2,,PlayerIcon +锘縄D,鍚嶇О,璐圭敤,绋鏈夊害,鍔熻兘,鏁板,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,娑堣,浼樺娍鍔熻兘,鏁板,鍗$墝绫诲瀷,浼樺娍鎻忚堪,鍥剧墖璺緞,绌块,浼樺娍绌块 +10003,鎷斿垁鏂,1,2,1,7,1,2,0,1;25,7;3,1,,PlayerIcon,0,0 +10004,鐕曡繑,3,2,1;14,13;0,1,4_1,0,1;38;14,13;1;0,1,涓ゆ鏁堟灉,PlayerIcon,0,0 +10007,缁崇細鏈,2,2,26,1,3,7_2,0,26;19,1;1,2,,PlayerIcon,0,0 +10012,姹茬伀鍒,0,2,1;45;25,2;0;3,1,1,0,1;45;25,2;0;4,1,鏂藉姞4灞傜伀绉,PlayerIcon,0,0 +10014,蹇墜,1,2,20,1,0,0,1,20,1,1,,PlayerIcon,0,0 +10006,鐏劙鍥炲,1,3,27,0,8,7_2,1,28,0,2,鍥炲鏍煎瓙鏁*2鐨勮閲,PlayerIcon,0,0 +10010,瑁呭~,0,2,11,1,0,0,1,11;29,1;2,2,鑾峰緱2鐐圭Щ鍔ㄥ姏,PlayerIcon,0,0 +10011,宀╂祮姹插彇,1,1,30,10,0,0,0,30,7,2,,PlayerIcon,0,0 +10013,鐏亖,2,2,2,12,0,0,0,32;2,2;12,2,,PlayerIcon,0,0 +10015,澶哄垉,2,2,7,1,1,1,1,7;33,1;1,2,,PlayerIcon,0,0 +10016,鎰ゆ,1,3,23;16,1;3,0,0,1,23;16,1;3,3,,PlayerIcon,0,0 +10018,韪忔氮,1,1,29,2,0,0,0,29,2,2,,PlayerIcon,0,0 +10019,蹇呮潃鍓懧峰鍒,3,3,29;34,0;0,3,1,0,29;34;33,0;0;1,1,娑堣-1,PlayerIcon,0,0 +10020,缁濇柀,1,1,1;29,13;-2,1,1,0,1;29,13;-2,1,,PlayerIcon,0,0 +10021,椋炵劙,1,1,14,0,2,4_2,0,14,0,2,,PlayerIcon,0,0 +10022,鐩剧珛,1,1,2;12,7;1,0,0,0,2;12,7;1,2,,PlayerIcon,0,0 +10023,鎶戒笣,1,1,1;12,10;1,4,1,0,1;12,10;1,1,,PlayerIcon,0,0 +10025,鏈哄叧浼,3,1,1;2,10;15,0,6_3,0,1;2,10;15,2,,PlayerIcon,0,0 +10026,娈嬪奖,1,1,12;2,2;6,0,0,0,12;2,2;6,2,,PlayerIcon,0,0 +10028,鍑垮嚮,1,1,6,1,0,0,0,1;6,5;1,1,,PlayerIcon,0,0 +10001,绾冲垁,1,3,35,1,0,0,0,35;33,0;1,1,,PlayerIcon,0,0 +10024,鍒鑳屽嚮鎵,1,1,1;36,8;1,1,1,0,1;36,8;1,1,,PlayerIcon,0,0 +10029,鏂吙,0,2,37;11,3;1,1,1,0,37;11,3;1,2,,PlayerIcon,0,0 +10002,韪忓墠鏂,1,1,41,7,1,1,0,41,7,1,,PlayerIcon,0,0 +10008,鐑堢劙鎵嬮噷鍓,2,2,1;14,9;0,5,5_1,0,1;14,9;0,1,,PlayerIcon,1,2 +10027,鍑鍖,1,3,39,0,0,0,0,39;29,0;1,2,,PlayerIcon,0,0 +10017,鍥炴棆椋為晼,2,1,44,5_3,3,1,0,44,5_3,1,,PlayerIcon,0,0 +10009,鐬韩鏈,2,2,42,0,6,1,0,42;33,0;1,2,,PlayerIcon,0,0 +10005,鐏劙閿侀摼,1,2,43;25,0;4,5,5_1,0,43;25;2,0;4;6,2,棰濆鑾峰緱6鐐规姢鐩,PlayerIcon,0,0 +10030,鎻愬彇,1,1,46,0,0,0,0,46,0,2,,PlayerIcon,0,0