Began working on "Mayor" charity mission
authorHarishankar <v.harishankar@gmail.com>
Sat, 15 Oct 2011 05:05:22 +0000 (10:35 +0530)
committerHarishankar <v.harishankar@gmail.com>
Sat, 15 Oct 2011 05:05:22 +0000 (10:35 +0530)
Began working on mayor's charity mission. Added
graphics for the mayor and also added many more
levels.

16 files changed:
background/tileset.png
dialogues/bulisa1.dlg
dialogues/bulisa2.dlg
dialogues/bulisa3.dlg
dialogues/bulisa5.dlg
dialogues/bulisa6.dlg [new file with mode: 0644]
gamestate.py
levels/level1ne.dat [new file with mode: 0644]
levels/level1nee.dat [new file with mode: 0644]
levels/level1nw.dat [new file with mode: 0644]
levels/level1sw.dat [new file with mode: 0644]
levels/level1sww.dat [new file with mode: 0644]
levels/level1ww.dat [new file with mode: 0644]
maingame.py
npcs.py
sprite/mayor-left.png

index d294b05..199fc63 100644 (file)
Binary files a/background/tileset.png and b/background/tileset.png differ
index e684042..eae26d0 100644 (file)
   </dialogue>
   <dialogue id="5">
     <speech>Oh, no problem. That's all right, then.</speech>
   </dialogue>
   <dialogue id="5">
     <speech>Oh, no problem. That's all right, then.</speech>
-    <response id="12" nextdialogue="0">Bye!</response>
+    <response id="refusedwatermission" nextdialogue="0">Bye!</response>
   </dialogue>
   <dialogue id="6">
     <speech>Thanks so much! There is an empty bucket somewhere in the garden. Take that, go to the well behind the house, draw water and bring it back to me.</speech>
   </dialogue>
   <dialogue id="6">
     <speech>Thanks so much! There is an empty bucket somewhere in the garden. Take that, go to the well behind the house, draw water and bring it back to me.</speech>
-    <response id="13" nextdialogue="0">Right. I'll go at once.</response>
+    <response id="acceptedwatermission" nextdialogue="0">Right. I'll go at once.</response>
   </dialogue>
 </conversation>
\ No newline at end of file
   </dialogue>
 </conversation>
\ No newline at end of file
index bb504e1..d4ef313 100644 (file)
@@ -2,16 +2,16 @@
 <conversation>
   <dialogue id="1">
     <speech>Hello, my friend. I see you've not yet brought back water from the well.</speech> 
 <conversation>
   <dialogue id="1">
     <speech>Hello, my friend. I see you've not yet brought back water from the well.</speech> 
-    <response id="13.1" nextdialogue="2">Where can I find a bucket?</response>
-    <response id="13.2" nextdialogue="3">Where can I find the well?</response>
+    <response id="12" nextdialogue="2">Where can I find a bucket?</response>
+    <response id="13" nextdialogue="3">Where can I find the well?</response>
     <response id="14" nextdialogue="0">I'll go and get it at once!</response>
   </dialogue>
   <dialogue id="2">
     <speech>Didn't you hear? You can find the bucket somewhere in the garden.</speech>
     <response id="14" nextdialogue="0">I'll go and get it at once!</response>
   </dialogue>
   <dialogue id="2">
     <speech>Didn't you hear? You can find the bucket somewhere in the garden.</speech>
-    <response id="13.3" nextdialogue="0">Thanks...</response>
+    <response id="15" nextdialogue="0">Thanks...</response>
   </dialogue>
   <dialogue id="3">
     <speech>I already told you, there is a well behind the house!</speech>
   </dialogue>
   <dialogue id="3">
     <speech>I already told you, there is a well behind the house!</speech>
-    <response id="13.4" nextdialogue="0">Uh, thanks!</response>
+    <response id="16" nextdialogue="0">Uh, thanks!</response>
   </dialogue>
 </conversation>
\ No newline at end of file
   </dialogue>
 </conversation>
\ No newline at end of file
index 63b41ed..f8fde3d 100644 (file)
@@ -2,17 +2,17 @@
 <conversation>
   <dialogue id="1">
     <speech>Hello, Butaba. I hope you don't mind my asking you this again, but are you sure you aren't able to draw some water for me? I am not feeling all that well and I hoped you could help me out this one time!</speech> 
 <conversation>
   <dialogue id="1">
     <speech>Hello, Butaba. I hope you don't mind my asking you this again, but are you sure you aren't able to draw some water for me? I am not feeling all that well and I hoped you could help me out this one time!</speech> 
-    <response id="15" nextdialogue="2">Oh, no problem. I will do it!</response>
-    <response id="16" nextdialogue="3">Sorry, Bulisa. I am unable to do it...</response>
+    <response id="17" nextdialogue="2">Oh, no problem. I will do it!</response>
+    <response id="18" nextdialogue="3">Sorry, Bulisa. I am unable to do it...</response>
   </dialogue>
   
   <dialogue id="2">
     <speech>That is so kind of you, Butaba. There is an empty bucket somewhere in the garden. Take that, go to the well behind the house, draw water and bring it back to me.</speech>
   </dialogue>
   
   <dialogue id="2">
     <speech>That is so kind of you, Butaba. There is an empty bucket somewhere in the garden. Take that, go to the well behind the house, draw water and bring it back to me.</speech>
-    <response id="17" nextdialogue="0">Right. I'll go at once.</response>
+    <response id="acceptedwatermission" nextdialogue="0">Right. I'll go at once.</response>
   </dialogue>
   
   <dialogue id="3">
     <speech>Never mind. If you change your mind, do let me know!</speech>  
   </dialogue>
   
   <dialogue id="3">
     <speech>Never mind. If you change your mind, do let me know!</speech>  
-    <response id="18" nextdialogue="0">Bye!</response>
+    <response id="refusedwatermission" nextdialogue="0">Bye!</response>
   </dialogue>
 </conversation>
\ No newline at end of file
   </dialogue>
 </conversation>
\ No newline at end of file
index 1d4cc8b..a6e8181 100644 (file)
   <dialogue id="3">
     <speech>Ah, then I think I can put you on to something. You see, the town mayor is collecting money for charity. There is 
       going to be a gala function during the Fete. He's short handed at the moment, looking for volunteers. Maybe you could help!</speech>
   <dialogue id="3">
     <speech>Ah, then I think I can put you on to something. You see, the town mayor is collecting money for charity. There is 
       going to be a gala function during the Fete. He's short handed at the moment, looking for volunteers. Maybe you could help!</speech>
