Advertisement
ZoriaRPG

Ladder Ywkls

Dec 22nd, 2017
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. const int LADDER_TILE = 369;
  2. int GRAM[512];
  3. const int DRAW_LADDER = 511;
  4. void DrawLadder(bool v){ GRAM[DRAW_LADDER] = Cond(v, 1, 0);}
  5. bool DrawLadder(){ return GRAM[DRAW_LADDER];}
  6.  
  7. bool isLadder(int x, int y){
  8. int loc = ComboAt(x,y);
  9. if (Screen->ComboT[loc]==CT_LADDERHOOKSHOT) return true;
  10. if ( Screen->ComboT[loc]==CT_LADDERONLY) return true;
  11. return false;
  12. }
  13.  
  14. bool ScriptedLadder()
  15. {
  16.  
  17. if (!(Link->Item[I_LADDER1])) return false;
  18. if ( Link->InputRight )
  19. {
  20. if ( Link->InputUp ) { //diagonal up-right}
  21. else if ( Link->InputDown ){ //diagonal down-right}
  22. else
  23. {
  24. if((isLadder(Link->X+17,Link->Y+8) ) { Link->X+=2; return true; }
  25. if ( isLadder(Link->X+17, Link->Y) ) { Link->X+=2; return true; }
  26. if ( isLadder(Link->X+17, Link->Y+15) ) { Link->X+=2; return true; }
  27. if ( isLadder(Link->X+1,Link->Y+8) ) { Link->X+=2; return true; }
  28. if ( isLadder(Link->X+1, Link->Y) ) { Link->X+=2; return true; }
  29. if (IsLadder(Link->X+1, Link->Y+15)) { Link->X+=2; return true; }
  30.  
  31. }
  32.  
  33. if ( Link->InputLeft )
  34. {
  35. if ( Link->InputUp ) { //diagonal up-left}
  36. else if ( Link->InputDown ){ //diagonal down-right}
  37. else
  38. {
  39. if((isLadder(Link->X-1,Link->Y+8) ) { Link->X-=2; return true;}
  40.  
  41. if (isLadder(Link->X-1,Link->Y)) { Link->X-=2; return true;}
  42.  
  43. if (isLadder(Link->X-1,Link->Y+15)) { Link->X-=2; return true;}
  44.  
  45. if (isLadder(Link->X+15,Link->Y+8)) { Link->X-=2; return true;}
  46.  
  47. if (IsLadder(Link->X+15,Link->Y)) { Link->X-=2; return true;}
  48. if (isLadder(Link->X+15,Link->Y+15)) { Link->X-=2; return true;}
  49. }
  50. //only non-diagonals are not covered
  51.  
  52.  
  53. if ( Link->InputUp )
  54. {
  55. if( (isLadder(Link->X+8,Link->Y-1)) { Link->Y-=2; return true; }
  56. if( isLadder(Link->X,Link->Y-1)) { Link->Y-=2; return true; }
  57. if ( isLadder(Link->X+15,Link->Y-1)) { Link->Y-=2; return true; }
  58. if ( isLadder(Link->X+8,Link->Y+15)) { Link->Y-=2; return true; }
  59. if ( isLadder(Link->X,Link->Y+15)) { Link->Y-=2; return true; }
  60. if ( isLadder(Link->X+15,Link->Y+15)) { Link->Y-=2; return true; }
  61.  
  62. }
  63.  
  64. if ( Link->InputDown)
  65. {
  66.  
  67. if((isLadder(Link->X+8,Link->Y+17)) { Link->Y+=2; return true;}
  68. if ( isLadder(Link->X,Link->Y+17)) { Link->Y+=2; return true;}
  69. if (isLadder(Link->X+15,Link->Y+17)) { Link->Y+=2; return true;}
  70. if ( isLadder(Link->X+8,Link->Y)) { Link->Y+=2; return true;}
  71. if ( isLadder(Link->X,Link->Y)) { Link->Y+=2; return true;}
  72. if ( isLadder(Link->X+15,Link->Y)) { Link->Y+=2; return true;}
  73. }
  74. return false;
  75. }
  76.  
  77. void DoLadder()
  78. {
  79. DrawLadder( ScriptedLadder() );
  80.  
  81. if(DrawLadder() )
  82. {
  83. Screen->FastTile(0,Link->X,Link->Y,LADDER_TILE,0,128);
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement