aVENGER_(RR) Posted May 12, 2007 Share Posted May 12, 2007 The current instance of GTIMES.IDS can cause some issues with mods which use timers. Several of the new entries can override the timing used by global and local timers in scripts. Take this script block for example: IF HaveSpell(WIZARD_PROTECTION_FROM_MAGIC_WEAPONS) !GlobalTimerNotExpired("RR#CastSpells","LOCALS") OR(2) !GlobalTimerNotExpired("RR#PFMW","LOCALS") SpellCastOnMe([ANYONE],WIZARD_BREACH) THEN RESPONSE #100 SetGlobalTimer("RR#CastSpells","LOCALS",6) SetGlobalTimer("RR#PFMW","LOCALS",25) Spell(Myself,WIZARD_PROTECTION_FROM_MAGIC_WEAPONS) END It's a fairly standard script block for re-casting Protection from Magical Weapons. Now, take a look at what happens when this script is compiled using the new GTIMES.IDS from the OBC modder pack component: IF HaveSpell(WIZARD_PROTECTION_FROM_MAGIC_WEAPONS) !GlobalTimerNotExpired("RR#CastSpells","LOCALS") OR(2) !GlobalTimerNotExpired("RR#PFMW","LOCALS") SpellCastOnMe([ANYONE],WIZARD_BREACH) THEN RESPONSE #100 SetGlobalTimer("RR#CastSpells","LOCALS",ONE_ROUND) SetGlobalTimer("RR#PFMW","LOCALS",FIVE_MINUTES) Spell(Myself,WIZARD_PROTECTION_FROM_MAGIC_WEAPONS) END As you can see, the 25 seconds have turned into five minutes because that is the numerical value which corresponds to the FIVE_MINUTES entry in the new GTIMES.IDS file. This can happen to any other entry which has been assigned a commonly used numerical value, so for example, timers which were set to 60 seconds will now compile at twelve minutes. I think this is one of the reasons why Bioware used very high values (7200 and above) for describing their entries in the original GTIMES.IDS. Therefore, my suggestion would be to raise the numbers corresponding to the new entries to higher values as well (perhaps in the 10000 range or so) in order to avoid messing up the pre-compiled timers. Link to comment
Nythrun Posted May 12, 2007 Share Posted May 12, 2007 Five minutes on the in-game compressed clock, which remains just over four rounds All of the entries in the pre-existing gtimes.ids refer to the game clock, not real-time days. You could add ~25 A_TRILLION_YEARS~ to gtimes.ids and the script would act quite the same in game. Not that I use these entries myself, but they'll never change how long a script timer runs. Link to comment
Guest Guest Posted May 12, 2007 Share Posted May 12, 2007 Hmm, after doing some more testing, I believe that you're indeed correct. It kind of freaked me out seeing FIVE_MINUTES instead of my 25 second though. Heh, I guess I've just been away from the BG2 modding scene for too long. Link to comment
cmorgan Posted May 12, 2007 Share Posted May 12, 2007 And we have muddied the waters on the Tutu end - the Beta 4 coming out identifies timers using GTIMES.IDS. That means if you have The BG1 NPC Project installed, one of the values will show up in NI and DLTCEP as AJROM_TIMER... and we wrote up a tutorial on how to do this, so if anyone reads it they will be adding to the confusion. Link to comment
Nythrun Posted May 12, 2007 Share Posted May 12, 2007 Welcome back, by the way. There's no escaping the infinity engine Link to comment
Caedwyr Posted May 12, 2007 Share Posted May 12, 2007 I hope this means we'll see an updated version of Rogue Rebalancing and the chosen of cyric encounter out eventually Link to comment
devSin Posted May 12, 2007 Share Posted May 12, 2007 Yeah, GTIMES is all game time. 5 seconds of real time equals one game minute. It shouldn't break anything, but I'd too suggest not bothering with the GTIMES update (just delete it from the override if you want). Who wants to deal with FIVE_MINUTES instead of 25? Link to comment
Smoketest Posted May 12, 2007 Share Posted May 12, 2007 One problem I had was that BG2 was using GTIMES for real-time timers, which was causing some label overlap. So I created RTIMES.IDS with real-time labels and had all real-time timer actions point to that instead. Link to comment
cmorgan Posted May 12, 2007 Share Posted May 12, 2007 Is the overlap something that is problematic? We have both RT and GT materials tied up with the exact same label - for instance, froma READLN, OUTER_SPRINT ~dynatimer~ ~placeholder_value~ OUTER_WHILE (!(IS_AN_INT ~dynatimer~) OR (~dynatimer~ > 0x5) OR (~dynatimer~ < 0x1)) BEGIN PRINT @1108 ACTION_READLN ~dynatimer~ END ACTION_IF ("dynatimer" = 1) THEN BEGIN APPEND ~gtimes.ids~ ~3600 DYROM_TIMER~ PRINT @1109 END ACTION_IF ("dynatimer" = 2) THEN BEGIN APPEND ~gtimes.ids~ ~2700 DYROM_TIMER~ PRINT @1110 END ACTION_IF ("dynatimer" = 3) THEN BEGIN APPEND ~gtimes.ids~ ~1800 DYROM_TIMER~ PRINT @1111 END ACTION_IF ("dynatimer" = 4) THEN BEGIN APPEND ~gtimes.ids~ ~900 DYROM_TIMER~ PRINT @1112 END ACTION_IF ("dynatimer" = 5) THEN BEGIN APPEND ~gtimes.ids~ ~5400 DYROM_TIMER~ PRINT @1113 END and mixed into D files things like RealSetGlobalTimer("X#MyRealTimer","GLOBAL",AJROM_TIMER) and SetGlobalTimer("X#MyGameTimer","GLOBAL",AJROM_TIMER) Link to comment
Smoketest Posted May 13, 2007 Share Posted May 13, 2007 The game only cares about the actual numbers; labels are for our benefit. A value of 60 in game time is a turn, or 10 rounds, or 12 game minutes, but 60 seconds or one minute in real time. I wanted meaningful labels so a seperate IDS made sense. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.