177
|
1 ## a die roller as used by Warhammer Fantasy Roleplay Dice Roller
|
|
2 #!/usr/bin/env python
|
|
3 # Copyright (C) 2000-2001 The OpenRPG Project
|
|
4 #
|
|
5 # openrpg-dev@lists.sourceforge.net
|
|
6 #
|
|
7 # This program is free software; you can redistribute it and/or modify
|
|
8 # it under the terms of the GNU General Public License as published by
|
|
9 # the Free Software Foundation; either version 2 of the License, or
|
|
10 # (at your option) any later version.
|
|
11 #
|
|
12 # This program is distributed in the hope that it will be useful,
|
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15 # GNU General Public License for more details.
|
|
16 #
|
|
17 # You should have received a copy of the GNU General Public License
|
|
18 # along with this program; if not, write to the Free Software
|
|
19 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
20 # --
|
|
21 #
|
|
22 # File: wfrpg.py
|
|
23 # Author: Prof. Ebral, TaS (Traipse)
|
|
24 # Maintainer:
|
|
25 # Version:
|
195
|
26 # $Id: wfrpg.py,v Traipse 'Ornery-Orc' prof.ebral Exp $
|
177
|
27 #
|
|
28 # Description: Warhammer Fantasy Roleplay Dice Roller die roller
|
|
29 # Comissioned by Puu-san
|
|
30 #
|
|
31
|
195
|
32 __version__ = "$Id: wfrpg.py,v Traipse 'Ornery-Orc' prof.ebral Exp $"
|
177
|
33
|
|
34 from std import std
|
|
35 import random
|
|
36 from orpg.dieroller.base import *
|
|
37
|
|
38 class wfrpg(std):
|
|
39 name = "wfrpg"
|
|
40
|
|
41 def __init__(self, source=[]):
|
|
42 std.__init__(self, source)
|
|
43
|
|
44 def non_stdDie(self, s):
|
|
45 self.war_die = {'rec': self.reckless,
|
|
46 'con': self.conservative,
|
|
47 'chr': self.characteristic,
|
|
48 'cha': self.challenge,
|
|
49 'for': self.fortune,
|
|
50 'mis': self.misfortune,
|
|
51 'exp': self.expertise}
|
|
52 for key in self.war_die.keys():
|
|
53 dice = s.lower().split(key)
|
|
54 if len(dice) > 1:
|
|
55 return self.war_die[key](int(dice[0]))
|
|
56
|
|
57 def roll(self, dice, facets):
|
|
58 for x in range(0,dice):
|
|
59 self.rolls.append(int(random.uniform(1, facets+1)))
|
|
60
|
|
61 def reckless(self, dice):
|
|
62 self.rolls = []
|
|
63 reck = {1: 'Bane', 2: 'Double Boon', 3: 'Boon & Success',
|
|
64 4: 'Double Success', 5: 'Success & Exertion', 6: 'Blank',
|
|
65 7: 'Bane', 8: 'Double Success', 9: 'Success & Exertion',
|
|
66 10: 'Blank'}
|
|
67 self.roll(dice, 10)
|
|
68 for roll in self.rolls:
|
|
69 self.data.append(reck[roll])
|
|
70 myStr = '[' + str(dice) + ' Reckless] = ('
|
|
71 for data in self.data:
|
|
72 myStr += data + ', '
|
|
73 myStr = myStr[:len(myStr)-2] + ')'
|
|
74 return myStr
|
|
75
|
|
76 def conservative(self, dice):
|
|
77 self.rolls = []
|
|
78 reck = {1: 'Boon', 2: 'Success', 3: 'Success & Boon',
|
|
79 4: 'Success & Delay', 5: 'Blank', 6: 'Boon',
|
|
80 7: 'Success', 8: 'Success', 9: 'Success & Delay',
|
|
81 10: 'Success'}
|
|
82 self.roll(dice, 10)
|
|
83 for roll in self.rolls:
|
|
84 self.data.append(reck[roll])
|
|
85 myStr = '[' + str(dice) + ' Conservative] = ('
|
|
86 for data in self.data:
|
|
87 myStr += data + ', '
|
|
88 myStr = myStr[:len(myStr)-2] + ')'
|
|
89 return myStr
|
|
90
|
|
91 def challenge(self, dice):
|
|
92 self.rolls = []
|
|
93 reck = {1: 'Challenge', 2: 'Double Challenge', 3: 'Bane',
|
|
94 4: 'Double Bane', 5: 'Chaos Star', 6: 'Blank',
|
|
95 7: 'Challenge', 8: 'Double Challenge'}
|
|
96 self.roll(dice, 8)
|
|
97 for roll in self.rolls:
|
|
98 self.data.append(reck[roll])
|
|
99 myStr = '[' + str(dice) + ' Challenge] = ('
|
|
100 for data in self.data:
|
|
101 myStr += data + ', '
|
|
102 myStr = myStr[:len(myStr)-2] + ')'
|
|
103 return myStr
|
|
104
|
|
105 def characteristic(self, dice):
|
|
106 self.rolls = []
|
|
107 reck = {1: 'Boon', 2: 'Success', 3: 'Blank',
|
|
108 4: 'Boon', 5: 'Success', 6: 'Success',
|
|
109 7: 'Blank', 8: 'Success'}
|
|
110 self.roll(dice, 8)
|
|
111 for roll in self.rolls:
|
|
112 self.data.append(reck[roll])
|
|
113 myStr = '[' + str(dice) + ' Characterisitics] = ('
|
|
114 for data in self.data:
|
|
115 myStr += data + ', '
|
|
116 myStr = myStr[:len(myStr)-2] + ')'
|
|
117 return myStr
|
|
118
|
|
119 def fortune(self, dice):
|
|
120 self.rolls = []
|
|
121 reck = {1: 'Success', 2: 'Blank', 3: 'Boon',
|
|
122 4: 'Blank', 5: 'Success', 6: 'Blank'}
|
|
123 self.roll(dice, 6)
|
|
124 for roll in self.rolls:
|
|
125 self.data.append(reck[roll])
|
|
126 myStr = '[' + str(dice) + ' Fortune] = ('
|
|
127 for data in self.data:
|
|
128 myStr += data + ', '
|
|
129 myStr = myStr[:len(myStr)-2] + ')'
|
|
130 return myStr
|
|
131
|
|
132 def misfortune(self, dice):
|
|
133 self.rolls = []
|
|
134 reck = {1: 'Challenge', 2: 'Blank', 3: 'Bane',
|
|
135 4: 'Blank', 5: 'Challenge', 6: 'Blank'}
|
|
136 self.roll(dice, 6)
|
|
137 for roll in self.rolls:
|
|
138 self.data.append(reck[roll])
|
|
139 myStr = '[' + str(dice) + ' Misfortune] = ('
|
|
140 for data in self.data:
|
|
141 myStr += data + ', '
|
|
142 myStr = myStr[:len(myStr)-2] + ')'
|
|
143 return myStr
|
|
144
|
|
145 def expertise(self, dice):
|
|
146 self.rolls = []
|
|
147 reck = {1: 'Boon', 2: 'Success', 3: 'Righteous Success',
|
|
148 4: 'Comet', 5: 'Blank', 6: 'Boon'}
|
|
149 self.roll(dice, 6)
|
|
150 for roll in self.rolls:
|
|
151 self.data.append(reck[roll])
|
|
152 myStr = '[' + str(dice) + ' Expertise] = ('
|
|
153 for data in self.data:
|
|
154 myStr += data + ', '
|
|
155 myStr = myStr[:len(myStr)-2] + ')'
|
|
156 return myStr
|
|
157
|
|
158
|
|
159 die_rollers.register(wfrpg)
|
|
160
|