-      <response id="26" nextdialogue="0">Sounds like a good idea. I'll go meet him.</response>
-      <response id="27" nextdialogue="4">Oh, I'll consider it...</response>
+      <response id="informedcharitymission" nextdialogue="0">Sounds like a good idea. I'll go meet him.</response>
+      <response id="26" nextdialogue="4">Oh, I'll consider it...</response>
   </dialogue>
   <dialogue id="4">
     <speech>No problem. It's a good cause. Hope you can help with that!</speech>
   </dialogue>
   <dialogue id="4">
     <speech>No problem. It's a good cause. Hope you can help with that!</speech>
-    <response id="28" nextdialogue="0">Bye!</response>
+    <response id="informedcharitymission" nextdialogue="0">Bye!</response>
   </dialogue>
 </conversation>
\ No newline at end of file
   </dialogue>
 </conversation>
\ No newline at end of file
diff --git a/dialogues/bulisa6.dlg b/dialogues/bulisa6.dlg
new file mode 100644 (file)
index 0000000..819c950
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<conversation>
+  <dialogue id="1">
+    <speech>Hello, Butaba! Been to see the mayor, yet?</speech>
+    <response id="27" nextdialogue="2">Uh, no!</response>
+    <response id="28" nextdialogue="0">Bye!</response>
+  </dialogue>
+  <dialogue id="2">
+    <speech>Well, don't worry about seeing him. I'll put a word through to him about you. He is not exactly a very friendly type,
+but he is a good, honest, decent man. And... well, not to be immodest or anything, my word... ahem... carries a lot of weight
+with important people...</speech>
+    <response id="29" nextdialogue="3">Thanks so much, Bulisa.</response>
+    <response id="30" nextdialogue="0">Bye!</response>
+  </dialogue>
+  <dialogue id="3">
+    <speech>Good. See you later!</speech>
+    <response id="31" nextdialogue="0">Bye!</response>
+  </dialogue>
+</conversation>
\ No newline at end of file
index 6a7e4ad..013deb4 100644 (file)
@@ -10,4 +10,5 @@ flag["mission_bulisa_water_from_well_complete"] = False
 flag["mission_bulisa_water_from_well_refused"] = False
 
 # mission to collect money for charity
 flag["mission_bulisa_water_from_well_refused"] = False
 
 # mission to collect money for charity
+flag["mission_charity_informed"] = False
 flag["mission_charity_money"] = False
 flag["mission_charity_money"] = False
