예제 #1
0
 public void setEnemyButtons(baseEnemy[] enemies)
 {
     for (int i = 0; i < enemies.Length; ++i)
     {
         _enemyButtons[i].setButton(enemies[i]);
     }
 }
예제 #2
0
 public enemyButton fetchEnemyButton(baseEnemy unit)
 {
     for (int i = 0; i < _enemyButtons.Length; ++i) {
         if (_enemyButtons[i]._enemy == unit) {
             return _enemyButtons[i];
         }
     }
     return _enemyButtons[0];
 }
예제 #3
0
 public void testEnemies()
 {
     baseEnemy[] _testEnemies;
     _testEnemies = new baseEnemy[4];
     _testEnemies[0] = gameObject.AddComponent<C>();
     _testEnemies[1] = gameObject.AddComponent<Cpp>();
     _testEnemies[2] = gameObject.AddComponent<C>();
     _testEnemies[3] = gameObject.AddComponent<Python>();
     setEnemyButtons(_testEnemies);
 }
예제 #4
0
 public void setBattlePanel(baseEnemy unit)
 {
     _enemyUnit = unit;
     if (_enemyUnit.effected)
         battleStats.text =
             _enemyUnit.name + "\n\n" +
             "HP :" + _enemyUnit.currentHP + "/" + _enemyUnit.maxHP + "\n" +
             "Status Effect : " + _enemyUnit.effect.ToString() + "\n"+
             "Duration: "+_enemyUnit.duration;
     else
         battleStats.text =
             _enemyUnit.name + "\n\n" +
             "HP :" + _enemyUnit.currentHP + "/" + _enemyUnit.maxHP + "\n" +
             "Status Effect : " + _enemyUnit.effect.ToString() + "\n";
 }
예제 #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
 void updateSelected()
 {
     for (int i = 0; i < _enemyButtons.Length; ++i)
     {
         if (_enemyButtons[i].selected == true)
         {
             _selectedEnemy = _enemyButtons[i]._enemy;
             _enemyButtons[i].selected = false;
             _hasSelected = true;
             Debug.Log("Enemy :" + _selectedEnemy.name);
         }
     }
 }
예제 #8
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]);
             }
         }
     }
 }
예제 #9
0
파일: GUIManager.cs 프로젝트: bombguy/CS113
 public static void updateTarget(baseEnemy enemy)
 {
     if (_skill != null) {
         _enemy = enemy;
         action = true;
         attack = true;
     }
 }
예제 #10
0
 public void demo()
 {
     _enemy = GetComponent<Python>();
 }
예제 #11
0
 public static void deadUnit(baseEnemy unit)
 {
     enemyParty.Remove(unit);
     GUIManager.deadUnit(unit);
 }
예제 #12
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;
 }
예제 #13
0
 private void applyEffect(baseEnemy unit, baseSkill skill)
 {
     unit.effect = (baseEnemy.Status)skill.additionalEffect.status;
     unit.duration = skill.additionalEffect.duration;
     unit.effected = true;
     unit.effective_skill = skill;
 }
예제 #14
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?
     }
 }
예제 #15
0
 //Attack states
 //Player Attack States
 private void playerAttack(basePlayer unit, baseEnemy 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 == baseEnemy.Status.GOD)
         {
             target.currentHP -= 0;
             Debug.Log("(CSM) Player Attack Player/Enemy-> Damage = 0; Reason: GodModed");
             clearEffect(target, skill);
         }
         else
         {
             int damage = skill.cast(unit);
             Debug.Log("(CSM) Player Attack -> Damage =" + damage);
             target.currentHP -= damage;
             if (target.currentHP >= 0)
                 if (!target.effected)
                     applyEffect(target, skill);
                 else { }
             else
                 BattleManager.deadUnit(target);
         }
     }
     Debug.Log("Attack Successful");
 }
예제 #16
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);
     }
 }
예제 #17
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;
     }
 }
예제 #18
0
 private void decreaseEffect(baseEnemy unit, baseSkill skill)
 {
     if (unit.duration == 0)
     {
         clearEffect(unit, skill);
     }
     --unit.duration;
 }
예제 #19
0
 public void Start()
 {
     demo();
     _hasSelected = false;
     _selectedEnemy = null;
 }
예제 #20
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);
     }
 }
예제 #21
0
파일: AI.cs 프로젝트: bombguy/CS113
 public void highestDamageSpell(baseEnemy enemy)
 {
     // return baseskill based on enemy's strongest attack
 }
예제 #22
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);
    }
예제 #23
0
 //Set button here.
 public void setButton(baseEnemy input)
 {
     BattleManager.enemyParty.Add(input);
     _enemy = input;
     _enemyBattleStats.setBattlePanel(input);
 }
예제 #24
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;
 }
예제 #25
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();
         }
     }
 }
예제 #26
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");
 }
예제 #27
0
파일: GUIManager.cs 프로젝트: bombguy/CS113
 public static void deadUnit(baseEnemy unit)
 {
     unit.currentHP = -1;
     enemyPanel.fetchEnemyButton(unit).buttonDisable();
     enemyPanel.fetchEnemyButton(unit).GetComponent<Image>().enabled = false;
 }
예제 #28
0
 public override int cast(baseEnemy caster)
 {
     return caster.attack;
 }
예제 #29
0
 public override int cast(baseEnemy caster)
 {
     return 0;
 }
예제 #30
0
파일: baseSkill.cs 프로젝트: bombguy/CS113
 public abstract int cast(baseEnemy caster);