Skip to content

Instantly share code, notes, and snippets.

@LaughingLeader
Last active June 17, 2019 20:03
Show Gist options
  • Save LaughingLeader/2c067eb695e0739bfa1fdb0cfda45a14 to your computer and use it in GitHub Desktop.
Save LaughingLeader/2c067eb695e0739bfa1fdb0cfda45a14 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) (no incremental turn version).
INIT
EVENTS
/*
Apply MYMOD_PAIN_APPLY with a skill or whatever is appropriate (weapon, script, etc).
This status should have the amount of turns you want the actual status to be, i.e.:
MYMOD_PAIN_APPLY,100,3
MYMOD_PAIN_1 to 5 should have increasing StackPriority properties,
so they can override one another. Ex:
new entry "MYMOD_PAIN_2"
type "StatusData"
data "StatusType" "DAMAGE
using "MYMOD_PAIN_1"
data "StackPriority" "2"
*/
EVENT MyMod_ApplyPain
VARS
CHARACTER:_Target
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Target, MYMOD_PAIN_APPLY)
ACTIONS
Set(_Result, null)
IF "c1"
CharacterHasStatus(_Target, MYMOD_PAIN_1)
THEN
Set(_Result, MYMOD_PAIN_2)
ListAdd(_RemoveList, MYMOD_PAIN_1)
ELIF "c1"
CharacterHasStatus(_Target, MYMOD_PAIN_2)
THEN
Set(_Result, MYMOD_PAIN_3)
ListAdd(_RemoveList, MYMOD_PAIN_2)
ELIF "c1"
CharacterHasStatus(_Target, MYMOD_PAIN_3)
THEN
Set(_Result, MYMOD_PAIN_4)
ListAdd(_RemoveList, MYMOD_PAIN_3)
ELIF "c1"
CharacterHasStatus(_Target, MYMOD_PAIN_4)
THEN
Set(_Result, MYMOD_PAIN_5)
ListAdd(_RemoveList, MYMOD_PAIN_4)
ELIF "!c1"
CharacterHasStatus(_Target, MYMOD_PAIN_5)
THEN
Set(_Result, MYMOD_PAIN_1)
ENDIF
RETURN(_RemoveList, _Result, null)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment