Browse Source

buff提交

pull/19/head
yjm484 2 years ago
parent
commit
59cbe9cf07
  1. 4
      ColorlessWorld-2024-4-2/Assets/GameDate/Enemy/SkeletonArcher.asset
  2. 2
      ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset
  3. 5
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  4. 12
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff.cs
  5. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_BanDrawCard.cs
  6. 37
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Bleed.cs
  7. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Bleed.cs.meta
  8. 37
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Boom.cs
  9. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Boom.cs.meta
  10. 37
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_BoomAndPollute.cs
  11. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_BoomAndPollute.cs.meta
  12. 18
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_DrawCardNumber.cs
  13. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_FireSeed.cs
  14. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Firm.cs
  15. 40
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Immunity.cs
  16. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Immunity.cs.meta
  17. 19
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Posion.cs
  18. 37
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs
  19. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs.meta
  20. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_UpperAnger.cs
  21. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_UpperShield.cs
  22. 5
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Weak.cs
  23. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_parasitism.cs
  24. 37
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  25. 26
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  26. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs
  27. 68
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs
  28. 9
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs
  29. 396
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs
  30. 158
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs
  31. 13
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkullGuardian.cs
  32. 3
      ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs
  33. 45
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs
  34. 22
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs
  35. 13
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardType.cs
  36. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardType.cs.meta
  37. 5
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/EnemyState_SO.cs
  38. 8
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/MathTool.cs
  39. 60
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs
  40. 36
      ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs
  41. 34
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs
  42. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnitySettleManager.cs
  43. 28
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs
  44. 362
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs
  45. 21
      ColorlessWorld-2024-4-2/Assets/data/card_data(已自动还原).CSV
  46. 7
      ColorlessWorld-2024-4-2/Assets/data/card_data(已自动还原).CSV.meta
  47. 5
      ColorlessWorld-2024-4-2/Assets/data/card_data_1.csv
  48. 7
      ColorlessWorld-2024-4-2/Assets/data/card_data_1.csv.meta
  49. BIN
      ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache
  50. BIN
      ColorlessWorld-2024-4-2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache

4
ColorlessWorld-2024-4-2/Assets/GameDate/Enemy/SkeletonArcher.asset

@ -21,8 +21,8 @@ MonoBehaviour:
currentMoveCoolDown: 0
shieldValue: 0
upShieldValue: 0
maxHP: 25
currentHP: 25
maxHP: 5
currentHP: 5
sufferDamageMultiply: 1
colourType: 0
maxSkillCoolDown: 3

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: 1127000012270000132700001427000015270000162700001727000018270000192700001a2700001b2700001c2700001d2700001e2700001f270000
cardDeckList: 11270000122700001327000013270000132700001327000013270000142700001427000014270000142700001427000014270000

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

@ -3521,12 +3521,12 @@ MonoBehaviour:
m_Calls:
- m_Target: {fileID: 495423660}
m_TargetAssemblyTypeName: Usermanager, Assembly-CSharp
m_MethodName: AddPlayerAbnormalCondition_parasitism
m_MethodName: AddPlayerAbnormalCondition_vulnerable
m_Mode: 3
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 1
m_IntArgument: 10
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
@ -10189,6 +10189,7 @@ MonoBehaviour:
deleteCardNumberText: {fileID: 263387098}
currentCost: 0
totalCost: 0
commDrawCardsNum: 6
turn: 4
playerAction: 0
--- !u!4 &1108322117

12
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff.cs

@ -15,11 +15,21 @@ public class Buff
{
value--;
}
public virtual void SettleEnemyBegin(EnemyNode enemyNode)
{
}
public virtual int CheckValue()
{
return value;
}
public virtual void BeginSettle()
{
}
public virtual void UIShow(GameObject buff, string key)
{

6
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_BanDrawCard.cs

@ -19,12 +19,6 @@ public class Buff_BanDrawCard : Buff
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{

37
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Bleed.cs

@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_Bleed : Buff
{
public override void Settle()
{
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "血";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "血";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_Bleed();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Bleed.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 94f3eff17d6ea054d8bbd6dc8aaa924c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

37
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Boom.cs

@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_Boom : Buff
{
public override void Settle()
{
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "±¬";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "±¬";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_Boom();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Boom.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 91eec09224c93fe4f8309eb3d00f4297
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

37
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_BoomAndPollute.cs

@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_BoomAndPollute : Buff
{
public override void Settle()
{
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "±¬";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "±¬";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_BoomAndPollute();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_BoomAndPollute.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a519e546095a0404790433ae640ef843
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

18
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_DrawCardNumber.cs

@ -7,19 +7,27 @@ using UnityEngine.UI;
public class Buff_DrawCardNumber : Buff
{
public override void Settle()
{
SettleDrawCardNumber();
base.Settle();
{
Debug.Log("抽卡层数是:" + value);
}
private void SettleDrawCardNumber()
public override void BeginSettle()
{
Debug.Log("额外抽卡数量;" + value);
value= 0;
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "³é";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_DrawCardNumber();
buff.value = value;
return buff;
}
}

4
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_FireSeed.cs

@ -7,7 +7,7 @@ public class Buff_FireSeed : Buff
{
public override void Settle()
{
base.Settle();
//base.Settle();
}
@ -22,7 +22,7 @@ public class Buff_FireSeed : Buff
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
//base.Settle();
}

4
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Firm.cs

@ -7,7 +7,7 @@ public class Buff_Firm : Buff
{
public override void Settle()
{
base.Settle();
}
public override void UIShow(GameObject buff, string key)
@ -19,7 +19,7 @@ public class Buff_Firm : Buff
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}

40
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Immunity.cs

@ -0,0 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_Immunity : Buff
{
public override void Settle()
{
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "Ãâ";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "Ãâ";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_Immunity();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Immunity.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d9afea1bff93be349ad0c1e891b905ea
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

19
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Posion.cs

@ -5,16 +5,27 @@ using UnityEngine.UI;
public class Buff_Posion : Buff
{
public override void Settle()
public override void BeginSettle()
{
SettlePosion();
base.Settle();
value--;
}
public override void Settle()
{
}
public override void SettleEnemy( EnemyNode enemyNode )
{
}
public override void SettleEnemyBegin(EnemyNode enemyNode)
{
SettleEnemyPosion(enemyNode);
base.Settle();
value--;
}
public void SettlePosion()
@ -26,7 +37,7 @@ public class Buff_Posion : Buff
public void SettleEnemyPosion(EnemyNode enemyNode)
{
if (value > 0)
enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(value));
enemyNode.sufferTrueDamage(Usermanager.Instance.DamageCalculation(value));
}
public override void UIShow(GameObject buff, string key)
{

37
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs

@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_Thorn : Buff
{
public override void Settle()
{
}
public override void UIShow(GameObject buff, string key)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "·´";
buff.transform.GetChild(1).GetComponent<Text>().text = Usermanager.playerAbnormalCondition[key].value.ToString();
}
public override void SettleEnemy(EnemyNode enemyNode)
{
}
public override void EnemyUIShow(GameObject buff, string key, EnemyNode enemyNode)
{
buff.transform.GetChild(0).GetComponent<Text>().text = "·´";
buff.transform.GetChild(1).GetComponent<Text>().text = enemyNode.EnemyState.abnormalCondition[key].value.ToString();
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_Thorn();
buff.value = value;
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Thorn.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 17f56e22d6dc46e4585b12a7579491da
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

2
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_UpperAnger.cs

@ -19,7 +19,7 @@ public class Buff_UpperAnger : Buff
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}

4
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_UpperShield.cs

@ -7,7 +7,7 @@ public class Buff_UpperShield : Buff
{
public override void Settle()
{
base.Settle();
}
public override void UIShow(GameObject buff, string key)
@ -20,7 +20,7 @@ public class Buff_UpperShield : Buff
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}

5
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_Weak.cs

@ -6,15 +6,10 @@ public class Buff_Weak : Buff
{
public override void Settle()
{
SettleWeak();
base.Settle();
}
public void SettleWeak()
{
}
public override void UIShow(GameObject buff, string key)
{

4
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_parasitism.cs

@ -7,7 +7,7 @@ public class Buff_parasitism : Buff
{
public override void Settle()
{
Usermanager.Instance.buffSettleList.Add(AbnormalCondition.parasitism);
}
public override void UIShow(GameObject buff, string key)
@ -19,7 +19,7 @@ public class Buff_parasitism : Buff
public override void SettleEnemy(EnemyNode enemyNode)
{
base.Settle();
}

37
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs

@ -56,7 +56,16 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
if (GameManager.Instance.playerState.currentCost - cardEntity.cardOriginalData.Cost < 0)
{
Debug.Log("费用不足");
cardEntity.costEnough = false;
cardEntity.canUse = false;
}
}
private void disArmCheck()
{
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.disarm)&&cardEntity.cardOriginalData.CarType.Equals(CardType.attack))
{
Debug.Log("±»½ÉеÁË");
cardEntity.canUse = false;
}
}
@ -79,7 +88,14 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
switch (kvp.Key)
{
case CardFunction.drawCard:
drawCardNum += int.Parse(kvp.Value);
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.banDrawCard))
{
}
else
{
drawCardNum += int.Parse(kvp.Value);
}
break;
}
@ -92,7 +108,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
if (TurnMaster.Instance.handCard.getHandCardList().Count - int.Parse(kvp.Value) - 1 + drawCardNum < 0)
{
Debug.Log("没有足够的牌可以弃牌");
cardEntity.costEnough = false;
cardEntity.canUse = false;
}
break;
@ -103,19 +119,19 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
{
if(TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.banAction)
{
cardEntity.costEnough = false;
cardEntity.canUse = false;
}
else
{
cardEntity.costEnough = true;
cardEntity.canUse = true;
}
if(TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.move)
{
cardEntity.costEnough = false;
cardEntity.canUse = false;
}
else if(TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.banAction)
{
cardEntity.costEnough = true;
cardEntity.canUse = true;
}
}
@ -162,9 +178,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
// if (GameObject.Find("CardPanel") != null)
// graphicRaycaster = GameObject.Find("CardPanel").GetComponent<GraphicRaycaster>();
banActionCardCheck();
disArmCheck();
costCheck();
disCardCheck();
if (!cardEntity.costEnough)
if (!cardEntity.canUse)
{
return;
}
@ -332,7 +349,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
public void OnDrag(PointerEventData eventData)
{
if (!cardEntity.costEnough)
if (!cardEntity.canUse)
{
return;
}
@ -369,7 +386,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
private IEnumerator OnDragIEnumerator(PointerEventData eventData)
{
if (!cardEntity.costEnough)
if (!cardEntity.canUse)
{
yield break;
}

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

@ -34,7 +34,7 @@ public class CardEntity : MonoBehaviour
public Image cardImage;
public bool costEnough = true;
public bool canUse = true;
public void Start()
@ -113,6 +113,12 @@ public class CardEntity : MonoBehaviour
case CardFunction.posion:
sb.Append("施加" + kvp.Value + "层中毒;");
break;
case CardFunction.fireSeed:
sb.Append("施加" + kvp.Value + "层火种;");
break;
case CardFunction.vulnerable:
sb.Append("施加" + kvp.Value + "层易伤;");
break;
case CardFunction.weak:
sb.Append("施加" + kvp.Value + "层虚弱;");
break;
@ -131,6 +137,24 @@ public class CardEntity : MonoBehaviour
case CardFunction.thorn:
sb.Append("获得" + kvp.Value + "层荆棘;");
break;
case CardFunction.ember:
sb.Append("获得" + kvp.Value + "层怒火;");
break;
case CardFunction.upSpeed:
sb.Append("获得" + kvp.Value + "层加速;");
break;
case CardFunction.downSpeed:
sb.Append("获得" + kvp.Value + "层减速;");
break;
case CardFunction.enhanceShield:
sb.Append("获得" + kvp.Value + "层坚固;");
break;
case CardFunction.extraDrawCardsNum:
sb.Append("下回合多抽" + kvp.Value + "张牌;");
break;
case CardFunction.firm:
sb.Append("获得强固;");
break;
case CardFunction.costRestore:
sb.Append("获得" + kvp.Value + "点能量;");
break;

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

@ -16,7 +16,7 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
void Start()
{
cardOriginalDataList = ReadExcel("Assets/data/card_data.csv");
cardOriginalDataList = ReadExcel("Assets/data/card_data_1.csv");
/* for(int i =0;i<10;i++)
{

68
ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs

@ -18,12 +18,16 @@ public class TurnMaster : Singleton<TurnMaster>
public int currentCost;
public int totalCost;
public int commDrawCardsNum = 6;
public enum Turn
{
playerTurnBegin,
playerTurn,
playerTurnEnd,
enemyTurnBegin,
enemyTurn,
enemyTurnEnd,
turnStop
};
public Turn turn = Turn.playerTurnBegin;
@ -52,8 +56,8 @@ public class TurnMaster : Singleton<TurnMaster>
//判断眩晕等能不能行动
Usermanager.Instance.BanActionJudge();
//结算玩家buff
Usermanager.Instance.PlayerTurnSettle();
//回合开始结算玩家buff
Usermanager.Instance.PlayerTurnBeginSettle();
//结算地块Buff
MapUnitySettleManager.Instance.MapGridsSettle();
//恢复体力
@ -65,15 +69,22 @@ public class TurnMaster : Singleton<TurnMaster>
EnemyManager.Instance.enemyMultiplierRestore();
//阶段流转
StartCoroutine(EndPlayerTurnBegin());
StartCoroutine(EndPlayerTurnBegin());
}
if (turn == Turn.playerTurnEnd)
{
//回合结束结算玩家buff
Usermanager.Instance.PlayerTurnSettle();
//阶段流转
turn = Turn.enemyTurnBegin;
}
if (turn == Turn.enemyTurnBegin)
{
//结算技能冷却
// EnemyManager.Instance.EnemySkillCoolDown_Observer();
EnemyManager.Instance.enemyTurnSettle(0);
EnemyManager.Instance.enemyTurnBeginSettle(0);
turn = Turn.enemyTurn;
}
@ -87,7 +98,15 @@ public class TurnMaster : Singleton<TurnMaster>
turn = Turn.turnStop;
// EndEnemyTurn();在enemyTurn里面调用
}
if (turn == Turn.enemyTurnEnd)
{
EnemyManager.Instance.enemyTurnSettle(0);
turn = Turn.playerTurnBegin;
}
//同步UI
@ -105,15 +124,13 @@ public class TurnMaster : Singleton<TurnMaster>
public void EndPlayerTurn()
{
if(turn ==Turn.playerTurn)
turn = Turn.enemyTurnBegin;
//回合结束结算buff
Usermanager.Instance.BuffSettleInEndTurn();
turn = Turn.playerTurnEnd;
}
public void EndEnemyTurn()
{
EnemyManager.Instance.enemyTurnState = EnemyManager.EnemyTurnState.end;
turn = Turn.playerTurnBegin;
turn = Turn.enemyTurnEnd;
}
//老吊写的函数
@ -122,7 +139,11 @@ public class TurnMaster : Singleton<TurnMaster>
//totalCost = Usermanager.Instance.totalCost;
//currentCost = totalCost;
GameManager.Instance.playerState.currentCost = GameManager.Instance.playerState.maxCost;
Usermanager.Instance.Shield = 0;
if (!Usermanager.Instance.FirmJudge())
{
Usermanager.Instance.Shield = 0;
}
}
IEnumerator ShuffleWithLosingCards()
{
@ -131,9 +152,18 @@ public class TurnMaster : Singleton<TurnMaster>
disCard(j);
}
int tureDrawCardsNum=commDrawCardsNum;
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.addDrawCard))
{
Debug.Log("追加抽卡数:" + Usermanager.playerAbnormalCondition[AbnormalCondition.addDrawCard].value);
tureDrawCardsNum += Usermanager.playerAbnormalCondition[AbnormalCondition.addDrawCard].value;
}
MathTool.keepNature(tureDrawCardsNum);
Debug.Log("真正抽卡数:"+tureDrawCardsNum);
// 等待直到当前帧结束
yield return new WaitForEndOfFrame();
drawCards(6);
drawCards(tureDrawCardsNum);
}
public IEnumerator MoveCards()
@ -164,10 +194,14 @@ public class TurnMaster : Singleton<TurnMaster>
public IEnumerator randomDiscard(int count)
{
List<int> disCardList = MathTool.GetRandomNumbers(handCard.getHandCardList().Count, count);
foreach (int number in disCardList)
if (disCardList != null)
{
disCard(number);
foreach (int number in disCardList)
{
disCard(number);
}
}
yield return null;
}

9
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs

@ -162,6 +162,15 @@ public class EnemyManager : Singleton<EnemyManager>
}
}
public void enemyTurnBeginSettle(int settleTurn)
{
foreach (var observer in enemyObservers)
{
//observer.GetEnemyNode().enemyTurnSettleInit();
observer.GetEnemyNode().enemyTurnBeginSettle(settleTurn);
}
}
public void enemyMultiplierRestore()
{
foreach (var observer in enemyObservers)

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

@ -5,6 +5,7 @@ using System.Linq;
using System.Xml;
using UnityEngine;
using UnityEngine.Assertions;
using static UnityEngine.Rendering.DebugUI;
public class EnemyNode : MonoBehaviour,IEnemyObserver
{
@ -99,6 +100,26 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
Debug .Log ("敌人生成在("+positionX +","+positionY +")");
}
public int getStepRange()
{
int extraStep = 0;
float stepMultiplie = 1.0f;
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.upSpeed))
{
extraStep = 1;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
{
extraStep = -1;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.banStep))
{
stepMultiplie = 0f;
}
int trueStepRange=EnemyState.stepRange+extraStep;
return (int)(trueStepRange * stepMultiplie);
}
public void EnemyTurn()
{
switch (enemyScript)
@ -410,6 +431,10 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
//死亡时
public void OnDeath()
{
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.boom))
{
boomCal();
}
switch (enemyType)
{
case EnemyType.enemy:
@ -424,10 +449,43 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
}
private void boomCal()
{
MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY];
HashSet<MapUnity> targetSet=new HashSet<MapUnity>();
targetSet.Add(currentNode);
getNodeTools.getCircleNodeForBoom(targetSet, 1);
foreach (MapUnity target in targetSet)
{
target.whoColour = MapUnity.WhoColour.enemyColour;
}
}
//Buff结算应用函数
//施加buff效果
public void sufferAbnormalCondition(string condition, int value)
{
if (immunityCal(condition,value))
{
return;
}
if (condition.Equals(AbnormalCondition.fireSeed))
{
sufferFireSeed(condition, value);
return;
}
if (condition.Equals(AbnormalCondition.levelSleep))
{
sufferLevelSleep(condition, value);
return;
}
if (condition.Equals(AbnormalCondition.upSpeed)|| condition.Equals(AbnormalCondition.downSpeed))
{
sufferSpeed(condition, value);
return;
}
if (EnemyState .abnormalCondition .ContainsKey(condition))
{
int beforeval = EnemyState.abnormalCondition[condition].value;
@ -453,9 +511,261 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
enemyUIBar.RefreshEnemyBuffIcon();
}
public void sufferDamage(int damageVal)
private void sufferSpeed(string condition, int value)
{
//speed的特殊处理
if (condition.Equals(AbnormalCondition.upSpeed))
{
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
{
int downLayer = EnemyState.abnormalCondition[AbnormalCondition.downSpeed].value;
int trueLayer = downLayer - value;
if (trueLayer > 0)
{
EnemyState.abnormalCondition[AbnormalCondition.downSpeed].value = trueLayer;
}
else if (trueLayer == 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.downSpeed);
}
else if (trueLayer < 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.downSpeed);
AddEnemyAbnormalCondition(condition, 0 - trueLayer);
}
}
else
{
if (EnemyState.abnormalCondition.ContainsKey(condition))
{
int beforeval = EnemyState.abnormalCondition[condition].value;
int afterval = beforeval + value;
EnemyState.abnormalCondition[condition].value = afterval;
Debug.Log("加入了:" + condition + "afterval:" + afterval);
}
else
{
AddEnemyAbnormalCondition(condition, value);
}
}
}
else if (condition.Equals(AbnormalCondition.downSpeed))
{
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.upSpeed))
{
int downLayer = EnemyState.abnormalCondition[AbnormalCondition.upSpeed].value;
int trueLayer = downLayer - value;
if (trueLayer > 0)
{
EnemyState.abnormalCondition[AbnormalCondition.upSpeed].value = trueLayer;
}
else if (trueLayer == 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.upSpeed);
}
else if (trueLayer < 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.upSpeed);
AddEnemyAbnormalCondition(condition, 0 - trueLayer);
}
}
else
{
if (EnemyState.abnormalCondition.ContainsKey(condition))
{
int beforeval = EnemyState.abnormalCondition[condition].value;
int afterval = beforeval + value;
EnemyState.abnormalCondition[condition].value = afterval;
Debug.Log("加入了:" + condition + "afterval:" + afterval);
}
else
{
AddEnemyAbnormalCondition(condition, value);
}
}
}
//enemyUIBar.RefreshEnemyBuffIcon();
}
private bool immunityCal(string condition, int value)
{
bool isImmunityDispose = false;
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.immunity) && !AbnormalCondition.playBuffList.Contains(condition))
{
isImmunityDispose = true;
EnemyState.abnormalCondition[AbnormalCondition.immunity].value -= 1;
if (EnemyState.abnormalCondition[AbnormalCondition.immunity].value <= 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.immunity);
}
}
return isImmunityDispose;
}
private void sufferFireSeed(string condition, int value)
{
//firseed的特殊处理
int nowValue=0;
if (EnemyState.abnormalCondition.ContainsKey(condition))
{
nowValue = EnemyState.abnormalCondition[condition].value;
}
int trueValue=nowValue+ value;
int damamgeLayers=0;
if (trueValue >=10)
{
damamgeLayers = trueValue / 10;
}
int afterval = trueValue % 10;
Debug.Log("伤害层数是:" + damamgeLayers);
Debug.Log("剩余层数是:" + afterval);
//TODO 是否应该是n次15点伤害
sufferDamage(15 * damamgeLayers,false);
EnemyState.abnormalCondition.Remove(condition);
AddEnemyAbnormalCondition(condition, afterval);
//enemyUIBar.RefreshEnemyBuffIcon();
}
private void sufferLevelSleep(string condition, int value)
{
//firseed的特殊处理
int nowValue = 0;
if (EnemyState.abnormalCondition.ContainsKey(condition))
{
nowValue = EnemyState.abnormalCondition[condition].value;
}
int trueValue = nowValue + value;
int sleepLayers = 0;
if (trueValue >= 10)
{
sleepLayers = trueValue / 10;
}
int afterval = trueValue % 10;
Debug.Log("sleep层数是:" + sleepLayers);
Debug.Log("剩余层数是:" + afterval);
if (sleepLayers > 0)
{
sufferAbnormalCondition(AbnormalCondition.sleep, sleepLayers);
}
EnemyState.abnormalCondition.Remove(condition);
AddEnemyAbnormalCondition(condition, afterval);
//enemyUIBar.RefreshEnemyBuffIcon();
}
public void sufferDamage(int damageVal,bool isFromPlayer)
{
if (isFromPlayer==true)
{
thornCal();
}
bleedCal();
int trueDamage = SufferDamageCalculation(damageVal);
if (trueDamage > EnemyState.shieldValue)
{
int afterVal = trueDamage - EnemyState.shieldValue;
EnemyState.shieldValue = 0;
EnemyState.currentHP -= afterVal;
}
else
{
EnemyState.shieldValue -= trueDamage;
}
Debug.Log("敌人血量" + EnemyState.currentHP);
if (EnemyState.currentHP <= 0)
{
OnDeath();
}
else
{
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
switch (key)
{
case AbnormalCondition.sleep:
EnemyState.abnormalCondition.Remove(key);
EnemyState.damageMultiplier = 1;
EnemyState.stepRangeMultiplier = 1;
break;
}
}
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
switch (key)
{
case AbnormalCondition.weak:
EnemyState.damageMultiplier = 0.75;
break;
case AbnormalCondition.disarm:
EnemyState.damageMultiplier = 0;
break;
}
}
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
switch (key)
{
case AbnormalCondition.coma:
EnemyState.damageMultiplier = 0;
EnemyState.stepRangeMultiplier = 0;
break;
case AbnormalCondition.sleep:
EnemyState.damageMultiplier = 0;
EnemyState.stepRangeMultiplier = 0;
break;
}
}
if(EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.flashPoint))
{
FlashPointRealize();
}
}
}
public void bleedCal()
{
EnemyState.currentHP -= SufferDamageCalculation (damageVal);
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed))
{
sufferTrueDamage(2);
EnemyState.abnormalCondition[AbnormalCondition.bleed].value -= 1;
if (EnemyState.abnormalCondition[AbnormalCondition.bleed].value <= 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.bleed);
}
}
}
private void thornCal()
{
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.thorn))
{
Usermanager.Instance.SufferTrueDamage(3);
EnemyState.abnormalCondition[AbnormalCondition.thorn].value -= 1;
if (EnemyState.abnormalCondition[AbnormalCondition.thorn].value <= 0)
{
EnemyState.abnormalCondition.Remove(AbnormalCondition.thorn);
}
}
}
public void sufferTrueDamage(int damageVal)
{
if (damageVal > EnemyState.shieldValue)
{
int afterVal = damageVal - EnemyState.shieldValue;
EnemyState.shieldValue = 0;
EnemyState.currentHP -= afterVal;
}
else
{
EnemyState.shieldValue -= damageVal;
}
Debug.Log("敌人血量" + EnemyState.currentHP);
if (EnemyState.currentHP <= 0)
{
@ -501,7 +811,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
}
}
if(EnemyState.abnormalCondition.ContainsKey(UpperCondition.flashPoint))
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.flashPoint))
{
FlashPointRealize();
}
@ -543,6 +853,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
public void enemyTurnSettle(int settleTurn)
{
EnemyState.shieldValue = 0;
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
EnemyState.abnormalCondition[key].SettleEnemy(this);
@ -551,14 +862,37 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
}
}
public void enemyTurnBeginSettle(int settleTurn)
{
EnemyState.shieldValue = 0;
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
EnemyState.abnormalCondition[key].SettleEnemyBegin(this);
abnormalConditionEndCheck();
//有bug
enemyUIBar.RefreshEnemyBuffIcon();
}
}
private void abnormalConditionEndCheck()
{
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
if (EnemyState.abnormalCondition[key].value <= 0)
if (AbnormalCondition.canNegativeNumberList.Contains(key))
{
if (EnemyState.abnormalCondition[key].value == 0)
{
EnemyState.abnormalCondition.Remove(key);
}
}
else
{
EnemyState.abnormalCondition.Remove(key);
if (EnemyState.abnormalCondition[key].value <= 0)
{
EnemyState.abnormalCondition.Remove(key);
}
}
}
}
@ -597,13 +931,9 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
{
int angerUpperDamage = 0, angerDownDamage = 0;
if (EnemyState .abnormalCondition .ContainsKey(UpperCondition.angerUpperDamage))
{
angerUpperDamage = EnemyState.abnormalCondition[UpperCondition.angerUpperDamage].value;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.angerDownDamage))
if (EnemyState .abnormalCondition .ContainsKey(AbnormalCondition.angerUpperDamage))
{
angerDownDamage = EnemyState.abnormalCondition[AbnormalCondition.angerDownDamage].value;
angerUpperDamage = EnemyState.abnormalCondition[AbnormalCondition.angerUpperDamage].value;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.weak))
{
@ -624,13 +954,9 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
{
int shieldValue = 0;
if (EnemyState.abnormalCondition.ContainsKey(UpperCondition.shieldUpperValue))
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.shieldUpperValue))
{
shieldValue += EnemyState.abnormalCondition[UpperCondition.shieldUpperValue].value;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.shieldDownValue))
{
shieldValue -= EnemyState.abnormalCondition[AbnormalCondition.shieldDownValue].value;
shieldValue += EnemyState.abnormalCondition[AbnormalCondition.shieldUpperValue].value;
}
shield += shieldValue;
@ -641,11 +967,14 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
//闪位实现
public void FlashPointRealize()
{
HashSet <MapUnity> targetNodeList= new HashSet<MapUnity>();
targetNodeList.Add(GameManager.Instance.X[positionX].Y[positionY]);
getNodeTools.getCircleNodeForEnemy(targetNodeList,1);
targetNodeList.Remove(GameManager.Instance.X[positionX].Y[positionY]);
//随机移动
int index_X = UnityEngine.Random.Range(0, GameManager.Instance.X.Count);
int index_Y = UnityEngine.Random.Range(0, GameManager.Instance.X[index_X].Y.Count);
MapUnity targetNode = GameManager.Instance.X[index_X].Y[index_Y];
MapUnity targetNode = getNodeTools.getRandomElement(targetNodeList);
MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY];
currentNode.enemyNode = null;
@ -682,31 +1011,6 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
}
}
//²½Êý¼ÆËã
public int StepRangeCalculation(int stepRange)
{
int addStepRange = 0;
if (EnemyState.abnormalCondition.ContainsKey(UpperCondition.upperSpeed))
{
addStepRange += 1;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
{
addStepRange -= 1;
}
if (EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.BanStep))
{
EnemyState.stepRangeMultiplier = 0;
}
else
{
EnemyState.stepRangeMultiplier = 1f;
}
stepRange = (int)((stepRange + addStepRange) * EnemyState.stepRangeMultiplier);
return stepRange;
}
//腐蚀实现
public void CorrodeRealize(MapUnity node)
{
@ -716,6 +1020,8 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver
}
}
#endregion
}

158
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/SkeletonArcher.cs

@ -22,69 +22,7 @@ public class SkeletonArcher : MonoBehaviour
private void Update()
{
/*//时时寻路
if (GameManager.Instance.complete == true && TurnMaster.Instance.turn == TurnMaster.Turn.playerTurn)
{
if (lastTime > 0)
{
lastTime -= Time.deltaTime;
}
else
{
enemyNode.FindPath();
if (enemyNode.pasth.Count > enemyNode.EnemyState.attackRange)
{
enemyNode.moveType = EnemyNode.MoveType.front;
}
else if (enemyNode.pasth.Count == enemyNode.EnemyState.attackRange)
{
enemyNode.moveType = EnemyNode.MoveType.stay;
}
else
{
//反向寻路
MapUnity currentNode = enemyNode.pasth[0];
enemyNode.oppositePasth.Clear();
enemyNode.oppositePasth = AStarManager.Instance.FindOppositePath(currentNode, GameManager.Instance.playerOn, enemyNode.EnemyState.stepRange);
enemyNode.moveType = EnemyNode.MoveType.back;
}
if (enemyNode.moveType == EnemyNode.MoveType.stay)
{
enemyNode.canMove = false;
}
else
{
enemyNode.canMove = true;
}
//瞄准
switch (enemyNode.planAction)
{
case EnemyNode.PlanAction.shoot:
ArcherAim();
break;
case EnemyNode.PlanAction.aoe:
if (enemyNode.pasth.Count <= enemyNode.EnemyState.attackRange)
{
enemyNode.lineAim.GetComponent<EnemyAimLine>().aimGamgObject = GameManager.Instance.player .gameObject;
}
else
{
enemyNode.lineAim.GetComponent<EnemyAimLine>().aimGamgObject = enemyNode.pasth[enemyNode.EnemyState.attackRange].gameObject;
}
break;
}
enemyNode.enemyUIBar.RefreshEnemyBuffIcon();
//重置时间标量
lastTime = time;
}
}*/
}
@ -96,7 +34,15 @@ public class SkeletonArcher : MonoBehaviour
IEnumerator JudgeActionCoroutine()//等移动到位置就判断是否还能走
{
yield return StartCoroutine(RemoteAttackAction());
if (enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.disarm))
{
}
else
{
yield return StartCoroutine(RemoteAttackAction());
}
}
@ -127,9 +73,9 @@ public class SkeletonArcher : MonoBehaviour
private int getMoveStep()
{
if(enemyNode.EnemyState.getStepRange() + 1<= enemyNode.pasth.Count)
if(enemyNode.getStepRange() + 1<= enemyNode.pasth.Count)
{
return enemyNode.EnemyState.getStepRange() + 1;
return enemyNode.getStepRange() + 1;
}
else
{
@ -139,6 +85,7 @@ public class SkeletonArcher : MonoBehaviour
IEnumerator moveOneStep(MapUnity nexMapUnity)
{
enemyNode.bleedCal();
MapUnity currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY];
MapUnity disNode = nexMapUnity;
currentNode.blocked = false;
@ -151,6 +98,10 @@ public class SkeletonArcher : MonoBehaviour
IEnumerator RemoteAttackAction()
{
//Usermanager.Instance.SufferPlayerAbnormalCondition(AbnormalCondition.immunity, 1);
//Usermanager.Instance.SufferPlayerAbnormalCondition(AbnormalCondition.banStep, 1);
//enemyNode.sufferAbnormalCondition(AbnormalCondition.immunity, 1);
enemyNode.sufferAbnormalCondition(AbnormalCondition.boom, 1);
MapUnity currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY];
if (getNodeTools.canRemoteAttack(currentNode,enemyNode.EnemyState.attackRange))
{
@ -164,9 +115,18 @@ public class SkeletonArcher : MonoBehaviour
}
}
IEnumerator JudgNextActionCoroutine()
{
yield return StartCoroutine(JudgeActionCoroutine());
if (enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.sleep))
{
}
else
{
yield return StartCoroutine(JudgeActionCoroutine());
}
//下回合意图
ArcherAim();
@ -193,62 +153,7 @@ public class SkeletonArcher : MonoBehaviour
yield break;
}
public void SkeletonArcherAction()
{
float distance = Vector3.Distance(this.transform.position, GameManager.Instance.player.transform.position);
//放技能
if (enemyNode.EnemyState.currentSkillCoolDown > 0)
{
Vector3 dir = GameManager.Instance.player.transform.position - this.transform.position;
Ray ray = new Ray(this.transform.position, dir);
if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, layerMask.value))
{
if (raycastHit.collider.tag == "Player" && distance <= enemyNode.EnemyState.attackRange+0.5f)
{
AttackDamage();
}
}
Debug.Log("远程攻击");
}
else
{
if (distance <= enemyNode.EnemyState.attackRange + 0.5f)
{
ArcherColour(GameManager.Instance.playerOn);
}
else
{
ArcherColour(enemyNode.pasth[enemyNode.EnemyState.attackRange]);
}
enemyNode.EnemyState.currentSkillCoolDown = enemyNode.EnemyState.maxSkillCoolDown;
Debug.Log("剑雨");
}
}
public void NextTurnIntention()
{
if (enemyNode.pasth.Count <= enemyNode.EnemyState.attackRange)
{
enemyNode.canMove = false;
}
else
{
enemyNode.canMove = true;
}
//判断下回合放啥技能
if (enemyNode.EnemyState.currentSkillCoolDown <= 0)
{
enemyNode.planAction = EnemyNode.PlanAction.aoe;
enemyNode.canLineAppre = true;
}
else
{
enemyNode.planAction = EnemyNode.PlanAction.shoot;
enemyNode.canLineAppre = true;
}
}
public void ArcherColour(MapUnity currentNode)
{
@ -291,11 +196,6 @@ public class SkeletonArcher : MonoBehaviour
public void AttackDamage()
{
Usermanager.Instance.shield -= (int)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
if (Usermanager.Instance.shield < 0)
{
GameManager.Instance.playerState.currentHP += Usermanager.Instance.shield;
Usermanager.Instance.shield = 0;
}
Usermanager.Instance.SufferDamage(enemyNode.DamageCalculation(enemyNode.EnemyState.damage),enemyNode);
}
}

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

@ -100,6 +100,7 @@ public class SkullGuardian : MonoBehaviour
if (getNodeTools.canRemoteAttack(currentNode, enemyNode.EnemyState.attackRange))
{
AttackDamage();
//Usermanager.Instance.SufferPlayerAbnormalCondition(AbnormalCondition.vulnerable, 1);
}
else
{
@ -109,6 +110,7 @@ public class SkullGuardian : MonoBehaviour
if (getNodeTools.canRemoteAttack(currentNode, enemyNode.EnemyState.attackRange))
{
AttackDamage();
//Usermanager.Instance.SufferPlayerAbnormalCondition(AbnormalCondition.vulnerable, 1);
}
}
}
@ -126,9 +128,9 @@ public class SkullGuardian : MonoBehaviour
}
private int getMoveStep()
{
if (enemyNode.EnemyState.getStepRange() + 1 <= enemyNode.pasth.Count)
if (enemyNode.getStepRange() + 1 <= enemyNode.pasth.Count)
{
return enemyNode.EnemyState.getStepRange() + 1;
return enemyNode.getStepRange() + 1;
}
else
{
@ -193,11 +195,6 @@ public class SkullGuardian : MonoBehaviour
public void AttackDamage()
{
Usermanager.Instance.shield -= (int)(enemyNode.EnemyState.damage * enemyNode.EnemyState.damageMultiplier);
if (Usermanager.Instance.shield < 0)
{
GameManager.Instance.playerState.currentHP += Usermanager.Instance.shield;
Usermanager.Instance.shield = 0;
}
Usermanager.Instance.SufferDamage(enemyNode.DamageCalculation(enemyNode.EnemyState.damage),enemyNode);
}
}

3
ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs

@ -28,7 +28,7 @@ public class Player : MonoBehaviour
{
if (Mouse.current.leftButton.wasPressedThisFrame && TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.useCard&& TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.banAction)
{
if (GameManager.Instance.playerState.currentStepRange > 0)
if (GameManager.Instance.playerState.currentStepRange > 0&&!Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.banStep))
{
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value);
if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, playerLayerMask.value) && raycastHit.collider.gameObject.tag == "Player")
@ -123,6 +123,7 @@ public class Player : MonoBehaviour
//ÅжϼÄÉúÊÇ·ñÉúЧ
Usermanager.Instance.ParasitismnRealize(GameManager.Instance.playerOn, mapNode);
Usermanager.Instance.bleedRealize(GameManager.Instance.playerOn, mapNode);
mapNode.playerOn = true;
GameManager.Instance.playerOn = mapNode;

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

@ -21,34 +21,43 @@ public class AbnormalCondition : Singleton<AbnormalCondition>
//后加玩家方
//怒火提升伤害-
// public const string angerUpperDamage = "11";
//큼삽슉됴�벧-
public const string angerDownDamage = "12";
public const string angerUpperDamage = "16";
//坚固获得护盾增益-
//public const string shieldUpperValue = "13";
//솽미맏슉됴빱뜀-
public const string shieldDownValue = "14";
public const string shieldUpperValue = "17";
//坚固(回合开始不掉护盾)-
//public const string firm = "15";
//속탬-
// public const string addDrawCard = "16";
//숑탬-
public const string minusDrawCard = "17";
//쐐탬-
public const string banDrawCard = "18";
public const string firm = "18";
//易伤-
public const string vulnerable = "19";
//속탬-
public const string addDrawCard = "20";
//쐐탬-
public const string banDrawCard = "21";
//加速-
//public const string upperSpeed = "20";
public const string upSpeed = "22";
//减速-
public const string downSpeed = "21";
public const string downSpeed = "23";
//缠绕-
public const string BanStep = "22";
public const string banStep = "26";
//火种
public const string fireSeed = "23";
public const string fireSeed = "25";
//昏睡(叠层那个)
public const string levelSleep = "24";
//寄生
public const string parasitism = "25";
public const string parasitism = "27";
//릭苛
public const string corrode = "28";
//출磊
public const string immunity = "29";
//菱괵
public const string boom = "30";
//菱괵할宏횡
public const string boomAndPollute = "31";
//�貫
public const string flashPoint = "106";
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 };
}

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

@ -34,5 +34,25 @@ public class CardFunction
public const string dyeing = "14";
//造成场地差伤害
public const string nodeDiffDamage = "15";
//큼삽
public const string ember = "16";
//솽미
public const string enhanceShield = "17";
//퓻미
public const string firm = "18";
//弄�
public const string vulnerable = "19";
//속탬
public const string extraDrawCardsNum = "20";
//쐐탬
public const string banDrawCard = "21";
//속醵
public const string upSpeed = "22";
//숑醵
public const string downSpeed = "23";
//삽蘆
public const string fireSeed = "25";
//끌훈
public const string banStep = "26";
}

13
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardType.cs

@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CardType
{
//攻击牌
public const int attack = 1;
//技能牌
public const int skill = 2;
//能力牌
public const int ablility = 3;
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardType.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 904f37a760855624384a12bc6f1ebfb4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

5
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/EnemyState_SO.cs

@ -40,8 +40,5 @@ public class EnemyState_SO : ScriptableObject
public int attackRange;//¹¥»÷·¶Î§
public int getStepRange()
{
return (int)(stepRange * stepRangeMultiplier);
}
}

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

@ -40,6 +40,14 @@ public class MathTool
return numbers;
}
public static void keepNature(int number)
{
if (number < 0)
{
number= 0;
}
}
public static List<T> RemoveDuplicates<T>(List<T> list)
{
List<T> result = new List<T>();

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

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
@ -71,6 +72,22 @@ public class getNodeTools
return canPass;
}
public static bool tryGetNodeFroPlayerBoom(MapUnity currentNode, HashSet<MapUnity> results)
{
bool canPass = true;
if (currentNode == null)
{
canPass = false;
return canPass;
}
if (canPass)
{
results.Add(currentNode);
}
return canPass;
}
public static bool tryGetNodeForEnemy(MapUnity currentNode, HashSet<MapUnity> results)
{
bool canPass = true;
@ -87,6 +104,10 @@ public class getNodeTools
canPass = false;
}
}
if (currentNode.Equals(GameManager.Instance.playerOn))
{
canPass = false;
}
if (canPass)
{
@ -103,6 +124,14 @@ public class getNodeTools
}
}
public static void getCircleNodeForBoom(HashSet<MapUnity> nodeList, int range)
{
for (int i = 0; i < range; i++)
{
getNearbyNodeForBoom(nodeList);
}
}
public static void getCircleNodeForEnemy(HashSet<MapUnity> nodeList, int range)
{
for (int i = 0; i < range; i++)
@ -153,6 +182,25 @@ public class getNodeTools
}
public static void getNearbyNodeForBoom(HashSet<MapUnity> nodeList)
{
// 创建一个副本以避免遍历时修改原集合
HashSet<MapUnity> nodesCopy = new HashSet<MapUnity>(nodeList);
HashSet<MapUnity> nodesToAdd = new HashSet<MapUnity>(); // 临时列表存储要添加的节点
foreach (var node in nodesCopy)
{
for (int i = 0; i < 6; i++)
{
tryGetNodeFroPlayerBoom(node.unitPool[i], nodesToAdd);
}
}
// 遍历完成后统一修改原集合
nodeList.AddRange(nodesToAdd);
}
public static void getNearbyNodeFroEnemy(HashSet<MapUnity> nodeList)
{
// 创建一个副本以避免遍历时修改原集合
@ -258,7 +306,6 @@ public class getNodeTools
if (Physics.Raycast(ray, out RaycastHit raycastHit, distance, layerMask.value))
{
float disChar = distance - Vector3.Distance(centerMapUnity.transform.position, raycastHit.collider.transform.position);
Debug.Log(disChar);
if (disChar > 0.25)
{
canPass = false;
@ -325,5 +372,16 @@ public class getNodeTools
return canAttack;
}
public static MapUnity getRandomElement(HashSet<MapUnity> hashSet)
{
if (hashSet == null || hashSet.Count == 0)
{
throw new ArgumentException("HashSet cannot be null or empty.");
}
System.Random random = new System.Random();
return hashSet.ElementAt(random.Next(hashSet.Count));
}
}

36
ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs

@ -5,6 +5,7 @@ using UnityEngine.InputSystem;
using UnityEngine.UI;
using System.Linq;
using System.Xml;
using System;
public class EnemyUIBar : MonoBehaviour
{
@ -140,24 +141,31 @@ public class EnemyUIBar : MonoBehaviour
//Òì³£BuffÏÔʾ
public void RefreshEnemyBuffIcon()
{
EnemyState_SO EnemyState = enemyNode.EnemyState;
//ÏÈÇå¿Õ
foreach (var icon in buffIconList )
try
{
Destroy(icon);
}
buffIconList.Clear();
//ÔÙË¢ÐÂ
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
if (EnemyState.abnormalCondition[key].value > 0)
EnemyState_SO EnemyState = enemyNode.EnemyState;
//ÏÈÇå¿Õ
foreach (var icon in buffIconList)
{
var buff = Instantiate(buffIcon, buffPanle.transform);
EnemyState.abnormalCondition[key].EnemyUIShow(buff, key,enemyNode);
buffIconList.Add(buff);
Destroy(icon);
}
buffIconList.Clear();
//ÔÙË¢ÐÂ
foreach (var key in EnemyState.abnormalCondition.Keys.ToList())
{
if (EnemyState.abnormalCondition[key].value > 0)
{
var buff = Instantiate(buffIcon, buffPanle.transform);
EnemyState.abnormalCondition[key].EnemyUIShow(buff, key, enemyNode);
buffIconList.Add(buff);
}
}
}catch(Exception e)
{
}
}
}

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

@ -15,25 +15,33 @@ public class BuffDataManager : Singleton<BuffDataManager>
abnormalCondition.Add("6", new Buff_coma());
abnormalCondition.Add("7", new Buff_disarm());
abnormalCondition.Add("8", new Buff_sleep());
abnormalCondition.Add("12", new Buff_DownAnger());
abnormalCondition.Add("14", new Buff_DownShield());
abnormalCondition.Add("17", new Buff_MinusDrawCard());
abnormalCondition.Add("18", new Buff_BanDrawCard());
abnormalCondition.Add("9", new Buff_Bleed());
abnormalCondition.Add("10", new Buff_Thorn());
abnormalCondition.Add("16", new Buff_UpperAnger());
abnormalCondition.Add("17", new Buff_UpperShield());
abnormalCondition.Add("18", new Buff_Firm());
abnormalCondition.Add("19", new Buff_Vulnerable());
abnormalCondition.Add("21", new Buff_DownStepRange());
abnormalCondition.Add("22", new Buff_BanStepRange());
abnormalCondition.Add("23", new Buff_FireSeed());
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());
abnormalCondition.Add("25", new Buff_parasitism());
abnormalCondition.Add("25", new Buff_FireSeed());
abnormalCondition.Add("26", new Buff_BanStepRange());
abnormalCondition.Add("27", new Buff_parasitism());
abnormalCondition.Add("28", new Buff_corrode());
abnormalCondition.Add("29", new Buff_Immunity());
abnormalCondition.Add("30", new Buff_Boom());
abnormalCondition.Add("31", new Buff_BoomAndPollute());
abnormalCondition.Add("101", new Buff_UpperAnger());
abnormalCondition.Add("102", new Buff_UpperShield());
abnormalCondition.Add("103", new Buff_Firm());
abnormalCondition.Add("104", new Buff_DrawCardNumber());
//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());
abnormalCondition.Add("108", new Buff_corrode());
}

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

