Created
August 1, 2019 01:44
-
-
Save LaughingLeader/ea6df3a01b4e87fe699c96fc53c56b8a to your computer and use it in GitHub Desktop.
DOS2DE story script that auto-identifies items if Loremaster meets a min value in the party.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//REGION AUTO_IDENTIFY | |
IF | |
ItemTemplateOpening(_, _Item, _Char) | |
AND | |
ObjectGetFlag(_Item, "LLTEST_LORE_Identified", 0) | |
AND | |
CharacterIsPlayer(_Char, 1) | |
AND | |
LLTEST_LORE_PartyHasHighEnoughLoremaster(_Char, 5) | |
AND | |
ItemIsContainer(_Item, _IsContainer) | |
THEN | |
LLTEST_LORE_Identify(_Char, _Item, _IsContainer); | |
IF | |
ItemAddedToCharacter(_Item, _Char) | |
AND | |
ObjectGetFlag(_Item, "LLTEST_LORE_Identified", 0) | |
AND | |
CharacterIsPlayer(_Char, 1) | |
AND | |
LLTEST_LORE_PartyHasHighEnoughLoremaster(_Char, 5) | |
AND | |
ItemIsContainer(_Item, _IsContainer) | |
THEN | |
LLTEST_LORE_Identify(_Char, _Item, _IsContainer); | |
PROC | |
ProcBlockPickupOfItem((CHARACTERGUID)_Char, (ITEMGUID)_Item) | |
AND | |
NOT DB_CustomPickupItemResponse(_Char,_Item, 0) // The item is not blocked | |
AND | |
ObjectGetFlag(_Item, "LLTEST_LORE_Identified", 0) | |
AND | |
CharacterIsPlayer(_Char, 1) | |
AND | |
LLTEST_LORE_PartyHasHighEnoughLoremaster(_Char, 5) | |
AND | |
ItemIsContainer(_Item, _IsContainer) | |
THEN | |
LLTEST_LORE_Identify(_Char, _Item, _IsContainer); | |
PROC | |
ProcBlockMoveOfItem((CHARACTERGUID)_Char,(ITEMGUID)_Item) | |
AND | |
NOT DB_CustomMoveItemResponse(_Char, _Item, 0) | |
AND | |
ObjectGetFlag(_Item, "LLTEST_LORE_Identified", 0) | |
AND | |
CharacterIsPlayer(_Char, 1) | |
AND | |
LLTEST_LORE_PartyHasHighEnoughLoremaster(_Char, 5) | |
AND | |
ItemIsContainer(_Item, _IsContainer) | |
THEN | |
LLTEST_LORE_Identify(_Char, _Item, _IsContainer); | |
PROC | |
LLTEST_LORE_Identify((CHARACTERGUID)_Char, (ITEMGUID)_Item, 0) | |
AND | |
String(_Item, _Str) | |
THEN | |
LeaderLog_Log("DEBUG", "[LaughingLeader_TestMod_Experiments:LORE] Identifying item [",_Str,"] via proxy container."); | |
ObjectSetFlag(_Item, "LLTEST_LORE_Identified", 0); | |
LLTEST_LORE_AddToIdentifyContainer(_Char, _Item); | |
PROC | |
LLTEST_LORE_AddToIdentifyContainer((CHARACTERGUID)_Char, (ITEMGUID)_Item) | |
AND | |
NOT DB_LLTEST_LORE_Temp_IdentifyHolder(_Char, _) | |
AND | |
GetPosition(_Char, _x, _y, _z) | |
AND | |
CreateItemTemplateAtPosition("CONT_Humans_Backpack_Merchant_A_360e3e11-c7f8-4281-848a-596e37df884b", _x, _y, _z, _Backpack) | |
THEN | |
DB_LLTEST_LORE_Temp_IdentifyHolder(_Char, _Backpack); | |
ItemSetOwner(_Backpack, _Char); | |
ProcObjectTimer(_Backpack, "LLTEST_Timers_IdentifyContainer", 250); | |
PROC | |
LLTEST_LORE_AddToIdentifyContainer((CHARACTERGUID)_Char, (ITEMGUID)_Item) | |
AND | |
DB_LLTEST_LORE_Temp_IdentifyHolder(_Char, _Backpack) | |
THEN | |
ItemToInventory(_Item, _Backpack); | |
PROC | |
ProcObjectTimerFinished((ITEMGUID)_Backpack, "LLTEST_Timers_IdentifyContainer") | |
AND | |
DB_LLTEST_LORE_Temp_IdentifyHolder(_Char, _Backpack) | |
THEN | |
NOT DB_LLTEST_LORE_Temp_IdentifyHolder(_Char, _Backpack); | |
ContainerIdentifyAll(_Backpack); | |
MoveAllItemsTo(_Backpack, _Char, 0, 0, 0); | |
ProcObjectTimer(_Backpack, "LLTEST_Timers_RemovedIdentifyContainer", 250); | |
PROC | |
ProcObjectTimerFinished((ITEMGUID)_Backpack, "LLTEST_Timers_IdentifyContainer") | |
THEN | |
ItemRemove(_Backpack); | |
PROC | |
LLTEST_LORE_Identify((CHARACTERGUID)_Char, (ITEMGUID)_Item, 1) | |
AND | |
String(_Item, _Str) | |
THEN | |
LeaderLog_Log("DEBUG", "[LaughingLeader_TestMod_Experiments:LORE] Identifying container [",_Str,"]."); | |
ContainerIdentifyAll(_Item); | |
ObjectSetFlag(_Item, "LLTEST_LORE_Identified", 0); | |
InventoryLaunchIterator(_Item, "LLTEST_LORE_FlagAndIdentify", ""); | |
IF | |
StoryEvent((ITEMGUID)_Item, "LLTEST_LORE_FlagAndIdentify") | |
THEN | |
ObjectSetFlag(_Item, "LLTEST_LORE_Identified", 0); | |
IF | |
StoryEvent((ITEMGUID)_Item, "LLTEST_LORE_FlagAndIdentify") | |
AND | |
ItemIsContainer(_Item, 1) | |
AND | |
GetInventoryOwner(_Item, (CHARACTERGUID)_Owner) | |
THEN | |
LLTEST_LORE_Identify(_Owner, _Item, 1); | |
QRY | |
LLTEST_LORE_PartyHasHighEnoughLoremaster((CHARACTERGUID)_PartyMember, (INTEGER)_MinLoremaster) | |
AND | |
CharacterGetAbility(_PartyMember, "Loremaster", _Value) | |
AND | |
_Value >= _MinLoremaster | |
THEN | |
DB_LLTEST_LORE_LoremasterSuccess(_PartyMember); | |
QRY | |
LLTEST_LORE_PartyHasHighEnoughLoremaster((CHARACTERGUID)_PartyMember, (INTEGER)_MinLoremaster) | |
AND | |
NOT DB_LLTEST_LORE_LoremasterSuccess(_PartyMember) | |
AND | |
DB_IsPlayer(_Player) | |
AND | |
CharacterIsInPartyWith(_PartyMember, _Player, 1) | |
AND | |
CharacterGetAbility(_Player, "Loremaster", _Value) | |
AND | |
_Value >= _MinLoremaster | |
THEN | |
DB_LLTEST_LORE_LoremasterSuccess(_PartyMember); | |
QRY | |
LLTEST_LORE_PartyHasHighEnoughLoremaster((CHARACTERGUID)_PartyMember, (INTEGER)_MinLoremaster) | |
AND | |
DB_LLTEST_LORE_LoremasterSuccess(_PartyMember) | |
THEN | |
NOT DB_LLTEST_LORE_LoremasterSuccess(_PartyMember); | |
//END_REGION | |
//REGION DEBUG_COMMANDS | |
IF | |
TextEventSet("lltest_setlore") | |
AND | |
CharacterGetHostCharacter(_Host) | |
THEN | |
CharacterAddAbility(_Host, "Loremaster", 5); | |
IF | |
TextEventSet("lltest_spawnitems") | |
AND | |
NOT GetTextEventParamUUID(1, _) | |
AND | |
CharacterGetHostCharacter(_Host) | |
AND | |
GetPosition(_Host, _x, _y, _z) | |
AND | |
CreateItemTemplateAtPosition("CONT_Humans_Backpack_Merchant_A_360e3e11-c7f8-4281-848a-596e37df884b", _x, _y, _z, _Backpack) | |
THEN | |
GenerateTreasure(_Backpack, "EquipAllRarities", 16, _Host); | |
TeleportTo(_Backpack, _Host); | |
IF | |
TextEventSet("lltest_spawnitems") | |
AND | |
GetTextEventParamUUID(1, _Target) | |
AND | |
ObjectIsCharacter((CHARACTERGUID)_Target, 1) | |
THEN | |
CharacterGiveReward(_Target, "EquipAllRarities", 0); | |
//END_REGION |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment