Jump to content

Potential Bug


plainab

Recommended Posts

Just got here to report an issue and noticed that there is a new version. Perhaps this has been fixed and I have yet to find out.

 

I will report what I have found and you can check it out for yourself. I noticed this when doing some work on my party ai script. The following trigger caused my script's installation to fail in an EasyTutu install with SCS among other things installed.

 

CheckStatGT(Myself,1,HIDEINSHADOWS)

 

Why do I ask in SCS about this?

 

SCS version 8 does the following to the stats.ids file

 

COPY_EXISTING ~STATS.IDS~ ~override~
// SET_2DA_ENTRY 0 0 1 ~1~   //that's a trick for WeiDU to handle row numbers properly - removes all leading empty rows
COUNT_2DA_ROWS 2 "rows_cnt"
FOR( cnt=1; cnt<"%rows_cnt%"+1; cnt=cnt+1 ) BEGIN
  READ_2DA_ENTRY (cnt+0xffffffff) 0 2 "id"
  PATCH_IF( "%id%" = 109 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_HALLOW~
  END
  PATCH_IF( "%id%" = 110 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_ARMOR_OF_FAITH~
  END
  PATCH_IF( "%id%" = 116 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_SPELL_DEFLECTION~						  
  END																 
  PATCH_IF( "%id%" = 117 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~PROTECTION_FROM_EVIL~
  END																 
  PATCH_IF( "%id%" = 118 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~TRUE_SIGHT~
  END														 
  PATCH_IF( "%id%" = 119 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_CHAOTIC_COMMANDS~		
  END												  
  PATCH_IF( "%id%" = 120 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_INSECT_PLAGUE~
  END
  PATCH_IF( "%id%" = 121 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_BLADE_BARRIER~		
  END
  PATCH_IF( "%id%" = 122 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_PHYSICAL_MIRROR~		
  END																	  
  PATCH_IF( "%id%" = 123 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_SHIELD_OF_THE_ARCHONS~
  END																	  
  PATCH_IF( "%id%" = 124 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_REGENERATION~		
  END																
  PATCH_IF( "%id%" = 125 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_FIRE_SHIELD~
  END
  PATCH_IF( "%id%" = 126 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_MAGIC_ENERGY~
  END																   
  PATCH_IF( "%id%" = 127 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_MISLEAD~		
  END
  PATCH_IF( "%id%" = 128 ) BEGIN				 
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_MAGIC_WEAPONS~
  END
  PATCH_IF( "%id%" = 129 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_SPELL_TURNING~
  END
  PATCH_IF( "%id%" = 130 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_THE_ELEMENTS~
  END
  PATCH_IF( "%id%" = 131 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_FREE_ACTION~
  END
  PATCH_IF( "%id%" = 132 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_KHELBANS_WARDING_WHIP~
  END
  PATCH_IF( "%id%" = 133 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~CLERIC_DEFENSIVE_HARMONY~
  END
  PATCH_IF( "%id%" = 134 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~LEVELDRAIN~
  END
  PATCH_IF( "%id%" = 156 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~SCRIPTINGSTATE1~
  END
  PATCH_IF( "%id%" = 157 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~SCRIPTINGSTATE2~
  END
  PATCH_IF( "%id%" = 158 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~SCRIPTINGSTATE3~
  END
  PATCH_IF( "%id%" = 159 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~SCRIPTINGSTATE4~
  END
  PATCH_IF( "%id%" = 160 ) BEGIN						
 SET_2DA_ENTRY cnt 1 2 ~SCRIPTINGSTATE5~				  
  END														 
  PATCH_IF( "%id%" = 161 ) BEGIN							 
 SET_2DA_ENTRY cnt 1 2 ~SCRIPTINGSTATE6~
  END
  PATCH_IF( "%id%" = 162 ) BEGIN						   
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_SPELL_IMMUNITY~				  
  END
  PATCH_IF( "%id%" = 163 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_ENERGY~
  END
  PATCH_IF( "%id%" = 164 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_SPELL_TRAP~
  END
  PATCH_IF( "%id%" = 165 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_IMPROVED_ALACRITY~
  END
  PATCH_IF( "%id%" = 176 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_PETRIFICATION~
  END
  PATCH_IF( "%id%" = 177 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_SPELL_SHIELD~
  END
  PATCH_IF( "%id%" = 178 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_RESIST_FEAR~
  END
  PATCH_IF( "%id%" = 179 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_NORMAL_MISSILES~
  END
  PATCH_IF( "%id%" = 180 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_GREATER_MALISON~
  END
  PATCH_IF( "%id%" = 181 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_PROTECTION_FROM_NORMAL_WEAPONS~
  END
  PATCH_IF( "%id%" = 182 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~WIZARD_TENSERS_TRANSFORMATION~
  END
  PATCH_IF( "%id%" = 200 ) BEGIN
 SET_2DA_ENTRY cnt 1 2 ~LEVELDRAIN_WRONG~
  END
END
BUT_ONLY_IF_IT_CHANGES

 

Where I have a real concern is this

PATCH_IF( "%id%" = 134 ) BEGIN

SET_2DA_ENTRY cnt 1 2 ~LEVELDRAIN~

END

In my finalized stats.ids file I have

134 CLERIC_DEFENSIVE_HARMONY

135 LEVELDRAIN

instead of the intended

134 LEVELDRAIN

135 HIDEINSHADOWS

as entry 135 is the value for HIDEINSHADOWS in the original file.

 

If one is off perhaps the entire list is off and who knows for sure what that could do to other stat checks throughout the game.

 

I think the problem stems from the reading of the ID value with this

READ_2DA_ENTRY (cnt+0xffffffff) 0 2 "id"

and then just setting with this

SET_2DA_ENTRY cnt 1 2 ~LEVELDRAIN~

 

What I'm trying to say is that if READ_2DA_ENTRY (cnt+0xffffffff) 0 2 equals 134 then it makes sense to use SET_2DA_ENTRY (cnt+0xffffffff) 1 2 ~LEVELDRAIN~

But I really don't understand why you add that 0xffffffff

 

Here's an example of how I would have done it using your variables so that if after checking into things and this does need to be addressed in version 9 you can just try out my code here and copy in the other entries.

COPY_EXISTING ~STATS.IDS~ ~override~
COUNT_2DA_COLS ~cols~
COUNT_2DA_ROWS %cols% ~rows_cnt~
FOR (cnt=0;cnt<%rows_cnt%;cnt+=1) BEGIN
 READ_2DA_ENTRY %cnt% 0 %cols% ~id~
 PATCH_IF (%id% = 134)  BEGIN
SET_2DA_ENTRY %cnt% 1 %cols% ~LEVELDRAIN~
 END
END
BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...