basic cleaning and prototype of game routine
[shakeTheFidget.git] / quest.py
blob2d4468f3c20681fc2de506d8782bce94e2b9acd4
1 from time import sleep
3 class QuestList():
4 def __init__(self, session):
5 self.session = session
6 self.quests = []
8 def __getattribute__(self, name):
9 if(name == 'minDuration'):
10 cur = self.quests[0]
11 for q in self.quests[1:]:
12 if(q.duration < cur.duration):
13 cur = q
14 return cur.duration
16 def getBestByMoney(self, maxDuration = 1200):
17 cur = self.quests[0]
18 for q in self.quests[1:]:
19 if(q.silver/q.duration > cur.silver/cur.duration and q.duration <= maxDuration):
20 cur = q
21 if(q.duration <= maxDuration):
22 return cur
23 else:
24 return None
26 def getBestByExperience(self, maxDuration = 1200):
27 cur = self.quests[0]
28 for q in self.quests[1:]:
29 if(q.experience/q.duration > cur.experience/cur.duration and q.duration <= maxDuration):
30 cur = q
31 if(q.duration <= maxDuration):
32 return cur
33 else:
34 return None
36 def parse(self):
37 if(not result):
38 result = data[0:3]
39 data = data[3:]
41 if(result == '010'):
42 for i in range(3):
43 quest = Quest(
44 self.session,
45 number = i+1,
46 duration = int(data[241 +i]),
47 silver = int(data[283 +i]),
48 experience = int(data[280 +i]))
49 self.quests.append(quest)
51 class Quest():
52 def __init__(self, session, number, duration = None, silver = None, experience = None):
53 self.session = session
54 self.number = number
55 self.duration = duration
56 self.silver = silver
57 self.experience = experience
59 #TODO debug output
60 def attend(self):
61 try:
62 print 'do quest.attend quest'
63 r107 = self.session.request('510%i' % (self.number))
64 #TODO parse
65 print 'done quest.attend quest'
67 sleep(self.duration)
69 print 'do quest.request fight'
70 r106 = self.session.request('010')
71 #TODO parse fight
72 print 'done quest.request fight'
74 except KeyboardInterrupt:
75 print 'do quest.abort'
76 r108 = self.session.request('511')
77 #TODO parse
78 print 'done quest.abort'
80 finally:
81 print 'do character.request'
82 r004 = self.session.request('004')
83 self.session.character.parse(r004)
84 print 'done character.request'
85 #self.session.character.silver
87 def score(self):
88 return float(self.experience) / float(self.duration)
90 def __repr__(self):
91 return '<Quest %i>' % (self.number)
93 def queryQuests(session):
94 data = session.request('010')
95 result = data[0:3]
96 data = data[3:].split('/')
97 quests = []
98 for i in range(3):
99 quest = Quest(
100 session,
101 number = i+1,
102 duration = int(data[241 +i]),
103 silver = int(data[283 +i]),
104 experience = int(data[280 +i]))
105 quests.append(quest)
106 return quests