Jump to content

Cam's Playthrough bugs


CamDawg

Recommended Posts

I put up my slightly customized build of Near Infinity 1.33b19 if anyone's interested. It would be on SourceForge, but Fred disappeared. It should work, but this is a fresh build after scaling back a lot of changes, and it's not been tested; the usual disclaimers apply. You can post somewhere on these forums if you have any issues; I don't promise any changes, however. Send a friendly request to the bigg or the digg or the igg if you want somebody to maintain it.

 

Near Infinity 1.33b19

Source code

 

Make sure to read the license if you want to redistribute or modify the code.

Link to comment

I'm bored, so random buglet: Madeen's boyfriend in AR0713 uses the EXTRAX script, but they forgot to override it in the actor header (as they do with all the other indoor extras), so he stands around giving Madeen the eye for a couple seconds then walks out the door forever the first time you enter at night. Bug?

 

Abazigal's away spell (or was it his shockwave? or Drakonis' buffet) was copied from the normal wing buffet, but they forget to change the target of the damage effect to 8, so when it gets cast, he damages himself. Bug?

 

The spectator's fake death ray geas thingy spell is supposed to play a sound, but the sound is preset target; the spell gets cast at a point, however, and the play sound effect doesn't work with a ground target, so the sound never plays. It should be target self to work. Bug?

 

In the fake flesh to stone used by Irenicus against the first thief in the promenade cutscene, the visual effect has some sort of extraneous save or resistance, so the SPFLESHS doesn't always play. I used to think that it was just the engine getting overworked and dropping the visual effect, but it wasn't. Bug?

 

One of the LeaveArea() calls is being executed by the ppguy instead of assigned to Player1, so he goes to Saradush with you. Bug?

Link to comment

The Halberd +2 from the statue (gorsta09) in the top floor of Watcher's Keep is flagged as stolen.

 

I put up my slightly customized build of Near Infinity 1.33b19 if anyone's interested. It would be on SourceForge, but Fred disappeared. It should work, but this is a fresh build after scaling back a lot of changes, and it's not been tested; the usual disclaimers apply. You can post somewhere on these forums if you have any issues; I don't promise any changes, however. Send a friendly request to the bigg or the digg or the igg if you want somebody to maintain it.

Kick ass.

 

I'm bored, so random buglet: Madeen's boyfriend in AR0713 uses the EXTRAX script, but they forgot to override it in the actor header (as they do with all the other indoor extras), so he stands around giving Madeen the eye for a couple seconds then walks out the door forever the first time you enter at night. Bug?

Yep.

 

Abazigal's away spell (or was it his shockwave? or Drakonis' buffet) was copied from the normal wing buffet, but they forget to change the target of the damage effect to 8, so when it gets cast, he damages himself. Bug?

Yes, his one-time transform into his blue dragon self has this issue. Definitely a bug.

 

The spectator's fake death ray geas thingy spell is supposed to play a sound, but the sound is preset target; the spell gets cast at a point, however, and the play sound effect doesn't work with a ground target, so the sound never plays. It should be target self to work. Bug?

Yep.

 

In the fake flesh to stone used by Irenicus against the first thief in the promenade cutscene, the visual effect has some sort of extraneous save or resistance, so the SPFLESHS doesn't always play. I used to think that it was just the engine getting overworked and dropping the visual effect, but it wasn't. Bug?

Yep.

 

One of the LeaveArea() calls is being executed by the ppguy instead of assigned to Player1, so he goes to Saradush with you. Bug?

He's invisible and all of the calls are followed with a DestroySelf(), so this appears to be harmless.

 

// removes stolen flag from halb07
COPY_EXISTING ~gorsta09.cre~ ~override~
 READ_LONG 0x2bc "itm_off" ELSE 0
 READ_LONG 0x2c0 "itm_num" ELSE 0
 FOR (index = 0; index < itm_num; index = index + 1) BEGIN
READ_ASCII ("%itm_off%" + (0x14 * "%index%")) "item"
PATCH_IF ("%item%" STRING_COMPARE_CASE "halb07" = 0) BEGIN
  READ_BYTE  ("%itm_off%" + 0x10 + (0x14 * "%index%")) "flags"
  WRITE_BYTE ("%itm_off%" + 0x10 + (0x14 * "%index%")) ("%flags%" BAND 0b11111011) // removes stolen flag
END
 END
 BUT_ONLY_IF_IT_CHANGES

