Augment and DamageModifier
Augment System
Augments are custom modifiers that can be applied to items and creatures to alter combat behavior.
Augment Class
Constructor
Augment(name)Methods
| Method | Returns | Description |
|---|---|---|
getName() | string | Augment name |
addDamageModifier(modifier) | - | Add damage modifier |
getDamageModifiers() | table | Get all modifiers |
register() | - | Register augment |
Creating an Augment
local fireAugment = Augment("Fire Mastery")
-- Add damage modifier for fire attackslocal modifier = DamageModifier()modifier:setDamageType(COMBAT_FIREDAMAGE)modifier:setPercent(25) -- +25% fire damage
fireAugment:addDamageModifier(modifier)fireAugment:register()DamageModifier Class
DamageModifiers define how damage is altered by augments.
Constructor
DamageModifier()Methods
| Method | Description |
|---|---|
setDamageType(combatType) | Set damage type affected |
setPercent(percent) | Set percentage modifier |
setFlat(amount) | Set flat modifier |
setOrigin(origin) | Set combat origin |
setPhase(phase) | Set when modifier applies |
Phases:
MODIFIER_PHASE_DEALT- When dealing damageMODIFIER_PHASE_RECEIVED- When receiving damage
-- Damage reduction augmentlocal defenseModifier = DamageModifier()defenseModifier:setDamageType(COMBAT_PHYSICALDAMAGE)defenseModifier:setPercent(-15) -- -15% physical damage receiveddefenseModifier:setPhase(MODIFIER_PHASE_RECEIVED)Applying Augments
To Items
-- Add augment to itemitem:addAugment(augment)
-- Check augmentsif item:isAugmented() then local augments = item:getAugments() for _, aug in ipairs(augments) do print(aug:getName()) endend
-- Remove augmentitem:removeAugment(augment)To Creatures
-- Add to player/creatureplayer:addAugment(augment)
-- Checkif player:hasAugment(augment) then print("Has augment!")end
-- Removeplayer:removeAugment(augment)Examples
Life Steal Augment
local lifeSteal = Augment("Vampirism")
local modifier = DamageModifier()modifier:setDamageType(COMBAT_PHYSICALDAMAGE)modifier:setLifeStealPercent(10) -- 10% life stealmodifier:setPhase(MODIFIER_PHASE_DEALT)
lifeSteal:addDamageModifier(modifier)lifeSteal:register()Elemental Resistance
local iceResist = Augment("Frost Ward")
local modifier = DamageModifier()modifier:setDamageType(COMBAT_ICEDAMAGE)modifier:setPercent(-20) -- 20% ice resistancemodifier:setPhase(MODIFIER_PHASE_RECEIVED)
iceResist:addDamageModifier(modifier)iceResist:register()