Bläddra i källkod

initial commit

Bertrand Steenput 4 år sedan
incheckning
49b76424cc
3 ändrade filer med 99 tillägg och 0 borttagningar
  1. 4 0
      .gitignore
  2. 85 0
      dice_roller.py
  3. 10 0
      notes.md

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+dice_roller.pyc
+.vscode
+.DS_Store
+__pycache__

+ 85 - 0
dice_roller.py

@@ -0,0 +1,85 @@
+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

+ 10 - 0
notes.md

@@ -0,0 +1,10 @@
+# Flamethrower again hordes
+
+Lance-flammes
+Lesarmeslance-flammeustiliséescontreuneHordeinfligentun
+nombredetoucheségalauquartdela portéedel'arme(arrondir
+au supérieurp)lus145.Ainsi,unearmelance-flammedsontla
+portéestde 10toucheruaneHorde145+3fois.UneHordene
+peutprendrefeueten subirles dégâtscontinus(cf.page260);
+au lieu decela,touslesdégâtset effetsdu feusontconsidérés
+commeétantinclusdanslesdégâtsfaitsàsamagnitude.