diff --git a/levels/level1ne.dat b/levels/level1ne.dat
new file mode 100644 (file)
index 0000000..7ce19cd
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I2
+aI3
+aI0
+aa(lp4
+I2
+aI3
+aI0
+aa(lp5
+I2
+aI4
+aI0
+aa(lp6
+I0
+aI0
+aI0
+aa(lp7
+I0
+aI0
+aI0
+aa(lp8
+I3
+aI4
+aI0
+aa(lp9
+I1
+aI0
+aI0
+aa(lp10
+I0
+aI0
+aI0
+aa(lp11
+I0
+aI0
+aI0
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I2
+aI10
+aI01
+aa(lp15
+I2
+aI10
+aI01
+aa(lp16
+I2
+aI10
+aI01
+aa(lp17
+I2
+aI10
+aI01
+aa(lp18
+I2
+aI10
+aI01
+aa(lp19
+I2
+aI11
+aI01
+aa(lp20
+I2
+aI10
+aI01
+aa(lp21
+I2
+aI10
+aI01
+aa(lp22
+I2
+aI10
+aI01
+aa(lp23
+I2
+aI11
+aI01
+aaa(lp24
+(lp25
+I0
+aI0
+aI0
+aa(lp26
+I2
+aI10
+aI01
+aa(lp27
+I3
+aI5
+aI0
+aa(lp28
+I3
+aI6
+aI0
+aa(lp29
+I3
+aI5
+aI0
+aa(lp30
+I2
+aI10
+aI01
+aa(lp31
+I6
+aI6
+aI01
+aa(lp32
+I6
+aI7
+aI01
+aa(lp33
+I0
+aI0
+aI0
+aa(lp34
+I0
+aI0
+aI0
+aaa(lp35
+(lp36
+I2
+aI5
+aI01
+aa(lp37
+I0
+aI0
+aI0
+aa(lp38
+I0
+aI0
+aI0
+aa(lp39
+I0
+aI0
+aI0
+aa(lp40
+I1
+aI0
+aI0
+aa(lp41
+I0
+aI0
+aI0
+aa(lp42
+I7
+aI6
+aI0
+aa(lp43
+I7
+aI7
+aI0
+aa(lp44
+I0
+aI0
+aI0
+aa(lp45
+I2
+aI5
+aI01
+aaa(lp46
+(lp47
+I0
+aI0
+aI0
+aa(lp48
+I0
+aI0
+aI0
+aa(lp49
+I0
+aI0
+aI0
+aa(lp50
+I0
+aI0
+aI0
+aa(lp51
+I0
+aI0
+aI0
+aa(lp52
+I0
+aI0
+aI0
+aa(lp53
+I0
+aI0
+aI0
+aa(lp54
+I0
+aI0
+aI0
+aa(lp55
+I0
+aI0
+aI0
+aa(lp56
+I0
+aI0
+aI0
+aaa(lp57
+(lp58
+I0
+aI0
+aI0
+aa(lp59
+I0
+aI0
+aI0
+aa(lp60
+I0
+aI0
+aI0
+aa(lp61
+I3
+aI4
+aI00
+aa(lp62
+I0
+aI0
+aI00
+aa(lp63
+I0
+aI0
+aI00
+aa(lp64
+I0
+aI0
+aI00
+aa(lp65
+I0
+aI0
+aI0
+aa(lp66
+I0
+aI0
+aI0
+aa(lp67
+I0
+aI0
+aI0
+aaa(lp68
+(lp69
+I0
+aI0
+aI0
+aa(lp70
+I0
+aI0
+aI0
+aa(lp71
+I2
+aI5
+aI01
+aa(lp72
+I0
+aI0
+aI0
+aa(lp73
+I0
+aI5
+aI01
+aa(lp74
+I0
+aI6
+aI01
+aa(lp75
+I0
+aI0
+aI0
+aa(lp76
+I0
+aI0
+aI0
+aa(lp77
+I2
+aI5
+aI01
+aa(lp78
+I0
+aI0
+aI0
+aaa(lp79
+(lp80
+I0
+aI0
+aI0
+aa(lp81
+I1
+aI0
+aI0
+aa(lp82
+I0
+aI0
+aI0
+aa(lp83
+I0
+aI0
+aI0
+aa(lp84
+I1
+aI5
+aI01
+aa(lp85
+I1
+aI6
+aI01
+aa(lp86
+I0
+aI0
+aI0
+aa(lp87
+I0
+aI0
+aI0
+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
+I0
+aI0
+aI0
+aa(lp95
+I0
+aI0
+aI0
+aa(lp96
+I0
+aI0
+aI0
+aa(lp97
+I0
+aI0
+aI0
+aa(lp98
+I0
+aI0
+aI0
+aa(lp99
+I1
+aI0
+aI0
+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
+I0
+aI0
+aI0
+aa(lp109
+I0
+aI0
+aI0
+aa(lp110
+I0
+aI0
+aI0
+aa(lp111
+I2
+aI0
+aI01
+aaa.
\ No newline at end of file
diff --git a/levels/level1nee.dat b/levels/level1nee.dat
new file mode 100644 (file)
index 0000000..0d0c8fb
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I0
+aI0
+aI0
+aa(lp4
+I1
+aI0
+aI0
+aa(lp5
+I0
+aI0
+aI0
+aa(lp6
+I3
+aI4
+aI0
+aa(lp7
+I0
+aI0
+aI0
+aa(lp8
+I1
+aI0
+aI0
+aa(lp9
+I0
+aI0
+aI0
+aa(lp10
+I0
+aI0
+aI0
+aa(lp11
+I1
+aI0
+aI0
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I2
+aI10
+aI01
+aa(lp15
+I2
+aI10
+aI01
+aa(lp16
+I2
+aI10
+aI01
+aa(lp17
+I2
+aI10
+aI01
+aa(lp18
+I2
+aI10
+aI01
+aa(lp19
+I2
+aI10
+aI01
+aa(lp20
+I2
+aI11
+aI01
+aa(lp21
+I2
+aI10
+aI01
+aa(lp22
+I2
+aI10
+aI01
+aa(lp23
+I0
+aI2
+aI00
+aaa(lp24
+(lp25
+I0
+aI0
+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
+aI0
+aa(lp34
+I1
+aI2
+aI0
+aaa(lp35
+(lp36
+I0
+aI0
+aI0
+aa(lp37
+I2
+aI0
+aI01
+aa(lp38
+I0
+aI0
+aI0
+aa(lp39
+I0
+aI0
+aI0
+aa(lp40
+I2
+aI0
+aI01
+aa(lp41
+I1
+aI0
+aI0
+aa(lp42
+I0
+aI0
+aI0
+aa(lp43
+I0
+aI0
+aI0
+aa(lp44
+I2
+aI11
+aI01
+aa(lp45
+I1
+aI3
+aI0
+aaa(lp46
+(lp47
+I0
+aI0
+aI0
+aa(lp48
+I0
+aI0
+aI0
+aa(lp49
+I0
+aI0
+aI0
+aa(lp50
+I0
+aI0
+aI0
+aa(lp51
+I2
+aI10
+aI01
+aa(lp52
+I2
+aI10
+aI01
+aa(lp53
+I2
+aI10
+aI01
+aa(lp54
+I2
+aI10
+aI01
+aa(lp55
+I2
+aI10
+aI01
+aa(lp56
+I2
+aI3
+aI0
+aaa(lp57
+(lp58
+I0
+aI0
+aI0
+aa(lp59
+I0
+aI0
+aI0
+aa(lp60
+I0
+aI0
+aI0
+aa(lp61
+I0
+aI0
+aI0
+aa(lp62
+I2
+aI10
+aI01
+aa(lp63
+I2
+aI6
+aI0
+aa(lp64
+I2
+aI6
+aI0
+aa(lp65
+I8
+aI6
+aI01
+aa(lp66
+I2
+aI10
+aI01
+aa(lp67
+I0
+aI0
+aI0
+aaa(lp68
+(lp69
+I0
+aI0
+aI0
+aa(lp70
+I0
+aI0
+aI0
+aa(lp71
+I3
+aI4
+aI0
+aa(lp72
+I0
+aI0
+aI0
+aa(lp73
+I2
+aI6
+aI0
+aa(lp74
+I2
+aI6
+aI0
+aa(lp75
+I2
+aI6
+aI0
+aa(lp76
+I2
+aI6
+aI0
+aa(lp77
+I2
+aI10
+aI01
+aa(lp78
+I0
+aI0
+aI0
+aaa(lp79
+(lp80
+I0
+aI0
+aI0
+aa(lp81
+I2
+aI5
+aI01
+aa(lp82
+I0
+aI0
+aI00
+aa(lp83
+I0
+aI0
+aI0
+aa(lp84
+I2
+aI10
+aI01
+aa(lp85
+I2
+aI10
+aI01
+aa(lp86
+I2
+aI10
+aI01
+aa(lp87
+I2
+aI10
+aI01
+aa(lp88
+I2
+aI10
+aI01
+aa(lp89
+I1
+aI0
+aI0
+aaa(lp90
+(lp91
+I0
+aI0
+aI0
+aa(lp92
+I0
+aI0
+aI0
+aa(lp93
+I0
+aI0
+aI0
+aa(lp94
+I6
+aI6
+aI01
+aa(lp95
+I6
+aI7
+aI01
+aa(lp96
+I0
+aI0
+aI0
+aa(lp97
+I0
+aI0
+aI0
+aa(lp98
+I0
+aI0
+aI0
+aa(lp99
+I2
+aI10
+aI01
+aa(lp100
+I2
+aI5
+aI01
+aaa(lp101
+(lp102
+I0
+aI0
+aI0
+aa(lp103
+I0
+aI0
+aI0
+aa(lp104
+I0
+aI0
+aI0
+aa(lp105
+I7
+aI6
+aI0
+aa(lp106
+I7
+aI7
+aI0
+aa(lp107
+I0
+aI0
+aI0
+aa(lp108
+I0
+aI0
+aI0
+aa(lp109
+I3
+aI4
+aI0
+aa(lp110
+I2
+aI10
+aI01
+aa(lp111
+I1
+aI0
+aI0
+aaa.
\ No newline at end of file
diff --git a/levels/level1nw.dat b/levels/level1nw.dat
new file mode 100644 (file)
index 0000000..2f0843d
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I2
+aI0
+aI01
+aa(lp4
+I5
+aI6
+aI0
+aa(lp5
+I5
+aI7
+aI0
+aa(lp6
+I0
+aI0
+aI0
+aa(lp7
+I2
+aI5
+aI01
+aa(lp8
+I0
+aI0
+aI0
+aa(lp9
+I0
+aI0
+aI0
+aa(lp10
+I0
+aI0
+aI0
+aa(lp11
+I0
+aI0
+aI0
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I2
+aI0
+aI01
+aa(lp15
+I5
+aI6
+aI0
+aa(lp16
+I5
+aI7
+aI0
+aa(lp17
+I0
+aI0
+aI0
+aa(lp18
+I0
+aI0
+aI0
+aa(lp19
+I0
+aI0
+aI0
+aa(lp20
+I0
+aI0
+aI0
+aa(lp21
+I2
+aI5
+aI01
+aa(lp22
+I2
+aI10
+aI01
+aa(lp23
+I2
+aI10
+aI01
+aaa(lp24
+(lp25
+I2
+aI5
+aI01
+aa(lp26
+I5
+aI6
+aI0
+aa(lp27
+I5
+aI7
+aI0
+aa(lp28
+I0
+aI0
+aI0
+aa(lp29
+I0
+aI0
+aI0
+aa(lp30
+I0
+aI0
+aI0
+aa(lp31
+I3
+aI4
+aI0
+aa(lp32
+I0
+aI0
+aI0
+aa(lp33
+I2
+aI10
+aI01
+aa(lp34
+I0
+aI0
+aI0
+aaa(lp35
+(lp36
+I2
+aI0
+aI01
+aa(lp37
+I5
+aI6
+aI0
+aa(lp38
+I5
+aI7
+aI0
+aa(lp39
+I6
+aI6
+aI01
+aa(lp40
+I6
+aI7
+aI01
+aa(lp41
+I0
+aI0
+aI0
+aa(lp42
+I0
+aI0
+aI0
+aa(lp43
+I0
+aI0
+aI0
+aa(lp44
+I2
+aI10
+aI01
+aa(lp45
+I0
+aI0
+aI0
+aaa(lp46
+(lp47
+I2
+aI0
+aI01
+aa(lp48
+I5
+aI6
+aI0
+aa(lp49
+I5
+aI7
+aI0
+aa(lp50
+I7
+aI6
+aI0
+aa(lp51
+I7
+aI7
+aI0
+aa(lp52
+I2
+aI0
+aI01
+aa(lp53
+I0
+aI0
+aI0
+aa(lp54
+I0
+aI0
+aI0
+aa(lp55
+I2
+aI10
+aI01
+aa(lp56
+I2
+aI5
+aI01
+aaa(lp57
+(lp58
+I2
+aI0
+aI01
+aa(lp59
+I5
+aI6
+aI0
+aa(lp60
+I5
+aI7
+aI0
+aa(lp61
+I6
+aI6
+aI01
+aa(lp62
+I6
+aI7
+aI01
+aa(lp63
+I0
+aI0
+aI0
+aa(lp64
+I0
+aI0
+aI0
+aa(lp65
+I0
+aI0
+aI0
+aa(lp66
+I2
+aI10
+aI01
+aa(lp67
+I0
+aI0
+aI0
+aaa(lp68
+(lp69
+I2
+aI5
+aI01
+aa(lp70
+I5
+aI6
+aI0
+aa(lp71
+I5
+aI7
+aI0
+aa(lp72
+I7
+aI6
+aI0
+aa(lp73
+I7
+aI7
+aI0
+aa(lp74
+I0
+aI0
+aI0
+aa(lp75
+I0
+aI0
+aI0
+aa(lp76
+I2
+aI0
+aI01
+aa(lp77
+I2
+aI10
+aI01
+aa(lp78
+I0
+aI0
+aI0
+aaa(lp79
+(lp80
+I2
+aI0
+aI01
+aa(lp81
+I5
+aI6
+aI0
+aa(lp82
+I5
+aI7
+aI0
+aa(lp83
+I0
+aI1
+aI0
+aa(lp84
+I0
+aI3
+aI0
+aa(lp85
+I0
+aI2
+aI0
+aa(lp86
+I0
+aI3
+aI0
+aa(lp87
+I0
+aI4
+aI0
+aa(lp88
+I2
+aI10
+aI01
+aa(lp89
+I0
+aI0
+aI0
+aaa(lp90
+(lp91
+I2
+aI5
+aI01
+aa(lp92
+I5
+aI6
+aI0
+aa(lp93
+I5
+aI7
+aI0
+aa(lp94
+I1
+aI1
+aI0
+aa(lp95
+I1
+aI3
+aI0
+aa(lp96
+I1
+aI2
+aI0
+aa(lp97
+I1
+aI3
+aI0
+aa(lp98
+I1
+aI4
+aI0
+aa(lp99
+I2
+aI10
+aI01
+aa(lp100
+I0
+aI0
+aI0
+aaa(lp101
+(lp102
+I2
+aI0
+aI01
+aa(lp103
+I5
+aI6
+aI0
+aa(lp104
+I5
+aI7
+aI0
+aa(lp105
+I1
+aI1
+aI0
+aa(lp106
+I1
+aI3
+aI0
+aa(lp107
+I1
+aI3
+aI0
+aa(lp108
+I1
+aI3
+aI0
+aa(lp109
+I1
+aI4
+aI0
+aa(lp110
+I2
+aI10
+aI01
+aa(lp111
+I0
+aI0
+aI0
+aaa.
\ No newline at end of file
diff --git a/levels/level1sw.dat b/levels/level1sw.dat
new file mode 100644 (file)
index 0000000..7cef36c
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I2
+aI0
+aI01
+aa(lp4
+I4
+aI6
+aI0
+aa(lp5
+I4
+aI7
+aI0
+aa(lp6
+I0
+aI0
+aI0
+aa(lp7
+I0
+aI0
+aI0
+aa(lp8
+I0
+aI0
+aI0
+aa(lp9
+I2
+aI5
+aI01
+aa(lp10
+I0
+aI0
+aI0
+aa(lp11
+I2
+aI10
+aI01
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I2
+aI5
+aI01
+aa(lp15
+I5
+aI6
+aI0
+aa(lp16
+I5
+aI7
+aI0
+aa(lp17
+I0
+aI0
+aI0
+aa(lp18
+I0
+aI1
+aI0
+aa(lp19
+I0
+aI2
+aI0
+aa(lp20
+I0
+aI2
+aI0
+aa(lp21
+I0
+aI4
+aI0
+aa(lp22
+I2
+aI10
+aI01
+aa(lp23
+I0
+aI0
+aI0
+aaa(lp24
+(lp25
+I2
+aI0
+aI01
+aa(lp26
+I5
+aI6
+aI0
+aa(lp27
+I5
+aI7
+aI0
+aa(lp28
+I0
+aI0
+aI0
+aa(lp29
+I1
+aI1
+aI0
+aa(lp30
+I1
+aI2
+aI0
+aa(lp31
+I1
+aI3
+aI0
+aa(lp32
+I1
+aI4
+aI0
+aa(lp33
+I2
+aI10
+aI01
+aa(lp34
+I0
+aI0
+aI0
+aaa(lp35
+(lp36
+I2
+aI5
+aI01
+aa(lp37
+I5
+aI6
+aI0
+aa(lp38
+I5
+aI7
+aI0
+aa(lp39
+I0
+aI0
+aI0
+aa(lp40
+I1
+aI1
+aI0
+aa(lp41
+I1
+aI3
+aI0
+aa(lp42
+I1
+aI2
+aI0
+aa(lp43
+I1
+aI4
+aI0
+aa(lp44
+I2
+aI10
+aI01
+aa(lp45
+I0
+aI0
+aI0
+aaa(lp46
+(lp47
+I2
+aI0
+aI01
+aa(lp48
+I5
+aI6
+aI0
+aa(lp49
+I5
+aI7
+aI0
+aa(lp50
+I0
+aI0
+aI0
+aa(lp51
+I1
+aI1
+aI0
+aa(lp52
+I1
+aI3
+aI0
+aa(lp53
+I1
+aI3
+aI0
+aa(lp54
+I1
+aI4
+aI0
+aa(lp55
+I2
+aI10
+aI01
+aa(lp56
+I0
+aI0
+aI0
+aaa(lp57
+(lp58
+I2
+aI0
+aI01
+aa(lp59
+I4
+aI6
+aI0
+aa(lp60
+I5
+aI7
+aI0
+aa(lp61
+I2
+aI5
+aI01
+aa(lp62
+I2
+aI1
+aI0
+aa(lp63
+I2
+aI2
+aI0
+aa(lp64
+I2
+aI3
+aI0
+aa(lp65
+I2
+aI4
+aI0
+aa(lp66
+I2
+aI11
+aI01
+aa(lp67
+I2
+aI0
+aI01
+aaa(lp68
+(lp69
+I2
+aI0
+aI01
+aa(lp70
+I5
+aI6
+aI0
+aa(lp71
+I4
+aI7
+aI0
+aa(lp72
+I0
+aI0
+aI0
+aa(lp73
+I0
+aI0
+aI0
+aa(lp74
+I6
+aI6
+aI01
+aa(lp75
+I6
+aI7
+aI01
+aa(lp76
+I0
+aI0
+aI0
+aa(lp77
+I2
+aI10
+aI01
+aa(lp78
+I0
+aI0
+aI0
+aaa(lp79
+(lp80
+I4
+aI4
+aI0
+aa(lp81
+I4
+aI8
+aI0
+aa(lp82
+I5
+aI7
+aI0
+aa(lp83
+I0
+aI0
+aI0
+aa(lp84
+I0
+aI0
+aI0
+aa(lp85
+I7
+aI6
+aI0
+aa(lp86
+I7
+aI7
+aI0
+aa(lp87
+I0
+aI0
+aI0
+aa(lp88
+I2
+aI10
+aI01
+aa(lp89
+I1
+aI0
+aI0
+aaa(lp90
+(lp91
+I5
+aI5
+aI0
+aa(lp92
+I4
+aI8
+aI0
+aa(lp93
+I5
+aI7
+aI0
+aa(lp94
+I0
+aI0
+aI0
+aa(lp95
+I0
+aI0
+aI0
+aa(lp96
+I0
+aI0
+aI0
+aa(lp97
+I0
+aI0
+aI0
+aa(lp98
+I3
+aI4
+aI0
+aa(lp99
+I2
+aI10
+aI01
+aa(lp100
+I2
+aI11
+aI01
+aaa(lp101
+(lp102
+I2
+aI0
+aI01
+aa(lp103
+I5
+aI6
+aI0
+aa(lp104
+I5
+aI7
+aI0
+aa(lp105
+I0
+aI0
+aI0
+aa(lp106
+I0
+aI0
+aI0
+aa(lp107
+I0
+aI0
+aI0
+aa(lp108
+I2
+aI0
+aI01
+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/levels/level1sww.dat b/levels/level1sww.dat
new file mode 100644 (file)
index 0000000..812e121
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I0
+aI8
+aI01
+aa(lp4
+I9
+aI7
+aI0
+aa(lp5
+I9
+aI8
+aI0
+aa(lp6
+I9
+aI8
+aI0
+aa(lp7
+I9
+aI8
+aI0
+aa(lp8
+I9
+aI8
+aI0
+aa(lp9
+I9
+aI8
+aI0
+aa(lp10
+I9
+aI9
+aI0
+aa(lp11
+I0
+aI8
+aI01
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I0
+aI8
+aI01
+aa(lp15
+I9
+aI7
+aI0
+aa(lp16
+I9
+aI8
+aI0
+aa(lp17
+I9
+aI8
+aI0
+aa(lp18
+I9
+aI8
+aI0
+aa(lp19
+I9
+aI8
+aI0
+aa(lp20
+I9
+aI8
+aI0
+aa(lp21
+I9
+aI9
+aI0
+aa(lp22
+I1
+aI11
+aI01
+aa(lp23
+I0
+aI0
+aI0
+aaa(lp24
+(lp25
+I0
+aI8
+aI01
+aa(lp26
+I9
+aI7
+aI0
+aa(lp27
+I9
+aI8
+aI0
+aa(lp28
+I9
+aI8
+aI0
+aa(lp29
+I9
+aI8
+aI0
+aa(lp30
+I9
+aI8
+aI0
+aa(lp31
+I9
+aI8
+aI0
+aa(lp32
+I9
+aI9
+aI0
+aa(lp33
+I0
+aI8
+aI01
+aa(lp34
+I0
+aI0
+aI0
+aaa(lp35
+(lp36
+I0
+aI8
+aI01
+aa(lp37
+I10
+aI7
+aI0
+aa(lp38
+I10
+aI8
+aI0
+aa(lp39
+I10
+aI8
+aI0
+aa(lp40
+I10
+aI8
+aI0
+aa(lp41
+I10
+aI8
+aI0
+aa(lp42
+I10
+aI8
+aI0
+aa(lp43
+I10
+aI9
+aI0
+aa(lp44
+I0
+aI8
+aI01
+aa(lp45
+I3
+aI4
+aI0
+aaa(lp46
+(lp47
+I0
+aI10
+aI01
+aa(lp48
+I1
+aI10
+aI01
+aa(lp49
+I0
+aI7
+aI01
+aa(lp50
+I1
+aI8
+aI01
+aa(lp51
+I3
+aI11
+aI0
+aa(lp52
+I1
+aI7
+aI01
+aa(lp53
+I0
+aI7
+aI01
+aa(lp54
+I0
+aI7
+aI01
+aa(lp55
+I0
+aI11
+aI01
+aa(lp56
+I0
+aI0
+aI0
+aaa(lp57
+(lp58
+I1
+aI0
+aI0
+aa(lp59
+I0
+aI0
+aI0
+aa(lp60
+I3
+aI4
+aI0
+aa(lp61
+I0
+aI0
+aI0
+aa(lp62
+I0
+aI0
+aI0
+aa(lp63
+I0
+aI0
+aI0
+aa(lp64
+I0
+aI0
+aI0
+aa(lp65
+I0
+aI0
+aI0
+aa(lp66
+I0
+aI0
+aI0
+aa(lp67
+I0
+aI0
+aI0
+aaa(lp68
+(lp69
+I2
+aI0
+aI01
+aa(lp70
+I2
+aI5
+aI01
+aa(lp71
+I2
+aI0
+aI01
+aa(lp72
+I2
+aI5
+aI01
+aa(lp73
+I0
+aI0
+aI00
+aa(lp74
+I1
+aI0
+aI00
+aa(lp75
+I2
+aI5
+aI01
+aa(lp76
+I2
+aI0
+aI01
+aa(lp77
+I2
+aI0
+aI01
+aa(lp78
+I2
+aI0
+aI01
+aaa(lp79
+(lp80
+I4
+aI5
+aI0
+aa(lp81
+I4
+aI5
+aI0
+aa(lp82
+I4
+aI5
+aI0
+aa(lp83
+I4
+aI5
+aI0
+aa(lp84
+I4
+aI5
+aI0
+aa(lp85
+I4
+aI5
+aI0
+aa(lp86
+I4
+aI4
+aI0
+aa(lp87
+I4
+aI5
+aI0
+aa(lp88
+I4
+aI5
+aI0
+aa(lp89
+I4
+aI4
+aI0
+aaa(lp90
+(lp91
+I5
+aI4
+aI0
+aa(lp92
+I5
+aI5
+aI0
+aa(lp93
+I5
+aI5
+aI0
+aa(lp94
+I5
+aI5
+aI0
+aa(lp95
+I5
+aI5
+aI0
+aa(lp96
+I5
+aI5
+aI0
+aa(lp97
+I5
+aI4
+aI0
+aa(lp98
+I5
+aI4
+aI0
+aa(lp99
+I5
+aI5
+aI0
+aa(lp100
+I5
+aI5
+aI0
+aaa(lp101
+(lp102
+I2
+aI0
+aI01
+aa(lp103
+I2
+aI0
+aI01
+aa(lp104
+I2
+aI5
+aI01
+aa(lp105
+I2
+aI5
+aI01
+aa(lp106
+I2
+aI0
+aI01
+aa(lp107
+I2
+aI5
+aI01
+aa(lp108
+I2
+aI0
+aI01
+aa(lp109
+I2
+aI5
+aI01
+aa(lp110
+I2
+aI0
+aI01
+aa(lp111
+I2
+aI0
+aI01
+aaa.
\ No newline at end of file
diff --git a/levels/level1ww.dat b/levels/level1ww.dat
new file mode 100644 (file)
index 0000000..5324c83
--- /dev/null
@@ -0,0 +1,412 @@
+(lp1
+(lp2
+(lp3
+I0
+aI8
+aI01
+aa(lp4
+I3
+aI11
+aI0
+aa(lp5
+I3
+aI11
+aI0
+aa(lp6
+I3
+aI11
+aI0
+aa(lp7
+I3
+aI11
+aI0
+aa(lp8
+I3
+aI11
+aI0
+aa(lp9
+I3
+aI11
+aI0
+aa(lp10
+I3
+aI11
+aI0
+aa(lp11
+I1
+aI11
+aI01
+aa(lp12
+I0
+aI0
+aI0
+aaa(lp13
+(lp14
+I0
+aI8
+aI01
+aa(lp15
+I3
+aI11
+aI0
+aa(lp16
+I1
+aI7
+aI01
+aa(lp17
+I1
+aI10
+aI01
+aa(lp18
+I0
+aI7
+aI01
+aa(lp19
+I0
+aI7
+aI01
+aa(lp20
+I0
+aI7
+aI01
+aa(lp21
+I0
+aI7
+aI01
+aa(lp22
+I2
+aI9
+aI01
+aa(lp23
+I1
+aI0
+aI0
+aaa(lp24
+(lp25
+I0
+aI8
+aI01
+aa(lp26
+I3
+aI11
+aI0
+aa(lp27
+I3
+aI11
+aI0
+aa(lp28
+I3
+aI11
+aI0
+aa(lp29
+I8
+aI4
+aI01
+aa(lp30
+I3
+aI11
+aI0
+aa(lp31
+I8
+aI4
+aI01
+aa(lp32
+I3
+aI11
+aI0
+aa(lp33
+I0
+aI8
+aI01
+aa(lp34
+I0
+aI0
+aI0
+aaa(lp35
+(lp36
+I1
+aI9
+aI01
+aa(lp37
+I3
+aI11
+aI0
+aa(lp38
+I3
+aI11
+aI0
+aa(lp39
+I6
+aI0
+aI01
+aa(lp40
+I6
+aI1
+aI01
+aa(lp41
+I6
+aI0
+aI01
+aa(lp42
+I6
+aI1
+aI01
+aa(lp43
+I3
+aI11
+aI0
+aa(lp44
+I0
+aI8
+aI01
+aa(lp45
+I0
+aI0
+aI0
+aaa(lp46
+(lp47
+I3
+aI11
+aI00
+aa(lp48
+I3
+aI11
+aI0
+aa(lp49
+I3
+aI11
+aI0
+aa(lp50
+I7
+aI0
+aI0
+aa(lp51
+I7
+aI1
+aI0
+aa(lp52
+I7
+aI0
+aI0
+aa(lp53
+I7
+aI1
+aI0
+aa(lp54
+I3
+aI11
+aI0
+aa(lp55
+I0
+aI8
+aI01
+aa(lp56
+I0
+aI0
+aI0
+aaa(lp57
+(lp58
+I0
+aI9
+aI01
+aa(lp59
+I3
+aI11
+aI0
+aa(lp60
+I3
+aI11
+aI0
+aa(lp61
+I3
+aI11
+aI0
+aa(lp62
+I3
+aI11
+aI0
+aa(lp63
+I3
+aI11
+aI0
+aa(lp64
+I3
+aI11
+aI0
+aa(lp65
+I3
+aI11
+aI0
+aa(lp66
+I1
+aI11
+aI01
+aa(lp67
+I3
+aI4
+aI0
+aaa(lp68
+(lp69
+I0
+aI8
+aI01
+aa(lp70
+I3
+aI11
+aI0
+aa(lp71
+I3
+aI11
+aI0
+aa(lp72
+I8
+aI7
+aI0
+aa(lp73
+I8
+aI8
+aI0
+aa(lp74
+I8
+aI9
+aI0
+aa(lp75
+I3
+aI11
+aI0
+aa(lp76
+I3
+aI11
+aI0
+aa(lp77
+I0
+aI8
+aI01
+aa(lp78
+I0
+aI0
+aI0
+aaa(lp79
+(lp80
+I0
+aI8
+aI01
+aa(lp81
+I3
+aI11
+aI0
+aa(lp82
+I3
+aI11
+aI0
+aa(lp83
+I10
+aI7
+aI0
+aa(lp84
+I10
+aI8
+aI0
+aa(lp85
+I10
+aI9
+aI0
+aa(lp86
+I3
+aI11
+aI0
+aa(lp87
+I3
+aI11
+aI0
+aa(lp88
+I0
+aI8
+aI01
+aa(lp89
+I0
+aI0
+aI0
+aaa(lp90
+(lp91
+I2
+aI8
+aI01
+aa(lp92
+I0
+aI7
+aI01
+aa(lp93
+I0
+aI7
+aI01
+aa(lp94
+I1
+aI8
+aI01
+aa(lp95
+I3
+aI11
+aI0
+aa(lp96
+I1
+aI7
+aI01
+aa(lp97
+I0
+aI7
+aI01
+aa(lp98
+I0
+aI7
+aI01
+aa(lp99
+I2
+aI9
+aI01
+aa(lp100
+I0
+aI0
+aI0
+aaa(lp101
+(lp102
+I0
+aI8
+aI01
+aa(lp103
+I8
+aI7
+aI0
+aa(lp104
+I8
+aI8
+aI0
+aa(lp105
+I8
+aI8
+aI0
+aa(lp106
+I8
+aI8
+aI0
+aa(lp107
+I8
+aI8
+aI0
+aa(lp108
+I8
+aI8
+aI0
+aa(lp109
+I8
+aI9
+aI0
+aa(lp110
+I0
+aI8
+aI01
+aa(lp111
+I0
+aI0
+aI0
+aaa.
\ No newline at end of file
index afeeb7c..931e993 100644 (file)
@@ -79,9 +79,22 @@ class MainGame:
                self.img_bulisaright = pygame.image.load (os.path.join ("sprite", "bulisa-right.png")).convert ()
                self.img_bulisaright.set_colorkey (pygame.Color (0, 255, 0))
 
                self.img_bulisaright = pygame.image.load (os.path.join ("sprite", "bulisa-right.png")).convert ()
                self.img_bulisaright.set_colorkey (pygame.Color (0, 255, 0))
 
+               self.img_mayorfront = pygame.image.load (os.path.join ("sprite", "mayor-front.png")).convert ()
+               self.img_mayorfront.set_colorkey (pygame.Color (0, 255, 0))
+
+               self.img_mayorback = pygame.image.load (os.path.join ("sprite", "mayor-back.png")).convert ()
+               self.img_mayorback.set_colorkey (pygame.Color (0, 255, 0))
+
+               self.img_mayorleft = pygame.image.load (os.path.join ("sprite", "mayor-left.png")).convert ()
+               self.img_mayorleft.set_colorkey (pygame.Color (0, 255, 0))
+
+               self.img_mayorright = pygame.image.load (os.path.join ("sprite", "mayor-right.png")).convert ()
+               self.img_mayorright.set_colorkey (pygame.Color (0, 255, 0))
+
                # initialize portraits
                self.img_butaba_portrait = pygame.image.load (os.path.join ("portraits", "butaba.png")).convert ()
                self.img_bulisa_portrait = pygame.image.load (os.path.join ("portraits", "bulisa.png")).convert ()
                # initialize portraits
                self.img_butaba_portrait = pygame.image.load (os.path.join ("portraits", "butaba.png")).convert ()
                self.img_bulisa_portrait = pygame.image.load (os.path.join ("portraits", "bulisa.png")).convert ()
+               self.img_mayor_portrait = pygame.image.load (os.path.join ("portraits", "mayor.png")).convert ()
 
                # set level data
                self.setup_levels ()
 
                # set level data
                self.setup_levels ()
@@ -120,7 +133,13 @@ class MainGame:
                                                                          os.path.join ("dialogues", "bulisa2.dlg"),
                                                                          os.path.join ("dialogues", "bulisa3.dlg"),
                                                                          os.path.join ("dialogues", "bulisa4.dlg"),
                                                                          os.path.join ("dialogues", "bulisa2.dlg"),
                                                                          os.path.join ("dialogues", "bulisa3.dlg"),
                                                                          os.path.join ("dialogues", "bulisa4.dlg"),
-                                                                         os.path.join ("dialogues", "bulisa5.dlg") ] )
+                                                                         os.path.join ("dialogues", "bulisa5.dlg"),
+                                                                         os.path.join ("dialogues", "bulisa6.dlg") ] )
+
+               npc_mayor = npcs.Mayor (5, 4, self.img_mayorleft, self.img_mayorright,
+                                                                       self.img_mayorfront, self.img_mayorback,
+                                                                       self.img_mayor_portrait, constants.FRONT,
+                                                                       (2, 2, 2, 2))
 
                chest1.objects = [ gold50, gold25, key2, gold10 ]
 
 
                chest1.objects = [ gold50, gold25, key2, gold10 ]
 
@@ -139,7 +158,20 @@ class MainGame:
                self.level1n = level.Level (cPickle.load (file (os.path.join ("levels", "level1n.dat"))),
                                objects = [ bucket ])
 
                self.level1n = level.Level (cPickle.load (file (os.path.join ("levels", "level1n.dat"))),
                                objects = [ bucket ])
 
-               # set up the interaction between levels
+               self.level1nw = level.Level (cPickle.load (file (os.path.join ("levels", "level1nw.dat"))))
+
+               self.level1ne = level.Level (cPickle.load (file (os.path.join ("levels", "level1ne.dat"))))
+
+               self.level1nee = level.Level (cPickle.load (file (os.path.join ("levels", "level1nee.dat"))))
+
+               self.level1sw = level.Level (cPickle.load (file (os.path.join ("levels", "level1sw.dat"))))
+
+               self.level1sww = level.Level (cPickle.load (file (os.path.join ("levels", "level1sww.dat"))))
+
+               self.level1ww = level.Level (cPickle.load (file (os.path.join ("levels", "level1ww.dat"))),
+                                                                               npcs = [ npc_mayor ])
+
+               # set up the interaction between levels (level exits)
                self.level1.levelright = self.level1e
                self.level1.levelleft = self.level1w
                self.level1e.levelleft = self.level1
                self.level1.levelright = self.level1e
                self.level1.levelleft = self.level1w
                self.level1e.levelleft = self.level1
@@ -148,6 +180,26 @@ class MainGame:
                self.level1w.levelright = self.level1
                self.level1.leveltop = self.level1n
                self.level1n.levelbottom = self.level1
                self.level1w.levelright = self.level1
                self.level1.leveltop = self.level1n
                self.level1n.levelbottom = self.level1
+               self.level1n.levelleft = self.level1nw
+               self.level1w.leveltop = self.level1nw
+               self.level1nw.levelright = self.level1n
+               self.level1nw.levelbottom = self.level1w
+               self.level1n.levelright = self.level1ne
+               self.level1e.leveltop = self.level1ne
+               self.level1ne.levelleft = self.level1n
+               self.level1ne.levelbottom = self.level1e
+               self.level1ne.levelright = self.level1nee
+               self.level1ee.leveltop = self.level1nee
+               self.level1nee.levelleft = self.level1ne
+               self.level1nee.levelbottom = self.level1ee
+               self.level1sw.leveltop = self.level1w
+               self.level1w.levelbottom = self.level1sw
+               self.level1sww.levelright = self.level1sw
+               self.level1sw.levelleft = self.level1sww
+               self.level1ww.levelright = self.level1w
+               self.level1ww.levelbottom = self.level1sww
+               self.level1sww.leveltop = self.level1ww
+               self.level1w.levelleft = self.level1ww
 
        def main_loop (self):
                # main game loop
 
        def main_loop (self):
                # main game loop
@@ -302,37 +354,38 @@ class MainGame:
                        return
 
                if isinstance (npc, npcs.Bulisa):
                        return
 
                if isinstance (npc, npcs.Bulisa):
-                       # interact
+                       # interact with 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
                        self.interact_npc_bulisa (npc)
 
        # interact with NPC Bulisa
        def interact_npc_bulisa (self, npc):
                # set initial response ID to none
                resp_id = None
-               # not yet started mission drawing water from well and not refused it
-               if (gamestate.flag["mission_bulisa_water_from_well"] is False
-                       and gamestate.flag["mission_bulisa_water_from_well_refused"] is False):
-                       # set the current dialogue
-                       npc.currentdialog = 0
-                       # get the response ID
+
+               # check for global game states (starting from later flags to earlier ones
+
+               # whether the drawing water from well mission completed
+               if gamestate.flag["mission_charity_informed"] is True:
+                       npc.currentdialog = 5
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
-               if (gamestate.flag["mission_bulisa_water_from_well_refused"] is True and
-                               gamestate.flag["mission_bulisa_water_from_well"] is False):
-                       # set the current dialog
+               elif gamestate.flag['mission_bulisa_water_from_well_complete'] is True:
+                       npc.currentdialog = 4
+                       resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
+               # whether the drawing water from well mission refused
+               elif gamestate.flag['mission_bulisa_water_from_well_refused'] is True:
                        npc.currentdialog = 2
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
                        npc.currentdialog = 2
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
-               # mission accepted but not completed - check if completed and set value
-               # accordingly
-               elif (gamestate.flag["mission_bulisa_water_from_well"] is True
-                       and gamestate.flag["mission_bulisa_water_from_well_complete"] is False):
+               # whether the drawing water from well mission is accepted
+               elif gamestate.flag ['mission_bulisa_water_from_well'] is True:
+                       # check if butaba has a bucket full of water
                        for invobj in self.butaba.objects:
                                if isinstance (invobj, gameobjects.Bucket) is True:
                        for invobj in self.butaba.objects:
                                if isinstance (invobj, gameobjects.Bucket) is True:
+                                       # if yes, then mission is completed accordingly
                                        if invobj.liquid == "water":
                                                gamestate.flag["mission_bulisa_water_from_well_complete"] = True
                                                self.butaba.objects.remove (invobj)
                                                key1 = gameobjects.Key (5, 3, "a chest key", self.img_key2, constants.KEY_CHEST1)
                                                self.butaba.objects.append (key1)
                                        if invobj.liquid == "water":
                                                gamestate.flag["mission_bulisa_water_from_well_complete"] = True
                                                self.butaba.objects.remove (invobj)
                                                key1 = gameobjects.Key (5, 3, "a chest key", self.img_key2, constants.KEY_CHEST1)
                                                self.butaba.objects.append (key1)
-
                                                break
                        # water mission is not completed yet
                        if gamestate.flag["mission_bulisa_water_from_well_complete"] is False:
                                                break
                        # water mission is not completed yet
                        if gamestate.flag["mission_bulisa_water_from_well_complete"] is False:
@@ -341,17 +394,25 @@ class MainGame:
                                npc.currentdialog = 3
                        # get the response ID
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
                                npc.currentdialog = 3
                        # get the response ID
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
-               # water from well mission is completed
-               elif (gamestate.flag["mission_bulisa_water_from_well_complete"]) is True:
-                       npc.currentdialog = 4
+               # Butaba hasn't been told about the initial mission yet, so tell him now
+               else:
+                       npc.currentdialog = 0
+                       # get the response ID
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
 
                        resp_id = utility.dialogue_play (self.screen, self.img_dialogue, npc, self.butaba.portrait, 0, 90)
 
-               # if response ID is 12, then drawing water from well mission is refused
-               if resp_id == "12" or resp_id == "18":
+               # NPC RESPONSES:
+               # Check each response
+
+               # Drawing water from well mission is refused
+               if resp_id == "refusedwatermission":
                        gamestate.flag["mission_bulisa_water_from_well_refused"] = True
                        gamestate.flag["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":
+               # Drawing water from well mission begins
+               elif resp_id == "acceptedwatermission":
                        gamestate.flag["mission_bulisa_water_from_well"] = True
                        gamestate.flag["mission_bulisa_water_from_well"] = True
+                       gamestate.flag["mission_bulisa_water_from_well_refused"] = False
+               # Butaba is informed about the mayor's charity
+               elif resp_id == "informedcharitymission":
+                       gamestate.flag["mission_charity_informed"] = True
                # if response ID is none
                elif resp_id is None:
                        self.status_message = "You cannot initiate a conversation with %s" % npc.charname
                # if response ID is none
                elif resp_id is None:
                        self.status_message = "You cannot initiate a conversation with %s" % npc.charname
diff --git a/npcs.py b/npcs.py
index 26732c2..12db0b1 100644 (file)
--- a/npcs.py
+++ b/npcs.py
@@ -55,3 +55,10 @@ class Bulisa (NPC):
                NPC.__init__ (self, "Bulisa", row, col, imageleft, imageright, imagefront,
                                imageback, portrait, position, movement_area, 20, dialogues, currentdialog)
 
                NPC.__init__ (self, "Bulisa", row, col, imageleft, imageright, imagefront,
                                imageback, portrait, position, movement_area, 20, dialogues, currentdialog)
 
+
+class Mayor (NPC):
+       def __init__ (self, row, col, imageleft, imageright, imagefront,
+                                       imageback, portrait, position, movement_area=(0,0,0,0),
+                                       dialogues=[], currentdialog=0):
+               NPC.__init__ (self, "Mayor", row, col, imageleft, imageright, imagefront,
+                               imageback, portrait, position, movement_area, 15, dialogues, currentdialog)
index 54d91ba..14c6b6d 100644 (file)
Binary files a/sprite/mayor-left.png and b/sprite/mayor-left.png differ