2. Characters auto-equip stuff assigned by Equipment.txt. I think they do it in a first-come-first-server order. Best look at Wolgraff's entry, because he is the only one of the companions who has a spare bow and he has his two daggers equipped when you hire him.
(When I undressed and redressed him via script, he had the bow equipped, so order matters.)

For 3 and 4 look into the Osiris scripts. The whole exclamation marker thing must be somewhere in the Osiris scripts.

_Global_AffinitySystem.txt has

Code
PROC
  ProcDefineAffectionDialog((CHARACTER)_SrcChar,(STRING)_Dialog)
  AND
  NOT DB_DualDialogsDisabled(1)
  AND
  _Player.DB_IsPlayer()
  AND
  NOT DB_Companion(_Player)
  AND
  _Player!=_SrcChar
  AND
  NOT DB_AffectionDialog(_Dialog,_SrcChar,_)
THEN
  PROC_CheckPlayTutWithDelay("TUT_DualDialog",500);
  PROC_LoopEffectAtCharacter("FX_GP_ExclamationMark_A",_Player,"AffectionExclamationMark","__ANY__");
  PROC_LoopEffectAtCharacter("FX_GP_ExclamationMark_A",_SrcChar,"AffectionExclamationMark","__ANY__");
  CharacterSetHasDialog(_Player,1);
  CharacterSetHasDialog(_SrcChar,1);
  DB_AffectionDialog(_Dialog,_SrcChar,_Player);

You probably do not want to show tutorial messages in your mod so you can skip the first call.
(... and you have to look up how the procedures work)
You can play loop effects with character scripts too if you wish.


I just quickly looked over some scripts and I believe, the Rift Travel button is shown with the call SetHomesteadKeyState(<INT>) like in HOM_Key.txt

Code
IF
  DB_GlobalEvent("CYS_HomesteadKeyGiven")
THEN
  DB_FirstTimeUse(1);
  SetHomesteadKeyState(2);
  UnlockWaypoint("WAYP_Homestead",TRIGGER_CentralRoomEntry);
  UnlockWaypoint("WAYP_Cyseal_NorthGate",TRIGGER_WAYP_Cyseal_NorthGate_Pos);


with parameter 1 being enabled and 2 being enabled and blinking, and 0 being disabled (used in the Luculla Mines I think).

Rift Travel is disabled in the endgame

Code
PROC
  Proc_Endgame_Dreamsequence_Start()
THEN
  SetHomesteadKeyState(0);
  EnableSendToHomestead(0);
  PROC_TeleportingRegionBlockOn();
  CharacterTeleportPartyToTrigger(TRIGGER_END_RoomA_Entrance,"");
  DB_AD_Dialog(CHARACTER_Zandalor,"HOM_AD_Zandalor_PortalWait");
  CharacterSetOnStage(CHARACTER_Zandalor,1);
  ProcRemoveAllDialogEntriesForSpeaker(CHARACTER_Zandalor);
  Proc_END_PrepRoomB();
  IgnoreOnlyCompanionDialogs(1);
  ProcCancelAllCompanionDialogs(CHARACTER_Madoc);
  ProcCancelAllCompanionDialogs(CHARACTER_Jahan);
  ProcCancelAllCompanionDialogs(CHARACTER_Wolgraff);
  ProcCancelAllCompanionDialogs(CHARACTER_Bairdotr);
  ProcRemoveAllDialogEntriesForSpeaker(CHARACTER_Madoc);
  ProcRemoveAllDialogEntriesForSpeaker(CHARACTER_Jahan);
  ProcRemoveAllDialogEntriesForSpeaker(CHARACTER_Wolgraff);
  ProcRemoveAllDialogEntriesForSpeaker(CHARACTER_Bairdotr);
  DB_AD_Dialog(CHARACTER_Madoc,"END_AD_Madora");
  DB_AD_Dialog(CHARACTER_Jahan,"END_AD_Jahan");
  DB_AD_Dialog(CHARACTER_Wolgraff,"END_AD_Wolgraff");
  DB_AD_Dialog(CHARACTER_Bairdotr,"END_AD_Bairdotr");
  DB_EndLevelStarted(1);


If you want to know, why the button is not shown at all in the beginning, you have to ask Larian ... hmm, don't even bother ;-)
All we can do is guess that it's only shown when it's activated once and then never removed again.
(A reason not to remove it with parameter 0 could be to have an event to catch to display a auto-dialog and diaog in the mines.)


Last edited by FrauBlake; 23/10/16 03:03 PM.