protected static void copy(ability src, ability tgt) { tgt.parent = src.parent; tgt.iconSprite = Sprite.Instantiate(src.iconSprite); tgt.range = src.range; tgt.targeted = src.targeted; }
// sets ability public void setAbility1(ePlayer owner) { if (currentAbility == ability.none) { bombOwner = owner; currentAbility = ability.ability1; } }
public virtual ability clone() { ability ret = new ability(); ret.Initialize(); ability.copy(this, ret); return(ret); }
private void ability2() // gary // returns if the users right clicks { if (Input.GetMouseButton(1)) { currentAbility = ability.none; return; } // code to change the mouse sprite, yes, it is redundant in some ways // I just copied it from my own ability and altered it a little overEnemyTower = false; Tower tower = null; Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 pos = new Vector3(mousePos.x, mousePos.y, 0); RaycastHit2D hitTower = Physics2D.Raycast(mousePos, Vector2.zero); if (hitTower.collider != null) { tower = hitTower.collider.gameObject.GetComponent <Tower> (); if (tower != null && magThrower != tower.myOwner && tower.myOwner != ePlayer.Neutral) { overEnemyTower = true; } } //end redundant code ------------------------------------ if (clickTime < Time.time && Input.GetMouseButtonUp(0)) { RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if (hit.collider == null) { return; } Tower thingClicked = hit.collider.gameObject.GetComponent <Tower>(); if (thingClicked == null) { return; } if (thingClicked.myOwner == ePlayer.Neutral || thingClicked.myOwner == magThrower) { return; } GameObject mag = (GameObject)Instantiate(magnetPrefab, throwMagFrom, Quaternion.Euler(0, 0, 0)); Vector2 toMouse = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - throwMagFrom) * magForce; mag.GetComponent <Rigidbody2D>().AddForce(toMouse); mag.GetComponent <Rigidbody2D>().AddTorque(magTorque); MagnetBehavior mb = mag.GetComponent <MagnetBehavior>(); mb.target = hit.collider; active = false; gameManager.resetScore(); currentAbility = ability.none; } }
public void setAbility2(ePlayer thrower) { //Cant initialize on start as towers aren't placed until game begins if (p1DeathRay == null || p2DeathRay == null) { p1DeathRay = GameObject.Find("DeathRayPlayer1(Clone)"); p2DeathRay = GameObject.Find("DeathRayPlayer2(Clone)"); } active = true; currentAbility = ability.ability2; throwMagFrom = (thrower == ePlayer.Player1) ? p1DeathRay.transform.position : p2DeathRay.transform.position; clickTime = Time.time; magThrower = thrower; //Used for the ability2() }
public void ability0() // erick { print("ability0"); overMyTower = false; Tower tower = null; Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 pos = new Vector3(mousePos.x, mousePos.y, 0); RaycastHit2D hit = Physics2D.Raycast(mousePos, Vector2.zero); if (hit.collider != null) { tower = hit.collider.gameObject.GetComponent <Tower> (); if (tower != null && shieldOwner == tower.myOwner) { overMyTower = true; } } if (Input.GetMouseButton(1)) { currentAbility = ability.none; return; } if (Input.GetMouseButton(0)) { if (tower != null) { if (shieldOwner == ePlayer.Player1 && tower.myOwner == ePlayer.Player1) { GameObject one = (GameObject)Instantiate(shieldP1, tower.transform.position, Quaternion.Euler(0, 0, 0)); currentAbility = ability.none; gameManager.resetScore(); tower = null; overMyTower = false; } else if (shieldOwner == ePlayer.Player2 && tower.myOwner == ePlayer.Player2) { GameObject two = (GameObject)Instantiate(shieldP2, tower.transform.position, Quaternion.Euler(0, 0, 0)); currentAbility = ability.none; gameManager.resetScore(); tower = null; overMyTower = false; } } } }
// does ability public void ability1() { // reset the abiltyManabger if the user right clicks if (Input.GetMouseButton(1)) { currentAbility = ability.none; return; } if (Input.GetMouseButton(0)) { Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); GameObject e = Instantiate(bombManagerPrefab, new Vector3(mousePos.x, mousePos.y, 0), Quaternion.LookRotation(Vector3.forward, Vector3.forward)) as GameObject; BombManager BM = e.GetComponent <BombManager> (); if (BM != null) { BM.changeOwner(bombOwner); } currentAbility = ability.none; gameManager.resetScore(); } }
IEnumerator UseStrongAbility(pratiti Atker, pratiti Defer, GameObject AtkerObj, GameObject DeferObj, ability AtkerAbility) { yield return(new WaitForSeconds(Atker.abilityStartHitRecoveryTime)); while (AtkerAbility.hitTimes < AtkerAbility.totalHitTimes) { AtkerAbility.hitTimes += 1; if (AtkerAbility.leftSide <= DeferObj.transform.position.x && DeferObj.transform.position.x < AtkerAbility.rightSide) { attack(Atker, Defer, AtkerAbility); } yield return(new WaitForSeconds(0.2f)); } AtkerAbility.hitTimes = 0; }
public void attack(pratiti atker, pratiti defer, ability ability) { if (defer.def < 0) { defer.def = 0; } if (defer.mDef < 0) { defer.mDef = 0; } chance = Random.Range(1, 101); if ((chance + defer.agi - atker.agi) <= ability.hitRate) { if (defer.isParry == true) { print("盾反成功"); defer.isParry = false; StartCoroutine(ParryTimeSlowDown()); defer.ParrySuccess = true; ParryShieldAnimator.SetTrigger("Success"); Damage = 0.0005f * ability.power * 0.1f * (atker.atk + atker.mAtk); StartCoroutine(NumberChange(Damage, defer, "hp")); StartCoroutine(NumberChange(ability.gainEnergy, atker, "gainEnergy")); Damage = (int)Damage; damage.GetComponentInChildren <Text>().text = "-" + Damage.ToString(); random01 = Random.Range(-3, 5); random02 = Random.Range(3, 6); Instantiate(damage, defer.gameObj01.transform.position + new Vector3(random01 * 0.2f, random02 * 0.2f), new Quaternion(0, 0, 0, 0)); defer.gameObj01.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.gameObj02.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.gameObj03.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.gameObj04.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.hurtTime = 0.25f; if (ability.gainEnergy > 0) { if (defer.gameObj01 == Player) { EnemyAbility01Obj = Instantiate(EnemyAbility01, defer.gameObj01.transform.position + new Vector3(0, 4.5f), new Quaternion(0, 0, 0, 0)); } else { PlayerAbility01Obj = Instantiate(PlayerAbility01, defer.gameObj01.transform.position, new Quaternion(0, 0, 0, 0)); } } Damage = 0.0005f * ability.power * (atker.atk + atker.mAtk); StartCoroutine(NumberChange(Damage, atker, "hp")); Damage = (int)Damage; damage.GetComponentInChildren <Text>().text = "-" + Damage.ToString(); random01 = Random.Range(-3, 5); random02 = Random.Range(3, 6); Instantiate(damage, atker.gameObj01.transform.position + new Vector3(random01 * 0.2f, random02 * 0.2f), new Quaternion(0, 0, 0, 0)); //Instantiate(damage, new Vector3(-3.1f,3.1f), new Quaternion(0, 0, 0, 0)); //Instantiate(damage, new Vector3(3.1f, 2.9f), new Quaternion(0, 0, 0, 0)); atker.gameObj01.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); atker.gameObj02.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); atker.gameObj03.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); atker.gameObj04.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); atker.hurtTime = 0.25f; } else { //傷害值計算 //90%是滿減傷 Damage = 0.0005f * ability.power * (atker.atk + atker.mAtk - defer.defStatus * 0.9f * (atker.atk * defer.def / defer.maxDef + atker.mAtk * defer.mDef / defer.maxMDef)); Damage = (int)Damage; //呼叫各數值遞減的協程函式 StartCoroutine(NumberChange(Damage, defer, "hp")); StartCoroutine(NumberChange(0.0005f * ability.power * atker.atk * defer.defStatus * defer.defEmpty, defer, "def")); StartCoroutine(NumberChange(0.0005f * ability.power * atker.mAtk * defer.defStatus * defer.mDefEmpty, defer, "mDef")); StartCoroutine(NumberChange(ability.gainEnergy, atker, "gainEnergy")); //產生顯示傷害數值位置的偏移亂數 random01 = Random.Range(-3, 5); random02 = Random.Range(3, 6); damage.GetComponentInChildren <Text>().text = "-" + Damage.ToString(); //將傷害數值文字化 //在畫面上產生傷害數值 Instantiate(damage, defer.gameObj01.transform.position + new Vector3(random01 * 0.2f, random02 * 0.2f), new Quaternion(0, 0, 0, 0)); //受傷害角色身體顏色轉為紅色 defer.gameObj01.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.gameObj02.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.gameObj03.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.gameObj04.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0); defer.hurtTime = 0.25f; if (ability.gainEnergy > 0) { if (defer.gameObj01 == Player) { EnemyAbility01Obj = Instantiate(EnemyAbility01, defer.gameObj01.transform.position + new Vector3(0, 4.5f), new Quaternion(0, 0, 0, 0)); } else { PlayerAbility01Obj = Instantiate(PlayerAbility01, defer.gameObj01.transform.position, new Quaternion(0, 0, 0, 0)); } } } } else { if (defer.isParry == true) { defer.ParrySuccess = true; } random01 = Random.Range(-4, 5); random02 = Random.Range(1, 6); Instantiate(miss, defer.gameObj01.transform.position + new Vector3(random01 * 0.3f, random02 * 0.3f), new Quaternion(0, 0, 0, 0)); } }
public static boolean SaveAbilityHandle(hashtable table, integer parentKey, integer childKey, ability whichAbility) { table.Add(parentKey.ToString("x8") + childKey.ToString("x8"), whichAbility); return(true); }
public void setAbility0(ePlayer owner) { currentAbility = ability.ability0; shieldOwner = owner; }
void learnAbility(ability newMove) { moves[newMove.name] = newMove; }