forked from Aeolitus/Sephrasto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFertigkeiten.py
146 lines (134 loc) · 4.86 KB
/
Fertigkeiten.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
'''
In dieser Datei wird das Backend für Fertigkeiten und Attribute gelegt.
Alle steigerbaren Traits verfügen über die Funktionen steigern() und senken()
'''
from Definitionen import Attribute
from Wolke import Wolke
# Allgemeine Implementation für steigerbare Traits
class Steigerbar(object):
def __init__(self):
super().__init__()
self.name = ''
self.wert = 0
self.steigerungsfaktor = 0
self.text = ''
def __eq__(self, other) :
if self.__class__ != other.__class__: return False
return self.__dict__ == other.__dict__
# Implementation für Attribute: SF ist 16, PW ist 2x Wert
class Attribut(Steigerbar):
def __init__(self, Key):
super().__init__()
self.steigerungsfaktor = 16
self.probenwert = 0
self.name = Attribute[Key]
self.key = Key
def aktualisieren(self):
self.probenwert = self.wert*2
# Implementation für Steigerbare Energien (Karma und AsP). SF ist 1, kein Limit.
class Energie(Steigerbar):
def __init__(self):
super().__init__()
self.steigerungsfaktor = 1
# Implementation für freie Fertigkeiten
class FreieFertigkeit(Steigerbar):
def __init__(self):
super().__init__()
self.steigerungsfaktor = -1
def __deepcopy__(self, memo=""):
F = FreieFertigkeit()
F.name = self.name
F.steigerungsfaktor = -1
F.wert = self.wert
return F
# Implementation für Fertigkeiten im Allgemeinen
class Fertigkeit(Steigerbar):
def __init__(self):
super().__init__()
self.gekaufteTalente = []
self.talentMods = {} #for vorteil scripts, { talentnname1 : { condition1 : mod1, condition2 : mod2, ... }, talentname2 : {}, ... }
self.kampffertigkeit = 0; #0 = nein, 1 = nahkampffertigkeit, 2 = sonstige kampffertigkeit
self.attribute = ['KO','KO','KO']
self.attributswerte = [-1,-1,-1]
self.basiswert = -1
self.basiswertMod = 0 #for vorteil scripts
self.probenwert = -1
self.probenwertTalent = -1
self.voraussetzungen = []
self.maxWert = -1
self.printclass = -1
self.isUserAdded = True
self.addToPDF = True
def aktualisieren(self):
self.attributswerte = [Wolke.Char.attribute[self.attribute[0]].wert,
Wolke.Char.attribute[self.attribute[1]].wert,
Wolke.Char.attribute[self.attribute[2]].wert]
self.maxWert = max(self.attributswerte)+2
# Python Round does mess up sometimes
self.basiswert = round(sum(self.attributswerte)/3+0.0001) + self.basiswertMod
self.probenwert = self.basiswert + round(self.wert/2+0.0001)
self.probenwertTalent = self.basiswert + self.wert
def __deepcopy__(self, memo=""):
F = Fertigkeit()
F.name = self.name
F.wert = self.wert
F.steigerungsfaktor = self.steigerungsfaktor
F.text = self.text
F.voraussetzungen = self.voraussetzungen.copy()
F.attribute = self.attribute.copy()
F.kampffertigkeit = self.kampffertigkeit
F.gekaufteTalente = self.gekaufteTalente.copy()
F.talentMods = self.talentMods.copy()
F.attributswerte = self.attributswerte.copy()
F.basiswert = self.basiswert
F.basiswertMod = self.basiswertMod
F.probenwert = self.probenwert
F.probenwertTalent = -self.probenwertTalent
F.maxWert = self.maxWert
F.printclass = self.printclass
F.isUserAdded = self.isUserAdded
F.addToPDF = self.addToPDF
return F
class Talent():
def __init__(self):
self.name = ''
self.kosten = -1
self.verbilligt = 0
self.fertigkeiten = []
self.voraussetzungen = []
self.variable = -1
self.text = ''
self.printclass = -1
self.isUserAdded = True
def __eq__(self, other) :
if self.__class__ != other.__class__: return False
return self.__dict__ == other.__dict__
def isSpezialTalent(self):
return self.kosten != -1
class Vorteil():
def __init__(self):
self.name = ''
self.kosten = -1
self.variable = -1
self.typ = 0
self.voraussetzungen = []
self.nachkauf = ''
self.text = ''
self.script = None
self.scriptPrio = 0
self.isUserAdded = True
def __eq__(self, other) :
if self.__class__ != other.__class__: return False
if self.__dict__ == other.__dict__: return True
class Manoever():
def __init__(self):
self.name = ''
self.typ = 0
self.voraussetzungen = []
self.probe = ''
self.gegenprobe = ''
self.text = ''
self.isUserAdded = True
def __eq__(self, other) :
if self.__class__ != other.__class__: return False
if self.__dict__ == other.__dict__: return True