Began working on context-sensitive dialogues
[butaba-adventures.git] / maingame.py
index 687db49..66f28b8 100644 (file)
@@ -10,6 +10,7 @@ import utility
 import gameobjects
 import constants
 import npcs
+import gamestate
 
 class MainGame:
 
@@ -93,7 +94,9 @@ class MainGame:
                potion3 = gameobjects.HealthPotion (5, 2, self.img_redpotion)
 
                npc_bulisa = npcs.Bulisa (4, 3, self.img_bulisa, self.img_bulisa_portrait,
-                                                                               [ os.path.join ("dialogues", "bulisa1.dlg") ])
+                                                                               [ os.path.join ("dialogues", "bulisa1.dlg"),
+                                                                                 os.path.join ("dialogues", "bulisa2.dlg"),
+                                                                                 os.path.join ("dialogues", "bulisa3.dlg") ] )
 
                chest1.objects = [ gold50, gold25, potion2, potion3, key2, gold10 ]
 
@@ -256,10 +259,43 @@ class MainGame:
        # interaction with npcs
        def interact_npc (self, npc):
                # interact with NPC and get the response ID
-               resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.img_butaba_portrait, 0, 90)
-
-               # if none
-               if resp_id is None:
+               # if the NPC is Bulisa
+               if isinstance (npc, npcs.Bulisa):
+                       self.interact_npc_bulisa (npc)
+
+       # interact with NPC Bulisa
+       def interact_npc_bulisa (self, npc):
+               # set initial response ID to none
+               resp_id = None
+               print (gamestate.mission_bulisa_water_from_well, gamestate.mission_bulisa_water_from_well_complete)
+               # not yet started mission drawing water from well and not refused it
+               if (gamestate.mission_bulisa_water_from_well is False
+                       and gamestate.mission_bulisa_water_from_well_refused is False):
+                       # set the current dialogue
+                       npc.currentdialog = 0
+                       # get the response ID
+                       resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.img_butaba_portrait, 0, 90)
+               if (gamestate.mission_bulisa_water_from_well_refused is True and
+                               gamestate.mission_bulisa_water_from_well is False):
+                       # set the current dialog
+                       npc.currentdialog = 2
+                       resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.img_butaba_portrait, 0, 90)
+               # mission accepted but not completed
+               elif (gamestate.mission_bulisa_water_from_well is True
+                       and gamestate.mission_bulisa_water_from_well_complete is False):
+                       npc.currentdialog = 1
+                       # get the response ID
+                       resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.img_butaba_portrait, 0, 90)
+
+               print resp_id
+               # if response ID is 12, then drawing water from well mission is refused
+               if resp_id == "12" or resp_id == "18":
+                       gamestate.mission_bulisa_water_from_well_refused = True
+               # if response ID is 13: that is accepted the drawing water from well mission begins
+               if resp_id == "13" or resp_id == "17":
+                       gamestate.mission_bulisa_water_from_well = True
+               # if response ID is none
+               elif resp_id is None:
                        self.status_message = "You cannot initiate a conversation with %s" % npc.charname
 
        # interaction with objects