public bool PrimaryAttack(bool isPlayer1, CharacterClass opponent) // returns true if killing blow { RedisManager redis = new RedisManager(); int damage = 0; switch (ClassName) { case "Barbarian": if (RollAttack(opponent.ArmorClass)) { int rage = 0; if (redis.CheckIfEffectActive(isPlayer1, "Raging")) { rage = 2; } damage = RollDamage(1, 12, (int)Stat.Str, rage); // 1d12 + STR + 2(Rage damage if active) } break; case "Bard": if (RollAttack(opponent.ArmorClass)) { damage = RollDamage(1, 8, (int)Stat.Dex, 0); // 1d8 + DEX } break; case "Cleric": if (!RollSpellSave((int)Stat.Wis, (int)Stat.Dex, opponent)) // 1d8(DEX Save) { damage = RollDie(8); } break; case "Druid": if (RollAttack(opponent.ArmorClass)) { damage = RollDamage(1, 8, (int)Stat.Wis, 0); // 1d8 + WIS } break; case "Fighter": if (RollAttack(opponent.ArmorClass)) { damage = RollDamage(2, 6, (int)Stat.Str, 0); // 2d6 + STR } break; case "Monk": if (RollAttack(opponent.ArmorClass)) { damage = RollDamage(1, 4, (int)Stat.Dex, 0); // 1d4 + DEX } break; case "Paladin": if (RollAttack(opponent.ArmorClass)) { int smite = 0; if (redis.CheckIfEffectActive(isPlayer1, "Smiting")) { smite = RollDie(8); //redis.DecrementResource(isPlayer1); redis.RemoveEffect(isPlayer1, "Smiting"); } damage = RollDamage(1, 8, (int)Stat.Str, smite); // 1d8 + STR } break; case "Ranger": if (RollAttack(opponent.ArmorClass)) { int mark = 0; if (redis.CheckIfEffectActive(isPlayer1, "Marking")) { mark = RollDie(6); } damage = RollDamage(1, 8, (int)Stat.Dex, mark); // 1d8 + DEX } break; case "Rogue": if (RollAttack(opponent.ArmorClass)) { damage = RollDamage(1, 4, (int)Stat.Dex, RollDie(6)); // 1d4 + DEX + 1d6(Sneak Attack) redis.DecrementResource(isPlayer1); } break; case "Sorcerer": if (!RollSpellSave((int)Stat.Cha, (int)Stat.Con, opponent)) // 1d6(CON Save) { damage = RollDie(6); } break; case "Warlock": if (RollAttack(opponent.ArmorClass)) { int hex = 0; if (redis.CheckIfEffectActive(isPlayer1, "Hexing")) { hex = RollDie(6); } damage = RollDamage(1, 10, (int)Stat.Cha, hex); // 1d10 + CHA } break; case "Wizard": if (RollAttack(opponent.ArmorClass)) { damage = RollDamage(1, 10, (int)Stat.Int, 0); // 1d10 + INT } break; default: break; } redis.DecrementAction(); bool over; if (damage != 0) { over = redis.ApplyDamage(isPlayer1, damage, Character.Name); if (over) { //redis.MatchOver(); // Probably pass isPlayer return(true); } } return(false); }
private void btnEndRound_Click(object sender, EventArgs e) { isPlayer1sTurn = redis.GetTurn(); // Player who ended their turn redis.SetTurn(!isPlayer1sTurn); // Set that it is now the opponents turn isPlayer1sTurn = !isPlayer1sTurn; // Opponent becomes current player if (redis.GetTurn()) // Player 1's Turn { lblTurn.Text = "<< Player 1's turn."; btnPrimary2.Enabled = false; btnSecondary2.Enabled = false; if (redis.CheckIfEffectActive(isPlayer1sTurn, "Incapacitated")) { if (player2Class.RollSpellSave((int)Stat.Cha, (int)Stat.Wis, player1Class)) // Succeeds saving throw { redis.IncrementAction(); redis.AddToCombatLog(player1.Name + " is no longer incapacitated!"); redis.RemoveEffect(isPlayer1sTurn, "Incapacitated"); btnPrimary1.Enabled = true; btnSecondary1.Enabled = true; } else // Fails saving throw { redis.AddToCombatLog(player1.Name + " is still incapacitated! They lose their turn."); btnPrimary1.Enabled = false; btnSecondary1.Enabled = false; } } else { redis.IncrementAction(); redis.AddToCombatLog(player1.Name + "'s turn."); btnPrimary1.Enabled = true; btnSecondary1.Enabled = true; } if (player1Class.ClassName == "Rogue") { redis.IncrementResource(isPlayer1sTurn); } } else // Player 2's Turn { lblTurn.Text = "Player 2's turn. >>"; btnPrimary1.Enabled = false; btnSecondary1.Enabled = false; if (redis.CheckIfEffectActive(isPlayer1sTurn, "Incapacitated")) { if (player1Class.RollSpellSave((int)Stat.Cha, (int)Stat.Wis, player2Class)) { redis.IncrementAction(); redis.AddToCombatLog(player2.Name + " is no longer incapacitated!"); redis.RemoveEffect(isPlayer1sTurn, "Incapacitated"); btnPrimary2.Enabled = true; btnSecondary2.Enabled = true; } else { redis.AddToCombatLog(player2.Name + " is still incapacitated! They lose their turn."); btnPrimary2.Enabled = false; btnSecondary2.Enabled = false; } } else { redis.IncrementAction(); redis.AddToCombatLog(player2.Name + "'s turn."); btnPrimary2.Enabled = true; btnSecondary2.Enabled = true; } if (player2Class.ClassName == "Rogue") { redis.IncrementResource(isPlayer1sTurn); } } RefreshUI(); }