void BlocksCleared(BlocksClearedEventArgs args) { foreach (CurrentQuest currentQuest in player.Quests) { Quest q = currentQuest.Quest; for (int i = 0; i < q.QuestObjectives.Count; i++) { if (currentQuest.Objectives[i].Completed) { continue; //Dont need to do any checking if the quest is completed. } QuestObjective qo = q.QuestObjectives[i]; if (qo as BlockClearObjective) { BlockClearObjective bco = (qo as BlockClearObjective); if (args.Color == bco.BlockColorToClear) { currentQuest.Objectives[i].Progress += args.AmountCleared; Debug.Log(bco.ObjectiveString(currentQuest.Objectives[i].Progress)); if (currentQuest.Objectives[i].Progress >= bco.AmountToClear) { currentQuest.Objectives[i].Completed = true; } } } } } }
public int Attack(BlocksClearedEventArgs args) { int damage = 0; damage = Random.Range(MinDamage * args.AmountCleared, MaxDamage * args.AmountCleared + 1); return(damage); }
void BlockClear(BlocksClearedEventArgs args) { Enemy enemy = (CurrentEncounter as Enemy); if (enemy) { if (args.AttackCount > 0) { if (DamageEnemy(Player.Attack(args))) { KillEnemy(enemy); return; } } if (args.HealCount > 0) { int healAmt = Player.HealPower * args.HealCount; if (OnPlayerHealDamage != null) { PlayerHealDamageArgs healArgs; healArgs.amount = healAmt; OnPlayerHealDamage(healArgs); } Player.Heal(healAmt); } turnCount++; if (turnCount >= enemy.AttackSpeed) { //Enemy's turn to attack. int enemyDamage = Random.Range(enemy.AttackDamageMin, enemy.AttackDamageMax + 1); if (OnPlayerTakeDamage != null) { PlayerTakeDamageArgs dmgArgs; dmgArgs.amount = enemyDamage; dmgArgs.attacker = CurrentEncounter as Enemy; OnPlayerTakeDamage(dmgArgs); } Player.TakeDamage(enemyDamage); turnCount = 0; } } }