// indoor actor has outdoor script
COPY_EXISTING ~ar0500.are~ ~override~
 READ_LONG  0x54 "actor_off"
 READ_SHORT 0x58 "actor_num"
 FOR (index = 0; index < actor_num; index = index + 1) BEGIN
READ_ASCII ("%actor_off%" + 0x80 + ("%index%" * 0x110)) "cre_file"
PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "mtown3" = 0) BEGIN
  WRITE_ASCII ("%actor_off%" + 0x50 + ("%index%" * 0x110)) ~runenemy~ #8
END
 END
 BUT_ONLY_IF_IT_CHANGES

// abazigal hurts himself when revelaing his dragon form due to bad targeting
COPY_EXISTING ~abzaway.spl~ ~override~
 READ_LONG  0x64 "abil_off" ELSE 0
 READ_SHORT 0x68 "abil_num" ELSE 0
 READ_LONG  0x6a "fx_off" ELSE 0
 FOR (index = 0; index < abil_num; index = index + 1) BEGIN
READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode"
  PATCH_IF ("%opcode%" = 12) BEGIN // damage
	WRITE_BYTE ("%fx_off%" + 0x02 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 8 // target: everyone except self
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

// tob spectator's geas missing sound
COPY_EXISTING ~senbehkd.spl~ ~override~
 READ_LONG  0x64 "abil_off" ELSE 0
 READ_SHORT 0x68 "abil_num" ELSE 0
 READ_LONG  0x6a "fx_off" ELSE 0
 FOR (index = 0; index < abil_num; index = index + 1) BEGIN
READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode"
  PATCH_IF ("%opcode%" = 174) BEGIN // play sound
	WRITE_BYTE ("%fx_off%" + 0x02 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 1 // target: self
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

// cutscene petrification visual effect allows save
COPY_EXISTING ~spin950.spl~ ~override~
 READ_LONG  0x64 "abil_off" ELSE 0
 READ_SHORT 0x68 "abil_num" ELSE 0
 READ_LONG  0x6a "fx_off" ELSE 0
 FOR (index = 0; index < abil_num; index = index + 1) BEGIN
READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode"
  PATCH_IF ("%opcode%" = 215) BEGIN // play 3d effect
	WRITE_LONG ("%fx_off%" + 0x24 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 0 // no save
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

I saw a couple times an issue where the ppdoor cutscene effects would run in AR5000 after Melissan's drivel; it could have been because ppguy was there, but I didn't do any major investigatorio. The LuaPanic() really is supposed to ActionOverride(Player1), though, so I just changed it on faith.

 

We may want to consider Madeen; this was originally the third tavern, but I guess they ran out of time or something. We may not want a persistent peasant, but there's not really any reason for Madeen to be there either, I guess. I'm not sure if people just expect the peasant to leave at this point or wouldn't mind having a patron standing around the whole night.

 

Let me know if the NI doesn't start or has some other horrendous issue.

Link to comment

In the Fear hell trial, the fear spell has one effect (the sound that plays when it runs out) that doesn't bypass MR, causing spurious magic resistance messages.

 

// fear spell in fear hell trial can generate spurious MR messages and not play sound at end of spell duration
COPY_EXISTING ~spin772.spl~ ~override~
 READ_LONG  0x64 "abil_off" ELSE 0
 READ_SHORT 0x68 "abil_num" ELSE 0
 READ_LONG  0x6a "fx_off" ELSE 0
 FOR (index = 0; index < abil_num; index = index + 1) BEGIN
READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode"
  PATCH_IF ("%opcode%" = 174) BEGIN // damage
	WRITE_BYTE ("%fx_off%" + 0x0d + (("%abil_fx_idx%" + "%index2%") * 0x30)) 0 // no dispel/bypass mr
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment
For the Wand of Wonder, however, I do believe that giving the user 50 charges was intended.

Any particular reason?

 

For ar3001, day song and night song: mx0404.mus

Mx0404
6
SPC1
A
SPC1
SPC1
SPC1
SPC1

 

All other references are bd3.mus, which it looks like we nabbed code from japheth to try and fix this already:

 

COPY_EXISTING ~music/bd3.mus~ ~music~
 REPLACE_TEXTUALLY ~G2 +A2 +@TAG +ZG2~ ~G2  BD3   A2		@TAG ZG2~
 BUT_ONLY_IF_IT_CHANGES

 

Before & after for bd3.mus follow:

 

BD3
14
A1				  @TAG Z
A2				  @TAG Z
B1				  @TAG Z
B2				  @TAG Z
C1				  @TAG Z
C2				  @TAG Z
C3A				 @TAG Z
C3B				 @TAG Z
D1				  @TAG Z
E1				  @TAG Z
F1A				 @TAG Z
F2				  @TAG Z
G1				  @TAG Z
G2		A2		@TAG ZG2
# A2 is loop

 

BD3
14
A1				  @TAG Z
A2				  @TAG Z
B1				  @TAG Z
B2				  @TAG Z
C1				  @TAG Z
C2				  @TAG Z
C3A				 @TAG Z
C3B				 @TAG Z
D1				  @TAG Z
E1				  @TAG Z
F1A				 @TAG Z
F2				  @TAG Z
G1				  @TAG Z
G2  BD3   A2		@TAG ZG2
# A2 is loop

 

 

Hello ;),

 

there is no music-piece called ZG2 in the referenced folder. Change the last line to:

G2 A2 @TAG Z

or

G2 BD3 A2 @TAG Z

 

and it will loop correct :D.

 

Regards

 

Roana

Link to comment

We already copy BD2ZG2 to BD3ZG2 (or we should). They just stuck it in with the wrong tracks.

 

Regardless, the end tag doesn't affect looping. The music would just abruptly cease if that track was playing when the engine decided combat was over.

Link to comment
We already copy BD2ZG2 to BD3ZG2 (or we should). They just stuck it in with the wrong tracks.

Shoot, I don't think we are. Regardless, I do think it was a wonky combat counter as this has been the oly place I've experienced this. I was doing a lot of hiding, backstabbing, and running.

 

The Saradush militia HQ uses the same map (sans staircase) as the Crooked Crane, including the secret door. In the case of the militia HQ, though, it's not a secret door--it's opened during the scene that plays upon initial entry. However it's still flagged as secret, so even if the captain leaves the door open and invites you to speak with Mateo, the "I've found a secret door" sound will still play if one of the party members successfully detects it.

 

// non-secret door shouldn't be flagged as secret
COPY_EXISTING ~ar5015.are~ ~override~
 READ_LONG 0xa4 "door_num"
 READ_LONG 0xa8 "door_off"
 FOR (index = 0; index < door_num; index = index + 1) BEGIN
READ_ASCII ("%door_off%" + 0x9c + ("%index%" * 0xc8)) "trans_name"
PATCH_IF ("%trans_name%" STRING_COMPARE_CASE "tran5016" = 0) BEGIN
  READ_BYTE  ("%door_off%" + 0x28 + ("%index%" * 0xc8)) "secret"
  WRITE_BYTE ("%door_off%" + 0x28 + ("%index%" * 0xc8)) ("%secret%" BAND 0b01111111) // removes secret flag
END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment
Shoot, I don't think we are. Regardless, I do think it was a wonky combat counter as this has been the oly place I've experienced this. I was doing a lot of hiding, backstabbing, and running.
What?! Surely I posted my music fixes forever and a year ago, and this was definitely one of the changes. I wonder how much we really don't cover already... The sticky combat counter in AR3001 sounds quite familiar (I think somebody else discussed this issue in recent times); the scripting for some of the enemies on that first level is pretty weird, so it didn't exactly surprise me.

 

I think Cap'n Bob Holmes is intentional. Like the whole tavern, it's some sort of joke.

Link to comment

Wong-Fei's Ioun Stone is using the regeneration icon used by the divine regeneration spell instead of the icon that is used by all other regeneration items.

 

// wong-fei using wrong regen icon
COPY_EXISTING ~helm34.itm~  ~override~
 READ_SHORT  0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 FOR (index2 = 0; index2 < abil_num; index2 = index2 + 1) BEGIN
READ_SHORT ("%abil_off%" + 0x1e + ("%index2%" * 0x38)) "abil_fx_num"
READ_SHORT ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) "abil_fx_idx"
FOR (index = 0; index < abil_fx_num; index = index + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(("%abil_fx_idx%" + "%index%") * 0x30)) "opcode"
  READ_LONG  ("%fx_off%" + 0x08 + (("%abil_fx_idx%" + "%index%") * 0x30)) "icon"
  PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 56)) BEGIN // display regeneration icon
	WRITE_LONG  ("%fx_off%" + 0x08 + (("%abil_fx_idx%" + "%index%") * 0x30)) 87 // change to regenerating
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...