Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
Joined: Sep 2016
journeyman
OP Offline
journeyman
Joined: Sep 2016
I'm trying to change the statuses that Braccus' set pieces apply on equip. Right now the current set of debuffs are Warm, Burning, Slowed, Diseased, and Cursed. Can anyone explain to me how FTJ_SW_BraccusArmorPieces.itemScript selects these?

Quote
INIT
ITEM:__Me
EXTERN STATUS:%StatusToApply=null
EXTERN INT:%bool_PlayADOnEquip=1
EXTERN STRING:%ADString="FTJ_SW_AD_Player_EquipBraccusArmorPiece"
STRING:%ADSetComplete="FTJ_SW_AD_Player_CompleteBraccusArmor"
STRING:%ArmorCompleteEvent="FTJ_SW_BraccusArmor_ArmorComplete"
STRING:%ArmorUnequippedEvent="FTJ_SW_BraccusArmor_PieceUnequipped"
CHARACTER: %MyWearer=null
INT:%bool_ArmorComplete=0

LIST<ITEM>: %Pieces

ITEM:%BraccusArmor_Arms=S_FTJ_SW_BraccusArmor_Arms_e21fb4cd-2b28-4eaa-a913-153be5f23bb9
ITEM:%BraccusArmor_Legs=S_FTJ_SW_BraccusArmor_Legs_0a4896d2-df6d-4c0c-bd79-60315fb77a96
ITEM:%BraccusArmor_Lowerbody=S_FTJ_SW_BraccusArmor_Lowerbody_3ef7e582-a813-40da-a0d4-17b49ee96712
ITEM:%BraccusArmor_Upperbody=S_FTJ_SW_BraccusArmor_Upperbody_3da52544-453d-4bd4-aa95-a2968cf6f647
ITEM:%BraccusArmor_Helm=S_FTJ_ARM_BraccusHelm_Uncured_9e30ecd5-ce72-49d6-a798-c20c8235dd77


// --------------------------------------------------------
EVENTS

/* Sometimes the values of the items are set to nullptr? When picked up?
EVENT BraccusArmor_Init
ON
OnInit()
OnLoaded(_,_,_,_)
ACTIONS
ListAdd(%Pieces,ITEM:S_FTJ_SW_BraccusArmor_Arms_e21fb4cd-2b28-4eaa-a913-153be5f23bb9) // index 1
ListAdd(%Pieces,ITEM:S_FTJ_SW_BraccusArmor_Legs_0a4896d2-df6d-4c0c-bd79-60315fb77a96) // index 2
ListAdd(%Pieces,ITEM:S_FTJ_SW_BraccusArmor_Lowerbody_3ef7e582-a813-40da-a0d4-17b49ee96712) // index 3
ListAdd(%Pieces,ITEM:S_FTJ_SW_BraccusArmor_Upperbody_3da52544-453d-4bd4-aa95-a2968cf6f647) // index 4
IF "c1"
HasGlobalFlag("FTJ_BraccusAxeDemonSpawned")
THEN
ListAdd(%Pieces,ITEM:S_FTJ_ARM_BraccusHelm_Cured_92a963b6-d4e0-4dc6-a49d-8b0847bfb7f5) // index 5
ELSE
ListAdd(%Pieces,ITEM:S_FTJ_ARM_BraccusHelm_Uncured_9e30ecd5-ce72-49d6-a798-c20c8235dd77) // index 5
ENDIF
*/

EVENT BraccusArmor_OnItemEquipped
VARS
CHARACTER:_NewWearer
CHARACTER:_OtherWearer
ITEM:_EquippedPiece
//ITEM:_OtherPiece
//INT:_ListSize
//INT:_Index
INT:_bool_DifferentFound
ON
OnItemEquipped(_NewWearer,__Me)
ACTIONS
Set(%MyWearer,_NewWearer)
//Set(_Index,1)
Set(_bool_DifferentFound,0)

//--- Check if set is complete
/*
IF "c1"
ListGetSize(%Pieces,_ListSize)
THEN
//--- Looping over the pieces to check if all wearers are the same.
WHILE "!c1&c2"
IsGreaterThen(_Index,_ListSize)
IsEqual(_bool_DifferentFound,0)
DO
IF "c1"
ListGet(%Pieces,_Index,_OtherPiece)
THEN
//Assert("In loop - MyWearer: [1]; _OtherPiece: [2]",%MyWearer,_OtherPiece)
IF "c1&!c2"
GetVar(_OtherWearer,_OtherPiece,"MyWearer")
IsEqual(_OtherWearer,%MyWearer)
THEN
Set(_bool_DifferentFound, 1)
ENDIF
ENDIF

Add(_Index,1)
ENDWHILE
*/

IF "c1&c2&!c3"
IsEqual(_bool_DifferentFound, 0)
GetVar(_OtherWearer,%BraccusArmor_Arms,"MyWearer")
IsEqual(_OtherWearer,%MyWearer)
THEN
Set(_bool_DifferentFound, 1)
ENDIF
IF "c1&c2&!c3"
IsEqual(_bool_DifferentFound, 0)
GetVar(_OtherWearer,%BraccusArmor_Legs,"MyWearer")
IsEqual(_OtherWearer,%MyWearer)
THEN
Set(_bool_DifferentFound, 1)
ENDIF
IF "c1&c2&!c3"
IsEqual(_bool_DifferentFound, 0)
GetVar(_OtherWearer,%BraccusArmor_Lowerbody,"MyWearer")
IsEqual(_OtherWearer,%MyWearer)
THEN
Set(_bool_DifferentFound, 1)
ENDIF
IF "c1&c2&!c3"
IsEqual(_bool_DifferentFound, 0)
GetVar(_OtherWearer,%BraccusArmor_Upperbody,"MyWearer")
IsEqual(_OtherWearer,%MyWearer)
THEN
Set(_bool_DifferentFound, 1)
ENDIF
IF "c1&c2&!c3"
IsEqual(_bool_DifferentFound, 0)
GetVar(_OtherWearer,%BraccusArmor_Helm,"MyWearer")
IsEqual(_OtherWearer,%MyWearer)
THEN
Set(_bool_DifferentFound, 1)
ENDIF

IF "!c1"
IsEqual(%StatusToApply, null)
THEN
AddStatusInfluence(%MyWearer,%StatusToApply,50,"",0)
ENDIF

//--- Applying or removing statuses
IF "!c1"
IsEqual(_bool_DifferentFound,1)
THEN
CharacterItemEvent(%MyWearer, __Me, %ArmorCompleteEvent)
DialogStart(_,%ADSetComplete,%MyWearer)
ELSE
//AddStatusInfluence(%MyWearer,%StatusToApply,50,"",0)
IF "c1&!c2"
IsEqual(%bool_PlayADOnEquip,1)
IsEqual(%ADString,null)
THEN
DialogStart(_,%ADString,%MyWearer)
ENDIF
ENDIF
//ENDIF


EVENT BraccusArmor_OnItemUnequipped
VARS
CHARACTER:_Char
ON
OnItemUnequipped(_Char,__Me)
ACTIONS
CharacterItemEvent(%MyWearer,__Me,%ArmorUnequippedEvent)


EVENT BraccusArmor_ArmorCompleteEvent
VARS
CHARACTER:_Wearer
ITEM:_EquippedPiece
ON
OnCharacterItemEvent(_Wearer,_EquippedPiece,%ArmorCompleteEvent)
ACTIONS
Set(%bool_ArmorComplete,1)
IF "c1&!c2"
IsEqual(%MyWearer,_Wearer)
IsEqual(%StatusToApply, null)
//IsEqual(_EquippedPiece,__Me)
THEN
RemoveStatusInfluence(%MyWearer,%StatusToApply,50,"",0)
ENDIF


EVENT BraccusArmor_ArmorUnequippedEvent
VARS
CHARACTER:_OldWearer
ITEM:_UnequippedPiece
ON
OnCharacterItemEvent(_OldWearer,_UnequippedPiece,%ArmorUnequippedEvent)
ACTIONS
IF "c1&!c2"
IsEqual(_UnequippedPiece,__Me)
IsEqual(%StatusToApply, null)
THEN
IF "c1"
IsEqual(%bool_ArmorComplete,0)
THEN
RemoveStatusInfluence(%MyWearer,%StatusToApply,50,"",0)
ENDIF
Set(%MyWearer,null)
ELIF "c1&!c2&c3"
IsEqual(_OldWearer,%MyWearer)
IsEqual(%StatusToApply, null)
IsEqual(%bool_ArmorComplete,1)
THEN
AddStatusInfluence(%MyWearer,%StatusToApply,50,"",0)
ENDIF
Set(%bool_ArmorComplete,0)


EVENT BraccusArmor_HelmetChange
ON
OnGlobalFlagSet("FTJ_BraccusAxeDemonSpawned")
ACTIONS
Set(%BraccusArmor_Helm, S_FTJ_ARM_BraccusHelm_Cured_92a963b6-d4e0-4dc6-a49d-8b0847bfb7f5)
//ListRemove(%Pieces,5) // Remove Uncured version
//ListAdd(%Pieces,ITEM:S_FTJ_ARM_BraccusHelm_Cured_92a963b6-d4e0-4dc6-a49d-8b0847bfb7f5)

Joined: Sep 2014
journeyman
Offline
journeyman
Joined: Sep 2014
Hello, smarmbot.
The type of status that will be applied is controlled by variable EXTERN STATUS:%StatusToApply=null.
Being EXTERN means that it can be set up in the script properties in sidebar. To get access to it you need to select item in world outliner and open sidebar. In sidebar find Scripts property and expand the menu.

https://api.monosnap.com/rpc/file/download?id=xRVQBge3jtjeE9yZTUjmfK9jM7fIqM

Happy modding!

Last edited by Cadmus88; 21/10/17 02:24 PM.
Joined: Sep 2016
journeyman
OP Offline
journeyman
Joined: Sep 2016
Thank you!


Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5