Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
-- DEBUFF HANDLER MODULE SCRIPT local Debuff = {} local RunService = game:GetService("RunService") Debuff.__index = Debuff Debuff.DebuffSchema = { Wither = { TickInterval = 1, Duration = 5, UniqueStatusData = { Name = "Withering", Damage = 5, Slow = 6, Color = Color3.fromRGB(100,0,0) }, OnApplied = function(EntityId,UniqueStatusData) print("Applied the debuff ",UniqueStatusData.Name," on ",EntityId.Name) end, OnRemoved = function(EntityId,UniqueStatusData) print("Removed the debuff ",UniqueStatusData.Name," on ",EntityId.Name) end, OnTick = function(EntityId,UniqueStatusData) print("Triggered the debuff ",UniqueStatusData.Name," on ",EntityId.Name) EntityId:TakeDamage(2) end, } } local ActiveDebuffs = {} function Debuff.new(entityid,endtime,nexttick,schema) local now = os.clock() local self = setmetatable({}, Debuff) self.EntityId = entityid self.EndTime = now + endtime self.NextTick = now + nexttick -- Schema Cache is better to avoid table lookups every frame on schema self.TickInterval = schema.TickInterval self.Duration = schema.Duration self.UniqueStatusData = schema.UniqueStatusData self.OnApplied = schema.OnApplied self.OnRemoved = schema.OnRemoved self.OnTick = schema.OnTick self.OnApplied(self.EntityId,self.UniqueStatusData) table.insert(ActiveDebuffs,self) return self end function Debuff:_Update(now) if now > self.EndTime + 1 then -- I like to end it on 0 self:Destroy() return false elseif now >= self.NextTick then self.NextTick = now + self.TickInterval self.OnTick(self.EntityId,self.UniqueStatusData) end return true end function Debuff:Destroy() self.OnRemoved(self.EntityId,self.UniqueStatusData) end RunService.Heartbeat:Connect(function() local now = os.clock() for i = #ActiveDebuffs, 1, -1 do local Debuff = ActiveDebuffs[i] if not Debuff:_Update(now) then ActiveDebuffs[i] = ActiveDebuffs[#ActiveDebuffs] ActiveDebuffs[#ActiveDebuffs] = nil end end end) return Debuff -- DEBUFF HANDLER SERVER SCRIPT local DebuffModule = require(game.ServerStorage.DebuffModule) local EntityModule = require(game.ServerStorage.EntityMaker9000) local RunService = game:GetService("RunService") for _,Villager in game.Workspace.Entities:GetChildren() do local VillagerInQuestion = EntityModule.new(Villager,math.random(10,12),1,2) local LiterallyThePlague = DebuffModule.new(VillagerInQuestion,5,1,DebuffModule.DebuffSchema.Wither) end
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)