Jump to content

Possibility to restore the original enemy invisibility behavior?


Recommended Posts

As I just fought the Dragon on Girvym island and saw him cloak, I realized, that Ice & Blood made it so you can target invisible enemies without issues (and removing the utility of stealth enemy detection from Enhanced Perception).

Out of interest, would it be possible, and if so, how complicated, to restore the pre-I&B behavior?

Edited by idbeholdME
Link to comment

Cool. I wanted to copy the one from Shadow Veil but did the enemies have the same values? Do the numbers matter at all for this token?

entry1 = {"et_invisible", 25, 10, 0, 41 },

I assume it is used for the calculation vs the Enhanced Perception detection or something like that. Any idea what the original numbers were for the Garema and the Dragon?

If it comes to it, my cousin has the base version of Sacred 2 on a disc, so could check once I visit him :neo:

 

Also, I noticed that Garema Ghost Warriors never seem to use the ability. Was it limited to Elites only?

EDIT:

Checked the creatures.txt and yes, it's Elites only.

Edited by idbeholdME
Link to comment

I believe the vanilla mechanic weighs the value of the target's invisibility vs. the attacker's EP skill level in a kind of attack/defense calculation.

You could give the spell to normal-class Ghost Warriors as well to make testing easier. 

The values from Shadow Veil should be appropriate, I would think.    I just checked the Fallen Angel scripts and the spell is as follows:

mgr.defineSpell( "enemy_stance_ghostwalk", {
	eiStateName = "cSpellCast",
	fxTypeCast = "FX_SK_GEISTFORM_C",
	fxTypeSpell = "FX_SK_GEISTFORM",
	duration = 200.000000,
	animType = "ANIM_TYPE_MAGICB",
	animTypeApproach = "",
	animTypeRide = "",
	animTypeSpecial = "",
	causesSpellDamage = 1,
	tokens = {
		entry0 = {"et_evade_detection", 0, 10, 0, 41 },
		entry1 = {"et_invisible", 25, 10, 0, 41 },
		entry2 = {"et_chance_evade", 500, 0, 0, 41 },
	},
	fightDistance = 0.000000,
	aspect = "EA_ENEMY_ANY",
	cooldown = 0.000000,
	soundProfile = 0,
	cost_level = 400,
	cost_base = 400,
	focus_skill_name = "skill__enemy_focus",
	lore_skill_name = "skill__enemy_lore",
	spellClass = "cSpellGenericBuff",
	spellcontroltype = "eCAtype_t_buff",
	sorting_rank = 0,
})

 

  • Like! 1
Link to comment
26 minutes ago, Flix said:

I believe the vanilla mechanic weighs the value of the target's invisibility vs. the attacker's EP skill level in a kind of attack/defense calculation.

You could give the spell to normal-class Ghost Warriors as well to make testing easier. 

The values from Shadow Veil should be appropriate, I would think.    I just checked the Fallen Angel scripts and the spell is as follows:








mgr.defineSpell( "enemy_stance_ghostwalk", {
	eiStateName = "cSpellCast",
	fxTypeCast = "FX_SK_GEISTFORM_C",
	fxTypeSpell = "FX_SK_GEISTFORM",
	duration = 200.000000,
	animType = "ANIM_TYPE_MAGICB",
	animTypeApproach = "",
	animTypeRide = "",
	animTypeSpecial = "",
	causesSpellDamage = 1,
	tokens = {
		entry0 = {"et_evade_detection", 0, 10, 0, 41 },
		entry1 = {"et_invisible", 25, 10, 0, 41 },
		entry2 = {"et_chance_evade", 500, 0, 0, 41 },
	},
	fightDistance = 0.000000,
	aspect = "EA_ENEMY_ANY",
	cooldown = 0.000000,
	soundProfile = 0,
	cost_level = 400,
	cost_base = 400,
	focus_skill_name = "skill__enemy_focus",
	lore_skill_name = "skill__enemy_lore",
	spellClass = "cSpellGenericBuff",
	spellcontroltype = "eCAtype_t_buff",
	sorting_rank = 0,
})

 

Thanks a ton.

It's this in Ice & Blood.

        entry0 = {"et_duration_boost", 1000, 10, 0, 8 },
        entry1 = {"et_evade_detection", 0, 10, 0, 41 },
        entry2 = {"et_chance_evade", 500, 0, 0, 41 },

So they replaced the invisibility with a duration increase? Interesting.

Either way, I'm off to test it.

 

EDIT:

Worked perfectly. They can no longer be clicked once they go invisible. Time to relive the old horrors of the vanilla Sacred 2 jungle :bounce:

Also, could the Enhanced Perception vs Invisibility value formula be mined from somewhere? Would be nice to know what level of EP would be needed to counter it. And the invisible value itself, I guess that at level one, it is 25+10. So would a level 70 Garema have 725 Stealth Value? Is it based on the monster level for enemies (as they don't have CA levels)?

Edited by idbeholdME
Link to comment

One more thing.

I noticed that when an enemy has multiple spells available, the order matters. When ghostwalk is listed as entry0, the Elite Garema cast it as the first thing they do after they see you. If placed after the enemy_whit_attacke as entry1, they will only cast it after using the attack and a bit of delay after that.

What was the spell order for the Garema in the Fallen Angel? I'd expect it wasn't changed, but would be nice to check, if you have the FA creatures.txt on hand.

Thanks.

From trying it out, it would make much more sense if they cast it immediately, but my goal here is to perfectly replicate the FA behavior.

Edited by idbeholdME
Link to comment

Order definitely matters. The enemy goes down the list, as you noted. Cooldowns are also very important because without them enemies will often repeat spells earlier in the list and ignore spells later in the list.  One exception is permanent buffs which enemies usually cast right away, no matter the order. I'll have to wait till I get home tonight to check the FA scripts.

Link to comment
On 3/16/2022 at 2:20 PM, Flix said:

I'll have to wait till I get home tonight to check the FA scripts.

Just a quick reminder for the FA spell order for enemies who had ghostwalk (garema and Dragon) :D

Thanks for checking.

Link to comment
  • 5 months later...

Just some info on the EP vs Invisibility value for anyone who might be interested in bringing the enemy invisibility back:

 

Finally got to some testing of the Invisibility value vs Enhanced Perception and turns out that the vanilla scaling value is way too overkill.

A level 459 Enhanced Perception is not enough to detect a level 200 Garema Ghost Warrior with the invisibility value at the vanilla:

entry1 = {"et_invisible", 25, 10, 0, 41 },

 

When toying with the scaling value, it has to be reduced to:

entry1 = {"et_invisible", 25, 8, 0, 41 },

At this point, 300 points in Enhanced Perception is enough to detect him. But even this is close. The amount of EP required to detect a Ghost Warrior with this 20% reduced scaling invisibility value is between 281-284 (from what I tested, 280 was not enough and 284 was). Due to the increasing diminishing returns on the EP detection chance and the ever scaling Invisibility value (with no diminishing returns), detection becomes basically impossible at the higher levels with the vanilla values, completely removing the originally intended utility of being able to see invisible enemies.

Even with the 25, 8 values, the amount of EP required to successfully detect enemies is going keep increasing exponentially with every additional level the enemies gain as every additional point in EP offers less and less value.

I am probably going to set it to somewhere around {"et_invisible", 25, 7, 0, 41 }, to keep the detection mechanic functional, but to also not make it that even low amounts of EP are sufficient for everything.

Edited by idbeholdME
  • Like! 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
Please Sign In or Sign Up