Skip to content

Instantly share code, notes, and snippets.

@LaughingLeader
Last active March 2, 2019 03:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LaughingLeader/16e2cc99f30741439ec72a46c60a5f88 to your computer and use it in GitHub Desktop.
Save LaughingLeader/16e2cc99f30741439ec72a46c60a5f88 to your computer and use it in GitHub Desktop.
An example of how to implement an incremental status with behavior scripting (Divinity: Original Sin 2 - Definitive Edition Modding).
INIT
EVENTS
EVENT MyMod_ApplyPain
VARS
CHARACTER:_Target
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
INT:_TurnsLeft
ON
FetchCharacterApplyStatusData(_Target, MYMOD_PAIN_APPLY)
ACTIONS
Set(_Result, null)
Set(_Turns, 1)
IF "c1"
GetStatusTurns(_Target, MYMOD_PAIN_1, _TurnsLeft)
THEN
Add(_Turns, _TurnsLeft)
Set(_Result, MYMOD_PAIN_2)
ListAdd(_RemoveList, MYMOD_PAIN_1)
ELIF "c1"
GetStatusTurns(_Target, MYMOD_PAIN_2, _TurnsLeft)
THEN
Add(_Turns, _TurnsLeft)
Set(_Result, MYMOD_PAIN_3)
ListAdd(_RemoveList, MYMOD_PAIN_2)
ELIF "c1"
GetStatusTurns(_Target, MYMOD_PAIN_3, _TurnsLeft)
THEN
Add(_Turns, _TurnsLeft)
Set(_Result, MYMOD_PAIN_4)
ListAdd(_RemoveList, MYMOD_PAIN_3)
ELIF "c1"
GetStatusTurns(_Target, MYMOD_PAIN_4, _TurnsLeft)
THEN
IF "c1"
IsGreaterThen(_TurnsLeft, 0)
THEN
Add(_Turns, _TurnsLeft)
Clamp(_Turns, 1, 5)
ELSE
Set(_Turns, 1)
ENDIF
Set(_Result, MYMOD_PAIN_5)
ListAdd(_RemoveList, MYMOD_PAIN_4)
ELIF "!c1"
CharacterHasStatus(_Target, MYMOD_PAIN_5)
THEN
Set(_Result, MYMOD_PAIN_1)
Set(_Turns, 1)
ENDIF
RETURN(_RemoveList, _Result, _Turns)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment