Skip to content
Snippets Groups Projects
Commit a8ca92f9 authored by dg's avatar dg
Browse files

Each high peak level (except the last) has a zone wide aura changing some things

git-svn-id: http://svn.net-core.org/repos/t-engine4@6007 51575b47-30f0-44d4-a5cc-537603b46e54
parent fad6f1a5
No related branches found
No related tags found
No related merge requests found
Showing
with 281 additions and 5 deletions
......@@ -4057,7 +4057,7 @@ function _M:worthExp(target)
end
--- Remove all effects based on a filter
function _M:removeEffectsFilter(t, nb)
function _M:removeEffectsFilter(t, nb, silent, force)
nb = nb or 100000
local effs = {}
local removed = 0
......@@ -4073,7 +4073,7 @@ function _M:removeEffectsFilter(t, nb)
while #effs > 0 and nb > 0 do
local eff = rng.tableRemove(effs)
self:removeEffect(eff)
self:removeEffect(eff, silent, force)
nb = nb - 1
removed = removed + 1
end
......@@ -4445,6 +4445,12 @@ function _M:addedToLevel(level, x, y)
if game.level.data.zero_gravity then self:setEffect(self.EFF_ZERO_GRAVITY, 1, {})
else self:removeEffect(self.EFF_ZERO_GRAVITY, nil, true) end
if game.level.data.effects and game.level.data.effects_allow then
for _, effid in ipairs(game.level.data.effects) do
self:setEffect(effid, 1, {})
end
end
self:check("on_added_to_level", level, x, y)
end
......
......@@ -850,12 +850,21 @@ function _M:changeLevelReal(lev, zone, params)
self.zone_name_s = nil
-- Special stuff
for uid, act in pairs(self.level.entities) do if act.setEffect then act:removeEffectsFilter(function(e) return e.zone_wide_effect end, nil, nil, true) end end
for uid, act in pairs(self.level.entities) do
if act.setEffect then
if self.level.data.zero_gravity then act:setEffect(act.EFF_ZERO_GRAVITY, 1, {})
else act:removeEffect(act.EFF_ZERO_GRAVITY, nil, true) end
end
end
if self.level.data.effects then
for uid, act in pairs(self.level.entities) do
if act.setEffect then for _, effid in ipairs(self.level.data.effects) do
act:setEffect(effid, 1, {})
end end
end
end
self.level.data.effects_allow = true
-- Level feeling
local feeling
......
game/modules/tome/data/gfx/effects/zone_aura_acid.png

3.69 KiB

game/modules/tome/data/gfx/effects/zone_aura_arcane.png

4.2 KiB

game/modules/tome/data/gfx/effects/zone_aura_blight.png

3.67 KiB

game/modules/tome/data/gfx/effects/zone_aura_cold.png

3.48 KiB

game/modules/tome/data/gfx/effects/zone_aura_darkness.png

3.36 KiB

game/modules/tome/data/gfx/effects/zone_aura_fire.png

3.35 KiB

game/modules/tome/data/gfx/effects/zone_aura_light.png

4.2 KiB

game/modules/tome/data/gfx/effects/zone_aura_lightning.png

4.22 KiB

game/modules/tome/data/gfx/effects/zone_aura_mind.png

4.27 KiB

game/modules/tome/data/gfx/effects/zone_aura_nature.png

3.64 KiB

game/modules/tome/data/gfx/effects/zone_aura_physical.png

3.98 KiB

game/modules/tome/data/gfx/effects/zone_aura_temporal.png

4 KiB

......@@ -617,7 +617,7 @@ newEffect{
type = "other",
subtype = { spacetime=true },
status = "detrimental",
cancel_on_level_change = true,
zone_wide_effect = true,
parameters = {},
on_merge = function(self, old_eff, new_eff)
return old_eff
......@@ -1848,3 +1848,255 @@ newEffect{
end
end,
}
newEffect{
name = "ZONE_AURA_FIRE",
desc = "Oil mist",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% fire damage, -10% fire resistance, -10% armour, -2 sight range.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.FIRE]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.FIRE]=10})
self:effectTemporaryValue(eff, "sight", -2)
self:effectTemporaryValue(eff, "combat_armor", -math.ceil(self:combatArmor() * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_COLD",
desc = "Grave chill",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% cold damage, -10% cold resistance, -10% physical save, -20% confusion immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.COLD]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.COLD]=10})
self:effectTemporaryValue(eff, "confusion_immune", -0.2)
self:effectTemporaryValue(eff, "combat_physresist", -math.ceil(self:combatPhysicalResist(true) * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_LIGHTNING",
desc = "Static discharge",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% lightning damage, -10% lightning resistance, -10% physical power, -20% stun immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.LIGHTNING]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.LIGHTNING]=10})
self:effectTemporaryValue(eff, "stun_immune", -0.2)
self:effectTemporaryValue(eff, "combat_dam", -math.ceil(self:combatPhysicalpower() * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_ACID",
desc = "Noxious fumes",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% acid damage, -10% acid resistance, -10% defense, -20% disarm immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.ACID]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.ACID]=10})
self:effectTemporaryValue(eff, "disarm_immune", -0.2)
self:effectTemporaryValue(eff, "combat_def", -math.ceil(self:combatDefense(true) * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_DARKNESS",
desc = "Echoes of the void",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% darkness damage, -10% darkness resistance, -10% mental save, -20% fear immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.DARKNESS]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.DARKNESS]=10})
self:effectTemporaryValue(eff, "fear_immune", -0.2)
self:effectTemporaryValue(eff, "combat_mentalresist", -math.ceil(self:combatMentalResist(true) * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_MIND",
desc = "Eerie silence",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% mind damage, -10% mind resistance, -10% spellpower, -20% silence immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.MIND]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.MIND]=10})
self:effectTemporaryValue(eff, "silence_immune", -0.2)
self:effectTemporaryValue(eff, "combat_spellpower", -math.ceil(self:combatSpellpower() * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_LIGHT",
desc = "Aura of light",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% light damage, -10% light resistance, -10% accuracy, -20% blind immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.LIGHT]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.LIGHT]=10})
self:effectTemporaryValue(eff, "blind_immune", -0.2)
self:effectTemporaryValue(eff, "combat_atk", -math.ceil(self:combatAttack() * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_ARCANE",
desc = "Aether residue",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% arcane damage, -10% arcane resistance, -10% armour hardiness, -20% stoning immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.ARCANE]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.ARCANE]=10})
self:effectTemporaryValue(eff, "stone_immune", -0.2)
self:effectTemporaryValue(eff, "combat_armor_hardiness", -math.ceil(self:combatArmorHardiness() * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_TEMPORAL",
desc = "Impossible geometries",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% temporal damage, -10% temporal resistance, -10% spell save, -20% pinning immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.TEMPORAL]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.TEMPORAL]=10})
self:effectTemporaryValue(eff, "pin_immune", -0.2)
self:effectTemporaryValue(eff, "combat_spellresist", -math.ceil(self:combatSpellResist(true) * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_PHYSICAL",
desc = "Uncontrolled anger",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% physical damage, -10% physical resistance, -10% mindpower, -20% knockback immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.PHYSICAL]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.PHYSICAL]=10})
self:effectTemporaryValue(eff, "knockback_immune", -0.2)
self:effectTemporaryValue(eff, "combat_mindpower", -math.ceil(self:combatMindpower() * 0.1))
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_BLIGHT",
desc = "Miasma",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% blight damage, -10% blight resistance, -20% healing mod, -20% disease immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.BLIGHT]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.BLIGHT]=10})
self:effectTemporaryValue(eff, "stone_immune", -0.2)
self:effectTemporaryValue(eff, "healing_factor", -0.2)
end,
deactivate = function(self, eff)
end,
}
newEffect{
name = "ZONE_AURA_NATURE",
desc = "Slimy floor",
no_stop_enter_worlmap = true,
long_desc = function(self, eff) return ("Zone-wide effect: +10% nature damage, -10% nature resistance, -10% ranged defense, -20% poison immunity.") end,
decrease = 0, no_remove = true,
type = "other",
subtype = { aura=true },
status = "detrimental",
zone_wide_effect = true,
parameters = {},
activate = function(self, eff)
self:effectTemporaryValue(eff, "resists", {[DamageType.NATURE]=-10})
self:effectTemporaryValue(eff, "inc_damage", {[DamageType.NATURE]=10})
self:effectTemporaryValue(eff, "poison_immune", -0.2)
self:effectTemporaryValue(eff, "combat_def_ranged", -math.ceil(self:combatDefenseRanged(true) * 0.1))
end,
deactivate = function(self, eff)
end,
}
......@@ -40,7 +40,7 @@ return {
map = {
class = "engine.generator.map.Roomer",
nb_rooms = 10,
rooms = {"random_room", {"pit",3}, {"lesser_vault",3}, {"greater_vault",5}},
rooms = {"random_room", {"pit",3}, {"lesser_vault",2}, {"greater_vault",3}},
rooms_config = {pit={filters={{type="orc"}, {type="naga"}, {type="dragon"}, {type="demon"}}}},
lesser_vaults_list = {"circle"},
lite_room_chance = 10,
......@@ -83,6 +83,16 @@ return {
game.player:hasQuest("high-peak"):failed_charred_scar(level)
end
end
if level.level <= 10 then
local p = game.player
local effid = rng.table{
p.EFF_ZONE_AURA_FIRE, p.EFF_ZONE_AURA_COLD, p.EFF_ZONE_AURA_LIGHTNING, p.EFF_ZONE_AURA_ACID,
p.EFF_ZONE_AURA_DARKNESS, p.EFF_ZONE_AURA_MIND, p.EFF_ZONE_AURA_LIGHT, p.EFF_ZONE_AURA_ARCANE,
p.EFF_ZONE_AURA_TEMPORAL, p.EFF_ZONE_AURA_PHYSICAL, p.EFF_ZONE_AURA_BLIGHT, p.EFF_ZONE_AURA_NATURE,
}
level.data.effects = {effid}
end
end,
on_turn = function(self)
if not game.level.allow_portals then return end
......
* RSS feed of events in a character's life, exportable to FB
* auto-leveling for beginners/lazy
* sleep => replace all talents with spcial dream talents, freeze all tmp effects
* daze => ???
after v1:
* donator's fight club
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment