X@B?t#*JOXd ( @ (//(  0/80@0?/8 0( ?G@POWOXOP?H0@/7@O_``h_hPX 0(P_oppxow_g@O/8'' 7p`o?G/7 0??H/8`/o?GOX@H0?/pOW?H/8 7OP?G/7( P0@PX@O0@ 0O @H/@' 00@@P0?'_OP@H( 7/7' ^^^^^^^^^^^^^^^^^^^^^^^^^^TeeBBBBeTT^^^^^^^eBDJ33333JJDBeZ^^^^TD33==#####==3JDBT^^^^eJ=###=3DeZ^^TB3# #=3JBZ^^T3#  #=JBT^^J# Sll #=JBZ^T# %,68??86,/@A*< ##45('.6787-9%:;*<=#$+&,--.,/01)2 3 $%&&'%($!)* ##  !"#     ??dm@  spr_jo_line 'xsf@@Č `<2? r spr_cursor+6(2 xYOQu4}@7q , DŝFo/ }㱄30t2$s=/~S|y~ca aP{o ɼ^Ġe0}|I1$''ՕY,bPb===ʷg1LVulllmmje!,,,--qhhhyyr鲳=:%꾾ٝ˻cn^JI X\PP111^\\<>>wp`0x>#Ĩ뛛v!* dnnrV;==x0$bJ%%%SSS]@5񦦦LgyasrrFGGWWW!s@/]]]yyy2N\ZZ']m...lRZ3WTTgffbDpt:GFF`کL+  n1.$&:+` {Z"Ӹ 1¬ a\,àh, ނw ((:3@EEE9D"F}%^]*0Xhb0u mLl %ȀBq HBKbb"`@>)++ׄݖS5443$|Q 4o报R 'O,r@SY *eḇa'Dد1: H3p'ضOB! H|i' / Pߏ|B,c@R"{>዁O,= 8i\%D͐OgP*t=OP |"Hh0O%B'#S>!?ٸ瓀$ _$0h-|Oc7{>{>p'2p'8TX Dg>  Hp"Ŷ<K=ll F|KDZ- O()`~'2mLh%b$%"AOeO^BD7 l spr_chr_guy xs}f@"P G TFY+3@B@.A`9A$ĥ$?CLj`cGX:Fv.GՋdz gq Pg8#E !Te! @5BD E,. ӻAց^4g/`4]%`\8D (F73}$AO cLW"yp( WI spr_ps_fleche  lxs5a3 b(fdH@Q@(E|Z1vVͧcZ&KDk󑭠p+hg> ?Ѝ_/ZC| t_hg(R spr_ps_sample Lxs}f@"P G E: +2(ltYO (8IH#BB|v0UKV]&dX5u5r+*kzY. MvT@xP8 } 8{md aVg"[M;$(BܐM B#노!2"”!dAJHጤGdӶ}GB'΃z!! t04ِǬB * uL-@-@QF6ߢ spr_chr_standddMc 2d Mxq0E.R?.2 IUHe A"gF31_^,K?_1>~?~_v8MSj+Ovs,:1FF> $].s qh 1#v6EiJԕ(e N.XV c :,jmXNgR:y6. 7M{?z| vVE]:WÎNttUJV2 kw,29C1xZf6J@ ] `sxZp抺V}Kje^)`^ѕ|>ӕ ҕZ Ǽr']ipn7c/Ae40򏈢qr2IW vPɡ+Ҽ~~ja{(u۟ՂkYE`+h`Ea Ge׋&fЅ9AiV׎f R3SW:T^؅#KUj6Ri1,(JEb4ecث%H'#Lj 7A1XDN;ñ?扮j؃.y tCWQ%AŨ$焺"l!tf])  GZ7x&JUAW cP`^ (])I>x])`/Ux,N`{H(* C !B!. ;x_ -z>{o$HAհ/F6o&3c[Iۻy˽~ߏ7u~f99f5lg{SҥY=LV1IgǛ?bۭ}m\"䭜a6EA!ߐ7xHq%B_ZJ(eM_M}#xA_-S:AZC SHp3ՂB~"/Du*Ә)Kcp*BpU: he"{ ^{u&xB0jV`2<*TC I:5YU)`?B+ŕh%KQZV!a u P6ǃ~E Z_]WhuXsG >ڽ *Wlc'<|-T+%VѽwG&sZSӹߵ>\e JT:jz^rk[O>$ ћ/uo\R\i.^ȵ7V|.%Y^U5xcf2+K\((-WP^^+IgP ]|IL—hŜCâCvRu6_UvMd<%]\.IMŹb.&dְI0ETv$a'9q{͖r}f?/.XI0O\+5h;ED5  Zyڅҭ? c Fte@"ZUD2]ZF;cGlBBl= W,WW{0Nvr{⊩8*uŚA(AV!w9i*' ߨMH(Yb&'R'?wHK xQ0 #O ;[pl|QYmwW.I]Nrd6^)޿_q<*{7e+Wƚc,2jݐʼnQ >5>NG{6 2jq\8nHKctȔ19p=Æ=$W(?"y+v?2BqȴuL*Zx>I1s, UMWnf~aI@w@T R*`vճKsb)+; ׹[e(m <`I@TVȄ(²rAJXLu>i.JBqSӅ*LnI!ryL\1:8{?} $w 5^]zSDp FrJ*w*dU%7:}!9"e@|ZEw7+`Wyun&#'Gn JbqZGv3%ez $)-gDY+:rNT8qԤY$Ԥ$D)YKn \b5<WP[H89.pBt)fF.mz&!3&4++D q*0_I\QTfH7N9ҴGw3SmOy 1\AxG@ݩyX}wPz )xэ0 -:B~[ݠ94S$cBt%Jiɉd>_lQ4#Gx} _/cwq^[YQZG٤uZvAqpYȎDqu}AficG?io`_p9qc'ru\JO,d i!Uq"W(#NU| q5OԓZTvCx;+->L[fs/z`ðRxաgᨮ"G:DUlʸؕ+;5g:(WjS-\E^*e&mr?l5tEy5(W?_R/ i7P˲oUH|ogo7+" : Z,>\afI!E5ls[}l&]k^mCxe֚IDN rl2ӳf?/vbk+co@'%[m1((Ne𦻥S<q:5V)pW@7.xn<}*#=gV0!̙QDZ<0<ڧܕiK`D ]57R!| B II vCuPWv j\3s/h,-Q ]ɝuJڱ{uރ%|QXsc)~6WvfpM#}9X%W^UN6mW!uLI\9|0 ]'&YBFY(IK 8xq0 F.=)=]d. !E 8#' |(b~-_whQfVZG5\+ ;J-HAۭ#N*6:~u#N')uP"]2k]&'#OTW'İ I^T%:IQtBCW1?g8RmUoўDU]P{X}aEgcׅU]E;%s(;b'JkpC\.E]щB &E]9qTX&ejF=I6'2>)34ˮHȲɘZVW5Fony>׈xbכ4(7܃秇am>?r aΗWkǮh:os4ʐ-ܛ36( D)*|I2N̛ybvr]LhF& N]<ӑj4: \QZG'KW9c:,|\ɛITi(/!p$>5fM #fw;6n(M*,ͼ;NH~c2ߗ?r Z"8~7ϰ؊~L袌p^ՆkLbgCZZ}alW=V+U֒G@XNY 2j@WzJ @^i@go,T%0FNȮfP;~YSsBJWzwΘ?ɻͼ"ԓWͤ+$nC+ .2gw`Wap5!Hz!3#yD,>$/^^ߦ?on].xVz%Ezl#H bc,ʳtojW-$\\." 1Ó#Kit$\YlJ[>앬MBW`GFV&~-]j,z=Qk E1ekދ(KjՖ/W[Wy]ZJ>X=E=t|79+zw\V1ʽ9 xP.dj7|l)pH{ժYrW}ZfcK{LԫjQӶWlipVdU:^Q3)t0y;72>cosT?ľ( qӞrD-b}?Q{ɪc$mb#GkA\Yb{?UU2+>ԭ^;/~J%6\e1fvnFۨ )ɍt uEڧbN1s/ ze1KpbWŭPy8'cQ(-PY"5pB {_RlD#_V&AaVcdC!3rn:5Jʒp.JFqWA.NDSu`cU:MlA"m%"jN<+y99e\YLSQM<'peZGpvEJBx>h{pդsU)h8Q\.օs".7UptDKWq^$a'9q{͖r}f?/.XI0O\+5h;ED5  Zyڅҭ? c Fte@"ZUD2]ZF;cGlBBl= W,WW{0Nvr{⊩8*uŚA(AV!w9i*' ߨMH(Yb&'R'?wHK xm1 [t>[TݠLc\38>D|l_}~.~}:SU4cͣn"Ns{uNiݒxNF<OKx:ҡˉj]yVQ,QWb<f]a;:Tn{&9΢r 5v2cAhN*"R9&otKiZЀ~KPZܮ33aǜGtf`gcB]) ]X\tbiU SجEBztfE=4pUC(% (Hs\pXu ^oomtTtTnuoQmţ~16>Б:|r%{_WsBjk=wzjP⽩ "FkhʉH~5sYn&5z<$&U"Y0 "sUWOveYTXNE8?Pk H0D%V㠨],mް.,8"VbS+!TW!ƅxt.w 4]Ӝp<(ʁ+?+l8(k΀w#wbVѩl: p7YN xэ0 -:B-7hHPLYr$KۡdY?oӓ_6}ny8vThV=ZsMEoj"AkAz(\Ft&"#PEk>jGRIj FA^h,aѯ_dxY_ۥz|^^\{-[^:N!O9Ih.9lF {A *O)24T(O ҪT<-qLE4vy}4SM*rqt-ku߇2y)wp:?O Y˲ᙜӂjԆi*" R$i5PA[{˘rsϫBMX}»?}jU;v2PtpmZlk % dK" amfk_Z5rɕM BZI2V^cYaQ 읚ܓ%h.2 Ue0c ky%,_G} / {oQƏ[/2A w@"^:B@*#{h AEdu\=իNRz^#5҉ @ÊD[kM-Ot<9?^jМQ;`ҕMS90'Ρ pwu=drU~ApQG0(rW.ѮhQR}poX26$2gEk9U`xLTľ5S=O]v'{5?}WݲWǙkՖ"?}bĉ=(f0U7Y}̟nȿu.Y^OsS,'tɫ/>+U|+}>΁TEFIp:䎐NK N]iF\ 6Y-JkN!#=8lMTh`PWzNIT7AKl8{MђN.ljФrT-(-7JwE "rҢEm'2QQB( ;*}"2#9' 3p|TRR0J=i,l4H|qܓ_#|???߂\_ưjQHv#cvrE2r\ i"QR]ҵ)Cbd$]PORwjEA +'Nh㞱ʨ{uW7/\U儫s2L42gRET,*վ\k+vT ^ N*\}99AQl%y H}Na_Wqs_T頍^kWKuZHGs`Æ}Wn[0 %Zrk{GYEkB W-WŅi&"Ldj0`̌7: <1zWB935]Aj}r5KG@3w&$e(M $԰vld =r(ؠʿDYØ'jb,-(!D ` fW!Z4y{ەH&EeL|W5YsrrܒU׮Y4gy {!~N?YTf w%O.8J.yz;ͥy(H],UQ+(;ek[f2Y+I|r$V$9!1ep%=rEC$WE% p%) Wv^)\W1hP?"Qe7΄_U@4pK xm0 E-:|_ݢxA2E2*)PMl &1+r|~?|ǟ~>ަoJv3O"6#aEuzܗR"#;2vpZ=yH-Qt!iN?r8G@ZgOߥZULxz-.`w`Wa憠({/ [9 )z^3?[~ ;|>'E 'VRLr'ů̞rJv~ΞڊAE?gkQR4D2aYfeox xKm,*U2&9ȚL֥۠IS]mh5NV6s&#s!,?-NtivJym!*5 rZY0@Byra+i8pWFpV{^ ܦs|q6hiЯ8tE[aC|D9GEFby\1%n[=\It^EV0RH2t얃 ~Lٳ[\u!NVgOgip)RQTv;=7jвCVEC-bZ(PDS"_ٶm סtqD*A , c@*}tEɷxZd)*o@6#[p#7TatuEc^3+d9ʐ)Ză+eϹ12JLy ;eˢuWu0EHt]! >5@L7p3t1K.KɃ~P֩fW]JqϵrbUʔ70~3~@ MT0_|t 'be%Z۬XmȤU1Eij0\IS\5YpeAR~Ҭ5A0=!DEC3ǒ+dzUZ]vخo͔Y{6rrķPWO|\-!*o|dhWq~۲\8N"ݫ%0f{&?rteK%UUgqD6W9G9OdOL$]$x|7g$Il2mv(U&;&TLnnثrY>$HW',jV_9HX;:x%ToݓvJj iʼn$vVA,,FaU. G\t spr_chr_projdd8c 22 xq@ .RByE&> ˍ`c`w:=3G>I?_~n۷z۾l_o?wiHkR?-u:*ƭ~VexW+]kzde~ +&U* 8KScdȩeiRd̍y":5b{Uk+tb+jЮ[&U^V.#(j3}b` y+SԕtQIYMjMD)T RW)bP;[?q.5-rHdHK+)<:.\9:NhY΄@jEkJH+Uh"ѕSU{UaQ\-M ̎hipeSWΙ-RowR6'C5cM!wX]wpWzpӔF^ {n_1sz[Ps8%N}lmG9QV\=Jh9qύsV)yA+/][貙#Õ۫K>̊sZ\*QZt9;P?#o )g#}2ACW03 b-n8th Z\ P-R-*W—HW䕃|\qҷ*%mYj^eN3iW\qV]}$5q \x\AWx\T89P7P1_~ڕ24bGcjOhai+ }o+ ]p@T]EI^^q i!;Mhhr~leNm4v ITJ'7ۏ3*f+*շ:vjqqW𮦯iyUܞ^_JEc\=FE9SklQчv=ANRUÕ$[<_V>CWΎvsZҗKw7qWLuJ B&2+'96ejaCA ]EڟTOW|_X\$[7]|n85 ]@{*ц] ghgsW)ંTak\ZE%b 2AWU>p{F@L?eVR1U!dv:2`>F+ \CV~C.!^3Ap^Xv:Ip.큄2 ux/spr_chr_collide212 Lx̡0EPѨ +8e09JٞլgKl1ٱl6fl6f_s]maskDot xsb3 bF80`AGscr_draw_motionblur//scr_draw_motionblur(speed,direction,x,y); var len,dir,xp,yp,rot,i,quality; len=argument0; dir=argument1; xp=argument2; yp=argument3; rot=argument4; if(len>0||sqrt(sqr(rot))>0) { quality=3; len/=quality; rot/=quality*2; for(i=max(len,sqrt(sqr(rot)));i>0;i-=1) { var lenx,leny,times; times=max(len,sqrt(sqr(rot))); if(len>0) { lenx=lengthdir_x(len*(i/times)*quality,dir)+xp leny=lengthdir_y(len*(i/times)*quality,dir)+yp } else { lenx=xp; leny=yp; } draw_sprite_ext(sprite_index,image_index,lenx,leny,image_xscale,image_yscale,angle+rot*(i/times*2)*quality,image_blend,image_alpha/(times/2)) } }else draw_sprite_ext(sprite_index,image_index,xp,yp,image_xscale,image_yscale,angle,image_blend,image_alpha) player_get_angle" /* * player_get_angle( x, y, angle ); * * ============================================= * * This functions returns the angle of the surface at the given position & angle. * */ /* This is one of the pilars of the game engine, the angle detection. This might appear hard at the first sight but the truth is that it's a very easy and simple method. The concept of this method is having two sensors or spots, both at each side of the player in a distance of like... 8 pixels. And start pushing down those two sensors or spots a limited amount of times until they collide with any obstacle object. When this happens, the only thing we have to do is calculate the slope or angle between those two points. In Game Maker the function used is "point_direction" in order to calculate the angle between the two points. */ // Temporal values /*temporal_mask = mask_index; mask_index = spr_chr_collide;*/ // Limit the angle we're using from 360 directions to 36 for preventing thikering // when detecting the collision argument2 = round(argument2 / 45) * 45; // Set the starting position of the sensors (depending on angle) point_1_x = argument0 - cos(degtorad(argument2)) * 7; // Left point point_1_y = argument1 + sin(degtorad(argument2)) * 7; point_2_x = argument0 + cos(degtorad(argument2)) * 7; // Right point point_2_y = argument1 - sin(degtorad(argument2)) * 7; // Now, perform the checking. Push down the two points in order to know the angle repeat(25) // Repeat a limited amount of times { if (place_meeting(point_1_x, point_1_y, obj_jo_line) == false) { point_1_x += sin(degtorad(argument2)); point_1_y += cos(degtorad(argument2)); } if (place_meeting(point_2_x, point_2_y, obj_jo_line) == false) { point_2_x += sin(degtorad(argument2)); point_2_y += cos(degtorad(argument2)); } } // Return to the old mask /*mask_index = temporal_mask;*/ // Calculate the direction return floor(point_direction(point_1_x,point_1_y,point_2_x,point_2_y));player_collision_left_edge/* * player_collision_left_edge(x,y,angle) * * ============================================= * * This functions returns if the left edge sensor has collided * on the given angle. * */ /* The edges collision detection scripts. These are another big pilar of the engine. These are used for detecting if an edge surrounds the characters, so we know if we need to check angle or not. These are placed each at the sides of the character and it's a line of kind of 23 pixels wich detects, if it's colliding, we can check collision because it's a slope and not an edge. Here, we use the special "image_index", for using the prerotated images of the mask sprite. It isn't much difficult but helps a lot :D */ // Store the actual mask for setting it up later /*temporal_mask = mask_index; temporal_index = sprite_index; temporal_image = image_index; mask_index = maskLines; sprite_index = maskLines; image_index = floor(argument2); // 0 to 359 possible images*/ // Test collision collision_test = place_meeting( floor(argument0 - cos(degtorad(argument2)) * 8 + sin(degtorad(argument2)) * 11), floor(argument1 + sin(degtorad(argument2)) * 8 + cos(degtorad(argument2)) * 11), obj_jo_line ); // Set to the old mask /*mask_index = temporal_mask; sprite_index = temporal_index; image_index = temporal_image;*/ // Calculate the direction return collision_test;player_collision_right_edge/* * player_collision_right_edge(x,y,angle) * * ============================================= * * This functions returns if the right edge sensor has collided * on the given angle. * */ /* The edges collision detection scripts. These are another big pilar of the engine. These are used for detecting if an edge surrounds the characters, so we know if we need to check angle or not. These are placed each at the sides of the character and it's a line of kind of 23 pixels wich detects, if it's colliding, we can check collision because it's a slope and not an edge. Here, we use the special "image_index", for using the prerotated images of the mask sprite. It isn't much difficult but helps a lot :D */ // Store the actual mask for setting it up later /*temporal_mask = mask_index; temporal_index = sprite_index; temporal_image = image_index; mask_index = maskLines; sprite_index = maskLines; image_index = floor(argument2); // 0 to 359 possible images*/ // Test collision collision_test = place_meeting( floor(argument0 + cos(degtorad(argument2)) * 8 + sin(degtorad(argument2)) * 11), floor(argument1 - sin(degtorad(argument2)) * 8 + cos(degtorad(argument2)) * 11), obj_jo_line ); // Set to the old mask /*mask_index = temporal_mask; sprite_index = temporal_index; image_index = temporal_image;*/ // Calculate the direction return collision_test; fnt_gen Matisse ITC   obj_jo_craie [//'draw' Indique si on met jour ou non la postion de la souris. draw=false; //Particules { // Systme de particules ps2 = part_system_create(); // Particules pt21 = part_type_create(); part_type_shape(pt21,pt_shape_spark); part_type_size(pt21,0.1,0.2,0,0); part_type_speed(pt21,0.5,4,0,0); part_type_direction(pt21,0,360,0,0); part_type_color1(pt21,c_white); part_type_alpha2(pt21,1,0.4); part_type_life(pt21,20,30); part_type_gravity(pt21,0.2,270); } 0000000[:if draw = true { // cre l'emetteur em2 = part_emitter_create(ps2); part_emitter_region(ps2,em2,mouse_x,mouse_x+15,mouse_y,mouse_y+15,ps_shape_rectangle,ps_distr_linear); part_emitter_burst(ps2,em2,pt21,5); // cre une particule tout les quatre steps alarm[0] = random(102);//Cres des particules }00000008[ draw=false;00000005[draw=true; //Position de la souris mx=mouse_x; my=mouse_y; //Ajoutons un effet de poussire //effect_create_above(ef_firework,mouse_x,mouse_y,0.01,c_white); /////Particules///// // Emmetteur em2 = part_emitter_create(ps2); part_emitter_region(ps2,em2,mouse_x,mouse_x+15,mouse_y,mouse_y+15,ps_shape_rectangle,ps_distr_linear); part_emitter_burst(ps2,em2,pt21,5); // Cre tout les quatre steps alarm[0] = random(102);//Cres des particules 00000002[ if !draw{exit} var i; i=instance_create(mx,my,obj_jo_line); with(i){ image_angle=point_direction(x,y,mouse_x,mouse_y); image_xscale=point_distance(x,y,mouse_x,mouse_y)/sprite_width; } //Reactualise la dernire position de la souris mx=mouse_x; my=mouse_y;0000000 obj_jo_line  obj_chr_guy [!//Variables basiques slope = 12;0000000[ygravity_direction = 270; if place_free(x,y+1) gravity=0.5; if not place_free(x,y+1) gravity=0; if vspeed>12 vspeed=12;0000000[Qif (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270); vspeed = 0;0000000'[wvar i; for (i=0; i 0{ global.wind_strength -= 0.1 } }0000000S[direction += 50000000F[direction -= 50000000D[9if global.wind_strength <= 30 global.wind_strength += 0.10000000[draw_set_font(fnt_gen); draw_set_halign(fa_center); draw_sprite_ext(sprite_index,0,x,y,1,1,direction,c_white,1) draw_text_color(x,y+30,"Force de votre Pense:"+string(global.wind_strength),c_blue,c_red,c_yellow,c_blue,1)0000000 obj_ps_sample [j//Moteur physique strength = 5 //Poids gravity = strength act = true //Variables basiques slope = 12;0000000[mgravity_direction = 270; if place_free(x,y+1) gravity=0.5; if not place_free(x,y+1) gravity=0; if vspeed>12 vspeed=12; //Moteur de la pense if global.wind_strength-strength < 0{ act = false } else{ act = true } if act = true{ speed = global.wind_strength-strength direction = Ynit_ps.direction } if vspeed > strength*2{ vspeed = strength*2 }0000000[Qif (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270); vspeed = 0;0000000'[wvar i; for (i=0; i12 vspeed=12; //Moteur de la pense if global.wind_strength-strength < 0{ act = false } else{ act = true } if act = true{ speed = global.wind_strength-strength direction = Ynit_ps.direction } if vspeed > strength*2{ vspeed = strength*2 }0000000[Qif (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270); vspeed = 0;0000000'[wvar i; for (i=0; i12 vspeed=12; //Moteur de la pense if global.wind_strength-strength < 0{ act = false } else{ act = true } if act = true{ speed = global.wind_strength-strength direction = Ynit_ps.direction } if vspeed > strength*2{ vspeed = strength*2 } //// Ia de notre Homme//// /* To be continued... */ if (player_collision_left_edge( x, y, ) && player_collision_right_edge( x, y, angle )) { angle = player_get_angle( x, y, angle ); } else { angle = 0; } 0000000[Qif (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270); vspeed = 0;0000000'[var i; image_xscale = -1; image_speed = 0.2; for (i=0; i