diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset index c1a2aaa0..2747fc2d 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset @@ -19,5 +19,4 @@ MonoBehaviour: - 2004 - 2005 - 2006 - - 1005 - - 1005 + - 2006 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs new file mode 100644 index 00000000..6ca3cb4f --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class Buff_Calm : Buff +{ + public override void Settle() + { + value = 0; + } + + + + public override void SettleEnemy(EnemyNode enemyNode) + { + + + + } + + + public override Buff NewBuff(int value) + { + Buff buff = new Buff_Calm(); + buff.value = value; + buff.icon = BuffDataManager.Instance.LoadImage(iconPath + "Sslx_Ui_Buff_liuxue_v01"); + return buff; + } +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs.meta new file mode 100644 index 00000000..854381e8 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f68e1f2f6ebb0dd488343584c9855d8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs index 7e6ed146..3afe6845 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs @@ -5,10 +5,6 @@ using UnityEngine.UI; public class Buff_Thorn : Buff { - public override void Settle() - { - - } public override void SettleEnemy(EnemyNode enemyNode) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index cd25f55f..8e368eb7 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs @@ -535,6 +535,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag { castRange += Usermanager.playerAbnormalCondition[AbnormalCondition.tempCastRange].value; } + if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.calm)) + { + castRange += Usermanager.playerAbnormalCondition[AbnormalCondition.calm].value; + } if (cardEntity.cardOriginalData.TrueFunctionVal.ContainsKey(CardFunction.castRangePlusOne)) { castRange += 1; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs index 36ec6b36..32714074 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs @@ -120,6 +120,7 @@ public class CardEntity : MonoBehaviour { checkAndUpdateCondition(); createCardCost(); + CardResourcesManager.getFunAndValForSwage(cardOriginalData.Cost, CardFunction.cardDamage); //createCastRange(); } IEnumerator SyncVuleText() @@ -533,13 +534,12 @@ public class CardEntity : MonoBehaviour } } - private bool conditionCheck(string conditon, Tuple tuple, int conditionListindex) + private bool conditionCheck(string conditon) { bool check=false; - string pattern = @"(\w+)([><=])(\d+)"; //cardOriginalData.originFunctionVal.Clear(); //Debug.Log("外面condition是" + kvp.Key); - Match match = Regex.Match(conditon, pattern); + Match match = Regex.Match(conditon, Name.Regex.cardConditionPattern); if (match.Success) { string firstPart = match.Groups[1].Value; // 第一部分 @@ -808,7 +808,12 @@ public class CardEntity : MonoBehaviour List allMatchList = new List(); int exclusiveConditionIndex = 0; bool canexclusiveCondition=false; - for (int i = 0; i < cardOriginalData.conditionAndFunctionVal.Count; i++) + if (conditionCheck(cardOriginalData.condition[0])) + { + addDenyCondition(); + addConditionFunAndVal(); + } + /*for (int i = 0; i < cardOriginalData.conditionAndFunctionVal.Count; i++) { bool isAllMatch=true; List matchList=new List(); @@ -827,7 +832,7 @@ public class CardEntity : MonoBehaviour } else { - matchList.Add(conditionCheck(keys[j], kvp.Value, i)); + matchList.Add(conditionCheck(keys[j])); } } for (int k = 0; k < matchList.Count; k++) @@ -843,7 +848,7 @@ public class CardEntity : MonoBehaviour if (isAllMatch) { exclusiveConditionIndex = i; - canexclusiveCondition=true; + canexclusiveCondition = true; condition.sprite = successCondition; } else @@ -852,31 +857,45 @@ public class CardEntity : MonoBehaviour } } string[] fun = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item1.Split("_"); - string[] vals = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item2.Split("_"); - if (canexclusiveCondition) + string[] vals = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item2.Split("_");*/ + + + + //resultsScreenCal(cardDataSummary); + } + + private void addConditionFunAndVal() + { + foreach(KeyValuePair kvp in cardOriginalData.conditionFunctionVal) + { + MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, kvp.Key, kvp.Value); + } + /*for (int j = 0; j < fun.Length; j++) { - for (int j = 0; j < fun.Length; j++) + if (int.TryParse(vals[j], out int newValue)) + { + MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, fun[j], vals[j]); + } + else { - if (int.TryParse(vals[j], out int newValue)) + if (Name.Color.AllColor.Contains(vals[j])) { - MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, fun[j], vals[j]); + MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, fun[j], getNodeTools.getNodesCount(vals[j]).ToString()); } else { - if (Name.Color.AllColor.Contains(vals[j])) - { - MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, fun[j], getNodeTools.getNodesCount(vals[j]).ToString()); - } - else - { - MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, fun[j], vals[j]); - } + MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, fun[j], vals[j]); } } - } - + }*/ + } - //resultsScreenCal(cardDataSummary); + private void addDenyCondition() + { + foreach(string fun in cardOriginalData.denyFunction) + { + cardOriginalData.TrueFunctionVal.Remove(fun); + } } private void createCardRelease() { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs index b6f97d5a..bc3781aa 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs @@ -27,8 +27,12 @@ public class CardOriginalData : System.Object public Dictionary showFunctionVal; + public HashSet denyFunction; + public Dictionary commonFunctionVal; + public Dictionary conditionFunctionVal; + private string cardType; private string description; @@ -45,7 +49,7 @@ public class CardOriginalData : System.Object private string cardRelease; - public string condition; + public string[] condition; public string[] nodesMark; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs index f96b2a2f..f93f060d 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs @@ -221,8 +221,11 @@ public class CardOriginalDataList : Singleton cardOriginalData.TrueFunctionVal = new Dictionary(); cardOriginalData.originFunctionVal = new HashSet(); cardOriginalData.commonFunctionVal = new Dictionary(); + cardOriginalData.denyFunction = new HashSet(); cardOriginalData.CardType = Name.CardType.dyeing; cardOriginalData.ImgPath = values[10]; + cardOriginalData.conditionFunctionVal = new Dictionary(); + cardOriginalData.condition = values[5].Split(";"); for (int i = 0; i < cardOriginalData.nodesMark.Length; i++) { // 拆分坐标 @@ -237,8 +240,15 @@ public class CardOriginalDataList : Singleton // 添加到 HashSet cardOriginalData.cardImageMark.Add(pair); } - getDictionaryFromString(values, cardOriginalData); - + string[] commonFunction = values[6].Split(";"); + string[] commonFunctionVal = values[7].Split(";"); + for (int i = 0; i < commonFunction.Length; i++) + { + cardOriginalData.commonFunctionVal.Add(commonFunction[i], commonFunctionVal[i]); + //Debug.Log("TrueFunctionVal是" + commonFunction[i] + "+" + commonFunctionVal[i]); + } + //getDictionaryFromString(values, cardOriginalData); + return cardOriginalData; } @@ -247,32 +257,38 @@ public class CardOriginalDataList : Singleton cardOriginalData.cardImageMark = new HashSet(); //CardOriginalData cardOriginalData = CardOriginalData.Instance; cardOriginalData.CardId = values[0]; - cardOriginalData.ChineseName = values[13]; - cardOriginalData.Description = values[14]; + cardOriginalData.ChineseName = values[14]; + cardOriginalData.Description = values[15]; cardOriginalData.costType = values[1]; cardOriginalData.Cost = int.Parse(values[2]); - cardOriginalData.Rarity = int.Parse(values[11]); + cardOriginalData.Rarity = int.Parse(values[12]); //cardOriginalData.EffectRange = values[3]; - cardOriginalData.IsDisposable = int.Parse(values[12]) == 1; - cardOriginalData.nodesMark = values[8].Split(";"); + cardOriginalData.IsDisposable = int.Parse(values[13]) == 1; + cardOriginalData.nodesMark = values[9].Split(";"); //cardOriginalData.nodesColor = values[8].Split(";"); cardOriginalData.conditionAndFunctionVal = new Dictionary>(); cardOriginalData.commonFunctionVal = new Dictionary(); cardOriginalData.TrueFunctionVal = new Dictionary(); + cardOriginalData.conditionFunctionVal = new Dictionary(); cardOriginalData.originFunctionVal = new HashSet(); + cardOriginalData.denyFunction = new HashSet(); cardOriginalData.CardType = Name.CardType.effect; - cardOriginalData.ImgPath = values[9]; - cardOriginalData.CastingRange = int.Parse(values[10]); - cardOriginalData.originFunctionVal = new HashSet(); + cardOriginalData.ImgPath = values[10]; + cardOriginalData.CastingRange = int.Parse(values[11]); //cardOriginalData.testTrueFunctionVal = new Dictionary(); - string[] condition = values[5].Split(";"); - string[] function = values[6].Split(";"); - string[] functionVal = values[7].Split(";"); + cardOriginalData.condition = values[5].Split(";"); + string[] conditionFunction = values[6].Split(";"); + string[] conditionFunctionVal = values[7].Split(";"); + string[] denyFunction = values[8].Split(";"); string[] commonFunction = values[3].Split(";"); string[] commonFunctionVal = values[4].Split(";"); - for (int i = 0; i < function.Length; i++) + for (int i = 0; i < denyFunction.Length; i++) + { + cardOriginalData.denyFunction.Add(denyFunction[i]); + } + for (int i = 0; i < conditionFunction.Length; i++) { - cardOriginalData.conditionAndFunctionVal.Add(condition[i], new Tuple(function[i], functionVal[i])); + cardOriginalData.conditionFunctionVal.Add(conditionFunction[i], conditionFunctionVal[i]); } for (int i = 0; i < commonFunction.Length; i++) { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs index 601d0470..9e144fa4 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs @@ -1,7 +1,12 @@ using System.Collections; using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; using UnityEngine; using UnityEngine.UI; +using static Name; +using Regex = System.Text.RegularExpressions.Regex; public class CardResourcesManager : Singleton { @@ -225,4 +230,60 @@ public class CardResourcesManager : Singleton } } + + public static Dictionary getFunAndValForSwage(int cost, string originFun) + { + Dictionary result = new Dictionary(); + HashSet pool = new HashSet(); + if (CardFunction.ActList.Contains(originFun)) + { + pool = MathTool.GetRandomElements(CardFunction.ActList, 3); + } + else if (CardFunction.BuffList.Contains(originFun)) + { + pool = MathTool.GetRandomElements(CardFunction.BuffList, 3); + } + foreach (string fun in pool) + { + result.Add(fun, Name.getValForSwage(cost,fun)); + } + foreach (KeyValuePair kvp in result) + { + StringBuilder sb = new StringBuilder(); + Name.getSingleDescription(sb, kvp); + Debug.Log("Swage内容是" + sb.ToString()); + } + return result; + } + + + + public List getCardCondition(string condition) + { + List result= new List(); + for (int i = 0; i <= 3; i++) + { + result.Add(getSingleCardCondition(condition)); + } + return result; + } + + public string getSingleCardCondition(string condition) + { + StringBuilder sb = new StringBuilder(); + Match match = Regex.Match(condition, Name.Regex.cardConditionPattern); + if (match.Success) + { + HashSet firstPartSet = MathTool.GetRandomElements(new HashSet(Name.Color.PlayerColor), 1); + string firstPart = firstPartSet.ElementAt(0); // 第一部分结果 + HashSet opPartSet = MathTool.GetRandomElements(new HashSet(Name.Op.AllOp), 1); + string op = opPartSet.ElementAt(0); // 运算符部分结果 + string beforeSecondPart = match.Groups[3].Value; + int secondPartCount = CardManager.Instance.evaluateExpression(beforeSecondPart); + HashSet secondPartSet = MathTool.GetRandomElements(MathTool.GetTargetRange(secondPartCount,2), 1); + string secondPart= secondPartSet.ElementAt(0);// 第二部分结果 + sb.Append(firstPart).Append(op).Append(secondPart); + } + return sb.ToString(); + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/ChooseWeapon/ColorSlot.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/ChooseWeapon/ColorSlot.cs index c6ac51c0..6ae66f4a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/ChooseWeapon/ColorSlot.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/ChooseWeapon/ColorSlot.cs @@ -60,8 +60,8 @@ public class ColorSlot : MonoBehaviour } - string newcard; - newcard = CardManager.Instance.switchColorAndAllCondition(cardEntity.cardId, cardEntity.cardOriginalData, newColor); + string newcard = ""; + //newcard = CardManager.Instance.switchColorAndAllCondition(cardEntity.cardId, cardEntity.cardOriginalData, newColor); return newcard; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Enemy.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Enemy.cs index 861a8ff2..874413ad 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Enemy.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Enemy.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; +using static TurnMaster; public class Enemy : MonoBehaviour { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs index 8d3a08b6..c36ffad3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs @@ -1294,7 +1294,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver { if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.thorn)) { - Usermanager.Instance.SufferTrueDamage(3); + Usermanager.Instance.SufferTrueDamage(EnemyState.abnormalCondition[AbnormalCondition.thorn].value); EnemyState.abnormalCondition[AbnormalCondition.thorn].value -= 1; if (EnemyState.abnormalCondition[AbnormalCondition.thorn].value <= 0) { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Shop/ColorSlotInChange.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Shop/ColorSlotInChange.cs index 56e3bcee..61266b64 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Shop/ColorSlotInChange.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Shop/ColorSlotInChange.cs @@ -63,7 +63,7 @@ public class ColorSlotInChange : MonoBehaviour string newcard; if (index !=0) { - newcard = CardManager.Instance.switchCardCondition(ChangeColorMangaer.Instance.originalCardEntity.cardId, ChangeColorMangaer.Instance.originalCardEntity.cardOriginalData, newColor, index-1); + newcard = CardManager.Instance.switchCardCondition(ChangeColorMangaer.Instance.originalCardEntity.cardOriginalData, newColor); } else { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs index 39af5daa..8f68c5ba 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs @@ -105,11 +105,13 @@ public class AbnormalCondition : Singleton public const string tempEmberTwoRound = "88"; //下张涂色牌消耗为0 public const string nextDyeingCardCostZero = "92"; + //冷静 + public const string calm = "93"; public static readonly List canNegativeNumberList = new List { angerUpperDamage, shieldUpperValue, addDrawCard }; public static readonly List playBuffList = new List {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost ,tempCastRange, bleedDamage, bleed3TurnCost, bleed4TurnCost, nextCardCostMinusOne, nextCardCostHp, dyeingCardCostMinusOne - ,nextDyeingCardRangeAddTwo,nextEffectCardDoubleSettle}; + ,nextDyeingCardRangeAddTwo,nextEffectCardDoubleSettle,calm}; 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 b8e0aa77..484ef1a0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs @@ -1,6 +1,8 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray; +using static Unity.Collections.AllocatorManager; public static class CardFunction { @@ -36,7 +38,7 @@ public static class CardFunction public const string nodeDiffDamage = "15"; //怒火 public const string ember = "16"; - //坚固 + //敏捷 public const string enhanceShield = "17"; //强固 public const string firm = "18"; @@ -58,7 +60,7 @@ public static class CardFunction public const string consumePlayerNodesForHealth = "27"; //消耗友方地块回复血量(双倍效果) public const string consumePlayerNodesForDoubleHealth = "28"; - //魔抗 + //斗篷 public const string immunity = "29"; //获得友方地块数/n的能量点 public const string nodesForCost = "30"; @@ -119,7 +121,7 @@ public static class CardFunction public const string disable = "58"; //消耗所有黄,获得对应数量的护盾 public const string turnYellowNodesToShield = "59"; - //获得黄对应数量的护盾,流下一半黄色 + //获得黄对应数量的护盾,留下一半黄色 public const string turnHalfYellowNodesToShield = "60"; //消耗玩家周围2范围地块,每消耗3红获得1层狂热 public const string turn3RedNodesToEmber = "61"; @@ -185,5 +187,19 @@ public static class CardFunction public const string drawAndCopyCard = "91"; //下张涂色牌消耗为0 public const string nextDyeingCardCostZero = "92"; + //冷静 + public const string calm = "93"; + //对蓝色地块造成伤害 + public const string damageForBlueNode = "94"; + //对蓝色地块造成xy伤害 + public const string damagexyForBlueNode = "95"; + + + + + public static readonly HashSet BuffList = new() { bleed, vulnerable, downSpeed, ember, deathMark, tempCastRange, calm , enhanceShield + ,weak,bleedDamage,immunity,thorn}; + + public static readonly HashSet ActList = new() { damagexy, cardDamage, cardShield, repel, recoverHp, step, reduceCost,costRestore}; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs index 2af39efa..03e3bc98 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs @@ -317,6 +317,23 @@ public class MathTool } return new HashSet(set.OrderBy(x => rand.Next()).Take(a)); } + + public static HashSet GetTargetRange(int target, int range) + { + HashSet result = new HashSet(); + + // 计算范围的起始和结束值 + int start = target - range; + int end = target + range; + + // 遍历范围内的所有整数并转为字符串 + for (int i = start; i <= end; i++) + { + result.Add(i.ToString()); + } + + return result; + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs index de3d2372..0f31fd1a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs @@ -102,7 +102,7 @@ public static class Name } getSingleDescription(sb, kvp); } - foreach (KeyValuePair> kvp in cardOriginalData.conditionAndFunctionVal) + /*foreach (KeyValuePair> kvp in cardOriginalData.conditionAndFunctionVal) { if (!kvp.Key.Equals(none)) { @@ -122,7 +122,7 @@ public static class Name } KeyValuePair cardFunAadVal = new KeyValuePair(kvp.Value.Item1, kvp.Value.Item2); getSingleDescription(sb, cardFunAadVal); - } + }*/ getConditionDescription(sb, cardOriginalData); @@ -130,48 +130,53 @@ public static class Name public static void getConditionDescription(StringBuilder sb, CardOriginalData cardOriginalData) { - foreach (KeyValuePair> kvp in cardOriginalData.conditionAndFunctionVal) + if (cardOriginalData.condition[0] != Name.none) { - if (!kvp.Key.Equals(none)) + sb.Append(";"); + sb.Append(""); + sb.Append(cardOriginalData.condition[0]); + sb.Append(""); + sb.Append(","); + if (!cardOriginalData.Description.Equals(none)) { - sb.Append(";"); - sb.Append(""); - sb.Append(kvp.Key); - sb.Append(""); - sb.Append(","); - if (!cardOriginalData.Description.Equals(none)) - { - sb.Append(cardOriginalData.Description); - } - else + sb.Append(cardOriginalData.Description); + } + else + { + foreach (KeyValuePair kvp in cardOriginalData.conditionFunctionVal) { - KeyValuePair cardFunAadVal = new KeyValuePair(kvp.Value.Item1, kvp.Value.Item2); - getSingleDescription(sb, cardFunAadVal); + getSingleDescription(sb, kvp); + sb.Append(","); } } } + + if (sb.Length > 0 && sb[^1] == ',') + { + sb.Remove(sb.Length - 1, 1); + } } public static void getSingleDescription(StringBuilder sb, KeyValuePair kvp) { switch (kvp.Key) { case CardFunction.cardDamage: - sb.Append("造成" + kvp.Value + "点伤害"); + sb.Append("造成" + kvp.Value + "点伤害"); break; case CardFunction.cardShield: - sb.Append("获得" + kvp.Value + "点护盾"); + sb.Append("获得" + kvp.Value + "点护盾"); break; case CardFunction.posion: - sb.Append("施加" + kvp.Value + "层中毒"); + sb.Append("施加" + kvp.Value + "层中毒"); break; case CardFunction.fireSeed: - sb.Append("施加" + kvp.Value + "层火种"); + sb.Append("施加" + kvp.Value + "层火种"); break; case CardFunction.vulnerable: - sb.Append("施加" + kvp.Value + "层易伤"); + sb.Append("施加" + kvp.Value + "层易伤"); break; case CardFunction.weak: - sb.Append("施加" + kvp.Value + "层虚弱"); + sb.Append("施加" + kvp.Value + "层虚弱"); break; case CardFunction.coma: sb.Append("施加" + kvp.Value + "层昏迷"); @@ -183,16 +188,22 @@ public static class Name sb.Append("施加" + kvp.Value + "层睡眠"); break; case CardFunction.bleed: - sb.Append("施加" + kvp.Value + "层流血"); + sb.Append("施加" + kvp.Value + "层流血"); break; case CardFunction.thorn: - sb.Append("获得" + kvp.Value + "层荆棘"); + sb.Append("获得" + kvp.Value + "层荆棘"); break; case CardFunction.ember: - sb.Append("获得" + kvp.Value + "层狂热"); + sb.Append("获得" + kvp.Value + "层狂热"); break; case CardFunction.upSpeed: - sb.Append("获得" + kvp.Value + "层加速"); + sb.Append("获得" + kvp.Value + "层加速"); + break; + case CardFunction.calm: + sb.Append("获得" + kvp.Value + "层冷静"); + break; + case CardFunction.tempCastRange: + sb.Append("卡牌释放距离增加" + kvp.Value + ""); break; case CardFunction.downSpeed: sb.Append("获得" + kvp.Value + "层减速"); @@ -204,7 +215,7 @@ public static class Name sb.Append("获得" + kvp.Value + "层魔抗"); break; case CardFunction.recoverHp: - sb.Append("恢复" + kvp.Value + "点血量"); + sb.Append("恢复" + kvp.Value + "点血量"); break; case CardFunction.extraDrawCardsNum: sb.Append("下回合多抽" + kvp.Value + "张牌"); @@ -219,10 +230,10 @@ public static class Name sb.Append("护盾不会消失"); break; case CardFunction.costRestore: - sb.Append("获得" + kvp.Value + "点能量"); + sb.Append("获得" + kvp.Value + "点能量"); break; case CardFunction.drawCard: - sb.Append("抽" + kvp.Value + "张牌"); + sb.Append("抽" + kvp.Value + "张牌"); break; case CardFunction.discard: sb.Append("弃" + kvp.Value + "张牌"); @@ -251,11 +262,11 @@ public static class Name case CardFunction.step: if (int.Parse(kvp.Value) > 0) { - sb.Append("获得" + kvp.Value + "点移动力"); + sb.Append("获得" + kvp.Value + "点移动力"); } else { - sb.Append("失去" + -int.Parse(kvp.Value) + "点移动力"); + sb.Append("失去" + -int.Parse(kvp.Value) + "点移动力"); } break; case CardFunction.dyeingAround: @@ -280,7 +291,7 @@ public static class Name sb.Append("下一张效果牌结算两次"); break; case CardFunction.deathMark: - sb.Append("施加" + kvp.Value + "层死亡印记"); + sb.Append("施加" + kvp.Value + "层死亡印记"); break; case CardFunction.teleportAround: sb.Append("玩家出现在周围随机1格"); @@ -343,7 +354,7 @@ public static class Name sb.Append("消耗所有黄色,获得对应数量的护盾"); break; case CardFunction.bleedDamage: - sb.Append("增加" + kvp.Value + "点流血伤害"); + sb.Append("增加" + kvp.Value + "点流血伤害"); break; case CardFunction.drawDyeingCard: sb.Append("抽" + kvp.Value + "张涂色牌"); @@ -356,19 +367,90 @@ public static class Name break; case CardFunction.damagexy: string[] values = kvp.Value.Split("-"); - sb.Append("造成" + values[0] + "点伤害" + values[1] + "次"); + sb.Append("造成" + values[0] + "点伤害" + values[1] + "次"); break; case CardFunction.repel: sb.Append("击退" + kvp.Value + "格"); break; case CardFunction.reduceCost: - sb.Append("费用-" + kvp.Value); + sb.Append("费用-" + kvp.Value + ""); break; case CardFunction.spreadColorToAround: sb.Append("将目标地块的颜色扩散至周围"); break; } } + + public static string getValForSwage(int cost, string fun) + { + string result = ""; + int basicval = 1; + switch (fun) + { + case CardFunction.cardDamage: + basicval = 5; + break; + case CardFunction.cardShield: + basicval = 5; + break; + case CardFunction.posion: + basicval = 3; + break; + case CardFunction.fireSeed: + basicval = 3; + break; + case CardFunction.vulnerable: + basicval = 1; + break; + case CardFunction.weak: + basicval = 1; + break; + case CardFunction.bleed: + basicval = 2; + break; + case CardFunction.ember: + basicval = 2; + break; + case CardFunction.upSpeed: + basicval = 1; + break; + case CardFunction.recoverHp: + basicval = 3; + break; + case CardFunction.costRestore: + basicval = 1; + break; + case CardFunction.drawCard: + basicval = 1; + break; + case CardFunction.step: + basicval = 1; + break; + case CardFunction.deathMark: + basicval = 1; + break; + case CardFunction.damagexy: + basicval = 3; + break; + case CardFunction.bleedDamage: + basicval = 2; + break; + case CardFunction.thorn: + basicval = 2; + break; + } + int trueval= basicval*cost; + if (fun.Equals(CardFunction.damagexy)) + { + result = trueval.ToString()+"-"+(cost+1).ToString(); + } + else + { + result=trueval.ToString(); + } + + return result; + } public static class CardRelease { public const string Self = "Self"; @@ -496,6 +578,16 @@ public static class Name public const string Black = "black"; public const string Metal = "metal"; public static readonly List AllColor = new() { Red, Green, Blue, Yellow ,White, Black , Metal }; + public static readonly List PlayerColor = new() { Red, Blue, Yellow}; + + } + + public static class Op + { + public const string Equal = "="; + public const string BiggerThan = ">"; + public const string LessThan = "<"; + public static readonly List AllOp = new() { Equal, BiggerThan, LessThan }; } @@ -533,6 +625,8 @@ public static class Name public const string pattern1xxx = @"^1\d{3}$"; //2*** public const string pattern2xxx = @"^2\d{3}$"; + //卡牌条件 + public const string cardConditionPattern = @"(\w+)([><=])(\d+)"; } public static class CardFunctionString @@ -602,4 +696,11 @@ public static class Name public const string Elite = "elite"; public const string Boss = "Boss"; } + + public static class CardChangePosition + { + public const string PartOne = "PartOne"; + public const string PartTwo = "PartTwo"; + public const string Condition = "Condition"; + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs index fa80248f..1fc79dea 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs @@ -55,6 +55,7 @@ public class BuffDataManager : Singleton abnormalCondition.Add("82", new Buff_NextEffectCardDoubleSettle()); abnormalCondition.Add("83", new Buff_DeathMark()); abnormalCondition.Add("92", new Buff_NextDyeingCardCostZero()); + abnormalCondition.Add("93", new Buff_Calm()); abnormalCondition.Add("106", new Buff_flashPoint()); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs index c2cd44c1..c5c851a4 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs @@ -22,25 +22,55 @@ public class CardManager : Singleton { DontDestroyOnLoad(this.gameObject); } - public string switchCardCondition(string orginalCardId, CardOriginalData cardOriginalData, string newColor, int conditionCount) + public string switchCardCondition(CardOriginalData cardOriginalData, string newCondition) { //CardOriginalData newCardOriginalData=cardOriginalData; CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cardOriginalData)); - string condition = newCardOriginalData.conditionAndFunctionVal.ElementAt(conditionCount).Key; - string pattern = @"(\w+)([><=])(\d+)"; - newCardOriginalData.originFunctionVal.Clear(); - Match match = Regex.Match(condition, pattern); - if (match.Success) + newCardOriginalData.condition[0] = newCondition; + string newCardId=AddElementToDictionary(CardOriginalDataList.Instance.existCardOriginalDataList, cardOriginalData.CardId, newCardOriginalData); + return newCardId; + } + + public string switchCardFunAndVal(CardOriginalData cardOriginalData, KeyValuePair newFunAndVal,string position, string originFun) + { + bool isInDeny=false; + //CardOriginalData newCardOriginalData=cardOriginalData; + CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cardOriginalData)); + if (position.Equals(Name.CardChangePosition.PartOne)) + { + foreach(KeyValuePair kvp in newCardOriginalData.commonFunctionVal.ToList()) + { + if (kvp.Key.Equals(originFun)) + { + newCardOriginalData.commonFunctionVal.Remove(kvp.Key); + } + } + foreach (string denyFun in newCardOriginalData.denyFunction.ToList()) + { + if (denyFun.Equals(originFun)) + { + newCardOriginalData.denyFunction.Remove(denyFun); + isInDeny=true; + } + } + newCardOriginalData.commonFunctionVal.Add(newFunAndVal.Key, newFunAndVal.Value); + if (isInDeny) + { + newCardOriginalData.denyFunction.Add(newFunAndVal.Key); + } + } + else if (position.Equals(Name.CardChangePosition.PartTwo)) { - string beforecolor = match.Groups[1].Value; // 颜色部分 - string op = match.Groups[2].Value; // 运算符部分 - string number = match.Groups[3].Value; // 数值部分 - Tuple value = newCardOriginalData.conditionAndFunctionVal[condition]; - string newCondition=newColor+op+number; - newCardOriginalData.conditionAndFunctionVal.Remove(condition); - newCardOriginalData.conditionAndFunctionVal.Add(newCondition, value); + foreach (KeyValuePair kvp in newCardOriginalData.conditionFunctionVal.ToList()) + { + if (kvp.Key.Equals(originFun)) + { + newCardOriginalData.commonFunctionVal.Remove(kvp.Key); + } + } + newCardOriginalData.conditionFunctionVal.Add(newFunAndVal.Key, newFunAndVal.Value); } - string newCardId=AddElementToDictionary(CardOriginalDataList.Instance.existCardOriginalDataList, cardOriginalData.CardId, newCardOriginalData); + string newCardId = AddElementToDictionary(CardOriginalDataList.Instance.existCardOriginalDataList, cardOriginalData.CardId, newCardOriginalData); return newCardId; } @@ -50,7 +80,7 @@ public class CardManager : Singleton return newCardId; } - public string switchColorAndAllCondition(string orginalCardId, CardOriginalData cardOriginalData, string newColor) + public string switchColorAndAllCondition(CardOriginalData cardOriginalData, string newColor) { //CardOriginalData newCardOriginalData=cardOriginalData; CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cardOriginalData)); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index 959ebe69..6d017b4d 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -812,6 +812,20 @@ public class SettlementManager : Singleton List redList = new List(getNodeTools.getNodesWithColor(Name.Color.Red)); damageWork(int.Parse(kvp.Value), redList, pierceNum); break; + case CardFunction.damageForBlueNode: + List blueList = new List(getNodeTools.getNodesWithColor(Name.Color.Blue)); + damageWork(int.Parse(kvp.Value), blueList, pierceNum); + break; + case CardFunction.damagexyForBlueNode: + List blueListA = new List(getNodeTools.getNodesWithColor(Name.Color.Blue)); + string[] valuesA = kvp.Value.Split("-"); + int damageValA = int.Parse(valuesA[0]); + int damageCountA = int.Parse(valuesA[1]); + for (int i = 0; i < damageCountA; i++) + { + damageWork(damageValA, blueListA, pierceNum); + } + break; case CardFunction.nodeDiffDamage: if (GameManager.Instance.getNodeDiffForPlayer() > 0) { @@ -988,6 +1002,7 @@ public class SettlementManager : Singleton case CardFunction.dyeingCardCostMinusOne: case CardFunction.nextDyeingCardRangeAddTwo: case CardFunction.nextEffectCardDoubleSettle: + case CardFunction.calm: Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value)); break; case CardFunction.doublebleedDamage: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs index b1c9d1c0..de03bde3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs @@ -541,8 +541,7 @@ public class Usermanager : Singleton { if (playerAbnormalCondition.ContainsKey(AbnormalCondition.thorn)) { - enemyNode.sufferTrueDamage(3); - playerAbnormalCondition[AbnormalCondition.thorn].value -= 1; + enemyNode.sufferDamage(playerAbnormalCondition[AbnormalCondition.thorn].value,false); if (playerAbnormalCondition[AbnormalCondition.thorn].value <= 0) { playerAbnormalCondition.Remove(AbnormalCondition.thorn); diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_5.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_5.csv index 71b7ca37..6b6b3c94 100644 --- a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_5.csv +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_5.csv @@ -2,8 +2,8 @@ 1001,1,1,1,3_1,none,1,5,0_0;1_0;2_0,white;white;white,CardIcon/1010,鎸ョ爫,1 1002,1,1,1,3_1,none,2,4,0_0;-1_1;-1_-1,white;white;white,CardIcon/1010,鏍兼尅,1 1003,1,1,1,3_1,none,40,1,1_0;0_1;0_-1;-1_0;-1_1;-1_-1,white;white;white;white;white;white,CardIcon/1010,鐑熷湀,1 -1004,1,2,1,3_1,none,12_13,2_2,0_0;1_0;0_-1;0_1,blue;blue;red;red,CardIcon/1011,鎼滅储,1 -1005,1,1,1,3_1,none,1_12,8_1,1_0;0_1;0_-1;-1_0;-1_1;-1_-1,red;red;red;red;red;red,CardIcon/1012,鍒鎵,2 +1004,1,2,1,3_1,none,12;13,2;2,0_0;1_0;0_-1;0_1,blue;blue;red;red,CardIcon/1011,鎼滅储,1 +1005,1,1,1,3_1,none,1;12,8;1,1_0;0_1;0_-1;-1_0;-1_1;-1_-1,red;red;red;red;red;red,CardIcon/1012,鍒鎵,2 1006,1,0,1,3_1,none,13,2,1_0;0_-1;0_1;2_0;1_-1;1_1,red;red;red;blue;blue;blue,CardIcon/1013,鍠峰悙,2 1009,1,1,1,3_1,none,23,1,0_0;1_0;2_0,yellow;yellow;yellow,CardIcon/1016,绐佸埡,2 1010,1,2,1,3_1,none,19,2,0_0;1_0;2_0;1_1;1_-1,blue;blue;blue;blue;blue,CardIcon/1017,閲嶉敜,1 @@ -11,6 +11,6 @@ 1012,1,0,1,3_1,none,none,none,0_0;1_0;0_1,yellow;red;blue,CardIcon/1019,褰╃悆,1 1013,1,2,1,3_1,none,2,10,1_0;0_-1;0_1;2_0;1_-1;1_1;3_0;2_1;2_-1,red;red;red;blue;blue;blue;yellow;yellow;yellow,CardIcon/1020,涔濆鏍,2 1014,1,2,1,3_1,none,1,7,1_0;2_0;3_0;-1_1;-1_2;-2_3;-1_-1;-1_-2;-2_-3,red;red;red;yellow;yellow;yellow;blue;blue;blue,CardIcon/1021,涓夎壊绾,2 -1016,1,1,1,3_1,none,53,2鏈3鏃,0_0;1_0;2_0;0_1;0_-1;1_2;1_-2,red;red;red;red;red;red;red,CardIcon/1021,鏁e皠,1 +1016,1,1,1,3_1,none,53,2-3,0_0;1_0;2_0;0_1;0_-1;1_2;1_-2,red;red;red;red;red;red;red,CardIcon/1021,鏁e皠,1 1017,1,2,1,3_1,none,17,1,0_0;1_0;2_0;3_0;2_1;2_-1;2_2;2_-2,blue;blue;blue;blue;blue;blue;blue;blue,CardIcon/1021,鍗曞悜绠ご,2 1007,1,3,1,3_1,none,1,32,0_0;1_0;0_1;0_-1;1_1;1_-1;1_2;1_-2,black;black;black;black;black;black;black;black,CardIcon/1021,榛戠伀鑽,3 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv index 2a809387..6e5d189e 100644 --- a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv @@ -1,33 +1,33 @@ -锘縄D,娑堣楃被鍨,娑堣楁暟鍊,鍩虹鍔熻兘,鏁板,鏉′欢,浜掓枼鍔熻兘,鏁板,鍦板潡鏍囪,鍥剧墖璺緞,鏂芥硶鑼冨洿,绋鏈夊害,娑堣,鍚嶅瓧,鍗$墝鎻忚堪 -2001,1,0,77,1,red>8,78,1,0_0,CardIcon/1010,0,1,0,琛绁,none -2002,1,2,none,none,none;blue>10,72;73,1;1,0_0,CardIcon/1010,0,2,0,鐚╃孩椋庢毚,瀵2鑼冨洿鍐呭崟浣嶆柦鍔1娴佽 -2003,1,1,none,none,none;red>9,74;74,2;3,0_0,CardIcon/1010,1,2,1,琛鐤,涓3娆 -2004,1,3,71,1,none;red>10,70;70,2;1,0_0,CardIcon/1010,0,3,0,琛鐩,涓1鍥炲悎鏃犳硶鑾峰緱鎶ょ浘 -2005,1,1,79;80,1;1,yellow>11,33,1,0_0,CardIcon/1010,0,2,0,绛変环浠f崲,none -2006,1,2,54,9,red>9,55,3,0_0,CardIcon/1010,0,2,0,琛灞,none -2007,1,2,none,none,none;red>12,75;76,1;1,0_0,CardIcon/1010,0,2,1,璧嬭兘,3娆℃祦琛 -2008,1,1,56,2,none;yellow>4,13;none,1;none,0_0,CardIcon/1010,0,1,0,鐐奸噾灏忓寘,涓嶄細涓㈠純鐗 -2009,1,0,11;81,1;1,none,none,none,0_0,CardIcon/1010,0,1,1,鐜懓鑼,none -2012,1,1,40;50,-1;2,none,none,none,0_0,CardIcon/1010,0,1,0,鍐烽潤,none -2014,1,1,57,4,blue>9,57,2,0_0,CardIcon/1010,0,2,0,鍓茶,none -2015,1,2,none,none,none;yellow>4,1;53,15;5-3,0_0,CardIcon/1010,1,3,0,宸﹀彸寮寮,none -2016,1,1,82,1,none,none,none,0_0,CardIcon/1010,0,3,1,娑堝け,none -2017,1,1,83,3,yellow>4,86,1,0_0,CardIcon/1010,1,3,0,姝讳骸鍗拌,none -2018,1,1,84;85,1;1,yellow>5,33,1,0_0,CardIcon/1010,1,2,0,鏆楀奖姝,none -2019,1,3,none,none,none;red>12,1;53,10;5-2,0_0,CardIcon/1010,1,2,0,褰辫垶姝,none -2021,1,1,90,1,blue>7,89,1,0_0,CardIcon/1010,0,3,1,琛鎬,none -2022,1,3,none,none,none;red>5,68;69,1;1,0_0,CardIcon/1010,1,3,0,鎶借,none -2023,1,1,none,none,none;yellow>5,52;52,2;3,0_0,CardIcon/1010,1,1,0,韪㈠嚮,none -2024,1,1,none,none,none;red>10,52;52,1;2,0_1;1_0;0_-1;-1_0;-1_1;-1_-1,CardIcon/1010,0,1,0,灞曠繀,鍑婚2鏍 -2026,1,1,40,2,blue>5,16,1,0_0,CardIcon/1010,0,2,0,鐤捐窇,none -2027,1,2,none,none,none;blue>10,5_58;5_58,2_2;3_3,0_0,CardIcon/1010,1,2,0,绌疯拷鐚涚爫,none -2028,1,1,none,none,none;aroundblue=4,53;53,6-2;6-4,0_1;1_0;0_-1;-1_0;-1_1;-1_-1,CardIcon/1010,1,3,0,鍓戝垉椋庢毚,none -2029,1,1,59,1,blue>11,60,1,0_0,CardIcon/1010,0,2,1,鏆撮鍚稿叆,闅忔満鐣欎笅涓鍗 -2030,1,1,60,1,yellow>10,61,1,0_0,CardIcon/1010,0,2,0,姹插彇,none -2031,1,0,12,1,red>9,91,1,0_0,CardIcon/1010,0,2,0,鍐嶆潵涓鏉,none -2032,1,2,49,1,none,none,none,0_0,CardIcon/1010,1,1,0,鐐圭紑,none -2034,1,1,63,1,none,none,none,0_0,CardIcon/1010,1,2,0,鐩惧嚮,none -2035,1,1,1,7,none;blue>9,64;64,8;10,0_0,CardIcon/1010,1,1,0,鎾曟壇,鑾峰緱10鐐规姢鐩 -2036,1,1,65,5,none;yellow>10,66;67,1;1,0_0,CardIcon/1010,1,3,1,琛铔,缈讳笁鍊 -2037,1,2,18,1,red>9,33,1,0_0,CardIcon/1010,0,2,1,鐩惧瀿,none -2039,1,0,65,5,none;red>19,11;11,2;3,0_0,CardIcon/1010,0,3,1,鎴樺惣,none +锘縄D,娑堣楃被鍨,娑堣楁暟鍊,鍩虹鍔熻兘,鏁板,鏉′欢,棰濆鍔熻兘,鏁板,鍚﹀畾鍔熻兘,鍦板潡鏍囪,鍥剧墖璺緞,鏂芥硶鑼冨洿,绋鏈夊害,娑堣,鍚嶅瓧,鍗$墝鎻忚堪 +2001,1,0,77,1,red>8,78,1,none,0_0,CardIcon/1010,0,1,0,琛绁,none +2002,1,2,72,1,blue>10,73,1,72,0_0,CardIcon/1010,0,2,0,鐚╃孩椋庢毚,瀵2鑼冨洿鍐呭崟浣嶆柦鍔1娴佽 +2003,1,1,74,2,red>9,74,3,74,0_0,CardIcon/1010,1,2,1,琛鐤,涓3娆 +2004,1,3,71;70,1;2,red>10,70,1,70,0_0,CardIcon/1010,0,3,0,琛鐩,涓1鍥炲悎鏃犳硶鑾峰緱鎶ょ浘 +2005,1,1,79;80,1;1,yellow>11,33,1,none,0_0,CardIcon/1010,0,2,0,绛変环浠f崲,none +2006,1,2,54,9,red>9,55,3,none,0_0,CardIcon/1010,0,2,0,琛灞,none +2007,1,2,75,1,red>12,76,1,75,0_0,CardIcon/1010,0,2,1,璧嬭兘,3娆℃祦琛 +2008,1,1,56;13,2;1,yellow>4,none,none,13,0_0,CardIcon/1010,0,1,0,鐐奸噾灏忓寘,涓嶄細涓㈠純鐗 +2009,1,0,11;93,1;1,none,none,none,none,0_0,CardIcon/1010,0,1,1,鐜懓鑼,none +2012,1,1,40;93,-1;2,none,none,none,none,0_0,CardIcon/1010,0,1,0,鍐烽潤,none +2014,1,1,57,4,blue>9,57,2,none,0_0,CardIcon/1010,0,2,0,鍓茶,none +2015,1,2,1,15,yellow>4,53,5-3,1,0_0,CardIcon/1010,1,3,0,宸﹀彸寮寮,none +2016,1,1,82,1,none,none,none,none,0_0,CardIcon/1010,0,3,1,娑堝け,none +2017,1,1,83,3,yellow>4,93,1,none,0_0,CardIcon/1010,1,3,0,姝讳骸鍗拌,none +2018,1,1,84;85,1;1,yellow>5,33,1,none,0_0,CardIcon/1010,1,2,0,鏆楀奖姝,none +2019,1,3,94,10,red>12,95,5-2,94,0_0,CardIcon/1010,1,2,0,褰辫垶姝,none +2021,1,1,90,1,blue>7,89,1,none,0_0,CardIcon/1010,0,3,1,琛鎬,none +2022,1,3,68,1,red>5,69,1,68,0_0,CardIcon/1010,1,3,0,鎶借,none +2023,1,1,52,2,yellow>5,52,3,52,0_0,CardIcon/1010,1,1,0,韪㈠嚮,none +2024,1,1,52,1,red>10,52,2,52,0_1;1_0;0_-1;-1_0;-1_1;-1_-1,CardIcon/1010,0,1,0,灞曠繀,鍑婚2鏍 +2026,1,1,40,2,blue>5,16,1,none,0_0,CardIcon/1010,0,2,0,鐤捐窇,none +2027,1,2,5;58,2;2,blue>10,5;58,3;3,5;58,0_0,CardIcon/1010,1,2,0,绌疯拷鐚涚爫,none +2028,1,1,53,6-2,aroundblue=4,53,6-4,53,0_1;1_0;0_-1;-1_0;-1_1;-1_-1,CardIcon/1010,1,3,0,鍓戝垉椋庢毚,none +2029,1,1,59,1,blue>11,60,1,59,0_0,CardIcon/1010,0,2,1,鏆撮鍚稿叆,闅忔満鐣欎笅涓鍗 +2030,1,1,60,1,yellow>10,61,1,60,0_0,CardIcon/1010,0,2,0,姹插彇,none +2031,1,0,12,1,red>9,91,1,91,0_0,CardIcon/1010,0,2,0,鍐嶆潵涓鏉,none +2032,1,2,49,1,none,none,none,none,0_0,CardIcon/1010,1,1,0,鐐圭紑,none +2034,1,1,63,1,red>12,93,1,none,0_0,CardIcon/1010,1,2,0,鐩惧嚮,none +2035,1,1,1;64,7;8,blue>9,64,10,64,0_0,CardIcon/1010,1,1,0,鎾曟壇,鑾峰緱10鐐规姢鐩 +2036,1,1,65;66,5;1,yellow>10,67,1,66,0_0,CardIcon/1010,1,3,1,琛铔,缈讳笁鍊 +2037,1,2,18,1,red>9,33,1,none,0_0,CardIcon/1010,0,2,1,鐩惧瀿,none +2039,1,0,65;11,5;2,red>19,11,3,11,0_0,CardIcon/1010,0,3,1,鎴樺惣,none