‘ŐX^?!Ůąj“8N°Ÿ/$8iŠĘX˙˙˙˙˙ž ¨( @€ĎĐŔżßŕ°ďŻ  ď(đ/đ/ď(ď ŕŸ 0đ/8˙0@˙0?˙/8đ 0ď(ŕ ߐ?G˙@P˙OW˙OX˙OP˙?H˙0@đ/7ď@O˙_`˙`h˙_h˙PX˙ 0ŕ(ßP_˙op˙px˙ow˙_g˙@Ođ/8ď'ß'ŕ 7đp˙€˙‡˙`o˙?Gď/7ŕ Ď€0?đ€ˆ˙?Hď/8ŕ`/ßo?GđOXđ@Hď0?ŕ/ĐpOWđ?Hŕ/8ß 7ďOPď?Gŕ/7ß(Ď ŔP0@ďPXđ@Oď0@ß 0ĐO Đ@Hđ/Ď@'Đ 0ß0@ŕ@Pđ0?ß'Ď_OPđ@Hŕ(Đ 7ß/7Đ'Ŕ ż˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙^^^^^^^^^^˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙^^^^^^^^^^^^^^˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙^^TeeBBBBeTT^^^^^^˙˙˙˙˙˙˙˙˙˙˙˙˙^eBDJ33333JJDBeZ^^^^˙˙˙˙˙˙˙˙˙˙˙TD33==#####==3JDBT^^^^˙˙˙˙˙˙˙˙˙eJ=###=3DeZ^^T˙˙˙˙˙˙˙B3# #=3JBZ^^T˙˙˙˙˙˙3#  #=JBT^^˙˙˙˙˙J# Sll #=JBZ^T˙˙˙˙# %,68??86,/@A*< ##˙˙˙˙45('.6787-9%:;*<=#˙˙˙˙˙$+&,--.,/01)2 3˙˙˙˙˙˙ $%&&'%($!)* ##˙˙˙˙˙˙˙  !"#˙˙˙˙˙˙˙˙˙  ˙˙˙˙˙˙˙˙˙˙˙  ˙˙˙˙˙˙˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Ŕ˙˙˙ü˙řđ?ŕŔŔ€€€€ŔŔŕđ?řü˙˙˙˙Ŕ˙d”˛›ő%ă@ walls_spr  Hxœsň5ăa3 Öb(fd€H@ĺ‘Áh *ř¨k2Ś-45Ÿv†‚Q0 FÁ(Ł`ŒZ€ĄŢţ¤uűŽł player_spr  5xœĺ•/ Â@ĆĎ&‹A,Ł`ÄfXĐ F“(ř!–§Â‚0ĐdYŃ"‚+űh>Ű;Ď wťy§Éăšr;~ÜűgĎ;0&EŽ.vťíŤ†çč{b™ýl™Ď%˝HČă˜ëľFrœ‘œÂŰlŽ3ö}&ŇůÜÚnçůxťÝô~/gŔ¸ŽÇ^&o˝^şnçvŤä‘p˙p x!?)ŽLă!g °”Ŕ•ĺSćAŻň<äŔóJ: 1) { path_dir_step -= 1; } } if (keyboard_check_pressed(vk_numpad8) == 1) { path_dir_step += 1; } if (keyboard_check_pressed(vk_numpad4) == 1) { if (path_dist_step > 1) { path_dist_step -= 1; } } if (keyboard_check_pressed(vk_numpad5) == 1) { path_dist_step += 1; } if (keyboard_check_pressed(vk_numpad1) == 1) { if (path_alarm > 1) { path_alarm -= 5; } if (path_alarm < 1) { path_alarm = 1; } } if (keyboard_check_pressed(vk_numpad2) == 1) { if (path_alarm == 1) { path_alarm += 4; } else { path_alarm += 5; } } move_speed = 20; if (keyboard_check(vk_left) == 1) { if (view_xview[0] > move_speed) { view_xview[0] -= move_speed; } } if (keyboard_check(vk_up) == 1) { if (view_yview[0] > move_speed) { view_yview[0] -= move_speed; } } if (keyboard_check(vk_right) == 1) { if (view_xview[0] + view_wview[0] < room_width - move_speed) { view_xview[0] += move_speed; } } if (keyboard_check(vk_down) == 1) { if (view_yview[0] + view_hview[0] < room_height - move_speed) { view_yview[0] += move_speed; } } 0000000˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙¸[˙˙˙˙draw_set_color(c_black); draw_text(view_xview[0] + 5,view_yview + 20,"Degrees per cycle : " + string(path_dir_step)); draw_text(view_xview[0] + 5,view_yview + 40,"Distance per cycle : " + string(path_dist_step)); draw_text(view_xview[0] + 5,view_yview + 60,"PathFinding step delay : " + string(path_alarm)); draw_text(view_xview[0] + 5,view_yview + 80,"Frame per Second : " + string(fps)); 0000000˙˙˙˙Z¸[˙˙˙˙r if (stop == 0) { if (zoomed == 0) { if (view_hview[0] < 2000) { view_hview[0] = view_hview[0] * 1.5; view_wview[0] = view_wview[0] * 1.5; } else { view_hview[0] = 2000; view_wview[0] = 2666; zoomed = 1; } } else { if (view_hview[0] > 768) { view_hview[0] = view_hview[0] * 0.5; view_wview[0] = view_wview[0] * 0.5; } else { view_hview[0] = 768; view_wview[0] = 1024; zoomed = 0; } } } 0000000˙˙˙˙˙˙˙˙playerŽü˙˙œ˙˙˙˙˙˙˙ ¸[˙˙˙˙//set variables realx = x; realy = y; move_to_x = x; move_to_y = y; switcher = 0; point_direction(mouse_x,mouse_y,x,y) dist_to_me = 0; nearest_wall = instance_nearest(x,y,walls); choose_left = 0; choose_right = 0; radius = 16; //or width / 2; found_target = 0;0000000˙˙˙˙˙˙˙˙¸[˙˙˙˙š//reset general variables to actual realx = mouse_x; realy = mouse_y; move_to_x = mouse_x; move_to_y = mouse_y; dir_to_me = point_direction(mouse_x,mouse_y,x,y); found_target = 0;0000000¸[˙˙˙˙//this checks for places to go, that do not have a direct line of sight to the destination, this is calculated from the viewpoint of the player unblocked_left = 0; unblocked_right = 0; temp_dist_blockedl = 0; temp_dir_blockedl = 0; temp_dist_blockedr = 0; temp_dir_blockedr = 0; //check for place left found = 0; i = point_direction(x,y,realx,realy); while (i <= (point_direction(x,y,realx,realy) + 90)) { if (place_meeting(x + lengthdir_x(dist_to_me / 2,i),y + lengthdir_y(dist_to_me / 2,i),walls) == 0) { if (collision_line(x,y,x + lengthdir_x(dist_to_me / 2,i),y + lengthdir_y(dist_to_me / 2,i),walls,1,1) < 0) { instance_create(x + lengthdir_x(dist_to_me / 2,i),y + lengthdir_y(dist_to_me / 2,i),marker_red) temp_dir_blockedl = i; temp_dist_blockedl = dist_to_me / 2; found = 1; unblocked_left = 1; } } if (found == 1) { i = point_direction(x,y,realx,realy) + 91; } i += controller.path_dir_step; } //check for place right found = 0; i = point_direction(x,y,realx,realy); while (i >= (point_direction(x,y,realx,realy) - 90)) { if (place_meeting(x + lengthdir_x(dist_to_me / 2,i),y + lengthdir_y(dist_to_me / 2,i),walls) == 0) { if (collision_line(x,y,x + lengthdir_x(dist_to_me / 2,i),y + lengthdir_y(dist_to_me / 2,i),walls,1,1) < 0) { instance_create(x + lengthdir_x(dist_to_me / 2,i),y + lengthdir_y(dist_to_me / 2,i),marker_red) temp_dir_blockedr = i; temp_dist_blockedr = dist_to_me / 2; unblocked_right = 1; found = 1; } } if (found == 1) { i = point_direction(x,y,realx,realy) - 91; } i -= 1; }0000000¸[˙˙˙˙i//this piece of code finds positions to move to that are within sight of the player. this is calculated from the viewpoint of the destination //set variables switcher = 0; choose_left = 0; choose_right = 0; temp_dist_left = 0 temp_dist_right = 0 temp_dir_left = 0 temp_dir_right = 0 realx = mouse_x; realy = mouse_y; found_target = 0; dir_to_me = point_direction(realx,realy,x,y); dist_to_me = point_distance(realx,realy,x,y); if (unblocked_left == 1) { found_target = 1; move_to_x = x + lengthdir_x(temp_dist_blockedl,temp_dir_blockedl); move_to_y = y + lengthdir_y(temp_dist_blockedl,temp_dir_blockedl); } if (unblocked_right == 1) { found_target = 1; move_to_x = x + lengthdir_x(temp_dist_blockedr,temp_dir_blockedr); move_to_y = y + lengthdir_y(temp_dist_blockedr,temp_dir_blockedr); } //this works out what to do if no 1st stage, second stage and third stage positions were found if (unblocked_left == 0 && unblocked_right == 0) { if (point_distance(x + lengthdir_x(temp_dist_blockedl,temp_dir_blockedl),y + lengthdir_y(temp_dist_blockedl,temp_dir_blockedl),realx,realy) < point_distance(x + lengthdir_x(temp_dist_blockedr,temp_dir_blockedr),y + lengthdir_y(temp_dist_blockedr,temp_dir_blockedr),realx,realy)) { move_to_x = x + lengthdir_x(temp_dist_blockedl,temp_dir_blockedl); move_to_y = y + lengthdir_y(temp_dist_blockedl,temp_dir_blockedl); } else { move_to_x = x + lengthdir_x(temp_dist_blockedr,temp_dir_blockedr); move_to_y = y + lengthdir_y(temp_dist_blockedr,temp_dir_blockedr); } } //find left (+ direction) closest move to point found = 0; i = dir_to_me; while (i <= (dir_to_me + 90)) { u = 30; while (u <= (dist_to_me + 500)) { if (place_meeting(realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),walls) == 0) { if (collision_line(x,y,realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),walls,1,1) < 0) { instance_create(realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),marker); temp_dir_left = i; temp_dist_left = u; //checks to see if the resulting positions from the last piece of code can see this position (for 3 step pathfinding) if (collision_line(realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),realx + lengthdir_x(temp_dist_blockedl,temp_dir_blockedl),realy + lengthdir_y(temp_dist_blockedl,temp_dir_blockedl),walls,1,1) < 0) { third_stage_lx = realx + lengthdir_x(u,i); third_stage_ly = realy + lengthdir_y(u,i); } else { third_stage_lx = 0; third_stage_ly = 0; } choose_left = 1; found = 1; } } else { u = dist_to_me + 510; } if (found == 0) { u += controller.path_dist_step; } else { u = dist_to_me + 510; } } if (found == 1) { i = dir_to_me + 181; } i += controller.path_dir_step; } //find right (- direction) closest move to point found = 0; i = dir_to_me; while (i >= (dir_to_me - 90)) { u = 30; while (u <= (dist_to_me + 500)) { if (place_meeting(realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),walls) == 0) { if (collision_line(x,y,realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),walls,1,1) < 0) { instance_create(realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),marker); temp_dir_right = i; temp_dist_right = u; //checks to see if the resulting positions from the last piece of code can see this position (for 3 step pathfinding) if (collision_line(realx + lengthdir_x(u,i),realy + lengthdir_y(u,i),realx + lengthdir_x(temp_dist_blockedr,temp_dir_blockedr),realy + lengthdir_y(temp_dist_blockedr,temp_dir_blockedr),walls,1,1) < 0) { third_stage_rx = realx + lengthdir_x(u,i); third_stage_ry = realy + lengthdir_y(u,i); } else { third_stage_rx = 0; third_stage_ry = 0; } choose_right = 1; found = 1; } } else { u = dist_to_me + 510; } if (found == 0) { u += controller.path_dist_step; } else { u = dist_to_me + 510; } } if (found == 1) { i = dir_to_me - 181; } i -= 1; } //compare left move to point, and right move to point, and choose the closest if (choose_left == 1 && choose_right == 1) { if (point_distance(x,y,realx + lengthdir_x(temp_dist_left,temp_dist_left),realy + lengthdir_y(temp_dist_left,temp_dist_left)) < point_distance(x,y,realx + lengthdir_x(temp_dist_right,temp_dist_right),realy + lengthdir_y(temp_dist_right,temp_dist_right))) { choose_left = 1; choose_right = 0; found_target = 1; move_to_x = realx + lengthdir_x(temp_dist_left,temp_dir_left); move_to_y = realy + lengthdir_y(temp_dist_left,temp_dir_left); } else { choose_left = 0; choose_right = 1; found_target = 1; move_to_x = realx + lengthdir_x(temp_dist_right,temp_dir_right); move_to_y = realy + lengthdir_y(temp_dist_right,temp_dir_right); } } if (choose_left == 1) { found_target = 1; move_to_x = realx + lengthdir_x(temp_dist_left,temp_dir_left); move_to_y = realy + lengthdir_y(temp_dist_left,temp_dir_left); } if (choose_right == 1) { found_target = 1; move_to_x = realx + lengthdir_x(temp_dist_right,temp_dir_right); move_to_y = realy + lengthdir_y(temp_dist_right,temp_dir_right); } 0000000¸[˙˙˙˙?//this piece of code works out what to do if there is no common point found that both the destination and the player can see if (choose_left == 0 && choose_right == 0) //if no position found in last piece of code { if (third_stage_lx > 0) //if we found a third stage to the left { if (temp_dist_blockedl > 0) { unblocked_left = 1; unblocked_right = 0; } } if (third_stage_rx > 0) //if we found a third stage to the right { if (temp_dist_blockedr > 0) { unblocked_left = 0; unblocked_right = 1; } } } //alarm switch reset switcher = 0; //if all else fails, move directly toward destination, even though line of sight is blocked if (move_to_x == x && move_to_y == y) { move_to_x = realx; move_to_y = realy; } 0000000˙˙˙˙¸[˙˙˙˙’//set variables image_angle = point_direction(x,y,mouse_x,mouse_y); real_x = mouse_x; real_y = mouse_y; dir_to_me = point_direction(mouse_x,mouse_y,x,y); dist_to_me = point_distance(realx,realy,x,y); nearest_wall = instance_nearest(x,y,walls); image_angle = point_direction(x,y,mouse_x,mouse_y); //work out if we need to pathfind if (point_distance(x,y,realx,realy) >= 5) //if distance from destination more than 5 { if (collision_line(x,y,realx,realy,walls,0,1) > 0) //If line of sight to destination is blocked { if (switcher == 0) { switcher = 1; alarm[6] = controller.path_alarm; } } else { choose_left = 0; choose_right = 0; alarm[7] = 1; } } else { found_target = 0; move_to_x = mouse_x; move_to_y = mouse_y; } mp_potential_settings(360,5,1000,0); mp_potential_step(move_to_x,move_to_y,2,0); 0000000˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙¸[˙˙˙˙Ödraw_set_color(c_white); draw_sprite(player_spr,0,x,y); draw_set_color(c_blue); draw_circle(move_to_x,move_to_y,10,1); draw_line(x,y,move_to_x,move_to_y); draw_line(move_to_x,move_to_y,mouse_x,mouse_y); draw_set_color(c_red); draw_line(x,y,x + lengthdir_x(20,image_angle),y + lengthdir_y(20,image_angle)); draw_line(mouse_x,mouse_y,mouse_x + lengthdir_x(20,point_direction(mouse_x,mouse_y,x,y)),mouse_y + lengthdir_y(20,point_direction(mouse_x,mouse_y,x,y))) //draw_line(x,y,x + lengthdir_x(temp_dist_blockedl,temp_dir_blockedl),y + lengthdir_y(temp_dist_blockedl,temp_dir_blockedl)); //draw_line(x,y,x + lengthdir_x(temp_dist_blockedr,temp_dir_blockedr),y + lengthdir_y(temp_dist_blockedr,temp_dir_blockedr)); 0000000˙˙˙˙˙˙˙˙˙˙˙˙ view_pointerŽ˙˙˙˙œ˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙¸[˙˙˙˙ x = player.x + lengthdir_x(point_distance(player.x,player.y,mouse_x,mouse_y)/2,point_direction(player.x,player.y,mouse_x,mouse_y)); y = player.y + lengthdir_y(point_distance(player.x,player.y,mouse_x,mouse_y)/2,point_direction(player.x,player.y,mouse_x,mouse_y)); 0000000˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙¤room0j Đ ŔŔŔ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙€ŕ€ŕ ˙˙˙˙˙˙˙˙˙˙˙˙‹xˆ yˆ@zˆ`{ˆ€|ˆ }ˆŔ~ˆŕˆ€ˆ ˆ@‚ˆ`ƒˆ€„ˆ …ˆŔ†ˆŕ‡ˆˆˆ ‰ˆ@Šˆ`‹ˆ€Œˆ ˆŔŽˆŕˆˆ ‘ˆ@’ˆ`“ˆ€”ˆ •ˆŔ–ˆŕ—ˆŔ݈ ވ€߈`ŕˆ@ሠăˆäˆŕĺˆŔćˆ çˆ€čˆ`éˆ@ęˆ ëˆěˆŕíˆŔîˆ ďˆ€đˆ`ńˆ@ňˆ óˆ``öˆ€`÷ˆ `řˆŔ`ůˆŕ`úˆ`űˆ `üˆ@`ýˆ``ţˆ€`˙ˆ `‰Ŕ`‰ŕ`‰`‰€‰ ‰Ŕ‰ŕŔ‰ŔŔ ‰ Ŕ ‰€Ŕ ‰`Ŕ ‰@Ŕ ‰ Ŕ‰Ŕ‰`ŕ‰`Ŕ‰` ‰`€‰``‰`@‰` ‰`‰` ‰@ ‰   ‰ !‰ŕ "‰Ŕ #‰  $‰€ %‰ŕ&‰'‰ (‰@)‰`*‰€+‰ €,‰@€-‰`€.‰€€/‰ €0‰Ŕ€1‰ŕ€2‰€3‰ €4‰@€5‰`€6‰ŕ?‰@‰ A‰@B‰ @C‰@@D‰`@E‰` F‰`G‰`ŕH‰@ŕI‰ ŕJ‰ K‰@L‰@ M‰  N‰ŕŕY‰ŕZ‰ŕ [‰ŕ@\‰ŕŔ`‰Ŕa‰ Ŕb‰@Ŕc‰`Ŕd‰  e‰ `f‰€g‰Ŕh‰Ŕ`i‰`j‰@`k‰€`l‰` m‰  n‰ŕ o‰Ŕŕp‰ŕq‰@ŕr‰€ŕs‰  t‰Ŕ`v‰Ŕŕw‰  x‰` y‰  z‰ŕ {‰  |‰€`}‰  ‰€ŕ€‰  ‰ŕ ‚‰  ƒ‰` „‰  …‰ŕ‡‰ˆ‰ ‰‰@Љ`‹‰€Œ‰ ‰Ŕމŕ‰‰ ‘‰@’‰`“‰€”‰ •‰Ŕ–‰ŕ—‰˜‰ ™‰@š‰`›‰€‰ ž‰ŔŸ‰ŕ ‰Ą‰ ˘‰@ى`¤‰€Ľ‰ ډŔ§‰ŕ¨‰Љ މ@Ť‰`ʉ€­‰ މŔ݉ Ŕ°‰@Ŕą‰`Ŕ˛‰€Ŕł‰ Ŕ´‰ŔŔľ‰ŕŔś‰Ŕˇ‰ Ŕ¸‰@Ŕš‰`Ŕş‰€Ŕť‰ Ŕź‰ŔŔ˝‰ŕŔž‰Ŕż‰ ŔŔ‰@ŔÁ‰`Ŕ‰€ŔÉ ŔĉŔŔʼnŕŔƉŔlj Ŕȉ@Ŕɉ`Ŕˉ€Ŕ̉ Ŕ͉ŔŔΉŕŔωŔЉ Ŕщ@Ŕ҉`ŔӉ€Ŕԉ ŔՉŔŔ։ŕŔ׉Ŕ؉ ŔىŕŔç‰@Ŕě‰`Ŕ퉀ŔŔď‰ŔŔđ‰Ŕń‰ Ŕň‰@Ŕó‰€Ŕö‰`Ŕ÷‰ Ŕř‰ŔŔů‰ŕŔú‰Ŕű‰ Ŕü‰@Ŕý‰`Ŕţ‰€Ŕ˙‰ ŔŠŔŔŠŔ`ŠŔ@ŠŔ ŠŔŠŔŕ ŠŔŔ ŠŔ  ŠŔ€ ŠŔ` ŠŔ@ŠŔ ŠŔŠŔŕŠŔŔŠŔ ŠŔ€ŠŔ`ŠŔ@ŠŔ ŠŔŠŔŕŠŔ€ŠŔ`ŠŔ@ŠŔ ŠŔ ŠŔŕ!ŠŔŔ"ŠŔ #ŠŔ€$ŠŔ`%ŠŔ@&ŠŔ 'ŠŔ(ŠŔŕ)ŠŔŔ*ŠŔ +ŠŔ€,ŠŔ /ŠŔ0ŠŔ€4ŠŔ`5ŠŔ@6ŠŔ 7ŠŔ8ŠŔŕ9ŠŔŔ:ŠŔ ;ŠŔ€<ŠŔ`=ŠŔ@>ŠŔ ?ŠŔ@Š AŠ€BŠ`CŠ@DŠ EŠFŠŕGŠŔHŠ IŠ€JŠ`KŠ@LŠ MŠNŠŕOŠŔPŠ QŠ€RŠ`SŠ@TŠ UŠVŠŕWŠŔXŠ YŠ€ZŠ`[Š@\Š ]Š^Š ŕbŠ@ŕcŠ`ŕdŠ€ŕeŠ€fŠ€ gŠ€@hŠ€`iŠ€€jŠ€ kŠ€ŔlŠ€ŕmŠ€nŠ€ oŠ€@pŠ€`qŠ€€rŠ€ sŠ` tŠ@ uŠ  vŠ@€xŠ`€yŠ``zŠ`@{Š` |Š`}Š`ŕ~Š`ŔŠ` €Š`€Š``‚Š`@ƒŠ` „Š`…Š@†Š ‡Š ˆŠ @‰Š `ŠŠ €‹Š  žŠ ŔŸŠ ŕ Š ĄŠ ˘Š @ي €ĽŠ `ڊ@`§Š@@¨Š@ Њ@ŞŠ@૩@Ŕʊ@ ­Š@€ފ@`݊@@°Š@ ąŠ  łŠ @´Š `ľŠ €śŠ  ˇŠ Ŕ¸Š ๩ şŠ  ťŠ @źŠ `˝Š @żŠ `ŔŠ €ÁŠ  Š ŔÊ ŕĊ Ŋ  Ê @NJ `Ȋ  ͊ ŔΊ ŕϊ Њ  ъ @Ҋ `ӊ€Պ€ ֊€@׊€`؊Ŕ@يŔ`ڊ`ۊ ܊  ݊ @ފ `ߊ €ŕŠ  áŠ ŔâŠ@ŔăŠ`Ŕ䊀Ŕ加ŔćŠŔŔçŠŕŔčŠŔéŠ ŔęŠ  ëŠ €ěŠ `íŠ @îŠ  ďŠ đŠńŠŕňŠŔóŠ ôŠ€őŠ`öŠ@÷Š@ řŠ@@ůŠ@`úŠ@€űŠ€ ţŠ  ˙ŠŔ ‹ŕ ‹ ‹€‹Ŕ ‹   ‹€  ‹`  ‹€€‹ €‹Ŕ@‹ŕ@‹ŕ ‹ ‹@‹`‹ŕ`‹ŕ€‹Ŕ€‹Ŕ` ‹ `!‹ @"‹€@#‹€`$‹`@%‹``&‹`€'‹` (‹@ )‹ *‹ +‹ŕ0‹ ŕ1‹@ŕ3‹@ 4‹@ 5‹ŕ6‹ ŕ7‹@ŕ8‹  E‹€ H‹ ŕK‹ ŔL‹  M‹ €N‹ `O‹ @P‹  Q‹ R‹€S‹[‹ \‹@]‹`^‹€_‹ `‹ d‹€g‹€ŕh‹€Ŕi‹€ j‹€€k‹€`l‹€@m‹€ n‹` o‹`p‹@q‹ r‹  s‹ @t‹ `u‹ €v‹  w‹ Ŕx‹ ŕy‹@ŕz‹`ŕ{‹`Ŕ|‹` }‹`€~‹@ ‚‹@@ƒ‹@Ŕ‡‹@ ˆ‹@€‰‹@`Š‹``‹‹`@Œ‹ ŕ‹€ŕŽ‹`ŕ‹@ŕ‹ ŕ‘‹ŕ’‹ŕŕ“‹Ŕŕ”‹ ŕ•‹€ŕ–‹`ŕ—‹@ŕ˜‹ ŕ™‹ŕš‹ŕŕ›‹Ŕŕœ‹ ŕ‹ ž‹  Ą‹ @˘‹ `Ł‹ €¤‹  Ľ‹Ŕ Ś‹ŕ §‹ ¨‹  Š‹@ Ş‹` Ť‹€ Ź‹  ­‹Ŕ Ž‹ŕ Ż‹ŕ€°‹€ą‹ €˛‹@€ł‹`€´‹€€ľ‹ ş‹  ť‹@ ź‹` ˝‹€ ž‹  ż‹ €Ŕ‹ `Á‹ @‹  Ë ċ€ŋ`Ƌ@Nj ȋɋŕʋŔˋ ̋€͋`΋@ϋ ЋыŕҋŔӋŔ ԋŔ@ՋŔ`֋Ŕ€׋ŕ€؋€ً €ڋ@€ۋ`€܋€€݋ €ދŔ€ߋ€@á‹€ â‹ŕ ă‹ŕ@ä‹ŕ`ĺ‹`ć‹ `ç‹@`č‹``é‹€`ę‹ `ë‹Ŕ`ě‹ŕ`í‹`î‹ `ď‹@`đ‹€`ň‹``ó‹`@ô‹` ő‹@ ö‹  ÷‹ ř‹ŕ ů‹Ŕ ú‹  ű‹€ ü‹` ý‹@ ţ‹  ˙‹ Œ@Œ @Œ@@Œ`@Œ€@Œ @ŒŔ@Œŕ@Œ@ Œ @ Œ@@ Œ€ Œ€ŕŒ ŕŒŔŕŒŕŕŒŕŒŒ Œ@Œ`Œ€Œ Œŕ ŒŔ Œ  Œ€€Œ€` Œ€@!Œ€ "ŒŔ@%ŒŔ`&ŒŔ€'Œ €(Œ `)Œ @*Œŕ€/Œŕ`0Œŕ@1Œŕ 2Œŕ3ŒŔ4ŒŔ 5Œ  6Œ 7Œ€ 8Œ€Ŕ9Œ€ŕ:Œ€;Œ€ <Œ€@=Œ @>ŒŔ@?Œŕ@@Œ@AŒ BŒŔEŒŔŔGŒ ŔHŒ ŕIŒ JŒ  KŒŔ LŒŕ MŒNŒŕOŒŕŔQŒŕŕRŒŔŕSŒŔTŒŕUŒ  VŒ €WŒŔ`YŒ `ZŒ @[ŒŔ@\Œŕ@]Œ@^Œ @_Œ@@`Œ`@jŒ``kŒ`€lŒ€€mŒ €nŒŔ€oŒŕ€pŒ€qŒ €rŒ `sŒ @tŒ@@uŒ`@vŒ€@wŒ @xŒ `yŒ €zŒ  {Œ€`€Œ@€‚Œ@`ƒŒ``„Œ`€…Œ€€†Œ€ ‡Œ` ˆŒ@ ‰Œ  ŠŒ ‹Œŕ ŒŒŔ Œ  ŽŒ€ Œ` Œ@ ‘Œ  ’Œ “ŒŔ€•Œŕ`—Œ`˜Œ `™Œ@`šŒ@€›Œ €œŒ€Œŕ ŸŒŔ  Œŕ€ĄŒ€@ٌ @¤ŒŔ@ĽŒ`@ڌ` §Œ`¨Œ`ŕЌ`ŔŞŒ` ŤŒ€@ތ€ ݌`€łŒ``´Œ`@ľŒ` śŒ`ˇŒ`ŕ¸Œ`ŔšŒ€ŔşŒ ŔťŒŔŔźŒŔ€žŒŔ`żŒŔ@ŔŒŔ ÁŒŔŒŔŕÌ ŕČ€ŕŌ`ŕÌ`Ŕnj` Ȍ`€Ɍ``ƌ`@ˌ` ̌`͌`ŕΌ€ŕό ŕЌŔŕьŕŕҌŕӌԌ Ռ@֌`׌ `،@`ٌ``ڌ`€ی` ܌`Ŕ݌`ŕތ`ߌ` ŕŒ`@áŒ``âŒ`€ăŒ` äŒ`ŔĺŒ`ŕćŒ`çŒ` čŒ`@éŒ``ęŒ@`ëŒ `ěŒ`íŒ€îŒ ďŒ€ đŒ  ńŒŔ ňŒŕ óŒŕ€ôŒŔ€őŒ €öŒ€€÷Œ€`řŒ `ůŒŔ`úŒŕ`űŒŕ@üŒŔ@ýŒ @ţŒ  ˙Œ €€ŕ ŕŔŕŔŕŔ ŕ    @  @ @@ @ @@ŕ ŕ   ŕŕŕŕŔ  ŔŔ@€!@Ŕ#@ $  % €& `'`(€)Ŕ ,ŕ -ŕ€.ŕ`/ŕ@0ŕ 1ŕ4@`:@@; @<@= >?@A@ B  C D €J  K@€O@ P@ŔQ@ŕR ŕS ŔTŔUŕXŕŕYŕŔZ€Ŕ_ Ŕ`ŔŔaŔ bŕ c e€fŕ€gŕ`hŕ@iŕ jŕkŔl m€n€ o€@p€`q€€r€ w  x €yŔ€zŔ`{Ŕ@|Ŕ }  ~ @ `€ @‚`ƒ€„ Ŕŕ‘’ “@”`• `–@`—``˜€`™ `šŔ`›ŕ` ŕऍŕŔĽŕ Śŕ€§ŕ`¨ŕ Źŕ@ŻŔ@°Ŕ ą  ˛€ ł` ´@ ľ  ś @ˇ `¸ €ť  ź Ŕ˝ ྍ ż  Ŕ @Á@@`@Í€@č @ōŔ@ƍŔ ǍŔ ˍŔ€̍Ŕ`͍ `΍ @ύ€@Ѝ`@э@@ҍ@`Ӎ@€ԍ@ Ս` ڍ@ ۍ@܍@ŕݍ@Ŕލ  äŔćŔŕçŔŔč`Ŕí`ŕî`ď€đ€ ń ň ŕó Ŕô  ő €ö€€÷€`ř``ů`€ú` ű€ ü€Ŕý€ŕţŕ@˙ŕ ŽŕŽŕŽŽ Ž@Ž`Ž€Ž €Ž@€ Ž`€ Ž€€ Ž € ŽŔ€ Žŕ€Ž€Ž €Ž€€Ž €Ž ŕŽ@ŕŽ€ŕŽ ŕŽŔŕŽŕŕŽŕŽ ŕŽ@ŕŽ`ŕŽ€ŕ Ž ŕ!Ž "Ž  #Ž @$Ž `%Ž€`&Ž``'Ž`€(Ž@€)Ž@`*Ž `+Ž`,Žŕ`-ŽŔ`.Ž `/Ž€`0Ž``1Ž 6Ž  7Ž@`:Ž `;Ž @<Ž@@=Ž@ >Ž@?Ž`ŕAŽ`BŽ€CŽ DŽŔEŽŕFŽGŽ HŽ@IŽ`JŽ€KŽ€ LŽ€@MŽ`@NŽ@@OŽ @PŽ@QŽŕ@RŽŔ@SŽ @TŽ€@WŽ`@XŽ` YŽ€ ZŽ  [ŽŔ \Žŕ ]Ž ^Ž  _Ž@ `Ž` aŽ€@bŽ€€dŽ``eŽ€`fŽ `gŽ€ŔjŽ€lŽ`ŕmŽ€ŕnŽ ŕoŽ€@pŽ€€rŽ``sŽ€`tŽ `uŽŕ|Žŕ@~ŽŔ Žŕ €Ž Žŕ€‚ŽŕŔ„ŽŔ …Žŕ †Ž ‡Žŕ ˆŽŕ@‰ŽŔ ŠŽ ‹Ž@@ŒŽ@€ŽŽ `Ž@`Ž``‘Ž@Ŕ’Ž@”Ž ŕ•Ž@ŕ–Ž`ŕ—Ž@@˜Ž@€šŽ `›Ž@`œŽ``Žŕ€ЎŕŔҎŔ ӎŕ Ԏ Վ€ ֎  ׎Ŕ ؎ @َ€ ڎŔ ܎ €ݎ  ގ Ŕߎ€ ŕŽŔ ⎠㎠ 䎠@厀 ćŽŔ čŽ €éŽ  ęŽ ŔëŽ@ěŽŕ`đŽ`ńŽ `ňŽŔóŽőŽŕŕöŽŕ÷Ž ŕřŽ@ůŽ€űŽŕ`üŽ`ýŽ `ţŽ@Ŕ@ ŕ@ŕ `ŕ Ŕ€ ŕ€ €  €@€`€€€ €Ŕŕ @`€ Ŕ€ŕ€€ €@€`€ €€! €"Ŕ#ŕ$% &@'`(€) * +€,`-@.@ /@@0@`1@€2@ 3@Ŕ4@ŕ5@6@ 7@@8@`9@€:€@C€`D  E ŔFŔ@GŔ`IŔJ€@K`L `MŔN€€O€ P@ŕQ@R`S `T@ U` V€ W€€X€`Y€@Z [  \ Ŕ] ^Ŕ _ŕ `Ŕ`a`ŕb€Ŕc@@d€ g hŔŕiŕŔj k €l@`m`@n€ oŔ@pŕ qr ŕs`Ŕt€ u €vŔ`wŕ@x`@y `z`{ @|@ }`~ ŕ€ŔŔŕ ‚€ƒ `„ŕ‡ŕˆ Ŕ‰@ Š`€‹  Œ€@``ŽŔ`ŕ@  ‘@’`ŕ“€Ŕ”  • `–`@—€ ˜ ™Ŕ๏ŕŔ› `Ŕ@žŕ ŸŔ€Ąŕ`˘€`Ł Ś@¨  Š@ޏ`૏ଏ Ŕ­ ŻŔ൏Ŕ śŔŔˇŔŔšŔ şŔ€ťŔ ź Ŕž€`ż€@Ŕ  ÁŔŔÏŕŔďŔŏŕƏŔŔǏŕŔȏŔ Ώŕ ϏŔ Џŕ я ŕҏ Ŕӏ€ŕԏ€ŔՏ@ ُ@@ޏޏ€–˜X˙Game Information˙˙˙˙˙˙˙˙X5{\rtf1\ansi\ansicpg1252\deff0\deflang3081{\fonttbl{\f0\fnil Arial;}} {\colortbl ;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\f0\fs24 the controls are as follows : \par \par NUMPAD : \par \par Degrees per Calculation : This is the number of degrees per loop that the program will skip when finding positions to move. \par \par 7 - reduce the amount of degrees per calculation. \par 8 - increase the amount of degrees per calculation. \par \par Distance per Calculation : This is the distance per loop that the program will jump ahead when looking for positions to move to. \par \par 4 - reduce the amount of distance jumped \par 5 - increase the amount of distance jumped \par \par Alarm Time : The amount of steps between alarm[6] which is where all the pathfinding is stored. the lower the number, the more fluid the movement looks, but the greater the hit on performance \par \par \par CURSOR KEYS : \par \par Use the cursor keys to move the view around the room \par \par \par Zooming : \par \par press Z to zoom in or out. \par } ôSprites walls_sprsprite4 player_spr point_spr point_red_sprSounds BackgroundsPathsScripts Fonts Time LinesObjectsplayerwallsmarker marker_red controller view_pointerRoomsroom0 Game Information Global Game Settings