Page 1 of 1

add item and fortress energy through talent use

Posted: Wed Jan 01, 2014 3:26 pm
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" }
?

Re: add item and fortress energy through talent use

Posted: Thu Jan 02, 2014 10:40 pm
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.

Re: add item and fortress energy through talent use

Posted: Sat Jan 04, 2014 3:24 am
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.

Re: add item and fortress energy through talent use

Posted: Sat Jan 04, 2014 3:51 am
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?

Re: add item and fortress energy through talent use

Posted: Sat Jan 04, 2014 8:21 am
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,

Re: add item and fortress energy through talent use

Posted: Sat Jan 04, 2014 11:24 am
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!

Re: add item and fortress energy through talent use

Posted: Mon Jan 06, 2014 12:04 pm
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

Re: add item and fortress energy through talent use

Posted: Mon Jan 06, 2014 1:01 pm
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


Re: add item and fortress energy through talent use

Posted: Mon Jan 06, 2014 9:07 pm
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.

Re: add item and fortress energy through talent use

Posted: Tue Jan 07, 2014 3:10 am
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...

latest stupidity follows

Posted: Tue Jan 12, 2016 11:37 pm
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,
}

Re: add item and fortress energy through talent use

Posted: Wed Jan 13, 2016 12:10 am
by Radon26
so you add shit ton of different damage... are they at least AoE?