Advertisement
LiTTleDRAgo

[RGSS] Hart Minigame Tembak2

May 12th, 2012
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 19.44 KB | None | 0 0
  1. #===============================================================================
  2. # * Cara Menggunakan Script
  3. #-------------------------------------------------------------------------------
  4. # Panggil script dari event dengan cara memilih tab advanced, script, kemudian
  5. # masukkan kode berikut:
  6. #
  7. # $scene = Scene_Tembak2.new(custom, bulletspeed, movespeed, spawntime, limit,
  8. #                           onscore)
  9. # ket:
  10. #   - custom = dapat diisi dengan nilai true atau false.
  11. #              Bila diisi dengan false, game akan berjalan standard,
  12. #              dan argumen lain tidak perlu lagi diisi
  13. #   - bulletspeed = kecepatan peluru. Isi dengan angka
  14. #   - movespeed = kecepatan gerak. Isi dengan angka
  15. #   - spawntime = waktu untuk memunculkan musuh baru.
  16. #                 Semakin sedikit nilainya semakin cepat musuh muncul
  17. #   - limit = target score atau waktu(dalam frame)
  18. #   - onscore = diisi dengan nilai true atau false.
  19. #               Bila true, maka bila score mencapai nilai limit, anda menang
  20. #               bila false, maka bila nilai waktu mencapai nilai limit,
  21. #               anda menang
  22. #
  23. # Script ini sangat kaku, artinya konfigurasi nya sangat sedikit dan terbatas >.<
  24. # Konfigurasi dapat dilakukan dengan mengubah nilai2 konstanta2 di bawah ini
  25. #===============================================================================
  26. module Hart
  27.   module Tembak2
  28.   #===============================================================================
  29.   # * Gameplay related configuration
  30.   #===============================================================================
  31.   PLAYER_STARTING_MOVESPEED = 3
  32.   BULLET_STARTING_MOVESPEED = 4
  33.   ENEMY_MOVESPEED = [1, 1, 1, 1]
  34.   ENEMY_SCORE = [100, 150, 200, 250]
  35.   SCORE_VARIABLE_ID = 1
  36.   HIGHSCORE_VARIABLE_ID = 2
  37.   CUSTOM_MODE_RESULT_VARIABLE_ID = 3
  38.   SHOOT_DELAY = 30
  39.   ENEMY_SHOOT_DELAY = [100, 100, 80, 0]
  40.   PLAYER_COLLISION_TOLERANCE = 0
  41.   LEVEL_SCORE_INTERVAL = 1000
  42.   STARTING_SPAWN_TIME = 360
  43.   SPAWN_TIME_INTERVAL = 40
  44.   MOVESPEED_INTERVAL = 2
  45.   BULLETSPEED_INTERVAL = 2
  46.   #===============================================================================
  47.   # * Graphics related configuration
  48.   #===============================================================================
  49.   GRAPHICS_PATH = "Graphics/Pictures/Tembak2/"
  50.   PLAYER_IMAGE = "player.png"
  51.   ENEMY_IMAGE = ["enemy1.png", "enemy2.png", "enemy3.png", "enemy4.png"]
  52.   PLAYER_BULLET_IMAGE = "playerbullet.png"
  53.   ENEMY_BULLET_IMAGE = "enemybullet1.png"
  54.   EXPLOSION_IMAGE = "explosion.png"
  55.   BACKGROUND_IMAGE = "background.png"
  56.   OBJECT1_IMAGE = "island1.png"
  57.   OBJECT2_IMAGE = "island2.png"
  58.   OBJECT3_IMAGE = "island3.png"
  59.  
  60.   PLAYER_IMAGE_FRAMES = 3
  61.   ENEMY_IMAGE_FRAMES = 3
  62.   EXPLOSION_IMAGE_FRAMES = 6
  63.   BULLET_IMAGE_SIZE = 8
  64.   BACKGROUND_SCROLLING_SPEED = 2
  65.   #===============================================================================
  66.   # * SE related configuration
  67.   #===============================================================================
  68.   SE_PATH = "Graphics/Pictures/Tembak2/"
  69.   EXPLOSION_SOUND = "explosion.wav"
  70.   #===============================================================================
  71.   end
  72. end
  73. #==============================================================================
  74. # ** Cache
  75. #==============================================================================
  76. VX = defined?(Window_BattleMessage)
  77. module Cache
  78.   def self.picture(filename)
  79.     load_bitmap("Graphics/Pictures/", filename)
  80.   end
  81.  
  82.   def self.clear
  83.     @cache = {} if @cache == nil
  84.     @cache.clear
  85.     GC.start
  86.   end
  87.  
  88.   def self.load_bitmap(folder_name, filename, hue = 0)
  89.     @cache = {} if @cache == nil
  90.     path = folder_name + filename
  91.     if not @cache.include?(path) or @cache[path].disposed?
  92.       @cache[path] = filename.empty? ? Bitmap.new(32, 32) : Bitmap.new(path)
  93.     end
  94.     if hue == 0
  95.       return @cache[path]
  96.     else
  97.       key = [path, hue]
  98.       if not @cache.include?(key) or @cache[key].disposed?
  99.         @cache[key] = @cache[path].clone
  100.         @cache[key].hue_change(hue)
  101.       end
  102.       return @cache[key]
  103.     end
  104.   end
  105. end
  106.  
  107. module Graphics
  108.   def self.width()  640 end unless VX
  109.   def self.height() 480 end unless VX
  110. end
  111.    
  112.  
  113. class Tembak2_Object
  114.   attr_accessor :x, :y, :end, :sprite
  115.  
  116.   def initialize
  117.     @x = -100
  118.     @y = -100
  119.     @end = false
  120.     @sprite = Sprite.new
  121.     @sprite.x = @x
  122.     @sprite.y = @y
  123.   end
  124.  
  125.   def update
  126.     @sprite.x = @x
  127.     @sprite.y = @y
  128.   end
  129.  
  130.   def dispose
  131.     @sprite.dispose
  132.   end
  133. end
  134.  
  135. class Tembak2_Bullet < Tembak2_Object
  136.   attr_accessor :speed, :type, :angle
  137.  
  138.   def initialize(x, y, speed, type, angle = 0)
  139.     super()
  140.     @x = x
  141.     @y = y
  142.     @speed = speed
  143.     @type = type
  144.     @angle = angle
  145.     @sprite.z = 10
  146.     if @type == 0
  147.       @sprite.bitmap = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::PLAYER_BULLET_IMAGE)
  148.     else
  149.       @sprite.bitmap = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::ENEMY_BULLET_IMAGE)
  150.     end    
  151.   end
  152.  
  153.   def update
  154.     super
  155.     if @type == 0
  156.       @y -= @speed
  157.     else
  158.       @y += @speed * Math.cos(@angle * 180 / 3.14)
  159.       @x += @speed * Math.sin(@angle * 180 / 3.14)
  160.     end
  161.    
  162.     @end = true if @y < 0 - @sprite.bitmap.height || @y > Graphics.height + @sprite.bitmap.height
  163.   end
  164.  
  165.   def dispose
  166.     super
  167.   end
  168. end
  169.  
  170. class Tembak2_Player < Tembak2_Object
  171.   attr_accessor :speed
  172.   attr_accessor :bulletcount
  173.   attr_accessor :bulletspeed
  174.  
  175.   def initialize
  176.     super
  177.     @x = 240
  178.     @y = 300
  179.     @speed = Hart::Tembak2::PLAYER_STARTING_MOVESPEED
  180.     @sprite.z = 100
  181.     @frame = 0
  182.     @frame_delay = 0
  183.     @bulletcount = Hart::Tembak2::SHOOT_DELAY
  184.  
  185.     @bullets = []
  186.    
  187.     temp = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::PLAYER_IMAGE)
  188.     frame_width = temp.width / Hart::Tembak2::PLAYER_IMAGE_FRAMES
  189.     frame_height = temp.height
  190.     @sprite.bitmap = Bitmap.new(frame_width, frame_height)
  191.   end
  192.  
  193.   def update
  194.     super
  195.     @frame_delay += 1
  196.     @bulletcount -= 1
  197.     if @frame_delay >= 10
  198.       @frame_delay = 0
  199.       @frame = (@frame + 1) % Hart::Tembak2::PLAYER_IMAGE_FRAMES
  200.       temp = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::PLAYER_IMAGE)
  201.       frame_width = temp.width / Hart::Tembak2::PLAYER_IMAGE_FRAMES
  202.       frame_height = temp.height
  203.       rect = Rect.new(@frame * frame_width, 0, frame_width, frame_height)
  204.       @sprite.bitmap.clear
  205.       @sprite.bitmap.blt(0, 0, temp, rect)
  206.     end
  207.   end
  208.  
  209.   def dispose
  210.     super
  211.   end
  212. end
  213.  
  214. class Tembak2_Enemy < Tembak2_Object
  215.   attr_accessor :type, :speed, :bulletcount, :bulletspeed
  216.  
  217.   def initialize(x, y, type)
  218.     super()
  219.     @x = x
  220.     @y = y
  221.     @type = type
  222.     @speed = Hart::Tembak2::ENEMY_MOVESPEED[type]
  223.     @sprite.z = 99
  224.     @frame = 0
  225.     @frame_delay = 0
  226.     @bulletcount = Hart::Tembak2::ENEMY_SHOOT_DELAY[@type]
  227.    
  228.     @bullets = []
  229.    
  230.     temp = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::ENEMY_IMAGE[@type])
  231.     frame_width = temp.width / Hart::Tembak2::ENEMY_IMAGE_FRAMES
  232.     frame_height = temp.height
  233.     @sprite.bitmap = Bitmap.new(frame_width, frame_height)
  234.   end
  235.  
  236.   def update
  237.     super
  238.     @frame_delay += 1
  239.     @bulletcount -= 1
  240.     if @frame_delay >= 10
  241.       @frame_delay = 0
  242.       @frame = (@frame + 1) % Hart::Tembak2::ENEMY_IMAGE_FRAMES
  243.       temp = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::ENEMY_IMAGE[@type])
  244.       frame_width = temp.width / Hart::Tembak2::ENEMY_IMAGE_FRAMES
  245.       frame_height = temp.height
  246.       rect = Rect.new(@frame * frame_width, 0, frame_width, frame_height)
  247.       @sprite.bitmap.clear
  248.       @sprite.bitmap.blt(0, 0, temp, rect)
  249.     end
  250.    
  251.     if @type == 3
  252.       @y -= @speed
  253.     else
  254.       @y += @speed
  255.     end
  256.    
  257.     if @type == 3
  258.       @end = true if @y < -@sprite.bitmap.height
  259.     else
  260.       @end = true if @y > Graphics.height + @sprite.bitmap.height
  261.     end
  262.   end
  263.  
  264.   def dispose
  265.     super
  266.   end
  267. end
  268.  
  269. class Tembak2_Background
  270.   def initialize
  271.     @sprite1 = Sprite.new
  272.     bitmap = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH,
  273.                       Hart::Tembak2::BACKGROUND_IMAGE)
  274.     scr = Bitmap.new(Graphics.width,Graphics.height)
  275.     @sprite1.bitmap = Bitmap.new(Graphics.width,Graphics.height)
  276.     @sprite1.bitmap.stretch_blt(scr.rect, bitmap,bitmap.rect)
  277.     @sprite1.z = 0
  278.     @sprite1.x = 0
  279.     @sprite1.y = 0
  280.     @sprite2 = Sprite.new
  281.     @sprite2.bitmap = Bitmap.new(Graphics.width,Graphics.height)
  282.     @sprite2.bitmap.stretch_blt(scr.rect, bitmap,bitmap.rect)
  283.     @sprite1.z = 0
  284.     @sprite1.x = 0
  285.     @sprite1.y = 0 - Graphics.height
  286.     @scroll_speed = Hart::Tembak2::BACKGROUND_SCROLLING_SPEED
  287.    
  288.     @sprite_obj1 = Sprite.new
  289.     @sprite_obj1.bitmap = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH,
  290.                         Hart::Tembak2::OBJECT1_IMAGE)
  291.     @sprite_obj1.x = rand(Graphics.width - @sprite_obj1.bitmap.width)
  292.     @sprite_obj1.y = 30
  293.     @sprite_obj1.z = 1
  294.     @sprite_obj2 = Sprite.new    
  295.     @sprite_obj2.bitmap = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH,
  296.                         Hart::Tembak2::OBJECT2_IMAGE)
  297.     @sprite_obj2.x = rand(Graphics.width - @sprite_obj2.bitmap.width)
  298.     @sprite_obj2.y = 185
  299.     @sprite_obj2.z = 1
  300.     @sprite_obj3 = Sprite.new
  301.     @sprite_obj3.bitmap = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH,
  302.                         Hart::Tembak2::OBJECT3_IMAGE)
  303.     @sprite_obj3.x = rand(Graphics.width - @sprite_obj3.bitmap.width)
  304.     @sprite_obj3.y = 320
  305.     @sprite_obj3.z = 1
  306.   end
  307.  
  308.   def update
  309.     @sprite1.y += @scroll_speed
  310.     @sprite2.y += @scroll_speed
  311.     if @sprite1.y >= Graphics.height || @sprite2.y >= 0
  312.       @sprite1.y = 0
  313.       @sprite2.y = -Graphics.height
  314.     end
  315.    
  316.     @sprite_obj1.y += @scroll_speed
  317.     if @sprite_obj1.y >= Graphics.height
  318.       @sprite_obj1.y = -65
  319.       @sprite_obj1.x = rand(Graphics.width - @sprite_obj1.bitmap.width)
  320.     end
  321.    
  322.     @sprite_obj2.y += @scroll_speed
  323.     if @sprite_obj2.y >= Graphics.height
  324.       @sprite_obj2.y = -65
  325.       @sprite_obj2.x = rand(Graphics.width - @sprite_obj2.bitmap.width)
  326.     end
  327.    
  328.     @sprite_obj3.y += @scroll_speed
  329.     if @sprite_obj3.y >= Graphics.height
  330.       @sprite_obj3.y = -65
  331.       @sprite_obj3.x = rand(Graphics.width - @sprite_obj3.bitmap.width)
  332.     end
  333.   end
  334.  
  335.   def dispose
  336.     @sprite1.dispose
  337.     @sprite2.dispose
  338.     @sprite_obj1.dispose
  339.     @sprite_obj2.dispose
  340.     @sprite_obj3.dispose
  341.   end
  342. end
  343.  
  344. class Tembak2_Explosion
  345.   attr_accessor :end
  346.   def initialize(x, y)
  347.     @sprite = Sprite.new
  348.     temp = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::EXPLOSION_IMAGE)
  349.     frame_width = temp.width / Hart::Tembak2::EXPLOSION_IMAGE_FRAMES
  350.     frame_height = temp.height
  351.     @sprite.bitmap = Bitmap.new(frame_width, frame_height)
  352.     @sprite.z = 120
  353.     @sprite.x = x
  354.     @sprite.y = y
  355.     @frame_delay = 0
  356.     @frame = 0
  357.     @end = false
  358.   end
  359.  
  360.   def update
  361.     @frame_delay += 1
  362.     if @frame_delay >= 10
  363.       @frame_delay = 0
  364.       @frame += 1
  365.       temp = Cache.load_bitmap(Hart::Tembak2::GRAPHICS_PATH, Hart::Tembak2::EXPLOSION_IMAGE)
  366.       frame_width = temp.width / Hart::Tembak2::EXPLOSION_IMAGE_FRAMES
  367.       frame_height = temp.height
  368.       rect = Rect.new(@frame * frame_width, 0, frame_width, frame_height)
  369.       @sprite.bitmap.clear
  370.       @sprite.bitmap.blt(0, 0, temp, rect)
  371.     end
  372.     @end = true if @frame >= 10
  373.   end
  374.  
  375.   def dispose
  376.     @sprite.dispose
  377.   end
  378. end
  379.  
  380. class Scene_Tembak2
  381.   def initialize(custom = false, bullet_speed = 0,
  382.     spawn_time = 0, movespeed = 0, limit = 0, on_score = false)
  383.     @player = Tembak2_Player.new
  384.     @enemies,@bullets,@explosions = [], [], []
  385.     @background = Tembak2_Background.new
  386.     @score = @spawn_count = 0
  387.     @custom = custom
  388.     if custom
  389.       @bullet_speed = bullet_speed
  390.       @spawn_time = spawn_time
  391.       @limit = limit
  392.       @on_score = on_score
  393.       @player.speed = movespeed
  394.       @time = 0
  395.     else
  396.       @bullet_speed = Hart::Tembak2::BULLET_STARTING_MOVESPEED
  397.       @spawn_time = Hart::Tembak2::STARTING_SPAWN_TIME
  398.       @level = 0
  399.     end
  400.   end
  401.  
  402.   def main
  403.     start                         # Start processing
  404.     perform_transition            # Perform transition
  405.     while $scene == self
  406.       Graphics.update             # Update game screen
  407.       Input.update                # Update input information
  408.       update                      # Update frame
  409.     end
  410.     Graphics.update
  411.     Graphics.freeze               # Prepare transition
  412.     terminate                     # Termination processing
  413.   end
  414.  
  415.   def perform_transition
  416.     Graphics.transition(10)
  417.   end
  418.  
  419.   def start
  420.     @spr_score = Sprite.new
  421.     @spr_score.bitmap = Bitmap.new(Graphics.width, 32)
  422.     @spr_score.bitmap.clear
  423.     @spr_score.x = 0
  424.     @spr_score.y = Graphics.height / 2
  425.     @spr_score.z = 150
  426.   end
  427.  
  428.   def terminate
  429.     @player.dispose
  430.     @background.dispose
  431.     @spr_score.dispose
  432.     @enemies.each {|enemy| enemy.dispose if !enemy.nil?}
  433.     @bullets.each {|bullet| bullet.dispose if !bullet.nil?}
  434.     @explosions.each {|explo| explo.dispose if !explo.nil?}
  435.   end
  436.  
  437.   def update
  438.     @background.update
  439.     @player.update
  440.     @spr_score.bitmap.clear
  441.     @spr_score.bitmap.draw_text(0, 0, Graphics.width, 32, "Score: #{@score}")
  442.     spawn_enemy
  443.     update_level
  444.     for enemy in @enemies
  445.       next if enemy == nil
  446.       if enemy.bulletcount <= 0
  447.         enemy.bulletcount = Hart::Tembak2::ENEMY_SHOOT_DELAY[enemy.type]
  448.         if enemy.type == 0
  449.           @bullets.push(Tembak2_Bullet.new(enemy.x + enemy.sprite.bitmap.width / 2 - Hart::Tembak2::BULLET_IMAGE_SIZE, enemy.y + enemy.sprite.bitmap.height - Hart::Tembak2::BULLET_IMAGE_SIZE, @bullet_speed, (enemy.type + 1), rand(360)))
  450.         elsif enemy.type == 1
  451.           @bullets.push(Tembak2_Bullet.new(enemy.x + enemy.sprite.bitmap.width / 2 - Hart::Tembak2::BULLET_IMAGE_SIZE, enemy.y + enemy.sprite.bitmap.height - Hart::Tembak2::BULLET_IMAGE_SIZE, @bullet_speed, (enemy.type + 1), 210))
  452.           @bullets.push(Tembak2_Bullet.new(enemy.x + enemy.sprite.bitmap.width / 2 - Hart::Tembak2::BULLET_IMAGE_SIZE, enemy.y + enemy.sprite.bitmap.height - Hart::Tembak2::BULLET_IMAGE_SIZE, @bullet_speed, (enemy.type + 1), -210))
  453.         elsif enemy.type == 2
  454.           @bullets.push(Tembak2_Bullet.new(enemy.x + enemy.sprite.bitmap.width / 2 - Hart::Tembak2::BULLET_IMAGE_SIZE, enemy.y + enemy.sprite.bitmap.height - Hart::Tembak2::BULLET_IMAGE_SIZE, @bullet_speed, (enemy.type + 1)))
  455.         end
  456.       end
  457.       enemy.update if !enemy.end
  458.       enemy.dispose if enemy.end
  459.       enemy = nil if enemy.end
  460.     end
  461.     @bullets.each {|bullet|
  462.       next if bullet == nil
  463.       bullet.update if !bullet.end
  464.       bullet.dispose if bullet.end
  465.       bullet = nil if bullet.end }
  466.     @explosions.each {|explosion|
  467.       next if explosion == nil
  468.       explosion.update if !explosion.end
  469.       explosion.dispose if explosion.end
  470.       explosion = nil if explosion.end }
  471.     update_input
  472.     check_collision
  473.     tembak2_end if @player.end
  474.   end
  475.  
  476.   def check_collision
  477.     for bullet in @bullets
  478.       next if bullet == nil || bullet.end
  479.       for enemy in @enemies
  480.         next if enemy == nil || enemy.end
  481.         if bullet.type == 0 && collide?(bullet, enemy)
  482.           Audio.se_play(Hart::Tembak2::SE_PATH + Hart::Tembak2::EXPLOSION_SOUND)
  483.           @explosions.push(Tembak2_Explosion.new(enemy.x, enemy.y))
  484.           @score += Hart::Tembak2::ENEMY_SCORE[enemy.type]
  485.          
  486.           enemy.end = true
  487.           enemy.dispose
  488.           bullet.end = true
  489.           bullet.dispose
  490.         end
  491.       end
  492.     end
  493.     for enemy in @enemies
  494.       next if enemy == nil || enemy.end
  495.       if collide?(@player, enemy, true)
  496.         Audio.se_play(Hart::Tembak2::SE_PATH + Hart::Tembak2::EXPLOSION_SOUND)
  497.         @player.end = true
  498.         @player.sprite.visible = false
  499.       end
  500.     end
  501.     for bullet in @bullets
  502.       next if bullet == nil || bullet.end
  503.       if bullet.type > 0 && collide?(bullet, @player, true)
  504.         Audio.se_play(Hart::Tembak2::SE_PATH + Hart::Tembak2::EXPLOSION_SOUND)
  505.         @player.end = true
  506.         @player.sprite.visible = false
  507.       end
  508.     end
  509.   end
  510.  
  511.   def collide?(obj1, obj2, player = false)
  512.     tolerance = player ? Hart::Tembak2::PLAYER_COLLISION_TOLERANCE : 0
  513.     return obj1.x > obj2.x - obj1.sprite.bitmap.width + tolerance &&
  514.            obj1.x < obj2.x + obj2.sprite.bitmap.width - tolerance &&
  515.            obj1.y > obj2.y - obj1.sprite.bitmap.height + tolerance &&
  516.            obj1.y < obj2.y + obj1.sprite.bitmap.height - tolerance
  517.   end
  518.  
  519.   def update_input
  520.     if Input.press?(Input::RIGHT)
  521.       @player.x = [@player.x + @player.speed,
  522.                    Graphics.width - @player.sprite.bitmap.width].min
  523.     end
  524.     if Input.press?(Input::LEFT)
  525.       @player.x = [@player.x - @player.speed,0].max
  526.     end
  527.     if Input.press?(Input::UP)
  528.       @player.y = [@player.y - @player.speed,0].max
  529.     end
  530.     if Input.press?(Input::DOWN)
  531.       @player.y = [@player.y + @player.speed,
  532.                    Graphics.height - @player.sprite.bitmap.height].min
  533.     end
  534.     if Input.press?(Input::X)
  535.       if @player.bulletcount <= 0
  536.         @player.bulletcount = Hart::Tembak2::SHOOT_DELAY
  537.         @bullets.push(Tembak2_Bullet.new(@player.x + @player.sprite.bitmap.width / 2 - 16, @player.y, @bullet_speed, 0))
  538.       end
  539.     end
  540.   end
  541.  
  542.   def spawn_enemy
  543.     @spawn_count += 1
  544.     if @spawn_count >= @spawn_time
  545.       @spawn_count = 0
  546.       type = rand(4)
  547.       if type == 3
  548.         y = Graphics.height + 65
  549.       else
  550.         y = -65
  551.       end
  552.       x = rand(Graphics.width - 32)
  553.       @enemies.push(Tembak2_Enemy.new(x, y, type))
  554.     end
  555.   end
  556.  
  557.   def update_level
  558.     if @custom
  559.       if @on_score
  560.         if @score >= @limit
  561.           @player.end = true
  562.           $game_variables[Hart::Tembak2::CUSTOM_MODE_RESULT_VARIABLE_ID] = 1
  563.         end
  564.       else
  565.         @time += 1
  566.         if @time >= @limit
  567.           @player.end = true
  568.           $game_variables[Hart::Tembak2::CUSTOM_MODE_RESULT_VARIABLE_ID] = 1
  569.         end
  570.       end
  571.     else
  572.       if @score >= 8 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  573.         @level = 8
  574.       elsif @score >= 7 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  575.         @level = 7
  576.       elsif @score >= 6 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  577.         @level = 6
  578.       elsif @score >= 5 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  579.         @level = 5
  580.       elsif @score >= 4 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  581.         @level = 4
  582.       elsif @score >= 3 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  583.         @level = 3
  584.       elsif @score >= 2 * Hart::Tembak2::LEVEL_SCORE_INTERVAL
  585.         @level = 2
  586.       elsif @score >= Hart::Tembak2::LEVEL_SCORE_INTERVAL
  587.         @level = 1
  588.       end
  589.       @bullet_speed = Hart::Tembak2::BULLET_STARTING_MOVESPEED +
  590.                   @level * Hart::Tembak2::BULLETSPEED_INTERVAL
  591.       @player.speed = Hart::Tembak2::PLAYER_STARTING_MOVESPEED +
  592.                   @level * Hart::Tembak2::MOVESPEED_INTERVAL
  593.       @spawn_time = [Hart::Tembak2::STARTING_SPAWN_TIME -
  594.                   @level * Hart::Tembak2::SPAWN_TIME_INTERVAL,5].max
  595.     end
  596.   end
  597.  
  598.   def tembak2_end
  599.     wait(60)
  600.     $game_variables[1] = @score
  601.     $game_variables[2] = @score if @score > $game_variables[2]
  602.     $scene = Scene_Map.new
  603.   end
  604.  
  605.   def wait(frames)
  606.     frames.times {[Graphics,Input].each {|i| i.update}}
  607.   end
  608. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement