0,Öi±>Sï}WÿÍu§ğp8·d%qyÿÒ®;]ÉA¦ö¾Uúôôô”°ÂVl†3>????????????????????????@@@@@@ @@@@@@@@@ @@@@@@@@@@ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ aaaAAaaaaA!!!!!!!A !! !! !! !! a a a a a a A`0 A ! A ! A ! A !0cƒcc£cƒƒc£c a a a aaa a aaa a aaa aA!!A!A!A!A!A!A!A 0 A A A ! A ! A ! A ! A ! A ! A !0cƒcƒ£Ãcƒ£Ãcƒ£Ãããããããaaaaa aa0CƒCƒƒCƒCCCCCCC !A !A !A !A !A !A ! ! A ! A ! A ! A ! A ! A ! A !0™0@Aa0@Aa €, €,€,À4À?©ªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªš™©ªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªš™™™ªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªš™™™™™ªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªš™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™ªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™ª™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªª™™™™™™™™™™™™™™ªªªªªªªªªªªªªš™™™™™™™™™™™™™©ªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™©šªªš™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªš™™™™™™™™™™™™™ªªªªªªªªªªªªªš™™™™™™™™™™™™™ªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™ªªšªªªª™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªª™™™™™™™™™™™™™ªªªªªªªªªªªªªš™™™™™™™™™™™™©ªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™©ªªªšªªªªªš™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªš™™™™™™™™™™™™©ªªªªªªªªªªªª™™™™™™™™™™™™™ªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™ªªªªªšªªªªªªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªª™™™™™™™™™™™™©ªªªªªªªªªªªª™™™™™™™™™™™™©ªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™©ªªªªªªšªªªªªªªªš™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªš™™™™™™™™™™™™ªªªªªªªªªªªª™™™™™™™™™™™™ªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªšªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªš™™™™™™™™™™™ªªªªªªªªªªªš™™™™™™™™™™™ªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªšªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªª™™™™™™™™™™™ªªªªªªªªªªªš™™™™™™™™™™©ªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªšªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªš™™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™™ªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªšªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™ªªªªªªªªªªš™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™ªªªªªªªªªª™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™ªªªªªªªªªª™™™™™™™™™™ªªªªªªªªªš™™™™™™™™™©ªªªªªªªªªš™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™ªªªªªªªªªš™™™™™™™™™ªªªªªªªªªš™™™™™™™™™ªªªªªªªªªš™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™ªªªªªªªªª™™™™™™™™™ªªªªªªªªªš™™™™™™™™©ªªªªªªªªš™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™©ªªªjfªªªš™™™™™™™™©ªªªªªªªª™™™™™™™™™ªªªªªªªªš™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªff¦ªªª™™™™™™™™©ªªªªªªªª™™™™™™™™©ªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªff¦ªªªš™™™™™™™©ªªªªªªªš™™™™™™™™ªªªªªªªª™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™"¢ff¦ªªªª™™™™™™™™ªªªªªªªš™™™™™™™ªªªªªªªª™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™)bfªªªªªš™™™™™™™ªªªªªªªš™™™™™™©ªªªªªªª™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™)!¢ªªªªªª™™™™™™™ªªªªªªª™™™™™™™ªªªªªªª™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªúÿÿ™™™™™)‘™ªªªªªªš™™™™™™©ªªªªªª™™™™™™©ªªªªªª™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÿ/""ÿŸ™U•yA™™ªªªªªª™™™™™ùÿÿÿªªªª™™™™™™ªªªªªªš™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªú""""3ò_UUw3”™ùÿÿªªªÿÿÿ™ù?"2#ÿ¯ªš™™™™™©ªªªªªš™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªª/"""""3SUUw733”™/23¯ªú"3#Ÿ/3#2#2òªš™™™™™ªªªªªš™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªª/""""""RUUw733ôš/"2¯ªú"2ó™?3#2#2#¯™™™™™©ªªªªš™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªú""""""""U¥zw3Cù"""¯ª?#2óù"332#3#ò™™™™™ªªªªš™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªú"""""""""òªªš™œù#""ò©?#"ò/"23"#3#ò™™™™©ªªªª™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªª/#""""""""òªŠˆÚ™ù33"òù23#ò?#23"#3"ò™™™™ªªªª™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™©ªªªªªªªªªªªªªªªªªªªªªªªª?33ÿÿÿ""""ò¯ˆˆØªú33#òù333ò?#ÿÿÿÿ3"ò™™™ªªªª™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªª/òÿÿÿ¯/"""ÿ¯ˆˆøª?333ò/233òÿÿÿÿÿÿ2"Ÿ™™©ªªª™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªú¯?33¢ú""òÿÿˆˆø¯?333ò/"33óÿÿ"3™ú#"™™™ªªª™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªª?33¯ú3#òÿÿˆÿÿ"333ó3"23óÿ/#2ù/#ò™™©ªªš™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªú233¯?3òÿÿßÿÿÿÿ/"23ó3#"3ó©?3"/#óŸ™™ªªš™™™©ªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ù333ÿ333ÿÿüÿÿÿÿ/"""333""Ÿ™/3ò3##ò™©ªš™™™ªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ù33ó2333óßüÿÿÿÿ/"""2333"Ÿù32ó3###Ÿªš™™©ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/33ó3333òÿÿÿÿÿÿÿ"/"""233¯ú32óÿ###òš™™ªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/"2òÿ333ÿÏÿÿÿÿÿÿ3?"""/23¯/33ÿÿ"23ò™©ªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/""Ÿ™/""ÿÿÿÿÿÿÿÿ3ÿ3#ò/""¯/23¯ù"32òªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/""Ÿ™/""ÿüÿÿÿÿÿÿ3ÿ33ó3"ò™?33Ÿú#3#ò™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ù"""Ÿù"""ÿıÿÿÿÿÿÿ3ÿ33ò33ó™/2#Ÿ/#32ó™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ù"""Ÿÿ"""ÿşÿÿÿÿÿÿ"ÿ"3ÿ33óù"""ÿ##ÿÿÿÿÿÿŸ™™™™™™™™™ùŸùÿÿÿ™™™ÿÿÿŸ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/""òù""""ÿÿÿÿÿÿÿÿòù"òù""òú33#"#ó23#""2󪪚™™™™™ù?ó/333Ÿ™ù333ò™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/""òÿ""""ÿÿÿÿÿÿÿ/òù"ò/""ò/""332ÿ#""333óúÿÿÿ¯ª™ù?33/333Ÿ™ÿ333Ÿ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™?33#33333ÿÿÿÿÿÿÿ?óú2ò?33ò/33333?333333¯?333óªª/333ò33#Ÿù233òŸ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™?33333333òÿÿÿÿÿÿ3¯ú2¯?33ó933"""2333"""ÿ""""òªú""""ÿ"""Ÿù"""ÿ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ù33333333#ÿÿÿÿÿÿÿ3¯ú"¯?3"ÿ)""ÿÿÿ232233óÿ3#""òª/""""ÿ""òª/""òŸ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ù3333333òÿÿÿÿÿÿÿ?3¯úò¯ÿÿÿŸùÿÿÿÿÿ33#3#ÿÿ/3ó33òú""""ò/""òú"""ÿ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/33333#ÿÿÿÿÿÿÿÿÿÿÿªúÿªšÿÿ™©ÿÿš™)""33#ÿÿ?3ò3"ó?33ÿ/ò/""òú""ò¯ªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™/333óÿÿÿÿÿ¯úÿÿÿÿÿÿªú¯™™™™™ªªª™™ùÿ?23ò™ª""ÿ#ÿó233ÿ?ÿ?#"ò/""ÿªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªª?"òÿÿÿÿÿÿªªªÿÿÿÿªªªš™™™™™ªªªš™™ùÿ?#3ó™ùóòÿÿ?ó33ó¯ÿÿ?33ÿ23#¯ªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªÿÿÿÿÿÿÿ¯ªªªªªªªªªªš™™™™™ªªªª™™™©ú232ò™/3ÿÿÿ"ò"3ó™úú333ÿ33ò¯ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªúÿÿÿÿ¯ªªªªªªªªªªª™™™™™™ÿÿÿÿŸ™™™©ú22#ò™/2¯ªú"/""ò™™ú333?33ÿªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªÿÿ¯ªªªªªªªªªªªš™™™™™™©/"""ò™™™©ú23#Ÿù"ò¯ªú#"""ò™™ù33323󯪪ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™©ª/33#"Ÿ™™ªú##3Ÿù3ò¯ªú?"""ò™™ù23333ÿªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™ªª?33""Ÿ™™ªú##ó™?3ÿ™ú/323"ÿ™™/""333¯ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™ªªª?3#"3Ÿ™™ª?##òš/3ŸŸ/ÿ3233Ÿ™Ÿ/""""2󪪪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™ªªªª?#"23ÿ™©ª?#3òú"òÿó/ò2233¯ùò/""ò"""¯ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™©ªªªªÿ""3#"Ÿ©ÿ2#3òú3ÿ3ó3""233¯?ó/""ÿ/""Ÿªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™©ªªªªªú"23"2óÿ#2#2ÿ?3"2#3#"233ÿ2#/""ÿ/""ò™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™ªªªªªªú/33"2#"#2#òÿ/3#"333"/23"33/3"ÿù"""Ÿ™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™ªªªªªªª™/3#"3#"#2#ÿÿ"33"233#/"2333ó3#ÿù"""ò™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™ªªªªªªªš™ÿ2"23"2#2óÿÿ"23òÿÿ33ò""233ÿ3#ÿ™/""ò™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™©ªªªªªªª™™ù/"23"2#2ÿª?"23ÿÿ/33ó"""3óÿ3óŸ™/"""Ÿ™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™©ªªªªªªªš™™™ÿ"3#"3#ò¯ª/"""ÿÿÿ""ò/"""ÿ?3ó¯™ù3""Ÿ™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™©ªªªªªªªª™™™™ùÿ/#"3óÿªªúÿÿÿŸ™ùÿÿÿÿÿÿÿ¯ÿÿÿªšùÿÿÿŸ™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™ªªªªªªªªš™™™™™ÿÿÿÿÿÿ¯ªªúÿÿÿ™™ùÿÿÿÿÿÿÿªúÿ¯ªªúÿÿÿ™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™ªªªªªªªªª™™™™™™™ùÿÿÿ¯ªªªªªª™™™™™™™™™ªªªªªªªªªš™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªš™™™™™™™™™ªªªªªªªªªš™™™™™™™™©ªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªª™™™™™™™™™™ªªªªªªªªªš™™™™™™™™™ªªªªªªªªªª™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™©ªªªªªªªªªš™™™™™™™™™©ªªªªªªªªªš™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™ªªªªªªªªªª™™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™ªªªªªªªªªªš™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™ªªªªªªªªªªš™™™™™™™™™™©ªªªªªªªªªª™™™™™™™™™™©ªªªªªªªªªªš™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªšªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™ªªªªªªªªªªª™™™™™™™™™™™ªªªªªªªªªªª™™™™™™™™™™™ªªªªªªªªªªªš™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªšªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™Ì¬ªªªªªªªªªÊœ™™™™™™™™™™™ªªªªªªªªªªªš™™™™™™™™™™©ªªªªªªªªªªª™™™™™™Éœ™™™™™™™™™©ªªªªªªªªªªªªªšªªªªªªªªªªªªš™™™™™™™™™™™™™™™™ÉüÿÊ̬Ê̬ʬʪÿÉÌ™™™É̜̙œÌ̪ªªÊ̪Ê̬ÌÌ™ÉÌœÉÌœÉÌ™ªªÌ̪Ê̪̪¬ÌÌ™™™™™ÿÉ̙̙œÉÌ™Ì̪ªªªªªªªªªªªšªªªªªªªªªªª™™™™™™™™™™™™™™™™™™ÉÿÊÏÿÿÊÿÿÊÿÊÏœÌÿŸ™™ÌÿÿüŸüüÿ¯ªªÌÿ¯ÌÿÿüÿŸœÿÿÌÿÿÌÿŸ©ªüÿ¯Ìÿ¯ü¯üüÿŸ™™™ÉœÌÿŸüŸüÌÿŸüÿŸªªªªªªªªªªªšªªªªªªªªªª™™™™™™™™™™™™™™™™™™™ÊÿÌÏÿÊÏÿÊÏÿÊÏÿüŸÿ™™ùÿœüŸüü¯úªªü¯ÿúÿ¬üŸüüÉÿüÿ™üŸÿ™ªü¯üü¯üü¯üü¯ú™™™ÉÿüŸüüŸüüŸÿüŸù™©ªªªªªªªªªšªªªªªªªªš™™™™™™™™™™™™™™™™™™™ªÊÿÿÏÿ¬Ïÿ¬¯ÿ¬Ïÿùÿ™™™ÌüÿùÏùü¯ªªªúÿªÌüÿüÏùùÌÿùÿœùÿ™™©üÏúúÏúúÏúü¯ªš™œÉÿùÏùùÏùùÿ™üŸ™™™™ªªªªªªªªšªªªªªªªš™™™™™™™™™™™™™™™™™™™©ªªÿªÏÿÿÊÿÿªúÿ™ÿ™ÿŸ™™ùÿŸ™ÿ¯ú¯ªªªªÿ¯úÿ¯üÿŸ™ÿÿ™ÿÿ™ÿŸ™™üÿ¯ªÿ¯ªÿ¯ú¯ªª™ùÌÿ™ÿŸ™ÿŸ™ÿŸùŸ™™™™™ªªªªªªªšªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªÿªªÿªªª™™™™™™™™™™™™™ªªªªªªªªªªªªúŸ™™™™™™™™™™™™ù¯ªªªªªªªªªªªª™ÿŸ™™™™™™™™™™™™™™™™™©ªªªªªšªªªªš™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªš™™™™™™™™™™™™™ªªªªªªªªªªªªªš™™™™™™™™™™™™™ªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™ªªªªšªªªš™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªª™™™™™™™™™™™™™™ªªªªªªªªªªªªªª™™™™™™™™™™™™™©ªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™ªªªšªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªš™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™ªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™©ªšš™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªªªªªªª™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™š™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªš™™™™™™™™™™™™™™ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªš™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™ªªªªªªªªªªªªªªªªªªªªªªš™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªª™™™™™™™™™™™™™™™™™™™™™™©ªªªªªªªªªªªªªªªªªªªªªªš™™™,0,]']±>Sï}WÿÍu§ğp8·d%qy)6o;]ÉA¦ösï÷ôôô”°ÂVl†3 3 then g.currentAnimation = 1 end if collide(p.x,p.y,p.w,p.h,g.x,g.y,g.w,g.h) then sfx(02, 'A-5') table.remove(listeGolden,n) score = score + bombscore * multiplicateur compteurBonus = compteurBonus - bombscore * multiplicateur end end end function drawGolden() for k,g in pairs(listeGolden) do spr(g.anim[math.floor(g.currentAnimation)],g.x,g.y,0,1,0,0,2,2) end end function updateBonus() if compteurBonus <=0 then local diceBonus = math.random(1,100) local bonusSpr = nil local type = nil if diceBonus <= 66 then pType = "B" -- remettre B bonusSpr = 360 elseif diceBonus > 66 and diceBonus <= 95 then pType = "E" bonusSpr = 416 elseif diceBonus > 95 then pType = "S" bonusSpr = 424 end repeat listeSuperBonus = {} local xBonus = math.random(2,20) -- en map local yBonus = math.random(2,14) -- en map local cX = cam.x/8 local cY = cam.y/8 creerBonus(pType,bonusSpr,xBonus*8,yBonus*8) until mget(xBonus+cX,yBonus+cY) == 0 and mget(xBonus+1+cX,yBonus+cY) == 0 and mget(xBonus+cX,yBonus+1+cY) == 0 and mget(xBonus+1+cX,yBonus+1+cY) == 0 and mget(xBonus+2+cX,yBonus+cY) == 0 and mget(xBonus+cX,yBonus+2+cY) == 0 and mget(xBonus+2+cX,yBonus+2+cY) == 0 and mget(xBonus+1+cX,yBonus+2+cY) == 0 and mget(xBonus+2+cX,yBonus+1+cY) == 0 --until mget(xBonus,yBonus) == 0 and mget(xBonus+1,yBonus) == 0 and mget(xBonus,yBonus+1) == 0 and mget(xBonus+1,yBonus+1) == 0 and mget(xBonus-1,yBonus) == 0 and mget(xBonus,yBonus-1) == 0 and mget(xBonus-1,yBonus-1) == 0 end for n=#listeSuperBonus,1,-1 do local sb = listeSuperBonus[n] local p = player sb.currentAnimation = sb.currentAnimation + 0.2 if sb.type == "P" then sb.maxAnim = 3 end if sb.currentAnimation > sb.maxAnim then sb.currentAnimation = 1 end sb.x = sb.x + sb.vx sb.y = sb.y + sb.vy if solid(sb.x+sb.vx+cam.x,sb.y+sb.vy+cam.y) or solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+sb.vy+cam.y) or solid(sb.x+sb.vx+cam.x,sb.y+(sb.h-1)+sb.vy+cam.y) or solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+(sb.h-1)+sb.vy+cam.y) then sb.vx= -sb.vx end if solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/2 +cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/4 +cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/1.27 + cam.y)then sb.vx = -sb.vx end if solid(sb.x + sb.vx+cam.x,sb.y + sb.vy + sb.h/2 + cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/4 + cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/1.27 + cam.y)then sb.vx = -sb.vx end if solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+(sb.h-1)/2+sb.vy + cam.y) then sb.vy = -sb.vy end if sb.vy > 0 and solid(sb.x+cam.x,sb.y+sb.h+sb.vy + cam.y) or solid(sb.x+(sb.w-1)+cam.x,sb.y+sb.h+sb.vy + cam.y) then sb.vy= -sb.vy end if sb.vy<0 and (solid(sb.x+sb.vx+cam.x,sb.y+sb.vy-1 + cam.y) or solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+sb.vy-1 + cam.y)) then sb.vy=-sb.vy end if collide(p.x,p.y,p.w,p.h,sb.x,sb.y,sb.w,sb.h) then if sb.type == "B" then multiplicateur = multiplicateur + 1 sfx(05, 'G-5') if multiplicateur >= 5 then multiplicateur = 5 end elseif sb.type == "E" then p.vie = p.vie + 1 sfx(05, 'G-5') elseif sb.type == "S" then continue = continue + 1 sfx(05, 'G-5') end table.remove(listeSuperBonus,n) end end end function updateBonusP() for n=#listeSuperBonusP,1,-1 do local sb = listeSuperBonusP[n] local p = player sb.currentAnimation = sb.currentAnimation + 0.2 if sb.currentAnimation > sb.maxAnim + 1 then sb.currentAnimation = 1 end sb.x = sb.x + sb.vx sb.y = sb.y + sb.vy if solid(sb.x+sb.vx+cam.x,sb.y+sb.vy + cam.y) or solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+sb.vy + cam.y) or solid(sb.x+sb.vx+cam.x,sb.y+(sb.h-1)+sb.vy + cam.y) or solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+(sb.h-1)+sb.vy + cam.y) then sb.vx= -sb.vx end if solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/2 + cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/4 + cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/1.27 + cam.y)then sb.vx = -sb.vx end if solid(sb.x + sb.vx+cam.x,sb.y + sb.vy + sb.h/2 + cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/4 + cam.y) or solid(sb.x + sb.vx + sb.w+cam.x,sb.y + sb.vy + sb.h/1.27 + cam.y)then sb.vx = -sb.vx end if solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+(sb.h-1)/2+sb.vy + cam.y) then sb.vy = -sb.vy end if sb.vy > 0 and solid(sb.x+cam.x,sb.y+sb.h+sb.vy + cam.y) or solid(sb.x+(sb.w-1)+cam.x,sb.y+sb.h+sb.vy + cam.y) then sb.vy= -sb.vy end if sb.vy<0 and (solid(sb.x+sb.vx+cam.x,sb.y+sb.vy-1 + cam.y) or solid(sb.x+(sb.w-1)+sb.vx+cam.x,sb.y+sb.vy-1 + cam.y)) then sb.vy=-sb.vy end if collide(p.x,p.y,p.w,p.h,sb.x,sb.y,sb.w,sb.h) then sfx(02, 'A-5') for k,v in pairs(listeMonster) do v.state = "golden" birdIsPresent = false for k,z in pairs(listeZoneSpawn) do z.active = true z.timer = math.random(20,60)/10 end end table.remove(listeSuperBonusP, n) end end end function drawBonus() for k,v in pairs(listeSuperBonus) do spr(v.anim[math.floor(v.currentAnimation)],v.x,v.y,0,1,0,0,2,2) end end function drawBonusP() for k,v in pairs(listeSuperBonusP) do spr(v.anim[math.floor(v.currentAnimation)],v.x,v.y,0,1,0,0,2,2) end end function updateBomb() for n=#listeBomb, 1, -1 do local b = listeBomb[n] if collide(player.x, player.y, player.w, player.h, b.x, b.y, b.w, b.h) then if b.isLight == true then rectangleMultiplicateur = rectangleMultiplicateur + 0.25 score = score + bombScoreLght * multiplicateur compteurBonus = compteurBonus - bombScoreLght * multiplicateur else score = score + bombscore * multiplicateur compteurBonus = compteurBonus - bombscore * multiplicateur end sfx(02, 'A-5') bombLeft = bombLeft - 1 table.remove(listeBomb, n) for m=1,#listeBomb do local b = listeBomb[m] b.ordre = m --trace('b.ordre = '..b.ordre) --trace('ordreBomb = '..ordreBomb) end end if b.ordre == 1 then b.isLight = true else b.isLight = false end if b.isLight == true then creerParticules("bomb",b.x + 5 ,b.y, (math.random(-200,200))/100, (math.random(-200,200))/100, math.random(5,10)/20,0) end end end function drawBomb() for k,v in pairs(listeBomb) do spr(v.spr, v.x, v.y,0) end end listeMonster = {} function createMonster(pType, pX, pY) monster = {} monster.type = pType monster.x = pX monster.y = pY monster.flip = 1 monster.currentAnimation = 1 monster.state = nil monster.supprime = false monster.inoffensive = true monster.timerInoffensive = 1 monster.animation = {} if monster.type == "squelette" then --animation et dimension de squelette monster.vx = 0 monster.vy = 0 monster.w = 10 monster.h = 14 monster.timer = 0.5 monster.vitesse = 0.5 monster.animation.walk = {} monster.animation.walk[1] = 354 monster.animation.walk[2] = 356 monster.animation.walk[3] = 358 monster.animation.fall = {} monster.animation.fall[1] = 334 monster.animation.fall[2] = 352 end if monster.type == "grayBall" then monster.vx = 0.25 monster.vy = 0.5 monster.w = 14 monster.h = 14 monster.vitesse = (math.random(5,10)/10) monster.animation[1] = 320 monster.animation[2] = 322 monster.animation[3] = 324 monster.animation[4] = 326 monster.animation[5] = 328 end if monster.type == "ufo" then monster.vx = 0.5 monster.vy = 1 monster.w = 16 monster.h = 10 monster.vitesse = (math.random(5,10)/10) monster.animation[1] = 384 monster.animation[2] = 386 monster.animation[3] = 388 monster.animation[4] = 390 monster.animation[5] = 392 monster.animation[6] = 394 end if monster.type == "bird" then --animation et dimension de bird monster.vx = 0 monster.vy = 1 monster.w = 16 monster.h = 15 monster.timer = 0.5 monster.isMoving = false monster.animation.side = {} monster.animation.side[1] = 296 monster.animation.side[2] = 298 monster.animation.side[3] = 300 monster.animation.side[4] = 298 monster.animation.face = {} monster.animation.face[1] = 302 monster.animation.face[2] = 330 monster.animation.face[3] = 332 monster.animation.face[4] = 330 end table.insert(listeMonster,monster) end function spawnBird() spawn = math.random(1,4) if spawn == 1 then for n=1,100 do creerParticules("spawn",16 + 8,16 + 8,math.random(-2,2),math.random(-2,2),math.random(1,5)/10,02) end createMonster("bird",16,16) elseif spawn == 2 then for n=1,100 do creerParticules("spawn",160 + 8,16 + 8,math.random(-2,2),math.random(-2,2),math.random(1,5)/10,02) end createMonster("bird",160,16) elseif spawn == 3 then for n=1,100 do creerParticules("spawn",16 + 8,112 + 8,math.random(-2,2),math.random(-2,2),math.random(1,5)/10,02) end createMonster("bird",16,112) elseif spawn == 4 then for n=1,100 do creerParticules("spawn",160 + 8,112 + 8,math.random(-2,2),math.random(-2,2),math.random(1,5)/10,02) end createMonster("bird",160,112) end end function collideMonster() for n=#listeMonster,1,-1 do local m = listeMonster[n] local p = player if m.supprime == true then table.remove(listeMonster,n) end end end function updateMonster() for n=#listeMonster,1,-1 do local m = listeMonster[n] local p = player m.x = m.x + m.vx m.y = m.y + m.vy oldX = m.x oldY = m.y if m.inoffensive == true then -- les monstres sont inoffensifs quand ils spawnent m.timerInoffensive = m.timerInoffensive - dt end if m.timerInoffensive <= 0 then m.timerInoffensive = 0 m.inoffensive = false end if collide(p.x,p.y,p.w,p.h,m.x+2,m.y+2,m.w-6,m.h-5) and m.inoffensive == false then p.vie = p.vie - 1 m.supprime = true player.isAlive = false birdIsPresent = false for k,z in pairs(listeZoneSpawn) do z.active = true z.timer = math.random(20,60)/10 end end if m.vx > 0 then m.flip = 1 else m.flip = 0 end if m.state == "golden" then createGolden(m.x,m.y) table.remove(listeMonster,n) end if m.type == "squelette" then m.vx = m.vitesse if m.vitesse < 0 then m.flip = 1 else m.flip = 0 end if m.vy > 0 then m.state = "fall" else m.state = "walk" end if m.state == "fall" then m.vx = 0 else m.vx = m.vitesse end m.currentAnimation = m.currentAnimation + 0.2 if m.currentAnimation >= 3 then m.currentAnimation = 1 end if solid(m.x+m.vx+cam.x,m.y+m.vy+cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+m.vy+cam.y) or solid(m.x+m.vx+cam.x,m.y+(m.h-1)+m.vy+cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+(m.h-1)+m.vy+cam.y) then m.vitesse = -m.vitesse -- teste de la position horizontale end if solid(m.x+cam.x,m.y+m.h+m.vy+cam.y) or solid(m.x+(m.w-1)+cam.x,m.y+m.h+m.vy+cam.y) then m.vy=0 -- teste de la position verticale else m.vy = m.vy + gravity/2 end if m.y >= 13*8 then for p=1,100 do creerParticules("spawn",m.x + 8,m.y + 8,math.random(-2,2),math.random(-2,2),math.random(1,5)/10,math.random(1,7)) end local dice = math.random(0,1) if dice == 0 then createMonster("grayBall", m.x,m.y) else createMonster("ufo", m.x,m.y) end m.supprime = true end end if m.type == "grayBall" then m.currentAnimation = m.currentAnimation + 0.2 if m.currentAnimation >= 6 then m.currentAnimation = 1 end if solid(m.x+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+m.vx+cam.x,m.y+(m.h-1)+m.vy + cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+(m.h-1)+m.vy + cam.y) then if p.x < m.x then m.vx= -math.abs(m.vx) m.x = oldX else m.vx = math.abs(m.vx) m.x = oldX end end if solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/2 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/4 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/1.27 + cam.y)then m.vx = -m.vx end if solid(m.x + m.vx+cam.x,m.y + m.vy + m.h/2 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/4 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/1.27 + cam.y)then m.vx = -m.vx end if solid(m.x+(m.w-1)+m.vx+cam.x,m.y+(m.h-1)/2+m.vy + cam.y) then m.vy = -m.vy m.y = oldY end if m.vy > 0 and solid(m.x+cam.x,m.y+m.h+m.vy + cam.y) or solid(m.x+(m.w-1)+cam.x,m.y+m.h+m.vy + cam.y) then m.vy= -m.vy m.y = oldY end if m.vy<0 and (solid(m.x+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+m.vy + cam.y)) then m.vy=-m.vy m.y = oldY end end if m.type == "ufo" then m.currentAnimation = m.currentAnimation + 0.2 if m.currentAnimation >= 6 then m.currentAnimation = 1 end if solid(m.x+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+m.vx+cam.x,m.y+(m.h-1)+m.vy + cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+(m.h-1)+m.vy + cam.y) then if p.x < m.x then m.vx= -math.abs(m.vx) m.x = oldX else m.vx = math.abs(m.vx) m.x = oldX end end if solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/2 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/4 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/1.27 + cam.y)then m.vx = -m.vx end if solid(m.x + m.vx+cam.x,m.y + m.vy + m.h/2 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/4 + cam.y) or solid(m.x + m.vx + m.w+cam.x,m.y + m.vy + m.h/1.27 + cam.y)then m.vx = -m.vx end if solid(m.x+(m.w-1)+m.vx+cam.x,m.y+(m.h-1)/2+m.vy + cam.y) then m.vy = -m.vy m.y = oldY end if m.vy > 0 and solid(m.x+cam.x,m.y+m.h+m.vy + cam.y) or solid(m.x+(m.w-1)+cam.x,m.y+m.h+m.vy + cam.y) then m.vy= -m.vy m.y = oldY end if m.vy<0 and (solid(m.x+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+(m.w-1)+m.vx+cam.x,m.y+m.vy + cam.y)) then m.vy=-m.vy m.y = oldY end end if m.type == "bird" then m.currentAnimation = m.currentAnimation + 0.1 if m.currentAnimation >= 5 then m.currentAnimation = 1 end if m.state == nil then m.state = "think" end if m.state == "think" then m.timer = m.timer - dt m.vx = 0 m.vy = 0 m.isMoving = false if m.timer <= 0 then if math.abs(p.x-m.x) > math.abs(p.y-m.y) then m.state = "movingH" m.timer = 0.5 else m.state = "movingV" m.timer = 0.5 end end elseif m.state == "movingH" and m.timer > 0 then m.timer = m.timer - dt if m.timer <= 0 then m.timer = 1 m.state = "think" end if p.x - 8 > m.x then if solid(m.x + m.vx + cam.x + m.w, m.y+m.vy-1 + cam.y ) or solid(m.x + m.vx + cam.x + m.w, m.y+m.vy + m.h-1 + cam.y ) or solid(m.x + m.vx + cam.x + m.w, m.y+m.vy + (m.h/2) + cam.y) then m.vx = 0 else m.vx = 1 end elseif p.x + 8 < m.x then if solid(m.x + m.vx + cam.x, m.y+m.vy-1 + cam.y) or solid(m.x + m.vx + cam.x, m.y+m.vy + m.h-1 + cam.y) or solid(m.x + m.vx + cam.x, m.y+m.vy + (m.h/2) + cam.y) then m.vx = 0 else m.vx = -1 end end elseif m.state == "movingV" and m.timer > 0 then m.timer = m.timer - dt if m.timer <= 0 then m.timer = 1 m.state = "think" end if p.y > m.y then if solid(m.x+m.vx+cam.x,m.y+m.vy + m.h + cam.y) or solid(m.x+m.vx+cam.x + (m.w-1),m.y+m.vy+m.h + cam.y) or solid(m.x+m.vx+cam.x+m.w/2,m.y+m.vy+m.h-1 + cam.y) then m.vy = 0 else m.vy = 1 m.flip = 1 end elseif p.y < m.y then if solid(m.x+m.vx+cam.x,m.y+m.vy + cam.y) or solid(m.x+m.vx+cam.x + (m.w-1),m.y+m.vy + cam.y) or solid(m.x+m.vx+cam.x+m.w/2,m.y+m.vy + cam.y) then m.vy = 0 else m.vy = -1 m.flip = 0 end end end end end end function playerIsDead() if player.isAlive == false then player.spr = 292 listeParticules = {} listeMonster = {} player.rotate = player.rotate + ((dt)*10) if player.rotate >= 15 then if player.vie > 0 then player.isAlive = true player.rotate = 0 player.x = 80 player.y = 56 else currentScene = "gameOver" etatSpriteGameover = false musicIsPlaying = false end end end end function drawMonster() for k,m in pairs(listeMonster) do if m.inoffensive == false or (m.inoffensive == true and clignote > 5 ) then if m.type == "grayBall" then spr(m.animation[math.floor(m.currentAnimation)],m.x,m.y,0,1,0,0,2,2) --on dessine la boule grise elseif m.type == "ufo" then spr(m.animation[math.floor(m.currentAnimation)],m.x,m.y,0,1,0,0,2,2) --on dessine l ufo elseif m.type == "squelette" then local animSquelette if m.vy == 0 then animSquelette = m.animation.walk[math.floor(m.currentAnimation)] -- on dessine le squelette qui marche else animSquelette = m.animation.fall[math.floor(m.currentAnimation)] -- on dessine le squelette qui tombe end spr(animSquelette,m.x,m.y,0,1,m.flip,0,2,2) elseif m.type == "bird" then if m.state == "movingH" then spr(m.animation.side[math.floor(m.currentAnimation)],m.x,m.y,0,1,m.flip,0,2,2) else spr(m.animation.face[math.floor(m.currentAnimation)],m.x,m.y,0,1,m.flip,0,2,2) end end end end end listeParticules = {} function creerParticules(pType, pX, pY, pVx, pVy, pVie, pColor) particule = {} particule.type = pType particule.x = pX particule.y = pY particule.vx = pVx particule.vy = pVy particule.vie = pVie particule.color = pColor if particule.type == "superSaut" then particule.rayon = 4 elseif particule.type == "intro" then particule.rayon = 2 end table.insert(listeParticules,particule) end function drawParticule() for k,v in pairs(listeParticules) do if v.type == "bomb" then pix(v.x,v.y,v.color) elseif v.type == "intro" then circ(v.x,v.y,v.rayon,v.color) elseif v.type == "spawn" then circ(v.x,v.y,math.random(10,20)/10,v.color) elseif v.type == "saut" then -- particules pour "saut" à travailler circ(v.x, v.y,math.random(3,30)/10,v.color) elseif v.type == "superSaut" then -- particules pour "saut" à travailler circ(v.x, v.y,v.rayon,v.color) end end end function updateParticules() for n=#listeParticules,1,-1 do p = listeParticules[n] p.x = p.x+p.vx p.y = p.y+p.vy if p.type == "bomb" then p.color = p.color+1 elseif p.type == "superSaut" then p.rayon = p.rayon - 0.3 elseif p.type == "intro" then p.color = p.color + 1 end p.vie = p.vie - dt * 3 if p.vie < 0 then table.remove(listeParticules,n) end end end function solid(x,y) return solids[mget((x)//8,(y)//8)] end function movePlayer() if solid(player.x+player.vx+cam.x,player.y+player.vy+cam.y) or solid(player.x+(player.w-1)+player.vx+cam.x,player.y+player.vy+cam.y) or solid(player.x+player.vx+cam.x,player.y+(player.h-1)+player.vy+cam.y) or solid(player.x+(player.w-1)+player.vx+cam.x,player.y+(player.h-1)+player.vy+cam.y) then player.vx=0 -- teste de la position horizontale end if solid(player.x+cam.x,player.y+player.h+player.vy+cam.y) or solid(player.x+(player.w-1)+cam.x,player.y+player.h+player.vy+cam.y) or solid(player.x+7+cam.x,player.y+player.h+player.vy+cam.y) then player.vy=0 -- teste de la position verticale if shakeScreen == true then timerShake = MAXTIMERSHAKE end if player.isJumping == true then creerParticules("saut", player.x + 5, player.y + player.h, -1, 0, 0.5, 12) creerParticules("saut", player.x + 9, player.y + player.h, 1, 0, 0.5, 12) end player.isJumping = false else player.vy = player.vy + gravity end if player.vy<0 and (solid(player.x+player.vx+cam.x,player.y+player.vy+cam.y) or solid(player.x+(player.w-1)+player.vx+cam.x,player.y+player.vy+cam.y)) then player.vy=0 end player.y = player.y + player.vy player.x = player.x + player.vx if player.vx == 0 then player.spr = player.animation.idle currentAnimation = 1 end if player.vy < 0 and player.vx == 0 then player.spr = player.animation.jump end if player.vy > 0 and player.isJumping == true then player.spr = player.animation.landingV end if player.vy > 0 and player.vy > 1 then player.isJumping = true if btn(2) or btn(3) then player.spr = player.animation.landingH else player.spr = player.animation.landingV end end if btn(2) then player.vx= -1 if player.vy < 0 and player.isJumping == true then player.spr = player.animation.jumpH elseif player.vy >= 0 and player.isJumping == true then player.spr = player.animation.landingH else player.spr = player.animation.walk[math.floor(currentAnimation)] end player.flip = 1 currentAnimation = currentAnimation + speedAnimation if currentAnimation > 5 then currentAnimation = 1 end elseif btn(3) then player.vx= 1 if player.vy < 0 and player.isJumping == true then player.spr = player.animation.jumpH elseif player.vy >= 0 and player.isJumping == true then player.spr = player.animation.landingH else player.spr = player.animation.walk[math.floor(currentAnimation)] end player.flip = 0 currentAnimation = currentAnimation + speedAnimation if currentAnimation > 5 then currentAnimation = 1 end else player.vx = player.vx * 0.8 currentAnimation = 1 end if math.abs(player.vx) <= 0.01 then player.vx = 0 end if btn(4) and btn(0) and player.vy < -1 then creerParticules("superSaut",(player.x + 8), (player.y + player.h + 2),0,1,math.random(1,2),12) end if btnp(4) and player.isJumping == false then sfx(00, 'C#5') if btn(0) then player.vy = player.superJump player.isSuperJumping = true else player.vy =player.jump end score = score + jumpscore * multiplicateur compteurBonus = compteurBonus - jumpscore * multiplicateur end if player.isJumping == true and btnp(4) then player.vy = 0 end if player.vy < 0 then player.isJumping = true end end function updateRainbow() rainbow = rainbow + 0.10 if rainbow > 15 then rainbow = 1 end if rectangleMultiplicateur > 2.25 then rectangleMultiplicateur = 0 repeat listeSuperBonusP = {} local xBonus = math.random(2,20) -- en map local yBonus = math.random(2,14) -- en map local cX = cam.x/8 local cY = cam.y/8 creerBonusP(xBonus*8,yBonus*8) until mget(xBonus+cX,yBonus+cY) == 0 and mget(xBonus+1+cX,yBonus+cY) == 0 and mget(xBonus+cX,yBonus+1+cY) == 0 and mget(xBonus+1+cX,yBonus+1+cY) == 0 and mget(xBonus+2+cX,yBonus+cY) == 0 and mget(xBonus+cX,yBonus+2+cY) == 0 and mget(xBonus+2+cX,yBonus+2+cY) == 0 and mget(xBonus+1+cX,yBonus+2+cY) == 0 and mget(xBonus+2+cX,yBonus+1+cY) == 0 --until mget(xBonus,yBonus) == 0 and mget(xBonus+1,yBonus) == 0 and mget(xBonus,yBonus+1) == 0 and mget(xBonus+1,yBonus+1) == 0and mget(xBonus+2,yBonus) == 0 and mget(xBonus,yBonus+2) == 0 and mget(xBonus+2,yBonus+2) == 0 end end function collide(x1,y1,w1,h1, x2,y2,w2,h2) return x1 < x2+w2 and x2 < x1+w1 and y1 < y2+h2 and y2 < y1+h1 end function scan() local z = 230 -- zone deSpawn (sprite230) local rg = 192 local rd = 193 local yDebut, yFin local offsetLevel -- pour le changement de level en 2eme ligne if level <= 8 then yDebut = 1 yFin = 17 offsetLevel = 1 elseif level >8 and level <= 16 then yDebut = 18 yFin = 34 offsetLevel = 9 elseif level >16 and level <= 24 then yDebut = 35 yFin = 51 offsetLevel = 17 elseif level == 25 then yDebut = 52 yFin = 68 offsetLevel = 25 end for i = 1+((level-offsetLevel)*30),23+((level-offsetLevel)*30) do for ii = yDebut,yFin do -- create bomb for b = 232,255 do if mget(i,ii) == b then creerBomb((i-cam.x/8)*8,(ii-cam.y/8)*8,b) mset(i,ii,0) end end -- create zoneSpawn if mget(i,ii) == z then creerZoneSpawn((i-cam.x/8)*8,(ii-cam.y/8)*8) mset(i,ii,0) end -- create zoneRebond Gauche if mget(i,ii) == rg then CreerZoneRebond((i-cam.x/8)*8,(ii-cam.y/8)*8,"gauche") mset(i,ii,0) end -- create zoneRebond Droit if mget(i,ii) == rd then CreerZoneRebond((i-cam.x/8)*8,(ii-cam.y/8)*8,"droit") mset(i,ii,0) end end end table.sort(listeBomb, function(a,b) return a.ordre3 and n<=6 then y = 74 + 16 n = n - 3 else y = 74 + 16 + 16 n = n - 3 - 3 end spr(257,188+((n-1)*17),y,0,1,0,0,2,2) end print("x"..multiplicateur,207,32) print("CONTINUE : ",188,122,2) print(continue,188,130,12) end scan() end function screenShake() if player.vy > 5 then shakeScreen = true end if timerShake > 0 then sfx(06, 'F-2', 15) timerShake = timerShake - dt cam.shake = math.random(-3,3) shakeScreen = false else timerShake = 0 cam.shake = 0 end end initGame() score = 0 --[[ .----------------. .----------------. .----------------. | .--------------. || .--------------. || .--------------. | | | _________ | || | _____ | || | ______ | | | | | _ _ | | || | |_ _| | || | .' ___ | | | | | |_/ | | \_| | || | | | | || | / .' \_| | | | | | | | || | | | | || | | | | | | | _| |_ | || | _| |_ | || | \ `.___.'\ | | | | |_____| | || | |_____| | || | `._____.' | | | | | || | | || | | | | '--------------' || '--------------' || '--------------' | '----------------' '----------------' '----------------' ]] c = 10 colorMenu = 9 timerMenu = 2 function TIC() if score > hiScore then hiScore = score end -- ================================================== SPLASH ========================================================= if currentScene == "splash" then if btnp(4) then currentScene = "menu" end cls() print("STUDIO40A presente",0,0,12,false,2) print("Appuie sur 'A' pour jouer",W/4,H/2) print("www.studio40a.fr",8,120,12) -- ================================================== MENU ========================================================= elseif currentScene == "menu" then if musicIsPlaying == false then music(1) musicIsPlaying = true end if btnp(4) then listeParticules = {} currentScene = "game" musicIsPlaying = false end c = c + 0.05 if c>=11 then c = 9 end colorMenu = colorMenu + 0.05 if colorMenu>=11 then colorMenu = 9 end updateParticules() cls(colorMenu) tri(0,0,48,0,119,67,c) --triangles du haut tri(96,0,144,0,119,67,c) --triangles du haut tri(192,0,240,0,119,67,c) --triangles du haut tri(0,28,0,56,119,67,c) --triangles gauche tri(0,84,0,112,119,67,c) --triangles gauche tri(0,140,48,140,119,67,c) --triangles du bas tri(96,140,144,140,119,67,c) --triangles du bas tri(192,140,240,140,119,67,c) --triangles du bas tri(239,28,239,56,119,67,c) --triangles droite tri(239,84,239,112,119,67,c) --triangles droite spr(48,50,40,0,1,0,0,16,7) creerParticules("intro",80,48,(math.random(-200,200))/100, (math.random(-200,200))/100, math.random(5,10)/20,1) drawParticule() print("Appuie sur 'A' pour jouer",W/4,H - H/4,12,false,1) print("Appuie sur 'A' pour jouer",W/4+1,(H - H/4)+1,15,false,1) -- ================================================== GAME ========================================================= elseif currentScene == "game" then if musicIsPlaying == false then music(0) musicIsPlaying = true end clignote = clignote - 1 if clignote < 0 then clignote = 10 end if compteurBonus <= 0 then compteurBonus = compteurBonusMax end if player.isAlive == true then if bombLeft > 0 then if birdIsPresent == false then timerSpawnBird = timerSpawnBird - dt end if timerSpawnBird <= 0 then birdIsPresent = true spawnBird() timerSpawnBird = math.random(30,60)/10 end collideMonster() movePlayer() updateBomb() updateParticules() updateRainbow() updateMonster() updateZoneSpawn() updateBonus() updateBonusP() updateGolden() if cam2.x > 210 then cam2.x = 90 end else player.spr = player.animation.win[math.floor(currentAnimation)] -- animation de victoire currentAnimation = currentAnimation + (speedAnimation/2) timerWin = timerWin - dt listeZoneSpawn = {} listeMonster = {} listeParticules = {} listeBomb = {} listeGolden = {} listeSuperBonus = {} listeSuperBonusP = {} multiplicateur = 1 chargeNiveau = true if currentAnimation > 3 then currentAnimation = 1 end end else playerIsDead() end if timerWin <= 0 and chargeNiveau == true then level = level + 1 if level > 25 then sync(4,0,false) -- restore la map de la bank 0 apres mset level = 1 currentScene = "ending" end if level <= 8 then cam.x = ((level - 1) * (30*8)) cam.y = 0 elseif level > 8 and level <= 16 then cam.x = ((level - 9) * (30*8)) cam.y = 17*8 elseif level > 16 and level <= 24 then cam.x = ((level - 17) * (30*8)) cam.y = 34*8 elseif level == 25 then cam.x = ((level - 25) * (30*8)) cam.y = 51*8 end listeBomb = {} listeMonster = {} scan() bombLeft = MAXBOMB ordreBomb = 0 chargeNiveau = false timerWin = 3 player.x = 84 player.y = 56 player.vy = 0 nColorSky = nColorSky + 1 cam2.x = cam2.x + 30 if nColorSky > 5 then nColorSky = 1 end birdIsPresent = false end cls(colorSky[nColorSky]) map(cam2.x ,cam2.y,30,17,0,0,0) -- map du fond map(cam.x/8,cam.y/8,30,17,0,cam.shake,0) -- map des plateformes drawParticule() drawBonus() drawBonusP() drawGolden() spr(player.spr,player.x,player.y,0,1, player.flip, player.rotate,math.ceil(player.w/8),math.ceil(player.h/8)) drawBomb() drawMonster() drawGui() --print(player.vy) screenShake() -- ================================================== GAME OVER ========================================================= elseif currentScene == "gameOver" then if musicIsPlaying == false then music(2) musicIsPlaying = true end if continue > 0 and timerGameOver > 0 and btnp(4) then etatSpriteGameover = true end if etatSpriteGameover == true then playerRotate = 0 playerSpr = 267 playerY = playerY - speed speed = speed *1.1 end if playerY <= -32 then continue = continue - 1 currentScene = "game" player.vie = 3 musicIsPlaying = false timerGameOver = 10 playerY = 0 speed = 1 end if math.ceil(timerGameOver) < 0 then musicIsPlaying = false initGame() score = 0 currentScene = "menu" end if etatSpriteGameover == false then timerGameOver = timerGameOver - dt playerRotate = playerRotate + dt*10 playerSpr = 292 playerY = H*2/3 end cls() spr(playerSpr,W/2,playerY,0,1,0,math.floor(playerRotate),2,2) print("GAME OVER",W/3 - 20 ,0,12, false,2) print("Continue = "..continue,W/3-(20),32,12) print("Appuyer sur A pour continuer : "..math.ceil(timerGameOver),W/3-(20),64,12) -- ================================================== ENDING ========================================================= elseif currentScene == "ending" then currentAnimation = currentAnimation + dt * 5 if currentAnimation > 2 + 1 then currentAnimation = 1 end if btnp(4) then initGame() sync(4,0,false) -- restore la map de la bank 0 apres mset level = 1 scan() currentScene = "game" end cls() local y = 16 print("FELICITATION, VOUS AVEZ TERMINE LE JEU", 10,y,10) y = y + 16 print("VOTRE SCORE FINAL EST "..score, 10,y,10) y = y + 16 spr(player.animation.win[math.floor(currentAnimation)],W/2,H/2,0,1,0,0,2,2) y = y + 48 print("APPUYEZ SUR A POUR CONTINUER L'AVENTURE... "..score, 10,y,10) print("REMERCIEMENT SPECIAL A GRIMMGUIGUI",10,120) end end