45 from CFDialog
import DialogRule, Dialog, IncludeRule
49 location =
"defaultdialognamespace"
53 params = cjson.decode(s)
55 if "location" in params:
56 location = params[
"location"]
57 for jsonRule
in params[
"rules"]:
58 if "include" in jsonRule:
61 incldialog =
Dialog(player, npc, location)
64 shouldinclude = incldialog.matchConditions(inclrule)
67 newfiles = jsonRule[
"include"]
68 if shouldinclude == 1:
71 parameters.extend(
parseJSON(newfiles, relpath))
73 Crossfire.Log(Crossfire.LogDebug,
"Ignoring NPC dialog from %s, conditions not met" % newfiles)
75 parameters.append(jsonRule)
79 for filenm
in filename:
81 filepath = os.path.join(Crossfire.DataDirectory(), Crossfire.MapDirectory(), filenm[1:])
83 filepath = os.path.join(relpath, filenm)
85 filepath = os.path.join(Crossfire.DataDirectory(), Crossfire.MapDirectory(), filenm)
88 f =
open(filepath,
'rb')
90 Crossfire.Log(Crossfire.LogDebug,
"Error loading NPC dialog %s" % filepath)
93 Crossfire.Log(Crossfire.LogDebug,
"Loading NPC dialog %s" % filepath)
94 params =
parseJSONstr(f.read(), relpath=os.path.dirname(filepath))
98 npc = Crossfire.WhoAmI()
100 player = Crossfire.WhoIsActivator()
101 params = Crossfire.ScriptParameters()
102 if params !=
'npc_dialog':
111 for jsonRule
in dialogs:
113 jsonRule.get(
"pre", []),
115 jsonRule.get(
"post", []),
116 jsonRule.get(
"replies",
None))
117 speech.addRule(rule, index)
120 if speech.speak(Crossfire.WhatIsMessage()) == 0:
122 Crossfire.WhoAmI().WriteKey(
'talked_to',
str(random.randint(3, 8)), 1)
123 Crossfire.SetReturnValue(1)