void Update() { UpdateNow(); float takeRad = 10f; Collider2D[] soldiersToTake = Physics2D.OverlapCircleAll(transform.position, takeRad, 1 << SM.SoldierLayer); foreach (Collider2D sold in soldiersToTake) { Transform soldier = sold.transform; int index = freeIndex; if (SM.GetArmy(soldier) == army && index != -1 && SM.IsPrivate(soldier.GetComponent <Soldier>())) { Private priv = SM.AsPrivate(soldier.GetComponent <Soldier>()); if (!priv.officer && priv.eqSet == eqSet) { Vector3 pos = formation[index]; priv.deltaV = pos; priv.index = index; subs[index] = priv.transform.Find("Soldier").GetComponent <Soldier>(); priv.SetOfficer(this); soldier.GetComponent <Soldier>().moral = soldier.GetComponent <Soldier>().moral > 50f ? soldier.GetComponent <Soldier>().moral : 50f; soldier.GetComponent <Soldier>().DefendNow(); if (CM.Contains(this.transform.Find("Soldier").GetComponent <Soldier>())) { soldier.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_HL_" + army); } else { soldier.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_" + army); } } } } }
private void Start() { TurnUp(); Color color = SM.GetArmy(transform) == CM.yourArmy ? new Color32(87, 193, 0, 255) : new Color32(193, 0, 0, 255); transform.Find("Health").Find("Filler").GetComponent <UnityEngine.UI.Image>().color = color; }
private void Start() { army = SM.GetArmy(transform.parent.parent); allPossibleAttacks = new Attack[] { new Attack_Shoot() }; projectiles = new string[] { "Arrow" }; deltaTar = 0.08f; // per 1 minRange = 5f; maxRange = 30f; weight = 1f; }
private void Start() { army = SM.GetArmy(transform.parent.parent); allPossibleAttacks = new Attack[] { new Attack_Swing(), new Attack_FastPierce() }; effects = new WEffect[] { SM.MakeBleed }; minRange = 0f; maxRange = 2.6f; weight = 1.5f; minBasicDmg = 30f; maxBasicDmg = 40f; critPoss = 0.1f; critMult = 4f; }
private void Start() { army = SM.GetArmy(transform.parent.parent); allPossibleAttacks = new Attack[] { new Attack_Swing() }; effects = new WEffect[] { SM.Push }; minRange = 1.2f; maxRange = 4f; weight = 5f; minBasicDmg = 50f; maxBasicDmg = 80f; critPoss = 0.04f; critMult = 4f; }
private void Start() { army = SM.GetArmy(transform.parent.parent); allPossibleAttacks = new Attack[] { new Attack_FastPierce() }; effects = new WEffect[] { SM.Push }; minRange = 2.6f; maxRange = 3.6f; weight = 2f; minBasicDmg = 50f; maxBasicDmg = 70f; critPoss = 0.3f; critMult = 3f; }
private void OnTriggerStay2D(Collider2D col) { zEnd = -(transform.position.z + transform.GetComponent <Collider2D>().offset.y *(float)System.Math.Cos(Vector3.Angle(transform.up, Vector3.forward) * System.Math.PI / 180f)); if (zEnd <= minHeight && col.gameObject.layer == SM.SoldierLayer && SM.GetArmy(col.transform) != army && dmgK > 0f) { float basicDmg = (float)(SM._rnd.NextDouble()) * (maxBasicDmg - minBasicDmg) + minBasicDmg; bool isCritical = SM._rnd.NextDouble() <= critPoss; basicDmg = isCritical ? basicDmg * critMult : basicDmg; float dmg = basicDmg * dmgDecK * dmgK * dKbyClass; if (SM.IsWarlord(col.transform.GetComponent <Soldier>())) { dmg = 9f; } foreach (WEffect eff in effects) { eff(col.transform, (col.transform.position - transform.position).normalized, dmg); } col.transform.GetComponent <Soldier>().TakeDamage(dmg); //Debug.Log(army + ": " + dmg + ((isCritical || dmgDecK < 1f) ? " (" : "") + (isCritical ? " critical: x" + critMult : "") + (dmgDecK < 1f ? " blocked: x" + dmgDecK : "") + ((isCritical || dmgDecK < 1f) ? " )" : "") + "."); speed = Vector3.zero; //if(zEnd>=minHeight) // transform.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("Soldier/" + transform.GetComponent<SpriteRenderer>().sprite.name + "_In"); transform.parent = col.transform; transform.position = transform.position + Vector3.forward * (col.transform.position.z + zEnd); transform.GetComponent <SpriteRenderer>().sortingLayerName = "Default"; transform.GetComponent <SpriteRenderer>().sortingOrder = 1; transform.Find("Shadow").GetComponent <SpriteRenderer>().sortingOrder = 0; transform.GetComponent <Collider2D>().enabled = false; transform.GetComponent <Projectile_Weapon>().enabled = false; } else if (col.gameObject.layer == SM.ProtectionLayer && SM.GetArmy(col.transform) != army && zEnd <= col.transform.GetComponent <Defence>().height) { dmgDecK = col.transform.GetComponent <Defence>().dmgDecK; speed = Vector3.zero; transform.parent = col.transform; transform.position = transform.position + Vector3.forward * (col.transform.position.z + zEnd); transform.GetComponent <SpriteRenderer>().sortingLayerName = "Default"; transform.GetComponent <SpriteRenderer>().sortingOrder = 1; transform.Find("Shadow").GetComponent <SpriteRenderer>().sortingOrder = 0; transform.GetComponent <Collider2D>().enabled = false; transform.GetComponent <Projectile_Weapon>().enabled = false; } }
private void OnTriggerEnter2D(Collider2D col) { if (col.gameObject.layer == SM.SoldierLayer && SM.GetArmy(col.transform) != army && dmgK > 0f) { float basicDmg = (float)(SM._rnd.NextDouble()) * (maxBasicDmg - minBasicDmg) + minBasicDmg; bool isCritical = SM._rnd.NextDouble() <= critPoss; basicDmg = isCritical ? basicDmg * critMult : basicDmg; float dmg = basicDmg * dmgDecK * dmgK * dKbyClass; foreach (WEffect eff in effects) { eff(col.transform, (col.transform.position - transform.parent.parent.position).normalized, dmg); } col.transform.GetComponent <Soldier>().TakeDamage(dmg); //Debug.Log(army + ": " + dmg + ((isCritical || dmgDecK < 1f) ? " (" : "") + (isCritical ? " critical: x" + critMult : "") + (dmgDecK < 1f ? " blocked: x" + dmgDecK : "") + ((isCritical || dmgDecK < 1f) ? " )" : "") + "."); } }
private void GetEnemiesAround() { enemies.Clear(); closestEnemy = null; closestRad = float.MaxValue; fixedEnemy = null; fixedRad = float.MaxValue; //bool foundFixed = false; bool lookForWarlord = weapon.GetComponent <LongRanged_Weapon>() == null; //bool lookForWarlord = true; foreach (Transform soldier in SM.solds) { if ((soldier.position - transform.position).magnitude <= seeRadius) { if (SM.GetArmy(soldier) != army) { //if (fixedEnemy == soldier) //{ // foundFixed = true; //} float newRad = Vector3.Magnitude(soldier.position - transform.position); enemies.Add(soldier); if (SM.IsWarlord(soldier.GetComponent <Soldier>()) && lookForWarlord) { fixedRad = newRad; fixedEnemy = soldier; } if (newRad < closestRad) { closestRad = newRad; closestEnemy = soldier; } } } } //if (enemies.Count == 0) // fixedEnemy = null; //else if (!foundFixed) // fixedEnemy = closestEnemy; }
void Start() { Soldier s = transform.parent.GetComponent <Soldier>(); if (!SM.IsWarlord(s)) { _army = SM.GetArmy(transform.parent); int _LtexNum = Resources.LoadAll <Sprite>("S_Patterns/" + _army + "/L/").Length; int _RtexNum = Resources.LoadAll <Sprite>("S_Patterns/" + _army + "/R/").Length; transform.Find("Ltex").GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("S_Patterns/" + _army + "/L/S_Pattern_L_" + SM._rnd.Next(_LtexNum) + "_" + _army); transform.Find("Rtex").GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("S_Patterns/" + _army + "/R/S_Pattern_R_" + SM._rnd.Next(_RtexNum) + "_" + _army); if (!SM.IsOfficer(s)) { int _MtexNum = Resources.LoadAll <Sprite>("S_Patterns/" + _army + "/M/").Length; transform.Find("Mtex").GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("S_Patterns/" + _army + "/M/S_Pattern_M_" + SM._rnd.Next(_MtexNum) + "_" + _army); } } }
private void Defend(float x, float y, float rad) { Vector3 center = new Vector3(x, y, 0); float closestToCenter = float.MaxValue; //Vector3 center = transform.position; float defR = (rad + mRange) > seeRadius ? seeRadius : (rad + mRange); Transform remEnemy = null; bool lookForWarlord = weapon.GetComponent <LongRanged_Weapon>() == null; foreach (Transform soldier in SM.solds) { if ((soldier.position - center).magnitude <= defR) { if (SM.GetArmy(soldier) != army) { float r = (soldier.position - center).magnitude; if (SM.IsWarlord(soldier.GetComponent <Soldier>()) && lookForWarlord) { fixedRad = r; fixedEnemy = soldier; } if (r < closestToCenter) { remEnemy = soldier; closestToCenter = r; } } } } if (remEnemy == null) { if (!IsNearDestination(new Vector3(center.x, center.y))) { Attack(center.x, center.y); } else { StopMoving(); if (speed == 0f) { Transform off = (SM.IsWarlord(this) || SM.IsOfficer(this) || SM.AsPrivate(this).officer == null) ? transform : SM.AsPrivate(this).officer.transform; Vector3 toTar = army == "B" ? (SM.rWarlord.position - off.position) : (SM.bWarlord.position - off.position); Vector3 v = Math.Abs(toTar.x) >= Math.Abs(toTar.y) ? (toTar.x >= 0 ? Vector3.right : -Vector3.right) : (toTar.y >= 0 ? Vector3.up : -Vector3.up); TurnTo(v); } } } else { if (fixedEnemy != null) { Attack(fixedEnemy.position.x, fixedEnemy.position.y); } else { Attack(remEnemy.position.x, remEnemy.position.y); } } }