예제 #1
0
파일: GUIManager.cs 프로젝트: bombguy/CS113
    public static void updateSkill(baseSkill skill)
    {
        if (_skill == skill) {
            _skill = null;
            playerPanel.disableTargetMode();
            enemyPanel.disableTargetMode();
            playerPanel.fetchActionBar(_unit).hideActionBar();
            _unit = null;
            playerPanel._currentPlayer = null;
        }
        else
            _skill = skill;

        if (_skill != null)
        {
            //Buff Spell Target only Players
            if (skill.targetPlayer == true && skill.targetEnemy == false)
            {
                playerPanel.enableTargetMode();
                enemyPanel.disableTargetMode();
            }
            //Any other spell is considered hostile. Target enemies
            else
            {
                enemyPanel.enableTargetMode();
                playerPanel.enemyTargetMode();
            }
        }
    }
예제 #2
0
 public void OnPointerClick(PointerEventData eventData)
 {
     Debug.Log ("Skill Script onclick fired");
     this.skill = this.GetComponentInParent<SlotScript> ().skill;
     description = skill.skillName + "\n"
         + "Skill Level: " + skill.skillLevel.ToString() + "\n"
         + "Experience: " + skill.skillExperience.ToString() + "\n"
         + "Cooldown: " + skill.skillCoolDown.ToString() + "\n"
         + "Description: " + skill.skillDescription + "\n";
     TextArea.GetComponent<Text> ().text = description;
 }
예제 #3
0
    public void setButton(baseSkill in_skill)
    {
        _skill = in_skill;
        if (_skill.skillName == "Basic Attack")
            _skillButton.image.sprite = Resources.Load<Sprite>("Skill/Basic Attack");
        else
            _skillButton.image.sprite = in_skill.skillIcon;

        _skillPanel.setSkillPanel(in_skill);
        cooldown_duration = _skill.skillCoolDown;
        _skillPanel.hidePanel();
    }
예제 #4
0
파일: ActionBar.cs 프로젝트: bombguy/CS113
    public void endAction()
    {
        for (int i = 0; i < _buttons.Length; ++i) {
            if (_buttons[i]._skill == _skill)
            {
                _buttons[i].applyCooldown();

            }
        }
        _hasSelected = false;
        _skill = null;
        hideActionBar();
    }
예제 #5
0
파일: GUIManager.cs 프로젝트: bombguy/CS113
    //handle turn and action logic
    public static void endAction()
    {
        if (_buffUnit != null)
        {
            playerPanel.endAction(_unit);
        }
        else
            playerPanel.endAction();

        enemyPanel.endAction();
        action = false;
        attack = false;
        _unit = null;
        _skill = null;
        _buffUnit = null;
        _enemy = null;

        playerPanel.disableTargetMode();
        enemyPanel.disableTargetMode();
    }
예제 #6
0
 /*
  * Effects. These effect units in some way or another
     STUN - skip turn
     CONFUSED - Pokemon style. attack may hit anyone
     AOE - AOE effect
     HEAL - Heal target
     DOT - Damage over time
     GOD - Block next attack
     ATTACK - Buff only once, last x turns
     DEFENSE - Buff only once, last y turns
     SKIP - skip turn for build up of attack. Keep at 0 until we actually cast the spell.
  */
 private void unitConfused(basePlayer unit, baseEnemy target, baseSkill skill)
 {
     // Attacks random target here
     int coin = Random.Range(0, 1);
     if (coin == 0)
     {
         //Attack allies
         int unitIndex = Random.Range(0, BattleManager.playerParty.Count);
         --unit.duration;
         if (BattleManager.playerParty[unitIndex] != null)
             playerAttack(unit, BattleManager.playerParty[unitIndex], skill);
     }
     else
     {
         // Attack Enemy
         int unitIndex = Random.Range(0, BattleManager.enemyParty.Count);
         --unit.duration;
         if (BattleManager.enemyParty[unitIndex] != null)
             playerAttack(unit, BattleManager.enemyParty[unitIndex], skill);
     }
 }
예제 #7
0
 // Use this for initialization
 void Start()
 {
     _skill = new NoSkill();
     cooldown_duration = 0;
     onCoolDown = false;
     selected = false;
     cooldown_duration = 0;
 }
예제 #8
0
 private void applyEffect(basePlayer unit, baseSkill skill)
 {
     unit.effect = (basePlayer.Status)skill.additionalEffect.status;
     unit.duration = skill.additionalEffect.duration;
     unit.effected = true;
     unit.effective_skill = skill;
 }
예제 #9
0
 private void unitStunned(baseEnemy unit,baseSkill skill)
 {
     // Stunned effect. Actions minus/ Player doesnt take turn
     --unit.duration;
     if (unit.duration == 0)
         clearEffect(unit,skill);
     // Maybe some text here. For now in debug log
     Debug.Log("unit stunned");
 }
예제 #10
0
 private void unitStunned(basePlayer unit,baseSkill skill)
 {
     // Stunned effect. Actions minus/ Player doesnt take turn
     --unit.duration;
     if (unit.duration == 0)
         clearEffect(unit,skill);
     // Maybe some text here. For now in debug log
     Debug.Log("UNIT STUNNED! CANT ATTACK THIS ACTION TAKING AWAY 1 ACTION POINT");
 }
예제 #11
0
 private void unitSkipped(baseEnemy unit,basePlayer target,baseSkill skill)
 {
     if (unit.duration == 0)
     {
         unit.currentHP -= skill.cast(unit);
         clearEffect(target,skill);
     }
     else
         --unit.duration;
 }
예제 #12
0
 private void AOEattack(baseEnemy unit, baseEnemy target, baseSkill skill)
 {
     int enemiesLeft = BattleManager.enemyParty.Count;
     int damage = skill.cast(unit);
     for (int i = 0; i < enemiesLeft; ++i)
     {
         if (BattleManager.enemyParty[i] != null)
         {
             BattleManager.enemyParty[i].currentHP -= damage;
             if (BattleManager.enemyParty[i].currentHP <= 0)
             {
                 BattleManager.deadUnit(BattleManager.enemyParty[i]);
             }
         }
     }
 }
예제 #13
0
 private void clearEffect(baseEnemy unit, baseSkill skill)
 {
     if (unit.effect == baseEnemy.Status.ATTACK)
         unit.attack -= skill.additionalEffect.power;
     else if (unit.effect == baseEnemy.Status.DEFENSE)
         unit.defense -= skill.additionalEffect.power;
     unit.effect = baseEnemy.Status.NONE;
     unit.duration = 0;
     unit.effected = false;
     unit.effective_skill = null;
 }
예제 #14
0
파일: ActionBar.cs 프로젝트: bombguy/CS113
    public void updateSelected()
    {
        for (int i = 0; i < _buttons.Length; ++i) {
            if (_buttons[i].selected)
            {
                if (_skill == null) {
                    _skill = _buttons[i]._skill;
                    _buttons[i].selected = false;
                    _hasSelected = true;
                }
                else if (_skill == _buttons[i]._skill)
                {
                    _skill = null;
                    _buttons[i].selected = false;
                    _hasSelected = false;
                }
                else {
                    _skill = _buttons[i]._skill;
                    _buttons[i].selected = false;
                    _hasSelected = true;
                }
            }

        }
    }
예제 #15
0
 private void playerBuff(basePlayer unit, baseEnemy target, baseSkill skill)
 {
     if (!target.effected)
     {
         if (skill.additionalEffect.status == baseSkill.Effect.Status.ATTACK && skill.targetPlayer)
         {
             target.attack += skill.additionalEffect.power;
             applyEffect(target, skill);
         }
         else if (skill.additionalEffect.status == baseSkill.Effect.Status.DEFENSE && skill.targetPlayer)
         {
             target.defense += skill.additionalEffect.power;
             applyEffect(target, skill);
         }
     }
     else if (skill.additionalEffect.status == baseSkill.Effect.Status.HEAL && skill.targetPlayer)
     {
         target.currentHP += skill.cast(unit);
         //Check here for effects. HOTS?
     }
 }
예제 #16
0
    private void playerAttack(basePlayer unit, basePlayer target, baseSkill skill)
    {
        //AOE target. Might have to look at how we Destory Units. Because bookkeeping
        if (skill.additionalEffect.status == baseSkill.Effect.Status.AOE && skill.targetEnemy)
            AOEattack(unit, target, skill);
        else
        {
            //Single Target - Check if GODed
            if (target.effect == basePlayer.Status.GOD)
            {
                target.currentHP -= 0;
                Debug.Log("(CSM) PlayerAttack Player/Player Damage = 0; God Moded");
                clearEffect(target, skill);
            }
            else
            {
                target.currentHP -= skill.cast(unit);
                if (target.currentHP >= 0)
                    if (!target.effected)
                    {
                        applyEffect(target, skill);
                    }
                    else
                    {
                    }
                else
                {

                    BattleManager.deadUnit(target);
                }
            }
        }
        Debug.Log("Attack Successful");
    }
