public override IEnumerator Cast(ArrayList objs) { GameObject scene = objs[0] as GameObject; GameObject caller = objs[1] as GameObject; GameObject target = objs[2] as GameObject; this.objs = objs; Drax drax = caller.GetComponent<Drax>(); SkillDef skillDef = SkillLib.instance.getSkillDefBySkillID("DRAX30A"); int skillDurationTime = skillDef.skillDurationTime; drax.castSkill("Skill30"); drax.attackAnimaName = "Skill30A"; drax.showSkill30EftCallback += showEft; drax.showSkill30BodyEftCallback += showBodyEft; drax.attackAnimaEvent += Skill_DRAX30AEffect; drax.addBuff("Skill_DRAX30A", skillDurationTime + 5, 0, BuffTypes.ATK_PHY, cancelSkill_DRAX30AEffect); this.drax = drax; yield return new WaitForSeconds(0.5f); MusicManager.playEffectMusic("SFX_Drax_Common_1a"); }
public override IEnumerator Cast(ArrayList objs) { GameObject caller = objs[1] as GameObject; GameObject target = objs[2] as GameObject; drax = caller.GetComponent<Drax>(); if(Vector3.Distance(caller.transform.position, target.transform.position) > drax.data.attackRange + 10.0f) { drax.moveToTarget(target); BattleObjects.skHero.PushSkillIdToContainer("DRAX1");// DRAX1 yield break; } this.objs = objs; drax.toward(target.transform.position); drax.damageCallback = DamageEnemy; drax.movingUpdateCallback = SwitchMoving; drax.AnimationFinishedCallback = (animName) => { bool isFinished = false; if (animName != "SkillA_a" && animName != "SkillA_b"){ isUpdateMoving = false; isFinished = true; } return isFinished; }; v = caller.transform.position.x <= target.transform.position.x? 1000: -1000f; drax.castSkill("SkillA_a"); yield return new WaitForSeconds(.33f); MusicManager.playEffectMusic("SFX_Drax_DualKnifeStrike_1a"); }
public void Skill_DRAX15AEffect(Drax drax, Character target) { SkillDef skillDef = SkillLib.instance.getSkillDefBySkillID("DRAX15A"); Hashtable tempNumber = skillDef.activeEffectTable; int time = skillDef.skillDurationTime; int damage = target.getSkillDamageValue(drax.realAtk, ((Effect)tempNumber["atk_PHY"]).num);//(int)((((Effect)tempNumber["atk_PHY"]).num / 100.0f + 1.0f) * drax.realAtk.PHY); // target.layDownWithSeconds(); State s = new State(time, null); target.addAbnormalState(s, Character.ABNORMAL_NUM.LAYDOWN); DestroyBuffEft(drax, "Skill_DRAX15A"); target.realDamage(damage); }
public void Skill_DRAX5BEffect(Drax drax, Character target) { if(target.getIsDead()) { return; } drax.attackAnimaEvent -= Skill_DRAX5BEffect; Debug.LogError("Skill_DRAX5BEffect"); SkillDef skillDef = SkillLib.instance.getSkillDefBySkillID("DRAX5B"); Hashtable tempNumber = skillDef.activeEffectTable; int time = skillDef.buffDurationTime; float per = ((Effect)skillDef.buffEffectTable["hp"]).num; int hp = (int)((per / 100.0f + 1.0f) * drax.realMaxHp); target.addBuff("Skill_DRAX5B", time, (float)hp/(float)time, BuffTypes.DE_HP); DestroyBuffEft(drax, "Skill_DRAX5B"); }
public void Skill_DRAX30AEffect(Drax drax, Character target) { MusicManager.playEffectMusic("SFX_Drax_The_Destroyer_1a"); SkillDef skillDef = SkillLib.instance.getSkillDefBySkillID("DRAX30A"); int skillDurationTime = skillDef.skillDurationTime; int buffDurationTime = skillDef.buffDurationTime; Hashtable buffTable = skillDef.buffEffectTable; float per = ((Effect)buffTable["hp"]).num; int hp = (int)(target.realMaxHp * (per / 100.0f)); if(StaticData.computeChance(50, 100)) { target.addBuff("Skill_DRAX30A_DE_HP", buffDurationTime, hp / buffDurationTime, BuffTypes.DE_HP); // target.layDownWithSeconds(); State s = new State(skillDurationTime, null); target.addAbnormalState(s, Character.ABNORMAL_NUM.LAYDOWN); } target.defenseAtk(drax.realAtk, drax.gameObject); }