卡牌锻造 #88

Merged
yjm484 merged 1 commits from dev-0310-yjm into dev-1217 11 months ago
  1. 2
      ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset
  2. 30
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs
  3. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Calm.cs.meta
  4. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs
  5. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  6. 63
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  7. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs
  8. 46
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs
  9. 61
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs
  10. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/ChooseWeapon/ColorSlot.cs
  11. 1
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Enemy.cs
  12. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs
  13. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Shop/ColorSlotInChange.cs
  14. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs
  15. 22
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs
  16. 17
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs
  17. 171
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs
  18. 1
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs
  19. 60
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs
  20. 15
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs
  21. 3
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs
  22. 6
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_5.csv
  23. 66
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv

2
ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset

@ -19,4 +19,4 @@ MonoBehaviour:
- 2004
- 2005
- 2006
- 2006

30
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;
}
}

11
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:

4
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)

4
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;

63
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs

@ -118,6 +118,7 @@ public class CardEntity : MonoBehaviour
{
checkAndUpdateCondition();
createCardCost();
CardResourcesManager.getFunAndValForSwage(cardOriginalData.Cost, CardFunction.cardDamage);
//createCastRange();
}
IEnumerator SyncVuleText()
@ -531,13 +532,12 @@ public class CardEntity : MonoBehaviour
}
}
private bool conditionCheck(string conditon, Tuple<string, string> 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; // µÚÒ»²¿·Ö
@ -806,7 +806,12 @@ public class CardEntity : MonoBehaviour
List<bool> allMatchList = new List<bool>();
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<bool> matchList=new List<bool>();
@ -825,7 +830,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++)
@ -841,7 +846,7 @@ public class CardEntity : MonoBehaviour
if (isAllMatch)
{
exclusiveConditionIndex = i;
canexclusiveCondition=true;
canexclusiveCondition = true;
condition.sprite = successCondition;
}
else
@ -850,31 +855,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<string, string> 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()
{

6
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs

@ -27,8 +27,12 @@ public class CardOriginalData : System.Object
public Dictionary<string, string> showFunctionVal;
public HashSet<string> denyFunction;
public Dictionary<string, string> commonFunctionVal;
public Dictionary<string, string> 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;

46
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs

@ -221,8 +221,11 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.commonFunctionVal = new Dictionary<string, string>();
cardOriginalData.denyFunction = new HashSet<string>();
cardOriginalData.CardType = Name.CardType.dyeing;
cardOriginalData.ImgPath = values[10];
cardOriginalData.conditionFunctionVal = new Dictionary<string, string>();
cardOriginalData.condition = values[5].Split(";");
for (int i = 0; i < cardOriginalData.nodesMark.Length; i++)
{
// ²ð·Ö×ø±ê
@ -237,8 +240,15 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
// Ìí¼Óµ½ 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<CardOriginalDataList>
cardOriginalData.cardImageMark = new HashSet<CoordinateColorPair>();
//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<string, Tuple<string, string>>();
cardOriginalData.commonFunctionVal = new Dictionary<string, string>();
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.conditionFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.denyFunction = new HashSet<string>();
cardOriginalData.CardType = Name.CardType.effect;
cardOriginalData.ImgPath = values[9];
cardOriginalData.CastingRange = int.Parse(values[10]);
cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.ImgPath = values[10];
cardOriginalData.CastingRange = int.Parse(values[11]);
//cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
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<string, string>(function[i], functionVal[i]));
cardOriginalData.conditionFunctionVal.Add(conditionFunction[i], conditionFunctionVal[i]);
}
for (int i = 0; i < commonFunction.Length; i++)
{

61
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 <CardResourcesManager>
{
@ -225,4 +230,60 @@ public class CardResourcesManager : Singleton <CardResourcesManager>
}
}
public static Dictionary<string, string> getFunAndValForSwage(int cost, string originFun)
{
Dictionary<string, string> result = new Dictionary<string, string>();
HashSet<string> pool = new HashSet<string>();
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<string,string> kvp in result)
{
StringBuilder sb = new StringBuilder();
Name.getSingleDescription(sb, kvp);
Debug.Log("Swage内容是" + sb.ToString());
}
return result;
}
public List<string> getCardCondition(string condition)
{
List<string> result= new List<string>();
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<string> firstPartSet = MathTool.GetRandomElements(new HashSet<string>(Name.Color.PlayerColor), 1);
string firstPart = firstPartSet.ElementAt(0); // 第一部分结果
HashSet<string> opPartSet = MathTool.GetRandomElements(new HashSet<string>(Name.Op.AllOp), 1);
string op = opPartSet.ElementAt(0); // 运算符部分结果
string beforeSecondPart = match.Groups[3].Value;
int secondPartCount = CardManager.Instance.evaluateExpression(beforeSecondPart);
HashSet<string> secondPartSet = MathTool.GetRandomElements(MathTool.GetTargetRange(secondPartCount,2), 1);
string secondPart= secondPartSet.ElementAt(0);// 第二部分结果
sb.Append(firstPart).Append(op).Append(secondPart);
}
return sb.ToString();
}
}