예제 #17
0
 private void enemyAttack(baseEnemy attacker, baseEnemy target, baseSkill skill)
 {
     if (target.effect == baseEnemy.Status.GOD)
     {
         target.currentHP -= 0;
         clearEffect(target, skill);
     }
     else
     {
         target.currentHP -= skill.cast(attacker);
         if (target.currentHP <= 0)
             BattleManager.deadUnit(target);
         else if (skill.hasAdditionalEffect)
             if (!target.effected)
                 applyEffect(target, skill);
     }
 }
예제 #18
0
 //Enemy Turn States
 private void enemyAction(baseEnemy unit, basePlayer target, baseSkill skill)
 {
     // All possible states
     switch (unit.effect)
     {
         case (baseEnemy.Status.ATTACK):
             decreaseEffect(unit, skill);
             enemyAttack(unit, target, skill);
             break;
         case (baseEnemy.Status.CONFUSED):
             unitConfused(unit, target, skill);
             break;
         case (baseEnemy.Status.DEFENSE):
             decreaseEffect(unit, skill);
             enemyAttack(unit, target, skill);
             break;
         case (baseEnemy.Status.DOT):
             unitDOTed(unit, skill);
             enemyAttack(unit, target, skill);
             break;
         case (baseEnemy.Status.SKIP):
             unitSkipped(unit, target, BattleManager._skill);
             if (!unit.effected)
                 enemyAttack(unit, target, skill);
             break;
         case (baseEnemy.Status.STUN):
             unitStunned(unit, skill);
             break;
         default:
             enemyAttack(unit, target, skill);
             break;
     }
 }
예제 #19
0
 private void decreaseEffect(baseEnemy unit, baseSkill skill)
 {
     if (unit.duration == 0)
     {
         clearEffect(unit, skill);
     }
     --unit.duration;
 }
예제 #20
0
 public void updateBM()
 {
     if (GUIManager.action) {
         if (GUIManager.attack == true) {
             _unit = GUIManager._unit;
             _skill = GUIManager._skill;
             _attackTarget = GUIManager._enemy;
             playerEnemy = true;
             csm.updateMachine();
         }
         else {
             _unit = GUIManager._unit;
             _skill = GUIManager._skill;
             _buffTarget = GUIManager._buffUnit;
             playerPlayer = true;
             csm.updateMachine();
         }
     }
 }
예제 #21
0
 private void unitConfused(baseEnemy unit, basePlayer target, baseSkill skill)
 {
     int coin = Random.Range(0, 1);
     if (coin == 0)
     {
         //Attack allies - No Effect applied (For Now)
         int unitIndex = Random.Range(0, BattleManager.playerParty.Count);
         --unit.duration;
         if (BattleManager.playerParty[unitIndex] != null)
             enemyAttack(unit, BattleManager.enemyParty[unitIndex],unit.basicAttack);
     }
     else
     {
         // Attack Enemy - No Effect applied (For Now)
         int unitIndex = Random.Range(0, BattleManager.enemyParty.Count);
         --unit.duration;
         if (BattleManager.enemyParty[unitIndex] != null)
             enemyAttack(unit, BattleManager.playerParty[unitIndex], unit.basicAttack);
     }
 }
예제 #22
0
 private void unitDOTed(basePlayer unit,baseSkill skill)
 {
     //Apply DOT on turn attacking before attack, check for health.
     if (unit.duration == 0){
         clearEffect(unit,skill);
     }
     else{
         unit.currentHP -= skill.additionalEffect.power;
         --unit.duration;
     }
 }
예제 #23
0
    private void unitDOTed(baseEnemy unit,baseSkill skill)
    {
        //check for 0
        if (unit.duration == 0){
            clearEffect(unit,skill);
        }
        //Apply DOT on turn attacking before attack
        else{
            unit.currentHP -= skill.additionalEffect.power;
            --unit.duration;
        }

        if (unit.currentHP <= 0)
            BattleManager.deadUnit(unit);
    }
예제 #24
0
 void Start()
 {
     this.skill = this.GetComponentInParent<SlotScript> ().skill;
     TextArea = GameObject.Find("SkillDescription");
     description = "";
 }
예제 #25
0
 private void AOEattack(basePlayer unit, basePlayer target, baseSkill skill)
 {
     int playersLeft = BattleManager.playerParty.Count;
     int damage = skill.cast(unit);
     for (int i = 0; i < playersLeft; ++i)
     {
         if (BattleManager.playerParty[i] != null)
         {
             BattleManager.playerParty[i].currentHP -= damage;
             if (BattleManager.playerParty[i].currentHP <= 0)
             {
                 BattleManager.deadUnit(BattleManager.playerParty[i]);
             }
         }
     }
 }