add item and fortress energy through talent use

Have a really dumb question? Ask it here to get help from the experts (or those with too much time on their hands)

Moderator: Moderator

Post Reply
Message
Author
Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

add item and fortress energy through talent use

#1 Post by Lord Leks Darkmind »

adding fortress energy through talent use i was able only like this:
self:hasQuest("shertul-fortress"):gain_energy(10)
and that`s stupid, and will crash upon attempt to use it, if player does not have shertul quest. there should be a better way. help?

as for items - i`m lost. and gem`s talents doesn`t help.
maybe

Code: Select all

		equipment = resolvers.equip { type="jewelry", subtype="ring", id=true, defined="Titan powered ring" }
?
Last edited by Lord Leks Darkmind on Mon Jan 06, 2014 12:07 pm, edited 1 time in total.

Xandor Tik'Roth
Keeper
Posts: 1548
Joined: Tue Aug 12, 2003 3:08 pm
Location: The edge of the Abyss

Re: add item and fortress energy through talent use

#2 Post by Xandor Tik'Roth »

I think we need some clarification. It sounds like you're under the impression that in order to get energy to the fortress, you have to use a talent. The Transmorgification Chest is all you need. All items that you pick up (except gems, unless you have the Auto-Transmo Gems addon) will be added directly to the chest. At the end of the level, you have the option of having everything transmorgified or taking out equipment that you want/need. As far as I'm aware, there's no talent that gives fortress energy.
And it was such a good idea...

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

Re: add item and fortress energy through talent use

#3 Post by Lord Leks Darkmind »

there was no talent, you mean :lol:
i`m cheater. i don`t play games, i`m having fun messing up balance, ruining code and other stupid stuff. but coz my programming skills are...ahem... low.. i require some help.

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

Re: add item and fortress energy through talent use

#4 Post by Lord Leks Darkmind »

soo... does anyone know, how to enchant item without gems?

to no surprise, my code ain`t working, was trying to mod spell/stone-alchemy Imbue Item to use no gems and take modification from talent settings.

Code: Select all

	action = function(self, t)
		local d d = self:showInventory("Imbue which armour?", self:getInven("INVEN"), function(o) return o.type == "armor" and (o.slot == "BODY" or o.slot == "HEAD" or o.slot == "BELT") end, function(o, item)
			local nd = function(ggo) return gem.imbue_powers end, function(ggo)
				ggo.imbue_powers = { see_invisible=10, see_stealth=10, }
				-- self:removeObject(self:getInven("INVEN"), gem_item)
				o.wielder = o.wielder or {}
				table.mergeAdd(o.wielder, ggo.imbue_powers, true)
				if ggo.talent_on_spell then
					o.talent_on_spell = o.talent_on_spell or {}
					table.append(o.talent_on_spell, ggo.talent_on_spell)
				end
				o.been_imbued = true
				game.logPlayer(self, "You imbue your %s with %s.", o:getName{do_colour=true, no_count=true}, gem:getName{do_colour=true, no_count=true})
				o.name = o.name .. " ("..gem.name..")"
				o.special = true
				d.used_talent = true
				game:unregisterDialog(d)
			end
		--	nd.unload = function(self) game:unregisterDialog(d) end
			return true
		end)
		local co = coroutine.running()
		d.unload = function(self) coroutine.resume(co, self.used_talent) end
		coroutine.resume(co, self.used_talent)
		if not coroutine.yield() then return nil end
		return true
	end,
help?

lukep
Sher'Tul Godslayer
Posts: 1712
Joined: Mon Mar 14, 2011 10:32 am
Location: Canada

Re: add item and fortress energy through talent use

#5 Post by lukep »

Lord Leks Darkmind wrote:soo... does anyone know, how to enchant item without gems?
Look at Reshape Weapon/Reshape Armour from the Mindslayer's Finer Energy Manipulation tree instead:

Code: Select all

	action = function(self, t)
		local d d = self:showInventory("Reshape which weapon?", self:getInven("INVEN"), function(o) return not o.quest and o.type == "weapon" and not o.fully_reshaped end, function(o, item)
			--o.wielder = o.wielder or {}
			if (o.old_atk or 0) < t.boost(self, t) then
				o.combat.atk = (o.combat.atk or 0) - (o.old_atk or 0)
				o.combat.dam = (o.combat.dam or 0) - (o.old_dam or 0)
				o.combat.atk = (o.combat.atk or 0) + t.boost(self, t)
				o.combat.dam = (o.combat.dam or 0) + t.boost(self, t)
				o.old_atk = t.boost(self, t)
				o.old_dam = t.boost(self, t)
				game.logPlayer(self, "You reshape your %s.", o:getName{do_colour=true, no_count=true})
				o.special = true
				if not o.been_reshaped then
					o.name = "reshaped" .. " "..o.name..""
					o.been_reshaped = true
				end
				d.used_talent = true
			else
				game.logPlayer(self, "You cannot reshape your %s any further.", o:getName{do_colour=true, no_count=true})
			end
		end)
		local co = coroutine.running()
		d.unload = function(self) coroutine.resume(co, self.used_talent) end
		if not coroutine.yield() then return nil end
		return true
	end,
Some of my tools for helping make talents:
Melee Talent Creator
Annotated Talent Code (incomplete)

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

Re: add item and fortress energy through talent use

#6 Post by Lord Leks Darkmind »

many thanks!

after a while, i got this:

Code: Select all

	boost = function(self, t)
		return math.floor(self:combatStatTalentIntervalDamage(t, "combatMindpower", 3, 20))
	end,
	action = function(self, t)
		local d d = self:showInventory("Reshape which weapon?", self:getInven("INVEN"), function(o) return not o.quest and o.type == "weapon" or o.type == "armor" end, function(o, item)
		o.wielder = o.wielder or {}
		if 1 < 2 then
		o.wielder.max_life = (o.wielder.max_life or 0) + 50
		o.wielder.life_regen = (o.wielder.life_regen or 0) + 5
		o.wielder.max_mana = (o.wielder.max_mana or 0) + 50
		o.wielder.mana_regen = (o.wielder.mana_regen or 0) + 5
		o.wielder.max_stamina = (o.wielder.max_stamina or 0) + 50
		o.wielder.stamina_regen = (o.wielder.stamina_regen or 0) + 5
		o.wielder.max_air = (o.wielder.max_air or 0) + 50
		o.wielder.air_regen = (o.wielder.air_regen or 0) + 5				
		o.wielder.vim_regen = (o.wielder.vim_regen or 0) + 5		
		o.wielder.max_vim = (o.wielder.max_vim or 0) + 50
		o.wielder.psi_regen = (o.wielder.psi_regen or 0) + 5
		o.wielder.max_psi = (o.wielder.max_psi or 0) + 50
		o.wielder.max_equilibrium = (o.wielder.max_equilibrium or 0) + 50
		o.wielder.equilibrium_regen = (o.wielder.equilibrium_regen or 0) + 5
		o.wielder.max_positive = (o.wielder.max_positive or 0) + 50
		o.wielder.positive_regen = (o.wielder.positive_regen or 0) + 5
		o.wielder.max_negative = (o.wielder.max_negative or 0) + 50
		o.wielder.negative_regen = (o.wielder.negative_regen or 0) + 5
		o.wielder.max_encumber = (o.wielder.max_encumber or 0) + 30
		o.wielder.global_speed_add = (o.wielder.global_speed_add or 0) + 0.5
		o.wielder.combat_def = (o.wielder.combat_def or 0) + 5
		o.wielder.combat_armor = (o.wielder.combat_armor or 0) + 5
		o.wielder.combat_armor_hardiness = (o.wielder.combat_armor_hardiness or 0) + 5
		o.wielder.see_invisible = (o.wielder.see_invisible or 0) + 5
		o.wielder.see_stealth = (o.wielder.see_stealth or 0) + 5
		o.wielder.combat_spellpower = (o.wielder.combat_spellpower or 0) + 5
		o.wielder.combat_mindpower = (o.wielder.combat_mindpower or 0) + 5
		o.wielder.combat_atk = (o.wielder.combat_atk or 0) + 5
		o.wielder.combat_apr = (o.wielder.combat_apr or 0) + 5
		o.wielder.combat_dam = (o.wielder.combat_dam or 0) + 5
		o.wielder.spell_cooldown_reduction = (o.wielder.spell_cooldown_reduction or 0) + 0.1
		o.wielder.mindpower = (o.wielder.mindpower or 0) + 5
		o.wielder.sight = (o.wielder.sight or 0) + 1
		o.wielder.infravision = (o.wielder.infravision or 0) + 3
		o.wielder.fatigue = (o.wielder.fatigue or 0) - 5
		o.wielder.paradox_reduce_fails = (o.wielder.paradox_reduce_fails or 0) + 5
		o.wielder.combat_physresist = (o.wielder.combat_physresist or 0) + 5
		o.wielder.combat_mentalresist = (o.wielder.combat_mentalresist or 0) + 5
		o.wielder.combat_spellresist = (o.wielder.combat_spellresist or 0) + 5
		o.wielder.pin_immune = (o.wielder.pin_immune or 0) + 0.1
		o.wielder.stun_immune = (o.wielder.stun_immune or 0) + 0.1
		o.wielder.blind_immune = (o.wielder.blind_immune or 0) + 0.1
		o.wielder.confusion_immune = (o.wielder.confusion_immune or 0) + 0.1
		o.wielder.fear_immune = (o.wielder.fear_immune or 0) + 0.1
		o.wielder.knockback_immune = (o.wielder.knockback_immune or 0) + 0.1
		o.wielder.disarm_immune = (o.wielder.disarm_immune or 0) + 0.1
		o.wielder.silence_immune = (o.wielder.silence_immune or 0) + 0.1
		o.wielder.disease_immune = (o.wielder.disease_immune or 0) + 0.1
		o.wielder.poison_immune = (o.wielder.poison_immune or 0) + 0.1

         o.wielder.inc_stats = o.wielder.inc_stats or {}
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_STR] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_STR] or 0) + 5
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_DEX] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_DEX] or 0) + 5
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_MAG] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_MAG] or 0) + 5 
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_WIL] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_WIL] or 0) + 5
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_CUN] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_CUN] or 0) + 5
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_CON] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_CON] or 0) + 5 
         o.wielder.inc_stats[engine.interface.ActorStats.STAT_LCK] = (o.wielder.inc_stats[engine.interface.ActorStats.STAT_LCK] or 0) + 5 

		o.wielder.resists_cap = o.wielder.resists_cap or {all = 0}
		o.wielder.resists_cap.all = o.wielder.resists_cap.all or {}
		o.wielder.resists_cap.all = (o.wielder.resists_cap.all or 0) + 5

		o.wielder.resists = o.wielder.resists or {}
		o.wielder.resists[engine.DamageType.PHYSICAL] = (o.wielder.resists[engine.DamageType.PHYSICAL] or 0) + 5
		o.wielder.resists[engine.DamageType.LIGHTNING] = (o.wielder.resists[engine.DamageType.LIGHTNING] or 0) + 5
		o.wielder.resists[engine.DamageType.FIRE] = (o.wielder.resists[engine.DamageType.FIRE] or 0) + 5
		o.wielder.resists[engine.DamageType.ICE] = (o.wielder.resists[engine.DamageType.ICE] or 0) + 5
		o.wielder.resists[engine.DamageType.COLD] = (o.wielder.resists[engine.DamageType.COLD] or 0) + 5
		o.wielder.resists[engine.DamageType.ARCANE] = (o.wielder.resists[engine.DamageType.ARCANE] or 0) + 5
		o.wielder.resists[engine.DamageType.DARKNESS] = (o.wielder.resists[engine.DamageType.DARKNESS] or 0) + 5
		o.wielder.resists[engine.DamageType.LIGHT] = (o.wielder.resists[engine.DamageType.LIGHT] or 0) + 5
		o.wielder.resists[engine.DamageType.ACID] = (o.wielder.resists[engine.DamageType.ACID] or 0) + 5
		o.wielder.resists[engine.DamageType.TEMPORAL] = (o.wielder.resists[engine.DamageType.TEMPORAL] or 0) + 5
		o.wielder.resists[engine.DamageType.BLEED] = (o.wielder.resists[engine.DamageType.BLEED] or 0) + 5
		o.wielder.resists[engine.DamageType.NATURE] = (o.wielder.resists[engine.DamageType.NATURE] or 0) + 5
		o.wielder.resists[engine.DamageType.MIND] = (o.wielder.resists[engine.DamageType.MIND] or 0) + 5
		o.wielder.resists[engine.DamageType.BLIGHT] = (o.wielder.resists[engine.DamageType.BLIGHT] or 0) + 5
		o.wielder.resists[engine.DamageType.CORRUPTED_BLOOD] = (o.wielder.resists[engine.DamageType.CORRUPTED_BLOOD] or 0) + 5
		o.wielder.resists[engine.DamageType.SHADOWFLAME] = (o.wielder.resists[engine.DamageType.SHADOWFLAME] or 0) + 5
		o.wielder.resists[engine.DamageType.RANDOM_SILENCE] = (o.wielder.resists[engine.DamageType.RANDOM_SILENCE] or 0) + 5
		o.wielder.resists[engine.DamageType.RANDOM_CONFUSION] = (o.wielder.resists[engine.DamageType.RANDOM_CONFUSION] or 0) + 5
		o.wielder.resists[engine.DamageType.LIGHT_BLIND] = (o.wielder.resists[engine.DamageType.LIGHT_BLIND] or 0) + 5
		o.wielder.resists[engine.DamageType.MANABURN] = (o.wielder.resists[engine.DamageType.MANABURN] or 0) + 5
		o.wielder.resists[engine.DamageType.GRAVITYPIN] = (o.wielder.resists[engine.DamageType.GRAVITYPIN] or 0) + 5
		o.wielder.resists[engine.DamageType.DRAINLIFE] = (o.wielder.resists[engine.DamageType.DRAINLIFE] or 0) + 5
		o.wielder.resists[engine.DamageType.POISON] = (o.wielder.resists[engine.DamageType.POISON] or 0) + 5


 		o.wielder.inc_damage = o.wielder.inc_damage or {}
		o.wielder.inc_damage[engine.DamageType.PHYSICAL] = (o.wielder.inc_damage[engine.DamageType.PHYSICAL] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.LIGHTNING] = (o.wielder.inc_damage[engine.DamageType.LIGHTNING] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.FIRE] = (o.wielder.inc_damage[engine.DamageType.FIRE] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.ICE] = (o.wielder.inc_damage[engine.DamageType.ICE] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.COLD] = (o.wielder.inc_damage[engine.DamageType.COLD] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.ARCANE] = (o.wielder.inc_damage[engine.DamageType.ARCANE] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.DARKNESS] = (o.wielder.inc_damage[engine.DamageType.DARKNESS] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.LIGHT] = (o.wielder.inc_damage[engine.DamageType.LIGHT] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.ACID] = (o.wielder.inc_damage[engine.DamageType.ACID] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.TEMPORAL] = (o.wielder.inc_damage[engine.DamageType.TEMPORAL] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.BLEED] = (o.wielder.inc_damage[engine.DamageType.BLEED] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.NATURE] = (o.wielder.inc_damage[engine.DamageType.NATURE] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.MIND] = (o.wielder.inc_damage[engine.DamageType.MIND] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.BLIGHT] = (o.wielder.inc_damage[engine.DamageType.BLIGHT] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.CORRUPTED_BLOOD] = (o.wielder.inc_damage[engine.DamageType.CORRUPTED_BLOOD] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.SHADOWFLAME] = (o.wielder.inc_damage[engine.DamageType.SHADOWFLAME] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.RANDOM_SILENCE] = (o.wielder.inc_damage[engine.DamageType.RANDOM_SILENCE] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.RANDOM_CONFUSION] = (o.wielder.inc_damage[engine.DamageType.RANDOM_CONFUSION] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.LIGHT_BLIND] = (o.wielder.inc_damage[engine.DamageType.LIGHT_BLIND] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.MANABURN] = (o.wielder.inc_damage[engine.DamageType.MANABURN] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.GRAVITYPIN] = (o.wielder.inc_damage[engine.DamageType.GRAVITYPIN] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.DRAINLIFE] = (o.wielder.inc_damage[engine.DamageType.DRAINLIFE] or 0) + 5
		o.wielder.inc_damage[engine.DamageType.POISON] = (o.wielder.inc_damage[engine.DamageType.POISON] or 0) + 5

 		o.wielder.resists_pen = o.wielder.resists_pen or {}
		o.wielder.resists_pen[engine.DamageType.PHYSICAL] = (o.wielder.resists_pen[engine.DamageType.PHYSICAL] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.LIGHTNING] = (o.wielder.resists_pen[engine.DamageType.LIGHTNING] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.FIRE] = (o.wielder.resists_pen[engine.DamageType.FIRE] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.ICE] = (o.wielder.resists_pen[engine.DamageType.ICE] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.COLD] = (o.wielder.resists_pen[engine.DamageType.COLD] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.ARCANE] = (o.wielder.resists_pen[engine.DamageType.ARCANE] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.DARKNESS] = (o.wielder.resists_pen[engine.DamageType.DARKNESS] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.LIGHT] = (o.wielder.resists_pen[engine.DamageType.LIGHT] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.ACID] = (o.wielder.resists_pen[engine.DamageType.ACID] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.TEMPORAL] = (o.wielder.resists_pen[engine.DamageType.TEMPORAL] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.BLEED] = (o.wielder.resists_pen[engine.DamageType.BLEED] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.NATURE] = (o.wielder.resists_pen[engine.DamageType.NATURE] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.MIND] = (o.wielder.resists_pen[engine.DamageType.MIND] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.BLIGHT] = (o.wielder.resists_pen[engine.DamageType.BLIGHT] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.CORRUPTED_BLOOD] = (o.wielder.resists_pen[engine.DamageType.CORRUPTED_BLOOD] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.SHADOWFLAME] = (o.wielder.resists_pen[engine.DamageType.SHADOWFLAME] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.RANDOM_SILENCE] = (o.wielder.resists_pen[engine.DamageType.RANDOM_SILENCE] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.RANDOM_CONFUSION] = (o.wielder.resists_pen[engine.DamageType.RANDOM_CONFUSION] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.LIGHT_BLIND] = (o.wielder.resists_pen[engine.DamageType.LIGHT_BLIND] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.MANABURN] = (o.wielder.resists_pen[engine.DamageType.MANABURN] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.GRAVITYPIN] = (o.wielder.resists_pen[engine.DamageType.GRAVITYPIN] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.DRAINLIFE] = (o.wielder.resists_pen[engine.DamageType.DRAINLIFE] or 0) + 5
		o.wielder.resists_pen[engine.DamageType.POISON] = (o.wielder.resists_pen[engine.DamageType.POISON] or 0) + 5

 		o.wielder.melee_project = o.wielder.melee_project or {}
		o.wielder.melee_project[engine.DamageType.PHYSICAL] = (o.wielder.melee_project[engine.DamageType.PHYSICAL] or 0) + 5
		o.wielder.melee_project[engine.DamageType.LIGHTNING] = (o.wielder.melee_project[engine.DamageType.LIGHTNING] or 0) + 5
		o.wielder.melee_project[engine.DamageType.FIRE] = (o.wielder.melee_project[engine.DamageType.FIRE] or 0) + 5
		o.wielder.melee_project[engine.DamageType.ICE] = (o.wielder.melee_project[engine.DamageType.ICE] or 0) + 5
		o.wielder.melee_project[engine.DamageType.COLD] = (o.wielder.melee_project[engine.DamageType.COLD] or 0) + 5
		o.wielder.melee_project[engine.DamageType.ARCANE] = (o.wielder.melee_project[engine.DamageType.ARCANE] or 0) + 5
		o.wielder.melee_project[engine.DamageType.DARKNESS] = (o.wielder.melee_project[engine.DamageType.DARKNESS] or 0) + 5
		o.wielder.melee_project[engine.DamageType.LIGHT] = (o.wielder.melee_project[engine.DamageType.LIGHT] or 0) + 5
		o.wielder.melee_project[engine.DamageType.ACID] = (o.wielder.melee_project[engine.DamageType.ACID] or 0) + 5
		o.wielder.melee_project[engine.DamageType.TEMPORAL] = (o.wielder.melee_project[engine.DamageType.TEMPORAL] or 0) + 5
		o.wielder.melee_project[engine.DamageType.BLEED] = (o.wielder.melee_project[engine.DamageType.BLEED] or 0) + 5
		o.wielder.melee_project[engine.DamageType.NATURE] = (o.wielder.melee_project[engine.DamageType.NATURE] or 0) + 5
		o.wielder.melee_project[engine.DamageType.MIND] = (o.wielder.melee_project[engine.DamageType.MIND] or 0) + 5
		o.wielder.melee_project[engine.DamageType.BLIGHT] = (o.wielder.melee_project[engine.DamageType.BLIGHT] or 0) + 5
		o.wielder.melee_project[engine.DamageType.CORRUPTED_BLOOD] = (o.wielder.melee_project[engine.DamageType.CORRUPTED_BLOOD] or 0) + 5
		o.wielder.melee_project[engine.DamageType.SHADOWFLAME] = (o.wielder.melee_project[engine.DamageType.SHADOWFLAME] or 0) + 5
		o.wielder.melee_project[engine.DamageType.RANDOM_SILENCE] = (o.wielder.melee_project[engine.DamageType.RANDOM_SILENCE] or 0) + 5
		o.wielder.melee_project[engine.DamageType.RANDOM_CONFUSION] = (o.wielder.melee_project[engine.DamageType.RANDOM_CONFUSION] or 0) + 5
		o.wielder.melee_project[engine.DamageType.LIGHT_BLIND] = (o.wielder.melee_project[engine.DamageType.LIGHT_BLIND] or 0) + 5
		o.wielder.melee_project[engine.DamageType.MANABURN] = (o.wielder.melee_project[engine.DamageType.MANABURN] or 0) + 5
		o.wielder.melee_project[engine.DamageType.GRAVITYPIN] = (o.wielder.melee_project[engine.DamageType.GRAVITYPIN] or 0) + 5
		o.wielder.melee_project[engine.DamageType.DRAINLIFE] = (o.wielder.melee_project[engine.DamageType.DRAINLIFE] or 0) + 5
		o.wielder.melee_project[engine.DamageType.POISON] = (o.wielder.melee_project[engine.DamageType.POISON] or 0) + 5

 		o.wielder.ranged_project = o.wielder.ranged_project or {}
		o.wielder.ranged_project[engine.DamageType.PHYSICAL] = (o.wielder.ranged_project[engine.DamageType.PHYSICAL] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.LIGHTNING] = (o.wielder.ranged_project[engine.DamageType.LIGHTNING] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.FIRE] = (o.wielder.ranged_project[engine.DamageType.FIRE] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.ICE] = (o.wielder.ranged_project[engine.DamageType.ICE] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.COLD] = (o.wielder.ranged_project[engine.DamageType.COLD] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.ARCANE] = (o.wielder.ranged_project[engine.DamageType.ARCANE] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.DARKNESS] = (o.wielder.ranged_project[engine.DamageType.DARKNESS] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.LIGHT] = (o.wielder.ranged_project[engine.DamageType.LIGHT] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.ACID] = (o.wielder.ranged_project[engine.DamageType.ACID] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.TEMPORAL] = (o.wielder.ranged_project[engine.DamageType.TEMPORAL] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.BLEED] = (o.wielder.ranged_project[engine.DamageType.BLEED] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.NATURE] = (o.wielder.ranged_project[engine.DamageType.NATURE] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.MIND] = (o.wielder.ranged_project[engine.DamageType.MIND] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.BLIGHT] = (o.wielder.ranged_project[engine.DamageType.BLIGHT] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.CORRUPTED_BLOOD] = (o.wielder.ranged_project[engine.DamageType.CORRUPTED_BLOOD] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.SHADOWFLAME] = (o.wielder.ranged_project[engine.DamageType.SHADOWFLAME] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.RANDOM_SILENCE] = (o.wielder.ranged_project[engine.DamageType.RANDOM_SILENCE] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.RANDOM_CONFUSION] = (o.wielder.ranged_project[engine.DamageType.RANDOM_CONFUSION] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.LIGHT_BLIND] = (o.wielder.ranged_project[engine.DamageType.LIGHT_BLIND] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.MANABURN] = (o.wielder.ranged_project[engine.DamageType.MANABURN] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.GRAVITYPIN] = (o.wielder.ranged_project[engine.DamageType.GRAVITYPIN] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.DRAINLIFE] = (o.wielder.ranged_project[engine.DamageType.DRAINLIFE] or 0) + 5
		o.wielder.ranged_project[engine.DamageType.POISON] = (o.wielder.ranged_project[engine.DamageType.POISON] or 0) + 5
		game.logPlayer(self, "You reshape your %s.", o:getName{do_colour=true, no_count=true})
		o.special = true
		if not o.been_reshaped then
			o.name = "reshaped" .. " "..o.name..""
			o.been_reshaped = true
		end
		d.used_talent = true
		else
		game.logPlayer(self, "You cannot reshape your %s any further.", o:getName{do_colour=true, no_count=true})
	end
	end)
	local co = coroutine.running()
	d.unload = function(self) coroutine.resume(co, self.used_talent) end
	if not coroutine.yield() then return nil end
	return true
	end,
	info = function(self, t)
		return ([[Imbue %s with a gem, granting it additional powers.]]):format("weapon, body armour, a belt, or a head piece")
	end,
}
totally forgot about resists_cap. now added. sorry.
that ugly thing works. but there should be a better way to do that... oh, well...
thanks!

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

