-
Notifications
You must be signed in to change notification settings - Fork 2
/
dialog.py
148 lines (121 loc) · 4.41 KB
/
dialog.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
147
#!/usr/bin/python
# -*- coding: utf8 -*-
from pandac.PandaModules import *
from direct.task import Task
from direct.interval.IntervalGlobal import *
from direct.fsm.FSM import FSM
import sys, random
#from gui import *
from guiDialog import *
class Dialog:
def __init__(self, gm, name):
self.gm = gm # MapManager
self.playerState = gm.playerState
self.gameState = gm.gameState
print "Initialising script for NPC %s, playerState.questDic = %s" % (name, self.playerState.questDic)
self.name = name # the name of the NPC running this dialog with the player
#self.gui = DialogGui(name) # replaced by self.gm.gui.dialogGui
self.intro()
def destroy(self, args=[]):
self.gm.gui.dialogGui.destroy()
self.gm.dialog = None
if self.name in self.gm.NPCAI:
self.gm.NPCAI[self.name].resetTimer()
def setMainText(self, text):
self.gm.gui.dialogGui.setMainText(text)
def setMenu(self, menu):
self.gm.gui.dialogGui.setMenu(menu)
def getQuestValue(self, questName = "main"):
if self.name not in self.playerState.questDic:
return 0
elif questName not in self.playerState.questDic[self.name]:
return 0
return self.playerState.questDic[self.name][questName]
def intro(self):
msg = "You are talking to " + self.name
msg = msg + ". Please note that this is a work in progress, and as such it features things spread here and there without much sense or reason, just for the sake of testing them. No real gameplay is available yet. We're sorry about that, join #PPARPG on Freenode if you want to ask anything, make suggestions, or even help...\nThanks for testing anyway."
self.setMainText(msg)
msg1 = "'Hello, " + self.name + "!'"
msg2 = "'So " + self.name + " is your name, huh?'"
menu = [
[msg1, self.l_hello, []],
[msg2, self.l_askName, []],
["Close", self.destroy, []],
]
self.setMenu(menu)
return 1
def l_hello(self, args=[]):
msg1 = "Hi there, " + self.playerState.name + "..."
self.setMainText(msg1)
self.l_close()
return 1
def l_askName(self, args=[]):
msg1 = self.name + " looks at you for a moment.\n\n" + self.name + " : 'That's my name, why do you care?'"
self.setMainText(msg1)
self.l_close()
return 1
def l_close(self, args=[]):
menu = [["Close", self.destroy, []]]
self.setMenu(menu)
return 1
class DialogCamilla(Dialog):
def __init__(self, gm, name = "Camilla"):
Dialog.__init__(self, gm, "Camilla")
def intro(self):
if self.getQuestValue()>1:
msg = "Camilla is looking at you suspiciously...\n\nCarmilla : 'What is it you want now, " + self.playerState.name + "?'"
else:
msg = "Camilla looks kindly at you."
self.setMainText(msg)
msg1 = "'Hello, " + self.name + "!'"
msg2 = "'Camilla, you seem to know a lot of stuff about what's going on here...'"
menu = [
[msg1, self.l_hello, []],
[msg2, self.l_askStuff, []],
["Close", self.destroy, []]
]
self.setMenu(menu)
return 1
def l_hello(self, args=[]):
if self.getQuestValue()>0:
msg = "Camilla : '... hello again, " + self.playerState.name + "...'"
else:
msg = "Camilla : 'Oh hello there, young " + self.playerState.name + ".'"
self.playerState.setQuest(self.name, "main", 1)
print "current playerdata : %s" % (self.playerState.questDic)
self.setMainText(msg)
self.l_close()
return 1
def l_askStuff(self, args=[]):
if self.getQuestValue()>1:
msg = "Camilla : 'Enough with that, i have no idea what you're talking\nabout!'"
self.setMainText(msg)
self.l_close()
else:
msg = "Camilla : 'A lot of stuff? what do you mean by that?'"
self.playerState.setQuest(self.name, "main", 1)
self.setMainText(msg)
menu = [
["'Come on, you know *exactly* what i mean...'", self.l_insist, []],
["'Don't try to lie to me...'", self.l_insist, []],
["'I knew you'd try to lie to me...'", self.l_insist, []],
["'You know who you're lying to, girl?'", self.l_insist, []],
["'Ah, my bad, forget about that...'", self.l_close2, []],
]
self.setMenu(menu)
return 1
def l_insist(self, args=[]):
msg = "Camilla : 'No, really, i have no idea what you're talking about!'"
self.playerState.setQuest(self.name, "main", 2)
self.setMainText(msg)
self.l_close();
return 1
def l_close2(self, args=[]):
self.setMainText("...")
menu = [["Close", self.destroy, []]]
self.setMenu(menu)
return 1
dialogDic = {}
dialogDic["Camilla"] = DialogCamilla
for name in ["Kimmo", "ula2", "Drunkard"]:
dialogDic[name] = Dialog