Browse Source

合并

pull/89/head
45 11 months ago
parent
commit
0ea9d2700a
  1. 3
      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. 43
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  7. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs
  8. 44
      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. 157
      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

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

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

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 class Buff_Thorn : Buff
{ {
public override void Settle()
{
}
public override void SettleEnemy(EnemyNode enemyNode) 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; 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)) if (cardEntity.cardOriginalData.TrueFunctionVal.ContainsKey(CardFunction.castRangePlusOne))
{ {
castRange += 1; castRange += 1;

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

@ -120,6 +120,7 @@ public class CardEntity : MonoBehaviour
{ {
checkAndUpdateCondition(); checkAndUpdateCondition();
createCardCost(); createCardCost();
CardResourcesManager.getFunAndValForSwage(cardOriginalData.Cost, CardFunction.cardDamage);
//createCastRange(); //createCastRange();
} }
IEnumerator SyncVuleText() IEnumerator SyncVuleText()
@ -533,13 +534,12 @@ public class CardEntity : MonoBehaviour
} }
} }
private bool conditionCheck(string conditon, Tuple<string, string> tuple, int conditionListindex) private bool conditionCheck(string conditon)
{ {
bool check=false; bool check=false;
string pattern = @"(\w+)([><=])(\d+)";
//cardOriginalData.originFunctionVal.Clear(); //cardOriginalData.originFunctionVal.Clear();
//Debug.Log("ÍâÃæconditionÊÇ" + kvp.Key); //Debug.Log("ÍâÃæconditionÊÇ" + kvp.Key);
Match match = Regex.Match(conditon, pattern); Match match = Regex.Match(conditon, Name.Regex.cardConditionPattern);
if (match.Success) if (match.Success)
{ {
string firstPart = match.Groups[1].Value; // µÚÒ»²¿·Ö string firstPart = match.Groups[1].Value; // µÚÒ»²¿·Ö
@ -808,7 +808,12 @@ public class CardEntity : MonoBehaviour
List<bool> allMatchList = new List<bool>(); List<bool> allMatchList = new List<bool>();
int exclusiveConditionIndex = 0; int exclusiveConditionIndex = 0;
bool canexclusiveCondition=false; 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; bool isAllMatch=true;
List<bool> matchList=new List<bool>(); List<bool> matchList=new List<bool>();
@ -827,7 +832,7 @@ public class CardEntity : MonoBehaviour
} }
else else
{ {
matchList.Add(conditionCheck(keys[j], kvp.Value, i)); matchList.Add(conditionCheck(keys[j]));
} }
} }
for (int k = 0; k < matchList.Count; k++) for (int k = 0; k < matchList.Count; k++)
@ -843,7 +848,7 @@ public class CardEntity : MonoBehaviour
if (isAllMatch) if (isAllMatch)
{ {
exclusiveConditionIndex = i; exclusiveConditionIndex = i;
canexclusiveCondition=true; canexclusiveCondition = true;
condition.sprite = successCondition; condition.sprite = successCondition;
} }
else else
@ -852,10 +857,20 @@ public class CardEntity : MonoBehaviour
} }
} }
string[] fun = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item1.Split("_"); string[] fun = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item1.Split("_");
string[] vals = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item2.Split("_"); string[] vals = cardOriginalData.conditionAndFunctionVal.ElementAt(exclusiveConditionIndex).Value.Item2.Split("_");*/
if (canexclusiveCondition)
//resultsScreenCal(cardDataSummary);
}
private void addConditionFunAndVal()
{ {
for (int j = 0; j < fun.Length; j++) foreach(KeyValuePair<string, string> kvp in cardOriginalData.conditionFunctionVal)
{
MathTool.AddOrUpdateDictionary(cardOriginalData.TrueFunctionVal, kvp.Key, kvp.Value);
}
/*for (int j = 0; j < fun.Length; j++)
{ {
if (int.TryParse(vals[j], out int newValue)) if (int.TryParse(vals[j], out int newValue))
{ {
@ -872,11 +887,15 @@ public class CardEntity : MonoBehaviour
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() 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 Dictionary<string, string> showFunctionVal;
public HashSet<string> denyFunction;
public Dictionary<string, string> commonFunctionVal; public Dictionary<string, string> commonFunctionVal;
public Dictionary<string, string> conditionFunctionVal;
private string cardType; private string cardType;
private string description; private string description;
@ -45,7 +49,7 @@ public class CardOriginalData : System.Object
private string cardRelease; private string cardRelease;
public string condition; public string[] condition;
public string[] nodesMark; public string[] nodesMark;

44
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.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>(); cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.commonFunctionVal = new Dictionary<string, string>(); cardOriginalData.commonFunctionVal = new Dictionary<string, string>();
cardOriginalData.denyFunction = new HashSet<string>();
cardOriginalData.CardType = Name.CardType.dyeing; cardOriginalData.CardType = Name.CardType.dyeing;
cardOriginalData.ImgPath = values[10]; cardOriginalData.ImgPath = values[10];
cardOriginalData.conditionFunctionVal = new Dictionary<string, string>();
cardOriginalData.condition = values[5].Split(";");
for (int i = 0; i < cardOriginalData.nodesMark.Length; i++) for (int i = 0; i < cardOriginalData.nodesMark.Length; i++)
{ {
// ²ð·Ö×ø±ê // ²ð·Ö×ø±ê
@ -237,7 +240,14 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
// Ìí¼Óµ½ HashSet // Ìí¼Óµ½ HashSet
cardOriginalData.cardImageMark.Add(pair); 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; return cardOriginalData;
} }
@ -247,32 +257,38 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
cardOriginalData.cardImageMark = new HashSet<CoordinateColorPair>(); cardOriginalData.cardImageMark = new HashSet<CoordinateColorPair>();
//CardOriginalData cardOriginalData = CardOriginalData.Instance; //CardOriginalData cardOriginalData = CardOriginalData.Instance;
cardOriginalData.CardId = values[0]; cardOriginalData.CardId = values[0];
cardOriginalData.ChineseName = values[13]; cardOriginalData.ChineseName = values[14];
cardOriginalData.Description = values[14]; cardOriginalData.Description = values[15];
cardOriginalData.costType = values[1]; cardOriginalData.costType = values[1];
cardOriginalData.Cost = int.Parse(values[2]); cardOriginalData.Cost = int.Parse(values[2]);
cardOriginalData.Rarity = int.Parse(values[11]); cardOriginalData.Rarity = int.Parse(values[12]);
//cardOriginalData.EffectRange = values[3]; //cardOriginalData.EffectRange = values[3];
cardOriginalData.IsDisposable = int.Parse(values[12]) == 1; cardOriginalData.IsDisposable = int.Parse(values[13]) == 1;
cardOriginalData.nodesMark = values[8].Split(";"); cardOriginalData.nodesMark = values[9].Split(";");
//cardOriginalData.nodesColor = values[8].Split(";"); //cardOriginalData.nodesColor = values[8].Split(";");
cardOriginalData.conditionAndFunctionVal = new Dictionary<string, Tuple<string, string>>(); cardOriginalData.conditionAndFunctionVal = new Dictionary<string, Tuple<string, string>>();
cardOriginalData.commonFunctionVal = new Dictionary<string, string>(); cardOriginalData.commonFunctionVal = new Dictionary<string, string>();
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>(); cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.conditionFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>(); cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.denyFunction = new HashSet<string>();
cardOriginalData.CardType = Name.CardType.effect; cardOriginalData.CardType = Name.CardType.effect;
cardOriginalData.ImgPath = values[9]; cardOriginalData.ImgPath = values[10];
cardOriginalData.CastingRange = int.Parse(values[10]); cardOriginalData.CastingRange = int.Parse(values[11]);
cardOriginalData.originFunctionVal = new HashSet<string>();
//cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>(); //cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
string[] condition = values[5].Split(";"); cardOriginalData.condition = values[5].Split(";");
string[] function = values[6].Split(";"); string[] conditionFunction = values[6].Split(";");
string[] functionVal = values[7].Split(";"); string[] conditionFunctionVal = values[7].Split(";");
string[] denyFunction = values[8].Split(";");
string[] commonFunction = values[3].Split(";"); string[] commonFunction = values[3].Split(";");
string[] commonFunctionVal = values[4].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++) 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;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using static Name;
using Regex = System.Text.RegularExpressions.Regex;
public class CardResourcesManager : Singleton <CardResourcesManager> 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; string newcard = "";
newcard = CardManager.Instance.switchColorAndAllCondition(cardEntity.cardId, cardEntity.cardOriginalData, newColor); //newcard = CardManager.Instance.switchColorAndAllCondition(cardEntity.cardId, cardEntity.cardOriginalData, newColor);
return newcard; 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.Collections.Generic;
using System.Linq; using System.Linq;
using UnityEngine; using UnityEngine;
using static TurnMaster;
public class Enemy : MonoBehaviour 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)) if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.thorn))
{ {
Usermanager.Instance.SufferTrueDamage(3); Usermanager.Instance.SufferTrueDamage(EnemyState.abnormalCondition[AbnormalCondition.thorn].value);
EnemyState.abnormalCondition[AbnormalCondition.thorn].value -= 1; EnemyState.abnormalCondition[AbnormalCondition.thorn].value -= 1;
if (EnemyState.abnormalCondition[AbnormalCondition.thorn].value <= 0) 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; string newcard;
if (index !=0) 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 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"; public const string tempEmberTwoRound = "88";
//ÏÂÕÅÍ¿É«ÅÆÏûºÄΪ0 //ÏÂÕÅÍ¿É«ÅÆÏûºÄΪ0
public const string nextDyeingCardCostZero = "92"; 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> 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 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 }; 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;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
using static Unity.Collections.AllocatorManager;
public static class CardFunction public static class CardFunction
{ {
@ -36,7 +38,7 @@ public static class CardFunction
public const string nodeDiffDamage = "15"; public const string nodeDiffDamage = "15";
//怒火 //怒火
public const string ember = "16"; public const string ember = "16";
//坚固 //敏捷
public const string enhanceShield = "17"; public const string enhanceShield = "17";
//强固 //强固
public const string firm = "18"; public const string firm = "18";
@ -58,7 +60,7 @@ public static class CardFunction
public const string consumePlayerNodesForHealth = "27"; public const string consumePlayerNodesForHealth = "27";
//消耗友方地块回复血量(双倍效果) //消耗友方地块回复血量(双倍效果)
public const string consumePlayerNodesForDoubleHealth = "28"; public const string consumePlayerNodesForDoubleHealth = "28";
//魔抗 //斗篷
public const string immunity = "29"; public const string immunity = "29";
//获得友方地块数/n的能量点 //获得友方地块数/n的能量点
public const string nodesForCost = "30"; public const string nodesForCost = "30";
@ -119,7 +121,7 @@ public static class CardFunction
public const string disable = "58"; public const string disable = "58";
//消耗所有黄,获得对应数量的护盾 //消耗所有黄,获得对应数量的护盾
public const string turnYellowNodesToShield = "59"; public const string turnYellowNodesToShield = "59";
//获得黄对应数量的护盾,下一半黄色 //获得黄对应数量的护盾,下一半黄色
public const string turnHalfYellowNodesToShield = "60"; public const string turnHalfYellowNodesToShield = "60";
//消耗玩家周围2范围地块,每消耗3红获得1层狂热 //消耗玩家周围2范围地块,每消耗3红获得1层狂热
public const string turn3RedNodesToEmber = "61"; public const string turn3RedNodesToEmber = "61";
@ -185,5 +187,19 @@ public static class CardFunction
public const string drawAndCopyCard = "91"; public const string drawAndCopyCard = "91";
//下张涂色牌消耗为0 //下张涂色牌消耗为0
public const string nextDyeingCardCostZero = "92"; 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)); 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;
}
} }

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

@ -102,7 +102,7 @@ public static class Name
} }
getSingleDescription(sb, kvp); 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)) 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); KeyValuePair<string, string> cardFunAadVal = new KeyValuePair<string, string>(kvp.Value.Item1, kvp.Value.Item2);
getSingleDescription(sb, cardFunAadVal); getSingleDescription(sb, cardFunAadVal);
} }*/
getConditionDescription(sb, cardOriginalData); getConditionDescription(sb, cardOriginalData);
@ -130,13 +130,11 @@ public static class Name
public static void getConditionDescription(StringBuilder sb, CardOriginalData cardOriginalData) 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(";");
sb.Append("<link=color>"); sb.Append("<link>");
sb.Append(kvp.Key); sb.Append(cardOriginalData.condition[0]);
sb.Append("</link>"); sb.Append("</link>");
sb.Append(","); sb.Append(",");
if (!cardOriginalData.Description.Equals(none)) if (!cardOriginalData.Description.Equals(none))
@ -145,33 +143,40 @@ public static class Name
} }
else else
{ {
KeyValuePair<string, string> cardFunAadVal = new KeyValuePair<string, string>(kvp.Value.Item1, kvp.Value.Item2); foreach (KeyValuePair<string, string> kvp in cardOriginalData.conditionFunctionVal)
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) public static void getSingleDescription(StringBuilder sb, KeyValuePair<string, string> kvp)
{ {
switch (kvp.Key) switch (kvp.Key)
{ {
case CardFunction.cardDamage: case CardFunction.cardDamage:
sb.Append("<link>造成" + kvp.Value + "点伤害</link>"); sb.Append("<link=\""+ kvp.Key+ "\">造成" + kvp.Value + "点伤害</link>");
break; break;
case CardFunction.cardShield: case CardFunction.cardShield:
sb.Append("<link>获得" + kvp.Value + "点护盾</link>"); sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点护盾</link>");
break; break;
case CardFunction.posion: case CardFunction.posion:
sb.Append("<link>施加" + kvp.Value + "层中毒</link>"); sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层中毒</link>");
break; break;
case CardFunction.fireSeed: case CardFunction.fireSeed:
sb.Append("<link>施加" + kvp.Value + "层火种</link>"); sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层火种</link>");
break; break;
case CardFunction.vulnerable: case CardFunction.vulnerable:
sb.Append("<link>施加" + kvp.Value + "层易伤</link>"); sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层易伤</link>");
break; break;
case CardFunction.weak: case CardFunction.weak:
sb.Append("<link>施加" + kvp.Value + "层虚弱</link>"); sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层虚弱</link>");
break; break;
case CardFunction.coma: case CardFunction.coma:
sb.Append("施加" + kvp.Value + "层昏迷"); sb.Append("施加" + kvp.Value + "层昏迷");
@ -183,16 +188,22 @@ public static class Name
sb.Append("施加" + kvp.Value + "层睡眠"); sb.Append("施加" + kvp.Value + "层睡眠");
break; break;
case CardFunction.bleed: case CardFunction.bleed:
sb.Append("<link>施加" + kvp.Value + "层流血</link>"); sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层流血</link>");
break; break;
case CardFunction.thorn: case CardFunction.thorn:
sb.Append("获得" + kvp.Value + "层荆棘"); sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层荆棘</link>");
break; break;
case CardFunction.ember: case CardFunction.ember:
sb.Append("<link>获得" + kvp.Value + "层狂热</link>"); sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层狂热</link>");
break; break;
case CardFunction.upSpeed: case CardFunction.upSpeed:
sb.Append("<link>获得" + kvp.Value + "层加速</link>"); 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; break;
case CardFunction.downSpeed: case CardFunction.downSpeed:
sb.Append("获得" + kvp.Value + "层减速"); sb.Append("获得" + kvp.Value + "层减速");
@ -204,7 +215,7 @@ public static class Name
sb.Append("获得" + kvp.Value + "层魔抗"); sb.Append("获得" + kvp.Value + "层魔抗");
break; break;
case CardFunction.recoverHp: case CardFunction.recoverHp:
sb.Append("<link>恢复" + kvp.Value + "点血量</link>"); sb.Append("<link=\"" + kvp.Key + "\">恢复" + kvp.Value + "点血量</link>");
break; break;
case CardFunction.extraDrawCardsNum: case CardFunction.extraDrawCardsNum:
sb.Append("下回合多抽" + kvp.Value + "张牌"); sb.Append("下回合多抽" + kvp.Value + "张牌");
@ -219,10 +230,10 @@ public static class Name
sb.Append("护盾不会消失"); sb.Append("护盾不会消失");
break; break;
case CardFunction.costRestore: case CardFunction.costRestore:
sb.Append("获得" + kvp.Value + "点能量"); sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点能量</link>");
break; break;
case CardFunction.drawCard: case CardFunction.drawCard:
sb.Append("<link>抽" + kvp.Value + "张牌</link>"); sb.Append("<link=\"" + kvp.Key + "\">抽" + kvp.Value + "张牌</link>");
break; break;
case CardFunction.discard: case CardFunction.discard:
sb.Append("弃" + kvp.Value + "张牌"); sb.Append("弃" + kvp.Value + "张牌");
@ -251,11 +262,11 @@ public static class Name
case CardFunction.step: case CardFunction.step:
if (int.Parse(kvp.Value) > 0) if (int.Parse(kvp.Value) > 0)
{ {
sb.Append("<link>获得" + kvp.Value + "点移动力</link>"); sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点移动力</link>");
} }
else else
{ {
sb.Append("<link>失去" + -int.Parse(kvp.Value) + "点移动力</link>"); sb.Append("<link=\"" + kvp.Key + "\">失去" + -int.Parse(kvp.Value) + "点移动力</link>");
} }
break; break;
case CardFunction.dyeingAround: case CardFunction.dyeingAround:
@ -280,7 +291,7 @@ public static class Name
sb.Append("下一张效果牌结算两次"); sb.Append("下一张效果牌结算两次");
break; break;
case CardFunction.deathMark: case CardFunction.deathMark:
sb.Append("<link>施加" + kvp.Value + "层死亡印记</link>"); sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层死亡印记</link>");
break; break;
case CardFunction.teleportAround: case CardFunction.teleportAround:
sb.Append("玩家出现在周围随机1格"); sb.Append("玩家出现在周围随机1格");
@ -343,7 +354,7 @@ public static class Name
sb.Append("消耗所有黄色,获得对应数量的护盾"); sb.Append("消耗所有黄色,获得对应数量的护盾");
break; break;
case CardFunction.bleedDamage: case CardFunction.bleedDamage:
sb.Append("增加" + kvp.Value + "点流血伤害"); sb.Append("<link=\"" + kvp.Key + "\">增加" + kvp.Value + "点流血伤害</link>");
break; break;
case CardFunction.drawDyeingCard: case CardFunction.drawDyeingCard:
sb.Append("抽" + kvp.Value + "张涂色牌"); sb.Append("抽" + kvp.Value + "张涂色牌");
@ -356,19 +367,90 @@ public static class Name
break; break;
case CardFunction.damagexy: case CardFunction.damagexy:
string[] values = kvp.Value.Split("-"); string[] values = kvp.Value.Split("-");
sb.Append("造成" + values[0] + "点伤害" + values[1] + "次"); sb.Append("<link=\"" + kvp.Key + "\">造成" + values[0] + "点伤害" + values[1] + "次</link>");
break; break;
case CardFunction.repel: case CardFunction.repel:
sb.Append("击退" + kvp.Value + "格"); sb.Append("击退" + kvp.Value + "格");
break; break;
case CardFunction.reduceCost: case CardFunction.reduceCost:
sb.Append("费用-" + kvp.Value); sb.Append("<link=\"" + kvp.Key + "\">费用-" + kvp.Value + "</link>");
break; break;
case CardFunction.spreadColorToAround: case CardFunction.spreadColorToAround:
sb.Append("将目标地块的颜色扩散至周围"); sb.Append("将目标地块的颜色扩散至周围");
break; 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 static class CardRelease
{ {
public const string Self = "Self"; public const string Self = "Self";
@ -496,6 +578,16 @@ public static class Name
public const string Black = "black"; public const string Black = "black";
public const string Metal = "metal"; public const string Metal = "metal";
public static readonly List<string> AllColor = new() { Red, Green, Blue, Yellow ,White, Black , 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}$"; public const string pattern1xxx = @"^1\d{3}$";
//2*** //2***
public const string pattern2xxx = @"^2\d{3}$"; public const string pattern2xxx = @"^2\d{3}$";
//卡牌条件
public const string cardConditionPattern = @"(\w+)([><=])(\d+)";
} }
public static class CardFunctionString public static class CardFunctionString
@ -602,4 +696,11 @@ public static class Name
public const string Elite = "elite"; public const string Elite = "elite";
public const string Boss = "Boss"; 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("82", new Buff_NextEffectCardDoubleSettle());
abnormalCondition.Add("83", new Buff_DeathMark()); abnormalCondition.Add("83", new Buff_DeathMark());
abnormalCondition.Add("92", new Buff_NextDyeingCardCostZero()); abnormalCondition.Add("92", new Buff_NextDyeingCardCostZero());
abnormalCondition.Add("93", new Buff_Calm());
abnormalCondition.Add("106", new Buff_flashPoint()); 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); 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=cardOriginalData;
CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject<CardOriginalData>(JsonConvert.SerializeObject(cardOriginalData)); CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject<CardOriginalData>(JsonConvert.SerializeObject(cardOriginalData));
string condition = newCardOriginalData.conditionAndFunctionVal.ElementAt(conditionCount).Key; newCardOriginalData.condition[0] = newCondition;
string pattern = @"(\w+)([><=])(\d+)"; string newCardId=AddElementToDictionary(CardOriginalDataList.Instance.existCardOriginalDataList, cardOriginalData.CardId, newCardOriginalData);
newCardOriginalData.originFunctionVal.Clear(); return newCardId;
Match match = Regex.Match(condition, pattern); }
if (match.Success)
public string switchCardFunAndVal(CardOriginalData cardOriginalData, KeyValuePair<string,string> newFunAndVal,string position, string originFun)
{ {
string beforecolor = match.Groups[1].Value; // 颜色部分 bool isInDeny=false;
string op = match.Groups[2].Value; // 运算符部分 //CardOriginalData newCardOriginalData=cardOriginalData;
string number = match.Groups[3].Value; // 数值部分 CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject<CardOriginalData>(JsonConvert.SerializeObject(cardOriginalData));
Tuple<string, string> value = newCardOriginalData.conditionAndFunctionVal[condition]; if (position.Equals(Name.CardChangePosition.PartOne))
string newCondition=newColor+op+number; {
newCardOriginalData.conditionAndFunctionVal.Remove(condition); foreach(KeyValuePair<string, string> kvp in newCardOriginalData.commonFunctionVal.ToList())
newCardOriginalData.conditionAndFunctionVal.Add(newCondition, value); {
if (kvp.Key.Equals(originFun))
{
newCardOriginalData.commonFunctionVal.Remove(kvp.Key);
} }
string newCardId=AddElementToDictionary(CardOriginalDataList.Instance.existCardOriginalDataList, cardOriginalData.CardId, newCardOriginalData); }
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))
{
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);
return newCardId; return newCardId;
} }
@ -50,7 +80,7 @@ public class CardManager : Singleton<CardManager>
return newCardId; return newCardId;
} }
public string switchColorAndAllCondition(string orginalCardId, CardOriginalData cardOriginalData, string newColor) public string switchColorAndAllCondition(CardOriginalData cardOriginalData, string newColor)
{ {
//CardOriginalData newCardOriginalData=cardOriginalData; //CardOriginalData newCardOriginalData=cardOriginalData;
CardOriginalData newCardOriginalData = JsonConvert.DeserializeObject<CardOriginalData>(JsonConvert.SerializeObject(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)); List<MapUnity> redList = new List<MapUnity>(getNodeTools.getNodesWithColor(Name.Color.Red));
damageWork(int.Parse(kvp.Value), redList, pierceNum); damageWork(int.Parse(kvp.Value), redList, pierceNum);
break; 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: case CardFunction.nodeDiffDamage:
if (GameManager.Instance.getNodeDiffForPlayer() > 0) if (GameManager.Instance.getNodeDiffForPlayer() > 0)
{ {
@ -988,6 +1002,7 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.dyeingCardCostMinusOne: case CardFunction.dyeingCardCostMinusOne:
case CardFunction.nextDyeingCardRangeAddTwo: case CardFunction.nextDyeingCardRangeAddTwo:
case CardFunction.nextEffectCardDoubleSettle: case CardFunction.nextEffectCardDoubleSettle:
case CardFunction.calm:
Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value)); Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value));
break; break;
case CardFunction.doublebleedDamage: 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)) if (playerAbnormalCondition.ContainsKey(AbnormalCondition.thorn))
{ {
enemyNode.sufferTrueDamage(3); enemyNode.sufferDamage(playerAbnormalCondition[AbnormalCondition.thorn].value,false);
playerAbnormalCondition[AbnormalCondition.thorn].value -= 1;
if (playerAbnormalCondition[AbnormalCondition.thorn].value <= 0) if (playerAbnormalCondition[AbnormalCondition.thorn].value <= 0)
{ {
playerAbnormalCondition.Remove(AbnormalCondition.thorn); 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 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 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 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 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 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 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 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 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 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 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 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 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 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,消耗类型,消耗数值,基础功能,数值,条件,互斥功能,数值,地块标记,图片路径,施法范围,稀有度,消耗,名字,卡牌描述 ID,消耗类型,消耗数值,基础功能,数值,条件,额外功能,数值,否定功能,地块标记,图片路径,施法范围,稀有度,消耗,名字,卡牌描述
2001,1,0,77,1,red>8,78,1,0_0,CardIcon/1010,0,1,0,血祭,none 2001,1,0,77,1,red>8,78,1,none,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流血 2002,1,2,72,1,blue>10,73,1,72,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次 2003,1,1,74,2,red>9,74,3,74,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回合无法获得护盾 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,0_0,CardIcon/1010,0,2,0,等价代换,none 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,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,none,none,none;red>12,75;76,1;1,0_0,CardIcon/1010,0,2,1,赋能,3次流血 2007,1,2,75,1,red>12,76,1,75,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,炼金小包,不会丢弃牌 2008,1,1,56;13,2;1,yellow>4,none,none,13,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 2009,1,0,11;93,1;1,none,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 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,0_0,CardIcon/1010,0,2,0,割裂,none 2014,1,1,57,4,blue>9,57,2,none,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 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,0_0,CardIcon/1010,0,3,1,消失,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,86,1,0_0,CardIcon/1010,1,3,0,死亡印记,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,0_0,CardIcon/1010,1,2,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,none,none,none;red>12,1;53,10;5-2,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,0_0,CardIcon/1010,0,3,1,血怒,none 2021,1,1,90,1,blue>7,89,1,none,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 2022,1,3,68,1,red>5,69,1,68,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 2023,1,1,52,2,yellow>5,52,3,52,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格 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,0_0,CardIcon/1010,0,2,0,疾跑,none 2026,1,1,40,2,blue>5,16,1,none,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 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,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 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,0_0,CardIcon/1010,0,2,1,暴风吸入,随机留下一半 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,0_0,CardIcon/1010,0,2,0,汲取,none 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,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,0_0,CardIcon/1010,1,1,0,点缀,none 2032,1,2,49,1,none,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 2034,1,1,63,1,red>12,93,1,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点护盾 2035,1,1,1;64,7;8,blue>9,64,10,64,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,血蛭,翻三倍 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,0_0,CardIcon/1010,0,2,1,盾垒,none 2037,1,2,18,1,red>9,33,1,none,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 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