Jump to content
berelinde

Garrick alignment tweak

Recommended Posts

Some time ago, I was struck with the idea that Garrick didn't really seem as chaotic neutral as he did chaotic good. He values heroism and valor, even though he has little enough of either himself. OK, he seems more "chaotic gullible" than any alignment, really, but he does generally seem like he wants to do the right thing. He isn't quite self-serving enough for chaotic neutral.

 

I went and made up a mini-mod (extremely mini mini-mod) that changes Garrick's alignment to chaotic good. It flies in the face of the 2E rule that says bards must have "neutral" in their alignment somewhere, but if Jaheira can be neutral good, Garrick can be chaotic good.

 

Maybe I'm not the only one that would use this tweak, so I present it here. If anybody thinks it would be good in the tweak pack, help yourself. No, I still don't understand R_E stuff. Miloch wrote that part. I just threw in the install detection stuff.

 

BEGIN ~Change Garrick's alignment to Chaotic Good~
 ACTION_IF FILE_EXISTS_IN_GAME ~FW0100.are~ THEN BEGIN
/* Tell the player it is using Tutu stuff */
PRINT ~Tutu detected. Changing Garrick's alignment to chaotic good.~

COPY_EXISTING_REGEXP GLOB ~^_garri.*\.cre$~ ~override~
  WRITE_BYTE 0x27b 0x31
BUT_ONLY_IF_IT_CHANGES
 END ELSE BEGIN
 ACTION_IF FILE_EXISTS_IN_GAME ~AR7200.are~ THEN BEGIN
/* Tell the player it is using BGT stuff */
PRINT ~BGT detected. Changing Garrick's alignment to chaotic good.~

COPY_EXISTING_REGEXP GLOB ~^garri.*\.cre$~ ~override~
  WRITE_BYTE 0x27b 0x31
BUT_ONLY_IF_IT_CHANGES
 END ELSE BEGIN FAIL ~You must have either Tutu or BGT installed to use this component.~
END
END

Share this post


Link to post

First of all, nice tweak. It probably should be included in the tweak pack, as more choices is always a good thing!

 

I just want to play devil's advocate here and say that Garrick isn't Good, he's Neutral. My understanding of alignement is that nobody (except cliche villains -ie. most evil characters in D&D games!) is against virtue and even neutral characters will prefer justice to injustice, fairness to unfairness, etc. The question you have to ask, however, is this: are you willing to make a stand for those principles? If you are, you're Good, if you aren't (even if you would prefer them to the alternative), like Garrick, you're Neutral.

Share this post


Link to post

Yeah, it's likely that there are plenty of folks that disagree on alignment. I tend to view it as more of a continuum, with Garrick as a good-tending-to-neutral-through-inertia, rather than as a neutral-tending-toward-good-through-wishful-thinking, but the beauty of tweaks is that folks can use them or not. :thumbsup:

Share this post


Link to post
No, I still don't understand R_E stuff. Miloch wrote that part. I just threw in the install detection stuff.
Eh, I did? Looks like hieroglyphics to me.

 

If you're talking about the regexp stuff, I was just being sloppy and/or swiping code from the BG2 Fix/Tweakpack. It's far better to copy the individual Garrick CREs than to use slow regexp, even if you use 3 lines instead of 1. Also you can merge the BGT and Tutu sections by using a variable for the underscore, since that's the only difference really in this case. You could throw in BG1 compatibility for that reason too without adding (much) to the code. I'm probably just critiquing my own (dated) code here though.

Share this post


Link to post

No, it works pretty quickly, to tell you the truth. To be honest, I did look at the BG2 Tweaks stuff, for patching skin/haircolor for Amaurea's BG2 Portraits, and did that more or less the same way as this.

 

So it works, and that's the important part.

 

What is funny is that it takes half of forever to patch Viconia's skincolor in Tweaks, but the portraits mod stuff is a heck of a lot faster. I don't know why this would be.

 

The only difference I can see is that Tweaks uses

COPY_EXISTING_REGEXP GLOB ~^.+\.cre$~ ~override~ // Viconia skin color change
 READ_LONG 0x08 "name" ELSE 0
 PATCH_IF (("%name%" = 6132) OR ("%name%" = 9489) OR ("%name%" = 9508)) BEGIN
WRITE_BYTE 0x2F 96
 END
 BUT_ONLY_IF_IT_CHANGES

Whereas I used this

	COPY_EXISTING_REGEXP GLOB ~^korgan.*\.cre$~ ~override~ /* changes haircolor to brown */
  WRITE_BYTE 0x32 01
BUT_ONLY_IF_IT_CHANGES

Share this post


Link to post

The difference is this:

COPY_EXISTING_REGEXP GLOB ~^.+\.cre$~ ~override~

which is copying *every single CRE* in the game. Then it's reading its name and patching if it matches certain hardcoded strings (why it does it this way, I dunno, but I'm sure there's a good reason).

 

And the difference in copying Garrick's CREs via regexp in speed is probably measured in milliseconds, but the general rule I follow is if I can avoid using regexp and globbing without using a whole mess of code to accomplish the same thing, then I do (maybe I'm just anal though).

Share this post


Link to post
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...