-- Helper: Get or create blunt data from tool local function getBluntData(tool) local hitsLeft = tool:GetAttribute("HitsLeft") if not hitsLeft then tool:SetAttribute("HitsLeft", BluntData.BluntConfig.MaxHits) tool:SetAttribute("IsLit", false) end return tool end
hitEvent.OnServerEvent:Connect(function(player, bluntTool) if not bluntTool or not bluntTool.Parent == player.Character then return end local blunt = getBluntData(bluntTool) if not blunt:GetAttribute("IsLit") then return end
return HighnessManager Handles UI, input, and visual effects. Roblox - Advanced Weed Blunt System
local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local lightEvent = ReplicatedStorage:FindFirstChild("LightBluntEvent") local hitEvent = ReplicatedStorage:FindFirstChild("TakeHitEvent") local updateHighness = ReplicatedStorage:FindFirstChild("UpdateHighness")
function HighnessManager:AddHighness(player, amount) local highness = player:FindFirstChild("Highness") if not highness then return end highness.Value = math.min(BluntData.BluntConfig.HighnessMax, highness.Value + amount) self:UpdateClient(player, highness.Value) -- Helper: Get or create blunt data from
if highness.Value >= BluntData.BluntConfig.PassOutThreshold then self:PassOut(player) end end
BluntData.CraftingRecipe = { Weed = 1, RollingPaper = 1, Lighter = 0, -- optional } highness.Value + amount) self:UpdateClient(player
-- Camera sway if intensity > 0.1 then RunService:BindToRenderStep("WeedSway", 100, function(dt) local swayX = math.sin(tick() * 5) * intensity * 2 local swayY = math.cos(tick() * 4.3) * intensity * 1.5 workspace.CurrentCamera.CFrame *= CFrame.Angles(0, math.rad(swayX), math.rad(swayY)) end) else RunService:UnbindFromRenderStep("WeedSway") end end