Browse Source

Merge pull request '0902提交' (#28) from dev-0524-0827 into dev-0524

Reviewed-on: #28
pull/31/head
yjm484 1 year ago
parent
commit
5b8c01453d
  1. 2
      ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset
  2. 8
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  3. 48
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  4. 15
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs
  5. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs
  6. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/AshBeetle.cs
  7. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlastFistMushroom.cs
  8. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/CorrosiveSludge.cs
  9. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/DrowsyShroom.cs
  10. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EmberWraith.cs
  11. 24
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs
  12. 10
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs
  13. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/HoodWanderer.cs
  14. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ParasiticMushroom.cs
  15. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ShatteringFistMushroom.cs
  16. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs
  17. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullMage.cs
  18. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullWarlock.cs
  19. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs
  20. 8
      ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs
  21. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs
  22. 20
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs
  23. 53
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs
  24. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs
  25. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs
  26. 54
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs
  27. 314
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs
  28. 9
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs
  29. 55
      ColorlessWorld-2024-4-2/Assets/data/card_data_2.csv

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

@ -12,4 +12,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d4cac7ba486f106409799af2bd4b4fc8, type: 3}
m_Name: cardDeckList
m_EditorClassIdentifier:
cardDeckList: 1327000014270000172700001c2700001e270000162700001a2700001b2700001d2700001f27000020270000222700002327000024270000252700002627000027270000292700002a2700002c27000011270000282700002d270000
cardDeckList: 1327000014270000172700001c2700001e270000162700001a2700001b2700001d2700001f27000020270000222700002327000024270000252700002627000027270000292700002a2700002c27000011270000282700002d270000122700002b270000182700002127000015270000152700002e270000

8
ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity

@ -12017,9 +12017,13 @@ MonoBehaviour:
lineOffSet: {x: 1, y: 0, z: 0}
columnOffSet: {x: 0, y: 0, z: 0.865}
enemyGenerateDataList:
- enemyPrefab: {fileID: 6812776764525711320, guid: 8ca81c0623a2728438d77e48fb2e9617,
- enemyPrefab: {fileID: 650302351288945714, guid: 7e3e5773e30caab47b324c8549d3aea1,
type: 3}
locationX: 5
locationX: 4
locationY: 4
- enemyPrefab: {fileID: 650302351288945714, guid: 7e3e5773e30caab47b324c8549d3aea1,
type: 3}
locationX: 4
locationY: 5
--- !u!4 &1802141879
Transform:

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

@ -108,7 +108,15 @@ public class CardEntity : MonoBehaviour
public void createCardCost()
{
cost.text = cardOriginalData.Cost.ToString();
if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost))
{
cost.text = "X";
}
else
{
cost.text = cardOriginalData.Cost.ToString();
}
}
//获取卡牌描述
public void createCardDescription()
@ -163,9 +171,18 @@ public class CardEntity : MonoBehaviour
case CardFunction.enhanceShield:
sb.Append("获得" + kvp.Value + "层坚固;");
break;
case CardFunction.immunity:
sb.Append("获得" + kvp.Value + "层魔抗;");
break;
case CardFunction.extraDrawCardsNum:
sb.Append("下回合多抽" + kvp.Value + "张牌;");
break;
case CardFunction.teleport:
sb.Append("瞬移到目标格子;");
break;
case CardFunction.clearAllAbnormalConditons:
sb.Append("清除所有异常状态;");
break;
case CardFunction.firm:
sb.Append("获得强固;");
break;
@ -184,6 +201,35 @@ public class CardEntity : MonoBehaviour
case CardFunction.dyeing:
sb.Append("染色;");
break;
case CardFunction.consumePlayerNodesForHealth:
sb.Append("消耗范围内的友方格子,恢复消耗数量的血量;");
break;
case CardFunction.costStep:
sb.Append("消耗"+ kvp.Value+ "点移动力;");
break;
case CardFunction.nextTurnExtraOneCost:
sb.Append("下回合额外回复一点能量;");
break;
case CardFunction.fireShield:
sb.Append("获得" + kvp.Value + "层火盾;");
break;
case CardFunction.banStep:
sb.Append("施加" + kvp.Value + "层缠绕;");
break;
case CardFunction.step:
if (int.Parse(kvp.Value)>0)
{
sb.Append("获得" + kvp.Value + "点移动力;");
}
else
{
sb.Append("失去" + kvp.Value + "点移动力;");
}
break;
case CardFunction.dyeingAround:
sb.Append("对目标周围染色;");
break;
}
}

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

@ -31,6 +31,10 @@ public class CardOriginalData : System.Object
private string advantageDescription;
private int pierceNum;
private int advPierceNum;
public int CardId
{
get { return cardId; }
@ -110,4 +114,15 @@ public class CardOriginalData : System.Object
set { advantageDescription = value; }
}
public int PierceNum
{
get { return pierceNum; }
set { pierceNum = value; }
}
public int AdvPierceNum
{
get { return advPierceNum; }
set { advPierceNum = value; }
}
}

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

@ -134,6 +134,8 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
cardOriginalData.CarType = int.Parse(values[11]);
cardOriginalData.AdvantageDescription = values[12];
cardOriginalData.ImgPath = values[13];
cardOriginalData.PierceNum = int.Parse(values[14]);
cardOriginalData.AdvPierceNum = int.Parse(values[15]);
getDictionaryFromString(values, cardOriginalData);
return cardOriginalData;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/AshBeetle.cs

@ -179,6 +179,8 @@ public class AshBeetle : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlastFistMushroom.cs

@ -188,6 +188,8 @@ public class BlastFistMushroom : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/CorrosiveSludge.cs

@ -211,6 +211,8 @@ public class CorrosiveSludge : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/DrowsyShroom.cs

@ -196,6 +196,8 @@ public class DrowsyShroom : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EmberWraith.cs

@ -215,6 +215,8 @@ public class EmberWraith : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

24
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs

@ -804,6 +804,15 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
EnemyState.abnormalCondition.Remove(AbnormalCondition.immunity);
}
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.immunity) && !AbnormalCondition.playUndeterminedBuffList.Contains(condition)&&value<0)
{
isImmunityDispose = true;
EnemyState.abnormalCondition[AbnormalCondition.immunity].value -= 1;
if (EnemyState.abnormalCondition[AbnormalCondition.immunity].value <= 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.immunity);
}
}
return isImmunityDispose;
}
@ -1181,7 +1190,6 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
//ÉÁλʵÏÖ
public void FlashPointRealize()
{
Debug.Log("654654564");
HashSet <MapUnity> targetNodeList= new HashSet<MapUnity>();
targetNodeList.Add(GameManager.Instance.X[positionX].Y[positionY]);
getNodeTools.getCircleNodeForEnemy(targetNodeList,1);
@ -1235,6 +1243,20 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
}
}
public void bleedRealize(MapUnity node)
{
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed))
{
sufferDamage(2, false);
EnemyState.abnormalCondition[AbnormalCondition.bleed].value -= 1;
if (EnemyState.abnormalCondition[AbnormalCondition.bleed].value <= 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.bleed);
}
}
}
#endregion

10
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs

@ -26,6 +26,16 @@ public class EnemyPool : MonoBehaviour
{ new List<string> { EnemyName.blastFistMushroom,EnemyName.skullmage,EnemyName.skullWarlock}, 0.065f }
};
public static Dictionary<List<string>, float> eliteEnemyPool = new Dictionary<List<string>, float>()
{
{ new List<string> { EnemyName.skullGuardian,EnemyName.skullWarlock}, 1.0f },
};
public static Dictionary<List<string>, float> bossEnemyPool = new Dictionary<List<string>, float>()
{
{ new List<string> { EnemyName.skullGuardian,EnemyName.skullmage}, 1.0f },
};
public static List<string> GetRandomEnemyPool(Dictionary<List<string>, float> enemyPool)
{

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/HoodWanderer.cs

@ -234,6 +234,8 @@ public class HoodWanderer : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ParasiticMushroom.cs

@ -248,6 +248,8 @@ public class ParasiticMushroom : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/ShatteringFistMushroom.cs

@ -252,6 +252,8 @@ public class ShatteringFistMushroom : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs

@ -209,6 +209,8 @@ public class SkullGuardian : MonoBehaviour
}
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullMage.cs

@ -215,6 +215,8 @@ public class SkullMage : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullWarlock.cs

@ -205,6 +205,8 @@ public class SkullWarlock : MonoBehaviour
//Åжϸ¯Ê´
enemyNode.CorrodeRealize(endMapUnity);
//ÅжÏÁ÷Ѫ
enemyNode.bleedRealize(endMapUnity);
yield break;
}

2
ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs

@ -75,7 +75,7 @@ public class MapManager : Singleton<MapManager>
{
yield return StartCoroutine(GenerateProcess());
test();
//test();
}
IEnumerator GenerateProcess()

8
ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs

@ -104,10 +104,10 @@ public class MapUnity : MonoBehaviour
{
colourGameObject.GetComponent<Renderer>().material = enemyColour;
}
else
{
//ÎÞÉ«
}
else if (whoColour == WhoColour.noneColour)
{
colourGameObject.GetComponent<Renderer>().material = null;
}
}
public void RegisterUnit()
{

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

@ -65,5 +65,7 @@ public class AbnormalCondition : Singleton<AbnormalCondition>
public static readonly List<string> canNegativeNumberList = new List<string> { angerUpperDamage, shieldUpperValue, addDrawCard };
public static readonly List<string> playBuffList = new List<string> { angerUpperDamage, shieldUpperValue, firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost };
public static readonly List<string> playBuffList = new List<string> {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost };
public static readonly List<string> playUndeterminedBuffList = new List<string> { angerUpperDamage, shieldUpperValue };
}

20
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs

@ -58,8 +58,8 @@ public class CardFunction
public const string consumePlayerNodesForHealth = "27";
//消耗友方地块回复血量(双倍效果)
public const string consumePlayerNodesForDoubleHealth = "28";
//增加或者减少移动力
public const string step = "29";
//魔抗
public const string immunity = "29";
//获得友方地块数/n的能量点
public const string nodesForCost = "30";
//火盾
@ -76,5 +76,21 @@ public class CardFunction
public const string costStep = "37";
//结算两次
public const string settleAgain = "38";
//清除所有异常状态
public const string clearAllAbnormalConditons = "39";
//增加或者减少移动力
public const string step = "40";
//对前方一格造成伤害
public const string damageForNextNode = "41";
//瞬移
public const string teleport = "42";
//将第一个单位拉至身边
public const string pullFirstEnemyToSelf = "43";
//在2格范围内随机弹射n次
public const string flippyRange2 = "44";
//费用为x
public const string xCost = "45";
//随机选择牌库里的一张攻击卡加入手牌
public const string randomAttactCardToHand = "46";
}

53
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs

@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
@ -30,6 +31,45 @@ public class getNodeTools
return canPass;
}
public static void playerMoveToNode(MapUnity mapNode)
{
//角色移动
if ( mapNode.blocked == false && mapNode.enemyNode == null)
{
if (GameManager.Instance.playerOn != null)
{
GameManager.Instance.playerOn.playerOn = false;
GameManager.Instance.playerOn.influenced = false;
}
//判断寄生是否生效
Usermanager.Instance.ParasitismnRealize(GameManager.Instance.playerOn, mapNode);
Usermanager.Instance.bleedRealize(GameManager.Instance.playerOn, mapNode);
mapNode.playerOn = true;
GameManager.Instance.playerOn = mapNode;
GameObject playerObject = GameObject.Find("player");
playerObject.transform.position = new Vector3(mapNode.transform.position.x, 0.5f, mapNode.transform.position.z);
}
}
public static void playerTeleportToNode(MapUnity mapNode)
{
//角色移动
if (mapNode.blocked == false && mapNode.enemyNode == null)
{
if (GameManager.Instance.playerOn != null)
{
GameManager.Instance.playerOn.playerOn = false;
GameManager.Instance.playerOn.influenced = false;
}
mapNode.playerOn = true;
GameManager.Instance.playerOn = mapNode;
GameObject playerObject = GameObject.Find("player");
playerObject.transform.position = new Vector3(mapNode.transform.position.x, 0.5f, mapNode.transform.position.z);
}
}
public static void RandomPollute(HashSet<MapUnity> set, int num)
{
HashSet<MapUnity> randomNodes = MathTool.GetRandomElements(set, num);
@ -202,6 +242,19 @@ public class getNodeTools
}
}
public static void getCircleNodeExceptSelf (HashSet<MapUnity> nodeList, int range)
{
HashSet<MapUnity> oldNodeList=new HashSet<MapUnity>(nodeList);
for (int i = 0; i < range; i++)
{
getNearbyNode(nodeList);
}
foreach(MapUnity node in oldNodeList)
{
nodeList.Remove(node);
}
}
public static void getCircleNodeForBoom(HashSet<MapUnity> nodeList, int range)
{
for (int i = 0; i < range; i++)

2
ColorlessWorld-2024-4-2/Assets/Scripts/UI/CardActiveSort/CardActiveSort.cs

@ -77,7 +77,7 @@ public class CardActiveSort : Singleton <CardActiveSort>
float angle = Vector3.SignedAngle(-transform.InverseTransformDirection(cardEntitieList[i].transform.up), direction, transform.InverseTransformDirection(cardEntitieList[i].transform.forward));
cardEntitieList[i].GetComponent<RectTransform>().Rotate(0, 0, angle);
Debug .Log (angle);
//Debug .Log (angle);
}
//ÖØÖóõʼλÖÃ
foreach (var card in cardEntitieList)

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

@ -23,7 +23,6 @@ public class BuffDataManager : Singleton<BuffDataManager>
abnormalCondition.Add("19", new Buff_Vulnerable());
abnormalCondition.Add("20", new Buff_DrawCardNumber());
abnormalCondition.Add("21", new Buff_BanDrawCard());
//abnormalCondition.Add("21", new Buff_DownStepRange());
abnormalCondition.Add("22", new Buff_UpperStepRange());
abnormalCondition.Add("23", new Buff_DownStepRange());
abnormalCondition.Add("24", new Buff_levelSeep());
@ -38,10 +37,7 @@ public class BuffDataManager : Singleton<BuffDataManager>
abnormalCondition.Add("35", new Buff_DoubleSettle());
abnormalCondition.Add("36", new Buff_NextTurnExtraOneCost());
//abnormalCondition.Add("101", new Buff_UpperAnger());
//abnormalCondition.Add("102", new Buff_UpperShield());
//abnormalCondition.Add("103", new Buff_Firm());
abnormalCondition.Add("105", new Buff_UpperStepRange());
abnormalCondition.Add("106", new Buff_flashPoint());
abnormalCondition.Add("107", new Buff_BonePile());

54
ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs

@ -49,7 +49,34 @@ public class DestructionManager : Singleton<DestructionManager>
public IEnumerator settleStage1(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPool, int cardIndex)
{
yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex));
bool canAdv = GameManager.Instance.SyncColourCountUI();
int leftCost = GameManager.Instance.playerState.currentCost;
if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost))
{
GameManager.Instance.playerState.currentCost = 0;
}
else
{
if (canAdv)
{
int trueCost = cardOriginalData.Cost;
string reduceCost;
if (cardOriginalData.AdvantageFunctionVal.TryGetValue(CardFunction.reduceCost, out reduceCost))
{
trueCost -= int.Parse(reduceCost);
MathTool.keepNature(trueCost);
}
GameManager.Instance.playerState.currentCost -= trueCost;
}
else
{
GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost;
}
}
yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex, leftCost));
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.doubleSettle))
{
Usermanager.playerAbnormalCondition[AbnormalCondition.doubleSettle].value--;
@ -57,14 +84,31 @@ public class DestructionManager : Singleton<DestructionManager>
{
Usermanager.playerAbnormalCondition.Remove(AbnormalCondition.doubleSettle);
}
yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex));
yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex, leftCost));
}
}
public IEnumerator settleStage2(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPool, int cardIndex)
public IEnumerator settleStage2(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPool, int cardIndex,int leftCost)
{
if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost))
{
for(int i=0;i< leftCost; i++)
{
yield return StartCoroutine(settleStage3(cardOriginalData, influencePreviewPool, cardIndex));
}
}
else
{
yield return StartCoroutine(settleStage3(cardOriginalData, influencePreviewPool, cardIndex));
}
}
public IEnumerator settleStage3(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPool, int cardIndex)
{
yield return StartCoroutine(SettlementManager.Instance.settle(cardOriginalData, influencePreviewPool, cardIndex));
bool canAdv = GameManager.Instance.SyncColourCountUI();
yield return StartCoroutine(SettlementManager.Instance.settle(cardOriginalData, influencePreviewPool, cardIndex));
if (canAdv)
{
if (cardOriginalData.AdvantageFunctionVal.ContainsKey(CardFunction.settleAgain))
@ -79,7 +123,7 @@ public class DestructionManager : Singleton<DestructionManager>
yield return StartCoroutine(SettlementManager.Instance.settle(cardOriginalData, influencePreviewPool, cardIndex));
}
}
}

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

@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using Unity.VisualScripting;
using UnityEditor.VersionControl;
using UnityEngine;
@ -51,17 +52,46 @@ public class SettlementManager : Singleton<SettlementManager>
private void consumePlayerNodesForHealthWork(List<MapUnity> influencePreviewPool)
{
int successNodeCount = 0;
Debug.Log("influencePreviewPool" + influencePreviewPool.Count);
for (int i = 0; i < influencePreviewPool.Count; i++)
{
if(influencePreviewPool[i].whoColour == MapUnity.WhoColour.playerColour)
{
successNodeCount++;
influencePreviewPool[i].whoColour= MapUnity.WhoColour.noneColour;
Debug.Log("successNodeCount是" + successNodeCount);
}
}
GameManager.Instance.SyncColourCountUI();
Usermanager.Instance.recoverHp(successNodeCount);
}
private void clearAllAbnormalConditons()
{
List<string> keysToRemove = new List<string>();
foreach (KeyValuePair<string, Buff> kvp in Usermanager.playerAbnormalCondition)
{
if (AbnormalCondition.playUndeterminedBuffList.Contains(kvp.Key))
{
if (kvp.Value.value < 0)
{
keysToRemove.Add(kvp.Key);
}
}
else if (AbnormalCondition.playBuffList.Contains(kvp.Key))
{
}
else
{
keysToRemove.Add(kvp.Key);
}
}
foreach (string key in keysToRemove)
{
Usermanager.playerAbnormalCondition.Remove(key);
}
}
private void consumePlayerNodesForDoubleHealthWork(List<MapUnity> influencePreviewPool)
{
int successNodeCount = 0;
@ -76,6 +106,220 @@ public class SettlementManager : Singleton<SettlementManager>
Usermanager.Instance.recoverHp(successNodeCount*2);
}
private void damageForNextNode(List<MapUnity> influencePreviewPool,int damageVal,int pierceNum)
{
ZeroToFiveCircularCounter counter=new ZeroToFiveCircularCounter();
int platerPosition=0;
Debug.Log("influencePreviewPool大小" + influencePreviewPool.Count);
if (influencePreviewPool[0].enemyNode!=null)
{
damageWork(damageVal,influencePreviewPool, pierceNum);
}
else
{
for (int i = 0; i < 5; i++)
{
if (influencePreviewPool[0].unitPool[i].Equals(GameManager.Instance.playerOn))
{
platerPosition = i;
}
}
Debug.Log("platerPosition" + platerPosition);
int damagePosition = counter.Add(platerPosition, 3);
Debug.Log("damagePositionl" + damagePosition);
getNodeTools.playerMoveToNode(influencePreviewPool[0]);
if (influencePreviewPool[0].unitPool[damagePosition]!=null)
{
List<MapUnity> damageNode = new List<MapUnity> { influencePreviewPool[0].unitPool[damagePosition] };
damageWork(damageVal, damageNode, pierceNum);
}
}
}
private void damageForFlippyRange2(List<MapUnity> influencePreviewPool, string damageValAndflippyNum, int pierceNum )
{
string[] values = damageValAndflippyNum.Split("_");
int damageVal = int.Parse(values[0]);
int flippyNum = int.Parse(values[1]);
damageWork(damageVal, influencePreviewPool, pierceNum);
HashSet<MapUnity> mapUnities = new HashSet<MapUnity>(influencePreviewPool);
getNodeTools.getCircleNodeExceptSelf(mapUnities, 2);
for (int i = 0; i < flippyNum; i++)
{
if(findEnemy(mapUnities)!=null)
{
List<MapUnity> targetNode= new List<MapUnity> { findEnemy(mapUnities) };
damageWork(damageVal, targetNode, pierceNum);
mapUnities.Clear();
mapUnities= new HashSet<MapUnity>(targetNode);
getNodeTools.getCircleNodeExceptSelf(mapUnities, 2);
}
else
{
break;
}
}
}
private void randomAttactCardToHand()
{
int targetCardNum = 0;
if (TurnMaster.Instance.handCard.cardEntityList.Count>= TurnMaster.Instance.handCard.maxHandCard)
{
return;
}
else
{
targetCardNum = TurnMaster.Instance.handCard.cardEntityList.Count + 1;
}
List<int> attackCardOriginalDataList = new List<int>();
foreach (var cardId in TurnMaster.Instance.cardDeck.cardList)
{
CardOriginalData cardOriginalData = new CardOriginalData();
if (CardOriginalDataList.Instance.cardOriginalDataList.TryGetValue(cardId,out cardOriginalData)&&cardOriginalData.CarType==CardType.attack)
{
attackCardOriginalDataList.Add(cardId);
}
}
var a = Instantiate(TurnMaster.Instance.cardDeck.cardPrefab, TurnMaster.Instance.handCard.cardPanle.transform);
a.GetComponent<RectTransform>().localEulerAngles = new Vector3(0, 0, 0);
CardEntity cardEntity = a.GetComponent<CardEntity>();
cardEntity.createCard(attackCardOriginalDataList[0], targetCardNum);
TurnMaster.Instance.cardDeck.cardList.RemoveAt(TurnMaster.Instance.cardDeck.cardList.Count - 1);
TurnMaster.Instance.handCard.cardEntityList.Add(cardEntity);
//添加卡牌移动脚本
/*CardSmall cardSmall = a.AddComponent<CardSmall>();
cardSmall.SetDestinationWithDrawCard(CardActiveSort.Instance.newPointList[targetCardNum]);*/
CardActiveSort.Instance.ReflashCardPoint();
}
private void categorizeCardsByCarType()
{
}
private MapUnity findEnemy(HashSet<MapUnity> mapUnityPool)
{
foreach(MapUnity mapUnity in mapUnityPool)
{
if (mapUnity.enemyNode != null)
{
return mapUnity;
}
}
return null;
}
private void teleport(List<MapUnity> influencePreviewPool)
{
if (influencePreviewPool[0].enemyNode != null)
{
}
else
{
getNodeTools.playerTeleportToNode(influencePreviewPool[0]);
}
}
private void pullFirstEnemyToSelf(List<MapUnity> influencePreviewPool)
{
/*List<MapUnity> ememyList = new List<MapUnity>();
List<MapUnity> emptyNodeList = new List<MapUnity>();
foreach(MapUnity mapUnity in influencePreviewPool)
{
if (mapUnity.enemyNode==null)
{
emptyNodeList.Add(mapUnity);
}
else
{
ememyList.Add(mapUnity);
}
}*/
if (influencePreviewPool[0].enemyNode!=null)
{
return;
}
foreach(MapUnity mapUnity in influencePreviewPool)
{
if (mapUnity.enemyNode != null)
{
if (mapUnity.enemyNode.enemyType == EnemyNode.EnemyType.block)
{
return;
}
else
{
GameObject enemy = mapUnity.enemyNode.GameObject();
Debug.Log(enemy);
enemyMoveToNode(enemy, influencePreviewPool[0], mapUnity.enemyNode);
return;
}
}
}
}
private void ParasitismnRealize(EnemyNode enemyNode, MapUnity start, MapUnity end)
{
if (enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.parasitism) || enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.corrode))
{
List<MapUnity> path = AStarManager.Instance.FindPathWithEndNode(start, end);
foreach (var node in path)
{
node.whoColour = MapUnity.WhoColour.enemyColour;
}
}
}
private void bleedRealize(EnemyNode enemyNode, MapUnity start, MapUnity end)
{
if (enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed))
{
List<MapUnity> path = AStarManager.Instance.FindPathWithEndNode(start, end);
foreach (var node in path)
{
enemyNode.sufferDamage(2, false);
enemyNode.EnemyState.abnormalCondition[AbnormalCondition.bleed].value -= 1;
if (enemyNode.EnemyState.abnormalCondition[AbnormalCondition.bleed].value <= 0)
{
enemyNode.EnemyState.abnormalCondition.Remove(AbnormalCondition.bleed);
}
}
}
}
private void enemyMoveToNode(GameObject enemy,MapUnity endNode,EnemyNode enemyNode)
{
MapUnity currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY];
currentNode.blocked = false;
currentNode.enemyNode = null;
enemyNode.positionX = endNode.locationX;
enemyNode.positionY = endNode.locationY;
endNode.enemyNode = enemyNode;
while (true)
{
float dDistance = Vector3.Distance(enemy.transform.position, endNode.transform.position);
if (dDistance < 0.1f)
{
break;
}
enemy.transform.position = Vector3.Lerp(enemy.transform.position, endNode.transform.position, Time.deltaTime * 4);
}
ParasitismnRealize(enemyNode,currentNode,endNode);
bleedRealize(enemyNode, currentNode, endNode);
//enemy.transform.position = new Vector3(endNode.transform.position.x, 0.5f, endNode.transform.position.z);
}
private void currentStepChange(int val)
{
if (val > 0)
@ -89,16 +333,37 @@ public class SettlementManager : Singleton<SettlementManager>
GameManager.Instance.playerState.currentStepRange = trueStep;
}
}
private void damageWork(int damageVal, List<MapUnity> influencePreviewPool)
private void damageWork(int damageVal, List<MapUnity> influencePreviewPool,int pierceNum)
{
for (int i = 0; i < influencePreviewPool.Count; i++)
int pierceCount=0;
if (pierceNum!=0)
{
for (int i = 0; i < influencePreviewPool.Count; i++)
{
//造成伤害
if (influencePreviewPool[i].enemyNode != null)
{
pierceCount++;
influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true);
if (pierceCount>=pierceNum+1)
{
break;
}
}
}
}
else
{
//Ôì³ÉÉ˺¦
if (influencePreviewPool[i].enemyNode != null)
for (int i = 0; i < influencePreviewPool.Count; i++)
{
influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true);
//造成伤害
if (influencePreviewPool[i].enemyNode != null)
{
influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true);
}
}
}
}
public IEnumerator settle(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPoolSet, int cardIndex)
@ -106,25 +371,21 @@ public class SettlementManager : Singleton<SettlementManager>
List<MapUnity> influencePreviewPool=new List<MapUnity>(influencePreviewPoolSet);
Dictionary<string, string> trueFunctionVal = new Dictionary<string, string>();
bool canAdv = GameManager.Instance.SyncColourCountUI();
int pierceNum= cardOriginalData.PierceNum;
if (canAdv)
{
int trueCost = cardOriginalData.Cost;
string reduceCost;
if (cardOriginalData.AdvantageFunctionVal.TryGetValue(CardFunction.reduceCost, out reduceCost))
{
trueCost-=int.Parse(reduceCost);
MathTool.keepNature(trueCost);
}
trueFunctionVal.AddRange(cardOriginalData.AdvantageFunctionVal);
GameManager.Instance.playerState.currentCost -= trueCost;
pierceNum = cardOriginalData.AdvPierceNum;
}
else
{
GameManager.Instance.playerState.currentCost -= cardOriginalData.Cost;
trueFunctionVal.AddRange(cardOriginalData.FunctionVal);
}
foreach (KeyValuePair<string, string> kvp in trueFunctionVal)
{
Debug.Log("结算了" + kvp.Key);
}
//ÆúÅÆ²»ÄÜÏȽáËã
foreach (KeyValuePair<string, string> kvp in trueFunctionVal)
{
@ -148,12 +409,12 @@ public class SettlementManager : Singleton<SettlementManager>
switch (kvp.Key)
{
case CardFunction.cardDamage:
damageWork(int.Parse(kvp.Value), influencePreviewPool);
damageWork(int.Parse(kvp.Value), influencePreviewPool, pierceNum);
break;
case CardFunction.nodeDiffDamage:
if (GameManager.Instance.getNodeDiffForPlayer() > 0)
{
damageWork(GameManager.Instance.getNodeDiffForPlayer(), influencePreviewPool);
damageWork(GameManager.Instance.getNodeDiffForPlayer(), influencePreviewPool, pierceNum);
}
break;
case CardFunction.cardShield:
@ -194,6 +455,24 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.consumePlayerNodesForDoubleHealth:
consumePlayerNodesForDoubleHealthWork(influencePreviewPool);
break;
case CardFunction.clearAllAbnormalConditons:
clearAllAbnormalConditons();
break;
case CardFunction.damageForNextNode:
damageForNextNode(influencePreviewPool, int.Parse(kvp.Value), pierceNum);
break;
case CardFunction.flippyRange2:
damageForFlippyRange2(influencePreviewPool, kvp.Value, pierceNum);
break;
case CardFunction.teleport:
teleport(influencePreviewPool);
break;
case CardFunction.pullFirstEnemyToSelf:
pullFirstEnemyToSelf(influencePreviewPool);
break;
case CardFunction.randomAttactCardToHand:
randomAttactCardToHand();
break;
case CardFunction.ember:
case CardFunction.enhanceShield:
case CardFunction.firm:
@ -204,6 +483,7 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.fireShield:
case CardFunction.doubleSettle:
case CardFunction.nextTurnExtraOneCost:
case CardFunction.immunity:
Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value));
break;
case CardFunction.discard:

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

@ -215,6 +215,15 @@ public class Usermanager : Singleton<Usermanager>
playerAbnormalCondition.Remove(AbnormalCondition.immunity);
}
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.immunity) && !AbnormalCondition.playUndeterminedBuffList.Contains(condition)&&value<0)
{
isImmunityDispose = true;
playerAbnormalCondition[AbnormalCondition.immunity].value -= 1;
if (playerAbnormalCondition[AbnormalCondition.immunity].value <= 0)
{
playerAbnormalCondition.Remove(AbnormalCondition.immunity);
}
}
return isImmunityDispose;
}

55
ColorlessWorld-2024-4-2/Assets/data/card_data_2.csv

@ -1,24 +1,31 @@
ID,名称,费用,稀有度,功能,数值,施法范围,作用范围,消耗,优势功能,数值,卡牌类型,优势描述,图片路径
10003,拔刀斩,1,2,1,7,1,2,0,1;25,7;3,1,,PlayerIcon
10004,燕返,3,2,1;14,13;0,1,4_1,0,1;38;14,13;1;0,1,,PlayerIcon
10007,绳缚术,2,2,26,1,3,7_2,0,26;19,1;1,2,,PlayerIcon
10012,汲火刃,0,1,1;22,4;1,0,6_3,0,1;22,4;1,1,,PlayerIcon
10014,快手,1,2,20,1,0,0,1,20,1,1,,PlayerIcon
10006,火焰回复,1,3,27,0,8,7_2,1,28,0,2,,PlayerIcon
10010,装填,0,2,11,1,0,0,1,11;29,1;2,2,,PlayerIcon
10011,岩浆汲取,1,1,30,10,0,0,0,30,7,2,,PlayerIcon
10013,火遁,2,2,2,12,0,0,0,32;2,2;12,2,,PlayerIcon
10015,夺刃,2,2,7,1,1,1,1,7;33,1;1,2,,PlayerIcon
10016,愤怒,1,3,23;16,1;3,0,0,1,23;16,1;3,3,,PlayerIcon
10018,踏浪,1,1,29,2,0,0,0,29,2,2,,PlayerIcon
10019,必杀剑·夜刃,3,3,29;34,0;0,3,1,0,29;34;33,0;0;1,1,,PlayerIcon
10020,绝斩,1,1,1;29,13;-2,1,1,0,1;29,13;-2,1,,PlayerIcon
10021,飞焰,1,1,14,0,2,4_2,0,14,0,2,,PlayerIcon
10022,盾立,1,1,2;12,7;1,0,0,0,2;12,7;1,2,,PlayerIcon
10023,抽丝,1,1,1;12,10;1,4,1,0,1;12,10;1,1,,PlayerIcon
10025,机关伞,3,1,1;2,10;15,0,6_3,0,1;2,10;15,2,,PlayerIcon
10026,残影,1,1,12;2,2;6,0,0,0,12;2,2;6,2,,PlayerIcon
10028,凿击,1,1,6,1,0,0,0,1;6,5;1,1,,PlayerIcon
10001,纳刀,1,3,35,1,0,0,0,35;33,0;1,1,,PlayerIcon
10024,刀背击打,1,1,1;36,8;1,1,1,0,1;36,8;1,1,,PlayerIcon
10029,断腿,0,2,37;11,3;1,1,1,0,37;11,3;1,2,,PlayerIcon
ID,名称,费用,稀有度,功能,数值,施法范围,作用范围,消耗,优势功能,数值,卡牌类型,优势描述,图片路径,穿透,优势穿透
10003,拔刀斩,1,2,1,7,1,2,0,1;25,7;3,1,,PlayerIcon,0,0
10004,燕返,3,2,1;14,13;0,1,4_1,0,1;38;14,13;1;0,1,两次效果,PlayerIcon,0,0
10007,绳缚术,2,2,26,1,3,7_2,0,26;19,1;1,2,,PlayerIcon,0,0
10012,汲火刃,0,2,1;45;25,2;0;3,1,1,0,1;45;25,2;0;4,1,施加4层火种,PlayerIcon,0,0
10014,快手,1,2,20,1,0,0,1,20,1,1,,PlayerIcon,0,0
10006,火焰回复,1,3,27,0,8,7_2,1,28,0,2,回复格子数*2的血量,PlayerIcon,0,0
10010,装填,0,2,11,1,0,0,1,11;29,1;2,2,获得2点移动力,PlayerIcon,0,0
10011,岩浆汲取,1,1,30,10,0,0,0,30,7,2,,PlayerIcon,0,0
10013,火遁,2,2,2,12,0,0,0,32;2,2;12,2,,PlayerIcon,0,0
10015,夺刃,2,2,7,1,1,1,1,7;33,1;1,2,,PlayerIcon,0,0
10016,愤怒,1,3,23;16,1;3,0,0,1,23;16,1;3,3,,PlayerIcon,0,0
10018,踏浪,1,1,29,2,0,0,0,29,2,2,,PlayerIcon,0,0
10019,必杀剑·夜刃,3,3,29;34,0;0,3,1,0,29;34;33,0;0;1,1,消耗-1,PlayerIcon,0,0
10020,绝斩,1,1,1;29,13;-2,1,1,0,1;29,13;-2,1,,PlayerIcon,0,0
10021,飞焰,1,1,14,0,2,4_2,0,14,0,2,,PlayerIcon,0,0
10022,盾立,1,1,2;12,7;1,0,0,0,2;12,7;1,2,,PlayerIcon,0,0
10023,抽丝,1,1,1;12,10;1,4,1,0,1;12,10;1,1,,PlayerIcon,0,0
10025,机关伞,3,1,1;2,10;15,0,6_3,0,1;2,10;15,2,,PlayerIcon,0,0
10026,残影,1,1,12;2,2;6,0,0,0,12;2,2;6,2,,PlayerIcon,0,0
10028,凿击,1,1,6,1,0,0,0,1;6,5;1,1,,PlayerIcon,0,0
10001,纳刀,1,3,35,1,0,0,0,35;33,0;1,1,,PlayerIcon,0,0
10024,刀背击打,1,1,1;36,8;1,1,1,0,1;36,8;1,1,,PlayerIcon,0,0
10029,断腿,0,2,37;11,3;1,1,1,0,37;11,3;1,2,,PlayerIcon,0,0
10002,踏前斩,1,1,41,7,1,1,0,41,7,1,,PlayerIcon,0,0
10008,烈焰手里剑,2,2,1;14,9;0,5,5_1,0,1;14,9;0,1,,PlayerIcon,1,2
10027,净化,1,3,39,0,0,0,0,39;29,0;1,2,,PlayerIcon,0,0
10017,回旋飞镖,2,1,44,5_3,3,1,0,44,5_3,1,,PlayerIcon,0,0
10009,瞬身术,2,2,42,0,6,1,0,42;33,0;1,2,,PlayerIcon,0,0
10005,火焰锁链,1,2,43;25,0;4,5,5_1,0,43;25;2,0;4;6,2,额外获得6点护盾,PlayerIcon,0,0
10030,提取,1,1,46,0,0,0,0,46,0,2,,PlayerIcon,0,0

1 ID 名称 费用 稀有度 功能 数值 施法范围 作用范围 消耗 优势功能 数值 卡牌类型 优势描述 图片路径 穿透 优势穿透
2 10003 拔刀斩 1 2 1 7 1 2 0 1;25 7;3 1 PlayerIcon 0 0
3 10004 燕返 3 2 1;14 13;0 1 4_1 0 1;38;14 13;1;0 1 两次效果 PlayerIcon 0 0
4 10007 绳缚术 2 2 26 1 3 7_2 0 26;19 1;1 2 PlayerIcon 0 0
5 10012 汲火刃 0 1 2 1;22 1;45;25 4;1 2;0;3 0 1 6_3 1 0 1;22 1;45;25 4;1 2;0;4 1 施加4层火种 PlayerIcon 0 0
6 10014 快手 1 2 20 1 0 0 1 20 1 1 PlayerIcon 0 0
7 10006 火焰回复 1 3 27 0 8 7_2 1 28 0 2 回复格子数*2的血量 PlayerIcon 0 0
8 10010 装填 0 2 11 1 0 0 1 11;29 1;2 2 获得2点移动力 PlayerIcon 0 0
9 10011 岩浆汲取 1 1 30 10 0 0 0 30 7 2 PlayerIcon 0 0
10 10013 火遁 2 2 2 12 0 0 0 32;2 2;12 2 PlayerIcon 0 0
11 10015 夺刃 2 2 7 1 1 1 1 7;33 1;1 2 PlayerIcon 0 0
12 10016 愤怒 1 3 23;16 1;3 0 0 1 23;16 1;3 3 PlayerIcon 0 0
13 10018 踏浪 1 1 29 2 0 0 0 29 2 2 PlayerIcon 0 0
14 10019 必杀剑·夜刃 3 3 29;34 0;0 3 1 0 29;34;33 0;0;1 1 消耗-1 PlayerIcon 0 0
15 10020 绝斩 1 1 1;29 13;-2 1 1 0 1;29 13;-2 1 PlayerIcon 0 0
16 10021 飞焰 1 1 14 0 2 4_2 0 14 0 2 PlayerIcon 0 0
17 10022 盾立 1 1 2;12 7;1 0 0 0 2;12 7;1 2 PlayerIcon 0 0
18 10023 抽丝 1 1 1;12 10;1 4 1 0 1;12 10;1 1 PlayerIcon 0 0
19 10025 机关伞 3 1 1;2 10;15 0 6_3 0 1;2 10;15 2 PlayerIcon 0 0
20 10026 残影 1 1 12;2 2;6 0 0 0 12;2 2;6 2 PlayerIcon 0 0
21 10028 凿击 1 1 6 1 0 0 0 1;6 5;1 1 PlayerIcon 0 0
22 10001 纳刀 1 3 35 1 0 0 0 35;33 0;1 1 PlayerIcon 0 0
23 10024 刀背击打 1 1 1;36 8;1 1 1 0 1;36 8;1 1 PlayerIcon 0 0
24 10029 断腿 0 2 37;11 3;1 1 1 0 37;11 3;1 2 PlayerIcon 0 0
25 10002 踏前斩 1 1 41 7 1 1 0 41 7 1 PlayerIcon 0 0
26 10008 烈焰手里剑 2 2 1;14 9;0 5 5_1 0 1;14 9;0 1 PlayerIcon 1 2
27 10027 净化 1 3 39 0 0 0 0 39;29 0;1 2 PlayerIcon 0 0
28 10017 回旋飞镖 2 1 44 5_3 3 1 0 44 5_3 1 PlayerIcon 0 0
29 10009 瞬身术 2 2 42 0 6 1 0 42;33 0;1 2 PlayerIcon 0 0
30 10005 火焰锁链 1 2 43;25 0;4 5 5_1 0 43;25;2 0;4;6 2 额外获得6点护盾 PlayerIcon 0 0
31 10030 提取 1 1 46 0 0 0 0 46 0 2 PlayerIcon 0 0
Loading…
Cancel
Save