4
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;
}

1
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
{

2
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)
{

2
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
{

4
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs

@ -105,11 +105,13 @@ public class AbnormalCondition : Singleton<AbnormalCondition>
public const string tempEmberTwoRound = "88";
//ÏÂÕÅÍ¿É«ÅÆÏûºÄΪ0
public const string nextDyeingCardCostZero = "92";
//Àä¾²
public const string calm = "93";
public static readonly List<string> canNegativeNumberList = new List<string> { angerUpperDamage, shieldUpperValue, addDrawCard };
public static readonly List<string> playBuffList = new List<string> {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost ,tempCastRange, bleedDamage, bleed3TurnCost, bleed4TurnCost, nextCardCostMinusOne, nextCardCostHp, dyeingCardCostMinusOne
,nextDyeingCardRangeAddTwo,nextEffectCardDoubleSettle};
,nextDyeingCardRangeAddTwo,nextEffectCardDoubleSettle,calm};
public static readonly List<string> playUndeterminedBuffList = new List<string> { angerUpperDamage, shieldUpperValue };

22
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<string> BuffList = new() { bleed, vulnerable, downSpeed, ember, deathMark, tempCastRange, calm , enhanceShield
,weak,bleedDamage,immunity,thorn};
public static readonly HashSet<string> ActList = new() { damagexy, cardDamage, cardShield, repel, recoverHp, step, reduceCost,costRestore};
}

17
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs

@ -317,6 +317,23 @@ public class MathTool
}
return new HashSet<string>(set.OrderBy(x => rand.Next()).Take(a));
}
public static HashSet<string> GetTargetRange(int target, int range)
{
HashSet<string> result = new HashSet<string>();
// 计算范围的起始和结束值
int start = target - range;
int end = target + range;
// 遍历范围内的所有整数并转为字符串
for (int i = start; i <= end; i++)
{
result.Add(i.ToString());
}
return result;
}
}

171
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs

@ -102,7 +102,7 @@ public static class Name
}
getSingleDescription(sb, kvp);
}
foreach (KeyValuePair<string, Tuple<string, string>> kvp in cardOriginalData.conditionAndFunctionVal)
/*foreach (KeyValuePair<string, Tuple<string, string>> kvp in cardOriginalData.conditionAndFunctionVal)
{
if (!kvp.Key.Equals(none))
{
@ -122,7 +122,7 @@ public static class Name
}
KeyValuePair<string, string> cardFunAadVal = new KeyValuePair<string, string>(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<string, Tuple<string, string>> kvp in cardOriginalData.conditionAndFunctionVal)
if (cardOriginalData.condition[0] != Name.none)
{
if (!kvp.Key.Equals(none))
sb.Append(";");
sb.Append("<link>");
sb.Append(cardOriginalData.condition[0]);
sb.Append("</link>");
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<string, string> kvp in cardOriginalData.conditionFunctionVal)
{
KeyValuePair<string, string> cardFunAadVal = new KeyValuePair<string, string>(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<string, string> kvp)
{
switch (kvp.Key)
{
case CardFunction.cardDamage:
sb.Append("{造成" + kvp.Value + "点伤害}");
sb.Append("<link=\""+ kvp.Key+ "\">造成" + kvp.Value + "点伤害</link>");
break;
case CardFunction.cardShield:
sb.Append("{获得" + kvp.Value + "点护盾}");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点护盾</link>");
break;
case CardFunction.posion:
sb.Append("{施加" + kvp.Value + "层中毒}");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层中毒</link>");
break;
case CardFunction.fireSeed:
sb.Append("{施加" + kvp.Value + "层火种}");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层火种</link>");
break;
case CardFunction.vulnerable:
sb.Append("{施加" + kvp.Value + "层易伤}");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层易伤</link>");
break;
case CardFunction.weak:
sb.Append("{施加" + kvp.Value + "层虚弱}");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层虚弱</link>");
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("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层流血</link>");
break;
case CardFunction.thorn:
sb.Append("获得" + kvp.Value + "层荆棘");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层荆棘</link>");
break;
case CardFunction.ember:
sb.Append("{获得" + kvp.Value + "层狂热}");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层狂热</link>");
break;
case CardFunction.upSpeed:
sb.Append("{获得" + kvp.Value + "层加速}");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层加速</link>");
break;
case CardFunction.calm:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层冷静</link>");
break;
case CardFunction.tempCastRange:
sb.Append("<link=\"" + kvp.Key + "\">卡牌释放距离增加" + kvp.Value + "</link>");
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("<link=\"" + kvp.Key + "\">恢复" + kvp.Value + "点血量</link>");
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("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点能量</link>");
break;
case CardFunction.drawCard:
sb.Append("{抽" + kvp.Value + "张牌}");
sb.Append("<link=\"" + kvp.Key + "\">抽" + kvp.Value + "张牌</link>");
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("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点移动力</link>");
}
else
{
sb.Append("{失去" + -int.Parse(kvp.Value) + "点移动力}");
sb.Append("<link=\"" + kvp.Key + "\">失去" + -int.Parse(kvp.Value) + "点移动力</link>");
}
break;
case CardFunction.dyeingAround:
@ -280,7 +291,7 @@ public static class Name
sb.Append("下一张效果牌结算两次");
break;
case CardFunction.deathMark:
sb.Append("{施加" + kvp.Value + "层死亡印记}");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层死亡印记</link>");
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("<link=\"" + kvp.Key + "\">增加" + kvp.Value + "点流血伤害</link>");
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("<link=\"" + kvp.Key + "\">造成" + values[0] + "点伤害" + values[1] + "次</link>");
break;
case CardFunction.repel:
sb.Append("击退" + kvp.Value + "格");
break;
case CardFunction.reduceCost:
sb.Append("费用-" + kvp.Value);
sb.Append("<link=\"" + kvp.Key + "\">费用-" + kvp.Value + "</link>");
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<string> AllColor = new() { Red, Green, Blue, Yellow ,White, Black , Metal };
public static readonly List<string> 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<string> 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";
}
}

1
ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs

@ -55,6 +55,7 @@ public class BuffDataManager : Singleton<BuffDataManager>
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());

60
ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs

@ -22,25 +22,55 @@ public class CardManager : Singleton<CardManager>
{
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<CardOriginalData>(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<string,string> newFunAndVal,string position, string originFun)
{
bool isInDeny=false;
//CardOriginalData newCardOriginalData=cardOriginalData;
CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject<CardOriginalData>(JsonConvert.SerializeObject(cardOriginalData));
if (position.Equals(Name.CardChangePosition.PartOne))
{
foreach(KeyValuePair<string, string> 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<string, string> value = newCardOriginalData.conditionAndFunctionVal[condition];
string newCondition=newColor+op+number;
newCardOriginalData.conditionAndFunctionVal.Remove(condition);
newCardOriginalData.conditionAndFunctionVal.Add(newCondition, value);
foreach (KeyValuePair<string, string> 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<CardManager>
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<CardOriginalData>(JsonConvert.SerializeObject(cardOriginalData));

15
ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

@ -812,6 +812,20 @@ public class SettlementManager : Singleton<SettlementManager>
List<MapUnity> redList = new List<MapUnity>(getNodeTools.getNodesWithColor(Name.Color.Red));
damageWork(int.Parse(kvp.Value), redList, pierceNum);
break;
case CardFunction.damageForBlueNode:
List<MapUnity> blueList = new List<MapUnity>(getNodeTools.getNodesWithColor(Name.Color.Blue));
damageWork(int.Parse(kvp.Value), blueList, pierceNum);
break;
case CardFunction.damagexyForBlueNode:
List<MapUnity> blueListA = new List<MapUnity>(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<SettlementManager>
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:

3
ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs

@ -541,8 +541,7 @@ public class Usermanager : Singleton<Usermanager>
{
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);

6
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,散射,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,散射,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

1 ID 费用类型 费用 施法范围 作用范围 条件 功能 数值 地块标记 地块颜色 图片路径 名称 稀有度
2 1001 1 1 1 3_1 none 1 5 0_0;1_0;2_0 white;white;white CardIcon/1010 挥砍 1
3 1002 1 1 1 3_1 none 2 4 0_0;-1_1;-1_-1 white;white;white CardIcon/1010 格挡 1
4 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
5 1004 1 2 1 3_1 none 12_13 12;13 2_2 2;2 0_0;1_0;0_-1;0_1 blue;blue;red;red CardIcon/1011 搜索 1
6 1005 1 1 1 3_1 none 1_12 1;12 8_1 8;1 1_0;0_1;0_-1;-1_0;-1_1;-1_-1 red;red;red;red;red;red CardIcon/1012 刀扇 2
7 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
8 1009 1 1 1 3_1 none 23 1 0_0;1_0;2_0 yellow;yellow;yellow CardIcon/1016 突刺 2
9 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 1012 1 0 1 3_1 none none none 0_0;1_0;0_1 yellow;red;blue CardIcon/1019 彩球 1
12 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
13 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
14 1016 1 1 1 3_1 none 53 2月3日 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 散射 1
15 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
16 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

66
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv

@ -1,33 +1,33 @@
ID,消耗类型,消耗数值,基础功能,数值,条件,互斥功能,数值,地块标记,图片路径,施法范围,稀有度,消耗,名字,卡牌描述
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,等价代换,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
ID,消耗类型,消耗数值,基础功能,数值,条件,额外功能,数值,否定功能,地块标记,图片路径,施法范围,稀有度,消耗,名字,卡牌描述
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,等价代换,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

1 ID 消耗类型 消耗数值 基础功能 数值 条件 互斥功能 额外功能 数值 否定功能 地块标记 图片路径 施法范围 稀有度 消耗 名字 卡牌描述
2 2001 1 0 77 1 red>8 78 78 1 none 0_0 CardIcon/1010 0 1 0 血祭 none
3 2002 1 2 none 72 none 1 none;blue>10 blue>10 72;73 73 1;1 1 72 0_0 CardIcon/1010 0 2 0 猩红风暴 对2范围内单位施加1流血
4 2003 1 1 none 74 none 2 none;red>9 red>9 74;74 74 2;3 3 74 0_0 CardIcon/1010 1 2 1 血疗 下3次
5 2004 1 3 71 71;70 1 1;2 none;red>10 red>10 70;70 70 2;1 1 70 0_0 CardIcon/1010 0 3 0 血盾 下1回合无法获得护盾
6 2005 1 1 79;80 1;1 yellow>11 33 33 1 none 0_0 CardIcon/1010 0 2 0 等价代换 none
7 2006 1 2 54 9 red>9 55 55 3 none 0_0 CardIcon/1010 0 2 0 血山 none
8 2007 1 2 none 75 none 1 none;red>12 red>12 75;76 76 1;1 1 75 0_0 CardIcon/1010 0 2 1 赋能 3次流血
9 2008 1 1 56 56;13 2 2;1 none;yellow>4 yellow>4 13;none none 1;none none 13 0_0 CardIcon/1010 0 1 0 炼金小包 不会丢弃牌
10 2009 1 0 11;81 11;93 1;1 none none none none none 0_0 CardIcon/1010 0 1 1 玫瑰茶 none
11 2012 1 1 40;50 40;93 -1;2 none none none none none 0_0 CardIcon/1010 0 1 0 冷静 none
12 2014 1 1 57 4 blue>9 57 57 2 none 0_0 CardIcon/1010 0 2 0 割裂 none
13 2015 1 2 none 1 none 15 none;yellow>4 yellow>4 1;53 53 15;5-3 5-3 1 0_0 CardIcon/1010 1 3 0 左右开弓 none
14 2016 1 1 82 1 none none none none none 0_0 CardIcon/1010 0 3 1 消失 none
15 2017 1 1 83 3 yellow>4 86 93 1 none 0_0 CardIcon/1010 1 3 0 死亡印记 none
16 2018 1 1 84;85 1;1 yellow>5 33 33 1 none 0_0 CardIcon/1010 1 2 0 暗影步 none
17 2019 1 3 none 94 none 10 none;red>12 red>12 1;53 95 10;5-2 5-2 94 0_0 CardIcon/1010 1 2 0 影舞步 none
18 2021 1 1 90 1 blue>7 89 89 1 none 0_0 CardIcon/1010 0 3 1 血怒 none
19 2022 1 3 none 68 none 1 none;red>5 red>5 68;69 69 1;1 1 68 0_0 CardIcon/1010 1 3 0 抽血 none
20 2023 1 1 none 52 none 2 none;yellow>5 yellow>5 52;52 52 2;3 3 52 0_0 CardIcon/1010 1 1 0 踢击 none
21 2024 1 1 none 52 none 1 none;red>10 red>10 52;52 52 1;2 2 52 0_1;1_0;0_-1;-1_0;-1_1;-1_-1 CardIcon/1010 0 1 0 展翅 击退2格
22 2026 1 1 40 2 blue>5 16 16 1 none 0_0 CardIcon/1010 0 2 0 疾跑 none
23 2027 1 2 none 5;58 none 2;2 none;blue>10 blue>10 5_58;5_58 5;58 2_2;3_3 3;3 5;58 0_0 CardIcon/1010 1 2 0 穷追猛砍 none
24 2028 1 1 none 53 none 6-2 none;aroundblue=4 aroundblue=4 53;53 53 6-2;6-4 6-4 53 0_1;1_0;0_-1;-1_0;-1_1;-1_-1 CardIcon/1010 1 3 0 剑刃风暴 none
25 2029 1 1 59 1 blue>11 60 60 1 59 0_0 CardIcon/1010 0 2 1 暴风吸入 随机留下一半
26 2030 1 1 60 1 yellow>10 61 61 1 60 0_0 CardIcon/1010 0 2 0 汲取 none
27 2031 1 0 12 1 red>9 91 91 1 91 0_0 CardIcon/1010 0 2 0 再来一杯 none
28 2032 1 2 49 1 none none none none none 0_0 CardIcon/1010 1 1 0 点缀 none
29 2034 1 1 63 1 none red>12 none 93 none 1 none 0_0 CardIcon/1010 1 2 0 盾击 none
30 2035 1 1 1 1;64 7 7;8 none;blue>9 blue>9 64;64 64 8;10 10 64 0_0 CardIcon/1010 1 1 0 撕扯 获得10点护盾
31 2036 1 1 65 65;66 5 5;1 none;yellow>10 yellow>10 66;67 67 1;1 1 66 0_0 CardIcon/1010 1 3 1 血蛭 翻三倍
32 2037 1 2 18 1 red>9 33 33 1 none 0_0 CardIcon/1010 0 2 1 盾垒 none
33 2039 1 0 65 65;11 5 5;2 none;red>19 red>19 11;11 11 2;3 3 11 0_0 CardIcon/1010 0 3 1 战吼 none
Loading…
Cancel
Save