function Create(self) self.GunTimer = Timer() self.SharpLength = Vector(FrameMan.PlayerScreenWidth/2.7, FrameMan.PlayerScreenHeight/3) self.BarrelName = "Drop Ship Hull Gib A" self.Ctrl = self:GetController() self.AnalogAim = self.Ctrl:IsMouseControlled() self.aim = self.RotAngle end function Destroy(self) if MovableMan:IsParticle(self.Barrel) then self.Barrel.ToDelete = true end end function Update(self) local gunAim = 0 local GunOffset = self.Pos + self:RotateOffset(Vector(0, -55)) -- Validate barrel if not MovableMan:IsParticle(self.Barrel) or self.Barrel.PresetName ~= self.BarrelName then self.Barrel = CreateMOSRotating(self.BarrelName, "Base.rte") MovableMan:AddParticle(self.Barrel) self.Barrel.Pos = GunOffset self.Barrel.RotAngle = gunAim end -- Aim if self.AnalogAim then -- Mouse gunAim = self.Ctrl.AnalogAim.AbsRadAngle if gunAim > 1.57 + self.RotAngle then gunAim = math.min(gunAim, self.RotAngle + 3.14) else gunAim = math.max(gunAim, self.RotAngle) end else -- KB if self.Ctrl:IsState(Controller.BODY_JUMP) then self.aim = self.aim + 0.04 elseif self.Ctrl:IsState(Controller.BODY_CROUCH) then self.aim = self.aim - 0.04 elseif self.Ctrl.AnalogAim.Magnitude > 0 then self.AnalogAim = true end if self.aim > 6.2832 then self.aim = self.aim - 6.2832 elseif self.aim < -1.5708 then self.aim = self.aim + 6.2832 end if self.aim > 1.57 then self.aim = math.min(self.aim, 3.24) else self.aim = math.max(self.aim, 0) end gunAim = self.RotAngle + self.aim end -- Sharp aim self.ViewPoint = self.Pos + Vector(math.cos(gunAim) * self.SharpLength.X, -math.sin(gunAim) * self.SharpLength.Y) -- Update barrel self.Barrel.Pos = GunOffset self.Barrel.RotAngle = gunAim self.Barrel.HFlipped = self.HFlipped -- Shoot if self.GunTimer:IsPastSimMS(75) and self.Ctrl:IsState(Controller.WEAPON_FIRE) then self.GunTimer:Reset() local Emitter = CreateAEmitter("Fire Leak", "Base.rte") -- Replace this with an emitter that emitts a bullet Emitter.Vel = self.Vel Emitter.Pos = GunOffset + self.Barrel:RotateOffset(Vector(28, 0)) Emitter.RotAngle = self.Barrel.RotAngle MovableMan:AddParticle(Emitter) end end