@ -8,7 +8,7 @@ public class MapUnitySettleManager : Singleton<MapUnitySettleManager>
{
if(GameManager .Instance .playerOn .whoColour == MapUnity.WhoColour.enemyColour )
{
Usermanager.Instance.AddPlayerAbnormalCondition_downSpeed(value);
//Usermanager.Instance.AddPlayerAbnormalCondition_downSpeed(value);
}
else if (GameManager.Instance.playerOn.whoColour == MapUnity.WhoColour.playerColour)
{
@ -21,7 +21,7 @@ public class MapUnitySettleManager : Singleton<MapUnitySettleManager>
{
if (enemyNode.GetMapGrid().whoColour == MapUnity.WhoColour.playerColour)
{
AddEnemyFireSeed(enemyNode, value);
enemyNode.sufferAbnormalCondition(AbnormalCondition.fireSeed, value);
}
}
@ -34,7 +34,7 @@ public class MapUnitySettleManager : Singleton<MapUnitySettleManager>
enemyNode.sufferAbnormalCondition(AbnormalCondition.fireSeed, value);
if (enemyNode.EnemyState.abnormalCondition[AbnormalCondition.fireSeed].value >= 10)
{
enemyNode.sufferDamage(Usermanager .Instance . DamageCalculation(15));
enemyNode.sufferDamage(Usermanager .Instance . DamageCalculation(15), false);
enemyNode.EnemyState.abnormalCondition[AbnormalCondition.fireSeed].value -= 10;
enemyNode.enemyUIBar.RefreshEnemyBuffIcon();
}

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

@ -15,7 +15,7 @@ public class SettlementManager : Singleton<SettlementManager>
for (int i = 0; i < influencePreviewPool.Count; i++)
{
//Ê©¼Ó¸ºÃæ
if (influencePreviewPool[i].enemyNode != null)
if (influencePreviewPool[i].enemyNode != null&& influencePreviewPool[i].enemyNode.enemyType!= EnemyNode.EnemyType.block)
{
influencePreviewPool[i].enemyNode.sufferAbnormalCondition(condition, stackVak);
}
@ -38,7 +38,7 @@ public class SettlementManager : Singleton<SettlementManager>
//Ôì³ÉÉ˺¦
if (influencePreviewPool[i].enemyNode != null)
{
influencePreviewPool[i].enemyNode.sufferDamage(damageVal);
influencePreviewPool[i].enemyNode.sufferDamage(Usermanager.Instance.DamageCalculation(damageVal), true);
}
}
}
@ -72,7 +72,7 @@ public class SettlementManager : Singleton<SettlementManager>
}
break;
case CardFunction.cardShield:
Usermanager.Instance.Shield = Usermanager.Instance.Shield + int.Parse(kvp.Value);
Usermanager.Instance.Shield += Usermanager.Instance.ShieldCalculation(int.Parse(kvp.Value));
break;
case CardFunction.posion:
case CardFunction.weak:
@ -80,6 +80,8 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.disarm:
case CardFunction.sleep:
case CardFunction.thorn:
case CardFunction.fireSeed:
case CardFunction.vulnerable:
abnormalConditionWork(kvp.Key, int.Parse(kvp.Value), influencePreviewPool);
break;
case CardFunction.costRestore:
@ -88,6 +90,16 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.dyeing:
dyeingWork(influencePreviewPool);
break;
case CardFunction.ember:
case CardFunction.enhanceShield:
case CardFunction.firm:
case CardFunction.extraDrawCardsNum:
case CardFunction.banDrawCard:
case CardFunction.upSpeed:
case CardFunction.downSpeed:
case CardFunction.banStep:
Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value));
break;
case CardFunction.discard:
yield return StartCoroutine(TurnMaster.Instance.randomDiscard(int.Parse(kvp.Value)));
yield return StartCoroutine(TurnMaster.Instance.MoveCards());
@ -114,8 +126,14 @@ public class SettlementManager : Singleton<SettlementManager>
switch (kvp.Key)
{
case CardFunction.drawCard:
TurnMaster.Instance.drawCards(int.Parse(kvp.Value));
yield return StartCoroutine(TurnMaster.Instance.MoveCards());
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.banDrawCard))
{
}
else
{
TurnMaster.Instance.drawCards(int.Parse(kvp.Value));
yield return StartCoroutine(TurnMaster.Instance.MoveCards());
}
break;
}

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

@ -73,24 +73,12 @@ public class Usermanager : Singleton<Usermanager>
SufferPlayerAbnormalCondition(UpperCondition.angerUpperDamage, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_angerDownDamage(int value)
{
Buff buff = new Buff_DownAnger();
SufferPlayerAbnormalCondition(AbnormalCondition.angerDownDamage, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_shieldUpperValue(int value)
{
Buff buff = new Buff_UpperShield();
SufferPlayerAbnormalCondition(UpperCondition.shieldUpperValue, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_shieldDownValue(int value)
{
Buff buff = new Buff_DownShield();
SufferPlayerAbnormalCondition(AbnormalCondition.shieldDownValue, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_firm(int value)
{
Buff buff = new Buff_Firm();
@ -103,24 +91,12 @@ public class Usermanager : Singleton<Usermanager>
SufferPlayerAbnormalCondition(UpperCondition.addDrawCard, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_minusDrawCard(int value)
{
Buff buff = new Buff_MinusDrawCard();
SufferPlayerAbnormalCondition(AbnormalCondition.minusDrawCard , value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_banDrawCard(int value)
{
Buff buff = new Buff_BanDrawCard();
SufferPlayerAbnormalCondition(AbnormalCondition.banDrawCard, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_downSpeed(int value)
{
Buff buff = new Buff_DownStepRange();
SufferPlayerAbnormalCondition(AbnormalCondition.downSpeed, value, buff);
RefreshPlayerBuffIcon();
}
public void AddPlayerAbnormalCondition_upperSpeed(int value)
{
Buff buff = new Buff_UpperStepRange();
@ -159,7 +135,7 @@ public class Usermanager : Singleton<Usermanager>
public void AddPlayerAbnormalCondition_BanStep(int value)
{
Buff buff = new Buff_BanStepRange();
SufferPlayerAbnormalCondition(AbnormalCondition.BanStep, value, buff);
SufferPlayerAbnormalCondition(AbnormalCondition.banStep, value, buff);
RefreshPlayerBuffIcon();
}
@ -189,11 +165,28 @@ public class Usermanager : Singleton<Usermanager>
}
public void SufferPlayerAbnormalCondition(string condition, int value)
{
if (immunityCal(condition,value))
{
return;
}
if (condition.Equals(AbnormalCondition.levelSleep))
{
sufferLevelSleep(condition, value);
return;
}
if (condition.Equals(AbnormalCondition.upSpeed)|| condition.Equals(AbnormalCondition.downSpeed))
{
sufferSpeed(condition, value);
return;
}
if (playerAbnormalCondition.ContainsKey(condition))
{
int beforeval = playerAbnormalCondition[condition].value;
int afterval = beforeval + value;
playerAbnormalCondition[condition].value = afterval;
Debug.Log("加入了:" + condition + "afterval:" + afterval);
}
else
{
@ -201,11 +194,143 @@ public class Usermanager : Singleton<Usermanager>
}
}
private bool immunityCal(string condition, int value)
{
bool isImmunityDispose = false;
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.immunity)&& !AbnormalCondition.playBuffList.Contains(condition))
{
isImmunityDispose = true;
playerAbnormalCondition[AbnormalCondition.immunity].value -= 1;
if (playerAbnormalCondition[AbnormalCondition.immunity].value<=0)
{
playerAbnormalCondition.Remove(AbnormalCondition.immunity);
}
}
return isImmunityDispose;
}
private void sufferLevelSleep(string condition, int value)
{
//LevelSleep的特殊处理
int nowValue = 0;
if (playerAbnormalCondition.ContainsKey(condition))
{
nowValue = playerAbnormalCondition[condition].value;
}
int trueValue = nowValue + value;
int sleepLayers = 0;
if (trueValue >= 10)
{
sleepLayers = trueValue / 10;
}
int afterval = trueValue % 10;
Debug.Log("sleep层数是:" + sleepLayers);
Debug.Log("剩余层数是:" + afterval);
if (sleepLayers > 0)
{
SufferPlayerAbnormalCondition(AbnormalCondition.sleep, sleepLayers);
}
playerAbnormalCondition.Remove(condition);
AddNewAbnormalCondition(condition, afterval);
//enemyUIBar.RefreshEnemyBuffIcon();
}
private void sufferSpeed(string condition, int value)
{
//speed的特殊处理
if (condition.Equals(AbnormalCondition.upSpeed))
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
{
int downLayer = playerAbnormalCondition[AbnormalCondition.downSpeed].value;
int trueLayer = downLayer - value;
if (trueLayer > 0)
{
playerAbnormalCondition[AbnormalCondition.downSpeed].value = trueLayer;
}
else if (trueLayer == 0)
{
playerAbnormalCondition.Remove(AbnormalCondition.downSpeed);
}
else if (trueLayer < 0)
{
playerAbnormalCondition.Remove(AbnormalCondition.downSpeed);
AddNewAbnormalCondition(condition, 0-trueLayer);
}
}else
{
if (playerAbnormalCondition.ContainsKey(condition))
{
int beforeval = playerAbnormalCondition[condition].value;
int afterval = beforeval + value;
playerAbnormalCondition[condition].value = afterval;
Debug.Log("加入了:" + condition + "afterval:" + afterval);
}
else
{
AddNewAbnormalCondition(condition, value);
}
}
}else if (condition.Equals(AbnormalCondition.downSpeed))
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.upSpeed))
{
int downLayer = playerAbnormalCondition[AbnormalCondition.upSpeed].value;
int trueLayer = downLayer - value;
if (trueLayer > 0)
{
playerAbnormalCondition[AbnormalCondition.upSpeed].value = trueLayer;
}
else if (trueLayer == 0)
{
playerAbnormalCondition.Remove(AbnormalCondition.upSpeed);
}
else if (trueLayer < 0)
{
playerAbnormalCondition.Remove(AbnormalCondition.upSpeed);
AddNewAbnormalCondition(condition, 0 - trueLayer);
}
}
else
{
if (playerAbnormalCondition.ContainsKey(condition))
{
int beforeval = playerAbnormalCondition[condition].value;
int afterval = beforeval + value;
playerAbnormalCondition[condition].value = afterval;
Debug.Log("加入了:" + condition + "afterval:" + afterval);
}
else
{
AddNewAbnormalCondition(condition, value);
}
}
}
//enemyUIBar.RefreshEnemyBuffIcon();
}
public void AddNewAbnormalCondition(string condition, int value)
{
if (BuffDataManager.Instance.abnormalCondition.ContainsKey(condition))
{
if (condition.Equals(AbnormalCondition.upSpeed))
{
GameManager.Instance.playerState.currentStepRange += 1;
}
if (condition.Equals(AbnormalCondition.downSpeed))
{
GameManager.Instance.playerState.currentStepRange -= 1;
}
if (condition.Equals(AbnormalCondition.banStep))
{
GameManager.Instance.playerState.currentStepRange = 0;
}
playerAbnormalCondition.Add(condition, BuffDataManager.Instance.abnormalCondition[condition].NewBuff(value));
Debug.Log("加入了:" + condition + "value是:" + value);
}
}
//回合Buff结算
@ -218,6 +343,17 @@ public class Usermanager : Singleton<Usermanager>
RefreshPlayerBuffIcon();
}
}
public void PlayerTurnBeginSettle()
{
foreach (var key in playerAbnormalCondition.Keys.ToList())
{
playerAbnormalCondition[key].BeginSettle();
AbnormalConditionEndCheck();
RefreshPlayerBuffIcon();
}
}
//回合结束时结算buff
public void BuffSettleInEndTurn()
@ -239,9 +375,19 @@ public class Usermanager : Singleton<Usermanager>
{
foreach (var key in playerAbnormalCondition.Keys.ToList())
{
if (playerAbnormalCondition[key].CheckValue() <= 0)
if (AbnormalCondition.canNegativeNumberList.Contains(key))
{
playerAbnormalCondition.Remove(key);
if (playerAbnormalCondition[key].CheckValue() == 0)
{
playerAbnormalCondition.Remove(key);
}
}
else
{
if (playerAbnormalCondition[key].CheckValue() <= 0)
{
playerAbnormalCondition.Remove(key);
}
}
}
}
@ -268,26 +414,80 @@ public class Usermanager : Singleton<Usermanager>
}
}
public void SufferDamage(int damage)
public void SufferTrueDamage(int damage)
{
GameManager.Instance.playerState.currentHP -= SufferDamageCalculation(damage);
int trueDamage = SufferTrueDamageCalculation(damage);
if (trueDamage > shield)
{
int afterVal= trueDamage - shield;
shield = 0;
GameManager.Instance.playerState.currentHP -= afterVal;
}
else
{
shield-= trueDamage;
}
}
public void SufferDamage(int damage,EnemyNode enemyNode)
{
if (enemyNode != null)
{
thornCal(enemyNode);
}
bleedCal();
int trueDamage = SufferDamageCalculation(damage);
if (trueDamage > shield)
{
int afterVal = trueDamage - shield;
shield = 0;
GameManager.Instance.playerState.currentHP -= afterVal;
}
else
{
shield -= trueDamage;
}
}
private void bleedCal()
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.bleed))
{
SufferTrueDamage(2);
playerAbnormalCondition[AbnormalCondition.bleed].value -=1;
if (playerAbnormalCondition[AbnormalCondition.bleed].value<=0)
{
playerAbnormalCondition.Remove(AbnormalCondition.bleed);
}
}
}
private void thornCal(EnemyNode enemyNode)
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.thorn))
{
enemyNode.sufferTrueDamage(3);
playerAbnormalCondition[AbnormalCondition.thorn].value -= 1;
if (playerAbnormalCondition[AbnormalCondition.thorn].value <= 0)
{
playerAbnormalCondition.Remove(AbnormalCondition.thorn);
}
}
}
#region Buff结算函数
//计算函数
//伤害计算函数
public int DamageCalculation(int damage)
{
int angerUpperDamage=0, angerDownDamage=0;
int angerUpperDamage = 0;
if (playerAbnormalCondition .ContainsKey (UpperCondition .angerUpperDamage ))
if (playerAbnormalCondition .ContainsKey (AbnormalCondition.angerUpperDamage))
{
angerUpperDamage = playerAbnormalCondition[UpperCondition.angerUpperDamage].value;
}
if(playerAbnormalCondition.ContainsKey(AbnormalCondition.angerDownDamage ))
{
angerDownDamage = playerAbnormalCondition[AbnormalCondition.angerDownDamage].value;
angerUpperDamage = playerAbnormalCondition[AbnormalCondition.angerUpperDamage].value;
}
if(playerAbnormalCondition.ContainsKey(AbnormalCondition.weak))
{
@ -296,8 +496,8 @@ public class Usermanager : Singleton<Usermanager>
{
damagemultiply = 1f;
}
damage = (int)((damage + angerUpperDamage - angerDownDamage) * damagemultiply);
damage = (int)((damage + angerUpperDamage ) * damagemultiply);
MathTool.keepNature(damage);
return damage;
}
@ -307,59 +507,30 @@ public class Usermanager : Singleton<Usermanager>
{
int shieldValue = 0;
if (playerAbnormalCondition.ContainsKey(UpperCondition.shieldUpperValue))
{
shieldValue += playerAbnormalCondition[UpperCondition.shieldUpperValue].value;
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.shieldDownValue))
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.shieldUpperValue))
{
shieldValue -= playerAbnormalCondition[AbnormalCondition.shieldDownValue].value;
shieldValue += playerAbnormalCondition[AbnormalCondition.shieldUpperValue].value;
}
shield += shieldValue;
MathTool.keepNature(shield);
return shield;
}
//³éÅÆ¼ÆË㺯Êý
public int DrawCardCalculation(int drawNumber)
{
int addDrawNumber = 0;
if (playerAbnormalCondition.ContainsKey(UpperCondition.addDrawCard))
{
addDrawNumber += playerAbnormalCondition[UpperCondition.addDrawCard].value;
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.minusDrawCard))
{
addDrawNumber -= playerAbnormalCondition[AbnormalCondition.minusDrawCard].value;
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.banDrawCard))
{
drawNubmerMultiply =0;
}
else
{
drawNubmerMultiply = 1f;
}
drawNumber = (int)((drawNumber + addDrawNumber) * drawNubmerMultiply);
return drawNumber;
}
//移动力计算函数
public int StepRangeCalculation(int stepRange)
{
int addStepRange =0;
if (playerAbnormalCondition.ContainsKey(UpperCondition.upperSpeed))
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.upSpeed))
{
addStepRange += 1;
addStepRange = 1;
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
else if (playerAbnormalCondition.ContainsKey(AbnormalCondition.downSpeed))
{
addStepRange -= 1;
addStepRange = -1;
}
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.BanStep))
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.banStep))
{
stepRangeMultiply = 0;
}
@ -368,9 +539,24 @@ public class Usermanager : Singleton<Usermanager>
stepRangeMultiply = 1f;
}
stepRange = (int)((stepRange + addStepRange) *stepRangeMultiply);
MathTool.keepNature(stepRange);
return stepRange;
}
//受伤计算函数
public int SufferTrueDamageCalculation(int damage)
{
sufferDamageMultiply = 1f;
damage =(int)(sufferDamageMultiply * damage);
if (damage > 0 && playerAbnormalCondition.ContainsKey(AbnormalCondition.sleep))
{
sleep = false;
playerAbnormalCondition.Remove(AbnormalCondition.sleep);
BanActionJudge();
RefreshPlayerBuffIcon();
}
return damage;
}
public int SufferDamageCalculation(int damage)
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.vulnerable))
@ -381,7 +567,7 @@ public class Usermanager : Singleton<Usermanager>
{
sufferDamageMultiply = 1f;
}
damage =(int)(sufferDamageMultiply * damage);
damage = (int)(sufferDamageMultiply * damage);
if (damage > 0 && playerAbnormalCondition.ContainsKey(AbnormalCondition.sleep))
{
@ -396,7 +582,7 @@ public class Usermanager : Singleton<Usermanager>
//寄生实现函数
public void ParasitismnRealize(MapUnity start,MapUnity end)
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.parasitism)&& playerAbnormalCondition[AbnormalCondition.parasitism].value>0)
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.parasitism)|| playerAbnormalCondition.ContainsKey(AbnormalCondition.corrode))
{
List<MapUnity> path = AStarManager.Instance.FindPathWithEndNode(start, end);
foreach (var node in path )
@ -405,6 +591,24 @@ public class Usermanager : Singleton<Usermanager>
}
}
}
public void bleedRealize(MapUnity start, MapUnity end)
{
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.bleed))
{
List<MapUnity> path = AStarManager.Instance.FindPathWithEndNode(start, end);
foreach (var node in path)
{
SufferDamage(2,null);
playerAbnormalCondition[AbnormalCondition.bleed].value -= 1;
if (playerAbnormalCondition[AbnormalCondition.bleed].value<=0)
{
playerAbnormalCondition.Remove(AbnormalCondition.bleed);
}
}
}
}
//判断函数
@ -424,7 +628,7 @@ public class Usermanager : Singleton<Usermanager>
//强固判断函数
public bool FirmJudge()
{
if (playerAbnormalCondition.ContainsKey(UpperCondition.firm))
if (playerAbnormalCondition.ContainsKey(AbnormalCondition.firm))
{
firm = true;
}

21
ColorlessWorld-2024-4-2/Assets/data/card_data(已自动还原).CSV

@ -0,0 +1,21 @@
ID,名称,费用,稀有度,功能,数值,施法范围,作用范围,消耗,优势功能,数值,卡牌类型,优势描述,图片路径
10001,射击,1,1,1,7,3,1,0,1,7,1,,PlayerIcon
10002,护盾,1,1,2,5,0,0,0,2,5,1,,PlayerIcon
10003,毒药,1,1,4,6,3,1,0,4,10,1,施加4层中毒,PlayerIcon
10004,枫叶炸弹,2,2,9,2,2,7_2,0,9;4,2;4,1,施加4层中毒,PlayerIcon
10005,花粉,0,2,8,2,4,1,0,8,2,1,施加1层沉睡,PlayerIcon
10006,致残,2,1,7,2,2,1,0,7;9,2;2,1,施加2层流血,PlayerIcon
10007,滋养,1,2,12;13,3;1,0,0,0,12,3,1,无需丢弃,PlayerIcon
10008,草山压顶,3,3,1;6,10;1,2,1,0,1;6,13;1,1,造成3点伤害,PlayerIcon
10009,尖刺甲,1,1,2;10,3;4,0,0,0,2;10,3;6,1,获得3层荆棘,PlayerIcon
10010,活力,0,2,11,1,0,0,1,11,2,1,获得1点能量,PlayerIcon
10011,草团,2,1,1;14,5;0,1,6_2,1,1;14,8;0,1,造成3点伤害,PlayerIcon
10012,穿刺射击,2,1,1,8,1,5_1,0,1;4,8;4,1,施加4层中毒,PlayerIcon
10013,森林之怒,3,3,1,20,3,1,0,1;15,20;0,1,造成场地差伤害,PlayerIcon
10014,巨树之弓,2,1,1;14,13;0,3,5_3,0,1;14;5,13;0;1,1,施加1层虚弱,PlayerIcon
10015,炸弹,0,1,1,5,0,8_2,0,1,5,1,,PlayerIcon
10016,挥砍,1,1,,,,,,,,,,
10017,飞镖,1,1,,,,,,,,,,
10018,护盾,1,1,,,,,,,,,,
10019,刀锋冲刺,1,1,,,,,,,,,,
10020,火风车,2,1,,,,,,,,,,
1 ID 名称 费用 稀有度 功能 数值 施法范围 作用范围 消耗 优势功能 数值 卡牌类型 优势描述 图片路径
2 10001 射击 1 1 1 7 3 1 0 1 7 1 PlayerIcon
3 10002 护盾 1 1 2 5 0 0 0 2 5 1 PlayerIcon
4 10003 毒药 1 1 4 6 3 1 0 4 10 1 施加4层中毒 PlayerIcon
5 10004 枫叶炸弹 2 2 9 2 2 7_2 0 9;4 2;4 1 施加4层中毒 PlayerIcon
6 10005 花粉 0 2 8 2 4 1 0 8 2 1 施加1层沉睡 PlayerIcon
7 10006 致残 2 1 7 2 2 1 0 7;9 2;2 1 施加2层流血 PlayerIcon
8 10007 滋养 1 2 12;13 3;1 0 0 0 12 3 1 无需丢弃 PlayerIcon
9 10008 草山压顶 3 3 1;6 10;1 2 1 0 1;6 13;1 1 造成3点伤害 PlayerIcon
10 10009 尖刺甲 1 1 2;10 3;4 0 0 0 2;10 3;6 1 获得3层荆棘 PlayerIcon
11 10010 活力 0 2 11 1 0 0 1 11 2 1 获得1点能量 PlayerIcon
12 10011 草团 2 1 1;14 5;0 1 6_2 1 1;14 8;0 1 造成3点伤害 PlayerIcon
13 10012 穿刺射击 2 1 1 8 1 5_1 0 1;4 8;4 1 施加4层中毒 PlayerIcon
14 10013 森林之怒 3 3 1 20 3 1 0 1;15 20;0 1 造成场地差伤害 PlayerIcon
15 10014 巨树之弓 2 1 1;14 13;0 3 5_3 0 1;14;5 13;0;1 1 施加1层虚弱 PlayerIcon
16 10015 炸弹 0 1 1 5 0 8_2 0 1 5 1 PlayerIcon
17 10016 挥砍 1 1
18 10017 飞镖 1 1
19 10018 护盾 1 1
20 10019 刀锋冲刺 1 1
21 10020 火风车 2 1

7
ColorlessWorld-2024-4-2/Assets/data/card_data(已自动还原).CSV.meta

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 756dc84a049c81a4089ed459ecb0f174
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

5
ColorlessWorld-2024-4-2/Assets/data/card_data_1.csv

@ -0,0 +1,5 @@
ID,名称,费用,稀有度,功能,数值,施法范围,作用范围,消耗,优势功能,数值,卡牌类型,优势描述,图片路径
10001,挥砍,1,1,7;19,6;1,1,1,0,7;19,6;1,1,,PlayerIcon
10002,飞镖,1,1,7,4,1,5_1,0,7,4,1,,PlayerIcon
10003,护盾,1,1,12;23,2;1,0,0,0,12;23,2;1,2,,PlayerIcon
10004,火风车,0,1,1;22,4;1,0,6_3,0,1;22,4;1,1,,PlayerIcon
1 ID 名称 费用 稀有度 功能 数值 施法范围 作用范围 消耗 优势功能 数值 卡牌类型 优势描述 图片路径
2 10001 挥砍 1 1 7;19 6;1 1 1 0 7;19 6;1 1 PlayerIcon
3 10002 飞镖 1 1 7 4 1 5_1 0 7 4 1 PlayerIcon
4 10003 护盾 1 1 12;23 2;1 0 0 0 12;23 2;1 2 PlayerIcon
5 10004 火风车 0 1 1;22 4;1 0 6_3 0 1;22 4;1 1 PlayerIcon

7
ColorlessWorld-2024-4-2/Assets/data/card_data_1.csv.meta

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 02128876db686ef459bd576ab2d65d9a
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache

Binary file not shown.

BIN
ColorlessWorld-2024-4-2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache

Binary file not shown.
Loading…
Cancel
Save