diff --git a/vacuum_gambit.p8 b/vacuum_gambit.p8 index 07c4ec7..7eb9265 100644 --- a/vacuum_gambit.p8 +++ b/vacuum_gambit.p8 @@ -728,6 +728,10 @@ bullet_base = mknew{ } gun_base = mknew{ shoot_ready = -32768, + new_clip = -32768, + clip_size = false, + clip_remain = 0, + clip_interval = 0x0.80, icon = 20, ammobonus = 1, @@ -858,10 +862,22 @@ end function gun_base:shoot(x, y) if (gframe < self.shoot_ready) return false + local csz,crm = self.clip_size, self.clip_remain + if csz then + if crm < csz and gframe >= self.new_clip then + self.clip_remain = csz + self.new_clip = gframe + self.clip_interval + elseif crm == 0 then + return false + end + end if self.ammo then if (self.ammo <= 0) return false self.ammo -= 1 end + if csz then + self.clip_remain -= 1 + end self.shoot_ready = gframe + self.cooldown self:actually_shoot(x, y) return true @@ -1083,7 +1099,6 @@ vulcan_p = mknew(vulcan_e.new{ vulcan_gun_e = mknew(gun_base.new{ icon = 37, - enemy = false, cooldown = 0x0.0003, -- frames between shots ammo = nil, maxammo = nil, @@ -1101,6 +1116,14 @@ vulcan_gun_e = mknew(gun_base.new{ end }) +machine_gun_e = mknew(vulcan_gun_e.new{ + icon = 38, + clip_size = 12, + clip_interval = 0x0.005a, + dxs = {0, 0}, + xoffs = {1, -1}, +}) + vulcan_gun_p = mknew(vulcan_gun_e.new{ munition=vulcan_p, maxammo = 100, @@ -1360,9 +1383,6 @@ xl_chasey=mknew(chasey.new{ sspr(40, 0, 8, 8, self.x, self.y, 16, 16) pal() end, - init = function(ship) - ship.main_gun=ship.main_gun or zap_gun_e.new{} - end, }) -- flotilla ships @@ -1374,6 +1394,8 @@ ship_f = mknew(ship_m.new{ -- no sparks hp = 0.5, xp = 0x0.0001, + fire_off_x = 4, + fire_off_y = 4, maxspd = 3, thrust = 0.1, @@ -1384,6 +1406,9 @@ ship_f = mknew(ship_m.new{ self.xmin,self.xmax,self.ymin,self.ymax = wx,wx,wy,wy return 0,0,false,false end, + init = function(self) + if (self.gun_proto) self.main_gun = self.gun_proto.new() + end }) ship_mook = mknew(ship_f.new{ @@ -1397,12 +1422,14 @@ ship_defender = mknew(ship_f.new{ ship_turret = mknew(ship_f.new{ sprite=106, xp = 0x0.0002, + gun_proto = machine_gun_e, }) ship_skirmisher = mknew(ship_f.new{ sprite=107, xp = 0x0.0004, sparks = smokespark, sparkodds = 3, + fire_off_y = 7, }) function rnd_spawn_loc()