From e800e72f3c64214115b331226dd8057d1ea74d6a Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Tue, 30 Apr 2013 22:19:04 +0000 Subject: [PATCH] new artifact git-svn-id: http://svn.net-core.org/repos/t-engine4@6671 51575b47-30f0-44d4-a5cc-537603b46e54 --- .../tome/data/general/npcs/horror_aquatic.lua | 207 ++++++++++++++++++ .../data/general/objects/world-artifacts.lua | 63 +++++- .../modules/tome/data/zones/lake-nur/npcs.lua | 1 + .../tome/data/zones/trollmire/grids.lua | 2 +- 4 files changed, 270 insertions(+), 3 deletions(-) create mode 100644 game/modules/tome/data/general/npcs/horror_aquatic.lua diff --git a/game/modules/tome/data/general/npcs/horror_aquatic.lua b/game/modules/tome/data/general/npcs/horror_aquatic.lua new file mode 100644 index 0000000000..247bec763e --- /dev/null +++ b/game/modules/tome/data/general/npcs/horror_aquatic.lua @@ -0,0 +1,207 @@ +-- ToME - Tales of Maj'Eyal +-- Copyright (C) 2009, 2010, 2011, 2012, 2013 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +-- last updated: 10:46 AM 2/3/2010 + +local Talents = require("engine.interface.ActorTalents") + +newEntity{ + define_as = "BASE_NPC_HORROR_AQUATIC", + type = "horror", subtype = "aquatic", + display = "h", color=colors.WHITE, + blood_color = colors.BLUE, + body = { INVEN = 10 }, + autolevel = "warrior", + ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, }, + + stats = { str=20, dex=20, wil=20, mag=20, con=20, cun=20 }, + combat_armor = 5, combat_def = 10, + combat = { dam=5, atk=10, apr=5, dammod={str=0.6} }, + infravision = 10, + max_life = resolvers.rngavg(10,20), + rank = 2, + size_category = 3, + + no_breath = 1, + fear_immune = 1, +} + +newEntity{ base = "BASE_NPC_HORROR_AQUATIC", + name = "entrenched horror", color=colors.DARK_GREY, + desc ="This massive stony structure shifts and pulsates, many long, thin tentacles probing the nearby water for food.", + resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/horror_aquatic_entrenched_horror.png", display_h=2, display_y=-1}}}, + level_range = {15, nil}, exp_worth = 1, + rarity = 3, + rank = 3, + size_category = 4, + autolevel = "caster", + combat_armor = 40, combat_def = 15, + mana_regen=1, + max_life=400, + combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={mag=0.6}}, + + never_move = 1, + + resists = {all = 20,}, + + resolvers.talents{ + [Talents.T_DIG]={base=2, every=6, max=7}, + [Talents.T_EARTHEN_MISSILES]={base=2, every=6, max=7}, + [Talents.T_EARTHQUAKE]={base=2, every=6, max=7}, + }, + + talent_cd_reduction = {all=1}, + + resolvers.drops{chance=100, nb=1, {type="gem"} }, +} + +newEntity{ base = "BASE_NPC_HORROR_AQUATIC", + name = "swarming horror", color=colors.GREY, + desc ="This tiny fish-like creature moves erratically, but is constantly surrounded by others of its kind.", + level_range = {10, nil}, exp_worth = 1, + rarity = 2, + hive_swarm_rarity = 1, + rank=1, + autolevel = "zerker", + combat_armor = 10, combat_def = 10, + life_rating=6, + combat = { dam=5, atk=15, apr=20, dammod={str=0.6}, damtype=DamageType.PHYSICAL}, + ai = "dumb_talented_simple", ai_state = { ai_move="move_complex",}, + + resolvers.talents{ + [Talents.T_BLINDSIDE]={base=1, every=6, max=8}, + }, + + make_escort = { + {type="horror", subtype="aquatic", name="swarming horror", number=6, no_subescort=true}, + }, +} + +newEntity{ base = "BASE_NPC_HORROR_AQUATIC", + name = "ravenous horror", color=colors.GREY, + desc ="A vile looking liquid flows from the teeth of this agile monster. It glides through the water towards you, spined fins jutting outwards.", + level_range = {10, nil}, exp_worth = 1, + rarity = 2, + autolevel = "warriormage", + combat_armor = 10, combat_def = 10, + life_rating=12, + combat = { dam=24, atk=15, apr=20, dammod={str=0.8}, damtype=DamageType.DRAINLIFE}, + ai = "dumb_talented_simple", ai_state = { ai_move="move_complex",}, + + resolvers.talents{ + [Talents.T_BLOOD_LOCK]={base=3, every=6, max=8}, + [Talents.T_BLOOD_GRASP]={base=3, every=6, max=8}, + [Talents.T_DRAIN]={base=3, every=6, max=8}, + }, +} + +newEntity{ base = "BASE_NPC_HORROR_AQUATIC", + name = "boiling horror", color=colors.BLUE, + desc ="This frothing ball of water rages with an intense heat.", + level_range = {14, nil}, exp_worth = 1, + rarity = 2, + autolevel = "caster", + combat_armor = 4, combat_def = 24, + combat = { dam=5, atk=15, apr=20, dammod={mag=0.6}, damtype=DamageType.FIRE}, + ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1.5, }, + lite = 1, + + resists = {[DamageType.COLD] = 30, [DamageType.FIRE] = 30}, + + resolvers.talents{ + [Talents.T_FIREFLASH]={base=1, every=6, max=8}, + [Talents.T_FLAME]={base=3, every=6, max=10}, + [Talents.T_THERMAL_AURA]={base=3, every=6, max=8}, + + [Talents.T_WATER_BOLT]={base=5, every=6, max=11}, + [Talents.T_BLASTWAVE]={base=2, every=6, max=7}, + + [Talents.T_BURNING_WAKE]={base=3, every=6, max=10}, + }, + + resolvers.sustains_at_birth(), + +} + +newEntity{ base = "BASE_NPC_HORROR_AQUATIC", + name = "swarm hive", color=colors.BLACK, + desc ="This titanic mass of flesh pulsates and churns as tiny monsters burst from its orifaces.", + level_range = {15, nil}, exp_worth = 1, + rarity = 6, + rank = 3, + size_category = 5, + autolevel = "wildcaster", + combat_armor = 40, combat_def = 15, + hate_regen=1, + max_life=320, + combat = {dam=resolvers.levelup(resolvers.mbonus(25, 15), 1, 1.1), apr=0, atk=resolvers.mbonus(30, 15), dammod={mag=1}}, + ai = "tactical", + + never_move = 1, + + resists = {all = 20,}, + + summon = {{type="horror", subtype="aquatic", name="swarming horror", number=3, special_rarity="hive_swarm_rarity", hasxp=false}, }, + + resolvers.talents{ + [Talents.T_SUMMON]=1, + + [Talents.T_WILLFUL_STRIKE]={base=2, every=6, max=8}, + [Talents.T_MINDLASH]={base=3, every=5, max=9}, + [Talents.T_BLAST]={base=1, every=7, max=7}, + }, +} + +newEntity{ base = "BASE_NPC_HORROR_AQUATIC", + name = "abyssal horror", color=colors.BLACK, + desc = "This deep black form is shrouded in darkness. All you can make out are a pair of deep red eyes, hidden behind a mass of tentacles.", + resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/horror_eldritch_umbral_horror.png", display_h=2, display_y=-1}}}, + level_range = {16, nil}, exp_worth = 1, + rarity = 12, --Scary but rare + rank = 3, + size_category = 2, + autolevel = "caster", + max_life = resolvers.rngavg(100, 120), + life_rating = 22, + hate_regen=4, + combat_armor = 0, combat_def = 24, + + combat = { + dam=resolvers.levelup(resolvers.rngavg(40,52), 1, 1.4), + atk=resolvers.rngavg(25,35), apr=24, + dammod={mag=0.8, wil=0.2}, physcrit = 12, + damtype=engine.DamageType.DARKNESS, + }, + + ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, ally_compassion=0 }, + + resists = {[DamageType.DARKNESS] = 50, [DamageType.LIGHT] = -30}, + + resolvers.talents{ + [Talents.T_DARK_TORRENT]={base=1, every=5, max=8}, + [Talents.T_CREEPING_DARKNESS]={base=2, every=4, max=10}, + [Talents.T_DARK_VISION]=5, + [Talents.T_DARK_TENDRILS]={base=3, every=5, max=8}, + + [Talents.T_ABYSSAL_SHROUD]={base=2, every=8, max=7}, + + [Talents.T_TENTACLE_GRAB]={base=1, every=5, max=6}, + }, + resolvers.sustains_at_birth(), +} \ No newline at end of file diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index 53ae646d12..2880aea7b5 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -3532,7 +3532,7 @@ You suspect the effects will require a moment to recover from.]], ]=] newEntity{ base = "BASE_LONGSWORD", define_as="CORPUS", - power_source = {arcane=true, technique=true}, + power_source = {unknown=true, technique=true}, unique = true, name = "Corpathus", image = "object/artifact/corpus.png", unided_name = "bound sword", @@ -3626,7 +3626,7 @@ newEntity{ base = "BASE_LONGSWORD", define_as="CORPUS", } newEntity{ base = "BASE_LONGSWORD", - power_source = {arcane=true, psionic=true}, + power_source = {unknown=true, psionic=true}, unique = true, name = "Anmalice", image = "object/artifact/anima.png", define_as = "ANIMA", unided_name = "twisted blade", @@ -3712,6 +3712,64 @@ newEntity{ base = "BASE_LONGSWORD", end, } +newEntity{ base = "BASE_GREATSWORD", define_as="MORRIGOR", + power_source = {arcane=true, unknown=true}, + unique = true, sentient = true, + name = "Morrigor", image = "object/artifact/corpus.png", + unided_name = "jagged, segmented, sword", + desc = [[This heavy, ridged blade emanates magical power, yet as you grasp the handle an icy chill runs its course through your spine. You feel the disembodied presence of all those slain by it. In unison, they demand company.]], + level_range = {20, 30}, + rarity = 250, + require = { stat = { mag=40, }, }, + cost = 300, + material_level = 4, + combat = { + dam = 58, + apr = 12, + physcrit = 7, + dammod = {str=0.7, mag=0.7}, + melee_project={[DamageType.DRAINLIFE] = 25}, + special_on_hit = {desc="deal magical damage", fct=function(combat, who, target) + local tg = {type="ball", range=0, radius=0, selffire=false} + who:project(tg, target.x, target.y, engine.DamageType.ARCANE, who:getMag()*0.5) + who:project(tg, target.x, target.y, engine.DamageType.DARKNESS, who:getMag()*0.5) + end}, + special_on_kill = {desc="swallows the victim's soul, gaining a new power until unequipped", fct=function(combat, who, target) + local o, item, inven_id = who:findInAllInventoriesBy("define_as", "MORRIGOR") + if o.use_talent then return end + local got_talent = false + local tids = {} + for tid, _ in pairs(target.talents) do + local t = target:getTalentFromId(tid) + if t.mode == "activated" and and not t.uber not t.on_pre_use and not t.no_npc_use and not t.hide and not t.is_nature and not t.type[1]:find("/other") and not t.type[1]:find("horror") and not t.type[1]:find("race/") then + tids[#tids+1] = tid + got_talent = true + end + end + if got_talent == true then + local get_talent = rng.table(tids) + local t = target:getTalentFromId(get_talent) + o.use_talent = {} + o.use_talent.id = t.id + o.use_talent.power = (who:getTalentCooldown(t) or 5) + o.use_talent.level = 1 + o.power = 1 + o.max_power = (who:getTalentCooldown(t) or 5) + o.power_regen = 1 + end + end}, + }, + wielder = { + combat_spellpower=24, + combat_spellcrit=12, + }, + on_takeoff = function(self, who) + self.use_talent=nil + self.power_regen=nil + self.max_power=nil + end, +} + newEntity{ base = "BASE_WHIP", define_as = "HYDRA_BITE", slot_forbid = "OFFHAND", offslot = false, @@ -5716,6 +5774,7 @@ newEntity{ base = "BASE_HEAVY_BOOTS", }, } + --[=[ newEntity{ unique = true, diff --git a/game/modules/tome/data/zones/lake-nur/npcs.lua b/game/modules/tome/data/zones/lake-nur/npcs.lua index 02b8638294..b1397b30a5 100644 --- a/game/modules/tome/data/zones/lake-nur/npcs.lua +++ b/game/modules/tome/data/zones/lake-nur/npcs.lua @@ -19,6 +19,7 @@ load("/data/general/npcs/aquatic_critter.lua", function(e) if e.rarity then e.water_rarity, e.rarity = e.rarity, nil end end) load("/data/general/npcs/aquatic_demon.lua", function(e) if e.rarity then e.water_rarity, e.rarity = e.rarity, nil end end) +--load("/data/general/npcs/horror_aquatic.lua", function(e) if e.rarity then e.horror_water_rarity, e.rarity = e.rarity, nil end end) load("/data/general/npcs/horror.lua", rarity(0)) load("/data/general/npcs/snake.lua", rarity(3)) load("/data/general/npcs/plant.lua", rarity(3)) diff --git a/game/modules/tome/data/zones/trollmire/grids.lua b/game/modules/tome/data/zones/trollmire/grids.lua index 52bee7047b..782fd64e6f 100644 --- a/game/modules/tome/data/zones/trollmire/grids.lua +++ b/game/modules/tome/data/zones/trollmire/grids.lua @@ -51,7 +51,7 @@ newEntity{ can_pass = {pass_tree=1}, does_block_move = true, block_sight = true, - dig = "SHALLOW_WATER", + dig = "BOGWATER", nice_tiler = { method="replace", base={"BOGTREE", 100, 1, 20}}, } for i = 1, 20 do newEntity{ base="BOGTREE", define_as = "BOGTREE"..i, image = "terrain/water_grass_5_1.png", add_displays = class:makeTrees("terrain/tree_alpha", 13, 9)} end -- GitLab