1 ########################################################
2 #Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors
3 #This file is part of Asgard.
5 #Asgard is free software; you can redistribute it and/or modify
6 #it under the terms of the GNU General Public License as published by
7 #the Free Software Foundation; either version 2 of the License, or
8 #(at your option) any later version.
10 #Asgard is distributed in the hope that it will be useful,
11 #but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 #GNU General Public License for more details.
15 #You should have received a copy of the GNU General Public License
16 #along with Asgard; if not, write to the Free Software
17 #Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 ########################################################
20 from equiption
import *
23 def __init__(self
,name
,level
,exp
,exptnl
,hp
,str,speed
,dex
,agility
,wisdom
,will
,tom
,plyble
,equip
,job
):
29 # this should probably be changed to expNextLevel
30 self
.__expTillNextLevel
= exp
35 self
.__dexterity
= dex
36 self
.__agility
= agility
37 self
.__wisdom
= wisdom
39 self
.__timeOfMove
= tom
40 self
.__playable
= plyble
41 self
.__equiption
= equip
45 """Get fighter's name."""
49 """Change fighter's name."""
53 """Get fighter's level """
56 def setLevel(self
, level
):
57 """Set fighter's level """
61 """Get fighter's experience """
64 def setExp(self
, exp
):
65 """Set fighter's experience """
68 def getExpTillNextLevel(self
):
69 """Get the amount of experience the fighter
70 needs to attain to get to the next level """
71 return self
.__expTillNextLevel
73 def setExpTillNextLevel(self
, exptnl
):
74 """Set the amount of experience the fighter
75 needs to attain to get to the next level """
76 self
.__expTillNextLevel
= exptnl
79 """Get fighter's hp."""
83 """Change fighter's hp."""
86 def getStrength(self
):
87 """Get fighter's strength."""
88 return self
.__strength
90 def setStrength(self
, s
):
91 """Change fighter's strength."""
95 """Get the fighter's speed (frequency of moves) """
98 def setSpeed(self
, speed
):
99 """Set the fighter's speed (frequency of moves) """
102 def getDexterity(self
):
103 """Get fighter's dexterity. (who gets to go first among ready fighters)"""
104 return self
.__dexterity
106 def setDexterity(self
, d
):
107 """Change figther's dexterity. (who gets to go first among ready fighters)"""
110 def getAgility(self
):
111 """Get the fighter's agility. (how often they are missed when attacked """
112 return self
.__agility
114 def setAgility(self
, agility
):
115 """Set the fighter's agility. (how often they are missed when attacked """
116 self
.__agility
= agility
119 """Get white magic effectiveness """
122 def setWisdom(self
, wisdom
):
123 """Set white magic effectiveness """
124 self
.__wisdom
= wisdom
127 """Get black magic effectiveness """
130 def setWill(self
, will
):
131 """Set black magic effectiveness """
134 def getTimeOfMove(self
):
135 """Get fighter's time of move."""
136 return self
.__timeOfMove
138 def setTimeOfMove(self
, tMv
):
139 """Change fighter's time of move."""
140 self
.__timeOfMove
= tMv
142 def getEquiption(self
):
143 """Get equiption for fighter."""
145 return self
.__equiption
147 def setEquiption(self
, eq
):
148 """Set equiption for fighter."""
150 self
.__equiption
= eq
152 def getPlayable(self
):
153 """Is fighter playable?"""
154 return self
.__playable
156 def setPlayable(self
, plyble
):
157 """Set fighter's playability."""
158 self
.__playable
= plyble
161 """Compute value of attack."""
162 return self
.__strength
+ self
.__equiption
.computeAtkMod()
164 def getDefense(self
):
165 """Compute value of defense."""
166 return self
.__equiption
.computeDefMod()
169 """Compute value of evade."""
170 return self
.__agility
+ self
.__equiption
.computeEvaMod()
173 def makeEvent(self
, eparty
, currentTime
, cont
):
174 """ Check if ready to make move.
176 If so, select random fighter from enemy party and return.
179 if not self
.isAlive():
182 if self
.__timeOfMove
!= currentTime
:
185 # Playable fighters have battle menu
186 if self
.getPlayable():
187 # Show battle menu and choose event from battle menu
188 command
= cont
.getCommand(eparty
,self
)
192 # Nonplayable fighters
193 elif currentTime
>= self
.__timeOfMove
:
194 x
= randint(0,eparty
.sizeOfParty()-1)
195 while not eparty
.getFighter(x
).isAlive():
196 x
= randint(0,eparty
.sizeOfParty()-1)
198 d
= eparty
.getFighter(x
)
201 self
.__timeOfMove
+= round((1/float(self
.__speed
))*100)
202 return Event(self
,d
,t
)
205 """If hp is greater than 0... return true"""
206 return (self
.__hp
> 0)
208 def getEventTypes(self
):
209 """Return list of events available to fighter."""
215 def setJob(self
,job
):
218 def receiveExp(self
,exp
):
219 """Fighter receives experience for leveling up."""
223 # Tax off exp from expTillNextLevel
224 self
.__expTillNextLevel
-= exp
227 if self
.__expTillNextLevel
<= 0:
228 # Increase level number
234 if x
<= self
.__job
.getHpChance() * 100:
235 self
.__hp
+= self
.__job
.getHpPlus()
239 if x
<= self
.__job
.getStrChance() * 100:
240 self
.__strength
+= self
.__job
.getStrPlus()
244 if x
<= self
.__job
.getSpeedChance() * 100:
245 self
.__speed
+= self
.__job
.getSpeedPlus()
248 # Increase dexterity?
249 if x
<= self
.__job
.getDexChance() * 100:
250 self
.__dexterity
+= self
.__job
.getDexPlus()
254 if x
<= self
.__job
.getAgilityChance() * 100:
255 self
.__agility
+= self
.__job
.getAgilityPlus()
259 if x
<= self
.__job
.getWisdomChance() * 100:
260 self
.__wisdom
+= self
.__job
.getWisdomPlus()
264 if x
<= self
.__job
.getWillChance() * 100:
265 self
.__will
+= self
.__job
.getWillPlus()
267 # Set exp till next level
270 # Set exp till next level