Jump to content

Messengers turning hostile when fighting monsters


Taimon

Recommended Posts

We have a report of a messenger (Wilco on ulcaster map) turning hostile, when fighting the hobgoblins nearby.

 

I can reproduce this with only the "Better calls for help" component installed. (Both Tutu and BGT.)

I'm not really familiar with your shout id system, so I don't know how to fix this properly. (Wilco hears 992 or 984 before going hostile.)

Link to comment
We have a report of a messenger (Wilco on ulcaster map) turning hostile, when fighting the hobgoblins nearby.

That's right and there are more messengers in BG1 in BGT, they turning hostile, too, e.g. at the High Hedge it is the messenger Roger.

 

Greetings Leomar

Link to comment

I see, the hobgoblins and humans use the same shout id. Most likely due to the bandits in chapter 3/4.

What about giving the hobgoblins their own id and only use the human id when in specific areas?

 

/Edit: Looks like 63x and 83x where the IDs you reserved for them in a previous version, so changing the 99x and 98x to those will be a temporary workaround.

 

I also coded a rather lengthy macro to let them shout 99x and 98x in some areas.

Which where the areas you had in mind for the hobgoblins shouting human ids?

// macro/fix for hobgoblin shout script
DEFINE_PATCH_MACRO ~hobgob_shout_fix~ BEGIN
SPRINT new_file ~~
SPRINT AREA_CHECK
	~OR(7)
	 AreaCheck("%CloakwoodDruids%")
	 AreaCheck("%CloakwoodWyverns%")
	 AreaCheck("%CloakwoodMines%")
	 AreaCheck("%CloakwoodMines_L1%")
	 AreaCheck("%CloakwoodMines_L2%")
	 AreaCheck("%CloakwoodMines_L3%")
	 AreaCheck("%CloakwoodMines_L4%")~

DECOMPILE_BCS_TO_BAF
// the following only catches single RESPONSE blocks
REPLACE_EVALUATE CASE_SENSITIVE
		~IF\([^#]*\)THEN\([^#]*#[0-9]+[^#]*\)END~ BEGIN
	SPRINT new_block ~~
	PATCH_IF (~%MATCH2%~ STRING_CONTAINS_REGEXP ~Shout(~ == 0) BEGIN
		INNER_PATCH_SAVE new_trigger ~%MATCH1%~ BEGIN
			REPLACE_TEXTUALLY ~Heard(\[ANYONE\],83\([1-6]\))~
							  ~Heard([ANYONE],98\1)~
			REPLACE_TEXTUALLY ~Heard(\[ANYONE\],63\([1-6]\))~
							  ~Heard([ANYONE],99\1)~
		END
		INNER_PATCH_SAVE new_response ~%MATCH2%~ BEGIN
			REPLACE_TEXTUALLY ~Shout(83\([1-6]\))~
							  ~Shout(98\1)~
			REPLACE_TEXTUALLY ~Shout(63\([1-6]\))~
							  ~Shout(99\1)~
		END
		SPRINT new_block ~
		IF
			%new_trigger%
			%AREA_CHECK%
		THEN
			%new_response%
		END
		~
	END
	SPRINT new_file ~%new_file% %new_block% %MATCH0%~
END ~~
INSERT_BYTES 0x0 (STRING_LENGTH EVALUATE_BUFFER ~%new_file%~)
WRITE_ASCIIE 0x0 ~%new_file%~
COMPILE_BAF_TO_BCS
END

Link to comment

Taimon,

 

thanks again for working around SCS problems.

 

Is it okay if I copy paste your macro under the "Better calls for help" component in the .tp2 and at the same time change this:

 

COPY ~override/dw#help.bcs~ ~override/%tutu_var%hobgoba.bcs~ //hobgoblins use the same help code as SHOUT, so that the hobgobs in the Cloakwood help the Throne humans
REPLACE_TEXTUALLY ~777~ ~99~
REPLACE_TEXTUALLY ~888~ ~98~

 

into this:

 

COPY ~override/dw#help.bcs~ ~override/%tutu_var%hobgoba.bcs~ //hobgoblins use the same help code as SHOUT, so that the hobgobs in the Cloakwood help the Throne humans
REPLACE_TEXTUALLY ~777~ ~63~
REPLACE_TEXTUALLY ~888~ ~83~

 

or am I completely off?

Link to comment

Yes, that's correct.

Repeat the changes on the next copy. (hobgobf.bcs)

 

You don't really need the macro for this.

It should restore the current behaviour of the hobgoblins helping humans, but only in some areas. But I'm not sure which areas David had in mind.

And again, this is untested code, I've no idea if it's working correctly. (But it installs fine at least.)

If you want to try it, add a LAUNCH_PATCH_MACRO to the COPY.

 

COPY ~override/dw#help.bcs~ ~override/%tutu_var%hobgoba.bcs~ //hobgoblins use the same help code as SHOUT, so that the hobgobs in the Cloakwood help the Throne humans
REPLACE_TEXTUALLY ~777~ ~63~
REPLACE_TEXTUALLY ~888~ ~83~
LAUNCH_PATCH_MACRO ~hobgob_shout_fix~

Link to comment

Archived

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

×
×
  • Create New...