Jump to content

Is = bug?


Recommended Posts

- Though alignment restrictions are available for priest spells in BG2, not all of them use it. Thus LG Anomen can cast Unholy Word, among other things.

 

- Cromwell says I'll have to stay a day to help him forge an item, but in reality no game time passes, save that required for the small cutscene.

Link to comment
- Cromwell says I'll have to stay a day to help him forge an item, but in reality no game time passes, save that required for the small cutscene.

 

I believe the same is true of the investigation of Isaea Roenall. It's thingy Axehand that says 'it will take a day to investigate your claims, we should know by then' or something, but I believe no time passes.

Link to comment
- Cromwell says I'll have to stay a day to help him forge an item, but in reality no game time passes, save that required for the small cutscene.

 

I believe the same is true of the investigation of Isaea Roenall. It's thingy Axehand that says 'it will take a day to investigate your claims, we should know by then' or something, but I believe no time passes.

 

The first few times I had Cromwell make things, I thought it would be like the Smithy in Beregost in BGI, where a significant amount of time passes for him to forge your armor. I remember being worried about having to schedule things so I wouldn't miss any quest time deadlines. Unfortunately for all my extra effort, no significant time actually passes. I'd call it a bug.

Link to comment
LG Anomen can cast Unholy Word
Are you sure the flags are ever used anywhere other than level up (since clerics gain their spells automatically)? My thought was that the flags simply prevent you learning the spell, and has nothing to do with casting. So, if Anomen is any shade of neutral on level-up, he gets all the spells (and keeps them if his alignment changes). (If he actually gets the spell when he's already lawful good, then yeah, it smells funny.)

 

I'd call it a bug.
One that's not so easy to fix (there is no way in-game to automatically advance time by 1 game day).
Link to comment

I think the closest we can do is TimeOfDay(NIGHT) TimeOfDay(DAY) and say, okay, if it was night already then it didn't take as long because he'd already got some sleep or something.

 

Are you sure the flags are ever used anywhere other than level up (since clerics gain their spells automatically)? My thought was that the flags simply prevent you learning the spell, and has nothing to do with casting. So, if Anomen is any shade of neutral on level-up, he gets all the spells (and keeps them if his alignment changes). (If he actually gets the spell when he's already lawful good, then yeah, it smells funny.

I'm not actually sure-- I copied the text from Ironworks. At a guess I'd say he's not losing it when he turns good.

Link to comment

Yeah, but if it's 1 AM or something, DayNight(MIDNIGHT) will roll through 23 hours, and then wherever the time is left (usually you'd see something like DayNight(MIDNIGHT) DayNight(DAWN_END) or something). Conversely, if it's 11 PM, you just run to the next morning.

 

I'm not actually sure-- I copied the text from Ironworks. At a guess I'd say he's not losing it when he turns good.
I checked, and the flag's set, so this just looks to be a "feature" of the engine.
Link to comment

So there is no ingame timer that can be advanced through scripting commands? I know there are a whole bunch of timers for romances and such, and I know that the game keeps track of time (save screen tells you the number of days, hours). Is the issue, the lack of any commands to forcefully change the timer? Browsing the IEDSP, I find this in the Scripting actions:

 

66 DayNight(I:TimeOfDay*Time)
Is used to change the time of day.Time is from TIME.ids and has six options (0 MIDNIGHT, 12 NOON,6 DAWN_START,7 DAWN_END, 21 DUSK_START, 22 DUSK_END). You are not, however, confined to using only these times. Specifying a value from 0-23 (just like the hours of the day) will also work. This example is from the cutscene Irenicus uses leaving his dungeon.

IF
    Global("AmaWaukeen","GLOBAL",1)
THEN
    RESPONSE #100
          DayNight(MIDNIGHT)
          SetGlobal("AmaWaukeen","GLOBAL",2)
          FadeToColor([20.0],0)
          CreateCreature("shthass1",[877.898],7)
          StartCutSceneMode()
          StartCutScene("cut24a")
END

 

Which is obviously what you are talking about above. The interesting part, is that a value of 0-23 can be specified. Would it be possible to use the identifiers also listed in the IEDSP

 

timeofday

15
0 DAY
1 DUSK
2 NIGHT
3 MORNING

or the

time

Correlates a general time of day, to a specific hour. Used by the Time(I:Time*Time) trigger. As can be seen from the file, midnight is defined as 0, and time builds from there, wrapping from 23 back to 0.
The file is extensible, and new entries can be added for example, adding 4 MYTIME will allow MYTIME to be used in scripts, giving the time 3am.

15
0 MIDNIGHT
12 NOON
6 DAWN_START
7 DAWN_END
21 DUSK_START
22 DUSK_END

to detect the time of day (is it possible to do this) and advance the timer by adding a set amount of time to whichever current time identifier is closest to the player's current time? The only thing I'd be worried about here is what doing this would do to ingame timers? Then again, I suppose it should also advance any ingame timers.

 

The triggers also seem to be there

 

0x401E Time(I:Time*Time)
Returns true only if the period of day matches the period in the 2nd parameter (taken from Time.ids).

0x401F TimeOfDay(I:Time Of Day*TimeODay)
As above but less specific and uses TimeODay.ids.

 

I'm sure doing this fix would involve many more gobs of code than it deserves, but from a beginner's perspective, all the required elements seem to be there to detect the current time of day, and to advance the clock by however many hours are desired (though at first glance it seems like 24 hours is the maximum amount of time that can be advanced in one stage.)

Link to comment

I used the symbols (MIDNIGHT, DAWN_END, etc.) for clarity. The result of any value is the same (time always advances forward). There is no simple way to say MakeItTomorrow().

 

This can be done in the script, with a single block for each of the 24 hours of the day, but I seriously doubt anybody cares enough to waste the time and effort.

 

Timers are variables checked against the current time (if (variable > current time) then timer not expired else timer expired). There wouldn't really be anything you could do with a timer in this case.

Link to comment

When Cromwell says it'll take a day, does he say/mean it'll take 24 hours exactly. Maybe it takes him 13 hours to forge a Hackmaster +12, whereas it takes him 30 hours to assemble a suit of Hack-Off +7.

 

Of course, that's getting into tweak territory by a long shot.

Link to comment
When Cromwell says it'll take a day, does he say/mean it'll take 24 hours exactly.  Maybe it takes him 13 hours to forge a Hackmaster +12, whereas it takes him 30 hours to assemble a suit of Hack-Off +7.

 

Of course, that's getting into tweak territory by a long shot.

 

And 69 hours to assemble a Dagger of Whack-Off +10. :)

 

I do not think it takes him exactly a day to assemble, but I'll have to double check the files to be certain.

Link to comment

I've coded up the Cromwell time displacement, but it's going in Optional But Cool.

 

The alignment checks for priest spells only occur when a spell gets added, which makes for a bit of weirdness later on. I already had two spells from DR that removed alignment-inappropriate spells, so I just added them to the Fixpack and added a bit to Anomen's script:

 

IF // removes evil-only spells (Unholy Blight, Unholy Word) from Anomen when changing alignment
 Alignment(Myself,MASK_GOOD)
 Global("CDSpellCheck","LOCALS",0)
THEN
 RESPONSE #100
   ApplySpellRES("CDLV3NA")
   ApplySpellRES("CDLV7NA")
   SetGlobal("CDSpellCheck","LOCALS",1)
END

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...