Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region setup
- grd=objController.grd;
- move_snap(grd,grd);
- debug=false;
- xx=x;
- yy=y;
- ww=0;
- hh=0;
- #endregion
- #region land tiles
- repeat(irandom_range(2000,4000)){
- var buffer=grd*irandom_range(8,16);
- var dir=irandom(3);
- switch(dir){
- case 0: if(x<room_width-buffer){x+=grd;} break;
- case 1: if(y>buffer){y-=grd;} break;
- case 2: if(x>buffer){x-=grd;} break;
- case 3: if(y<room_height-buffer){y+=grd;} break;
- }
- if(dir==0&&!(x<room_width-buffer))continue;
- if(dir==1&&!(y>buffer))continue;
- if(dir==2&&!(x>buffer))continue;
- if(dir==3&&!(y<room_height-buffer))continue;
- tile_create(x,y,"Land",9);
- tile_create(x+grd,y,"Land",9);
- tile_create(x-grd,y,"Land",9);
- tile_create(x,y+grd,"Land",9);
- tile_create(x,y-grd,"Land",9);
- tile_create(x+grd,y+grd,"Land",9);
- tile_create(x-grd,y-grd,"Land",9);
- tile_create(x-grd,y+grd,"Land",9);
- tile_create(x+grd,y-grd,"Land",9);
- if(x<xx){xx=x;}
- if(y<yy){yy=y;}
- if(x>ww){ww=x;}
- if(y>hh){hh=y;}
- }
- #endregion
- #region land clean up
- xx-=grd;
- yy-=grd;
- ww+=grd*2;
- hh+=grd*2;
- x=xx;
- y=yy;
- while(y<hh){
- if(!tile_meeting(x,y,"Land")){
- if(tile_meeting(x+grd*2,y,"Land")&&
- tile_meeting(x-grd*2,y,"Land")&&
- tile_meeting(x,y+grd*2,"Land")&&
- tile_meeting(x,y-grd*2,"Land")){
- tile_create(x,y,"Land",9);
- }
- }
- if(x<ww){x+=grd;}else{x=xx;y+=grd;}
- }
- #endregion
- #region beach & shallows
- xx-=grd;
- yy-=grd;
- ww+=grd*2;
- hh+=grd*2;
- x=xx;
- y=yy;
- while(y<hh){
- if(tile_meeting(x,y,"Land")){
- if(!tile_meeting(x+grd,y,"Land")){tile_create(x+grd,y,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x-grd,y,"Land")){tile_create(x-grd,y,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x,y+grd,"Land")){tile_create(x,y+grd,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x,y-grd,"Land")){tile_create(x,y-grd,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x+grd,y-grd,"Land")){tile_create(x+grd,y-grd,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x-grd,y+grd,"Land")){tile_create(x-grd,y+grd,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x+grd,y+grd,"Land")){tile_create(x+grd,y+grd,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x-grd,y-grd,"Land")){tile_create(x-grd,y-grd,"Water",9);tile_create(x,y,"Beach",9);}
- if(!tile_meeting(x+grd*2,y,"Land")){tile_create(x+grd*2,y,"Water",9);}
- if(!tile_meeting(x-grd*2,y,"Land")){tile_create(x-grd*2,y,"Water",9);}
- if(!tile_meeting(x,y+grd*2,"Land")){tile_create(x,y+grd*2,"Water",9);}
- if(!tile_meeting(x,y-grd*2,"Land")){tile_create(x,y-grd*2,"Water",9);}
- if(tile_meeting(x+grd,y,"Water")||tile_meeting(x-grd,y,"Water")||tile_meeting(x,y+grd,"Water")||tile_meeting(x,y-grd,"Water")){
- tile_create(x,y,"Land",0);
- tile_create(x,y,"Beach",9);
- }
- }
- if(x<ww){x+=grd;}else{x=xx;y+=grd;}
- }
- #endregion
- #region auto tiling
- x=xx;
- y=yy;
- while(y<hh+grd){
- // land tiles
- if(tile_meeting(x,y,"Land")){
- // right, left, up, down
- if(tile_meeting(x+grd,y,"Beach")){tile_create(x,y,"Land",8);}
- if(tile_meeting(x-grd,y,"Beach")){tile_create(x,y,"Land",10);}
- if(tile_meeting(x,y+grd,"Beach")){tile_create(x,y,"Land",13);}
- if(tile_meeting(x,y-grd,"Beach")){tile_create(x,y,"Land",5);}
- // right down, left down, right up, left up
- if(tile_meeting(x+grd,y,"Beach")&&tile_meeting(x,y+grd,"Beach")){tile_create(x,y,"Land",12);}
- if(tile_meeting(x-grd,y,"Beach")&&tile_meeting(x,y+grd,"Beach")){tile_create(x,y,"Land",14);}
- if(tile_meeting(x+grd,y,"Beach")&&tile_meeting(x,y-grd,"Beach")){tile_create(x,y,"Land",4);}
- if(tile_meeting(x-grd,y,"Beach")&&tile_meeting(x,y-grd,"Beach")){tile_create(x,y,"Land",6);}
- }
- // beach tiles
- if(tile_meeting(x,y,"Beach")){
- if(tile_meeting(x+grd,y,"Water")){tile_create(x,y,"Beach",8);}
- if(tile_meeting(x-grd,y,"Water")){tile_create(x,y,"Beach",10);}
- if(tile_meeting(x,y+grd,"Water")){tile_create(x,y,"Beach",13);}
- if(tile_meeting(x,y-grd,"Water")){tile_create(x,y,"Beach",5);}
- if(tile_meeting(x+grd,y,"Water")&&tile_meeting(x,y+grd,"Water")){tile_create(x,y,"Beach",12);}
- if(tile_meeting(x-grd,y,"Water")&&tile_meeting(x,y+grd,"Water")){tile_create(x,y,"Beach",14);}
- if(tile_meeting(x+grd,y,"Water")&&tile_meeting(x,y-grd,"Water")){tile_create(x,y,"Beach",4);}
- if(tile_meeting(x-grd,y,"Water")&&tile_meeting(x,y-grd,"Water")){tile_create(x,y,"Beach",6);}
- }
- // water tiles
- if(tile_meeting(x,y,"Water")){
- if(!tile_meeting(x+grd,y,"Water")){tile_create(x,y,"Water",8);}
- if(!tile_meeting(x-grd,y,"Water")){tile_create(x,y,"Water",10);}
- if(!tile_meeting(x,y+grd,"Water")){tile_create(x,y,"Water",13);}
- if(!tile_meeting(x,y-grd,"Water")){tile_create(x,y,"Water",5);}
- if(!tile_meeting(x+grd,y,"Water")&&!tile_meeting(x,y+grd,"Water")){tile_create(x,y,"Water",12);}
- if(!tile_meeting(x-grd,y,"Water")&&!tile_meeting(x,y+grd,"Water")){tile_create(x,y,"Water",14);}
- if(!tile_meeting(x+grd,y,"Water")&&!tile_meeting(x,y-grd,"Water")){tile_create(x,y,"Water",4);}
- if(!tile_meeting(x-grd,y,"Water")&&!tile_meeting(x,y-grd,"Water")){tile_create(x,y,"Water",6);}
- }
- if(x<ww){x+=grd;}else{x=xx;y+=grd;}
- }
- #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement