/* // oMAP_BUILDER CREATE EVENT */ // CREATE GRID global.rWorldOne = ds_grid_create(3, 3); // ROW ONE ds_grid_set(global.rWorldOne, 0, 0, "rWorldOne_0"); ds_grid_set(global.rWorldOne, 1, 0, "rWorldOne_1"); ds_grid_set(global.rWorldOne, 2, 0, "rWorldOne_2"); // ROW TWO ds_grid_set(global.rWorldOne, 0, 1, "rWorldOne_3"); ds_grid_set(global.rWorldOne, 1, 1, "rWorldOne_4"); ds_grid_set(global.rWorldOne, 2, 1, "rWorldOne_5"); // ROW THREE ds_grid_set(global.rWorldOne, 0, 2, "rWorldOne_6"); ds_grid_set(global.rWorldOne, 1, 2, "rWorldOne_7"); ds_grid_set(global.rWorldOne, 2, 2, "rWorldOne_8"); ------------------------------------------------- /* // oTRIGGER CREATE EVENT */ current_world = global.rWorldOne; world_width = ds_grid_width(current_world); world_height = ds_grid_height(current_world); current_room = room_get_name(room); width_half = room_width / 2; height_half = room_height / 2; margin = 32; enum warp { none, north, west, east, south } warp_state = warp.none; warp_room = noone; /* // oTRIGGER STEP EVENT */ // FIND POSITION IN ROOM if y < height_half { warp_state = warp.north; } if x < width_half { warp_state = warp.west; } if x > width_half { warp_state = warp.east; } if y > height_half { warp_state = warp.south; } // FIND WARP VALUE FROM WORLD GRID var xx; for (xx = 0; xx < world_width; xx++) { var yy; for (yy = 0; yy < world_height; yy++) { var check_room = ds_grid_get(current_world, xx, yy); if check_room = current_room { if warp_state = warp.north && (yy - 1) >= 0 { warp_room = ds_grid_get(current_world, xx, yy - 1); } else if warp_state = warp.west && (xx - 1) >= 0 { warp_room = ds_grid_get(current_world, xx - 1, yy); } else if warp_state = warp.east && (xx + 1) <= world_width - 1 { warp_room = ds_grid_get(current_world, xx + 1, yy); } else if warp_state = warp.south && (yy + 1) <= world_height - 1 { warp_room = ds_grid_get(current_world, xx, yy + 1); } } } } // WARP PLAYER ON COLLISION if place_meeting(x, y, oPlayer) { // MARGIN CHECK var multiply; if warp_state = warp.north || warp_state = warp.west { multiply = -1; } else { multiply = 1; } // Y AXIS WARP var target_x, target_y; if warp_state = warp.north || warp_state = warp.south { target_y = (room_height - oPlayer.y) + (margin * multiply); target_x = oPlayer.x; } // X AXIS WARP else if warp_state = warp.west || warp_state = warp.east { target_y = oPlayer.y; target_x = (room_width - oPlayer.x) + (margin * multiply); } // COMPLETE COLLISION WITH ROOM WARP if warp_room = noone { instance_destroy(id); } else { oPlayer.y = target_y; oPlayer.x = target_x; room_goto(asset_get_index(warp_room)); } }