Re: add item and fortress energy through talent use

#7 Post by Lord Leks Darkmind »

another little improvement:

Code: Select all

		o.wielder.resists_cap = o.wielder.resists_cap or {all = 0}
		o.wielder.resists_cap.all = o.wielder.resists_cap.all or {}
		o.wielder.resists_cap.all = (o.wielder.resists_cap.all or 0) + 2

		o.wielder.resists = o.wielder.resists or {all = 0}
		o.wielder.resists.all = o.wielder.resists.all or {}
		o.wielder.resists.all = (o.wielder.resists.all or 0) + 2

		o.wielder.resists_pen = o.wielder.resists_pen or {all = 0}
		o.wielder.resists_pen.all = o.wielder.resists_pen.all or {}
		o.wielder.resists_pen.all = (o.wielder.resists_pen.all or 0) + 2

		o.wielder.negative_status_effect_immune = (o.wielder.negative_status_effect_immune or 0) + 0.05

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

Re: add item and fortress energy through talent use

#8 Post by Lord Leks Darkmind »

why this doesn`t work?!

Code: Select all

		o.wielder.talent_cd_reduction = o.wielder.talent_cd_reduction or {all = 0}
		o.wielder.talent_cd_reduction.all = o.wielder.talent_cd_reduction.all or {}
		o.wielder.talent_cd_reduction.all = (o.wielder.talent_cd_reduction.all or 0) + 5


lukep
Sher'Tul Godslayer
Posts: 1712
Joined: Mon Mar 14, 2011 10:32 am
Location: Canada

Re: add item and fortress energy through talent use

#9 Post by lukep »

The second line looks funny. o.wielder.talent_cd_reduction.all is a number, not a table, so it should be:

Code: Select all

      o.wielder.talent_cd_reduction.all = o.wielder.talent_cd_reduction.all or 0
instead.
Some of my tools for helping make talents:
Melee Talent Creator
Annotated Talent Code (incomplete)

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

Re: add item and fortress energy through talent use

#10 Post by Lord Leks Darkmind »

lukep wrote:The second line looks funny. o.wielder.talent_cd_reduction.all is a number, not a table, so it should be:

Code: Select all

      o.wielder.talent_cd_reduction.all = o.wielder.talent_cd_reduction.all or 0
instead.
nope, same crash upon attempt to select item with such (properties) description -> ...object.lua:891 attempt to index a nill value...

Lord Leks Darkmind
Yeek
Posts: 13
Joined: Sat Mar 09, 2013 1:03 am

latest stupidity follows

#11 Post by Lord Leks Darkmind »

here goes 3 cheat talents (was part of weaponshield.lua) that will (i hope) greatly help any inexperienced cheater to forge their utmost foolishness in few moments! maybe i will someday be able to make all that look (and work) better... but i wouldn't hold your breath...

Code: Select all

newTalent{
	name = "titan supremacy",
	type = {"technique/shield-defense", 1},
	require = techs_req1,
	mode = "sustained",
	no_energy = true,
	points = 1,
	no_npc_use = true, -- bwa-ha-ha-ha
	tactical = { DEFEND = 2 },
	getCooldownReduction = function(self, t) return util.bound(1) end,
	activate = function(self, t)

		self.unused_stats = self.unused_stats + 6
		self.unused_talents = self.unused_talents + 4
		self.unused_generics = self.unused_generics + 4
		self.unused_talents_types = self.unused_talents_types + 1
		self.unused_prodigies = self.unused_prodigies + 1


		return {
			max_life = self:addTemporaryValue("max_life", 80),
			life_is = self:addTemporaryValue("life", 80),
			life = self:addTemporaryValue("life_regen", 5),
			max_mana = self:addTemporaryValue("max_mana", 50),
			mana_is = self:addTemporaryValue("mana", 50),
			mana = self:addTemporaryValue("mana_regen", 5),  
			max_stamina = self:addTemporaryValue("max_stamina", 50),
			stamina_is = self:addTemporaryValue("stamina", 50),
			stamina = self:addTemporaryValue("stamina_regen", 5), 
			max_air = self:addTemporaryValue("max_air", 20),
			air_is = self:addTemporaryValue("air", 20),
			air = self:addTemporaryValue("air_regen", 1),
			vim = self:addTemporaryValue("max_vim", 20),
			vim_regen = self:addTemporaryValue("vim_regen", 2), 
			max_psi = self:addTemporaryValue("max_psi", 20), 
			psi_regen = self:addTemporaryValue("psi_regen", 5), 
			max_equi = self:addTemporaryValue("max_equilibrium", 20),
			equi = self:addTemporaryValue("equilibrium_regen", 5),
			max_positive = self:addTemporaryValue("max_positive", 20),
			fill = self:addTemporaryValue("positive_regen", 5),
			max_negative = self:addTemporaryValue("max_negative", 20),
			drain = self:addTemporaryValue("negative_regen", 5),
			max_hate = self:addTemporaryValue("max_hate", 15),
			hategain = self:addTemporaryValue("hate_regen", 5),
			encumb = self:addTemporaryValue("max_encumber", 999), 
			speed = self:addTemporaryValue("global_speed_add", 2),
			cresid = self:addTemporaryValue("resists_cap", {all=90}),
			stats = self:addTemporaryValue("inc_stats", {
				[self.STAT_STR] = 4,
				[self.STAT_DEX] = 4,
				[self.STAT_MAG] = 4,
				[self.STAT_WIL] = 4,
				[self.STAT_CUN] = 4,
				[self.STAT_CON] = 4
				}), 
			instakill = self:addTemporaryValue("instakill_immune", 5),
			silence = self:addTemporaryValue("silence_immune", 5),
			disarm = self:addTemporaryValue("disarm_immune", 5),
			stone = self:addTemporaryValue("stone_immune", 5),
			fear = self:addTemporaryValue("fear_immune", 5),
			teleport = self:addTemporaryValue("teleport_immune", 5),
			disease = self:addTemporaryValue("disease_immune", 5),
			poison = self:addTemporaryValue("poison_immune", 5),
			pin = self:addTemporaryValue("pin_immune", 5), 
			cut = self:addTemporaryValue("cut_immune", 5),
			stun = self:addTemporaryValue("stun_immune", 5),
			knock = self:addTemporaryValue("knockback_immune", 5),
			blind = self:addTemporaryValue("blind_immune", 15),
			confusion = self:addTemporaryValue("confusion_immune", 90),
			dam = self:addTemporaryValue("melee_project", {
				[DamageType.PHYSICAL] = 220,
				}),
			combat = self:addTemporaryValue("ranged_project", {
				[DamageType.PHYSICAL] = 220,
			} ),
			per = self:addTemporaryValue("inc_damage", {
				[DamageType.PHYSICAL] = 220,
				}),
			pen = self:addTemporaryValue("resists_pen", {
				[DamageType.PHYSICAL] = 220,
				}), 
			def = self:addTemporaryValue("combat_def", 18),
			armor = self:addTemporaryValue("combat_armor", 8),
			armor_hard = self:addTemporaryValue("combat_armor_hardiness", 8),
			invis = self:addTemporaryValue("see_invisible", 5),
			stealth = self:addTemporaryValue("see_stealth", 5),
			spellpower = self:addTemporaryValue("combat_spellpower", 5),
			mindpower = self:addTemporaryValue("combat_mindpower", 5),
			atk = self:addTemporaryValue("combat_atk", 45),
			apr = self:addTemporaryValue("combat_apr", 45),
			pc = self:addTemporaryValue("combat_physcrit", 35),
			sc = self:addTemporaryValue("combat_spellcrit", 35),
			power = self:addTemporaryValue("combat_dam", 5), 
			esp_rad = self:addTemporaryValue("radius_esp", 5), 
			sight = self:addTemporaryValue("sight", 5), 
			phys = self:addTemporaryValue("resists", {
				[DamageType.PHYSICAL] = 20,
				[DamageType.LIGHTNING] = 20, 
				[DamageType.FIRE] = 20,
				[DamageType.ICE] = 20, 
				[DamageType.COLD] = 20, 
				[DamageType.ARCANE] = 20, 
				[DamageType.DARKNESS] = 20, 
				[DamageType.LIGHT] = 20, 
				[DamageType.ACID] = 20, 
				[DamageType.TEMPORAL] = 20, 
				[DamageType.BLEED] = 20, 
				[DamageType.NATURE] = 20,
				[DamageType.MIND] = 20,
				[DamageType.BLIGHT] = 20,
				[DamageType.CORRUPTED_BLOOD] = 20,
				[DamageType.MANABURN] = 20,
				[DamageType.GRAVITYPIN] = 20,
				[DamageType.DRAINLIFE] = 20,
				[DamageType.POISON] = 20,
				[DamageType.FIREBURN] = 20
				}),
			eff = self:addTemporaryValue("damage_affinity", {
				[DamageType.PHYSICAL] = 20,
				}),
			lite = self:addTemporaryValue("lite", 5),
			pityId = self:addTemporaryValue("pity", 2), 
			cd = self:addTemporaryValue("spell_cooldown_reduction", 1),
			self:removeEffectsFilter{type="magical", status="detrimental"}, 
			self:removeEffectsFilter{type="physical", status="detrimental"}, 

			}
	end,

	deactivate = function(self, t, p)
		self:removeTemporaryValue("max_life", p.max_life)
		self:removeTemporaryValue("life", p.life_is)
		self:removeTemporaryValue("life_regen", p.life)
		self:removeTemporaryValue("max_mana", p.max_mana)
		self:removeTemporaryValue("mana", p.mana_is)
		self:removeTemporaryValue("mana_regen", p.mana) 
		self:removeTemporaryValue("max_stamina", p.max_stamina)
		self:removeTemporaryValue("stamina", p.stamina_is)
		self:removeTemporaryValue("stamina_regen", p.stamina) 
		self:removeTemporaryValue("max_air", p.max_air)
		self:removeTemporaryValue("air", p.air_is)
		self:removeTemporaryValue("air_regen", p.air)
		self:removeTemporaryValue("vim_regen", p.vim_regen)
		self:removeTemporaryValue("max_vim", p.vim)
		self:removeTemporaryValue("psi_regen", p.psi_regen)
		self:removeTemporaryValue("max_psi", p.max_psi)
		self:removeTemporaryValue("max_equilibrium", p.max_equi)
		self:removeTemporaryValue("equilibrium_regen", p.equi)
		self:removeTemporaryValue("max_positive", p.max_positive)
		self:removeTemporaryValue("positive_regen", p.fill)
		self:removeTemporaryValue("max_negative", p.max_negative)
		self:removeTemporaryValue("negative_regen", p.drain)
		self:removeTemporaryValue("max_hate", p.max_hate)
		self:removeTemporaryValue("hate_regen", p.hategain)
		self:removeTemporaryValue("inc_stats", p.stats) 
		self:removeTemporaryValue("max_encumber", p.encumb)
		self:removeTemporaryValue("global_speed_add", p.speed)
		self:removeTemporaryValue("instakill_immune", p.instakill)
		self:removeTemporaryValue("silence_immune", p.silence)
		self:removeTemporaryValue("disarm_immune", p.disarm)
		self:removeTemporaryValue("stone_immune", p.stone)
		self:removeTemporaryValue("fear_immune", p.fear)
		self:removeTemporaryValue("teleport_immune", p.teleport)
		self:removeTemporaryValue("disease_immune", p.disease)
		self:removeTemporaryValue("poison_immune", p.poison)
		self:removeTemporaryValue("cut_immune", p.cut)
		self:removeTemporaryValue("pin_immune", p.pin) 
		self:removeTemporaryValue("stun_immune", p.stun)
		self:removeTemporaryValue("knockback_immune", p.knock)
		self:removeTemporaryValue("blind_immune", p.blind)
		self:removeTemporaryValue("confusion_immune", p.confusion)
		self:removeTemporaryValue("resists_cap", p.cresid)
		self:removeTemporaryValue("resists", p.phys)
		self:removeTemporaryValue("melee_project", p.dam) 
		self:removeTemporaryValue("ranged_project", p.combat) 
		self:removeTemporaryValue("inc_damage", p.per)
		self:removeTemporaryValue("resists_pen", p.pen)
		self:removeTemporaryValue("damage_affinity", p.eff)
		self:removeTemporaryValue("combat_def", p.def)
		self:removeTemporaryValue("combat_armor", p.armor)
		self:removeTemporaryValue("combat_armor_hardiness", p.armor_hard)
		self:removeTemporaryValue("see_invisible", p.invis)
		self:removeTemporaryValue("see_stealth", p.stealth)
		self:removeTemporaryValue("combat_spellpower", p.spellpower)
		self:removeTemporaryValue("combat_mindpower", p.mindpower)
		self:removeTemporaryValue("combat_atk", p.atk)
		self:removeTemporaryValue("combat_apr", p.apr)
		self:removeTemporaryValue("combat_physcrit", p.pc)
		self:removeTemporaryValue("combat_spellcrit", p.sc)
		self:removeTemporaryValue("combat_dam", p.power)
		self:removeTemporaryValue("lite", p.lite) 
		self:removeTemporaryValue("pity", p.pityId) 
		self:removeTemporaryValue("spell_cooldown_reduction", p.cd)
		-- self:removeTemporaryValue("talent_cd_reduction", p.cdred)
		self:removeTemporaryValue("radius_esp", p.esp_rad)
		self:removeTemporaryValue("sight", p.sight)
		-- self:removeTemporaryValue("magicMap", p.mag_map)
		return true
	end, 

	info = function(self, t)
		return ([[Titan Supremacy.]])
	end,
} 

newTalent{
	name = "Titan Wrath",
	type = {"technique/shield-defense", 1},
	require = techs_req1,
	points = 1,
	random_ego = "attack",
	no_energy = true,
	no_npc_use = true, -- bwa-ha-ha-ha
	tactical = { ATTACKAREA = 2 },
	range = 30,
	direct_hit = true,
	reflectable = false,
	requires_target = true,
	getDamage = 25,
	getTargetCount = 14,
	action = function(self, t)
		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
		local fx, fy = self:getTarget(tg)
		if not fx or not fy then return nil end

		local nb = 14
		local affected = {}
		local first = nil

		self:project(tg, fx, fy, function(dx, dy)
			print("[Titan Wrath] targetting", fx, fy, "from", self.x, self.y)
			local actor = game.level.map(dx, dy, Map.ACTOR)
			if actor and not affected[actor] then
				ignored = false
				affected[actor] = true
				first = actor

				print("[Titan Wrath] looking for more targets", nb, " at ", dx, dy, "radius ", 35, "from", actor.name)
				self:project({type="ball", selffire=false, x=dx, y=dy, radius=35, range=0}, dx, dy, function(bx, by)
					local actor = game.level.map(bx, by, Map.ACTOR)
					if actor and not affected[actor] and self:reactionToward(actor) < 0 then
						print("[Titan Wrath] found possible actor", actor.name, bx, by, "distance", core.fov.distance(dx, dy, bx, by))
						affected[actor] = true
					end
				end)
				return true
			end
		end)

		if not first then return end
		local targets = { first }
		affected[first] = nil
		local possible_targets = table.listify(affected)
		print("[Titan Wrath] Found targets:", #possible_targets)
		for i = 2, nb do
			if #possible_targets == 0 then break end
			local act = rng.tableRemove(possible_targets)
			targets[#targets+1] = act[1]
		end

		local sx, sy = self.x, self.y
		for i, actor in ipairs(targets) do
			local tgr = {type="beam", range=self:getTalentRange(t), selffire=false, talent=t, x=sx, y=sy}
			print("[Titan Wrath] jumping from", sx, sy, "to", actor.x, actor.y)
			self:project(tgr, actor.x, actor.y, DamageType.LIGHTNING_DAZE, {dam=25, daze=self:attr("lightning_daze_tempest") or 0})
			self:project(tgr, actor.x, actor.y, DamageType.PHYSICAL, 25)
			self:project(tgr, actor.x, actor.y, DamageType.MIND, 25)
			self:project(tgr, actor.x, actor.y, DamageType.ACID, 25)
			self:project(tgr, actor.x, actor.y, DamageType.LIGHTNING, 25)
			self:project(tgr, actor.x, actor.y, DamageType.FIRE, 25)
			self:project(tgr, actor.x, actor.y, DamageType.COLD, 25)
			self:project(tgr, actor.x, actor.y, DamageType.LIGHT, 25)
			self:project(tgr, actor.x, actor.y, DamageType.DARKNESS, 25)
			self:project(tgr, actor.x, actor.y, DamageType.BLIGHT, 25)
			self:project(tgr, actor.x, actor.y, DamageType.NATURE, 25)
			self:project(tgr, actor.x, actor.y, DamageType.ARCANE, 25)
			self:project(tgr, actor.x, actor.y, DamageType.TEMPORAL, 25)
			self:project(tgr, actor.x, actor.y, DamageType.GRAVITY, 25)
			self:project(tgr, actor.x, actor.y, DamageType.ACID_BLIND, 25)
			self:project(tgr, actor.x, actor.y, DamageType.MANABURN, 25)
			self:project(tgr, actor.x, actor.y, DamageType.SLIME, 25)
			self:project(tgr, actor.x, actor.y, DamageType.INSIDIOUS_POISON, 25)
			self:project(tgr, actor.x, actor.y, DamageType.ICE, 25)
			self:project(tgr, actor.x, actor.y, DamageType.BLEED, 25)
			self:project(tgr, actor.x, actor.y, DamageType.CORRUPTED_BLOOD, 25)
			if core.shader.active() then game.level.map:particleEmitter(sx, sy, math.max(math.abs(actor.x-sx), math.abs(actor.y-sy)), "lightning_beam", {tx=actor.x-sx, ty=actor.y-sy}, {type="lightning"})
			else game.level.map:particleEmitter(sx, sy, math.max(math.abs(actor.x-sx), math.abs(actor.y-sy)), "lightning_beam", {tx=actor.x-sx, ty=actor.y-sy})
			end

			sx, sy = actor.x, actor.y
		end

		game:playSoundNear(self, "talents/lightning")

		return true
	end,
	info = function(self, t)
		return ([[titan wrath]])
	end,
}

newTalent{
	name = "Titan Move",
	type = {"technique/shield-defense", 1},
	require = techs_req1,
	no_energy = true,
	no_npc_use = true, -- bwa-ha-ha-ha
	points = 1,
	is_spell = true,
	is_teleport = true,
	tactical = { CLOSEIN = 2 },
	action = function(self, t)
	self:incMoney(5)
		local tg = {type="ball", nolock=true, pass_terrain=true, nowarning=true, range=120, radius=0, requires_knowledge=false}
		x, y = self:getTarget(tg)
		if not x then return nil end
		local _ _, x, y = self:canProject(tg, x, y)

		game.level.map:particleEmitter(self.x, self.y, 1, "teleport")
		self:teleportRandom(x, y, 0)
		game.level.map:particleEmitter(self.x, self.y, 1, "teleport")
		return true

	end,
	info = function(self, t)
		return ([[teleport]])
	end,
}

newTalent{
	name = "SupDig",
	type = {"technique/shield-defense",1},
	require = techs_req1,
	points = 1,
	random_ego = "utility",
	no_energy = true,
	range = 30,
	reflectable = false,
	no_npc_use = true,
	radius = 40,
	range = 40,
	target = function(self, t) return {type="cone", range=0, radius=40, talent=t} end,
	getDamage = 9999,
	action = function(self, t)
		local tg = self:getTalentTarget(t)
		local x, y = self:getTarget(tg)
		if not x or not y then return nil end
		for i = 1, 40 do
			self:project(tg, x, y, DamageType.DIG, {dist=40, dam=9999})
		end

		game:playSoundNear(self, "talents/earth")
		return true
	end,
	info = function(self, t)
		return ([[Digs up to %d grids into walls, trees or other impassable terrain]])
	end,
}

Radon26
Sher'Tul
Posts: 1439
Joined: Mon Jun 23, 2014 11:50 am

Re: add item and fortress energy through talent use

#12 Post by Radon26 »

so you add shit ton of different damage... are they at least AoE?

Post Reply