Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • amagad/t-engine4
  • HirumaKai/t-engine4
  • Hogulus/t-engine4
  • Inkie/t-engine4
  • Liberty/t-engine4
  • Lokean/t-engine4
  • Mawootad/t-engine4
  • Michelle/t-engine4
  • MrFrog/t-engine4
  • Nagyhal/t-engine4
  • Recaiden/t-engine4
  • RootOfAllThings/t-engine4
  • Sebsebeleb/t-engine4
  • Sheila/t-engine4
  • Shibari/t-engine4
  • Stof/t-engine4
  • Umbral/t-engine4
  • tome/t-engine4
  • 0player/t-engine4
  • BreezyIdiot/t-engine4
  • Bunny/t-engine4
  • Effigy/t-engine4
  • Hachem_Muche/t-engine4
  • razakai/t-engine4
  • Zireael/t-engine4
  • cinornu/t-engine4
  • edge2054/t-engine4
  • gordaxx727/t-engine4
  • grayswandir/t-engine4
  • helminthauge/t-engine4
  • housepet/t-engine4
  • minqmay/t-engine4
  • nsrr/t-engine4
  • orange/t-engine4
  • otowakotori/t-engine4
  • purequestion/t-engine4
  • rexorcorum/t-engine4
  • rgeens/t-engine4
  • sageacrin/t-engine4
  • stuntofthelitter/t-engine4
  • tiger_eye/t-engine4
  • xelivous/t-engine4
  • yutio888/t-engine4
43 results
Show changes
......@@ -20,7 +20,7 @@
uberTalent{
name = "Draconic Body",
mode = "passive",
cooldown = 20,
cooldown = 15,
require = { special={desc="Be close to the draconic world", fct=function(self) return game.state.birth.ignore_prodigies_special_reqs or (self:attr("drake_touched") and self:attr("drake_touched") >= 2) end} },
trigger = function(self, t, value)
if self.life - value < self.max_life * 0.3 and not self:isTalentCoolingDown(t) then
......@@ -77,7 +77,7 @@ uberTalent{
uberTalent{
name = "Never Stop Running",
mode = "sustained",
cooldown = 20,
cooldown = 8,
sustain_stamina = 10,
tactical = { CLOSEIN = 2, ESCAPE = 2 },
no_energy = true,
......@@ -112,7 +112,7 @@ uberTalent{
self:attr("darkness_darkens", -1)
end,
info = function(self, t)
return ([[You know how to protect yourself with the deepest shadows. As long as you stand on an unlit tile you gain %d armour and 50%% armour hardiness.
return ([[You know how to protect yourself with the deepest shadows. As long as you stand on an unlit tile you gain %d armour, 50%% armour hardiness and 20%% evasion.
Any time you deal darkness damage, you will unlight both the target tile and yours.
The armor bonus scales with your Constitution.]])
:format(t.ArmourBonus(self,t))
......@@ -193,8 +193,8 @@ uberTalent{
end,
info = function(self, t)
return ([[Thanks to your newfound knowledge of corruption, you've learned some tricks for toughening your body... but only if you are healthy enough to withstand the strain from the changes.
Improves your life by 250, your Defense by %d, your Armour Hardiness by 20%% and your saves by %d as your natural toughness and reflexes are pushed beyond their normal limits.
Your saves and Defense will improve with your Constitution.]])
:format(self:getCon() / 3, self:getCon() / 3)
Improves your life by 250, your defense by %d, your armour by %d, your armour hardiness by 20%% and your saves by %d as your natural toughness and reflexes are pushed beyond their normal limits.
Your saves armour and defense will improve with your Constitution.]])
:format(self:getCon() / 3, self:getCon() / 3.5, self:getCon() / 3)
end,
}
......@@ -62,6 +62,7 @@ uberTalent{
end,
info = function(self, t)
return ([[When moving over 800%% speed for at least 3 steps in the same direction, you become so fast you can blink through obstacles as if they were not there.
While moving this fast you have 50%% chances to fully ignore an attack by displacing yourself (this may only happen once per turn).
Changing direction will break the effect.]])
:format()
end,
......
......@@ -38,12 +38,23 @@ uberTalent{
end
if nb_friends > 1 then
nb_friends = math.min(nb_friends, 5)
self:setEffect(self.EFF_THROUGH_THE_CROWD, 4, {power=nb_friends * 10})
self:setEffect(self.EFF_THROUGH_THE_CROWD, 4, {power=nb_friends})
end
end,
callbackOnPartyAdd = function(self, t, actor)
if not self.player then return end
if actor:knowTalent(actor.T_THROUGH_THE_CROWD) then return end
actor:learnTalent(actor.T_THROUGH_THE_CROWD, true)
actor:forceUseTalent(actor.T_THROUGH_THE_CROWD, {ignore_cooldown=true, ignore_energy=true})
end,
activate = function(self, t)
local ret = {}
self:talentTemporaryValue(ret, "nullify_all_friendlyfire", 1)
if game.party:hasMember(self) then
for i, actor in ipairs(game.party.m_list) do if actor ~= self then
t.callbackOnPartyAdd(self, t, actor)
end end
end
return ret
end,
deactivate = function(self, t, p)
......@@ -53,7 +64,8 @@ uberTalent{
return ([[You are used to a crowded party:
- you can swap places with friendly creatures in just one tenth of a turn as a passive effect.
- you can never damage your friends or neutral creatures while this talent is active.
- you love being surrounded by friends; for each friendly creature in sight you gain +10 to all saves]])
- you love being surrounded by friends; for each friendly creature in sight you gain +10 to all saves and +3%% to global speed (max 15%%)
- every party member is also automatically granted Through The Crowd]])
:format()
end,
}
......@@ -120,16 +132,18 @@ uberTalent{
on_learn = function(self, t)
self:attr("global_speed_add", 0.2)
self:attr("avoid_pressure_traps", 1)
self.talent_cd_reduction.allpct = (self.talent_cd_reduction.allpct or 0) + 0.1
self:recomputeGlobalSpeed()
end,
on_unlearn = function(self, t)
self:attr("global_speed_add", -0.2)
self:attr("avoid_pressure_traps", -1)
self.talent_cd_reduction.allpct = self.talent_cd_reduction.allpct - 0.1
self:recomputeGlobalSpeed()
end,
info = function(self, t)
return ([[You are attuned with Nature, and she helps you in your fight against the arcane forces.
You gain 20%% permanent global speed and do not trigger pressure traps.]])
You gain 20%% permanent global speed, 10%% cooldowns reduction and do not trigger pressure traps.]])
:format()
end,
}
......@@ -145,7 +159,7 @@ uberTalent{
(self.damage_log.weapon.other and self.damage_log.weapon.other >= 50000)
)
end} },
cooldown = 20,
cooldown = 12,
radius = 1,
range = 10,
is_melee = true,
......@@ -173,6 +187,8 @@ uberTalent{
self:setMoveAnim(ox, oy, 8, 5)
end
self:removeEffectsFilter({subtype={stun=true, daze=true, pin=true, pinned=true, pinning=true}}, 50)
self:project(tg, self.x, self.y, function(px, py, tg, self)
local target = game.level.map(px, py, Map.ACTOR)
if target and target ~= self then
......@@ -186,7 +202,8 @@ uberTalent{
return true
end,
info = function(self, t)
return ([[You accurately jump to the target and deal 200%% weapon damage to all foes within radius 1 on impact as well as dazing them for 3 turns.]])
return ([[You accurately jump to the target and deal 200%% weapon damage to all foes within radius 1 on impact as well as dazing them for 3 turns.
When you jump you free yourself from any stun, daze and pinning effects.]])
:format()
end,
}
......
......@@ -47,13 +47,14 @@ uberTalent{
self:talentTemporaryValue(ret, "force_use_resist", DamageType.ARCANE)
self:talentTemporaryValue(ret, "force_use_resist_percent", 66)
self:talentTemporaryValue(ret, "resists", {[DamageType.ARCANE] = 20})
self:talentTemporaryValue(ret, "resists_cap", {[DamageType.ARCANE] = 10})
return ret
end,
on_unlearn = function(self, t)
end,
info = function(self, t)
return ([[You manifest a thin layer of aether all around you. Any attack passing through it will check arcane resistance instead of the incoming damage resistance.
In effect, all of your resistances are equal to 66%% of your arcane resistance, which is increased by 20%%.]])
In effect, all of your resistances are equal to 66%% of your arcane resistance, which is increased by 20%% (and cap increased by 10%%).]])
:format()
end,
}
......@@ -118,7 +119,7 @@ uberTalent{
info = function(self, t)
return ([[You can wrap temporal threads around you, assuming the form of a telugoroth for 10 turns.
While in this form you gain pinning, bleeding, blindness and stun immunity, 30%% temporal resistance, your temporal damage bonus is set to your current highest damage bonus + 30%%, 50%% of the damage you deal becomes temporal, and you gain 20%% temporal resistance penetration.
You also are able to cast two anomalies: Anomaly Rearrange and Anomaly Temporal Storm.]])
You also are able to cast anomalies: Anomaly Rearrange, Anomaly Temporal Storm, Anomaly Flawed Design, Anomaly Gravity Pull and Anomaly Wormhole.]])
:format()
end,
}
......
......@@ -102,12 +102,14 @@ uberTalent{
end
end)
self:attackTarget(target, nil, 1.5 + (destroyed and 3.5 or 0), true)
if self:attackTarget(target, nil, 1.5 + (destroyed and 3.5 or 0), true) then
target:setEffect(target.EFF_COUNTERSTRIKE, 2, {power=20, no_ct_effect=true, src=self, nb=1})
end
return true
end,
info = function(self, t)
return ([[You deal a massive blow to your foe, smashing it for 150%% weapon damage and knocking it back 4 tiles.
If the knockback makes it hit a wall, it will smash down the wall and deal an additional 350%% weapon damage.]])
return ([[You deal a massive blow to your foe, smashing it for 150%% weapon damage and knocking it back 4 tiles (ignoring knockback resistance or physical save).
If the knockback makes it hit a wall, it will smash down the wall, deal an additional 350%% weapon damage and apply the Counterstrike effect.]])
:format()
end,
}
......@@ -154,16 +156,18 @@ uberTalent{
mode = "passive",
require = { special={desc="Be able to use massive armours", fct=function(self) return self:getTalentLevelRaw(self.T_ARMOUR_TRAINING) >= 3 end} },
on_learn = function(self, t)
self:attr("size_category", 1)
self:attr("max_encumber", 500)
self:incIncStat(self.STAT_STR, 40)
self:incIncStat(self.STAT_STR, 50)
end,
on_unlearn = function(self, t)
self:attr("size_category", -1)
self:attr("max_encumber", -500)
self:incIncStat(self.STAT_STR, -40)
self:incIncStat(self.STAT_STR, -50)
end,
info = function(self, t)
return ([[Your strength is legendary; fatigue and physical exertion mean nothing to you.
Your fatigue is permanently set to 0, carrying capacity increased by 500, and strength increased by 40.]])
Your fatigue is permanently set to 0, carrying capacity increased by 500, and strength increased by 50 and you gain a size category.]])
:format()
end,
}
......@@ -219,8 +223,8 @@ uberTalent{
mode = "passive",
info = function(self, t)
return ([[A strong body is key to a strong mind, and a strong mind can be powerful enough to make a strong body.
This prodigy grants a Mindpower bonus equal to 50%% of your Strength.
Additionally, you treat all weapons as having an additional 30%% Willpower modifier.]])
This prodigy grants a Mindpower bonus equal to 60%% of your Strength.
Additionally, you treat all weapons as having an additional 40%% Willpower modifier.]])
:format()
end,
}
......@@ -130,10 +130,12 @@ uberTalent{
self.inc_damage_actor_type = self.inc_damage_actor_type or {}
self.inc_damage_actor_type.construct = (self.inc_damage_actor_type.construct or 0) + 1000
self.inc_damage_actor_type.humanoid = (self.inc_damage_actor_type.humanoid or 0) + 20
self.inc_damage_actor_type.humanoid = (self.inc_damage_actor_type.giant or 0) + 20
end,
on_unlearn = function(self, t)
self.inc_damage_actor_type.construct = (self.inc_damage_actor_type.construct or 0) - 1000
self.inc_damage_actor_type.humanoid = (self.inc_damage_actor_type.humanoid or 0) - 20
self.inc_damage_actor_type.humanoid = (self.inc_damage_actor_type.giant or 0) - 20
end,
require = { special={desc="Possess and wear two of Garkul's artifacts and know all about Garkul's life", fct=function(self)
local o1 = self:findInAllInventoriesBy("define_as", "SET_GARKUL_TEETH")
......@@ -147,7 +149,7 @@ uberTalent{
))
end} },
info = function(self, t)
return ([[Garkul's spirit is with you. You now deal 1000%% more damage to constructs and 20%% more damage to humanoids.]])
return ([[Garkul's spirit is with you. You now deal 1000%% more damage to constructs and 20%% more damage to humanoids and giants.]])
:format()
end,
}
......@@ -177,13 +179,15 @@ uberTalent{
on_learn = function(self, t)
self.inc_stats[self.STAT_LCK] = (self.inc_stats[self.STAT_LCK] or 0) + 40
self:onStatChange(self.STAT_LCK, 40)
self:attr("phase_shift", 0.1)
end,
on_unlearn = function(self, t)
self.inc_stats[self.STAT_LCK] = (self.inc_stats[self.STAT_LCK] or 0) - 40
self:onStatChange(self.STAT_LCK, -40)
self:attr("phase_shift", -0.1)
end,
info = function(self, t)
return ([[Every day is your lucky day! You gain a permanent +40 luck bonus.]])
return ([[Every day is your lucky day! You gain a permanent +40 luck bonus and 10%% to move out of the way of every attack.]])
:format()
end,
}
......
......@@ -1015,7 +1015,7 @@ newEffect{
eff.leveid = game.zone.short_name.."-"..game.level.level
end,
deactivate = function(self, eff)
if (eff.allow_override or (self:canBe("worldport") and not self:attr("never_move"))) and eff.dur <= 0 then
if (eff.allow_override or (self == game:getPlayer(true) and self:canBe("worldport") and not self:attr("never_move"))) and eff.dur <= 0 then
game:onTickEnd(function()
if eff.leveid == game.zone.short_name.."-"..game.level.level and game.player.can_change_zone then
game.logPlayer(self, "You are yanked out of this place!")
......@@ -1041,6 +1041,7 @@ newEffect{
eff.leveid = game.zone.short_name.."-"..game.level.level
end,
deactivate = function(self, eff)
if self ~= game:getPlayer(true) then return end
local seen = false
-- Check for visible monsters, only see LOS actors, so telepathy wont prevent it
core.fov.calc_circle(self.x, self.y, game.level.map.w, game.level.map.h, 20, function(_, x, y) return game.level.map:opaque(x, y) end, function(_, x, y)
......@@ -1078,6 +1079,7 @@ newEffect{
eff.leveid = game.zone.short_name.."-"..game.level.level
end,
deactivate = function(self, eff)
if self ~= game:getPlayer(true) then return end
local seen = false
-- Check for visible monsters, only see LOS actors, so telepathy wont prevent it
core.fov.calc_circle(self.x, self.y, game.level.map.w, game.level.map.h, 20, function(_, x, y) return game.level.map:opaque(x, y) end, function(_, x, y)
......@@ -2503,6 +2505,9 @@ newEffect{
self:effectTemporaryValue(eff, "talent_cd_reduction", {[self.T_ANOMALY_REARRANGE] = -4, [self.T_ANOMALY_TEMPORAL_STORM] = -4})
self:learnTalent(self.T_ANOMALY_REARRANGE, true)
self:learnTalent(self.T_ANOMALY_TEMPORAL_STORM, true)
self:learnTalent(self.T_ANOMALY_FLAWED_DESIGN, true)
self:learnTalent(self.T_ANOMALY_GRAVITY_PULL, true)
self:learnTalent(self.T_ANOMALY_WORMHOLE, true)
self.replace_display = mod.class.Actor.new{
image = "npc/elemental_temporal_telugoroth.png",
......@@ -2515,6 +2520,9 @@ newEffect{
deactivate = function(self, eff)
self:unlearnTalent(self.T_ANOMALY_REARRANGE)
self:unlearnTalent(self.T_ANOMALY_TEMPORAL_STORM)
self:unlearnTalent(self.T_ANOMALY_FLAWED_DESIGN)
self:unlearnTalent(self.T_ANOMALY_GRAVITY_PULL)
self:unlearnTalent(self.T_ANOMALY_WORMHOLE)
self.replace_display = nil
self:removeAllMOs()
game.level.map:updateMap(self.x, self.y)
......
......@@ -2359,20 +2359,22 @@ newEffect{
newEffect{
name = "THROUGH_THE_CROWD", image = "talents/through_the_crowd.png",
desc = "Through The Crowd",
long_desc = function(self, eff) return ("Increases physical save, spell save, and mental save by %d."):format(eff.power) end,
long_desc = function(self, eff) return ("Increases physical save, spell save, and mental save by %d. Global speed increased by %d%%."):format(eff.power * 10, util.bound(eff.power, 0, 5) * 3) end,
type = "other",
subtype = { miscellaneous=true },
status = "beneficial",
parameters = { power=10 },
activate = function(self, eff)
eff.presid = self:addTemporaryValue("combat_physresist", eff.power)
eff.sresid = self:addTemporaryValue("combat_spellresist", eff.power)
eff.mresid = self:addTemporaryValue("combat_mentalresist", eff.power)
eff.presid = self:addTemporaryValue("combat_physresist", eff.power * 10)
eff.sresid = self:addTemporaryValue("combat_spellresist", eff.power * 10)
eff.mresid = self:addTemporaryValue("combat_mentalresist", eff.power * 10)
eff.speedid = self:addTemporaryValue("global_speed_add", util.bound(eff.power, 0, 5) * 0.03)
end,
deactivate = function(self, eff)
self:removeTemporaryValue("combat_physresist", eff.presid)
self:removeTemporaryValue("combat_spellresist", eff.sresid)
self:removeTemporaryValue("combat_mentalresist", eff.mresid)
self:removeTemporaryValue("global_speed_add", eff.speedid)
end,
}
......@@ -3232,4 +3234,18 @@ newEffect{
self:effectTemporaryValue(eff, "combat_def", -eff.power)
self:effectTemporaryValue(eff, "blind_fighted", 1)
end,
}
newEffect{
name = "PIN_DOWN",
desc = "Pinned Down", image = "talents/pin_down.png",
long_desc = function(self, eff) return ("The next Steady Shot or Shoot has 100%% chance to be a critical hit and mark."):format() end,
type = "other",
subtype = { tactic=true },
status = "detrimental",
parameters = {power = 1},
activate = function(self, eff)
end,
deactivate = function(self, eff)
end,
}
\ No newline at end of file
......@@ -2499,6 +2499,7 @@ newEffect{
on_gain = function(self, err) return "#Target# is speeding up.", "+Fast As Lightning" end,
on_lose = function(self, err) return "#Target# is slowing down.", "-Fast As Lightning" end,
activate = function(self, eff)
self:effectTemporaryValue(eff, "phase_shift", 0.5)
end,
deactivate = function(self, eff)
if eff.particle then
......@@ -3751,26 +3752,6 @@ newEffect{
end,
}
newEffect{
name = "PIN_DOWN",
desc = "Pinned Down", image = "talents/pin_down.png",
long_desc = function(self, eff) return ("Pinned down, preventing movement and giving attackers %d%% increased critical strike chance and critical strike damage."):format(eff.power) end,
type = "physical",
subtype = { pin=true },
status = "detrimental",
parameters = {power = 1},
on_gain = function(self, err) return nil, "+Pinned Down" end,
on_lose = function(self, err) return nil, "-Pinned Down" end,
activate = function(self, eff)
if eff.pin==1 then eff.tmpid = self:addTemporaryValue("never_move", 1) end
eff.critid = self:addTemporaryValue("combat_crit_vulnerable", eff.power)
end,
deactivate = function(self, eff)
if eff.tmpid then self:removeTemporaryValue("never_move", eff.tmpid) end
self:removeTemporaryValue("combat_crit_vulnerable", eff.critid)
end,
}
newEffect{
name = "RAPID_MOVEMENT", image = "talents/rapid_shot.png",
desc = "Rapid Movement",
......@@ -3915,7 +3896,7 @@ newEffect{
subtype = { tactic=true },
status = "beneficial",
charges = function(self, eff) return eff.charges end,
parameters = { power=5, duration=1, sight=1, dam=10, max_power=15, charges=3 },
parameters = { power=5, duration=1, sight=1, max_power=15, charges=3 },
activate = function(self, eff)
self:effectTemporaryValue(eff, "cancel_damage_chance", eff.max_power)
self:effectTemporaryValue(eff, "sight", eff.sight)
......@@ -3984,29 +3965,40 @@ newEffect{
end,
}
-- Premptive Chromatic resistance
newEffect{
name = "URESLAK_MOLTEN_SCALES", image = "shockbolt/object/artifact/ureslaks_molted_scales.png",
desc = "Ureslak's Molten Scales",
long_desc = function(self, eff) return ("Reacts to attacks by raising resistances for 5 turns."):format() end,
name = "CHROMATIC_RESONANCE", image = "shockbolt/object/artifact/ureslaks_molted_scales.png",
desc = "Chromatic Resonance",
long_desc = function(self, eff)
local dt_descs = table.concatNice(eff.type_descs, ", ", ", or ")
return ("Preemptively reacts to %s damage, increasing the appropriate resistance by %d for 5 turns."):format(dt_descs, eff.power)
end,
type = "physical",
subtype = { nature=true, resist=true },
status = "beneficial",
parameters = { },
on_gain = function(self, err) return nil, true end,
on_lose = function(self, err) return nil, true end,
parameters = {power=15, resist_types={"FIRE", "COLD", "LIGHTNING", "NATURE", "DARKNESS"} },
on_gain = function(self, err) return "#Target##OLIVE_DRAB# shimmers in multiple hues.", true end,
on_lose = function(self, err) return "#Target#'s#OLIVE_DRAB# multi-hued shimmer fades.", true end,
callbackOnTakeDamageBeforeResists = function(self, eff, src, x, y, type, dam, state)
if not self:hasEffect(self.EFF_URESLAK_MOLTEN_SCALES_RESIST) and dam > 0 and src ~= self and (
(type == DamageType.FIRE) or
(type == DamageType.COLD) or
(type == DamageType.LIGHTNING) or
(type == DamageType.NATURE) or
(type == DamageType.DARKNESS)
) then
self:setEffect(self.EFF_URESLAK_MOLTEN_SCALES_RESIST, 5, {type=type})
if dam > 0 and src ~= self and not self:hasEffect(self.EFF_CHROMATIC_RESISTANCE) then
for i, r_type in ipairs(eff.resist_types) do
if type == r_type then
self:setEffect(self.EFF_CHROMATIC_RESISTANCE, 5, {type=type, power=eff.power})
break
end
end
end
return {dam=dam}
end,
activate = function(self, eff)
eff.type_descs = {}
for i = #eff.resist_types, 1, -1 do
local dt = DamageType[eff.resist_types[i]] and DamageType:get(eff.resist_types[i])
if dt then
table.insert(eff.type_descs, (dt.text_color or "#aaaaaa#")..dt.name:capitalize().."#LAST#")
else table.remove(eff.resist_types, i)
end
end
if core.shader.active() then
self:effectParticles(eff, {type="shader_shield", args={size_factor=1.5, img="ureslak_tentacles"}, shader={type="tentacles", wobblingType=0, appearTime=0.8, time_factor=2000, noup=0.0}})
end
......@@ -4014,16 +4006,36 @@ newEffect{
}
newEffect{
name = "URESLAK_MOLTEN_SCALES_RESIST", image = "shockbolt/object/artifact/ureslaks_molted_scales.png",
desc = "Ureslak's Molten Scales (Resistance)",
long_desc = function(self, eff) return ("%s resistance increased by 15%%."):format(DamageType:get(eff.type).name:capitalize()) end,
name = "CHROMATIC_RESISTANCE", image = "shockbolt/object/artifact/ureslaks_molted_scales.png",
desc = "Chromatic Resistance",
long_desc = function(self, eff)
local dt = DamageType[eff.type] and DamageType:get(eff.type)
local type_desc = dt and ((dt.text_color or "#aaaaaa#")..dt.name:capitalize().."#LAST# ") or ""
return ("%sresistance increased by %d%%."):format(type_desc, eff.power)
end,
type = "physical",
subtype = { nature=true, resist=true },
charges = function(self, eff) return eff.dtype.name:capitalize() end,
status = "beneficial",
parameters = { },
on_gain = function(self, err) return "#OLIVE_DRAB##Target#'s molten scales react to the incomming damage and start glowing!", true end,
on_lose = function(self, err) return "#Target#'s molten scales do not glow anymore.", true end,
parameters = { power=15 },
on_gain = function(self, eff)
local dt = DamageType[eff.type] and DamageType:get(eff.type)
if dt then
eff.dtype = dt
return "#Target##OLIVE_DRAB# resonates with "..(dt.text_color or "#aaaaaa#")..dt.name:capitalize().."#LAST# damage!", true
else eff.type = nil
end
end,
on_lose = function(self, eff)
if eff.dtype then
return "#Target##OLIVE_DRAB# no longer resonates with "..(eff.dtype.text_color or "#aaaaaa#")..eff.dtype.name:capitalize().."#LAST# damage.", true
end
end,
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[eff.type] = 15})
if eff.type then
self:effectTemporaryValue(eff, "resists", {[eff.type] = eff.power})
else
self:removeEffect(eff.effect_id)
end
end,
}
......@@ -44,4 +44,9 @@ newEntity{ base = "BASE_STAFF",
combat_critical_power = 20,
confusion_immune = 0.2,
},
set_list = { {"define_as","GEM_TELOS"}, {"define_as","TELOS_TOP_HALF"} },
on_set_complete = function(self, who)
end,
on_set_broken = function(self, who)
end,
}