MMF2ShadowEngine4 - By Andos-C:\Users\Anders\Desktop\MMF\ShadowEngine4.mfa4(@0ATNFAPMSASUMAGMI """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___wwwa }} }Bu}Bu}}}}}bu}""}}A}AAAAAA, 9E)9E)$!E)$!E)$!E)$!E)1E)9$!9E)$!E)$!E)$!9$!E)9$!9E)1E)1$!1$!1$!1$!E)$!E)$!E)$!1E)9E)$!E)$!1$!1$!9E)9$!E)$!E) $!E)$!1$!9$!1$!1E)1$!1$!1$!E)$!9$!E)$!1$!E)19$!9$!1E)1$!1$!E)$!E)$!E) $!E)1E)19$!1$!1$!1$!E)$!E) $!E)$!E)$!9$!9$!1$!E)$!E)$!1$!9$!1$!1$!1E)9E)$!E)$!9$!1$!E)$!E)1E)$!9$!E)$!19$!E)9E)19$!1E)$!E)$!19191$!E)$!E)1$!1E)$! 19191$!1E)9E)9E)9$!1E)1E)$!19E)$!E)$!E)$!E)19 19E)1E)9$!9E)9$!1$!1$!19191IJ9(BE)$!1E)$!9$!E)$!1(B1(B1IJ1IJ9(BE)9$!9$!19$!E)$!(B9(B1(B1(B1IJ1IJ9(B9$!(B$!1E)9$!E)$!E)$!191919191$!E)$!9E)1$!1$!1$!1(B1(B1(B1(B9IJ1IJ1(BE)1E)191$!E)$!19191$!E)$!E)1$!E)191919(B1(B$!1$!1$!1$!9$!E)$!E)$!19 1$!E)1E)1$!1$!191$!1$!E)$!E)$!19 1(B$!(B1$!1$!1$!1$!E)$!1$!1$!E)$!E)$!E)$!E)$!1(B1(B191E)19$!9$!1$!9$!1$!1 $!E)$!E)$!9$!9$!E)1E)$!191$!1$!9$!9$!9$!(BE)$!1E)$!1$!9$!9$!E)$!E)$!E)$!E)$!E)1$!9$!E)$!E)$!E)$!E)$!E)$!E)$!E)$!1$!E)$!E)$!E)$!E)$!E)$!E)$!E)$!9E)$!E)$!E)$!9E)1E)1E)1E)1E)1E)19$!9$!IJE)9E)9$!9$!91E)1E)1E)1E)$!E)$!9$!9$!9$!9E)9E)9E)9$!9E)9$!9E)1E)19 hPh h hP hhPh hh h ! QQQQQQQW XŹՙxՇyzXŹzy慙ރ޸֋?~1zy悙ށ֋?ؤwzyށ΅?zޙ:9B޸ڜ]J΅6~1yk9ָٽ9ֽΘηWyޙWX9Οֽ޸UֽwΗƐw~1{BuւUƄZ>!1Xֽց;ؤvއxVUָٽU΃Ut|ܽ1?BZޅ]J1z֍Y>!|!θk_Ŝ_)sRRޓ7{_xθ֞)sYcSxY[?X͜^)uv67uUVŜ9!|ƃؾUVﴽ9_]k|k?!y=!!c[y׽Xބ7uwuu7پVV{[Z΃u*ҔƁپ[:·u]Q*Ҕپﳽս9{:΃m]Q*Ҕپھkﳽa[:΁mEQ*Ҕھƻƻ {:΁m=0Q*ҔƏ5ƼA{Z:m=0Q*Ӕƒ 9=5$!HBZ:uu]e<0 !ӔƌE!=vA:΁4I(!sΒz?Z:04,M(e!ӔΎ޽?{A6:[ׇP4,M(e!Ӕւ ?:ьD!:[{|ׂP4,M(e!Ӕ΁߇6_Zσ::{|}߃Q4,e!Ӕׂ=>[::[|ߜ}߆}Q4e!Ӕ=ׂ=^>_[:[{|ߝ߽灞}߄]3e!Ӕ]ׂ]^~^>_UƜ}߅׭_>?5;\]}׃_?  00e) 9B91A$!!9B91Be)BIJ(J!e)A$)e)e11aaD)E)19 $)919AaA 9A1!e1AB9 aA$!111E)E)e)11 E)1e)e1E)$!!$!!e11e)e19  )E!E)e))$!  e)1e)1e)1E)  b A111B a   IJ9IJ  $!A!A BiJa e)$!!A AE)e1$)$!9IJjJ1$)$!e1 11e)Aa!E)AE)1e1$!(BiJIJR1$)e19AA9%)  A$)9 1AB$)IJRjJRZE)!AB9 (Be) Aa!$!e)B1!191iJZRR ce1$!91(BIJ91e11e)9Aa!$!E)e)1(BiJ$) ajR c cZ,cE)!(BZBA1$)199a1! !D)e)119IJRBIJR [ c,c-cZRZRJRZIJHJ(Be)$)99aB1! $!%!119BBIJRR [Z-cLc cmkMknsMkmk,c c cjRRIJ1!1e11A iR9 !E)1999BiJRRRZ,cMksmsMk c c cZRJIJiJ1$)E)1aa IJ9 A!$!E)199B)JiJRZZ cMkmksnssskMk-c,c cZRiJIJ(BB91e)E)!A 9e1 A!E)e)199(BIJiJRZ,c-cs{sk{ssmk cZRIJ(B91f)E)!a AE)!A!E)119BIJiJRRZ,cMkmks{|{{sMk,cZZRIJ91e)E)!E)!E)9E)!A!E)e)19AIJRZZ,c-cnks{sńk{nk-c,cZZRIJ)BB91f)E)!1e)E)e19iR9!A$!E)e)19BIJRZZb cms{H\BD3{sMk,cZRjJiJIJB91E)!$)99Ŧ9IJ1A!E)f)199BIJjJRZZ-cmkss{sok0{knk-c,cZRRIJHJB91e)E)!!99919e1!E)e)19BiJjJRZ-cmk,cMks{{{{ssMk cZJIJ(B91e)E)!9e1999$)E)$!!E)e)E)1f199IJmk,cmks{{ssmk c cZRR)B(B991e)E)!$!9!e11e)E)$)e1E)$)!!$)$!! $)mk-cMksnkmsMkmk,c cZRRiJ)B(B91e)$)AiJ1E)$)991E)$)991E)$)1Ae11 c,c-cMkmk,c cZZRjJ)B(JB91f)e)$!AiJ1$)$!991$)$!991$)!99e)bZ cb c,c cZZRJIJ(BB911E)!a (B1191e111e119e11ZRZZZZZZRRiJIJB911E)$!!A 1! !   ! ZRRZZRZRiJHB(JB991E)!A9RjJRjRRRRjRRiJIJ(BB911e)$!!aAD!RB)JiJIJiJJIJ)B(B99111E)D!!A AiJ9AB(B)BIBIJ(J(BBB911e)E)!a@99999B(BB(BB991e)E)!aA  A !1e)1199919911E)$!!aA IJ1e)9991e)E)e1$)$! !e)! E)$!! !e1$)!e1abA 9E)91E)119e)E)99e1E)19e)E)$)19e)E)199AA 919Ae1!19AE)!e1A9E)$!e19AE)!e)9Ae)!E)999a AAe11E)119e)E)e)91e)E)e)91e1E)e)91e1E)e)919a AE)e1e)e1E)e)E)e)E)e)E)e)E)e)E)1a ,$)9A, 1(B,1iR,e1B,!199e)E)$)11E)$)E)9e1E)$)E)9e)E)1e1E)9e1E)$)1e1E)1 1e1R9(J(B(J9B(BA9(J(BA9(J(BA9(BAB9(BBA9(BIJ!1AR SX a111D!11)#!9'B1a@ ad)1e)E)1E)$!  e)1D)e)1E)  a$!!$! e!E)e)$! !911$!!ba@  9:   aA$!!:HB1!! E)$!@A! ae)9D!HBiJ1$)9e) 1)A a!e))aaD!e)iJRR1#)$! 1B)$)D!$! a a!$!e)1BD!191R [IJ111:iJBe)D)1D) 9$!@!D))1BHBJRR,c [ZRIJ(B)$!e1$!(BD)@!e)19BiJRR [MkmksMc cZRiJIJ1e)D!@1$!a$!e)1:HBJR [,ckskskMc cZRIJ(B91E)!a 1$!aE))9BIJRZ,cMcs{ksk,c [RiJ(B91E)!$!BD!aE))1:IBJRZMcs{Fl tsMk,c [RiJ(B91E)!e)1:$!AE))19IBJR [Lcssk{smk cZRiJ(B91E)!e)11!E))19:(BR,cmkssmk cZRIJ:91E)!1$!D!E)$)#!!!$!(B c,cLcMcmkLc [ZRiJ(B:1e)D!AHBE)$!11$!11D)$!9e)BZb c,cZZRJIBB91E)$!a 1e)E)e)D)d))e)D)e)D)9RRZRRJhB(B911E)!Aaaa`9jJRRRJIJ(B:1)e)$!A #!(BIJ)J(BB:11e)D!`  99B(BB991)e)D!!a @ @!$!e)1111)D!$!a@9e)E)e)d)E)$)D)#!$!#!$!D)$!D) 1)1!11$!E)1E)$!)1!D)1E)$!11a 9e))$)e)E))E)e)E)e)E)e)a a  @ @ @ @ @ @  a$!)1a)e)a@D)D)` aae)D! aA@a91A @aae)HBe)D!a$!AD!1(BRZHB(BE)$!1e)9iJ [mkkLcRiB1D!A11BR,cs+k [iJ9e)D!1e)9iJ [kkmkZiJ9e)D!1D!D)e)D)e)J [,c [R(B1$! $!(BJRJHB9) a9(:(B:1)$!@e)A!D!D)E)D)D!a1D!@D)$!D)D!D)$!D) aa  aAd 00E)9B919!!9B91BE)BiJB!E)a !E)1aa!E)1 !919a a 191!E)9B1 aa  !1E)E)1  E)1E)!E)1E)9  E)!E)!  E)1E)1E)1E) a  91B a  iJ9iJ !a  Aa BiJa E)!a  a E)!9iJ1!E) 1E)  a!E)a E)1E)!BiJR1!E)1 B9E)  a!9 19B!iJRiJRZE)!9B9 BE)  a!E)B1 !1iJZR,cE)!91 BiJ91E)1E)9  a!E)1BiJ !aiJ,cZ,cE)! BZB91!19a 1! !E)19iJRBiJRZ,cZRZRiJRZiJBE)!91a B1! !19BiJRZ,cs,cZiJRiJ1!1E)1a iJ9 !E)19BiJRZ ,cZRiJ1!E)1a a iJ1a!E)19BiJRZ,cs,cZRiJB91E)!a 9E)a!E)19BiJRZ,cs,cZRiJB91E)!a 9E)!a!E)19BiJRZ,cs0s,cZRiJ91E)!E)!E)1E)!a!E)19BiJRZ,cs3ć3cs,cZRiJB91E)!1E)9iJ9!a!E)19BiJRZ,cs0d4s,cZRiJB91E)!!191iJ1a!E)19BiJRZ,csss,cZRiJB91E)!!1919E) !E)19BiJRZ,css,cZiJB91E)!1E)19!E)!E)19iJ,cs,cZRB91E)!!9!E)1E)!E)!!!,cs,cZRiJB91E)!a iJ1E)!191E)!191E)!19E) ,cZRiJB91E)!a iJ1!91!91!19E)Z,cZ,cZRiJB91E)!a B1E)1E)1E)1ZRZRiJB91E)!a 1!!!ZRZRZRiJB91E)!a  9RiJRiJRiJRiJB91E)!a  !RBiJB91E)!a  aiJ9BiJB91E)!a  9B91E)!a  a !1E)19191E)!a iJ1E)1 91E)!!E)!E)!!E)!E)aa 9E)1 E)1E)19E)19E)!19E)19a a 19E) !19E)!E)9E)!E)9E)!E)9E)!E)91a a 9E)1 E)1E)1E)1E)1E)1a 9E) E)1a , !9, 1B, 1iJ, E)B, !19E)!1 1E)!E)1E)!E)1E)1E)1E)!1E)1 1E)R9B9B9B9B9B9B9B9BiJ!19R7Z]  E)1E)!19!BiJ9 E)1!!1a E)!E)a  !1!E)1a a !a a aE)1 a a E)19 aa a a a!Ba !a a aa !E)iJE)!a aE)a a !a 1R!1a1a a a!E)1E),cZ!E)9iJ1!E)1a a1a!E)19iJ9iJRZ,cZRiJRB1!1E)a aiJE)a!19iJRZ,cZRiJB!E)aiJE)!19BiJRZ,cs,cZiJ91E)!a1!!E)19iJR,cs,cZRiJ91E)!1!!E)19iJR,cs̜Ɯs,cZRiJB1E)!E)1iJE)!E)19BRZ,csds,cZRiJB1E)!E)1!!E)19iJRZ,cs,cZiJ91E)!E)1!E)!E)!E) ,cZRB91E)aiJE)!1!1!E)1!Z,cZRB9E)aiJE)1!1E)1E)Z,cZRiJB91E)! aE) RZRiJB91E)! a aE)iJRiJRiJ91E)!a a BiJB91E)a a a aE)191E)!a aBE)! aE)!E) !a a1E)1 aE)1E)!E)1!E)1E)!1!E)1!aa a1E)1 aE)1E)1E)1E)1E)1! a!a a ! 9 9a a !1B1!a1E) 191aE)1aE)11a1a E)!E) a a E) a a a91a  a !1iJE)E)!a !E)9BiJ,ciJBE)! 9!1BR,cs,ciJ9!a1!1iJZ,cs̜s,cR9E)!1!1BR,cs,cR9E)!E)9E)R,cZB1!a!iJZiJ91!a 9B91!a 1a!E)a 1!aE)!E)!E)!E)a a aaa NA00%n/,,++              !!! " #v f 6         /F 9    G t~ !yy AaA yyAaaA yyA!$!E)$!!a yyA$!e)1e)E)!a yyAa!e)19B(BB91E)$!aA yyA!$!1B(BRRZZZRiJB9e)a yyAa$!e)9IJRZ c,cMk,c cZRIJ(B1$! yy a$!19iJZ cmks{{{ss,cZR(B1e)ayy a1(BiJZmks{0Qqq0{mk,cRB9$!yy a$!1IJR,cs{0ӜqQsmkZIJBE)yyA$!e)9RZsQӜ4Uuu󜒔{,cRIJ1!yyaE)1(BZMk{Q4׽8UQsZR9E)$!yy΂e)1IJ cMk{qu׽Yy8׽q0s cR9E)yy΂19iJ,cs󜶵8y8UQ{,cZBe)yy΢!19RMks0Ӝ4yκ]yƖӜq{MkZ(B1e)yy΢19iJ,cs0׽YΚYuq{,cZB1e)yy΂19iJ,cmk󜖵8ƚֺy4Qs cZBe)yy΂e)9IJ cmk{ӜuYyY׽q0s cR9e)E)yyaE)1(BZ,cs0qu׽U40{mkZR9$!yyA!E)9RZMk{qӜ4Q{s cR(B1yy $!1iJR,cs{0ӜqQsmkZIJBe)yy E)9(BR,cMks{0Q0{{s,cZiJ91!yyae)1(BRZ,cmksssmkMk cRiJ9e)$!AyyaE)19iJRZ c,cMk,c cZRIJ(B1E)!AyyaE)19(BIJiJRiJIJB11$!aAyya$!E)199B991e)$!!aAyya$!E)119991e)$!aAyya$!E)119991e)$!aAyy!E!      `    7 4Mm4MQmEQm4MQmQmQmQ muQ muQ mueQmueE0 QmueEq0 QmueEq0 Q4MUU4MUU4MUU>>555!!! Hdd2222, SKD ?';*7.33/6,8);'>$@"B DGHJLNPPRTTV W X Y Z [\\^^_```abbbb9cbbbaa``__^]\\[ Z Y X V VTSRPNMLJHFD B"@$<':*8-4003,7(;%@FM(X MmJmGmMmmm mq mqp mqpbmqpb@ mqpb@ mqpb@ KPJROP9{{yyvvxxvv{{uu{{||}}||ss^^NNLLQQNNPPggffggkkuu||ss[[CC8877::ggffggkkuu||ss[[CC8877::ggffggkkuu||ss[[CC8877::ggffggkkuu[[CC8877:: ggffggkkCC8877:: ggffggkkuuoo[[CC8877:: ggff77::gg::gg::gg::ggUU::ggSS::QQ  ڼ}};ee^ھrnn cc\ھtnn bb\ڽrmmaa[FEE/ǵ~~&BB+RRRð~~'BB,PPP||&BB,NNMUU9@=<>9<=@@@@<<>{@@@@>9A-A-@@@<A-a>9a>9@@>@@@=I@5@@<@A-A-=<@ >@@5ʀ#ʀ#I=ƟI= a{ ҿ I aII=ʀ#f&A-<s><@@@@5#> !? @@>s>s<A-<>9a@@>9a<=@5#=<=<@@@A-A-Ɵ<? I   I { s?=IA->9a#<@<<>{<@@@>9a>{@@@>l;l;>9=<#@5>@>9@@@@<{!?33@5A-<A-A-Ɵ33Ɵʀ#@@#@5@5#>9>!? @@@>{<A->9a< I  ̚ ̚h?s?s8'A-1A-@5f&1'A-f&Ɵw•I=I=<< a a s?o$* >9a*1:;l;<l;<33<@5l;<>9al;<6:>9a>{33@5A-< a ̚I<?sƟI=ʀ#Ɵ-5 w•-5A-I=<<@5@59 7 :5:5!? >@@@ @ [?>9aA-''' x < I II{e  w• A-44@733@533A-'Ɵ <  a I{ w ?f&#>9al;<>9a>9a<k22  BlueLight4 Movement #1 QA-<@@@A-A->9@=<>9<=@@@@<<>{@@@@>9A-A-@@@<A-a>9a>9@@>@@@=I@5@@<@A-A-=<@ >@@5ʀ#ʀ#I=ƟI= a{ ҿ I aII=ʀ#f&A-<s><@@@@5#> !? @@>s>s<A-<>9a@@>9a<=@5#=<=<@@@A-A-Ɵ<? I   I { s?=IA->9a#<@<<>{<@@@>9a>{@@@>l;l;>9=<#@5>@>9@@@@<{!?33@5A-<A-A-Ɵ33Ɵʀ#@@#@5@5#>9>!? @@@>{<A->9a< I  ̚ ̚h?s?s8'A-1A-@5f&1'A-f&Ɵw•I=I=<< a a s?o$* >9a*1:;l;<l;<33<@5l;<>9al;<6:>9a>{33@5A-< a ̚I<?sƟI=ʀ#Ɵ-5 w•-5A-I=<<@5@59 7 :5:5!? >@@@ @ [?>9aA-''' x < I II{e  w• A-44@733@533A-'Ɵ <  a I{ w ?f&#>9al;<>9a>9a<k22 pppppppp p p p4H[0 P0 p0 0 pppP0PPP` p0#pP$  1P0! `") * +@,`-0.02P3p4Pp %p5P60789p:P;0<=P>?Pp'A0DEF0H0I00OpPPQRPS@TU VP0WP`XPYPZar^_x`aH&Dc4dfghjk0lPmpnpop0qP0rs]G 4ppKpPLPMpbi000JPNP0tpPu0wxpPyz{|}P~00P@PpppPp000P0e] \ Evts)f ~n&Game stuffm Qh |l%"Arial 2 *j zj%"Arial         h  |l%"Arial  .  2 *  .  2 *  .  2 *   f ~n&Find wall siblings[h |l%"Arial 4 P-siblings  6 -siblings , 2 , 2 , 2 , 2 , 2 , 2 4-n H "-n&  6 &  , 2 H "-n6 &  &  , 2 H "-n&  6 &  , 2 H "-n6 &  &  , 2 h |l%"Arial 6 -siblings . 2 . 2 . 2 . 2  f ~n&Set up shadowsh |l%"Arial, 2$ g, 2 ,X 2@*   , 2$ g, 2 X 2@*   , 2$ g, 2 X 2@*    6 P-setupLight h  |l%"Arial  ! 8 -setupLight 2$ h, 2! l 2T R setupLight Q setupLightPU. Y@B :!]  !S"!m H!- light :!]  !S!    - light -"!m "!= h "!|l%"Arial #"$  , 2   $#f %$~n&Draw shadowsh &%|l%"Arial '&&  &  , 2 , 2  , 2   (' 6 P-drawLights   )(8 -drawLights &!  D!6   D!6     *)8 -drawLights &!  .  2    , 2 , 2 , 2  , 2! , 2  "! , P-a j +*zj%"Arial( ,+. -a J  $  .  2 < 1$  < 1$  < 1$  < 1$  4-s ( -,. -a J  $  .  2 < 1$  < 1$  < 1$  < 1$  4-s ( .-. -a J  $  .  2 < 1$  < 1$  < 1$  < 1$  4-s ( /.. -a J  $  .  2 < 1$  < 1$  < 1$  < 1$  4-s j 0/zj%"Arial  10"-s&!   &!  N!o   N!o   > 2&  > 2&   2|  @@  @@x 2`     !o L    L    > 2&  > 2&   2|  @@  @@x 2`     !o L    L    !n$ ! $ !   21Rems Check for wall siblings I start the fastloop so that I in the On loop "n" events have a fresh selected objects list to pick objects from.>Transfer the found values back to the object I was looking at. VThis loop then calculates the shadow and renders it as a polygon in the overlay objectAlways display the shadows`This loop sets up all the shadow casting surfaces and calls a fastloop (once) to draw the shadow?Always iterate the light sources to draw them and their shadows aThis loop automatically creates and sets up all nessecary light information so you don't have to.zAdd one light in each 'Start of frame' event. Be sure that the 'start ForEach' action is at the bottom of the action list.Position the different lightsFor some reason MMF2 doesn't detect collisions on the first event loop. This condition takes care of this and makes the light sources update on the second event loop as well.sI have temporarily disabled this event since there is a slight lag in when drawing the shadows now while scrolling.EvOb WallSpritePlayerSprite LightSourceSpritegEnemySprite! LightSurfaceFRUSh ForEachAEOFLightInfoObjectSprite RedLightSprite  BlueLightSpriteEvEd!  EvTsEvLs EvCsj!DNE! X#%+  Multiply.fx( &'2)08 ACHK{ `<@DHT`\dlv) #default#itDz