| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import numpy as np
- import math
- class Weapon:
- def __init__(self, name, gpe, dammage, type, pene, range, mode, at, rch, attribute):
- self.name = name
- self.gpe = gpe
- self.dammage = dammage
- self.type = type
- self.pene = pene
- self.range = range
- self.mode = mode
- self.at = at
- self.rch = rch
- self.attribute = attribute
- class MyPerso:
- def __init__(self):
- self.experience = 17400
- self.CC = 52
- self.CT = 40
- self.F = 46
- self.E = 45
- self.AG = 50
- self.INT = 34
- self.PER = 43
- self.FM = 43
- self.SOC = 40
- self.MF = 2 * math.floor((self.F + 2 * 5) / 10) + 30 / 10
- self.weapons = [
- Weapon("Flamethrower", "Base", "2d10+5", "", 3, 20, None, None, None, None)
- ]
- def bonus(self, int):
- return np.round(int / 10)
- def dices(self, number_of_dice, int):
- dice = np.random.random_integers(1, int, number_of_dice)
- print("rolled %s dice of %s and got %s" % (number_of_dice, int, dice))
- return dice
- def initiative(self):
- return self.dices(1, 10) + self.bonus(self.AG)
- def perception(self, bonus=0):
- return (self.dices(1, 100) - self.PER - bonus - 20) < 0
- def flamethrower(self, hord=True):
- if hord:
- return np.ceil(self.weapons[0].range / 4) + self.dices(1, 5)
- def bolter_damage(self, success_degree):
- throw = []
- for degree in range(success_degree):
- current_throw = self.dices(3, 10)
- throw.append(current_throw[np.argsort(current_throw)[-2:]])
- print(throw)
- return np.sum(throw) + 5 * success_degree
- def bolter(self, bonus_ct=0):
- ct_dice = self.CT - self.dices(1, 100) + bonus_ct
- print("ct_dice_roll %i" % ct_dice)
- if ct_dice > 0:
- success_degree = 1 + int(math.floor(ct_dice / 10))
- print(success_degree)
- else:
- success_degree = 0
- return self.bolter_damage(success_degree)
- def sword_damage(self):
- return self.dices(1, 10) + 3 + self.MF
- def test_cc(self, bonus=0):
- return self.CC + bonus - self.dices(1, 100) > 0
- def fast_attack(self):
- damage = 0
- for i in range(2):
- if self.test_cc():
- damage += self.sword_damage()
- print("Sword damage % i penetration 4" % damage)
- return damage
|