diff --git a/game/engines/default/engine/resolvers.lua b/game/engines/default/engine/resolvers.lua index 34845d74f4d806b1d279da1c9767f28eb0b65828..a94bc81cfbe247b61fabe8ad0b7803014001f8f9 100644 --- a/game/engines/default/engine/resolvers.lua +++ b/game/engines/default/engine/resolvers.lua @@ -93,6 +93,28 @@ function resolvers.calc.talents(t, e) return nil end +--- Talents resolver, random choice of one +function resolvers.rngtalent(list) + return {__resolver="rngtalent", list} +end +function resolvers.calc.rngtalent(t, e) + local lvls = false + local levelup_talents = e._levelup_talents or {} + local tid = rng.table(table.keys(t[1])) + local level = t[1][tid] + + if type(level) == "table" then + levelup_talents[tid] = level + level = level.base + lvls = true + end + print("RNG Talent resolver for", e.name, ":", tid, "=>", level) + e:learnTalent(tid, true, level) + + if lvls then e._levelup_talents = levelup_talents end + return nil +end + --- Talents masteries function resolvers.tmasteries(list) return {__resolver="tmasteries", list} diff --git a/game/modules/tome/data/general/npcs/orc-rak-shor.lua b/game/modules/tome/data/general/npcs/orc-rak-shor.lua index 7f535edfa78ed9dc7a65ad274f1c086be5206c71..f5e70c1fea4ea223c217aa7eedecc843a7736586 100644 --- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua +++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua @@ -64,19 +64,25 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR", {type="armor", subtype="cloth", autoreq=true}, }, combat_armor = 0, combat_def = 5, - summon = { - {type="undead", subtype="skeleton", number=1, hasxp=false}, - {type="humanoid", subtype="ghoul", number=1, hasxp=false}, - }, - make_escort = { - {type="undead", subtype="ghoul", no_subescort=true, chance=50, number=resolvers.mbonus(3, 2)}, - {type="undead", subtype="skeleton", no_subescort=true, chance=50, number=resolvers.mbonus(3, 2)}, - }, + + necrotic_aura_base_souls = resolvers.rngavg(5, 10), resolvers.talents{ - [Talents.T_SUMMON]=1, - [Talents.T_SOUL_ROT]={base=5, every=10, max=8}, + [Talents.T_NECROTIC_AURA] = 1, + [Talents.T_AURA_MASTERY] = 5, + [Talents.T_CREATE_MINIONS]={base=4, every=5, max=7}, + [Talents.T_RIGOR_MORTIS]={base=3, every=5, max=7}, + [Talents.T_INVOKE_DARKNESS]={base=5, every=5, max=9}, + [Talents.T_VAMPIRIC_GIFT]={base=2, every=7, max=7}, }, + resolvers.rngtalent{ + [Talents.T_CIRCLE_OF_DEATH]={base=3, every=5, max=7}, + [Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=7}, + [Talents.T_WILL_O__THE_WISP]={base=3, every=5, max=7}, + [Talents.T_FORGERY_OF_HAZE]={base=3, every=5, max=7}, + [Talents.T_FROSTDUSK]={base=3, every=5, max=7}, + }, + resolvers.sustains_at_birth(), } newEntity{ base = "BASE_NPC_ORC_RAK_SHOR", @@ -128,4 +134,5 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR", [Talents.T_BONE_SHIELD]={base=5, every=150, max=8}, [Talents.T_BLOOD_SPRAY]={base=4, every=10, max=8}, }, + resolvers.sustains_at_birth(), } diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua index dc95e31fc356ba5572a49fd6dfa774cd933b483c..16334ba26b14e92cd22293c0fdfbc5e431a37b9f 100644 --- a/game/modules/tome/data/general/npcs/vampire.lua +++ b/game/modules/tome/data/general/npcs/vampire.lua @@ -51,7 +51,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=9, }, stats = { str=12, dex=12, mag=12, con=12 }, infravision = 10, - life_regen = 3, + life_regen = 3, life_rating = 14, size_category = 3, rank = 2, @@ -61,7 +61,10 @@ newEntity{ resolvers.sustains_at_birth(), - resolvers.talents{ [Talents.T_BLURRED_MORTALITY]={base=1, every=7, max=6} }, + resolvers.talents{ + [Talents.T_BLURRED_MORTALITY]={base=1, every=7, max=6}, + [Talents.T_VAMPIRIC_GIFT]={base=1, every=7, max=6}, + }, resists = { [DamageType.COLD] = 80, [DamageType.NATURE] = 80, [DamageType.LIGHT] = -50, }, blind_immune = 1, @@ -80,7 +83,10 @@ newEntity{ base = "BASE_NPC_VAMPIRE", max_life = resolvers.rngavg(40,50), combat_armor = 7, combat_def = 6, - resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5} }, + resolvers.talents{ + [Talents.T_STUN]={base=1, every=7, max=5}, + [Talents.T_INVOKE_DARKNESS]={base=3, every=7, max=5}, + }, } newEntity{ base = "BASE_NPC_VAMPIRE", @@ -91,7 +97,12 @@ newEntity{ base = "BASE_NPC_VAMPIRE", max_life = resolvers.rngavg(70,80), combat_armor = 9, combat_def = 6, - resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_BLUR_SIGHT]={base=1, every=7, max=5}, [Talents.T_ROTTING_DISEASE]={base=1, every=7, max=5}, }, + resolvers.talents{ + [Talents.T_STUN]={base=1, every=7, max=5}, + [Talents.T_BLUR_SIGHT]={base=1, every=7, max=5}, + [Talents.T_ROTTING_DISEASE]={base=1, every=7, max=5}, + [Talents.T_CIRCLE_OF_DEATH]={base=1, every=7, max=6}, + }, } newEntity{ base = "BASE_NPC_VAMPIRE", @@ -102,7 +113,13 @@ newEntity{ base = "BASE_NPC_VAMPIRE", max_life = resolvers.rngavg(80,90), combat_armor = 10, combat_def = 8, ai = "dumb_talented_simple", ai_state = { talent_in=6, }, - resolvers.talents{ [Talents.T_STUN]={base=1, every=7, max=5}, [Talents.T_BLUR_SIGHT]={base=2, every=7, max=5}, [Talents.T_PHANTASMAL_SHIELD]={base=1, every=7, max=5}, [Talents.T_ROTTING_DISEASE]={base=2, every=7, max=5}, }, + resolvers.talents{ + [Talents.T_STUN]={base=1, every=7, max=5}, + [Talents.T_BLUR_SIGHT]={base=2, every=7, max=5}, + [Talents.T_PHANTASMAL_SHIELD]={base=1, every=7, max=5}, + [Talents.T_ROTTING_DISEASE]={base=2, every=7, max=5}, + [Talents.T_COLD_FLAMES]={base=1, every=7, max=6}, + }, } newEntity{ base = "BASE_NPC_VAMPIRE", @@ -117,7 +134,14 @@ It can summon the very shades of its victims from beyond the grave to come ensla ai = "tactical", ai_state = { talent_in=4, }, resolvers.inscriptions(1, "rune"), summon = {{type="undead", number=1, hasxp=false}, }, - resolvers.talents{ [Talents.T_STUN]={base=2, every=7, max=6}, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]={base=3, every=7, max=7}, [Talents.T_PHANTASMAL_SHIELD]={base=2, every=7, max=6}, [Talents.T_ROTTING_DISEASE]={base=3, every=7, max=7}, }, + resolvers.talents{ + [Talents.T_STUN]={base=2, every=7, max=6}, + [Talents.T_SUMMON]=1, + [Talents.T_BLUR_SIGHT]={base=3, every=7, max=7}, + [Talents.T_PHANTASMAL_SHIELD]={base=2, every=7, max=6}, + [Talents.T_ROTTING_DISEASE]={base=3, every=7, max=7}, + [Talents.T_FORGERY_OF_HAZE]={base=2, every=7, max=5}, + }, on_die = function(self, who) local part = "ELDER_VAMPIRE_BLOOD" if game.player:hasQuest("brotherhood-of-alchemists") then @@ -137,7 +161,15 @@ newEntity{ base = "BASE_NPC_VAMPIRE", ai = "tactical", ai_state = { talent_in=3, }, resolvers.inscriptions(1, "rune"), summon = {{type="undead", number=1, hasxp=false}, }, - resolvers.talents{ [Talents.T_STUN]={base=4, every=7, max=8}, [Talents.T_SUMMON]=1, [Talents.T_BLUR_SIGHT]={base=4, every=7, max=8}, [Talents.T_PHANTASMAL_SHIELD]={base=5, every=7, max=8}, [Talents.T_ROTTING_DISEASE]={base=5, every=7, max=8}, }, + resolvers.talents{ + [Talents.T_FORGERY_OF_HAZE]={base=2, every=7, max=6}, + [Talents.T_IMPENDING_DOOM]={base=2, every=7, max=6}, + [Talents.T_STUN]={base=4, every=7, max=8}, + [Talents.T_SUMMON]=1, + [Talents.T_BLUR_SIGHT]={base=4, every=7, max=8}, + [Talents.T_PHANTASMAL_SHIELD]={base=5, every=7, max=8}, + [Talents.T_ROTTING_DISEASE]={base=5, every=7, max=8}, + }, make_escort = { {type="undead", number=resolvers.mbonus(2, 2)}, }, diff --git a/game/modules/tome/data/zones/dreadfell/npcs.lua b/game/modules/tome/data/zones/dreadfell/npcs.lua index 86ad9a39538ab364b9bbf276d5b9f3a7ebf67e1d..cb4194d09ad367e74c64ed85db606b41a6d38ce1 100644 --- a/game/modules/tome/data/zones/dreadfell/npcs.lua +++ b/game/modules/tome/data/zones/dreadfell/npcs.lua @@ -79,6 +79,7 @@ newEntity{ define_as = "THE_MASTER", [Talents.T_CIRCLE_OF_DEATH]={base=3, every=5, max=5}, [Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=5}, [Talents.T_WILL_O__THE_WISP]={base=3, every=5, max=5}, + [Talents.T_VAMPIRIC_GIFT]={base=2, every=7, max=5}, [Talents.T_CONGEAL_TIME]={base=2, every=5, max=5}, [Talents.T_MANATHRUST]={base=4, every=5, max=8}, diff --git a/ideas/spells.ods b/ideas/spells.ods index fd13033547cca4982c5a8a1c675a155d3453e272..dde454d624abd42d0c34b801b9896dd4faa89f60 100644 Binary files a/ideas/spells.ods and b/ideas/spells.ods differ