imports
Code: Select all
from turtle import color
from matplotlib.colors import hex2color
import numpy
from numpy import random
import statistics
import pandas as pd
import matplotlib.pyplot as plt
Code: Select all
def dice_roll(num):
dice_roll = random.randint(num) + 1
return int(dice_roll)
def crit_calc(damage_in, crit_range, crit_multiplier ):
crit_roll=dice_roll(20)
if crit_roll >= crit_range :
damage_out = damage_in * crit_multiplier
else:
damage_out = damage_in
return damage_out
def round_calc(damage_in, crit_range, crit_mult):
a1 = crit_calc(damage_in, crit_range, crit_mult )
a2 = crit_calc(damage_in, crit_range, crit_mult )
a3 = crit_calc(damage_in, crit_range, crit_mult )
a4 = crit_calc(damage_in, crit_range, crit_mult )
damage_out = a1+a2+a3+a4
return damage_out
def round_calc_dualweild(damage_in, crit_range, crit_mult):
a1 = crit_calc(damage_in, crit_range, crit_mult )
a2 = crit_calc(damage_in, crit_range, crit_mult )
a3 = crit_calc(damage_in, crit_range, crit_mult )
a4 = crit_calc(damage_in, crit_range, crit_mult )
a5 = crit_calc(damage_in, crit_range, crit_mult )
a6 = crit_calc(damage_in, crit_range, crit_mult )
damage_out = a1+a2+a3+a4+a5+a6
return damage_out
Code: Select all
axe_hits=list()
flail_hits=list()
falch_hits=list()
great_sword_hits=list()
maul_hits=list()
pike_hits=list()
bastard_hits=list()
quarterstaff_hits=list()
double_axe_hits=list()
double_sword_hits=list()
mistreater_hits=list()
trident_hits=list()
for i in range(1000):
axe_hits.append(round_calc(dice_roll([4]) + dice_roll([4]) + dice_roll([4]), 18, 4))
flail_hits.append(round_calc(dice_roll([12]), 15, 3))
falch_hits.append(round_calc(dice_roll([4]) + dice_roll([4]), 12, 3))
great_sword_hits.append(round_calc(dice_roll([6]) + dice_roll([6]), 15, 3))
maul_hits.append(round_calc(dice_roll([6]) + dice_roll([6]), 18, 4))
pike_hits.append(round_calc(dice_roll([8]), 18, 4))
bastard_hits.append(round_calc(dice_roll([10]), 15, 3))
quarterstaff_hits.append(round_calc_dualweild(dice_roll([6]), 15, 3))
double_axe_hits.append(round_calc_dualweild(dice_roll([4]) + dice_roll([4]) + dice_roll([4]), 18, 4))
double_sword_hits.append(round_calc_dualweild(dice_roll([8]), 12, 3))
mistreater_hits.append(round_calc_dualweild(dice_roll([12]), 18, 4))
trident_hits.append(round_calc(dice_roll([10]), 18, 4))
axe_stats = pd.Series(axe_hits)
flail_stats = pd.Series(flail_hits)
falch_stats = pd.Series(falch_hits)
greatsword_stats = pd.Series(great_sword_hits)
maul_stats = pd.Series(maul_hits)
pike_stats = pd.Series(pike_hits)
bastard_stats = pd.Series(bastard_hits)
quarterstaff_stats = pd.Series(quarterstaff_hits)
double_axe_stats = pd.Series(double_axe_hits)
double_sword_stats = pd.Series(double_sword_hits)
mistreater_stats = pd.Series(mistreater_hits)
trident_stats = pd.Series(trident_hits)
Code: Select all
df = pd.DataFrame
stats_all = [falch_stats, axe_stats, flail_stats, maul_stats, greatsword_stats, pike_stats, trident_stats, bastard_stats, quarterstaff_stats, double_axe_stats, double_sword_stats, mistreater_stats]
labels = ["Falcn\n2d4\n12-20x3 ", "GrtAxe\n3d4\n18-20x4", "HvyFlail\n1d12\n15-20x3", "Maul\n2d6\n18-20x4", "GrtSwrd\n2d6\n15-20x3", "Pike\n1d8\n18-20x4", "Trdnt\n1d0\n18-20x4","BstrdSwrd\n1d10\n15-20x3", "QStaff\n1d6\n6apr\n15-20x3", "DblAxe\n3d4@6apr\n18-20x4", "DblSwrd\n1d8@6apr\n12-20x3", "Mstreatr\n1d12@6apr\n18-20x4"]
fig, axs = plt.subplots()
axs.boxplot(stats_all, labels=labels, notch=True)
plt.legend()
plt.tight_layout()
plt.title("25/5 Base Weapon Damage over 1000 rounds")
plt.ylabel("Damage/Round @ 4 APR")
plt.savefig("Damage Distribution")
plt.show()
plt.close()
