Skip to content

can someone explain trigger.ids please

seraglioseraglio Member Posts: 122
On a number of occasions now I have had mods fail to install . The debug file will say something like "unable to find trigger blahblah". I diligently go to IEDSP, look at triggers, find the entry for the appropriate trigger and add it to my trigger.ids file. But I really have no idea why this is, what trigger.ids does, and most importantly...why my copy is lacking dozens of lines that appear to be default? I just installed shadow magic mod and it required me to add these lines:

0x40E0 NextTriggerObject(O:Object*)
0x4102 HaveKnownSpellRES(S:Spell*)
0x40FE ClassLevelGT(O:Object*,I:Category*CLASSCAT,I:Value*)
0x40EA OriginalClass(O:Object*,I:Class*CLASS)
0x40E2 CheckSpellState(O:Object*,I:State*splstate)
0x40E6 IsWeaponRanged(O:Object*)
0x40F8 CanEquipRanged()
0x40EC WeaponEffectiveVs(O:Object*,I:Hand*HAND)
0x40F2 WeaponCanDamage(O:Object*,I:Hand*HAND)
0x40E7 ButtonDisabled(I:Button*BUTTON)


How were these not always there? I have most recent version of the game. Why do some mods require these lines but most don't. Mine now has 229 lines, what should it have?

Comments

  • kjeronkjeron Member Posts: 2,367
    edited December 2019
    You likely have an outdated mod that is overwriting the TRIGGER.IDS file with an older version. It will break more than just mods - base game dialog's rely on those triggers being present in TRIGGER.IDS to function.
    TRIGGER.IDS should have at least 264 lines (279 in PSTEE).
    sarevok57
  • seraglioseraglio Member Posts: 122
    Would you mind posting yours. Or someone. Ill just use that and add my EEEX stuff to it.
  • seraglioseraglio Member Posts: 122
    So I did a little poking around, based on what Kjeron said. If an old mod is really OVERWRITING my trigger.ids, rather than appending or modifying it...I'm guessing the mods install directory should have its own copy of trigger.ids. If that is the case, only 3 mods I have have their own copy

    Kiara-Zaiya a NPC mods that i use because it adds new monk HLA's. Probably pretty old
    Tales of the Deep Garden one of my favorite mods, would think its more up to date, maybe not
    EEEX its a 1k file in a patch directory, so doubt this is the culprit

    If this is how it works, at least now I know where the problem is coming from. Just need an updated copy to archive and I'll be good to go.
  • kjeronkjeron Member Posts: 2,367
    IDS V1.0
    0x0001 Acquired(S:ResRef*)
    0x0002 AttackedBy(O:Object*,I:Style*AStyles)
    0x0003 Help(O:Object*)
    0x0004 Joins(O:Object*)
    0x0005 Leaves(O:Object*)
    0x0006 ReceivedOrder(O:Object*,I:Order ID*)
    0x0007 Said(O:Object*,I:Dialog ID*)
    0x0008 TurnedBy(O:Object*)
    0x0009 Unusable(S:ResRef*)
    0x0020 HitBy(O:Object*,I:DameType*Damages)
    0x0021 HotKey(I:Key*HotKey)
    0x0022 TimerExpired(I:ID*)
    0x0024 Trigger(I:TriggerNum*)
    0x0025 Die()
    0x0026 TargetUnreachable(O:Object*)
    0x002F Heard(O:Object*,I:ID*SHOUTIDS)
    0x0033 BecameVisible()
    0x0036 OnCreation()
    0x004A Died(O:Object*)
    0x004B Killed(O:Object*)
    0x004C Entered(O:Object*)
    0x0052 Opened(O:Object*)
    0x0053 Closed(O:Object*)
    0x0054 Detected(O:Object*)
    0x0055 Reset(O:Object*)
    0x0056 Disarmed(O:Object*)
    0x0057 Unlocked(O:Object*)
    0x005C BreakingPoint()
    0x005D PickPocketFailed(O:Object*)
    0x005E StealFailed(O:Object*)
    0x005F DisarmFailed(O:Object*)
    0x0060 PickLockFailed(O:Object*)
    0x0070 Clicked(O:Object*)
    0x0087 TrapTriggered(O:Triggerer*)
    0x0088 PartyMemberDied(O:Object*)
    0x0091 SpellCast(O:Object*,I:Spell*Spell)
    0x0093 PartyRested()
    0x0097 Summoned(O:Object*)
    0x00A1 SpellCastOnMe(O:Caster*,I:Spell*Spell)
    0x00A6 SpellCastPriest(O:Object*,I:Spell*Spell)
    0x00A7 SpellCastInnate(O:Object*,I:Spell*Spell)
    0x00CC TookDamage()
    0x00D6 WalkedToTrigger(O:Object*)
    0x400A Alignment(O:Object*,I:Alignment*Align)
    0x400B Allegiance(O:Object*,I:Allegience*EA)
    0x400C Class(O:Object*,I:Class*Class)
    0x400D Exists(O:Object*)
    0x400E General(O:Object*,I:General*General)
    0x400F Global(S:Name*,S:Area*,I:Value*)
    0x4010 HP(O:Object*,I:Hit Points*)
    0x4011 HPGT(O:Object*,I:Hit Points*)
    0x4012 HPLT(O:Object*,I:Hit Points*)
    0x4013 LOS(O:Object*,I:Range*)
    0x4014 Morale(O:Object*,I:Morale*)
    0x4015 MoraleGT(O:Object*,I:Morale*)
    0x4016 MoraleLT(O:Object*,I:Morale*)
    0x4017 Race(O:Object*,I:Race*Race)
    0x4018 Range(O:Object*,I:Range*)
    0x4019 Reputation(O:Object*,I:Reputation*)
    0x401A ReputationGT(O:Object*,I:Reputation*)
    0x401B ReputationLT(O:Object*,I:Reputation*)
    0x401C See(O:Object*)
    0x401D Specifics(O:Object*,I:Specifics*Specific)
    0x401E Time(I:Time*Time)
    0x401F TimeOfDay(I:TimeOfDay*TimeODay)
    0x4023 True()
    0x4027 Delay(I:Delay*)
    0x4028 NumCreature(O:Object*,I:Number*)
    0x4029 NumCreatureLT(O:Object*,I:Number*)
    0x402A NumCreatureGT(O:Object*,I:Number*)
    0x402B ActionListEmpty()
    0x402C HPPercent(O:Object*,I:Hit Points*)
    0x402D HPPercentLT(O:Object*,I:Hit Points*)
    0x402E HPPercentGT(O:Object*,I:Hit Points*)
    0x4030 False()
    0x4031 HaveSpell(I:Spell*Spell)
    0x4031 HaveSpellRES(S:Spell*)
    0x4032 HaveAnySpells()
    0x4034 GlobalGT(S:Name*,S:Area*,I:Value*)
    0x4035 GlobalLT(S:Name*,S:Area*,I:Value*)
    0x4037 StateCheck(O:Object*,I:State*State)
    0x4038 NotStateCheck(O:Object*,I:State*State)
    0x4039 NumberOfTimesTalkedTo(I:Num*)
    0x4039 NumTimesTalkedTo(I:Num*)
    0x403A NumTimesTalkedToGT(I:Num*)
    0x403B NumTimesTalkedToLT(I:Num*)
    0x403C Reaction(O:Object*,I:Value*Reaction)
    0x403D ReactionGT(O:Object*,I:Value*Reaction)
    0x403E ReactionLT(O:Object*,I:Value*Reaction)
    0x403F GlobalTimerExact(S:Name*,S:Area*)
    0x4040 GlobalTimerExpired(S:Name*,S:Area*)
    0x4041 GlobalTimerNotExpired(S:Name*,S:Area*)
    0x4042 PartyHasItem(S:Item*)
    0x4043 InParty(O:Object*)
    0x4044 CheckStat(O:Object*,I:Value*,I:StatNum*Stats)
    0x4045 CheckStatGT(O:Object*,I:Value*,I:StatNum*Stats)
    0x4046 CheckStatLT(O:Object*,I:Value*,I:StatNum*Stats)
    0x4047 RandomNum(I:Range*,I:Value*)
    0x4048 RandomNumGT(I:Range*,I:Value*)
    0x4049 RandomNumLT(I:Range*,I:Value*)
    0x404D Gender(O:Object*,I:Sex*Gender)
    0x404E PartyGold(I:Amount*)
    0x404F PartyGoldGT(I:Amount*)
    0x4050 PartyGoldLT(I:Amount*)
    0x4051 Dead(S:Name*)
    0x4058 OutOfAmmo()
    0x4058 HaveUsableWeapon()
    0x4059 NumTimesInteracted(I:NPC*NPC,I:Num*)
    0x405A NumTimesInteractedGT(I:NPC*NPC,I:Num*)
    0x405B NumTimesInteractedLT(I:NPC*NPC,I:Num*)
    0x4061 HasItem(S:ResRef*,O:Object*)
    0x4061 HasItemType(O:Object*,I:Type*ITEMFLAG,I:IgnoreDestructible*BOOLEAN)
    0x4062 InteractingWith(O:Object*)
    0x4063 InWeaponRange(O:Object*)
    0x4064 HasWeaponEquiped(O:Object*)
    0x4065 Happiness(O:Object*,I:Amount*Happy)
    0x4066 HappinessGT(O:Object*,I:Amount*Happy)
    0x4067 HappinessLT(O:Object*,I:Amount*Happy)
    0x4068 TimeGT(I:Time*Time)
    0x4069 TimeLT(I:Time*Time)
    0x406A NumInParty(I:Num*)
    0x406B NumInPartyGT(I:Num*)
    0x406C NumInPartyLT(I:Num*)
    0x406D UnselectableVariable(I:Num*)
    0x406E UnselectableVariableGT(I:Num*)
    0x406F UnselectableVariableLT(I:Num*)
    0x4071 NumDead(S:Name*,I:Num*)
    0x4072 NumDeadGT(S:Name*,I:Num*)
    0x4073 NumDeadLT(S:Name*,I:Num*)
    0x4074 Detect(O:Object*)
    0x4075 Contains(S:ResRef*,O:Object*)
    0x4076 OpenState(O:Object*,I:Open*BOOLEAN)
    0x4077 NumItems(S:ResRef*,O:Object*,I:Num*)
    0x4078 NumItemsGT(S:ResRef*,O:Object*,I:Num*)
    0x4079 NumItemsLT(S:ResRef*,O:Object*,I:Num*)
    0x407A NumItemsParty(S:ResRef*,I:Num*)
    0x407B NumItemsPartyGT(S:ResRef*,I:Num*)
    0x407C NumItemsPartyLT(S:ResRef*,I:Num*)
    0x407D IsOverMe(O:Object*)
    0x407E AreaCheck(S:ResRef*)
    0x407F HasItemEquiped(S:ResRef*,O:Object*)
    0x4080 NumCreatureVsParty(O:Object*,I:Number*)
    0x4081 NumCreatureVsPartyLT(O:Object*,I:Number*)
    0x4082 NumCreatureVsPartyGT(O:Object*,I:Number*)
    0x4083 CombatCounter(I:Number*)
    0x4084 CombatCounterLT(I:Number*)
    0x4085 CombatCounterGT(I:Number*)
    0x4086 AreaType(I:Number*AREATYPE)
    0x4089 OR(I:OrCount*)
    0x4090 InPartySlot(O:Object*,I:Slot*)
    0x4092 InLine(S:Target*,O:Object*)
    0x4094 Level(O:Object*,I:Level*)
    0x4095 LevelGT(O:Object*,I:Level*)
    0x4096 LevelLT(O:Object*,I:Level*)
    0x4098 GlobalsEqual(S:Name1*,S:Name2*)
    0x4099 GlobalsGT(S:Name1*,S:Name2*)
    0x409A GlobalsLT(S:Name1*,S:Name2*)
    0x409B LocalsEqual(S:Name1*,S:Name2*)
    0x409C LocalsGT(S:Name1*,S:Name2*)
    0x409D LocalsLT(S:Name1*,S:Name2*)
    0x409E ObjectActionListEmpty(O:Object*)
    0x409F OnScreen(O:Object*)
    0x40A0 InActiveArea(O:Object*)
    0x40A2 CalanderDay(I:Day*)
    0x40A3 CalanderDayGT(I:Day*)
    0x40A4 CalanderDayLT(I:Day*)
    0x40A5 Name(S:Name*,O:Object*)
    0x40A8 IfValidForPartyDialog(O:Object*)
    0x40A8 IfValidForPartyDialogue(O:Object*)
    0x40A8 IsValidForPartyDialog(O:Object*)
    0x40A8 IsValidForPartyDialogue(O:Object*)
    0x40A9 PartyHasItemIdentified(S:ResRef*)
    0x40B0 HasBounceEffects(O:Object*)
    0x40B1 HasImmunityEffects(O:Object*)
    0x40B2 HasItemSlot(O:Object*,I:Slot*SLOTS)
    0x40B3 PersonalSpaceDistance(O:Object*,I:Range*)
    0x40B4 InMyGroup(O:Object*)
    0x40B5 RealGlobalTimerExact(S:Name*,S:Area*)
    0x40B6 RealGlobalTimerExpired(S:Name*,S:Area*)
    0x40B7 RealGlobalTimerNotExpired(S:Name*,S:Area*)
    0x40B8 NumInPartyAlive(I:Num*)
    0x40B9 NumInPartyAliveGT(I:Num*)
    0x40BA NumInPartyAliveLT(I:Num*)
    0x40BB Kit(O:Object*,I:Kit*KIT)
    0x40BC IsGabber(O:Object*)
    0x40BD IsActive(O:Object*)
    0x40BE CharName(S:Name*,O:Object*)
    0x40BF FallenRanger(O:Object*)
    0x40C0 FallenPaladin(O:Object*)
    0x40C1 InventoryFull(O:Object*)
    0x40C2 HasItemEquipedReal(S:ResRef*,O:Object*)
    0x40C3 XP(O:Object*,I:XP)                        
    0x40C4 XPGT(O:Object*,I:XP)                      
    0x40C5 XPLT(O:Object*,I:XP)                      
    0x40C6 G(S:ResRef*,I:Num*)                         
    0x40C7 GGT(S:ResRef*,I:Num*)                       
    0x40C8 GLT(S:ResRef*,I:Num*)          
    0x40C9 ModalState(I:State*MODAL)    
    0x40CB InMyArea(O:Object*)         
    0x40CD DamageTaken(I:Amount*)
    0x40CE DamageTakenGT(I:Amount*)
    0x40CF DamageTakenLT(I:Amount*)
    0x40D0 Difficulty(I:Amount*DIFFLEV)
    0x40D1 DifficultyGT(I:Amount*DIFFLEV)
    0x40D2 DifficultyLT(I:Amount*DIFFLEV)
    0x40D3 InPartyAllowDead(O:Object*)
    0x40D4 AreaCheckObject(S:ResRef*,O:Object*)
    0x40D5 ActuallyInCombat()
    0x40D7 LevelParty(I:Num*)
    0x40D8 LevelPartyGT(I:Num*)
    0x40D9 LevelPartyLT(I:Num*)
    0x40DA HaveSpellParty(I:Spell*Spell)
    0x40DB AmIInWatchersKeepPleaseIgnoreTheLackOfApostophe()
    0x40DB InWatchersKeep()
    0x40DC AreaCheckAllegiance(I:Allegience*EA)
    0x40DD IsTouchGUI()
    0x40DE HasDLC(S:DLCName*)
    0x40DF BeenInParty(S:Name*)
    0x40E0 NextTriggerObject(O:Object*)
    0x40E1 ExtendedStateCheck(O:Object*,I:State*extstate)
    0x40E2 CheckSpellState(O:Object*,I:State*splstate)
    0x40E3 NearLocation(O:Object*,I:PointX*,I:PointY*,I:Range*)
    0x40E4 NearSavedLocation(O:Object*,S:Global*,I:Range*)
    0x40E5 Switch(S:Global*,S:Area*)
    0x40E6 IsWeaponRanged(O:Object*)
    0x40E7 ButtonDisabled(I:Button*BUTTON)
    0x40E8 HasItemCategory(O:Object*,I:Itemtype*ITEMCAT,I:Equipped*BOOLEAN)
    0x40E9 NightmareModeOn()
    0x40EA OriginalClass(O:Object*,I:Class*CLASS)
    0x00A1 SpellCastOnMeRES(S:Spell*,O:Caster*)
    0x0091 SpellCastRES(S:Spell*,O:Object*)
    0x00A6 SpellCastPriestRES(S:Spell*,O:Object*)
    0x00A7 SpellCastInnateRES(S:Spell*,O:Object*)
    0x00EB CutSceneBroken()
    0x40EC WeaponEffectiveVs(O:Object*,I:Hand*HAND)
    0x40ED INI(S:Name*,I:Number*)
    0x40EE reserved1()
    0x40EF reserved2()
    0x40F0 reserved3()
    0x40F1 ModalStateObject(O:Object*,I:ModalState*Modal)
    0x40F2 WeaponCanDamage(O:Object*,I:Hand*HAND)
    0x40F3 NumKilledByParty(I:Number*)
    0x40F4 NumKilledByPartyGT(I:Number*)
    0x40F5 NumKilledByPartyLT(I:Number*)
    0x40F6 CanTurn(O:Object*,I:Difference*)
    0x40F7 BitCheck(S:Name*,S:Area*,I:Bit*Bits)
    0x40F8 CanEquipRanged()
    0x40F9 ImmuneToSpellLevel(O:Object*,I:Level*)
    0x40FA StoryModeOn()
    0x40FB IsForcedRandomEncounterActive(S:Area*)
    0x40FC reserved()
    0x40FD ClassLevel(O:Object*,I:Category*CLASSCAT,I:Value*)
    0x40FE ClassLevelGT(O:Object*,I:Category*CLASSCAT,I:Value*)
    0x40FF ClassLevelLT(O:Object*,I:Category*CLASSCAT,I:Value*)
    0x4100 SecretDoorDetected(O:Object*,I:Open*BOOLEAN)
    0x0101 reserved()
    0x4102 HaveKnownSpell(I:Spell*Spell)
    0x4102 HaveKnownSpellRES(S:Spell*)
    0x4103 CheckItemSlot(O:Object*,S:Item*,I:Slot*SLOTS)
    0x4104 CurrentAmmo(S:ResRef*,O:Object*)
    0x410a Proficiency(O:Object*,I:Slot*WProf,I:Value*)
    0x410b ProficiencyGT(O:Object*,I:Slot*WProf,I:Value*)
    0x410c ProficiencyLT(O:Object*,I:Slot*WProf,I:Value*)
    
  • seraglioseraglio Member Posts: 122
    Thanks so much for your help!
Sign In or Register to comment.