From 58f80c37fa3c97f3cfb2a0cdd3096c529f65e204 Mon Sep 17 00:00:00 2001 From: Harishankar Date: Thu, 6 Oct 2011 20:21:50 +0530 Subject: [PATCH] Continuing work on context-sensitive dialogs More work completed on context sensitive dialogs. Added more objects and interaction like well and bucket to draw water with. A basic "mission mode" is now possible with the help of game state variables, context sensitive dialogues and object interactions. More to follow --- background/tileset.png | Bin 191220 -> 210353 bytes constants.py | 5 +- dialogues/bulisa2.dlg | 10 + dialogues/bulisa4.dlg | 7 + gameobjects.py | 39 ++++ level1ee.dat | 412 +++++++++++++++++++++++++++++++++++++++++ levels/level1ee.dat | 412 +++++++++++++++++++++++++++++++++++++++++ levels/level1n.dat | 412 +++++++++++++++++++++++++++++++++++++++++ maingame.py | 75 ++++++-- objects/bucket.png | Bin 0 -> 1219 bytes 10 files changed, 1360 insertions(+), 12 deletions(-) create mode 100644 dialogues/bulisa4.dlg create mode 100644 level1ee.dat create mode 100644 levels/level1ee.dat create mode 100644 levels/level1n.dat create mode 100644 objects/bucket.png diff --git a/background/tileset.png b/background/tileset.png index 7b8d16acc6addd9e24d84c8abf1d717170532488..a7f28f7122eb7db7745636e9357901894d090137 100644 GIT binary patch delta 34255 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 L{an^LB{Ts5HpIik delta 14971 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

Nf8}Uk3(nZz)Q~JxBY+fAo^N$P@ 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 z Hello, my friend. I see you've not yet brought back water from the well. + Where can I find a bucket? + Where can I find the well? I'll go and get it at once! + + Didn't you hear? You can find the bucket somewhere in the garden. + Thanks... + + + I already told you, there is a well behind the house! + Uh, thanks! + \ No newline at end of file diff --git a/dialogues/bulisa4.dlg b/dialogues/bulisa4.dlg new file mode 100644 index 0000000..2674783 --- /dev/null +++ b/dialogues/bulisa4.dlg @@ -0,0 +1,7 @@ + + + + Ah, I see you're back with the water! Thanks so much, Butaba. + No problem! My pleasure... + + \ No newline at end of file diff --git a/gameobjects.py b/gameobjects.py index 2edbc5b..c9c945b 100644 --- a/gameobjects.py +++ b/gameobjects.py @@ -22,6 +22,45 @@ class GameObject: def use (self, otherobject): pass +# class for well +class Well (GameObject): + def __init__ (self, row, col, image=None, liquid = "water"): + self.liquid = liquid + text = "Well" + GameObject.__init__ (self, row, col, text, image, False, "Draw %s" % liquid) + + def interact (self): + return False + + def use (self, otherobject): + # if the object is a bucket, fill it + if isinstance (otherobject, Bucket) is True: + # but only if it is empty + if otherobject.liquid is None: + otherobject.liquid = self.liquid + + +# class for buckets +class Bucket (GameObject): + def __init__ (self, row, col, image=None, liquid = None): + self.liquid = liquid + text = "Bucket" + if liquid is not None: + text = text + " containing %s" % liquid + GameObject.__init__ (self, row, col, text, image, True, "Empty it") + + def interact (self): + return True + + def use (self, otherobject): + # if the other object is a bucket, transfer its + # contents to the other bucket + if isinstance (otherobject, Bucket): + otherobject.liquid = self.liquid + # empty the bucket of its contents + self.liquid = None + self.text = "Bucket" + class GoldCoins (GameObject): # initialize def __init__ (self, row, col, image, value): diff --git a/level1ee.dat b/level1ee.dat new file mode 100644 index 0000000..af732bc --- /dev/null +++ b/level1ee.dat @@ -0,0 +1,412 @@ +(lp1 +(lp2 +(lp3 +I0 +aI0 +aI0 +aa(lp4 +I0 +aI0 +aI0 +aa(lp5 +I0 +aI0 +aI0 +aa(lp6 +I0 +aI0 +aI0 +aa(lp7 +I0 +aI0 +aI0 +aa(lp8 +I0 +aI0 +aI0 +aa(lp9 +I0 +aI0 +aI0 +aa(lp10 +I2 +aI10 +aI0 +aa(lp11 +I2 +aI5 +aI0 +aa(lp12 +I1 +aI1 +aI0 +aaa(lp13 +(lp14 +I1 +aI0 +aI0 +aa(lp15 +I0 +aI0 +aI0 +aa(lp16 +I2 +aI0 +aI0 +aa(lp17 +I0 +aI0 +aI0 +aa(lp18 +I0 +aI0 +aI0 +aa(lp19 +I0 +aI0 +aI0 +aa(lp20 +I3 +aI4 +aI0 +aa(lp21 +I2 +aI10 +aI0 +aa(lp22 +I0 +aI0 +aI0 +aa(lp23 +I2 +aI1 +aI0 +aaa(lp24 +(lp25 +I3 +aI6 +aI0 +aa(lp26 +I0 +aI0 +aI0 +aa(lp27 +I0 +aI0 +aI0 +aa(lp28 +I2 +aI0 +aI0 +aa(lp29 +I0 +aI0 +aI0 +aa(lp30 +I0 +aI0 +aI0 +aa(lp31 +I0 +aI0 +aI0 +aa(lp32 +I2 +aI10 +aI0 +aa(lp33 +I2 +aI10 +aI0 +aa(lp34 +I2 +aI10 +aI0 +aaa(lp35 +(lp36 +I3 +aI5 +aI0 +aa(lp37 +I3 +aI6 +aI0 +aa(lp38 +I0 +aI0 +aI0 +aa(lp39 +I0 +aI0 +aI0 +aa(lp40 +I0 +aI0 +aI0 +aa(lp41 +I0 +aI0 +aI0 +aa(lp42 +I0 +aI0 +aI0 +aa(lp43 +I1 +aI0 +aI0 +aa(lp44 +I3 +aI4 +aI0 +aa(lp45 +I2 +aI10 +aI0 +aaa(lp46 +(lp47 +I3 +aI6 +aI0 +aa(lp48 +I3 +aI5 +aI0 +aa(lp49 +I0 +aI0 +aI0 +aa(lp50 +I0 +aI0 +aI0 +aa(lp51 +I0 +aI0 +aI0 +aa(lp52 +I2 +aI0 +aI0 +aa(lp53 +I0 +aI0 +aI0 +aa(lp54 +I6 +aI4 +aI0 +aa(lp55 +I6 +aI5 +aI0 +aa(lp56 +I2 +aI10 +aI0 +aaa(lp57 +(lp58 +I3 +aI5 +aI0 +aa(lp59 +I3 +aI6 +aI0 +aa(lp60 +I0 +aI0 +aI0 +aa(lp61 +I2 +aI0 +aI0 +aa(lp62 +I0 +aI0 +aI0 +aa(lp63 +I0 +aI0 +aI0 +aa(lp64 +I0 +aI0 +aI0 +aa(lp65 +I7 +aI4 +aI0 +aa(lp66 +I7 +aI5 +aI0 +aa(lp67 +I2 +aI10 +aI0 +aaa(lp68 +(lp69 +I3 +aI5 +aI0 +aa(lp70 +I3 +aI6 +aI0 +aa(lp71 +I0 +aI0 +aI0 +aa(lp72 +I0 +aI0 +aI0 +aa(lp73 +I0 +aI0 +aI0 +aa(lp74 +I0 +aI0 +aI0 +aa(lp75 +I0 +aI0 +aI0 +aa(lp76 +I2 +aI5 +aI0 +aa(lp77 +I2 +aI5 +aI0 +aa(lp78 +I2 +aI10 +aI0 +aaa(lp79 +(lp80 +I3 +aI6 +aI0 +aa(lp81 +I0 +aI0 +aI0 +aa(lp82 +I2 +aI0 +aI0 +aa(lp83 +I0 +aI0 +aI0 +aa(lp84 +I0 +aI0 +aI0 +aa(lp85 +I2 +aI0 +aI0 +aa(lp86 +I0 +aI0 +aI0 +aa(lp87 +I2 +aI10 +aI0 +aa(lp88 +I2 +aI10 +aI0 +aa(lp89 +I2 +aI10 +aI0 +aaa(lp90 +(lp91 +I1 +aI0 +aI0 +aa(lp92 +I0 +aI0 +aI0 +aa(lp93 +I0 +aI0 +aI0 +aa(lp94 +I0 +aI0 +aI0 +aa(lp95 +I0 +aI0 +aI0 +aa(lp96 +I0 +aI0 +aI0 +aa(lp97 +I0 +aI0 +aI0 +aa(lp98 +I2 +aI10 +aI0 +aa(lp99 +I0 +aI0 +aI0 +aa(lp100 +I1 +aI1 +aI0 +aaa(lp101 +(lp102 +I0 +aI0 +aI0 +aa(lp103 +I0 +aI0 +aI0 +aa(lp104 +I0 +aI0 +aI0 +aa(lp105 +I1 +aI0 +aI0 +aa(lp106 +I0 +aI0 +aI0 +aa(lp107 +I0 +aI0 +aI0 +aa(lp108 +I0 +aI0 +aI0 +aa(lp109 +I2 +aI10 +aI0 +aa(lp110 +I3 +aI4 +aI0 +aa(lp111 +I1 +aI1 +aI0 +aaa. \ No newline at end of file diff --git a/levels/level1ee.dat b/levels/level1ee.dat new file mode 100644 index 0000000..f449775 --- /dev/null +++ b/levels/level1ee.dat @@ -0,0 +1,412 @@ +(lp1 +(lp2 +(lp3 +I0 +aI1 +aI0 +aa(lp4 +I0 +aI4 +aI0 +aa(lp5 +I0 +aI0 +aI0 +aa(lp6 +I0 +aI0 +aI0 +aa(lp7 +I0 +aI0 +aI0 +aa(lp8 +I3 +aI4 +aI0 +aa(lp9 +I0 +aI0 +aI0 +aa(lp10 +I0 +aI0 +aI0 +aa(lp11 +I2 +aI11 +aI01 +aa(lp12 +I0 +aI0 +aI0 +aaa(lp13 +(lp14 +I2 +aI1 +aI0 +aa(lp15 +I2 +aI4 +aI0 +aa(lp16 +I0 +aI0 +aI0 +aa(lp17 +I2 +aI0 +aI01 +aa(lp18 +I0 +aI0 +aI0 +aa(lp19 +I0 +aI0 +aI0 +aa(lp20 +I0 +aI0 +aI0 +aa(lp21 +I2 +aI0 +aI01 +aa(lp22 +I2 +aI10 +aI01 +aa(lp23 +I0 +aI0 +aI0 +aaa(lp24 +(lp25 +I3 +aI5 +aI0 +aa(lp26 +I0 +aI0 +aI0 +aa(lp27 +I0 +aI0 +aI0 +aa(lp28 +I0 +aI0 +aI0 +aa(lp29 +I0 +aI0 +aI0 +aa(lp30 +I0 +aI0 +aI0 +aa(lp31 +I0 +aI0 +aI0 +aa(lp32 +I0 +aI0 +aI0 +aa(lp33 +I2 +aI10 +aI01 +aa(lp34 +I2 +aI10 +aI01 +aaa(lp35 +(lp36 +I3 +aI5 +aI0 +aa(lp37 +I3 +aI6 +aI0 +aa(lp38 +I0 +aI0 +aI0 +aa(lp39 +I0 +aI0 +aI0 +aa(lp40 +I0 +aI0 +aI0 +aa(lp41 +I2 +aI0 +aI01 +aa(lp42 +I0 +aI0 +aI0 +aa(lp43 +I0 +aI0 +aI0 +aa(lp44 +I2 +aI5 +aI00 +aa(lp45 +I2 +aI10 +aI01 +aaa(lp46 +(lp47 +I3 +aI6 +aI0 +aa(lp48 +I3 +aI5 +aI0 +aa(lp49 +I2 +aI0 +aI01 +aa(lp50 +I0 +aI0 +aI0 +aa(lp51 +I0 +aI0 +aI0 +aa(lp52 +I0 +aI0 +aI0 +aa(lp53 +I0 +aI0 +aI0 +aa(lp54 +I6 +aI4 +aI01 +aa(lp55 +I6 +aI5 +aI01 +aa(lp56 +I2 +aI10 +aI01 +aaa(lp57 +(lp58 +I3 +aI5 +aI0 +aa(lp59 +I3 +aI5 +aI0 +aa(lp60 +I0 +aI0 +aI0 +aa(lp61 +I0 +aI0 +aI0 +aa(lp62 +I2 +aI0 +aI01 +aa(lp63 +I0 +aI0 +aI0 +aa(lp64 +I0 +aI0 +aI0 +aa(lp65 +I7 +aI4 +aI01 +aa(lp66 +I7 +aI5 +aI01 +aa(lp67 +I2 +aI10 +aI01 +aaa(lp68 +(lp69 +I3 +aI6 +aI0 +aa(lp70 +I3 +aI6 +aI0 +aa(lp71 +I0 +aI0 +aI0 +aa(lp72 +I0 +aI0 +aI0 +aa(lp73 +I0 +aI0 +aI0 +aa(lp74 +I0 +aI0 +aI0 +aa(lp75 +I0 +aI0 +aI0 +aa(lp76 +I0 +aI0 +aI0 +aa(lp77 +I0 +aI0 +aI0 +aa(lp78 +I2 +aI10 +aI01 +aaa(lp79 +(lp80 +I3 +aI5 +aI0 +aa(lp81 +I0 +aI0 +aI0 +aa(lp82 +I0 +aI0 +aI0 +aa(lp83 +I2 +aI0 +aI01 +aa(lp84 +I3 +aI4 +aI0 +aa(lp85 +I0 +aI0 +aI0 +aa(lp86 +I0 +aI0 +aI0 +aa(lp87 +I0 +aI0 +aI0 +aa(lp88 +I2 +aI10 +aI01 +aa(lp89 +I2 +aI10 +aI01 +aaa(lp90 +(lp91 +I0 +aI0 +aI0 +aa(lp92 +I2 +aI0 +aI01 +aa(lp93 +I0 +aI0 +aI0 +aa(lp94 +I0 +aI0 +aI0 +aa(lp95 +I0 +aI0 +aI0 +aa(lp96 +I0 +aI0 +aI0 +aa(lp97 +I2 +aI0 +aI01 +aa(lp98 +I0 +aI0 +aI0 +aa(lp99 +I2 +aI10 +aI01 +aa(lp100 +I0 +aI0 +aI0 +aaa(lp101 +(lp102 +I0 +aI0 +aI0 +aa(lp103 +I0 +aI0 +aI0 +aa(lp104 +I0 +aI0 +aI0 +aa(lp105 +I0 +aI0 +aI0 +aa(lp106 +I0 +aI0 +aI0 +aa(lp107 +I0 +aI0 +aI0 +aa(lp108 +I3 +aI4 +aI0 +aa(lp109 +I0 +aI0 +aI0 +aa(lp110 +I2 +aI10 +aI01 +aa(lp111 +I0 +aI0 +aI0 +aaa. \ No newline at end of file diff --git a/levels/level1n.dat b/levels/level1n.dat new file mode 100644 index 0000000..8bc5e25 --- /dev/null +++ b/levels/level1n.dat @@ -0,0 +1,412 @@ +(lp1 +(lp2 +(lp3 +I2 +aI1 +aI0 +aa(lp4 +I2 +aI2 +aI0 +aa(lp5 +I2 +aI2 +aI0 +aa(lp6 +I2 +aI3 +aI0 +aa(lp7 +I2 +aI3 +aI0 +aa(lp8 +I2 +aI3 +aI0 +aa(lp9 +I2 +aI4 +aI0 +aa(lp10 +I0 +aI0 +aI0 +aa(lp11 +I2 +aI1 +aI0 +aa(lp12 +I2 +aI2 +aI0 +aaa(lp13 +(lp14 +I2 +aI10 +aI01 +aa(lp15 +I2 +aI10 +aI01 +aa(lp16 +I2 +aI10 +aI01 +aa(lp17 +I2 +aI11 +aI01 +aa(lp18 +I2 +aI10 +aI01 +aa(lp19 +I2 +aI10 +aI01 +aa(lp20 +I2 +aI10 +aI01 +aa(lp21 +I2 +aI10 +aI01 +aa(lp22 +I2 +aI10 +aI01 +aa(lp23 +I2 +aI10 +aI01 +aaa(lp24 +(lp25 +I0 +aI0 +aI0 +aa(lp26 +I0 +aI0 +aI0 +aa(lp27 +I3 +aI4 +aI0 +aa(lp28 +I0 +aI0 +aI0 +aa(lp29 +I2 +aI0 +aI01 +aa(lp30 +I0 +aI0 +aI0 +aa(lp31 +I0 +aI0 +aI0 +aa(lp32 +I0 +aI0 +aI0 +aa(lp33 +I0 +aI0 +aI0 +aa(lp34 +I1 +aI0 +aI0 +aaa(lp35 +(lp36 +I0 +aI0 +aI0 +aa(lp37 +I2 +aI0 +aI01 +aa(lp38 +I0 +aI0 +aI0 +aa(lp39 +I1 +aI0 +aI0 +aa(lp40 +I0 +aI0 +aI0 +aa(lp41 +I0 +aI0 +aI0 +aa(lp42 +I2 +aI0 +aI01 +aa(lp43 +I0 +aI0 +aI0 +aa(lp44 +I2 +aI0 +aI01 +aa(lp45 +I0 +aI0 +aI0 +aaa(lp46 +(lp47 +I0 +aI0 +aI0 +aa(lp48 +I0 +aI0 +aI0 +aa(lp49 +I2 +aI10 +aI01 +aa(lp50 +I2 +aI10 +aI01 +aa(lp51 +I2 +aI10 +aI01 +aa(lp52 +I2 +aI11 +aI01 +aa(lp53 +I2 +aI10 +aI01 +aa(lp54 +I2 +aI10 +aI01 +aa(lp55 +I0 +aI0 +aI0 +aa(lp56 +I0 +aI0 +aI0 +aaa(lp57 +(lp58 +I2 +aI0 +aI01 +aa(lp59 +I0 +aI0 +aI0 +aa(lp60 +I2 +aI10 +aI01 +aa(lp61 +I3 +aI5 +aI0 +aa(lp62 +I3 +aI5 +aI0 +aa(lp63 +I3 +aI5 +aI0 +aa(lp64 +I3 +aI5 +aI0 +aa(lp65 +I2 +aI10 +aI01 +aa(lp66 +I0 +aI0 +aI0 +aa(lp67 +I2 +aI0 +aI01 +aaa(lp68 +(lp69 +I0 +aI0 +aI0 +aa(lp70 +I0 +aI0 +aI0 +aa(lp71 +I2 +aI10 +aI01 +aa(lp72 +I0 +aI0 +aI0 +aa(lp73 +I3 +aI4 +aI0 +aa(lp74 +I1 +aI0 +aI0 +aa(lp75 +I1 +aI0 +aI0 +aa(lp76 +I2 +aI10 +aI01 +aa(lp77 +I0 +aI0 +aI0 +aa(lp78 +I0 +aI0 +aI0 +aaa(lp79 +(lp80 +I0 +aI0 +aI0 +aa(lp81 +I2 +aI0 +aI01 +aa(lp82 +I0 +aI0 +aI0 +aa(lp83 +I0 +aI0 +aI0 +aa(lp84 +I0 +aI0 +aI0 +aa(lp85 +I0 +aI0 +aI0 +aa(lp86 +I0 +aI0 +aI0 +aa(lp87 +I2 +aI0 +aI01 +aa(lp88 +I0 +aI0 +aI0 +aa(lp89 +I0 +aI0 +aI0 +aaa(lp90 +(lp91 +I0 +aI0 +aI0 +aa(lp92 +I0 +aI0 +aI0 +aa(lp93 +I0 +aI0 +aI0 +aa(lp94 +I2 +aI0 +aI01 +aa(lp95 +I0 +aI0 +aI0 +aa(lp96 +I0 +aI0 +aI0 +aa(lp97 +I0 +aI0 +aI0 +aa(lp98 +I0 +aI0 +aI0 +aa(lp99 +I0 +aI0 +aI0 +aa(lp100 +I2 +aI0 +aI01 +aaa(lp101 +(lp102 +I0 +aI0 +aI0 +aa(lp103 +I0 +aI0 +aI0 +aa(lp104 +I0 +aI0 +aI0 +aa(lp105 +I0 +aI0 +aI0 +aa(lp106 +I0 +aI0 +aI0 +aa(lp107 +I0 +aI0 +aI0 +aa(lp108 +I0 +aI0 +aI0 +aa(lp109 +I0 +aI0 +aI0 +aa(lp110 +I0 +aI0 +aI0 +aa(lp111 +I0 +aI0 +aI0 +aaa. \ No newline at end of file diff --git a/maingame.py b/maingame.py index 66f28b8..9ba5ea2 100644 --- a/maingame.py +++ b/maingame.py @@ -50,6 +50,8 @@ class MainGame: self.img_key2.set_colorkey (pygame.Color (0, 255, 0)) self.img_chest = pygame.image.load (os.path.join ("objects", "chest.png")).convert () self.img_chest.set_colorkey (pygame.Color (0, 255, 0)) + self.img_bucket = pygame.image.load (os.path.join ("objects", "bucket.png")).convert () + self.img_bucket.set_colorkey (pygame.Color (0, 255, 0)) # initialize player graphics self.img_butabafront = pygame.image.load (os.path.join ("sprite", "butaba-front.png")).convert () @@ -90,30 +92,45 @@ class MainGame: gold50 = gameobjects.GoldCoins (6, 2, self.img_goldcoins, 50) gold25 = gameobjects.GoldCoins (6, 2, self.img_goldcoins, 25) gold10 = gameobjects.GoldCoins (6, 2, self.img_goldcoins, 10) - potion2 = gameobjects.HealthPotion (5, 2, self.img_redpotion) - potion3 = gameobjects.HealthPotion (5, 2, self.img_redpotion) + bucket = gameobjects.Bucket (6, 3, self.img_bucket) + + well1 = gameobjects.Well (4, 7) + well2 = gameobjects.Well (5, 7) + well3 = gameobjects.Well (4, 8) + well4 = gameobjects.Well (5, 8) npc_bulisa = npcs.Bulisa (4, 3, self.img_bulisa, self.img_bulisa_portrait, [ os.path.join ("dialogues", "bulisa1.dlg"), os.path.join ("dialogues", "bulisa2.dlg"), - os.path.join ("dialogues", "bulisa3.dlg") ] ) + os.path.join ("dialogues", "bulisa3.dlg"), + os.path.join ("dialogues", "bulisa4.dlg") ] ) - chest1.objects = [ gold50, gold25, potion2, potion3, key2, gold10 ] + chest1.objects = [ gold50, gold25, key2, gold10 ] # create the levels - self.level1 = level.Level (cPickle.load (file ("levels/level1.dat")), + self.level1 = level.Level (cPickle.load (file (os.path.join ("levels", "level1.dat"))), objects = [ chest1 ] ) - self.level1w = level.Level (cPickle.load (file ("levels/level1w.dat"))) + self.level1w = level.Level (cPickle.load (file (os.path.join ("levels", "level1w.dat")))) - self.level1e = level.Level (cPickle.load (file ("levels/level1e.dat")), + self.level1e = level.Level (cPickle.load (file (os.path.join ("levels", "level1e.dat"))), objects = [ key1, potion, chest2 ], npcs = [ npc_bulisa ]) + self.level1ee = level.Level (cPickle.load (file (os.path.join ("levels", "level1ee.dat"))), + objects = [ well1, well2, well3, well4 ]) + + self.level1n = level.Level (cPickle.load (file (os.path.join ("levels", "level1n.dat"))), + objects = [ bucket ]) + # set up the interaction between levels self.level1.levelright = self.level1e self.level1.levelleft = self.level1w self.level1e.levelleft = self.level1 + self.level1e.levelright = self.level1ee + self.level1ee.levelleft = self.level1e self.level1w.levelright = self.level1 + self.level1.leveltop = self.level1n + self.level1n.levelbottom = self.level1 def main_loop (self): # main game loop @@ -267,7 +284,6 @@ class MainGame: 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): @@ -280,14 +296,25 @@ class MainGame: # 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 + # mission accepted but not completed - check if completed and set value + # accordingly elif (gamestate.mission_bulisa_water_from_well is True and gamestate.mission_bulisa_water_from_well_complete is False): - npc.currentdialog = 1 + for invobj in self.butaba.objects: + if isinstance (invobj, gameobjects.Bucket) is True: + if invobj.liquid == "water": + gamestate.mission_bulisa_water_from_well_complete = True + self.butaba.objects.remove (invobj) + break + # water mission is not completed yet + if gamestate.mission_bulisa_water_from_well_complete is False: + npc.currentdialog = 1 + else: + npc.currentdialog = 3 + # 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 @@ -394,6 +421,32 @@ class MainGame: self.status_message = "You picked up %d gold." % obj.value # remove the gold coins after adding it to Butaba's gold container.objects.remove (obj) + # using a bucket means emptying it + elif isinstance (obj, gameobjects.Bucket) is True: + if obj.liquid is not None: + self.status_message = "You emptied the bucket of %s" % obj.liquid + obj.use (self.butaba) + else: + self.status_message = "Bucket is already empty." + # using a well + elif isinstance (obj, gameobjects.Well) is True: + # if the well is not dry, i.e. it has some liquid + if obj.liquid is not None: + # search butaba inventory for an empty bucket + for invobj in self.butaba.objects: + # bucket found, now check if it is empty + if isinstance (invobj, gameobjects.Bucket) is True: + # if empty fill it + if invobj.liquid is None: + obj.use (invobj) + self.status_message = "You successfully filled the %s with %s" % (invobj.text, obj.liquid) + if self.butaba.strength < constants.STRENGTHMAX_DRAW_WELL_WATER: + self.butaba.strength += 2 + self.status_message += " and gained strength!" + return + self.status_message = "You have no empty bucket to draw %s with!" % obj.liquid + else: + self.status_message = "%s appears to be dry!" % obj.text def move_butaba_left (self): # clear any status messages diff --git a/objects/bucket.png b/objects/bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..3b45fb9d1037509b549f0bf8459228a37209c051 GIT binary patch literal 1219 zcmV;!1U&nRP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipn; z3l<2);L|k#000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000CYNklLO?i`m2=7c@^#r1NE~GFvI^;tfyU_j% zqhr44w>aO#dske~7jlPL+*_*ty_EKb0nomI=UqF`za10ryJJBrYG`C{V&k4Bvc6}I z(-LVR6bKLw+@(SOWa6XGDw^ZwH{X)`#K#lpfoZJo*Tf^ctZAvFxd0LcCLo&BuPT9lL~GS7X0A1$T8&7aquvdZLuV<*mX<-%Lm-8L>X zGi!nPpd<#)j1GBb!E;Z1xU~_0{10jCj+&eL;wx{X;uH(R&m{o0V!+47!sBBVr;@3A zwBOeC+~?=YPD^JNEp|lA*;-OKRSST^#i@@=GO?qDr%#+MbI7BqBr~&F^I1#`__MPW z@?(-{dpGNLLfhS#2rxVtC%rVWDrRMMs;o_GR3_eKAEOX-(!_`Inb*s}|(|BJ6Yi2sLM;