Jump to content


Photo

Object identifiers


  • Please log in to reply
3 replies to this topic

#1 Beleg33

Beleg33

    AKA Adanedhel on G3

  • Member
  • 521 posts

Posted 10 July 2012 - 12:07 AM

I'm looking for a comprehensive list of all identifiers that can be used for an object from IDS files.
Those used in this format [EA.GENERAL.RACE.CLASS.SPECIFIC.GENDER.ALIGN]

Most ones are obvious, I'm mainly looking for details in EA.IDS : PC (Player1 - Player6?) / ALLY (?) / GOODCUTOFF (all green-circled?) / EVILCUTOFF (all red-circled?) at least.

IESDP lists them but gives no details.
Random spambot #8434678 said :

you should liquor multiplying great deal supplment your to office apparel predicated copy may possibly be an go through check out this behave as more busy den has an interest in pc


#2 Morkfel

Morkfel
  • Member
  • 11 posts

Posted 15 July 2013 - 01:46 PM

Zombie thread.

 

It certainly deserves to be brought back, for a couple reasons.

 

(1) [EA.GENERAL.RACE.CLASS.SPECIFIC.GENDER.ALIGN] is fantastic for scripting

 

(2) Having some user-generated documentation for how these descriptionless identifiers work would be nice.

 

I know a lot of people use [EVILCUTOFF] but in my scripts I prefer to use [ENEMY]. I know there is a difference but I can't remember what. My intuition tells me that it has to do with evil party members, but I am pretty sure that's not it.



#3 Morkfel

Morkfel
  • Member
  • 11 posts

Posted 15 July 2013 - 10:11 PM

Here is an example of what I'm talking about:

 

	OR(18)
		See([ENEMY.0.0.BARD])
		See([ENEMY.0.0.BARD_ALL])
		See([ENEMY.0.0.CLERIC_MAGE])
		See([ENEMY.0.0.CLERIC])
		See([ENEMY.0.0.CLERIC_RANGER])
		See([ENEMY.0.0.CLERIC_THIEF])
		See([ENEMY.0.0.DRUID])
		See([ENEMY.0.0.DRUID_ALL])
		See([ENEMY.0.0.FIGHTER_CLERIC])
		See([ENEMY.0.0.FIGHTER_DRUID])
		See([ENEMY.0.0.FIGHTER_MAGE])
		See([ENEMY.0.0.FIGHTER_MAGE_CLERIC])
		See([ENEMY.0.0.FIGHTER_MAGE_THIEF])
		See([ENEMY.0.0.MAGE])
		See([ENEMY.0.0.MAGE_ALL])
		See([ENEMY.0.0.MAGE_THIEF])
		See([ENEMY.0.0.SORCERER])
		See([ENEMY.0.0.OGRE_MAGE])

 

Should trigger as true whenever there is an enemy in LOS of the given class.

 

Some spells have a range centered on the caster with a 5, 20, or 30 foot range. For these you may want to ensure that there are at least two enemies in range but that at least one of them is a caster. This:

 

	See(SecondNearestEnemyOf(Myself))
	OR(18)
		Class(LastSeenBy(Myself),BARD)
		Class(LastSeenBy(Myself),BARD_ALL)
		Class(LastSeenBy(Myself),CLERIC_MAGE)
		Class(LastSeenBy(Myself),CLERIC)
		Class(LastSeenBy(Myself),CLERIC_RANGER)
		Class(LastSeenBy(Myself),CLERIC_THIEF)
		Class(LastSeenBy(Myself),DRUID)
		Class(LastSeenBy(Myself),DRUID_ALL)
		Class(LastSeenBy(Myself),FIGHTER_CLERIC)
		Class(LastSeenBy(Myself),FIGHTER_DRUID)
		Class(LastSeenBy(Myself),FIGHTER_MAGE)
		Class(LastSeenBy(Myself),FIGHTER_MAGE_CLERIC)
		Class(LastSeenBy(Myself),FIGHTER_MAGE_THIEF)
		Class(LastSeenBy(Myself),MAGE)
		Class(LastSeenBy(Myself),MAGE_ALL)
		Class(LastSeenBy(Myself),MAGE_THIEF)
		Class(LastSeenBy(Myself),SORCERER)
		Class(LastSeenBy(Myself),OGRE_MAGE)
	Range(LastSeenBy(Myself),30)

 

Should do that, but actually would only fire when the second nearest matches the Class. A better way of scripting that would be:

	See(SecondNearestEnemyOf(Myself))
	Range(LastSeenBy(Myself),30)
	OR(18)
		See([ENEMY.0.0.BARD])
		See([ENEMY.0.0.BARD_ALL])
		See([ENEMY.0.0.CLERIC_MAGE])
		See([ENEMY.0.0.CLERIC])
		See([ENEMY.0.0.CLERIC_RANGER])
		See([ENEMY.0.0.CLERIC_THIEF])
		See([ENEMY.0.0.DRUID])
		See([ENEMY.0.0.DRUID_ALL])
		See([ENEMY.0.0.FIGHTER_CLERIC])
		See([ENEMY.0.0.FIGHTER_DRUID])
		See([ENEMY.0.0.FIGHTER_MAGE])
		See([ENEMY.0.0.FIGHTER_MAGE_CLERIC])
		See([ENEMY.0.0.FIGHTER_MAGE_THIEF])
		See([ENEMY.0.0.MAGE])
		See([ENEMY.0.0.MAGE_ALL])
		See([ENEMY.0.0.MAGE_THIEF])
		See([ENEMY.0.0.SORCERER])
		See([ENEMY.0.0.OGRE_MAGE])
	Range(LastSeenBy(Myself),30)

Which combines two See() checks to ensure that there are two enemies within 30 feet and that at least one of them is a caster.

 

 

It's also pretty useful here:

	See([ANYONE])
	OR(2)
		Gender(LastSeenBy(Myself),SUMMONED_DEMON)
		Race(LastSeenBy(Myself),DEMONIC)

Becomes:

 

	OR(2)
		See([ENEMY.0.0.0.0.SUMMONED_DEMON])
		See([ENEMY.0.0.DEMONIC])

 

Anyway, this is mostly theoretical for me. I write scripts and my characters are pretty badass, so I guess it works.



#4 Yovaneth

Yovaneth

    The newly-appointed Master Builder of Baldur's Gate

  • Modder
  • 3058 posts

Posted 16 July 2013 - 03:43 AM

xxxNearestEnemyOf() is naffed - it always defaults to NearestEnemyOf(). Probably useless information but it's been fixed in BG:EE :D

 

-Y-