journeyman
Joined: Dec 2014
|
Here's a script that I did a year back that does this. Init section
DB_AngeredSpirit("Aeril_WW_AngeredSpirit","Evil NPC","Aeril_WW_AngrySpirit");
DB_GaervConvinced("Aeril_WW_GaervSolution",CHARACTER_Aeril_SpiritOfTheForest,TRIGGER_Aeril_WW_DialogTrigger,"Aeril_TD_GaervWisp");
DB_GaervSpiritDrinks("Aeril_WW_GaervSpiritDrinks");
DB_GaervPlayerSpiritBottomsUp(CHARACTER_Aeril_GaervTable,"WaitForScreen","Aeril_WW_GaervSitDown",TRIGGER_Aeril_WW_GaervChairPlayer);
DB_GaervSitCount(0);
DB_GaervSpiritChairStartsDialog(ITEM_FUR_GaervChair2,"Aeril_TD_GaervWispTable",CHARACTER_Aeril_GaervTable,CHARACTER_Aeril_SpiritTable);
DB_GaervSpirit(CHARACTER_Aeril_Gaerv);
DB_GaervSpirit(CHARACTER_Aeril_SpiritOfTheForest);
DB_GaervSpiritDrinksItems(ITEM_FUR_GaervChair1);
DB_GaervSpiritDrinksItems(ITEM_FUR_GaervChair2);
DB_GaervSpiritDrinksItems(ITEM_FUR_GaervChair3);
DB_GaervSpiritDrinksItems(ITEM_CON_GaervCup1);
DB_GaervSpiritDrinksItems(ITEM_CON_GaervCup2);
DB_GaervSpiritDrinksItems(ITEM_CON_GaervCup3);
DB_GaervSpiritDrinksItems(ITEM_FUR_GaervLiquor);
DB_GaervSpiritDrinksItems(ITEM_FUR_GaervRoundTable);
ProcSetItemsOnStage(0);
DB_GaervSpiritTable(CHARACTER_Aeril_GaervTable);
DB_GaervSpiritTable(CHARACTER_Aeril_SpiritTable);
ProcSetDrinkGaervSpiritOnStage(0);
DB_SpiritSummons(CHARACTER_Aeril_WW_Summon1,TRIGGER_Aeril_WW_SpiritSummonSpawn1);
DB_SpiritSummons(CHARACTER_Aeril_WW_Summon2,TRIGGER_Aeril_WW_SpiritSummonSpawn2);
DB_SpiritSummons(CHARACTER_Aeril_WW_Summon3,TRIGGER_Aeril_WW_SpiritSummonSpawn3);
DB_SpiritSummons(CHARACTER_Aeril_WW_Summon4,TRIGGER_Aeril_WW_SpiritSummonSpawn4);
ProcSetSpiritSummonsOnStage(0);
DB_CharacterGain(CHARACTER_Aeril_WW_Summon1,0.10);
DB_CharacterGain(CHARACTER_Aeril_WW_Summon1,0.10);
DB_CharacterGain(CHARACTER_Aeril_WW_Summon1,0.10);
DB_CharacterGain(CHARACTER_Aeril_WW_Summon1,0.10);
DB_CharacterGain(CHARACTER_Aeril_SpiritOfTheForest,0.20);
DB_JournalAdd("Aeril_WW_WispCompromise","Aeril_TheWoodOrTheWisps",0);
DB_JournalUpdate("Aeril_WW_WispCompromise","Aeril_TheWoodOrTheWisps","Update1",0);
DB_JournalUpdate("Aeril_WW_GaervTroubles","Aeril_TheWoodOrTheWisps","Update2",0);
DB_JournalUpdate("Aeril_WW_GaervBarter","Aeril_TheWoodOrTheWisps","Update3",0);
DB_JournalUpdate("Aeril_WW_GaervArrow","Aeril_TheWoodOrTheWisps","Update4",0);
DB_JournalUpdate("Aeril_WW_GaervCrafting","Aeril_TheWoodOrTheWisps","Update5",0);
DB_JournalUpdate("Aeril_WW_AngeredSpirit","Aeril_TheWoodOrTheWisps","Update6",0);
DB_JournalUpdate("Aeril_WW_WispLeaveForest","Aeril_TheWoodOrTheWisps","Update7",0);
Code section
//BEGIN Anger Wisp
IF
DialogCharacterEventSet(_Flag,_Character,_DialogInstance)
AND
DB_AngeredSpirit(_Flag,_Faction,_DisplayText)
THEN
DB_DoActionAfterDialogEndedAngerWisp(_DialogInstance,_Character,_Faction,_DisplayText);
NOT DB_AngeredSpirit(_Flag,_Faction,_DisplayText);
IF
DialogEnded(_Dialog,_DialogInstance)
AND
DB_DoActionAfterDialogEndedAngerWisp(_DialogInstance,_Character,_Faction,_DisplayText)
THEN
CharacterSetFaction(_Character,_Faction);
CharacterDisplayText(_Character,_DisplayText);
ProcSpiritSummons(1);
NOT DB_DoActionAfterDialogEndedAngerWisp(_DialogInstance,_Character,_Faction);
PROC
ProcSetSpiritSummonsOnStage((INTEGER)_OnStage)
AND
DB_SpiritSummons(_Summon,_Trigger)
THEN
CharacterSetOnStage(_Summon,_OnStage);
PROC
ProcSpiritSummons((INTEGER)_PlayAnimation,(CHARACTER)_Player)
AND
DB_SpiritSummons(_Summon,_Trigger)
THEN
ProcAugmentLevel(_Summon,_Player);
CharacterAppearAtTrigger(_Summon,_Trigger,_PlayAnimation);
//END Anger Wisp
//BEGIN Gaerv Convinced to talk, moves to spirit
IF
DialogCharacterEventSet(_Flag,_Character,_DialogInstance)
AND
DB_GaervConvinced(_Flag,_NPC,_Trigger,_Dialog)
THEN
DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Flag,_Trigger,_Dialog);
NOT DB_GaervConvinced(_Flag,_NPC,_Trigger,_Dialog);
IF
DialogEnded(_Dialog,_DialogInstance)
AND
DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Event,_Trigger,_DialogToLaunch)
THEN
CharacterMoveToCharacter(_Character,_NPC,0,_Event);
IF
CharacterEvent(_Character,_Event)
AND
DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Event,_Trigger,_Dialog)
THEN
DB_DoActionOnTriggerEnteredMoveGaerv(_Character,_NPC,_Trigger,_Dialog);
TriggerRegisterForPlayers(_Trigger);
CharacterFreeze(_Character);
NOT DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Event,_Trigger,_Dialog);
IF
CharacterEnteredTrigger(_Character,_Trigger)
AND
DB_DoActionOnTriggerEnteredMoveGaerv(_NPC1,_NPC2,_Trigger,_Dialog)
AND
_Character.isPlayer()
THEN
CharacterUnfreeze(_NPC1);
TriggerUnregisterForPlayers(_Trigger);
ProcDoThreeSpeakerDialog(_Dialog,_NPC1,_NPC2,_Character);
CharacterLookAtCharacter(_Character,_NPC2,0);
NOT DB_DoActionOnTriggerEnteredMoveGaerv(_NPC1,_NPC2,_Trigger,_Dialog);
//END Gaerv Convinced to talk, moves to spirit
//BEGIN Gaerv, Spirit BottomsUp!
PROC
ProcSetItemsOnStage((INTEGER)_OnStage)
AND
DB_GaervSpiritDrinksItems(_Item)
THEN
ItemSetOnstage(_Item,_OnStage);
PROC
ProcSetDrinkGaervSpiritOnStage((INTEGER)_OnStage)
AND
DB_GaervSpiritTable(_Item)
THEN
CharacterSetOnStage(_Item,_OnStage);
PROC
ProcSetGaervSpiritOnStage((INTEGER)_OnStage)
AND
DB_GaervSpirit(_Character)
THEN
CharacterSetOnStage(_Character,_OnStage);
IF
DialogCharacterEventSet(_Flag,_Character,_DialogInstance)
AND
DB_GaervSpiritDrinks(_Flag)
THEN
DB_DoActionAfterDrinks(_DialogInstance,_Character);
NOT DB_GaervSpiritDrinks(_Flag);
IF
DialogEnded(_Dialog,_DialogInstance)
AND
DB_DoActionAfterDrinks(_DialogInstance,_Character)
THEN
FadeToBlack(_Character,1.0,0);
TimerLaunch(_Dialog,3000);
IF
TimerFinished(_Event)
AND
DB_DoActionAfterDrinks(_DialogInstance,_Character)
AND
DB_GaervPlayerSpiritBottomsUp(_NPC,_TimerEvent,_DisplayText,_Trigger)
THEN
TimerCancel(_Event);
ProcSetItemsOnStage(1);
ProcSetGaervSpiritOnStage(0);
ProcSetDrinkGaervSpiritOnStage(1);
CharacterTeleportToTrigger(_Character,_Trigger,"");
FadeToBlack(_Character,1.0,1);
TimerLaunch(_TimerEvent,3000);
NOT DB_DoActionAfterDrinks(_DialogInstance,_Character);
IF
TimerFinished(_TimerEvent)
AND
DB_GaervPlayerSpiritBottomsUp(_NPC,_TimerEvent,_DisplayText,_Trigger)
AND
DB_GaervSitCount(_Count)
AND
IntegerSum(_Count,1,_Sum)
AND
_Sum < 5
AND
DB_NumberString(_Sum,_NumberAsString)
AND
StringConcatenate(_DisplayText,_NumberAsString,_ResultingDisplayText)
THEN
NOT DB_GaervSitCount(_Count);
DB_GaervSitCount(_Sum);
TimerCancel(_TimerEvent);
CharacterDisplayText(_NPC,_ResultingDisplayText);
TimerLaunch(_TimerEvent,6000);
IF
CharacterUsedItem(_Character,_Item)
AND
DB_GaervSpiritChairStartsDialog(_Item,_Dialog,_NPC1,_NPC2)
AND
_Character.isPlayer()
AND
DB_GaervPlayerSpiritBottomsUp(_N,_TimerEvent,_DT,_T)
THEN
TimerCancel(_TimerEvent);
ProcDoThreeSpeakerDialog(_Dialog,_NPC1,_NPC2,_Character);
NOT DB_GaervSpiritChairStartsDialog(_Item,_Dialog,_NPC1,_NPC2);
NOT DB_GaervPlayerSpiritBottomsUp(_N,_TimerEvent,_DT,_T);
//END Gaerv, Spirit BottomsUp!
The specific part that you want to check for is when the charater moves in a trigger : CharacterEnteredTrigger(_Character,_Trigger)
IF
DialogEnded(_Dialog,_DialogInstance)
AND
DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Event,_Trigger,_DialogToLaunch)
THEN
CharacterMoveToCharacter(_Character,_NPC,0,_Event);
IF
CharacterEvent(_Character,_Event)
AND
DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Event,_Trigger,_Dialog)
THEN
DB_DoActionOnTriggerEnteredMoveGaerv(_Character,_NPC,_Trigger,_Dialog);
TriggerRegisterForPlayers(_Trigger);
CharacterFreeze(_Character);
NOT DB_DoActionAfterDialogEndedMoveGaerv(_DialogInstance,_Character,_NPC,_Event,_Trigger,_Dialog);
IF
CharacterEnteredTrigger(_Character,_Trigger)
AND
DB_DoActionOnTriggerEnteredMoveGaerv(_NPC1,_NPC2,_Trigger,_Dialog)
AND
_Character.isPlayer()
THEN
CharacterUnfreeze(_NPC1);
TriggerUnregisterForPlayers(_Trigger);
ProcDoThreeSpeakerDialog(_Dialog,_NPC1,_NPC2,_Character);
CharacterLookAtCharacter(_Character,_NPC2,0);
NOT DB_DoActionOnTriggerEnteredMoveGaerv(_NPC1,_NPC2,_Trigger,_Dialog);
This script contains more than what you asked but maybe it can help you answer some other questions you might or will have.
|