|
|
|
@ -7,6 +7,7 @@ using Unity.VisualScripting; |
|
|
|
using UnityEditor.Experimental.GraphView; |
|
|
|
using UnityEngine; |
|
|
|
using static Name; |
|
|
|
using static UnityEditor.PlayerSettings; |
|
|
|
using static UnityEngine.EventSystems.EventTrigger; |
|
|
|
|
|
|
|
|
|
|
|
@ -28,6 +29,25 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void bleedIfNotWork(int stackVak, List<MapUnity> influencePreviewPool) |
|
|
|
{ |
|
|
|
for (int i = 0; i < influencePreviewPool.Count; i++) |
|
|
|
{ |
|
|
|
if (influencePreviewPool[i].enemyNode != null && influencePreviewPool[i].enemyNode.enemyType != EnemyNode.EnemyType.block) |
|
|
|
{ |
|
|
|
if (influencePreviewPool[i].enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed)) |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
influencePreviewPool[i].enemyNode.sufferAbnormalCondition(AbnormalCondition.bleed, stackVak); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void doubleBleed(List<MapUnity> influencePreviewPool) |
|
|
|
{ |
|
|
|
if (influencePreviewPool[0].enemyNode != null && influencePreviewPool[0].enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.bleed)) |
|
|
|
@ -515,6 +535,21 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void teleportAndDamageAround(List<MapUnity> influencePreviewPool,int damage) |
|
|
|
{ |
|
|
|
if (influencePreviewPool[0].enemyNode != null) |
|
|
|
{ |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
getNodeTools.playerTeleportToNode(influencePreviewPool[0]); |
|
|
|
HashSet<MapUnity> values = new HashSet<MapUnity> { influencePreviewPool[0]}; |
|
|
|
getNodeTools.getCircleNode(values,1); |
|
|
|
damageWork(damage, values.ToList(), 0); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void teleportAround(List<MapUnity> influencePreviewPool) |
|
|
|
{ |
|
|
|
HashSet<MapUnity> targets = new HashSet<MapUnity> { influencePreviewPool[0] }; |
|
|
|
@ -713,6 +748,7 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
public void damageWork(int damageVal, List<MapUnity> influencePreviewPool,int pierceNum) |
|
|
|
{ |
|
|
|
int pierceCount=0; |
|
|
|
pierceNum = -1; |
|
|
|
if (pierceNum!=-1) |
|
|
|
{ |
|
|
|
for (int i = 0; i < influencePreviewPool.Count; i++) |
|
|
|
@ -743,6 +779,49 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void damageWorkIfKillRestoreCost(int damageVal, List<MapUnity> influencePreviewPool, int pierceNum,int restoreCost) |
|
|
|
{ |
|
|
|
int pierceCount = 0; |
|
|
|
pierceNum = -1; |
|
|
|
bool ifKilled=false; |
|
|
|
if (pierceNum != -1) |
|
|
|
{ |
|
|
|
for (int i = 0; i < influencePreviewPool.Count; i++) |
|
|
|
{ |
|
|
|
//Ôì³ÉÉ˺¦
|
|
|
|
if (influencePreviewPool[i].enemyNode != null) |
|
|
|
{ |
|
|
|
pierceCount++; |
|
|
|
influencePreviewPool[i].enemyNode.sufferDamageIfKilled(Usermanager.Instance.DamageCalculation(damageVal), true,ref ifKilled); |
|
|
|
if (ifKilled) |
|
|
|
{ |
|
|
|
GameManager.Instance.playerState.currentCost += restoreCost; |
|
|
|
} |
|
|
|
if (pierceCount >= pierceNum + 1) |
|
|
|
{ |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
for (int i = 0; i < influencePreviewPool.Count; i++) |
|
|
|
{ |
|
|
|
//Ôì³ÉÉ˺¦
|
|
|
|
if (influencePreviewPool[i].enemyNode != null) |
|
|
|
{ |
|
|
|
influencePreviewPool[i].enemyNode.sufferDamageIfKilled(Usermanager.Instance.DamageCalculation(damageVal), true, ref ifKilled); |
|
|
|
if (ifKilled) |
|
|
|
{ |
|
|
|
GameManager.Instance.playerState.currentCost += restoreCost; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public IEnumerator settle(CardOriginalData cardOriginalData, HashSet<MapUnity> influencePreviewPoolSet, int cardIndex, MapUnity targetNode) |
|
|
|
{ |
|
|
|
List<MapUnity> influencePreviewPool=new List<MapUnity>(influencePreviewPoolSet); |
|
|
|
@ -834,10 +913,26 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
damageWork(damageVal, influencePreviewPool, pierceNum); |
|
|
|
} |
|
|
|
break; |
|
|
|
case CardFunction.damageAndRestoreCostIfKill: |
|
|
|
string[] valuesB = kvp.Value.Split("&"); |
|
|
|
int damageValB = int.Parse(valuesB[0]); |
|
|
|
int restoreCost = int.Parse(valuesB[1]); |
|
|
|
damageWorkIfKillRestoreCost(damageValB, influencePreviewPool, pierceNum,restoreCost); |
|
|
|
break; |
|
|
|
case CardFunction.damageForRedNode: |
|
|
|
List<MapUnity> redList = new List<MapUnity>(getNodeTools.getNodesWithColor(Name.Color.Red)); |
|
|
|
damageWork(int.Parse(kvp.Value), redList, pierceNum); |
|
|
|
break; |
|
|
|
case CardFunction.damageIfMoved: |
|
|
|
if (GameManager.Instance.isPlayerMoved) |
|
|
|
{ |
|
|
|
damageWork(int.Parse(kvp.Value), influencePreviewPool, pierceNum); |
|
|
|
} |
|
|
|
break; |
|
|
|
case CardFunction.damageMulNodeKind: |
|
|
|
int nodeKind=MapUnityManager.Instance.getNodeKind(); |
|
|
|
damageWork(int.Parse(kvp.Value)*nodeKind, influencePreviewPool, pierceNum); |
|
|
|
break; |
|
|
|
case CardFunction.damageForBlueNode: |
|
|
|
List<MapUnity> blueList = new List<MapUnity>(getNodeTools.getNodesWithColor(Name.Color.Blue)); |
|
|
|
damageWork(int.Parse(kvp.Value), blueList, pierceNum); |
|
|
|
@ -931,6 +1026,9 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
case CardFunction.doubleBleed: |
|
|
|
doubleBleed(influencePreviewPool); |
|
|
|
break; |
|
|
|
case CardFunction.bleedIfNot: |
|
|
|
bleedIfNotWork(int.Parse(kvp.Value), influencePreviewPool); |
|
|
|
break; |
|
|
|
case CardFunction.tripleBleed: |
|
|
|
tripleBleed(influencePreviewPool); |
|
|
|
break; |
|
|
|
@ -955,6 +1053,11 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
case CardFunction.nodesForCost: |
|
|
|
nodesForCostWork(influencePreviewPool, int.Parse(kvp.Value)); |
|
|
|
break; |
|
|
|
case CardFunction.switchStepToCost: |
|
|
|
int step=GameManager.Instance.playerState.currentStepRange; |
|
|
|
GameManager.Instance.playerState.currentStepRange = 0; |
|
|
|
GameManager.Instance.playerState.currentCost += step; |
|
|
|
break; |
|
|
|
case CardFunction.dyeing: |
|
|
|
//
|
|
|
|
break; |
|
|
|
@ -985,6 +1088,9 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
case CardFunction.teleportAround: |
|
|
|
teleportAround(new List<MapUnity> { targetNode }); |
|
|
|
break; |
|
|
|
case CardFunction.teleportAndDamageAround: |
|
|
|
teleportAndDamageAround(influencePreviewPool, int.Parse(kvp.Value)); |
|
|
|
break; |
|
|
|
case CardFunction.pullFirstEnemyToSelf: |
|
|
|
pullFirstEnemyToSelf(influencePreviewPool); |
|
|
|
break; |
|
|
|
@ -1034,6 +1140,7 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
case CardFunction.calm: |
|
|
|
case CardFunction.Invisible: |
|
|
|
case CardFunction.thrifty: |
|
|
|
case CardFunction.nextRoundCostMinusOne: |
|
|
|
Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value)); |
|
|
|
break; |
|
|
|
case CardFunction.doublebleedDamage: |
|
|
|
@ -1155,6 +1262,27 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
Usermanager .Instance .expectDamage.Item1 = Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)); |
|
|
|
Usermanager.Instance.expectDamage.Item2 = 1; |
|
|
|
break; |
|
|
|
case CardFunction.damageAndRestoreCostIfKill: |
|
|
|
string[] valuesB = kvp.Value.Split("&"); |
|
|
|
int damageValB = int.Parse(valuesB[0]); |
|
|
|
int restoreCost = int.Parse(valuesB[1]); |
|
|
|
Usermanager.Instance.expectDamage.Item1 = Usermanager.Instance.DamageCalculation(damageValB); |
|
|
|
Usermanager.Instance.expectDamage.Item2 = 1; |
|
|
|
break; |
|
|
|
case CardFunction.damageMulNodeKind: |
|
|
|
int nodeKind = MapUnityManager.Instance.getNodeKind(); |
|
|
|
Usermanager.Instance.expectDamage.Item1 = Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value) * nodeKind); |
|
|
|
Usermanager.Instance.expectDamage.Item2 = 1; |
|
|
|
break; |
|
|
|
case CardFunction.damageIfMoved: |
|
|
|
int damage = 0; |
|
|
|
if (GameManager.Instance.isPlayerMoved) |
|
|
|
{ |
|
|
|
damage= Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)); |
|
|
|
} |
|
|
|
Usermanager.Instance.expectDamage.Item1 = damage; |
|
|
|
Usermanager.Instance.expectDamage.Item2 = 1; |
|
|
|
break; |
|
|
|
case CardFunction.damagexy: |
|
|
|
string[] values = kvp.Value.Split("&"); |
|
|
|
int damageVal = int.Parse(values[0]); |
|
|
|
|