diff --git a/CMakeLists.txt b/CMakeLists.txt index d6107146..5aba6e5f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,6 +127,8 @@ set(SOURCE_FILES src/Actions/ActVisibility.h src/Game/CelLevelObject.cpp src/Game/CelLevelObject.h + src/Game/Formula.cpp + src/Game/Formula.h src/Game/fsa.h src/Game/GameProperties.cpp src/Game/GameProperties.h @@ -154,6 +156,7 @@ set(SOURCE_FILES src/Game/MapCoord.h src/Game/Namer.cpp src/Game/Namer.h + src/Game/Number.h src/Game/PairXY.h src/Game/PathFinder.cpp src/Game/PathFinder.h diff --git a/DGEngine.vcxproj b/DGEngine.vcxproj index d61509dc..03e3ff3f 100755 --- a/DGEngine.vcxproj +++ b/DGEngine.vcxproj @@ -45,6 +45,7 @@ + @@ -170,6 +171,7 @@ + @@ -187,6 +189,7 @@ + diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 3893764f..cef1a07d 100755 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -127,6 +127,8 @@ LOCAL_SRC_FILES += Actions/ActVariable.h LOCAL_SRC_FILES += Actions/ActVisibility.h LOCAL_SRC_FILES += Game/CelLevelObject.cpp LOCAL_SRC_FILES += Game/CelLevelObject.h +LOCAL_SRC_FILES += Game/Formula.cpp +LOCAL_SRC_FILES += Game/Formula.h LOCAL_SRC_FILES += Game/fsa.h LOCAL_SRC_FILES += Game/GameProperties.cpp LOCAL_SRC_FILES += Game/GameProperties.h @@ -154,6 +156,7 @@ LOCAL_SRC_FILES += Game/LevelObject.h LOCAL_SRC_FILES += Game/MapCoord.h LOCAL_SRC_FILES += Game/Namer.cpp LOCAL_SRC_FILES += Game/Namer.h +LOCAL_SRC_FILES += Game/Number.h LOCAL_SRC_FILES += Game/PairXY.h LOCAL_SRC_FILES += Game/PathFinder.cpp LOCAL_SRC_FILES += Game/PathFinder.h diff --git a/gamefiles/level/clearPlayers.json b/gamefiles/level/clearPlayers.json index 1a815a4f..c8e920c2 100755 --- a/gamefiles/level/clearPlayers.json +++ b/gamefiles/level/clearPlayers.json @@ -4,12 +4,12 @@ "param1": "|currentLevel|currentPlayer.id|", "param2": "hero", "then": [ - { "name": "level.clearPlayerClasses", "index": 1 }, - { "name": "level.clearPlayers", "index": 1 } + { "name": "level.clearPlayers", "index": 1 }, + { "name": "level.clearPlayerClasses", "index": 1 } ], "else": [ - { "name": "level.clearPlayerClasses" }, - { "name": "level.clearPlayers" } + { "name": "level.clearPlayers" }, + { "name": "level.clearPlayerClasses" } ] } } \ No newline at end of file diff --git a/gamefiles/level/item/amulets.json b/gamefiles/level/item/amulets.json index ed3c0400..e6b86a9f 100755 --- a/gamefiles/level/item/amulets.json +++ b/gamefiles/level/item/amulets.json @@ -12,7 +12,7 @@ "type": "Amulet", "defaults": { "price": 1200, - "magic": true, + "magical": true, "durability": "max", "durabilityMax": "max" }, @@ -20,6 +20,7 @@ "description2": "magic1", "description3": "magic2", "description4": "noAttributes", + "price1": "price*0.25", "inventorySize": [1, 1], "action": "pickItemInLevel", "actionDropLevel": { "name": "sound.play", "id": "flipring" }, diff --git a/gamefiles/level/item/armors.json b/gamefiles/level/item/armors.json index 9bf4056d..088fa84d 100755 --- a/gamefiles/level/item/armors.json +++ b/gamefiles/level/item/armors.json @@ -299,7 +299,7 @@ "durability": 40, "durabilityMax": 40, "requiredStrength": 0, - "toVitality": 10, + "vitality": 10, "damageFromEnemies": -3, "identified": false, "unique": true diff --git a/gamefiles/level/item/baseItems.json b/gamefiles/level/item/baseItems.json index 3fb6621c..5631783b 100755 --- a/gamefiles/level/item/baseItems.json +++ b/gamefiles/level/item/baseItems.json @@ -11,12 +11,13 @@ "type": "Armor", "defaults": { "identified": true, - "magic": false + "magical": false }, "description1": "armor", "description2": "magic1", "description3": "magic2", "description4": "required", + "price1": "price*0.25", "inventorySize": [2, 3], "action": "pickItemInLevel", "actionDropLevel": { "name": "sound.play", "id": "fliplarm" }, @@ -36,12 +37,13 @@ "type": "Weapon", "defaults": { "identified": true, - "magic": false + "magical": false }, "description1": "weapon", "description2": "magic1", "description3": "magic2", "description4": "required", + "price1": "price*0.25", "inventorySize": [2, 3], "action": "pickItemInLevel", "actionDropLevel": { "name": "sound.play", "id": "fliplarm" }, diff --git a/gamefiles/level/item/descriptions.json b/gamefiles/level/item/descriptions.json index 88347e21..6773d8af 100755 --- a/gamefiles/level/item/descriptions.json +++ b/gamefiles/level/item/descriptions.json @@ -22,20 +22,20 @@ "value": { "min": false, "max": false, "text": "Not Identified" } }, { - "property": "toStrength", - "value": { "text": "+%toStrength% to Strength" } + "property": "strength", + "value": { "text": "+%strength% to Strength" } }, { - "property": "toMagic", - "value": { "text": "+%toMagic% to Magic" } + "property": "magic", + "value": { "text": "+%magic% to Magic" } }, { - "property": "toDexterity", - "value": { "text": "+%toDexterity% to Dexterity" } + "property": "dexterity", + "value": { "text": "+%dexterity% to Dexterity" } }, { - "property": "toVitality", - "value": { "text": "+%toVitality% to Vitality" } + "property": "vitality", + "value": { "text": "+%vitality% to Vitality" } } ] }, @@ -43,7 +43,7 @@ "id": "magic2", "names": [ { - "property": "magic", + "property": "magical", "value": { "min": false, "max": false, "text": "" } }, { @@ -64,7 +64,7 @@ "id": "potion", "names": [ { - "property": "toLife", + "property": "life", "value": [ { "min": "min", "max": -1000, "text": "Kill Player" }, { "min": -1000, "max": -1, "text": "Steal Life" }, @@ -73,7 +73,7 @@ ] }, { - "property": "toMana", + "property": "mana", "value": [ { "min": "min", "max": -1000, "text": "Remove All Mana" }, { "min": -1000, "max": -1, "text": "Steal Mana" }, @@ -82,7 +82,7 @@ ] }, { - "property": "toLifeAndMana", + "property": "lifeAndMana", "value": [ { "min": "min", "max": -1000, "text": "Remove All Life And Mana" }, { "min": -1000, "max": -1, "text": "Steal Life And Mana" }, diff --git a/gamefiles/level/item/potions.json b/gamefiles/level/item/potions.json index e36e622e..06a230fd 100755 --- a/gamefiles/level/item/potions.json +++ b/gamefiles/level/item/potions.json @@ -18,6 +18,7 @@ }, "description1": "potion", "description2": "rightClickToUse", + "price1": "price*0.25", "inventorySize": [1, 1], "action": "pickItemInLevel", "actionDropLevel": { "name": "sound.play", "id": "flippot" }, diff --git a/gamefiles/level/item/prefixes.json b/gamefiles/level/item/prefixes.json index f469469e..f737c10c 100755 --- a/gamefiles/level/item/prefixes.json +++ b/gamefiles/level/item/prefixes.json @@ -38,7 +38,7 @@ ] }, { - "property": "toArmor", + "property": "armor", "value": [ { "min": "min", "max": -51, "text": "Vulnerable" }, { "min": -50, "max": -25, "text": "Rusted" }, @@ -154,7 +154,7 @@ ] }, { - "property": "toMana", + "property": "mana", "value": [ { "min": "min", "max": -11, "text": "Hyena's" }, { "min": -10, "max": -1, "text": "Frog's" }, @@ -246,7 +246,7 @@ ] }, { - "property": "toMana", + "property": "mana", "value": [ { "min": "min", "max": -11, "text": "Hyena's" }, { "min": -10, "max": -1, "text": "Frog's" }, diff --git a/gamefiles/level/item/scrolls.json b/gamefiles/level/item/scrolls.json index 69df1325..b8ceca29 100755 --- a/gamefiles/level/item/scrolls.json +++ b/gamefiles/level/item/scrolls.json @@ -15,6 +15,7 @@ }, "description1": "rightClickToRead2", "description2": "required", + "price1": "price*0.25", "inventorySize": [1, 1], "action": "pickItemInLevel", "actionDropLevel": { "name": "sound.play", "id": "flipscrl" }, diff --git a/gamefiles/level/item/suffixes.json b/gamefiles/level/item/suffixes.json index 271b1b6f..9aacfb2e 100755 --- a/gamefiles/level/item/suffixes.json +++ b/gamefiles/level/item/suffixes.json @@ -54,7 +54,7 @@ ] }, { - "property": "toStrength", + "property": "strength", "value": [ { "min": "min", "max": -6, "text": "Of Frailty" }, { "min": -5, "max": -1, "text": "Of Weakness" }, @@ -66,7 +66,7 @@ ] }, { - "property": "toMagic", + "property": "magic", "value": [ { "min": "min", "max": -6, "text": "Of The Fool" }, { "min": -5, "max": -1, "text": "Of Dyslexia" }, @@ -78,7 +78,7 @@ ] }, { - "property": "toDexterity", + "property": "dexterity", "value": [ { "min": "min", "max": -6, "text": "Of Paralysis" }, { "min": -5, "max": -1, "text": "Of Atrophy" }, @@ -90,7 +90,7 @@ ] }, { - "property": "toVitality", + "property": "vitality", "value": [ { "min": "min", "max": -6, "text": "Of Illness" }, { "min": -5, "max": -1, "text": "Of Disease" }, @@ -159,7 +159,7 @@ ] }, { - "property": "toStrength", + "property": "strength", "value": [ { "min": "min", "max": -6, "text": "Of Frailty" }, { "min": -5, "max": -1, "text": "Of Weakness" }, @@ -171,7 +171,7 @@ ] }, { - "property": "toMagic", + "property": "magic", "value": [ { "min": "min", "max": -6, "text": "Of The Fool" }, { "min": -5, "max": -1, "text": "Of Dyslexia" }, @@ -183,7 +183,7 @@ ] }, { - "property": "toDexterity", + "property": "dexterity", "value": [ { "min": "min", "max": -6, "text": "Of Paralysis" }, { "min": -5, "max": -1, "text": "Of Atrophy" }, @@ -195,7 +195,7 @@ ] }, { - "property": "toVitality", + "property": "vitality", "value": [ { "min": "min", "max": -6, "text": "Of Illness" }, { "min": -5, "max": -1, "text": "Of Disease" }, diff --git a/gamefiles/level/load.json b/gamefiles/level/load.json index e1046052..9865bf91 100755 --- a/gamefiles/level/load.json +++ b/gamefiles/level/load.json @@ -25,6 +25,12 @@ "param2": "positionPlayer", "then": { "name": "load", "file": ["level/positionPlayer.json", "{4}"] } }, + { "name": "if.notEqual", + "param1": "{2}", + "param2": "town", + "then": { "name": "player.setRestStatus", "status": 1 }, + "else": { "name": "player.setRestStatus", "status": 0 } + }, { "name": "load", "file": "ui/level/char/updateVisiblePanels.json" }, { "name": "load", "file": "level/playOrStopMusic.json" }, { "name": "load", "file": ["level/setMapAction.json", "{2}"] } diff --git a/gamefiles/level/player/RogueDefaults.json b/gamefiles/level/player/RogueDefaults.json index 85f342bb..865abab5 100755 --- a/gamefiles/level/player/RogueDefaults.json +++ b/gamefiles/level/player/RogueDefaults.json @@ -7,13 +7,10 @@ "direction": "Front", "mapPosition": [64, 73], "enableHover": false, - "level": 1, - "experience": 0, - "expNextLevel": 2000, - "points": 0, "inventory": [ { "index": "Body", + "bodyInventory": true, "allowedClassTypes": ["Amulet", "Armor", "Axe", "Bow", "Club", "Helmet", "Ring", "Shield", "Staff", "Sword"], "item": [ { diff --git a/gamefiles/level/player/SorcerorDefaults.json b/gamefiles/level/player/SorcerorDefaults.json index cdc752c3..4c3c7ffa 100755 --- a/gamefiles/level/player/SorcerorDefaults.json +++ b/gamefiles/level/player/SorcerorDefaults.json @@ -7,13 +7,10 @@ "direction": "Front", "mapPosition": [64, 73], "enableHover": false, - "level": 1, - "experience": 0, - "expNextLevel": 2000, - "points": 0, "inventory": [ { "index": "Body", + "bodyInventory": true, "allowedClassTypes": ["Amulet", "Armor", "Axe", "Bow", "Club", "Helmet", "Ring", "Shield", "Staff", "Sword"], "item": [ { diff --git a/gamefiles/level/player/WarriorDefaults.json b/gamefiles/level/player/WarriorDefaults.json index 7ae9c08c..d1de1a78 100755 --- a/gamefiles/level/player/WarriorDefaults.json +++ b/gamefiles/level/player/WarriorDefaults.json @@ -7,13 +7,10 @@ "direction": "Front", "mapPosition": [64, 73], "enableHover": false, - "level": 1, - "experience": 0, - "expNextLevel": 2000, - "points": 0, "inventory": [ { "index": "Body", + "bodyInventory": true, "allowedClassTypes": ["Amulet", "Armor", "Axe", "Bow", "Club", "Helmet", "Ring", "Shield", "Staff", "Sword"], "item": [ { diff --git a/gamefiles/level/player/rogueCel.json b/gamefiles/level/player/rogueCel.json index e5366804..c92fa006 100755 --- a/gamefiles/level/player/rogueCel.json +++ b/gamefiles/level/player/rogueCel.json @@ -8,93 +8,50 @@ }, "celTexturePack": [ { - "id": "rls", + "id": "rln", "celFile": [ - "rlsas", - "rlsat", - "rlsaw", - "rlsfm", - "rlsht", - "rlslm", - "rlsqm", - "rlsst", - "rlswl" + "rlnas", + "rlnat", + "rlnaw", + "rlnfm", + "rlnht", + "rlnlm", + "rlnqm", + "rlnst", + "rlnwl" ], "palette": "town" }, { - "id": "rlsInfra", + "id": "rlnInfra", "celFile": [ - "rlsas", - "rlsat", - "rlsaw", - "rlsfm", - "rlsht", - "rlslm", - "rlsqm", - "rlsst", - "rlswl" + "rlnas", + "rlnat", + "rlnaw", + "rlnfm", + "rlnht", + "rlnlm", + "rlnqm", + "rlnst", + "rlnwl" ], "palette": "infra" }, { - "id": "rlsStone", + "id": "rlnStone", "celFile": [ - "rlsas", - "rlsat", - "rlsaw", - "rlsfm", - "rlsht", - "rlslm", - "rlsqm", - "rlsst", - "rlswl" + "rlnas", + "rlnat", + "rlnaw", + "rlnfm", + "rlnht", + "rlnlm", + "rlnqm", + "rlnst", + "rlnwl" ], "palette": "stone" } ], - "playerClass": { - "id": "Rogue", - "name": "Rogue", - "type": "Human", - "description": "Rogue", - "defaults": { - "strengthBase": 20, - "magicBase": 15, - "dexterityBase": 30, - "vitalityBase": 20, - "lifeBase": 45, - "manaBase": 22, - "armor": 6, - "toHit": 65, - "damageMin": 1, - "damageMax": 4, - "resistMagic": 0, - "resistFire": 0, - "resistLightning": 0 - }, - "celTextures": [ - { "palette": 0, "name": "rls" }, - { "palette": 1, "name": "rlsInfra" }, - { "palette": 2, "name": "rlsStone" } - ], - "celIndexes": [ - { "name": "Stand1", "index": 7 }, - { "name": "Stand2", "index": 0 }, - { "name": "Walk1", "index": 8 }, - { "name": "Walk2", "index": 2 }, - { "name": "Attack1", "index": 1 }, - { "name": "Attack2", "index": 3 }, - { "name": "Attack3", "index": 5 }, - { "name": "Attack4", "index": 6 }, - { "name": "Defend1", "index": 4 }, - { "name": "Defend2", "index": 4 }, - { "name": "Defend3", "index": 4 }, - { "name": "Defend4", "index": 4 }, - { "name": "Hit1", "index": 4 }, - { "name": "Hit2", "index": 4 }, - { "name": "Die1", "index": 4 }, - { "name": "Die2", "index": 4 } - ] - } + "load": "level/player/rogueClass.json" } \ No newline at end of file diff --git a/gamefiles/level/player/rogueCelFiles.json b/gamefiles/level/player/rogueCelFiles.json index 0a98f918..53668bd1 100755 --- a/gamefiles/level/player/rogueCelFiles.json +++ b/gamefiles/level/player/rogueCelFiles.json @@ -1,13 +1,13 @@ { "celFile": [ - { "id": "rlsas", "file": "plrgfx/rogue/rls/rlsas.cl2" }, - { "id": "rlsat", "file": "plrgfx/rogue/rls/rlsat.cl2" }, - { "id": "rlsaw", "file": "plrgfx/rogue/rls/rlsaw.cl2" }, - { "id": "rlsfm", "file": "plrgfx/rogue/rls/rlsfm.cl2" }, - { "id": "rlsht", "file": "plrgfx/rogue/rls/rlsht.cl2" }, - { "id": "rlslm", "file": "plrgfx/rogue/rls/rlslm.cl2" }, - { "id": "rlsqm", "file": "plrgfx/rogue/rls/rlsqm.cl2" }, - { "id": "rlsst", "file": "plrgfx/rogue/rls/rlsst.cl2" }, - { "id": "rlswl", "file": "plrgfx/rogue/rls/rlswl.cl2" } + { "id": "rlnas", "file": "plrgfx/rogue/rln/rlnas.cl2" }, + { "id": "rlnat", "file": "plrgfx/rogue/rln/rlnat.cl2" }, + { "id": "rlnaw", "file": "plrgfx/rogue/rln/rlnaw.cl2" }, + { "id": "rlnfm", "file": "plrgfx/rogue/rln/rlnfm.cl2" }, + { "id": "rlnht", "file": "plrgfx/rogue/rln/rlnht.cl2" }, + { "id": "rlnlm", "file": "plrgfx/rogue/rln/rlnlm.cl2" }, + { "id": "rlnqm", "file": "plrgfx/rogue/rln/rlnqm.cl2" }, + { "id": "rlnst", "file": "plrgfx/rogue/rln/rlnst.cl2" }, + { "id": "rlnwl", "file": "plrgfx/rogue/rln/rlnwl.cl2" } ] } \ No newline at end of file diff --git a/gamefiles/level/player/rogueCelFilesBeta.json b/gamefiles/level/player/rogueCelFilesBeta.json index 909b70df..bf44483c 100755 --- a/gamefiles/level/player/rogueCelFilesBeta.json +++ b/gamefiles/level/player/rogueCelFilesBeta.json @@ -1,13 +1,13 @@ { "celFile": [ - { "id": "rlsas", "file": "plrgfx/rogue/rls/rlsas.cel" }, - { "id": "rlsat", "file": "plrgfx/rogue/rls/rlsat.cel" }, - { "id": "rlsaw", "file": "plrgfx/rogue/rls/rlsaw.cel" }, - { "id": "rlsfm", "file": "plrgfx/rogue/rls/rlsfm.cel" }, - { "id": "rlsht", "file": "plrgfx/rogue/rls/rlsht.cel" }, - { "id": "rlslm", "file": "plrgfx/rogue/rls/rlslm.cel" }, - { "id": "rlsqm", "file": "plrgfx/rogue/rls/rlsqm.cel" }, - { "id": "rlsst", "file": "plrgfx/rogue/rls/rlsst.cel" }, - { "id": "rlswl", "file": "plrgfx/rogue/rls/rlswl.cel" } + { "id": "rlnas", "file": "plrgfx/rogue/rln/rlnas.cel" }, + { "id": "rlnat", "file": "plrgfx/rogue/rln/rlnat.cel" }, + { "id": "rlnaw", "file": "plrgfx/rogue/rln/rlnaw.cel" }, + { "id": "rlnfm", "file": "plrgfx/rogue/rln/rlnfm.cel" }, + { "id": "rlnht", "file": "plrgfx/rogue/rln/rlnht.cel" }, + { "id": "rlnlm", "file": "plrgfx/rogue/rln/rlnlm.cel" }, + { "id": "rlnqm", "file": "plrgfx/rogue/rln/rlnqm.cel" }, + { "id": "rlnst", "file": "plrgfx/rogue/rln/rlnst.cel" }, + { "id": "rlnwl", "file": "plrgfx/rogue/rln/rlnwl.cel" } ] } \ No newline at end of file diff --git a/gamefiles/level/player/rogueClass.json b/gamefiles/level/player/rogueClass.json new file mode 100755 index 00000000..e97b808c --- /dev/null +++ b/gamefiles/level/player/rogueClass.json @@ -0,0 +1,59 @@ +{ + "playerClass": { + "id": "Rogue", + "name": "Rogue", + "type": "Human", + "description": "Rogue", + "defaults": { + "level": 1, + "experience": 0, + "expNextLevel": 2000, + "points": 0, + "strength": 20, + "magic": 15, + "dexterity": 30, + "vitality": 20, + "damageMin": 1, + "damageMax": 4 + }, + "maxStrength": 55, + "maxMagic": 70, + "maxDexterity": 250, + "maxVitality": 80, + "maxResistMagic": 75, + "maxResistFire": 75, + "maxResistLightning": 75, + "lifeFormula": "vitality + (1.5 * vitalityItems) + (2 * level) + lifeItems + 23", + "manaFormula": "magic + (1.5 * magicItems) + (2 * level) + manaItems + 5", + "armorFormula": "dexterity / 5 + armorItems", + "toHitFormula": "50 + dexterity / 2 + toHitItems", + "damageFormula": "strengthNow + dexterityNow * level / 200", + "celTextures": [ + { "palette": 0, "name": "rln" }, + { "palette": 1, "name": "rlnInfra" }, + { "palette": 2, "name": "rlnStone" } + ], + "celIndexes": [ + { "name": "Stand1", "index": 7 }, + { "name": "Stand2", "index": 0 }, + { "name": "Walk1", "index": 8 }, + { "name": "Walk2", "index": 2 }, + { "name": "Attack1", "index": 1 }, + { "name": "Attack2", "index": 3 }, + { "name": "Attack3", "index": 5 }, + { "name": "Attack4", "index": 6 }, + { "name": "Defend1", "index": 4 }, + { "name": "Defend2", "index": 4 }, + { "name": "Defend3", "index": 4 }, + { "name": "Defend4", "index": 4 }, + { "name": "Hit1", "index": 4 }, + { "name": "Hit2", "index": 4 }, + { "name": "Die1", "index": 4 }, + { "name": "Die2", "index": 4 } + ], + "animationSpeeds": [ + { "name": "Walk1", "animation": 20, "walk": 25 }, + { "name": "Walk2", "animation": 20, "walk": 25 } + ] + } +} \ No newline at end of file diff --git a/gamefiles/level/player/sorcerorCel.json b/gamefiles/level/player/sorcerorCel.json index 48dd6b13..5fcd8424 100755 --- a/gamefiles/level/player/sorcerorCel.json +++ b/gamefiles/level/player/sorcerorCel.json @@ -8,93 +8,50 @@ }, "celTexturePack": [ { - "id": "sls", + "id": "sln", "celFile": [ - "slsas", - "slsat", - "slsaw", - "slsfm", - "slsht", - "slslm", - "slsqm", - "slsst", - "slswl" + "slnas", + "slnat", + "slnaw", + "slnfm", + "slnht", + "slnlm", + "slnqm", + "slnst", + "slnwl" ], "palette": "town" }, { - "id": "slsInfra", + "id": "slnInfra", "celFile": [ - "slsas", - "slsat", - "slsaw", - "slsfm", - "slsht", - "slslm", - "slsqm", - "slsst", - "slswl" + "slnas", + "slnat", + "slnaw", + "slnfm", + "slnht", + "slnlm", + "slnqm", + "slnst", + "slnwl" ], "palette": "infra" }, { - "id": "slsStone", + "id": "slnStone", "celFile": [ - "slsas", - "slsat", - "slsaw", - "slsfm", - "slsht", - "slslm", - "slsqm", - "slsst", - "slswl" + "slnas", + "slnat", + "slnaw", + "slnfm", + "slnht", + "slnlm", + "slnqm", + "slnst", + "slnwl" ], "palette": "stone" } ], - "playerClass": { - "id": "Sorceror", - "name": "Sorceror", - "type": "Human", - "description": "Sorceror", - "defaults": { - "strengthBase": 15, - "magicBase": 35, - "dexterityBase": 15, - "vitalityBase": 20, - "lifeBase": 30, - "manaBase": 70, - "armor": 3, - "toHit": 57, - "damageMin": 2, - "damageMax": 4, - "resistMagic": 0, - "resistFire": 0, - "resistLightning": 0 - }, - "celTextures": [ - { "palette": 0, "name": "sls" }, - { "palette": 1, "name": "slsInfra" }, - { "palette": 2, "name": "slsStone" } - ], - "celIndexes": [ - { "name": "Stand1", "index": 7 }, - { "name": "Stand2", "index": 0 }, - { "name": "Walk1", "index": 8 }, - { "name": "Walk2", "index": 2 }, - { "name": "Attack1", "index": 1 }, - { "name": "Attack2", "index": 3 }, - { "name": "Attack3", "index": 5 }, - { "name": "Attack4", "index": 6 }, - { "name": "Defend1", "index": 4 }, - { "name": "Defend2", "index": 4 }, - { "name": "Defend3", "index": 4 }, - { "name": "Defend4", "index": 4 }, - { "name": "Hit1", "index": 4 }, - { "name": "Hit2", "index": 4 }, - { "name": "Die1", "index": 4 }, - { "name": "Die2", "index": 4 } - ] - } + "load": "level/player/sorcerorClass.json" } \ No newline at end of file diff --git a/gamefiles/level/player/sorcerorCelFiles.json b/gamefiles/level/player/sorcerorCelFiles.json index e1e104f6..85d38705 100755 --- a/gamefiles/level/player/sorcerorCelFiles.json +++ b/gamefiles/level/player/sorcerorCelFiles.json @@ -1,13 +1,13 @@ { "celFile": [ - { "id": "slsas", "file": "plrgfx/sorceror/sls/slsas.cl2" }, - { "id": "slsat", "file": "plrgfx/sorceror/sls/slsat.cl2" }, - { "id": "slsaw", "file": "plrgfx/sorceror/sls/slsaw.cl2" }, - { "id": "slsfm", "file": "plrgfx/sorceror/sls/slsfm.cl2" }, - { "id": "slsht", "file": "plrgfx/sorceror/sls/slsht.cl2" }, - { "id": "slslm", "file": "plrgfx/sorceror/sls/slslm.cl2" }, - { "id": "slsqm", "file": "plrgfx/sorceror/sls/slsqm.cl2" }, - { "id": "slsst", "file": "plrgfx/sorceror/sls/slsst.cl2" }, - { "id": "slswl", "file": "plrgfx/sorceror/sls/slswl.cl2" } + { "id": "slnas", "file": "plrgfx/sorceror/sln/slnas.cl2" }, + { "id": "slnat", "file": "plrgfx/sorceror/sln/slnat.cl2" }, + { "id": "slnaw", "file": "plrgfx/sorceror/sln/slnaw.cl2" }, + { "id": "slnfm", "file": "plrgfx/sorceror/sln/slnfm.cl2" }, + { "id": "slnht", "file": "plrgfx/sorceror/sln/slnht.cl2" }, + { "id": "slnlm", "file": "plrgfx/sorceror/sln/slnlm.cl2" }, + { "id": "slnqm", "file": "plrgfx/sorceror/sln/slnqm.cl2" }, + { "id": "slnst", "file": "plrgfx/sorceror/sln/slnst.cl2" }, + { "id": "slnwl", "file": "plrgfx/sorceror/sln/slnwl.cl2" } ] } \ No newline at end of file diff --git a/gamefiles/level/player/sorcerorCelFilesBeta.json b/gamefiles/level/player/sorcerorCelFilesBeta.json index 6d2393d3..c2ee722c 100755 --- a/gamefiles/level/player/sorcerorCelFilesBeta.json +++ b/gamefiles/level/player/sorcerorCelFilesBeta.json @@ -1,13 +1,13 @@ { "celFile": [ - { "id": "slsas", "file": "plrgfx/sorceror/sls/slsas.cel" }, - { "id": "slsat", "file": "plrgfx/sorceror/sls/slsat.cel" }, - { "id": "slsaw", "file": "plrgfx/sorceror/sls/slsaw.cel" }, - { "id": "slsfm", "file": "plrgfx/sorceror/sls/slsfm.cel" }, - { "id": "slsht", "file": "plrgfx/sorceror/sls/slsht.cel" }, - { "id": "slslm", "file": "plrgfx/sorceror/sls/slslm.cel" }, - { "id": "slsqm", "file": "plrgfx/sorceror/sls/slsqm.cel" }, - { "id": "slsst", "file": "plrgfx/sorceror/sls/slsst.cel" }, - { "id": "slswl", "file": "plrgfx/sorceror/sls/slswl.cel" } + { "id": "slnas", "file": "plrgfx/sorceror/sln/slnas.cel" }, + { "id": "slnat", "file": "plrgfx/sorceror/sln/slnat.cel" }, + { "id": "slnaw", "file": "plrgfx/sorceror/sln/slnaw.cel" }, + { "id": "slnfm", "file": "plrgfx/sorceror/sln/slnfm.cel" }, + { "id": "slnht", "file": "plrgfx/sorceror/sln/slnht.cel" }, + { "id": "slnlm", "file": "plrgfx/sorceror/sln/slnlm.cel" }, + { "id": "slnqm", "file": "plrgfx/sorceror/sln/slnqm.cel" }, + { "id": "slnst", "file": "plrgfx/sorceror/sln/slnst.cel" }, + { "id": "slnwl", "file": "plrgfx/sorceror/sln/slnwl.cel" } ] } \ No newline at end of file diff --git a/gamefiles/level/player/sorcerorClass.json b/gamefiles/level/player/sorcerorClass.json new file mode 100755 index 00000000..9988952a --- /dev/null +++ b/gamefiles/level/player/sorcerorClass.json @@ -0,0 +1,59 @@ +{ + "playerClass": { + "id": "Sorceror", + "name": "Sorceror", + "type": "Human", + "description": "Sorceror", + "defaults": { + "level": 1, + "experience": 0, + "expNextLevel": 2000, + "points": 0, + "strength": 15, + "magic": 35, + "dexterity": 15, + "vitality": 20, + "damageMin": 2, + "damageMax": 4 + }, + "maxStrength": 45, + "maxMagic": 250, + "maxDexterity": 85, + "maxVitality": 80, + "maxResistMagic": 75, + "maxResistFire": 75, + "maxResistLightning": 75, + "lifeFormula": "vitality + vitalityItems + level + lifeItems + 9", + "manaFormula": "(2 * magic) + (2 * magicItems) + (2 * level) + manaItems - 2", + "armorFormula": "dexterity / 5 + armorItems", + "toHitFormula": "50 + dexterity / 2 + toHitItems", + "damageFormula": "strengthNow * level / 100", + "celTextures": [ + { "palette": 0, "name": "sln" }, + { "palette": 1, "name": "slnInfra" }, + { "palette": 2, "name": "slnStone" } + ], + "celIndexes": [ + { "name": "Stand1", "index": 7 }, + { "name": "Stand2", "index": 0 }, + { "name": "Walk1", "index": 8 }, + { "name": "Walk2", "index": 2 }, + { "name": "Attack1", "index": 1 }, + { "name": "Attack2", "index": 3 }, + { "name": "Attack3", "index": 5 }, + { "name": "Attack4", "index": 6 }, + { "name": "Defend1", "index": 4 }, + { "name": "Defend2", "index": 4 }, + { "name": "Defend3", "index": 4 }, + { "name": "Defend4", "index": 4 }, + { "name": "Hit1", "index": 4 }, + { "name": "Hit2", "index": 4 }, + { "name": "Die1", "index": 4 }, + { "name": "Die2", "index": 4 } + ], + "animationSpeeds": [ + { "name": "Walk1", "animation": 20, "walk": 25 }, + { "name": "Walk2", "animation": 20, "walk": 25 } + ] + } +} \ No newline at end of file diff --git a/gamefiles/level/player/warriorCel.json b/gamefiles/level/player/warriorCel.json index 1fe56cf0..ad378170 100755 --- a/gamefiles/level/player/warriorCel.json +++ b/gamefiles/level/player/warriorCel.json @@ -8,93 +8,50 @@ }, "celTexturePack": [ { - "id": "wls", + "id": "wln", "celFile": [ - "wlsas", - "wlsat", - "wlsaw", - "wlsfm", - "wlsht", - "wlslm", - "wlsqm", - "wlsst", - "wlswl" + "wlnas", + "wlnat", + "wlnaw", + "wlnfm", + "wlnht", + "wlnlm", + "wlnqm", + "wlnst", + "wlnwl" ], "palette": "town" }, { - "id": "wlsInfra", + "id": "wlnInfra", "celFile": [ - "wlsas", - "wlsat", - "wlsaw", - "wlsfm", - "wlsht", - "wlslm", - "wlsqm", - "wlsst", - "wlswl" + "wlnas", + "wlnat", + "wlnaw", + "wlnfm", + "wlnht", + "wlnlm", + "wlnqm", + "wlnst", + "wlnwl" ], "palette": "infra" }, { - "id": "wlsStone", + "id": "wlnStone", "celFile": [ - "wlsas", - "wlsat", - "wlsaw", - "wlsfm", - "wlsht", - "wlslm", - "wlsqm", - "wlsst", - "wlswl" + "wlnas", + "wlnat", + "wlnaw", + "wlnfm", + "wlnht", + "wlnlm", + "wlnqm", + "wlnst", + "wlnwl" ], "palette": "stone" } ], - "playerClass": { - "id": "Warrior", - "name": "Warrior", - "type": "Human", - "description": "Warrior", - "defaults": { - "strengthBase": 30, - "magicBase": 10, - "dexterityBase": 20, - "vitalityBase": 25, - "lifeBase": 70, - "manaBase": 10, - "armor": 7, - "toHit": 60, - "damageMin": 2, - "damageMax": 6, - "resistMagic": 0, - "resistFire": 0, - "resistLightning": 0 - }, - "celTextures": [ - { "palette": 0, "name": "wls" }, - { "palette": 1, "name": "wlsInfra" }, - { "palette": 2, "name": "wlsStone" } - ], - "celIndexes": [ - { "name": "Stand1", "index": 7 }, - { "name": "Stand2", "index": 0 }, - { "name": "Walk1", "index": 8 }, - { "name": "Walk2", "index": 2 }, - { "name": "Attack1", "index": 1 }, - { "name": "Attack2", "index": 3 }, - { "name": "Attack3", "index": 5 }, - { "name": "Attack4", "index": 6 }, - { "name": "Defend1", "index": 4 }, - { "name": "Defend2", "index": 4 }, - { "name": "Defend3", "index": 4 }, - { "name": "Defend4", "index": 4 }, - { "name": "Hit1", "index": 4 }, - { "name": "Hit2", "index": 4 }, - { "name": "Die1", "index": 4 }, - { "name": "Die2", "index": 4 } - ] - } + "load": "level/player/warriorClass.json" } \ No newline at end of file diff --git a/gamefiles/level/player/warriorCelFiles.json b/gamefiles/level/player/warriorCelFiles.json index 09eba325..eac1baa3 100755 --- a/gamefiles/level/player/warriorCelFiles.json +++ b/gamefiles/level/player/warriorCelFiles.json @@ -1,13 +1,13 @@ { "celFile": [ - { "id": "wlsas", "file": "plrgfx/warrior/wls/wlsas.cl2" }, - { "id": "wlsat", "file": "plrgfx/warrior/wls/wlsat.cl2" }, - { "id": "wlsaw", "file": "plrgfx/warrior/wls/wlsaw.cl2" }, - { "id": "wlsfm", "file": "plrgfx/warrior/wls/wlsfm.cl2" }, - { "id": "wlsht", "file": "plrgfx/warrior/wls/wlsht.cl2" }, - { "id": "wlslm", "file": "plrgfx/warrior/wls/wlslm.cl2" }, - { "id": "wlsqm", "file": "plrgfx/warrior/wls/wlsqm.cl2" }, - { "id": "wlsst", "file": "plrgfx/warrior/wls/wlsst.cl2" }, - { "id": "wlswl", "file": "plrgfx/warrior/wls/wlswl.cl2" } + { "id": "wlnas", "file": "plrgfx/warrior/wln/wlnas.cl2" }, + { "id": "wlnat", "file": "plrgfx/warrior/wln/wlnat.cl2" }, + { "id": "wlnaw", "file": "plrgfx/warrior/wln/wlnaw.cl2" }, + { "id": "wlnfm", "file": "plrgfx/warrior/wln/wlnfm.cl2" }, + { "id": "wlnht", "file": "plrgfx/warrior/wln/wlnht.cl2" }, + { "id": "wlnlm", "file": "plrgfx/warrior/wln/wlnlm.cl2" }, + { "id": "wlnqm", "file": "plrgfx/warrior/wln/wlnqm.cl2" }, + { "id": "wlnst", "file": "plrgfx/warrior/wln/wlnst.cl2" }, + { "id": "wlnwl", "file": "plrgfx/warrior/wln/wlnwl.cl2" } ] } \ No newline at end of file diff --git a/gamefiles/level/player/warriorCelFilesBeta.json b/gamefiles/level/player/warriorCelFilesBeta.json index 74fcc786..4371930d 100755 --- a/gamefiles/level/player/warriorCelFilesBeta.json +++ b/gamefiles/level/player/warriorCelFilesBeta.json @@ -1,13 +1,13 @@ { "celFile": [ - { "id": "wlsas", "file": "plrgfx/warrior/wls/wlsas.cel" }, - { "id": "wlsat", "file": "plrgfx/warrior/wls/wlsat.cel" }, - { "id": "wlsaw", "file": "plrgfx/warrior/wls/wlsaw.cel" }, - { "id": "wlsfm", "file": "plrgfx/warrior/wls/wlsfm.cel" }, - { "id": "wlsht", "file": "plrgfx/warrior/wls/wlsht.cel" }, - { "id": "wlslm", "file": "plrgfx/warrior/wls/wlslm.cel" }, - { "id": "wlsqm", "file": "plrgfx/warrior/wls/wlsqm.cel" }, - { "id": "wlsst", "file": "plrgfx/warrior/wls/wlsst.cel" }, - { "id": "wlswl", "file": "plrgfx/warrior/wls/wlswl.cel" } + { "id": "wlnas", "file": "plrgfx/warrior/wln/wlnas.cel" }, + { "id": "wlnat", "file": "plrgfx/warrior/wln/wlnat.cel" }, + { "id": "wlnaw", "file": "plrgfx/warrior/wln/wlnaw.cel" }, + { "id": "wlnfm", "file": "plrgfx/warrior/wln/wlnfm.cel" }, + { "id": "wlnht", "file": "plrgfx/warrior/wln/wlnht.cel" }, + { "id": "wlnlm", "file": "plrgfx/warrior/wln/wlnlm.cel" }, + { "id": "wlnqm", "file": "plrgfx/warrior/wln/wlnqm.cel" }, + { "id": "wlnst", "file": "plrgfx/warrior/wln/wlnst.cel" }, + { "id": "wlnwl", "file": "plrgfx/warrior/wln/wlnwl.cel" } ] } \ No newline at end of file diff --git a/gamefiles/level/player/warriorClass.json b/gamefiles/level/player/warriorClass.json new file mode 100755 index 00000000..4d2aa89d --- /dev/null +++ b/gamefiles/level/player/warriorClass.json @@ -0,0 +1,59 @@ +{ + "playerClass": { + "id": "Warrior", + "name": "Warrior", + "type": "Human", + "description": "Warrior", + "defaults": { + "level": 1, + "experience": 0, + "expNextLevel": 2000, + "points": 0, + "strength": 30, + "magic": 10, + "dexterity": 20, + "vitality": 25, + "damageMin": 2, + "damageMax": 6 + }, + "maxStrength": 250, + "maxMagic": 50, + "maxDexterity": 60, + "maxVitality": 100, + "maxResistMagic": 75, + "maxResistFire": 75, + "maxResistLightning": 75, + "lifeFormula": "(2 * vitality) + (2 * vitalityItems) + (2 * level) + lifeItems + 18", + "manaFormula": "magic + magicItems + level + manaItems - 1", + "armorFormula": "dexterity / 5 + armorItems", + "toHitFormula": "50 + dexterity / 2 + toHitItems", + "damageFormula": "strengthNow * level / 100", + "celTextures": [ + { "palette": 0, "name": "wln" }, + { "palette": 1, "name": "wlnInfra" }, + { "palette": 2, "name": "wlnStone" } + ], + "celIndexes": [ + { "name": "Stand1", "index": 7 }, + { "name": "Stand2", "index": 0 }, + { "name": "Walk1", "index": 8 }, + { "name": "Walk2", "index": 2 }, + { "name": "Attack1", "index": 1 }, + { "name": "Attack2", "index": 3 }, + { "name": "Attack3", "index": 5 }, + { "name": "Attack4", "index": 6 }, + { "name": "Defend1", "index": 4 }, + { "name": "Defend2", "index": 4 }, + { "name": "Defend3", "index": 4 }, + { "name": "Defend4", "index": 4 }, + { "name": "Hit1", "index": 4 }, + { "name": "Hit2", "index": 4 }, + { "name": "Die1", "index": 4 }, + { "name": "Die2", "index": 4 } + ], + "animationSpeeds": [ + { "name": "Walk1", "animation": 20, "walk": 25 }, + { "name": "Walk2", "animation": 20, "walk": 25 } + ] + } +} \ No newline at end of file diff --git a/gamefiles/level/town/items.json b/gamefiles/level/town/items.json index 1c9d2859..fd6fa848 100755 --- a/gamefiles/level/town/items.json +++ b/gamefiles/level/town/items.json @@ -4,10 +4,10 @@ "class": "shortSword", "properties": { "requiredStrength": 5, - "toStrength": 5, + "strength": 5, "toDamage": 120, "identified": false, - "magic": true + "magical": true }, "mapPosition": [56, 73] }, @@ -19,7 +19,7 @@ "class": "ring", "mapPosition": [58, 73], "properties": { - "toStrength": 5 + "strength": 5 } }, { @@ -72,7 +72,7 @@ "properties": { "toDamage": 120, "identified": false, - "magic": true + "magical": true }, "mapPosition": [57, 74] }, diff --git a/gamefiles/level/town/players.json b/gamefiles/level/town/players.json index 068ec207..d85febc9 100755 --- a/gamefiles/level/town/players.json +++ b/gamefiles/level/town/players.json @@ -14,8 +14,8 @@ "param1": "%beta%", "param2": true, "then": [ - { "name": "player.setDirection", "id": "griswold", "direction": "FrontLeft" }, - { "name": "player.setDirection", "id": "ogden", "direction": "FrontLeft" } + { "name": "player.setDirection", "player": "griswold", "direction": "FrontLeft" }, + { "name": "player.setDirection", "player": "ogden", "direction": "FrontLeft" } ] } ] diff --git a/gamefiles/level/town/players2.json b/gamefiles/level/town/players2.json index a7e6cc1a..343b594c 100755 --- a/gamefiles/level/town/players2.json +++ b/gamefiles/level/town/players2.json @@ -180,7 +180,7 @@ "properties": { "toHit": 5, "price": 540, - "magic": true + "magical": true } }, { @@ -188,9 +188,9 @@ "class": "bucklerShield", "properties": { "armor": 4, - "toStrength": 4, + "strength": 4, "price": 860, - "magic": true + "magical": true } }, { @@ -200,16 +200,16 @@ "armor": 2, "toArmor": 21, "price": 648, - "magic": true + "magical": true } }, { "index": 3, "class": "dagger", "properties": { - "toDexterity": 4, + "dexterity": 4, "price": 920, - "magic": true + "magical": true } }, { @@ -218,7 +218,7 @@ "properties": { "hitPoints": 12, "price": 850, - "magic": true + "magical": true } }, { @@ -227,7 +227,7 @@ "properties": { "toHit": 5, "price": 1100, - "magic": true + "magical": true } } ] @@ -268,9 +268,9 @@ "index": 0, "class": "dagger", "properties": { - "toMagic": 1, + "magic": 1, "price": 480, - "magic": true + "magical": true } } } @@ -309,9 +309,9 @@ "index": 7, "class": "shortStaff", "properties": { - "toMagic": 5, + "magic": 5, "price": 650, - "magic": true + "magical": true } } ] diff --git a/gamefiles/res/level/actions.json b/gamefiles/res/level/actions.json index ce72b934..283b248e 100755 --- a/gamefiles/res/level/actions.json +++ b/gamefiles/res/level/actions.json @@ -1,5700 +1,8 @@ { - "action": [ - { - "name": "action.set", - "replaceVars": true, - "id": "setPanelTextColorBlue", - "action": { "name": "text.setColor", "id": "txtPanel", "color": "%textBlue%" } - }, - { - "name": "action.set", - "replaceVars": true, - "id": "setPanelTextColorGold", - "action": { "name": "text.setColor", "id": "txtPanel", "color": "%textGold%" } - }, - { - "name": "action.set", - "replaceVars": true, - "id": "setPanelTextColorRed", - "action": { "name": "text.setColor", "id": "txtPanel", "color": "%textRed%" } - }, - { - "name": "action.set", - "id": "setPanelTextColorWhite", - "action": { "name": "text.setColor", "id": "txtPanel" } - }, - { - "name": "action.set", - "id": "hideItemInfo", - "action": [ - { "name": "drawable.visible", "id": "itemInfoBk", "visible": false }, - { "name": "drawable.visible", "id": "itemInfoSp", "visible": false }, - { "name": "drawable.visible", "id": "itemInfoBr", "visible": false }, - { "name": "drawable.visible", "id": "itemInfoTitle", "visible": false }, - { "name": "drawable.visible", "id": "itemInfoDescr", "visible": false } - ] - }, - { - "name": "action.set", - "id": "showItemInfo", - "action": [ - { "name": "drawable.visible", "id": "itemInfoBk", "visible": true }, - { "name": "drawable.visible", "id": "itemInfoSp", "visible": true }, - { "name": "drawable.visible", "id": "itemInfoBr", "visible": true }, - { "name": "drawable.visible", "id": "itemInfoTitle", "visible": true }, - { "name": "drawable.visible", "id": "itemInfoDescr", "visible": true } - ] - }, - { - "name": "action.set", - "id": "clearPanelText", - "action": [ - { "name": "text.setText", "id": "txtPanel", "text": "" }, - "hideItemInfo" - ] - }, - { - "name": "action.set", - "id": "updatePanelTextSpacing", - "action": { - "name": "switch", - "param": "|txtPanel|lineCount|", - "case": [ - { - "value": 2, - "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 14 } - }, - { - "value": 3, - "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 8 } - }, - { - "value": 4, - "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 4 } - }, - { - "value": 5, - "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 2 } - } - ], - "default": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 2 } - } - }, - { - "name": "action.set", - "id": "updateBeltItem1", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.0|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt1", "inventory": "belt", "item": 0, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt1", "inventory": "belt", "item": 0 } - }, - { "name": "image.centerTexture", "id": "imgBelt1" }, - { "name": "button.setTexture", "id": "playerBelt1", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt1", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt1", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt1", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt1", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem2", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.1|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt2", "inventory": "belt", "item": 1, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt2", "inventory": "belt", "item": 1 } - }, - { "name": "image.centerTexture", "id": "imgBelt2" }, - { "name": "button.setTexture", "id": "playerBelt2", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt2", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt2", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt2", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt2", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem3", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.2|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt3", "inventory": "belt", "item": 2, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt3", "inventory": "belt", "item": 2 } - }, - { "name": "image.centerTexture", "id": "imgBelt3" }, - { "name": "button.setTexture", "id": "playerBelt3", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt3", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt3", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt3", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt3", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem4", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.3|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt4", "inventory": "belt", "item": 3, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt4", "inventory": "belt", "item": 3 } - }, - { "name": "image.centerTexture", "id": "imgBelt4" }, - { "name": "button.setTexture", "id": "playerBelt4", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt4", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt4", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt4", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt4", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem5", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.4|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.4|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt5", "inventory": "belt", "item": 4, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt5", "inventory": "belt", "item": 4 } - }, - { "name": "image.centerTexture", "id": "imgBelt5" }, - { "name": "button.setTexture", "id": "playerBelt5", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt5", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt5", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt5", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt5", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem6", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.5|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.5|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt6", "inventory": "belt", "item": 5, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt6", "inventory": "belt", "item": 5 } - }, - { "name": "image.centerTexture", "id": "imgBelt6" }, - { "name": "button.setTexture", "id": "playerBelt6", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt6", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt6", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt6", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt6", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem7", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.6|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.6|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt7", "inventory": "belt", "item": 6, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt7", "inventory": "belt", "item": 6 } - }, - { "name": "image.centerTexture", "id": "imgBelt7" }, - { "name": "button.setTexture", "id": "playerBelt7", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt7", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt7", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt7", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt7", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItem8", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.7|", - "param2": true, - "then": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.belt.7|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgBelt8", "inventory": "belt", "item": 7, "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgBelt8", "inventory": "belt", "item": 7 } - }, - { "name": "image.centerTexture", "id": "imgBelt8" }, - { "name": "button.setTexture", "id": "playerBelt8", "texture": "red" }, - { "name": "drawable.visible", "id": "txtBelt8", "visible": true } - ], - "else": [ - { "name": "image.setTexture", "id": "imgBelt8", "texture": "empty" }, - { "name": "button.setTexture", "id": "playerBelt8", "texture": "empty" }, - { "name": "drawable.visible", "id": "txtBelt8", "visible": false } - ] - } - }, - { - "name": "action.set", - "id": "updateBeltItems", - "action": [ - "updateBeltItem1", - "updateBeltItem2", - "updateBeltItem3", - "updateBeltItem4", - "updateBeltItem5", - "updateBeltItem6", - "updateBeltItem7", - "updateBeltItem8" - ] - }, - { - "name": "action.set", - "id": "updateInventoryBelt1Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt2Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt3Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt4Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt5Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.4|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.4.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.4", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.4", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.4.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.4.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.4.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.4.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.4", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.4", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt6Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.5|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.5.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.5", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.5", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.5.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.5.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.5.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.5.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.5", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.5", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt7Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.6|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.6.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.6", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.6", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.6.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.6.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.6.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.6.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.6", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.6", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryBelt8Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.belt.7|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.belt.7.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.7", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.belt.7", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.7.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.7.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.7.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.7.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.belt.7", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.belt.7", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryLeftHand", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.LeftHand|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgLeftHand", "inventory": "body", "item": "LeftHand", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgLeftHand", "inventory": "body", "item": "LeftHand" } - }, - { "name": "image.centerTexture", "id": "imgLeftHand" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.LeftHand|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerLeftHand", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerLeftHand", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryRightHand", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.RightHand|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgRightHand", "inventory": "body", "item": "RightHand", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgRightHand", "inventory": "body", "item": "RightHand" } - }, - { "name": "image.centerTexture", "id": "imgRightHand" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.RightHand|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerRightHand", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerRightHand", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryArmor", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.Armor|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgArmor", "inventory": "body", "item": "Armor", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgArmor", "inventory": "body", "item": "Armor" } - }, - { "name": "image.centerTexture", "id": "imgArmor" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.Armor|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerArmor", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerArmor", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryHelmet", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.Helmet|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgHelmet", "inventory": "body", "item": "Helmet", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgHelmet", "inventory": "body", "item": "Helmet" } - }, - { "name": "image.centerTexture", "id": "imgHelmet" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.Helmet|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerHelmet", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerHelmet", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryAmulet", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.Amulet|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgAmulet", "inventory": "body", "item": "Amulet", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgAmulet", "inventory": "body", "item": "Amulet" } - }, - { "name": "image.centerTexture", "id": "imgAmulet" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.Amulet|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerAmulet", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerAmulet", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryLeftRing", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.LeftRing|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgLeftRing", "inventory": "body", "item": "LeftRing", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgLeftRing", "inventory": "body", "item": "LeftRing" } - }, - { "name": "image.centerTexture", "id": "imgLeftRing" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.LeftRing|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerLeftRing", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerLeftRing", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryRightRing", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.body.RightRing|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgRightRing", "inventory": "body", "item": "RightRing", "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgRightRing", "inventory": "body", "item": "RightRing" } - }, - { "name": "image.centerTexture", "id": "imgRightRing" }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.RightRing|", - "param2": true, - "then": { "name": "button.setTexture", "id": "playerRightRing", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "playerRightRing", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateBodyItems", - "action": [ - "updateInventoryLeftHand", - "updateInventoryRightHand", - "updateInventoryArmor", - "updateInventoryHelmet", - "updateInventoryAmulet", - "updateInventoryLeftRing", - "updateInventoryRightRing" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash", - "action": [ - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv11", "inventory": "stash", "item": [0, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv11", "inventory": "stash", "item": [0, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv11", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv12", "inventory": "stash", "item": [0, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv12", "inventory": "stash", "item": [0, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv12", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv13", "inventory": "stash", "item": [0, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv13", "inventory": "stash", "item": [0, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv13", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv14", "inventory": "stash", "item": [0, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv14", "inventory": "stash", "item": [0, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv14", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv21", "inventory": "stash", "item": [1, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv21", "inventory": "stash", "item": [1, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv21", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv22", "inventory": "stash", "item": [1, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv22", "inventory": "stash", "item": [1, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv22", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv23", "inventory": "stash", "item": [1, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv23", "inventory": "stash", "item": [1, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv23", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv24", "inventory": "stash", "item": [1, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv24", "inventory": "stash", "item": [1, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv24", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv31", "inventory": "stash", "item": [2, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv31", "inventory": "stash", "item": [2, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv31", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv32", "inventory": "stash", "item": [2, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv32", "inventory": "stash", "item": [2, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv32", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv33", "inventory": "stash", "item": [2, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv33", "inventory": "stash", "item": [2, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv33", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv34", "inventory": "stash", "item": [2, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv34", "inventory": "stash", "item": [2, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv34", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv41", "inventory": "stash", "item": [3, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv41", "inventory": "stash", "item": [3, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv41", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv42", "inventory": "stash", "item": [3, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv42", "inventory": "stash", "item": [3, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv42", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv43", "inventory": "stash", "item": [3, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv43", "inventory": "stash", "item": [3, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv43", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv44", "inventory": "stash", "item": [3, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv44", "inventory": "stash", "item": [3, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv44", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv51", "inventory": "stash", "item": [4, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv51", "inventory": "stash", "item": [4, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv51", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv52", "inventory": "stash", "item": [4, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv52", "inventory": "stash", "item": [4, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv52", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv53", "inventory": "stash", "item": [4, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv53", "inventory": "stash", "item": [4, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv53", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv54", "inventory": "stash", "item": [4, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv54", "inventory": "stash", "item": [4, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv54", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv61", "inventory": "stash", "item": [5, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv61", "inventory": "stash", "item": [5, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv61", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv62", "inventory": "stash", "item": [5, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv62", "inventory": "stash", "item": [5, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv62", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv63", "inventory": "stash", "item": [5, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv63", "inventory": "stash", "item": [5, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv63", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv64", "inventory": "stash", "item": [5, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv64", "inventory": "stash", "item": [5, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv64", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv71", "inventory": "stash", "item": [6, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv71", "inventory": "stash", "item": [6, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv71", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv72", "inventory": "stash", "item": [6, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv72", "inventory": "stash", "item": [6, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv72", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv73", "inventory": "stash", "item": [6, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv73", "inventory": "stash", "item": [6, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv73", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv74", "inventory": "stash", "item": [6, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv74", "inventory": "stash", "item": [6, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv74", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv81", "inventory": "stash", "item": [7, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv81", "inventory": "stash", "item": [7, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv81", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv82", "inventory": "stash", "item": [7, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv82", "inventory": "stash", "item": [7, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv82", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv83", "inventory": "stash", "item": [7, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv83", "inventory": "stash", "item": [7, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv83", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv84", "inventory": "stash", "item": [7, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv84", "inventory": "stash", "item": [7, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv84", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv91", "inventory": "stash", "item": [8, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv91", "inventory": "stash", "item": [8, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv91", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv92", "inventory": "stash", "item": [8, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv92", "inventory": "stash", "item": [8, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv92", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv93", "inventory": "stash", "item": [8, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv93", "inventory": "stash", "item": [8, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv93", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv94", "inventory": "stash", "item": [8, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv94", "inventory": "stash", "item": [8, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv94", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,0|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,0|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv101", "inventory": "stash", "item": [9, 0], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv101", "inventory": "stash", "item": [9, 0] } - }, - "else": { "name": "image.setTexture", "id": "imgInv101", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,1|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,1|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv102", "inventory": "stash", "item": [9, 1], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv102", "inventory": "stash", "item": [9, 1] } - }, - "else": { "name": "image.setTexture", "id": "imgInv102", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,2|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,2|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv103", "inventory": "stash", "item": [9, 2], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv103", "inventory": "stash", "item": [9, 2] } - }, - "else": { "name": "image.setTexture", "id": "imgInv103", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,3|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,3|", - "param2": false, - "then": { "name": "image.setTextureFromItem", "id": "imgInv104", "inventory": "stash", "item": [9, 3], "equipable": false }, - "else": { "name": "image.setTextureFromItem", "id": "imgInv104", "inventory": "stash", "item": [9, 3] } - }, - "else": { "name": "image.setTexture", "id": "imgInv104", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv11", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv11", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv12", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv12", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv13", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv13", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv14", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv14", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv21", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv21", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv22", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv22", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv23", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv23", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv24", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv24", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv31", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv31", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv32", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv32", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv33", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv33", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv34", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv34", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv41", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv41", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv42", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv42", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv43", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv43", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv44", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv44", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv51", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv51", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv52", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv52", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv53", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv53", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv54", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv54", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv61", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv61", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv62", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv62", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv63", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv63", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv64", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv64", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv71", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv71", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv72", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv72", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv73", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv73", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv74", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv74", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv81", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv81", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv82", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv82", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv83", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv83", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv84", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv84", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv91", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv91", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv92", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv92", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv93", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv93", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv94", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv94", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,0|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv101", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv101", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,1|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv102", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv102", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,2|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv103", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv103", "texture": "empty" } - }, - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,3|", - "param2": true, - "then": { "name": "button.setTexture", "id": "btnInv104", "texture": "red" }, - "else": { "name": "button.setTexture", "id": "btnInv104", "texture": "empty" } - } - ] - }, - { - "name": "action.set", - "id": "updateInventoryLeftHandText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.LeftHand|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.LeftHand.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.LeftHand", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.LeftHand", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftHand.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftHand.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftHand.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftHand.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.LeftHand", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.LeftHand", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryRightHandText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.RightHand|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.RightHand.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.RightHand", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.RightHand", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightHand.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightHand.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightHand.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightHand.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.RightHand", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.RightHand", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryArmorText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.Armor|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.Armor.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.Armor", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.Armor", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Armor.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Armor.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Armor.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Armor.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.Armor", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.Armor", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryHelmetText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.Helmet|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.Helmet.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.Helmet", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.Helmet", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Helmet.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Helmet.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Helmet.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Helmet.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.Helmet", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.Helmet", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryAmuletText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.Amulet|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.Amulet.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.Amulet", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.Amulet", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Amulet.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Amulet.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Amulet.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.Amulet.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.Amulet", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.Amulet", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryLeftRingText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.LeftRing|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.LeftRing.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.LeftRing", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.LeftRing", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftRing.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftRing.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftRing.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.LeftRing.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.LeftRing", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.LeftRing", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryRightRingText", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.body.RightRing|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.body.RightRing.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.RightRing", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.body.RightRing", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightRing.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightRing.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightRing.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.RightRing.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.body.RightRing", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.body.RightRing", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryLeftHandClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.selectedItem.itemType|", - "list": ["Axe", "Bow", "Club", "Shield", "Staff", "Sword"], - "then": [ - { "name": "image.setTexture", "id": "imgLeftHand", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "LeftHand" }, - "updateInventoryLeftHand" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgLeftHand", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "LeftHand" }, - "updateInventoryLeftHand" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryRightHandClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.selectedItem.itemType|", - "list": ["Axe", "Bow", "Club", "Shield", "Staff", "Sword"], - "then": [ - { "name": "image.setTexture", "id": "imgRightHand", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "RightHand" }, - "updateInventoryRightHand" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgRightHand", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "RightHand" }, - "updateInventoryRightHand" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryArmorClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", - "param2": "Armor", - "then": [ - { "name": "image.setTexture", "id": "imgArmor", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "Armor" }, - "updateInventoryArmor" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgArmor", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "Armor" }, - "updateInventoryArmor" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryHelmetClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", - "param2": "Helmet", - "then": [ - { "name": "image.setTexture", "id": "imgHelmet", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "Helmet" }, - "updateInventoryHelmet" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgHelmet", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "Helmet" }, - "updateInventoryHelmet" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryAmuletClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", - "param2": "Amulet", - "then": [ - { "name": "image.setTexture", "id": "imgAmulet", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "Amulet" }, - "updateInventoryAmulet" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgAmulet", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "Amulet" }, - "updateInventoryAmulet" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryLeftRingClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", - "param2": "Ring", - "then": [ - { "name": "image.setTexture", "id": "imgLeftRing", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "LeftRing" }, - "updateInventoryLeftRing" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgLeftRing", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "LeftRing" }, - "updateInventoryLeftRing" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryRightRingClick", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", - "param2": "Ring", - "then": [ - { "name": "image.setTexture", "id": "imgRightRing", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "RightRing" }, - "updateInventoryRightRing" - ] - } - }, - "else": [ - { "name": "image.setTexture", "id": "imgRightRing", "texture": "empty" }, - { "name": "item.update", "inventory": "body", "item": "RightRing" }, - "updateInventoryRightRing" - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash11Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.0,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.0,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.0,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash12Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.0,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.0,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.0,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash13Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.0,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.0,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.0,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash14Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.0,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.0,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.0,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.0,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.0,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.0,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash21Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.1,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.1,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.1,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash22Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.1,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.1,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.1,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash23Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.1,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.1,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.1,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash24Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.1,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.1,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.1,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.1,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.1,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.1,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash31Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.2,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.2,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.2,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash32Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.2,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.2,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.2,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash33Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.2,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.2,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.2,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash34Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.2,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.2,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.2,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.2,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.2,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.2,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash41Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.3,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.3,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.3,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash42Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.3,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.3,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.3,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash43Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.3,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.3,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.3,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash44Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.3,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.3,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.3,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.3,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.3,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.3,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash51Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.4,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.4,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.4,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash52Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.4,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.4,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.4,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash53Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.4,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.4,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.4,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash54Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.4,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.4,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.4,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.4,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.4,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.4,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash61Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.5,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.5,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.5,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash62Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.5,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.5,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.5,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash63Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.5,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.5,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.5,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash64Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.5,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.5,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.5,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.5,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.5,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.5,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash71Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.6,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.6,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.6,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash72Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.6,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.6,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.6,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash73Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.6,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.6,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.6,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash74Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.6,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.6,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.6,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.6,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.6,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.6,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash81Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.7,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.7,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.7,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash82Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.7,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.7,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.7,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash83Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.7,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.7,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.7,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash84Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.7,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.7,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.7,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.7,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.7,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.7,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash91Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.8,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.8,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.8,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash92Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.8,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.8,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.8,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash93Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.8,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.8,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.8,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash94Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.8,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.8,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.8,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.8,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.8,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.8,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash101Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,0|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.9,0.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,0", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,0", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,0.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,0.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,0.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,0.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.9,0", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.9,0", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash102Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,1|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.9,1.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,1", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,1", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,1.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,1.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,1.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,1.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.9,1", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.9,1", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash103Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,2|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.9,2.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,2", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,2", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,2.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,2.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,2.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,2.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.9,2", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.9,2", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash104Text", - "action": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.hasItem.stash.9,3|", - "param2": true, - "then": [ - { - "name": "if.inList", - "param": "|currentLevel|currentPlayer.item.stash.9,3.itemType|", - "list": ["Amulet", "Ring"], - "then": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,3", - "text": "%name%\n%d.1%\n%d.2%", - "removeEmptyLines": true - }, - "else": { - "name": "text.setTextFromQuery", - "id": "txtPanel", - "query": "currentLevel.currentPlayer.item.stash.9,3", - "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", - "removeEmptyLines": true - } - }, - "updatePanelTextSpacing", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,3.magic|", - "param2": 1, - "then": "setPanelTextColorBlue", - "else": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,3.unique|", - "param2": 1, - "then": [ - "setPanelTextColorGold", - { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,3.identified|", - "param2": true, - "then": { - "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.9,3.hasDescription.4|", - "param2": true, - "then": [ - "showItemInfo", - { - "name": "text.setTextFromQuery", - "id": "itemInfoTitle", - "query": "currentLevel.currentPlayer.item.stash.9,3", - "text": "%name%" - }, - { - "name": "text.setTextFromQuery", - "id": "itemInfoDescr", - "query": "currentLevel.currentPlayer.item.stash.9,3", - "text": "%d.4%" - } - ] - } - } - ], - "else": "setPanelTextColorWhite" - } - } - ] - } - }, - { - "name": "action.set", - "id": "updateInventoryStash11Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [0, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash12Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [0, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash13Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [0, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash14Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [0, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash21Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [1, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash22Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [1, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash23Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [1, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash24Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [1, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash31Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [2, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash32Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [2, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash33Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [2, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash34Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [2, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash41Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [3, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash42Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [3, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash43Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [3, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash44Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [3, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash51Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [4, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash52Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [4, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash53Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [4, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash54Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [4, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash61Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [5, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash62Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [5, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash63Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [5, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash64Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [5, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash71Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [6, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash72Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [6, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash73Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [6, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash74Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [6, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash81Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [7, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash82Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [7, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash83Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [7, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash84Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [7, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash91Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [8, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash92Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [8, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash93Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [8, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash94Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [8, 3] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash101Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [9, 0] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash102Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [9, 1] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash103Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [9, 2] }, - "updateInventoryStash" - ] - }, - { - "name": "action.set", - "id": "updateInventoryStash104Click", - "action": [ - { "name": "item.update", "inventory": "stash", "item": [9, 3] }, - "updateInventoryStash" - ] - } - ] + "load": "res/level/actionsItemPanel.json", + "load": "res/level/actionsBasePanel.json", + "load": "res/level/actionsCharPanel.json", + "load": "res/level/actionsPlayerBelt.json", + "load": "res/level/actionsPlayerStash.json", + "load": "res/level/actionsPlayerBody.json" } \ No newline at end of file diff --git a/gamefiles/res/level/actionsBasePanel.json b/gamefiles/res/level/actionsBasePanel.json new file mode 100755 index 00000000..74c52afa --- /dev/null +++ b/gamefiles/res/level/actionsBasePanel.json @@ -0,0 +1,62 @@ +{ + "action": [ + { + "name": "action.set", + "replaceVars": true, + "id": "setPanelTextColorBlue", + "action": { "name": "text.setColor", "id": "txtPanel", "color": "%textBlue%" } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "setPanelTextColorGold", + "action": { "name": "text.setColor", "id": "txtPanel", "color": "%textGold%" } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "setPanelTextColorRed", + "action": { "name": "text.setColor", "id": "txtPanel", "color": "%textRed%" } + }, + { + "name": "action.set", + "id": "setPanelTextColorWhite", + "action": { "name": "text.setColor", "id": "txtPanel" } + }, + { + "name": "action.set", + "id": "clearPanelText", + "action": [ + { "name": "text.setText", "id": "txtPanel", "text": "" }, + "hideItemInfo" + ] + }, + { + "name": "action.set", + "id": "updatePanelTextSpacing", + "action": { + "name": "switch", + "param": "|txtPanel|lineCount|", + "case": [ + { + "value": 2, + "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 14 } + }, + { + "value": 3, + "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 8 } + }, + { + "value": 4, + "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 4 } + }, + { + "value": 5, + "action": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 2 } + } + ], + "default": { "name": "text.setSpacing", "id": "txtPanel", "vertical": 2 } + } + } + ] +} \ No newline at end of file diff --git a/gamefiles/res/level/actionsCharPanel.json b/gamefiles/res/level/actionsCharPanel.json new file mode 100755 index 00000000..1acb3252 --- /dev/null +++ b/gamefiles/res/level/actionsCharPanel.json @@ -0,0 +1,412 @@ +{ + "action": [ + { + "name": "action.set", + "id": "updateCharLabels", + "action": { + "name": "if.equal", + "param1": "|game|hasResource.charPanelLabels|", + "param2": true, + "then": [ + { "name": "text.setText", "id": "charName", "text": "|currentLevel|currentPlayer.name|" }, + { "name": "text.setText", "id": "charClass", "text": "|currentLevel|currentPlayer.class|" }, + { "name": "text.setText", "id": "charLevel", "text": "|currentLevel|currentPlayer.level|" }, + { "name": "text.setText", "id": "charExp", "text": "|currentLevel|currentPlayer.experience|" }, + { "name": "text.setText", "id": "charExpNext", "text": "|currentLevel|currentPlayer.expNextLevel|" }, + { "name": "text.setText", "id": "charGold", "text": "|currentLevel|currentPlayer.gold|" }, + { "name": "text.setText", "id": "charStr", "text": "|currentLevel|currentPlayer.strength|" }, + { "name": "text.setText", "id": "charStrNow", "text": "|currentLevel|currentPlayer.strengthNow|" }, + { "name": "text.setText", "id": "charMag", "text": "|currentLevel|currentPlayer.magic|" }, + { "name": "text.setText", "id": "charMagNow", "text": "|currentLevel|currentPlayer.magicNow|" }, + { "name": "text.setText", "id": "charDex", "text": "|currentLevel|currentPlayer.dexterity|" }, + { "name": "text.setText", "id": "charDexNow", "text": "|currentLevel|currentPlayer.dexterityNow|" }, + { "name": "text.setText", "id": "charVit", "text": "|currentLevel|currentPlayer.vitality|" }, + { "name": "text.setText", "id": "charVitNow", "text": "|currentLevel|currentPlayer.vitalityNow|" }, + { "name": "text.setText", "id": "charLife", "text": "|currentLevel|currentPlayer.life|" }, + { "name": "text.setText", "id": "charLifeNow", "text": "|currentLevel|currentPlayer.lifeNow|" }, + { "name": "text.setText", "id": "charMana", "text": "|currentLevel|currentPlayer.mana|" }, + { "name": "text.setText", "id": "charManaNow", "text": "|currentLevel|currentPlayer.manaNow|" }, + { "name": "text.setText", "id": "charArmor", "text": "|currentLevel|currentPlayer.armor|" }, + { + "name": "text.setText", + "id": "charToHit", + "binding": "|currentLevel|currentPlayer.toHit|", + "format": "[1]%" + }, + { + "name": "text.setText", + "id": "charDamage", + "binding": ["|currentLevel|currentPlayer.damageMinNow|", "|currentLevel|currentPlayer.damageMaxNow|"], + "format": "[1]-[2]" + }, + { + "name": ">=", + "param1": "|currentLevel|currentPlayer.resistMagic|", + "param2": "|currentLevel|currentPlayer.maxResistMagic|", + "then": { "name": "text.setText", "id": "charResMagic", "text": "Max" }, + "else": { + "name": "text.setText", + "id": "charResMagic", + "binding": "|currentLevel|currentPlayer.resistMagic|", + "format": "[1]%" + } + }, + { + "name": ">=", + "param1": "|currentLevel|currentPlayer.resistFire|", + "param2": "|currentLevel|currentPlayer.maxResistFire|", + "then": { "name": "text.setText", "id": "charResFire", "text": "Max" }, + "else": { + "name": "text.setText", + "id": "charResFire", + "binding": "|currentLevel|currentPlayer.resistFire|", + "format": "[1]%" + } + }, + { + "name": ">=", + "param1": "|currentLevel|currentPlayer.resistLightning|", + "param2": "|currentLevel|currentPlayer.maxResistLightning|", + "then": { "name": "text.setText", "id": "charResLight", "text": "Max" }, + "else": { + "name": "text.setText", + "id": "charResLight", + "binding": "|currentLevel|currentPlayer.resistLightning|", + "format": "[1]%" + } + } + ] + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharStrengthColor", + "action": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.strength|", + "param2": "|currentLevel|currentPlayer.maxStrength|", + "then": { "name": "text.setColor", "id": "charStr", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charStr" } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharStrengthNowColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.strengthItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charStrNow", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.strengthItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charStrNow", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charStrNow" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharMagicColor", + "action": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.magic|", + "param2": "|currentLevel|currentPlayer.maxMagic|", + "then": { "name": "text.setColor", "id": "charMag", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charMag" } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharMagicNowColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.magicItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charMagNow", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.magicItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charMagNow", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charMagNow" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharDexterityColor", + "action": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.dexterity|", + "param2": "|currentLevel|currentPlayer.maxDexterity|", + "then": { "name": "text.setColor", "id": "charDex", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charDex" } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharDexterityNowColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.dexterityItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charDexNow", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.dexterityItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charDexNow", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charDexNow" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharVitalityColor", + "action": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.vitality|", + "param2": "|currentLevel|currentPlayer.maxVitality|", + "then": { "name": "text.setColor", "id": "charVit", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charVit" } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharVitalityNowColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.vitalityItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charVitNow", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.vitalityItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charVitNow", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charVitNow" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharLifeColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.vitalityItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charLife", "color": "%textBlue%" }, + "else": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.lifeItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charLife", "color": "%textBlue%" }, + "else": { "name": "text.setColor", "id": "charLife" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharLifeNowColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.lifeDamage|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charLifeNow", "color": "%textRed%" }, + "else": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.vitalityItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charLifeNow", "color": "%textBlue%" }, + "else": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.lifeItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charLifeNow", "color": "%textBlue%" }, + "else": { "name": "text.setColor", "id": "charLifeNow" } + } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharManaColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.magicItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charMana", "color": "%textBlue%" }, + "else": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.manaItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charMana", "color": "%textBlue%" }, + "else": { "name": "text.setColor", "id": "charMana" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharManaNowColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.manaDamage|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charManaNow", "color": "%textRed%" }, + "else": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.magicItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charManaNow", "color": "%textBlue%" }, + "else": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.manaItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charManaNow", "color": "%textBlue%" }, + "else": { "name": "text.setColor", "id": "charManaNow" } + } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharArmorColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.armorItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charArmor", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.armorItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charArmor", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charArmor" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharToHitColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.toHitItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charToHit", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.toHitItems|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charToHit", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charToHit" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharDamageColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.toDamage|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charDamage", "color": "%textBlue%" }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.toDamage|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charDamage", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charDamage" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharResistMagicColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.resistMagic|", + "param2": 0, + "then": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.resistMagic|", + "param2": "|currentLevel|currentPlayer.maxResistMagic|", + "then": { "name": "text.setColor", "id": "charResMagic", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charResMagic", "color": "%textBlue%" } + }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.resistMagic|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charResMagic", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charResMagic" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharResistFireColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.resistFire|", + "param2": 0, + "then": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.resistFire|", + "param2": "|currentLevel|currentPlayer.maxResistFire|", + "then": { "name": "text.setColor", "id": "charResFire", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charResFire", "color": "%textBlue%" } + }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.resistFire|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charResFire", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charResFire" } + } + } + }, + { + "name": "action.set", + "replaceVars": true, + "id": "updateCharResistLightningColor", + "action": { + "name": "if.greater", + "param1": "|currentLevel|currentPlayer.resistLightning|", + "param2": 0, + "then": { + "name": ">=", + "param1": "|currentLevel|currentPlayer.resistLightning|", + "param2": "|currentLevel|currentPlayer.maxResistLightning|", + "then": { "name": "text.setColor", "id": "charResLight", "color": "%textGold%" }, + "else": { "name": "text.setColor", "id": "charResLight", "color": "%textBlue%" } + }, + "else": { + "name": "if.lower", + "param1": "|currentLevel|currentPlayer.resistLightning|", + "param2": 0, + "then": { "name": "text.setColor", "id": "charResLight", "color": "%textRed%" }, + "else": { "name": "text.setColor", "id": "charResLight" } + } + } + } + ] +} \ No newline at end of file diff --git a/gamefiles/res/level/actionsItemPanel.json b/gamefiles/res/level/actionsItemPanel.json new file mode 100755 index 00000000..50f5b908 --- /dev/null +++ b/gamefiles/res/level/actionsItemPanel.json @@ -0,0 +1,31 @@ +{ + "action": [ + { + "name": "action.set", + "id": "hideItemInfo", + "action": [ + { "name": "drawable.visible", "id": "itemInfoBk", "visible": false }, + { "name": "drawable.visible", "id": "itemInfoSp", "visible": false }, + { "name": "drawable.visible", "id": "itemInfoBr", "visible": false }, + { "name": "drawable.visible", "id": "itemInfoTitle", "visible": false }, + { "name": "drawable.visible", "id": "itemInfoDescr", "visible": false } + ] + }, + { + "name": "action.set", + "id": "showItemInfo", + "action": { + "name": "if.equal", + "param1": "|charPanel|visible|", + "param2": true, + "else": [ + { "name": "drawable.visible", "id": "itemInfoBk", "visible": true }, + { "name": "drawable.visible", "id": "itemInfoSp", "visible": true }, + { "name": "drawable.visible", "id": "itemInfoBr", "visible": true }, + { "name": "drawable.visible", "id": "itemInfoTitle", "visible": true }, + { "name": "drawable.visible", "id": "itemInfoDescr", "visible": true } + ] + } + } + ] +} \ No newline at end of file diff --git a/gamefiles/res/level/actionsPlayerBelt.json b/gamefiles/res/level/actionsPlayerBelt.json new file mode 100755 index 00000000..e56aae7d --- /dev/null +++ b/gamefiles/res/level/actionsPlayerBelt.json @@ -0,0 +1,794 @@ +{ + "action": [ + { + "name": "action.set", + "id": "updateBeltItem1", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.0|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt1", "inventory": "belt", "item": 0, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt1", "inventory": "belt", "item": 0 } + }, + { "name": "image.centerTexture", "id": "imgBelt1" }, + { "name": "button.setTexture", "id": "playerBelt1", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt1", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt1", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt1", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt1", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem2", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.1|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt2", "inventory": "belt", "item": 1, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt2", "inventory": "belt", "item": 1 } + }, + { "name": "image.centerTexture", "id": "imgBelt2" }, + { "name": "button.setTexture", "id": "playerBelt2", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt2", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt2", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt2", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt2", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem3", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.2|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt3", "inventory": "belt", "item": 2, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt3", "inventory": "belt", "item": 2 } + }, + { "name": "image.centerTexture", "id": "imgBelt3" }, + { "name": "button.setTexture", "id": "playerBelt3", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt3", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt3", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt3", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt3", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem4", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.3|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt4", "inventory": "belt", "item": 3, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt4", "inventory": "belt", "item": 3 } + }, + { "name": "image.centerTexture", "id": "imgBelt4" }, + { "name": "button.setTexture", "id": "playerBelt4", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt4", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt4", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt4", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt4", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem5", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.4|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.4|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt5", "inventory": "belt", "item": 4, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt5", "inventory": "belt", "item": 4 } + }, + { "name": "image.centerTexture", "id": "imgBelt5" }, + { "name": "button.setTexture", "id": "playerBelt5", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt5", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt5", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt5", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt5", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem6", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.5|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.5|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt6", "inventory": "belt", "item": 5, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt6", "inventory": "belt", "item": 5 } + }, + { "name": "image.centerTexture", "id": "imgBelt6" }, + { "name": "button.setTexture", "id": "playerBelt6", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt6", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt6", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt6", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt6", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem7", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.6|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.6|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt7", "inventory": "belt", "item": 6, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt7", "inventory": "belt", "item": 6 } + }, + { "name": "image.centerTexture", "id": "imgBelt7" }, + { "name": "button.setTexture", "id": "playerBelt7", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt7", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt7", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt7", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt7", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItem8", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.7|", + "param2": true, + "then": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.belt.7|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgBelt8", "inventory": "belt", "item": 7, "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgBelt8", "inventory": "belt", "item": 7 } + }, + { "name": "image.centerTexture", "id": "imgBelt8" }, + { "name": "button.setTexture", "id": "playerBelt8", "texture": "red" }, + { "name": "drawable.visible", "id": "txtBelt8", "visible": true } + ], + "else": [ + { "name": "image.setTexture", "id": "imgBelt8", "texture": "empty" }, + { "name": "button.setTexture", "id": "playerBelt8", "texture": "empty" }, + { "name": "drawable.visible", "id": "txtBelt8", "visible": false } + ] + } + }, + { + "name": "action.set", + "id": "updateBeltItems", + "action": [ + "updateBeltItem1", + "updateBeltItem2", + "updateBeltItem3", + "updateBeltItem4", + "updateBeltItem5", + "updateBeltItem6", + "updateBeltItem7", + "updateBeltItem8" + ] + }, + { + "name": "action.set", + "id": "updateInventoryBelt1Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt2Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt3Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt4Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt5Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.4|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.4.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.4", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.4", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.4.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.4.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.4.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.4.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.4", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.4", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt6Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.5|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.5.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.5", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.5", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.5.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.5.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.5.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.5.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.5", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.5", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt7Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.6|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.6.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.6", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.6", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.6.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.6.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.6.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.6.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.6", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.6", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryBelt8Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.belt.7|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.belt.7.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.7", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.belt.7", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.7.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.7.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.7.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.belt.7.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.belt.7", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.belt.7", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/gamefiles/res/level/actionsPlayerBody.json b/gamefiles/res/level/actionsPlayerBody.json new file mode 100755 index 00000000..c5a9ebe1 --- /dev/null +++ b/gamefiles/res/level/actionsPlayerBody.json @@ -0,0 +1,906 @@ +{ + "action": [ + { + "name": "action.set", + "id": "updateInventoryLeftHand", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.LeftHand|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgLeftHand", "inventory": "body", "item": "LeftHand", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgLeftHand", "inventory": "body", "item": "LeftHand" } + }, + { "name": "image.centerTexture", "id": "imgLeftHand" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.LeftHand|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerLeftHand", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerLeftHand", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryRightHand", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.RightHand|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgRightHand", "inventory": "body", "item": "RightHand", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgRightHand", "inventory": "body", "item": "RightHand" } + }, + { "name": "image.centerTexture", "id": "imgRightHand" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.RightHand|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerRightHand", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerRightHand", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryArmor", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.Armor|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgArmor", "inventory": "body", "item": "Armor", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgArmor", "inventory": "body", "item": "Armor" } + }, + { "name": "image.centerTexture", "id": "imgArmor" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.Armor|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerArmor", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerArmor", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryHelmet", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.Helmet|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgHelmet", "inventory": "body", "item": "Helmet", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgHelmet", "inventory": "body", "item": "Helmet" } + }, + { "name": "image.centerTexture", "id": "imgHelmet" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.Helmet|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerHelmet", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerHelmet", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryAmulet", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.Amulet|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgAmulet", "inventory": "body", "item": "Amulet", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgAmulet", "inventory": "body", "item": "Amulet" } + }, + { "name": "image.centerTexture", "id": "imgAmulet" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.Amulet|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerAmulet", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerAmulet", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryLeftRing", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.LeftRing|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgLeftRing", "inventory": "body", "item": "LeftRing", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgLeftRing", "inventory": "body", "item": "LeftRing" } + }, + { "name": "image.centerTexture", "id": "imgLeftRing" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.LeftRing|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerLeftRing", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerLeftRing", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryRightRing", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.body.RightRing|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgRightRing", "inventory": "body", "item": "RightRing", "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgRightRing", "inventory": "body", "item": "RightRing" } + }, + { "name": "image.centerTexture", "id": "imgRightRing" }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.RightRing|", + "param2": true, + "then": { "name": "button.setTexture", "id": "playerRightRing", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "playerRightRing", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateBodyItems", + "action": [ + "updateInventoryLeftHand", + "updateInventoryRightHand", + "updateInventoryArmor", + "updateInventoryHelmet", + "updateInventoryAmulet", + "updateInventoryLeftRing", + "updateInventoryRightRing" + ] + }, + { + "name": "action.set", + "id": "updateInventoryLeftHandText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.LeftHand|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.LeftHand.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.LeftHand", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.LeftHand", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftHand.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftHand.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftHand.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftHand.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.LeftHand", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.LeftHand", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryRightHandText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.RightHand|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.RightHand.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.RightHand", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.RightHand", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightHand.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightHand.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightHand.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightHand.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.RightHand", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.RightHand", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryArmorText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.Armor|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.Armor.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.Armor", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.Armor", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Armor.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Armor.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Armor.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Armor.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.Armor", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.Armor", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryHelmetText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.Helmet|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.Helmet.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.Helmet", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.Helmet", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Helmet.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Helmet.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Helmet.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Helmet.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.Helmet", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.Helmet", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryAmuletText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.Amulet|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.Amulet.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.Amulet", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.Amulet", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Amulet.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Amulet.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Amulet.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.Amulet.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.Amulet", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.Amulet", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryLeftRingText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.LeftRing|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.LeftRing.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.LeftRing", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.LeftRing", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftRing.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftRing.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftRing.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.LeftRing.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.LeftRing", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.LeftRing", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryRightRingText", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.body.RightRing|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.body.RightRing.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.RightRing", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.body.RightRing", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightRing.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightRing.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightRing.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.body.RightRing.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.body.RightRing", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.body.RightRing", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryLeftHandClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.selectedItem.itemType|", + "list": ["Axe", "Bow", "Club", "Shield", "Staff", "Sword"], + "then": [ + { "name": "image.setTexture", "id": "imgLeftHand", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "LeftHand" }, + "updateInventoryLeftHand" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgLeftHand", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "LeftHand" }, + "updateInventoryLeftHand" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryRightHandClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.selectedItem.itemType|", + "list": ["Axe", "Bow", "Club", "Shield", "Staff", "Sword"], + "then": [ + { "name": "image.setTexture", "id": "imgRightHand", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "RightHand" }, + "updateInventoryRightHand" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgRightHand", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "RightHand" }, + "updateInventoryRightHand" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryArmorClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", + "param2": "Armor", + "then": [ + { "name": "image.setTexture", "id": "imgArmor", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "Armor" }, + "updateInventoryArmor" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgArmor", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "Armor" }, + "updateInventoryArmor" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryHelmetClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", + "param2": "Helmet", + "then": [ + { "name": "image.setTexture", "id": "imgHelmet", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "Helmet" }, + "updateInventoryHelmet" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgHelmet", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "Helmet" }, + "updateInventoryHelmet" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryAmuletClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", + "param2": "Amulet", + "then": [ + { "name": "image.setTexture", "id": "imgAmulet", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "Amulet" }, + "updateInventoryAmulet" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgAmulet", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "Amulet" }, + "updateInventoryAmulet" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryLeftRingClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", + "param2": "Ring", + "then": [ + { "name": "image.setTexture", "id": "imgLeftRing", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "LeftRing" }, + "updateInventoryLeftRing" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgLeftRing", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "LeftRing" }, + "updateInventoryLeftRing" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryRightRingClick", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipSelectedItem|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.selectedItem.itemType|", + "param2": "Ring", + "then": [ + { "name": "image.setTexture", "id": "imgRightRing", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "RightRing" }, + "updateInventoryRightRing" + ] + } + }, + "else": [ + { "name": "image.setTexture", "id": "imgRightRing", "texture": "empty" }, + { "name": "item.update", "inventory": "body", "item": "RightRing" }, + "updateInventoryRightRing" + ] + }, + "updateCharLabels", + "updateBeltItems", + "updateBodyItems", + "updateInventoryStash" + ] + } + ] +} \ No newline at end of file diff --git a/gamefiles/res/level/actionsPlayerStash.json b/gamefiles/res/level/actionsPlayerStash.json new file mode 100755 index 00000000..e0503872 --- /dev/null +++ b/gamefiles/res/level/actionsPlayerStash.json @@ -0,0 +1,3970 @@ +{ + "action": [ + { + "name": "action.set", + "id": "updateInventoryStash", + "action": [ + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv11", "inventory": "stash", "item": [0, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv11", "inventory": "stash", "item": [0, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv11", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv12", "inventory": "stash", "item": [0, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv12", "inventory": "stash", "item": [0, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv12", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv13", "inventory": "stash", "item": [0, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv13", "inventory": "stash", "item": [0, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv13", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.0,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.0,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv14", "inventory": "stash", "item": [0, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv14", "inventory": "stash", "item": [0, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv14", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv21", "inventory": "stash", "item": [1, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv21", "inventory": "stash", "item": [1, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv21", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv22", "inventory": "stash", "item": [1, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv22", "inventory": "stash", "item": [1, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv22", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv23", "inventory": "stash", "item": [1, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv23", "inventory": "stash", "item": [1, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv23", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.1,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.1,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv24", "inventory": "stash", "item": [1, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv24", "inventory": "stash", "item": [1, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv24", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv31", "inventory": "stash", "item": [2, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv31", "inventory": "stash", "item": [2, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv31", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv32", "inventory": "stash", "item": [2, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv32", "inventory": "stash", "item": [2, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv32", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv33", "inventory": "stash", "item": [2, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv33", "inventory": "stash", "item": [2, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv33", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.2,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.2,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv34", "inventory": "stash", "item": [2, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv34", "inventory": "stash", "item": [2, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv34", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv41", "inventory": "stash", "item": [3, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv41", "inventory": "stash", "item": [3, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv41", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv42", "inventory": "stash", "item": [3, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv42", "inventory": "stash", "item": [3, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv42", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv43", "inventory": "stash", "item": [3, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv43", "inventory": "stash", "item": [3, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv43", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.3,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.3,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv44", "inventory": "stash", "item": [3, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv44", "inventory": "stash", "item": [3, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv44", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv51", "inventory": "stash", "item": [4, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv51", "inventory": "stash", "item": [4, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv51", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv52", "inventory": "stash", "item": [4, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv52", "inventory": "stash", "item": [4, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv52", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv53", "inventory": "stash", "item": [4, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv53", "inventory": "stash", "item": [4, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv53", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.4,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.4,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv54", "inventory": "stash", "item": [4, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv54", "inventory": "stash", "item": [4, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv54", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv61", "inventory": "stash", "item": [5, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv61", "inventory": "stash", "item": [5, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv61", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv62", "inventory": "stash", "item": [5, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv62", "inventory": "stash", "item": [5, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv62", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv63", "inventory": "stash", "item": [5, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv63", "inventory": "stash", "item": [5, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv63", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.5,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.5,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv64", "inventory": "stash", "item": [5, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv64", "inventory": "stash", "item": [5, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv64", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv71", "inventory": "stash", "item": [6, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv71", "inventory": "stash", "item": [6, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv71", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv72", "inventory": "stash", "item": [6, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv72", "inventory": "stash", "item": [6, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv72", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv73", "inventory": "stash", "item": [6, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv73", "inventory": "stash", "item": [6, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv73", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.6,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.6,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv74", "inventory": "stash", "item": [6, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv74", "inventory": "stash", "item": [6, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv74", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv81", "inventory": "stash", "item": [7, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv81", "inventory": "stash", "item": [7, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv81", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv82", "inventory": "stash", "item": [7, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv82", "inventory": "stash", "item": [7, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv82", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv83", "inventory": "stash", "item": [7, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv83", "inventory": "stash", "item": [7, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv83", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.7,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.7,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv84", "inventory": "stash", "item": [7, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv84", "inventory": "stash", "item": [7, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv84", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv91", "inventory": "stash", "item": [8, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv91", "inventory": "stash", "item": [8, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv91", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv92", "inventory": "stash", "item": [8, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv92", "inventory": "stash", "item": [8, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv92", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv93", "inventory": "stash", "item": [8, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv93", "inventory": "stash", "item": [8, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv93", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.8,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.8,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv94", "inventory": "stash", "item": [8, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv94", "inventory": "stash", "item": [8, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv94", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,0|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,0|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv101", "inventory": "stash", "item": [9, 0], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv101", "inventory": "stash", "item": [9, 0] } + }, + "else": { "name": "image.setTexture", "id": "imgInv101", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,1|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,1|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv102", "inventory": "stash", "item": [9, 1], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv102", "inventory": "stash", "item": [9, 1] } + }, + "else": { "name": "image.setTexture", "id": "imgInv102", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,2|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,2|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv103", "inventory": "stash", "item": [9, 2], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv103", "inventory": "stash", "item": [9, 2] } + }, + "else": { "name": "image.setTexture", "id": "imgInv103", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.isItemSlotInUse.stash.9,3|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.canEquipItem.stash.9,3|", + "param2": false, + "then": { "name": "image.setTextureFromItem", "id": "imgInv104", "inventory": "stash", "item": [9, 3], "equipable": false }, + "else": { "name": "image.setTextureFromItem", "id": "imgInv104", "inventory": "stash", "item": [9, 3] } + }, + "else": { "name": "image.setTexture", "id": "imgInv104", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv11", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv11", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv12", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv12", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv13", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv13", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv14", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv14", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv21", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv21", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv22", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv22", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv23", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv23", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv24", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv24", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv31", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv31", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv32", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv32", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv33", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv33", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv34", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv34", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv41", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv41", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv42", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv42", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv43", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv43", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv44", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv44", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv51", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv51", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv52", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv52", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv53", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv53", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv54", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv54", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv61", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv61", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv62", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv62", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv63", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv63", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv64", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv64", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv71", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv71", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv72", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv72", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv73", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv73", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv74", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv74", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv81", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv81", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv82", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv82", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv83", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv83", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv84", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv84", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv91", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv91", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv92", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv92", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv93", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv93", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv94", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv94", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,0|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv101", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv101", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,1|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv102", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv102", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,2|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv103", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv103", "texture": "empty" } + }, + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,3|", + "param2": true, + "then": { "name": "button.setTexture", "id": "btnInv104", "texture": "red" }, + "else": { "name": "button.setTexture", "id": "btnInv104", "texture": "empty" } + } + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash11Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.0,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.0,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.0,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash12Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.0,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.0,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.0,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash13Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.0,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.0,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.0,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash14Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.0,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.0,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.0,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.0,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.0,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.0,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash21Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.1,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.1,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.1,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash22Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.1,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.1,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.1,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash23Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.1,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.1,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.1,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash24Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.1,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.1,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.1,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.1,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.1,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.1,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash31Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.2,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.2,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.2,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash32Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.2,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.2,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.2,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash33Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.2,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.2,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.2,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash34Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.2,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.2,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.2,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.2,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.2,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.2,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash41Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.3,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.3,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.3,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash42Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.3,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.3,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.3,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash43Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.3,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.3,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.3,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash44Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.3,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.3,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.3,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.3,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.3,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.3,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash51Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.4,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.4,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.4,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash52Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.4,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.4,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.4,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash53Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.4,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.4,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.4,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash54Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.4,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.4,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.4,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.4,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.4,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.4,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash61Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.5,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.5,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.5,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash62Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.5,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.5,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.5,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash63Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.5,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.5,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.5,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash64Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.5,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.5,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.5,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.5,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.5,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.5,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash71Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.6,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.6,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.6,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash72Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.6,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.6,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.6,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash73Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.6,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.6,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.6,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash74Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.6,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.6,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.6,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.6,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.6,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.6,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash81Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.7,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.7,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.7,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash82Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.7,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.7,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.7,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash83Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.7,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.7,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.7,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash84Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.7,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.7,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.7,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.7,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.7,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.7,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash91Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.8,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.8,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.8,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash92Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.8,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.8,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.8,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash93Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.8,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.8,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.8,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash94Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.8,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.8,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.8,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.8,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.8,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.8,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash101Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,0|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.9,0.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,0", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,0", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,0.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,0.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,0.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,0.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.9,0", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.9,0", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash102Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,1|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.9,1.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,1", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,1", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,1.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,1.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,1.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,1.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.9,1", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.9,1", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash103Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,2|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.9,2.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,2", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,2", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,2.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,2.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,2.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,2.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.9,2", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.9,2", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash104Text", + "action": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.hasItem.stash.9,3|", + "param2": true, + "then": [ + { + "name": "if.inList", + "param": "|currentLevel|currentPlayer.item.stash.9,3.itemType|", + "list": ["Amulet", "Ring"], + "then": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,3", + "text": "%name%\n%d.1%\n%d.2%", + "removeEmptyLines": true + }, + "else": { + "name": "text.setTextFromQuery", + "id": "txtPanel", + "query": "currentLevel.currentPlayer.item.stash.9,3", + "text": "%name%\n%d.0%\n%d.1%\n%d.2%\n%d.3%", + "removeEmptyLines": true + } + }, + "updatePanelTextSpacing", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,3.magical|", + "param2": 1, + "then": "setPanelTextColorBlue", + "else": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,3.unique|", + "param2": 1, + "then": [ + "setPanelTextColorGold", + { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,3.identified|", + "param2": true, + "then": { + "name": "if.equal", + "param1": "|currentLevel|currentPlayer.item.stash.9,3.hasDescription.4|", + "param2": true, + "then": [ + "showItemInfo", + { + "name": "text.setTextFromQuery", + "id": "itemInfoTitle", + "query": "currentLevel.currentPlayer.item.stash.9,3", + "text": "%name%" + }, + { + "name": "text.setTextFromQuery", + "id": "itemInfoDescr", + "query": "currentLevel.currentPlayer.item.stash.9,3", + "text": "%d.4%" + } + ] + } + } + ], + "else": "setPanelTextColorWhite" + } + } + ] + } + }, + { + "name": "action.set", + "id": "updateInventoryStash11Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [0, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash12Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [0, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash13Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [0, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash14Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [0, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash21Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [1, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash22Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [1, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash23Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [1, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash24Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [1, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash31Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [2, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash32Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [2, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash33Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [2, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash34Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [2, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash41Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [3, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash42Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [3, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash43Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [3, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash44Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [3, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash51Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [4, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash52Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [4, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash53Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [4, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash54Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [4, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash61Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [5, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash62Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [5, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash63Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [5, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash64Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [5, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash71Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [6, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash72Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [6, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash73Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [6, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash74Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [6, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash81Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [7, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash82Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [7, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash83Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [7, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash84Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [7, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash91Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [8, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash92Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [8, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash93Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [8, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash94Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [8, 3] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash101Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [9, 0] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash102Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [9, 1] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash103Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [9, 2] }, + "updateInventoryStash" + ] + }, + { + "name": "action.set", + "id": "updateInventoryStash104Click", + "action": [ + { "name": "item.update", "inventory": "stash", "item": [9, 3] }, + "updateInventoryStash" + ] + } + ] +} \ No newline at end of file diff --git a/gamefiles/res/level/baseLevelActions.json b/gamefiles/res/level/baseLevelActions.json index 2760c3e8..d0138907 100755 --- a/gamefiles/res/level/baseLevelActions.json +++ b/gamefiles/res/level/baseLevelActions.json @@ -8,7 +8,7 @@ "param1": "|currentLevel|currentPlayer.hasSelectedItem|", "param2": true, "then": { "name": "item.drop" }, - "else": { "name": "player.moveToClick", "id": "hero" } + "else": { "name": "player.moveToClick", "player": "hero" } } }, { @@ -23,7 +23,7 @@ "param2": "item", "then": { "name": "if.equal", - "param1": "|currentLevel|hoverObject.magic|", + "param1": "|currentLevel|hoverObject.magical|", "param2": 1, "then": "setPanelTextColorBlue", "else": { diff --git a/gamefiles/res/level/textures.json b/gamefiles/res/level/textures.json index e782b8b0..37b6a098 100755 --- a/gamefiles/res/level/textures.json +++ b/gamefiles/res/level/textures.json @@ -1,5 +1,10 @@ { "texture": [ + { + "id": "p8bulbs", + "file": "ctrlpan/p8bulbs.cel", + "palette": "town" + }, { "id": "panel8", "file": "ctrlpan/panel8.cel", diff --git a/gamefiles/towners/adria/buy/confirm.json b/gamefiles/towners/adria/buy/confirm.json index 28ae64c4..f98f85d9 100755 --- a/gamefiles/towners/adria/buy/confirm.json +++ b/gamefiles/towners/adria/buy/confirm.json @@ -3,7 +3,7 @@ "name": "if.equal", "param1": { "name": "player.hasFreeItemSlot", - "item": { "playerId": "adria", "inventory": {1}, "item": {2} } + "item": { "player": "adria", "inventory": {1}, "item": {2} } }, "param2": true, "then": { diff --git a/gamefiles/towners/adria/buy/confirm2.json b/gamefiles/towners/adria/buy/confirm2.json index b70afde1..d6a8ac8e 100755 --- a/gamefiles/towners/adria/buy/confirm2.json +++ b/gamefiles/towners/adria/buy/confirm2.json @@ -79,7 +79,7 @@ }, { "name": "item.trade", - "item": { "playerId": "adria", "inventory": {1}, "item": {2} }, + "item": { "player": "adria", "inventory": {1}, "item": {2} }, "position": "BottomLeft", "onInventoryFull": "inventoryFull" }, @@ -131,7 +131,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "adria", "inventory": {1}, "item": {2} } + "item": { "player": "adria", "inventory": {1}, "item": {2} } }, "param2": false, "then": [ @@ -148,7 +148,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.adria.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.adria.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/adria/buy/listItems.json b/gamefiles/towners/adria/buy/listItems.json index f0cb9372..3e2a465f 100755 --- a/gamefiles/towners/adria/buy/listItems.json +++ b/gamefiles/towners/adria/buy/listItems.json @@ -66,7 +66,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "adria", "inventory": 0, "item": "%idx%" } + "item": { "player": "adria", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -87,7 +87,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.adria.item.0.%idx%.magic|", + "param1": "|currentLevel|player.adria.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/adria/buy/panel.json b/gamefiles/towners/adria/buy/panel.json index 23e86b20..54302286 100755 --- a/gamefiles/towners/adria/buy/panel.json +++ b/gamefiles/towners/adria/buy/panel.json @@ -87,7 +87,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "adria", "inventory": 0, "item": "%idx%" } + "item": { "player": "adria", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -108,7 +108,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.adria.item.0.%idx%.magic|", + "param1": "|currentLevel|player.adria.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/adria/recharge/confirm2.json b/gamefiles/towners/adria/recharge/confirm2.json index 18909880..7bdec6c1 100755 --- a/gamefiles/towners/adria/recharge/confirm2.json +++ b/gamefiles/towners/adria/recharge/confirm2.json @@ -145,7 +145,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.adria.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.adria.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/adria/recharge/listItems.json b/gamefiles/towners/adria/recharge/listItems.json index 16a34a72..070b7a8e 100755 --- a/gamefiles/towners/adria/recharge/listItems.json +++ b/gamefiles/towners/adria/recharge/listItems.json @@ -89,7 +89,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.body.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -135,7 +135,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -181,7 +181,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/adria/recharge/panel.json b/gamefiles/towners/adria/recharge/panel.json index 141fc7cd..59652173 100755 --- a/gamefiles/towners/adria/recharge/panel.json +++ b/gamefiles/towners/adria/recharge/panel.json @@ -114,7 +114,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.body.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -173,7 +173,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -232,7 +232,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/adria/sell/confirm.json b/gamefiles/towners/adria/sell/confirm.json index b0eace5f..f1a3a5a3 100755 --- a/gamefiles/towners/adria/sell/confirm.json +++ b/gamefiles/towners/adria/sell/confirm.json @@ -2,7 +2,7 @@ "action": { "name": ">=", "param1": { "name": "player.getMaxGoldCapacity" }, - "param2": "|currentLevel|currentPlayer.item.{1}.{2}.price|", + "param2": "|currentLevel|currentPlayer.item.{1}.{2}.prices.0|", "then": { "name": "load", "file": [ "towners/adria/sell/confirm2.json", "{1}", "{2}" ] diff --git a/gamefiles/towners/adria/sell/confirm2.json b/gamefiles/towners/adria/sell/confirm2.json index 4d2521d2..bfc50d84 100755 --- a/gamefiles/towners/adria/sell/confirm2.json +++ b/gamefiles/towners/adria/sell/confirm2.json @@ -73,7 +73,7 @@ "horizontalSpaceOffset": 1, "text": "Yes", "onClick": [ - { "name": "player.addGold", "gold": "|currentLevel|currentPlayer.item.{1}.{2}.price|" }, + { "name": "player.addGold", "gold": "|currentLevel|currentPlayer.item.{1}.{2}.prices.0|" }, { "name": "item.delete", "inventory": "{1}", "item": {2} }, "updateBeltItems", { "name": "resource.popAll", "id": "userPanelSell" }, @@ -116,7 +116,7 @@ "name": "text.setTextFromQuery", "id": "itemPrice", "query": "currentLevel.currentPlayer.item.{1}.{2}", - "text": "%price%" + "text": "%prices.0%" }, { "replaceVars": true, @@ -137,7 +137,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magic|", + "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/adria/sell/listItems.json b/gamefiles/towners/adria/sell/listItems.json index 5d5b5fa2..da24aebb 100755 --- a/gamefiles/towners/adria/sell/listItems.json +++ b/gamefiles/towners/adria/sell/listItems.json @@ -66,7 +66,7 @@ "property": "itemType", "value": ["Book", "Potion", "Scroll", "Staff"] }, - "text": "%price%", + "text": "%prices.0%", "executeAction": { "name": "if.equal", "param1": "|currentLevel|currentPlayer.canEquipItem.stash.%idx%|", @@ -89,7 +89,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -112,7 +112,7 @@ "property": "itemType", "value": ["Book", "Potion", "Scroll", "Staff"] }, - "text": "%price%", + "text": "%prices.0%", "executeAction": { "name": "if.equal", "param1": "|currentLevel|currentPlayer.canEquipItem.belt.%idx%|", @@ -135,7 +135,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/adria/sell/panel.json b/gamefiles/towners/adria/sell/panel.json index 37c7bf40..567a5575 100755 --- a/gamefiles/towners/adria/sell/panel.json +++ b/gamefiles/towners/adria/sell/panel.json @@ -110,7 +110,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -165,7 +165,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/cain/identify/confirm2.json b/gamefiles/towners/cain/identify/confirm2.json index 66f63c3b..99d5ba54 100755 --- a/gamefiles/towners/cain/identify/confirm2.json +++ b/gamefiles/towners/cain/identify/confirm2.json @@ -139,7 +139,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magic|", + "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/cain/identify/item.json b/gamefiles/towners/cain/identify/item.json index 48a5a379..d786771c 100755 --- a/gamefiles/towners/cain/identify/item.json +++ b/gamefiles/towners/cain/identify/item.json @@ -101,7 +101,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magic|", + "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/cain/identify/listItems.json b/gamefiles/towners/cain/identify/listItems.json index 29197a39..bc364330 100755 --- a/gamefiles/towners/cain/identify/listItems.json +++ b/gamefiles/towners/cain/identify/listItems.json @@ -89,7 +89,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.body.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -135,7 +135,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -181,7 +181,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/cain/identify/panel.json b/gamefiles/towners/cain/identify/panel.json index d2e6a99f..1cd6de54 100755 --- a/gamefiles/towners/cain/identify/panel.json +++ b/gamefiles/towners/cain/identify/panel.json @@ -114,7 +114,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.body.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -173,7 +173,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -232,7 +232,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/buy/confirm.json b/gamefiles/towners/griswold/buy/confirm.json index b6b86f42..44fa63fa 100755 --- a/gamefiles/towners/griswold/buy/confirm.json +++ b/gamefiles/towners/griswold/buy/confirm.json @@ -3,7 +3,7 @@ "name": "if.equal", "param1": { "name": "player.hasFreeItemSlot", - "item": { "playerId": "griswold", "inventory": {1}, "item": {2} } + "item": { "player": "griswold", "inventory": {1}, "item": {2} } }, "param2": true, "then": { diff --git a/gamefiles/towners/griswold/buy/confirm2.json b/gamefiles/towners/griswold/buy/confirm2.json index 13a8f210..881e5a84 100755 --- a/gamefiles/towners/griswold/buy/confirm2.json +++ b/gamefiles/towners/griswold/buy/confirm2.json @@ -79,7 +79,7 @@ }, { "name": "item.trade", - "item": { "playerId": "griswold", "inventory": {1}, "item": {2} }, + "item": { "player": "griswold", "inventory": {1}, "item": {2} }, "position": "BottomLeft", "onInventoryFull": "inventoryFull" }, @@ -131,7 +131,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "griswold", "inventory": {1}, "item": {2} } + "item": { "player": "griswold", "inventory": {1}, "item": {2} } }, "param2": false, "then": [ @@ -148,7 +148,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.griswold.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/griswold/buy/listItems.json b/gamefiles/towners/griswold/buy/listItems.json index 103d24f7..04ffea45 100755 --- a/gamefiles/towners/griswold/buy/listItems.json +++ b/gamefiles/towners/griswold/buy/listItems.json @@ -66,7 +66,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "griswold", "inventory": 0, "item": "%idx%" } + "item": { "player": "griswold", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -87,7 +87,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.0.%idx%.magic|", + "param1": "|currentLevel|player.griswold.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/buy/panel.json b/gamefiles/towners/griswold/buy/panel.json index 042c0367..9208183c 100755 --- a/gamefiles/towners/griswold/buy/panel.json +++ b/gamefiles/towners/griswold/buy/panel.json @@ -87,7 +87,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "griswold", "inventory": 0, "item": "%idx%" } + "item": { "player": "griswold", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -108,7 +108,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.0.%idx%.magic|", + "param1": "|currentLevel|player.griswold.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/buyPremium/confirm.json b/gamefiles/towners/griswold/buyPremium/confirm.json index 940f7f2e..05986f88 100755 --- a/gamefiles/towners/griswold/buyPremium/confirm.json +++ b/gamefiles/towners/griswold/buyPremium/confirm.json @@ -3,7 +3,7 @@ "name": "if.equal", "param1": { "name": "player.hasFreeItemSlot", - "item": { "playerId": "griswold", "inventory": {1}, "item": {2} } + "item": { "player": "griswold", "inventory": {1}, "item": {2} } }, "param2": true, "then": { diff --git a/gamefiles/towners/griswold/buyPremium/confirm2.json b/gamefiles/towners/griswold/buyPremium/confirm2.json index 184734bb..cde05f1e 100755 --- a/gamefiles/towners/griswold/buyPremium/confirm2.json +++ b/gamefiles/towners/griswold/buyPremium/confirm2.json @@ -79,7 +79,7 @@ }, { "name": "item.trade", - "item": { "playerId": "griswold", "inventory": {1}, "item": {2} }, + "item": { "player": "griswold", "inventory": {1}, "item": {2} }, "position": "BottomLeft", "onInventoryFull": "inventoryFull" }, @@ -131,7 +131,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "griswold", "inventory": {1}, "item": {2} } + "item": { "player": "griswold", "inventory": {1}, "item": {2} } }, "param2": false, "then": [ @@ -148,7 +148,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.griswold.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/griswold/buyPremium/listItems.json b/gamefiles/towners/griswold/buyPremium/listItems.json index 397ab4bf..1d06cd96 100755 --- a/gamefiles/towners/griswold/buyPremium/listItems.json +++ b/gamefiles/towners/griswold/buyPremium/listItems.json @@ -66,7 +66,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "griswold", "inventory": 1, "item": "%idx%" } + "item": { "player": "griswold", "inventory": 1, "item": "%idx%" } }, "param2": false, "then": { @@ -87,7 +87,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.1.%idx%.magic|", + "param1": "|currentLevel|player.griswold.item.1.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/buyPremium/panel.json b/gamefiles/towners/griswold/buyPremium/panel.json index e37f50c9..4eafedda 100755 --- a/gamefiles/towners/griswold/buyPremium/panel.json +++ b/gamefiles/towners/griswold/buyPremium/panel.json @@ -87,7 +87,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "griswold", "inventory": 1, "item": "%idx%" } + "item": { "player": "griswold", "inventory": 1, "item": "%idx%" } }, "param2": false, "then": { @@ -108,7 +108,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.1.%idx%.magic|", + "param1": "|currentLevel|player.griswold.item.1.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/repair/confirm2.json b/gamefiles/towners/griswold/repair/confirm2.json index 07eb3dd9..d71e6eb5 100755 --- a/gamefiles/towners/griswold/repair/confirm2.json +++ b/gamefiles/towners/griswold/repair/confirm2.json @@ -145,7 +145,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.griswold.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.griswold.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/griswold/repair/listItems.json b/gamefiles/towners/griswold/repair/listItems.json index 815f038e..9d4acaf9 100755 --- a/gamefiles/towners/griswold/repair/listItems.json +++ b/gamefiles/towners/griswold/repair/listItems.json @@ -89,7 +89,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.body.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -135,7 +135,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -181,7 +181,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/repair/panel.json b/gamefiles/towners/griswold/repair/panel.json index 14755b22..42e9950b 100755 --- a/gamefiles/towners/griswold/repair/panel.json +++ b/gamefiles/towners/griswold/repair/panel.json @@ -114,7 +114,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.body.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.body.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -173,7 +173,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.belt.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", @@ -232,7 +232,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/sell/confirm.json b/gamefiles/towners/griswold/sell/confirm.json index 2a4a9a22..6eb8e97b 100755 --- a/gamefiles/towners/griswold/sell/confirm.json +++ b/gamefiles/towners/griswold/sell/confirm.json @@ -2,7 +2,7 @@ "action": { "name": ">=", "param1": { "name": "player.getMaxGoldCapacity" }, - "param2": "|currentLevel|currentPlayer.item.{1}.{2}.price|", + "param2": "|currentLevel|currentPlayer.item.{1}.{2}.prices.0|", "then": { "name": "load", "file": [ "towners/griswold/sell/confirm2.json", "{1}", "{2}" ] diff --git a/gamefiles/towners/griswold/sell/confirm2.json b/gamefiles/towners/griswold/sell/confirm2.json index 9d961dfd..498e901d 100755 --- a/gamefiles/towners/griswold/sell/confirm2.json +++ b/gamefiles/towners/griswold/sell/confirm2.json @@ -73,7 +73,7 @@ "horizontalSpaceOffset": 1, "text": "Yes", "onClick": [ - { "name": "player.addGold", "gold": "|currentLevel|currentPlayer.item.{1}.{2}.price|" }, + { "name": "player.addGold", "gold": "|currentLevel|currentPlayer.item.{1}.{2}.prices.0|" }, { "name": "item.delete", "inventory": "{1}", "item": {2} }, { "name": "resource.popAll", "id": "userPanelSell" }, { "name": "load", "file": "towners/griswold/sell/panel.json" } @@ -115,7 +115,7 @@ "name": "text.setTextFromQuery", "id": "itemPrice", "query": "currentLevel.currentPlayer.item.{1}.{2}", - "text": "%price%" + "text": "%prices.0%" }, { "replaceVars": true, @@ -136,7 +136,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magic|", + "param1": "|currentLevel|currentPlayer.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/griswold/sell/listItems.json b/gamefiles/towners/griswold/sell/listItems.json index dbe9aca7..7a0782e0 100755 --- a/gamefiles/towners/griswold/sell/listItems.json +++ b/gamefiles/towners/griswold/sell/listItems.json @@ -65,7 +65,7 @@ "property": "itemType", "value": ["Amulet", "Armor", "Axe", "Bow", "Club", "Helmet", "Ring", "Shield", "Sword"] }, - "text": "%price%", + "text": "%prices.0%", "executeAction": { "name": "if.equal", "param1": "|currentLevel|currentPlayer.canEquipItem.stash.%idx%|", @@ -88,7 +88,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/griswold/sell/panel.json b/gamefiles/towners/griswold/sell/panel.json index 104563aa..8d691cdd 100755 --- a/gamefiles/towners/griswold/sell/panel.json +++ b/gamefiles/towners/griswold/sell/panel.json @@ -109,7 +109,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magic|", + "param1": "|currentLevel|currentPlayer.item.stash.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/pepin/buy/confirm.json b/gamefiles/towners/pepin/buy/confirm.json index e775a153..721f29cd 100755 --- a/gamefiles/towners/pepin/buy/confirm.json +++ b/gamefiles/towners/pepin/buy/confirm.json @@ -3,7 +3,7 @@ "name": "if.equal", "param1": { "name": "player.hasFreeItemSlot", - "item": { "playerId": "pepin", "inventory": {1}, "item": {2} } + "item": { "player": "pepin", "inventory": {1}, "item": {2} } }, "param2": true, "then": { diff --git a/gamefiles/towners/pepin/buy/confirm2.json b/gamefiles/towners/pepin/buy/confirm2.json index 3d2e996d..63f81821 100755 --- a/gamefiles/towners/pepin/buy/confirm2.json +++ b/gamefiles/towners/pepin/buy/confirm2.json @@ -79,7 +79,7 @@ }, { "name": "item.trade", - "item": { "playerId": "pepin", "inventory": {1}, "item": {2} }, + "item": { "player": "pepin", "inventory": {1}, "item": {2} }, "position": "BottomLeft", "onInventoryFull": "inventoryFull" }, @@ -131,7 +131,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "pepin", "inventory": {1}, "item": {2} } + "item": { "player": "pepin", "inventory": {1}, "item": {2} } }, "param2": false, "then": [ @@ -148,7 +148,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.pepin.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.pepin.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/pepin/buy/listItems.json b/gamefiles/towners/pepin/buy/listItems.json index 8ab4ca9a..8e48e7ef 100755 --- a/gamefiles/towners/pepin/buy/listItems.json +++ b/gamefiles/towners/pepin/buy/listItems.json @@ -66,7 +66,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "pepin", "inventory": 0, "item": "%idx%" } + "item": { "player": "pepin", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -87,7 +87,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.pepin.item.0.%idx%.magic|", + "param1": "|currentLevel|player.pepin.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/pepin/buy/panel.json b/gamefiles/towners/pepin/buy/panel.json index a153117c..a220342f 100755 --- a/gamefiles/towners/pepin/buy/panel.json +++ b/gamefiles/towners/pepin/buy/panel.json @@ -87,7 +87,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "pepin", "inventory": 0, "item": "%idx%" } + "item": { "player": "pepin", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -108,7 +108,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.pepin.item.0.%idx%.magic|", + "param1": "|currentLevel|player.pepin.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/pepin/panelMain.json b/gamefiles/towners/pepin/panelMain.json index 3a23fa13..384e5a33 100755 --- a/gamefiles/towners/pepin/panelMain.json +++ b/gamefiles/towners/pepin/panelMain.json @@ -89,7 +89,7 @@ "text": "Receive Healing", "onClick": [ { "name": "sound.loadPlay", "file": "sfx/misc/cast8.wav" }, - { "name": "player.setProperty", "property": "lifeBase", "value": "|currentLevel|currentPlayer.lifeBase|" } + { "name": "player.setProperty", "property": "lifeDamage", "value": 0 } ], "onFocus": [ "anchorLeftPentagram", diff --git a/gamefiles/towners/wirt/buy/confirm.json b/gamefiles/towners/wirt/buy/confirm.json index ddd01c59..97ef1643 100755 --- a/gamefiles/towners/wirt/buy/confirm.json +++ b/gamefiles/towners/wirt/buy/confirm.json @@ -3,7 +3,7 @@ "name": "if.equal", "param1": { "name": "player.hasFreeItemSlot", - "item": { "playerId": "wirt", "inventory": {1}, "item": {2} } + "item": { "player": "wirt", "inventory": {1}, "item": {2} } }, "param2": true, "then": { diff --git a/gamefiles/towners/wirt/buy/confirm2.json b/gamefiles/towners/wirt/buy/confirm2.json index 1f316955..9a0ca57c 100755 --- a/gamefiles/towners/wirt/buy/confirm2.json +++ b/gamefiles/towners/wirt/buy/confirm2.json @@ -69,7 +69,7 @@ }, { "name": "item.trade", - "item": { "playerId": "wirt", "inventory": {1}, "item": {2} }, + "item": { "player": "wirt", "inventory": {1}, "item": {2} }, "position": "BottomLeft", "onInventoryFull": "inventoryFull" }, @@ -120,7 +120,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "wirt", "inventory": {1}, "item": {2} } + "item": { "player": "wirt", "inventory": {1}, "item": {2} } }, "param2": false, "then": [ @@ -137,7 +137,7 @@ ], "else": { "name": "if.equal", - "param1": "|currentLevel|player.wirt.item.{1}.{2}.magic|", + "param1": "|currentLevel|player.wirt.item.{1}.{2}.magical|", "param2": 1, "then": [ { "name": "text.setColor", "id": "itemInfo", "color": "%textBlue%" }, diff --git a/gamefiles/towners/wirt/buy/listItems.json b/gamefiles/towners/wirt/buy/listItems.json index d608f89d..a9a7565b 100755 --- a/gamefiles/towners/wirt/buy/listItems.json +++ b/gamefiles/towners/wirt/buy/listItems.json @@ -45,7 +45,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "wirt", "inventory": 0, "item": "%idx%" } + "item": { "player": "wirt", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -66,7 +66,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.wirt.item.0.%idx%.magic|", + "param1": "|currentLevel|player.wirt.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/towners/wirt/buy/panel.json b/gamefiles/towners/wirt/buy/panel.json index fd73982f..4d59da00 100755 --- a/gamefiles/towners/wirt/buy/panel.json +++ b/gamefiles/towners/wirt/buy/panel.json @@ -41,7 +41,7 @@ "name": "if.equal", "param1": { "name": "player.canEquipItem", - "item": { "playerId": "wirt", "inventory": 0, "item": "%idx%" } + "item": { "player": "wirt", "inventory": 0, "item": "%idx%" } }, "param2": false, "then": { @@ -62,7 +62,7 @@ }, "else": { "name": "if.equal", - "param1": "|currentLevel|player.wirt.item.0.%idx%.magic|", + "param1": "|currentLevel|player.wirt.item.0.%idx%.magical|", "param2": 1, "then": { "name": "menu.setColor", diff --git a/gamefiles/ui/level/char/panel.json b/gamefiles/ui/level/char/panel.json index 0bb8ccd2..83a7422b 100755 --- a/gamefiles/ui/level/char/panel.json +++ b/gamefiles/ui/level/char/panel.json @@ -131,7 +131,8 @@ { "name": "resource.pop", "id": "charPanelQuests" }, { "name": "load", "file": "ui/level/char/panelLabels.json" }, { "name": "drawable.visible", "id": "charPanel", "visible": true }, - { "name": "drawable.visible", "id": "questPanel", "visible": false } + { "name": "drawable.visible", "id": "questPanel", "visible": false }, + "hideItemInfo" ], "else": [ { "name": "resource.pop", "id": "charPanelLabels" }, @@ -356,6 +357,50 @@ { "key": "tab", "action": { "name": "button.click", "id": "map" } + }, + { + "key": "f1", + "action": [ + { "name": "player.addGold", "gold": -4000 }, + "updateInventoryStash", + "updateCharLabels" + ] + }, + { + "key": "f2", + "action": [ + { "name": "player.addGold", "gold": 4000 }, + "updateInventoryStash", + "updateCharLabels" + ] + }, + { + "key": "f3", + "action": [ + { "name": "player.addToProperty", "property": "lifeDamage", "value": 10 }, + "updateCharLabels" + ] + }, + { + "key": "f4", + "action": [ + { "name": "player.addToProperty", "property": "lifeDamage", "value": -10 }, + "updateCharLabels" + ] + }, + { + "key": "f5", + "action": [ + { "name": "player.addToProperty", "property": "manaDamage", "value": 10 }, + "updateCharLabels" + ] + }, + { + "key": "f6", + "action": [ + { "name": "player.addToProperty", "property": "manaDamage", "value": -10 }, + "updateCharLabels" + ] } ], "load": "ui/level/char/beltInventory.json" diff --git a/gamefiles/ui/level/char/panelInventory.json b/gamefiles/ui/level/char/panelInventory.json index 5f5e71a0..8a2b8a2d 100755 --- a/gamefiles/ui/level/char/panelInventory.json +++ b/gamefiles/ui/level/char/panelInventory.json @@ -804,13 +804,7 @@ } ], "action": [ - "updateInventoryLeftHand", - "updateInventoryRightHand", - "updateInventoryArmor", - "updateInventoryHelmet", - "updateInventoryAmulet", - "updateInventoryLeftRing", - "updateInventoryRightRing", + "updateBodyItems", "updateInventoryStash" ] } \ No newline at end of file diff --git a/gamefiles/ui/level/char/panelLabels.json b/gamefiles/ui/level/char/panelLabels.json index 35ea7bd8..9966320e 100755 --- a/gamefiles/ui/level/char/panelLabels.json +++ b/gamefiles/ui/level/char/panelLabels.json @@ -4,233 +4,222 @@ { "id": "charName", "bitmapFont": "smaltext", - "position": [84, 20], + "position": [86, 22], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.name|" + "horizontalSpaceOffset": 1 }, { "id": "charClass", "bitmapFont": "smaltext", - "position": [236, 20], + "position": [234, 22], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.class|" + "horizontalSpaceOffset": 1 }, { "id": "charLevel", "bitmapFont": "smaltext", - "position": [85, 56], + "position": [88, 59], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.level|" + "horizontalSpaceOffset": 1 }, { "id": "charExp", "bitmapFont": "smaltext", - "position": [256, 56], + "position": [258, 59], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.experience|" + "horizontalSpaceOffset": 1 }, { "id": "charExpNext", "bitmapFont": "smaltext", - "position": [256, 84], + "position": [258, 87], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.expNextLevel|" + "horizontalSpaceOffset": 1 }, { "id": "charGold", "bitmapFont": "smaltext", - "position": [256, 134], + "position": [258, 136], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.gold|" + "horizontalSpaceOffset": 1 }, { - "id": "charStrBase", + "id": "charStr", "bitmapFont": "smaltext", - "position": [108, 144], + "position": [110, 145], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.strengthBase|" + "onChange": "updateCharStrengthColor" }, { - "id": "charStr", + "id": "charStrNow", "bitmapFont": "smaltext", - "position": [156, 144], + "position": [158, 145], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.strengthNow|" + "onChange": "updateCharStrengthNowColor" }, { - "id": "charMagBase", + "id": "charMag", "bitmapFont": "smaltext", - "position": [108, 172], + "position": [111, 173], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.magicBase|" + "onChange": "updateCharMagicColor" }, { - "id": "charMag", + "id": "charMagNow", "bitmapFont": "smaltext", - "position": [156, 172], + "position": [158, 173], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.magicNow|" + "onChange": "updateCharMagicNowColor" }, { - "id": "charDexBase", + "id": "charDex", "bitmapFont": "smaltext", - "position": [108, 200], + "position": [110, 201], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.dexterityBase|" + "onChange": "updateCharDexterityColor" }, { - "id": "charDex", + "id": "charDexNow", "bitmapFont": "smaltext", - "position": [156, 200], + "position": [158, 201], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.dexterityNow|" + "onChange": "updateCharDexterityNowColor" }, { - "id": "charVitBase", + "id": "charVit", "bitmapFont": "smaltext", - "position": [108, 228], + "position": [110, 229], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.vitalityBase|" + "onChange": "updateCharVitalityColor" }, { - "id": "charVit", + "id": "charVitNow", "bitmapFont": "smaltext", - "position": [156, 228], + "position": [158, 229], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.vitalityNow|" + "onChange": "updateCharVitalityNowColor" }, { "id": "charPoints", + "replaceVars": true, "bitmapFont": "smaltext", - "position": [108, 256], + "color": "%textRed%", + "position": [111, 256], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.points|", - "format": "" + "horizontalSpaceOffset": 1 }, { - "id": "charLifeBase", + "id": "charLife", "bitmapFont": "smaltext", - "position": [108, 292], + "position": [110, 294], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.lifeBase|" + "onChange": "updateCharLifeColor" }, { - "id": "charLife", + "id": "charLifeNow", "bitmapFont": "smaltext", - "position": [156, 292], + "position": [158, 294], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.lifeNow|" + "onChange": "updateCharLifeNowColor" }, { - "id": "charManaBase", + "id": "charMana", "bitmapFont": "smaltext", - "position": [108, 320], + "position": [111, 322], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.manaBase|" + "onChange": "updateCharManaColor" }, { - "id": "charMana", + "id": "charManaNow", "bitmapFont": "smaltext", - "position": [156, 320], + "position": [159, 322], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.manaNow|" + "onChange": "updateCharManaNowColor" }, { "id": "charArmor", "bitmapFont": "smaltext", - "position": [278, 172], + "position": [280, 173], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.armorClass|" + "onChange": "updateCharArmorColor" }, { "id": "charToHit", "bitmapFont": "smaltext", - "position": [278, 200], + "position": [279, 201], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.toHit|", - "format": "[1]%" + "onChange": "updateCharToHitColor" }, { "id": "charDamage", "bitmapFont": "smaltext", - "position": [278, 228], + "position": [280, 229], "anchor": "left", "horizontalAlign": "center", - "horizontalSpaceOffset": 1, - "binding": ["|currentLevel|currentPlayer.damageMin|", "|currentLevel|currentPlayer.damageMax|"], - "format": "[1]-[2]" + "onChange": "updateCharDamageColor" }, { "id": "charResMagic", "bitmapFont": "smaltext", - "position": [278, 266], + "position": [279, 266], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.resistMagic|", - "format": "[1]%" + "onChange": "updateCharResistMagicColor" }, { "id": "charResFire", "bitmapFont": "smaltext", - "position": [278, 292], + "position": [279, 294], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.resistFire|", - "format": "[1]%" + "onChange": "updateCharResistFireColor" }, { "id": "charResLight", "bitmapFont": "smaltext", - "position": [278, 320], + "position": [279, 322], "anchor": "left", "horizontalAlign": "center", "horizontalSpaceOffset": 1, - "binding": "|currentLevel|currentPlayer.resistLightning|", - "format": "[1]%" + "onChange": "updateCharResistLightningColor" } - ] + ], + "action": "updateCharLabels" } \ No newline at end of file diff --git a/gamefiles/ui/level/char/panelQuests.json b/gamefiles/ui/level/char/panelQuests.json index de74a7b1..56e5b152 100755 --- a/gamefiles/ui/level/char/panelQuests.json +++ b/gamefiles/ui/level/char/panelQuests.json @@ -29,10 +29,6 @@ { "key": ["down", "s", "tab"], "action": "focus.moveDown" - }, - { - "key": "esc", - "action": { "name": "button.click", "id": "closeQuestLog" } } ], "animation": [ diff --git a/gamefiles/ui/level/menu/game.json b/gamefiles/ui/level/menu/game.json index 51e4d834..c88bf53e 100755 --- a/gamefiles/ui/level/menu/game.json +++ b/gamefiles/ui/level/menu/game.json @@ -1,5 +1,8 @@ { - "action": { "name": "resource.add", "id": "gameMenu" }, + "action": [ + "closeMsgBox", + { "name": "resource.add", "id": "gameMenu" } + ], "button": [ { "id": "saveGame", diff --git a/gamefiles/ui/level/msgBox/show2.json b/gamefiles/ui/level/msgBox/show2.json index 3c0ec692..35f20ba1 100755 --- a/gamefiles/ui/level/msgBox/show2.json +++ b/gamefiles/ui/level/msgBox/show2.json @@ -1,11 +1,18 @@ { - "action": { "name": "resource.add", "id": "msgBox" }, + "action": [ + { "name": "resource.add", "id": "msgBox" }, + { + "name": "action.set", + "id": "closeMsgBox", + "action": [ + { "name": "resource.pop", "id": "msgBox" }, + { "name": "event.delete", "id": "closeMsgBox" } + ] + } + ], "keyboard": { "key": "esc", - "action": [ - { "name": "resource.pop", "id": "msgBox" }, - { "name": "event.delete", "id": "closeMsgBox" } - ] + "action": "closeMsgBox" }, "image": [ { diff --git a/src/Actions/ActButton.h b/src/Actions/ActButton.h index f33bebf1..6fcd0813 100755 --- a/src/Actions/ActButton.h +++ b/src/Actions/ActButton.h @@ -134,7 +134,7 @@ class ActButtonSetText : public Action { if (bindings.empty() == true) { - button->setText(game.getVariableString(textFormat)); + button->setText(game.getVarOrPropString(textFormat)); } else { diff --git a/src/Actions/ActCondition.h b/src/Actions/ActCondition.h index 1fc5bd77..425bfd7a 100755 --- a/src/Actions/ActCondition.h +++ b/src/Actions/ActCondition.h @@ -8,35 +8,20 @@ #include "Utils.h" #include "VarOrPredicate.h" -static Variable getVariable(Game& game, const Predicate* predicate) -{ - if (predicate != nullptr) - { - return predicate->getResult(game); - } - return {}; -} - -static Variable getVariable(Game& game, const Variable& var) -{ - if (var.is() == true) - { - Variable var2(var); - game.getVarOrProp(var.get(), var2); - return var2; - } - return var; -} - static Variable getVariable(Game& game, const VarOrPredicate& varOrPred) { if (varOrPred.is() == true) { - return getVariable(game, varOrPred.get()); + return game.getVarOrProp(varOrPred.get()); } else { - return getVariable(game, varOrPred.get>().get()); + auto predicate = varOrPred.get>().get(); + if (predicate != nullptr) + { + return predicate->getResult(game); + } + return {}; } } diff --git a/src/Actions/ActGame.h b/src/Actions/ActGame.h index a466b0cd..d7f95910 100755 --- a/src/Actions/ActGame.h +++ b/src/Actions/ActGame.h @@ -96,66 +96,57 @@ class ActGameSetProperty : public Action virtual bool execute(Game& game) { - Variable prop2(prop); - game.getVarOrProp(prop, prop2); - if (prop2.is() == true) + auto prop2 = game.getVarOrPropString(prop); + auto value2 = game.getVarOrProp(value); + if (value2.is() == true) { - const auto& propVal = prop2.get(); - auto value2 = value; - if (value2.is() == true) + if (hasPropRange == false && hasValueRange == false) { - game.getVarOrProp(value2.get(), value2); + game.setProperty(prop2, value2); } - if (value2.is() == true) + else { - if (hasPropRange == false && hasValueRange == false) - { - game.setProperty(propVal, value2); - } - else + auto val = (long)value2.get(); + if (hasValueRange == true) { - auto val = (long)value2.get(); - if (hasValueRange == true) + if (val < (long)valueRange.x) { - if (val < (long)valueRange.x) - { - val = (long)valueRange.x; - } - else if (val > (long)valueRange.y) - { - val = (long)valueRange.y; - } + val = (long)valueRange.x; } - else if (hasPropRange == true) + else if (val > (long)valueRange.y) + { + val = (long)valueRange.y; + } + } + else if (hasPropRange == true) + { + if (val < (long)propRange.x) { - if (val < (long)propRange.x) - { - val = (long)propRange.x; - } - else if (val >(long)propRange.y) - { - val = (long)propRange.y; - } + val = (long)propRange.x; } - if (hasPropRange == true) + else if (val >(long)propRange.y) { - auto x = valueRange.x; - auto y = valueRange.y; - auto valueDiff = x > y ? x - y : y - x; - x = propRange.x; - y = propRange.y; - auto PropDiff = x > y ? x - y : y - x; - - val -= valueRange.x; - val = std::lround(val * PropDiff / (double)valueDiff) + propRange.x; + val = (long)propRange.y; } - game.setProperty(propVal, Variable((int64_t)val)); } + if (hasPropRange == true) + { + auto x = valueRange.x; + auto y = valueRange.y; + auto valueDiff = x > y ? x - y : y - x; + x = propRange.x; + y = propRange.y; + auto PropDiff = x > y ? x - y : y - x; + + val -= valueRange.x; + val = std::lround(val * PropDiff / (double)valueDiff) + propRange.x; + } + game.setProperty(prop2, Variable((int64_t)val)); } - else - { - game.setProperty(propVal, value2); - } + } + else + { + game.setProperty(prop2, value2); } return true; } diff --git a/src/Actions/ActIO.h b/src/Actions/ActIO.h index 6e887015..899f14d5 100755 --- a/src/Actions/ActIO.h +++ b/src/Actions/ActIO.h @@ -14,7 +14,7 @@ class ActDirCreate : public Action virtual bool execute(Game& game) { - FileUtils::createDir(game.getVariableString(dir).c_str()); + FileUtils::createDir(game.getVarOrPropString(dir).c_str()); return true; } }; @@ -37,7 +37,7 @@ class ActFileCopy : public Action if (filesRead.size() > 0) { const auto& fileRead = filesRead[0]; - auto str = FileUtils::readText(game.getVariableString(fileRead).c_str()); + auto str = FileUtils::readText(game.getVarOrPropString(fileRead).c_str()); std::string param; Variable var2; @@ -79,7 +79,7 @@ class ActFileCopy : public Action Utils::replaceStringInPlace(str, "{" + std::to_string(i) + "}", param); } - auto writePath = game.getVariableString(dir); + auto writePath = game.getVarOrPropString(dir); if (writePath.size() > 0 && Utils::endsWith(writePath, "/") == false) { writePath += '/'; @@ -87,11 +87,11 @@ class ActFileCopy : public Action } if (fileWrite.size() > 0) { - writePath += game.getVariableString(fileWrite); + writePath += game.getVarOrPropString(fileWrite); } else { - writePath += game.getVariableString(FileUtils::getFileFromPath(fileRead)); + writePath += game.getVarOrPropString(FileUtils::getFileFromPath(fileRead)); } FileUtils::saveText(writePath.c_str(), str); } @@ -109,7 +109,7 @@ class ActIODelete : public Action virtual bool execute(Game& game) { - FileUtils::deleteFile(game.getVariableString(dir).c_str()); + FileUtils::deleteFile(game.getVarOrPropString(dir).c_str()); return true; } }; @@ -124,7 +124,7 @@ class ActIODeleteAll : public Action virtual bool execute(Game& game) { - FileUtils::deleteAll(game.getVariableString(dir).c_str()); + FileUtils::deleteAll(game.getVarOrPropString(dir).c_str()); return true; } }; diff --git a/src/Actions/ActItem.h b/src/Actions/ActItem.h index bad2dd08..075e15a0 100755 --- a/src/Actions/ActItem.h +++ b/src/Actions/ActItem.h @@ -175,22 +175,22 @@ class ActItemLoadFromLevel : public Action level->setItem(mapPos, nullptr); level->setItem(itemCoord, item); } - else if (itemCoord.getInventoryIdx() < player->getInventorySize()) + else { - auto& inventory = player->getInventory(itemCoord.getInventoryIdx()); - size_t itemIdx = 0; - if (inventory.getItemSlot(*item, itemIdx, invPos) == true) + size_t invIdx = itemCoord.getInventoryIdx(); + if (invIdx < player->getInventorySize()) { - level->setItem(mapPos, nullptr); - inventory.set(itemIdx, item); - player->updateGoldAdd(item); - executePickFromLevelAction(game, *item); - } - else - { - if (inventoryFullAction != nullptr) + if (player->setItemInFreeSlot(invIdx, item, invPos) == true) { - game.Events().addBack(inventoryFullAction); + level->setItem(mapPos, nullptr); + executePickFromLevelAction(game, *item); + } + else + { + if (inventoryFullAction != nullptr) + { + game.Events().addBack(inventoryFullAction); + } } } } @@ -250,17 +250,11 @@ class ActItemSetProperty : public Action auto item = level->getItem(itemLocation); if (item != nullptr) { - Variable prop2(prop); - game.getVarOrProp(prop, prop2); - if (prop2.is() == true) + auto prop2 = game.getVarOrPropString(prop); + if (prop2.empty() == false) { - const auto& propVal = prop2.get(); - auto value2 = value; - if (value2.is() == true) - { - game.getVarOrProp(value2.get(), value2); - } - item->setProperty(propVal, value2); + auto value2 = game.getVarOrProp(value); + item->setProperty(prop2, value2); } } } @@ -359,10 +353,8 @@ class ActItemUpdate : public Action if (selectedItem != nullptr) { std::shared_ptr oldItem; - if (inventory.set(itemIdx, selectedItem, oldItem) == true) + if (player->setItem(invIdx, itemIdx, selectedItem, oldItem) == true) { - player->updateGoldAdd(selectedItem); - player->updateGoldRemove(oldItem); player->SelectedItem(oldItem); if (game.Resources().cursorCount() > 1) { @@ -389,8 +381,7 @@ class ActItemUpdate : public Action auto oldItem = inventory.get(itemIdx); if (oldItem != nullptr) { - inventory.set(itemIdx, nullptr); - player->updateGoldRemove(oldItem); + player->setItem(invIdx, itemIdx, nullptr); player->SelectedItem(oldItem); updateCursorWithItemImage(game, *oldItem, player->canEquipItem(*oldItem)); diff --git a/src/Actions/ActMenu.h b/src/Actions/ActMenu.h index a7d59d1e..8eaa805b 100755 --- a/src/Actions/ActMenu.h +++ b/src/Actions/ActMenu.h @@ -199,22 +199,7 @@ class ActMenuSetIndex : public Action auto menu = game.Resources().getResource(id); if (menu != nullptr) { - size_t idx = 0; - if (idxVar.is() == true) - { - idx = (size_t)idxVar.get(); - } - else if (idxVar.is() == true) - { - Variable var; - if (game.getVarOrProp(idxVar.get(), var) == true) - { - if (var.is() == true) - { - idx = (size_t)var.get(); - } - } - } + auto idx = (size_t)game.getVarOrPropLong(idxVar); menu->setCurrentIdx(idx); } return true; @@ -240,7 +225,7 @@ class ActMenuSetText : public Action auto button = menu->getItem(idx); if (button != nullptr) { - button->setText(game.getVariableString(text)); + button->setText(game.getVarOrPropString(text)); } } return true; diff --git a/src/Actions/ActPlayer.h b/src/Actions/ActPlayer.h index 7fdf3966..12f210bb 100755 --- a/src/Actions/ActPlayer.h +++ b/src/Actions/ActPlayer.h @@ -27,22 +27,7 @@ class ActPlayerAddGold : public Action auto player = level->getPlayerOrCurrent(idPlayer); if (player != nullptr) { - LevelObjValue goldVal = 0; - if (gold.is() == true) - { - Variable prop2; - if (game.getVarOrProp(gold.get(), prop2) == true) - { - if (prop2.is() == true) - { - goldVal = (LevelObjValue)prop2.get(); - } - } - } - else if (gold.is() == true) - { - goldVal = (LevelObjValue)gold.get(); - } + auto goldVal = (LevelObjValue)game.getVarOrPropLong(gold); if (goldVal != 0) { if (remove == true) @@ -60,6 +45,52 @@ class ActPlayerAddGold : public Action } }; +class ActPlayerAddToProperty : public Action +{ +private: + std::string idPlayer; + std::string idLevel; + std::string prop; + Variable value; + bool remove; + +public: + ActPlayerAddToProperty(const std::string& idPlayer_, const std::string& idLevel_, + const std::string& prop_, const Variable& value_, bool remove_) : idPlayer(idPlayer_), + idLevel(idLevel_), prop(prop_), value(value_), remove(remove_) {} + + virtual bool execute(Game& game) + { + auto level = game.Resources().getLevel(idLevel); + if (level != nullptr) + { + auto player = level->getPlayerOrCurrent(idPlayer); + if (player != nullptr) + { + auto propVal = game.getVarOrPropString(prop); + if (propVal.empty() == false) + { + LevelObjValue currVal; + if (player->getInt(propVal, currVal) == true) + { + auto addToVal = game.getVarOrPropLong(value); + if (remove == true) + { + currVal -= addToVal; + } + else + { + currVal += addToVal; + } + player->setInt(propVal, currVal); + } + } + } + } + return true; + } +}; + class ActPlayerMove : public Action { private: @@ -82,8 +113,7 @@ class ActPlayerMove : public Action auto player = level->getPlayerOrCurrent(idPlayer); if (player != nullptr) { - player->clearWalkPath(); - player->MapPosition(*level, position); + player->move(*level, position); if (resetDirection == true) { player->setDirection(PlayerDirection::Front); @@ -205,17 +235,11 @@ class ActPlayerSetProperty : public Action auto player = level->getPlayerOrCurrent(idPlayer); if (player != nullptr) { - Variable prop2(prop); - game.getVarOrProp(prop, prop2); - if (prop2.is() == true) + auto prop2 = game.getVarOrPropString(prop); + if (prop2.empty() == false) { - const auto& propVal = prop2.get(); - auto value2 = value; - if (value2.is() == true) - { - game.getVarOrProp(value2.get(), value2); - } - player->setProperty(propVal, value2); + auto value2 = game.getVarOrProp(value); + player->setProperty(prop2, value2); } } } @@ -223,16 +247,16 @@ class ActPlayerSetProperty : public Action } }; -class ActPlayerSetSpeed : public Action +class ActPlayerSetRestStatus : public Action { private: std::string idPlayer; std::string idLevel; - int speed; + uint8_t status; public: - ActPlayerSetSpeed(const std::string& idPlayer_, const std::string& idLevel_, - int speed_) : idPlayer(idPlayer_), idLevel(idLevel_), speed(speed_) {} + ActPlayerSetRestStatus(const std::string& idPlayer_, const std::string& idLevel_, + uint8_t status_) : idPlayer(idPlayer_), idLevel(idLevel_), status(status_) {} virtual bool execute(Game& game) { @@ -242,7 +266,8 @@ class ActPlayerSetSpeed : public Action auto player = level->getPlayerOrCurrent(idPlayer); if (player != nullptr) { - player->setWalkSpeed(speed); + player->setRestStatus(status); + player->updateTexture(); } } return true; diff --git a/src/Actions/ActText.h b/src/Actions/ActText.h index eb97a1ae..82b454bf 100755 --- a/src/Actions/ActText.h +++ b/src/Actions/ActText.h @@ -114,7 +114,7 @@ class ActTextSetText : public Action } if (bindings.empty() == true) { - text->setText(game.getVariableString(textFormat)); + text->setText(game.getVarOrPropString(textFormat)); } else { diff --git a/src/BitmapText.h b/src/BitmapText.h index 4a925f1b..927e5829 100755 --- a/src/BitmapText.h +++ b/src/BitmapText.h @@ -52,11 +52,16 @@ class BitmapText : public DrawableText } virtual void updateSize(const Game& game); - virtual void setText(const std::string& string) + virtual bool setText(const std::string& str) { - text = string; + if (text == str) + { + return false; + } + text = str; calcSize(); calcDrawPos(); + return true; } virtual unsigned getLineCount() const { return lineCount; } diff --git a/src/DrawableText.h b/src/DrawableText.h index f09d1ea7..006d3ce2 100755 --- a/src/DrawableText.h +++ b/src/DrawableText.h @@ -8,7 +8,7 @@ class DrawableText : public UIObject { public: virtual std::string getText() const = 0; - virtual void setText(const std::string& string) = 0; + virtual bool setText(const std::string& str) = 0; virtual sf::FloatRect getLocalBounds() const = 0; virtual sf::FloatRect getGlobalBounds() const = 0; virtual unsigned getLineCount() const = 0; diff --git a/src/Game.cpp b/src/Game.cpp index 6fc7de17..0fa867a4 100755 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -542,26 +542,6 @@ void Game::addPlayingSound(const sf::SoundBuffer* obj) } } -std::map::const_iterator Game::findVariable(const std::string& key) const -{ - if ((key.size() > 2) && - (key.front() == '%') && - (key.back() == '%')) - { - return variables.find(key.substr(1, key.size() - 2)); - } - return variables.end(); -} - -bool Game::getVarOrProp(const std::string& key, Variable& var) const -{ - if (getVariable(key, var) == true) - { - return true; - } - return GameUtils::getObjectProperty(*this, key, var); -} - bool Game::getVariableNoPercentage(const std::string& key, Variable& var) const { auto it = variables.find(key); @@ -584,133 +564,120 @@ bool Game::getVariable(const std::string& key, Variable& var) const return false; } -bool Game::getVariableBool(const std::string& key) const +std::map::const_iterator Game::findVariable(const std::string& key) const { - auto it = findVariable(key); - if (it == variables.cend()) - { - return false; - } - const auto& var = it->second; - if (var.is()) + if ((key.size() > 2) && + (key.front() == '%') && + (key.back() == '%')) { - return var.get(); + return variables.find(key.substr(1, key.size() - 2)); } - else if (var.is()) + return variables.end(); +} + +bool Game::getVarOrProp(const std::string& key, Variable& var) const +{ + if (getVariable(key, var) == true) { - return var.get() != 0; + return true; } - else if (var.is()) + return GameUtils::getObjectProperty(*this, key, var); +} + +Variable Game::getVarOrProp(const Variable& var) const +{ + if (var.is()) { - return var.get() != 0.0; + Variable var2; + if (getVarOrProp(var.get(), var2) == true) + { + return var2; + } } - else if (var.is()) + return var; +} + +bool Game::getVarOrPropBool(const std::string& key) const +{ + Variable var; + if (getVarOrProp(key, var) == true) { - return var.get().empty() == false; + return VarUtils::toBool(var); } return false; } -double Game::getVariableDouble(const std::string& key) const +bool Game::getVarOrPropBool(const Variable& var) const { - auto it = findVariable(key); - if (it == variables.cend()) - { - return false; - } - const auto& var = it->second; - if (var.is()) - { - return (double)var.get(); - } - else if (var.is()) + if (var.is()) { - return (long)var.get(); + return getVarOrPropBool(var.get()); } - else if (var.is()) - { - return (var.get() ? 1.0 : 0.0); - } - else if (var.is()) + return VarUtils::toBool(var); +} + +double Game::getVarOrPropDouble(const std::string& key) const +{ + Variable var; + if (getVarOrProp(key, var) == true) { - return std::atof(var.get().c_str()); + return VarUtils::toDouble(var); } return 0.0; } -int64_t Game::getVariableLong(const std::string& key) const +double Game::getVarOrPropDouble(const Variable& var) const { - auto it = findVariable(key); - if (it == variables.cend()) + if (var.is()) { - return false; + return getVarOrPropDouble(var.get()); } - const auto& var = it->second; - if (var.is()) + return VarUtils::toDouble(var); +} + +int64_t Game::getVarOrPropLong(const std::string& key) const +{ + Variable var; + if (getVarOrProp(key, var) == true) { - return var.get(); + return VarUtils::toLong(var); } - else if (var.is()) + return 0; +} + +int64_t Game::getVarOrPropLong(const Variable& var) const +{ + if (var.is()) { - return (long)var.get(); + return getVarOrPropLong(var.get()); } - else if (var.is()) + return VarUtils::toLong(var); +} + +std::string Game::getVarOrPropString(const std::string& key) const +{ + Variable var; + if (getVariable(key, var) == true) { - return (var.get() ? 1L : 0L); + if (var.is()) + { + GameUtils::getObjectProperty(*this, var.get(), var); + } } - else if (var.is()) + else if (GameUtils::getObjectProperty(*this, key, var) == false) { - return std::atol(var.get().c_str()); + return key; } - return 0L; + return VarUtils::toString(var); } -std::string Game::getVariableString(const std::string& key) const +std::string Game::getVarOrPropString(const Variable& var) const { - if (key.size() <= 2) + if (var.is()) { - return key; - } - else - { - if ((key.front() == '%') && (key.back() == '%')) - { - auto it = variables.find(key.substr(1, key.size() - 2)); - if (it != variables.end()) - { - const auto& var = it->second; - if (var.is()) - { - auto str = var.get(); - Variable var2(var); - GameUtils::getObjectProperty(*this, str, var2); - return VarUtils::toString(var2); - } - else if (var.is()) - { - return std::to_string(var.get()); - } - else if (var.is()) - { - return std::to_string(var.get()); - } - else if (var.is()) - { - if (var.get() == true) - { - return { "true" }; - } - else - { - return { "false" }; - } - } - } - } - Variable var2(key); - GameUtils::getObjectProperty(*this, key, var2); - return VarUtils::toString(var2); + return getVarOrPropString(var.get()); } + return VarUtils::toString(var); } void Game::clearVariable(const std::string& key) diff --git a/src/Game.h b/src/Game.h index a708b67d..f9c4d0bc 100755 --- a/src/Game.h +++ b/src/Game.h @@ -245,6 +245,9 @@ class Game : public sf::NonCopyable, public Queryable const std::map& getVariables() { return variables; } + bool getVariableNoPercentage(const std::string& key, Variable& var) const; + bool getVariable(const std::string& key, Variable& var) const; + template U getVarOrProp(const Variable& var, U defVal = U()) { @@ -267,13 +270,15 @@ class Game : public sf::NonCopyable, public Queryable } bool getVarOrProp(const std::string& key, Variable& var) const; - - bool getVariableNoPercentage(const std::string& key, Variable& var) const; - bool getVariable(const std::string& key, Variable& var) const; - bool getVariableBool(const std::string& key) const; - double getVariableDouble(const std::string& key) const; - int64_t getVariableLong(const std::string& key) const; - std::string getVariableString(const std::string& key) const; + Variable getVarOrProp(const Variable& var) const; + bool getVarOrPropBool(const std::string& key) const; + bool getVarOrPropBool(const Variable& var) const; + double getVarOrPropDouble(const std::string& key) const; + double getVarOrPropDouble(const Variable& var) const; + int64_t getVarOrPropLong(const std::string& key) const; + int64_t getVarOrPropLong(const Variable& var) const; + std::string getVarOrPropString(const std::string& key) const; + std::string getVarOrPropString(const Variable& var) const; void clearVariable(const std::string& key); diff --git a/src/Game/CelLevelObject.h b/src/Game/CelLevelObject.h index 0fef0f03..d664d7a4 100755 --- a/src/Game/CelLevelObject.h +++ b/src/Game/CelLevelObject.h @@ -45,6 +45,7 @@ class CelLevelObject : public LevelObject virtual void MapPosition(const MapCoord& pos) { mapPosition = pos; } virtual void executeAction(Game& game) const; + virtual bool getNumberProp(const std::string& prop, Number32& value) const { return false; } virtual bool Passable() const { return true; } virtual void setAction(const std::shared_ptr& action_) { action = action_; } diff --git a/src/Game/Formula.cpp b/src/Game/Formula.cpp new file mode 100755 index 00000000..d1db171d --- /dev/null +++ b/src/Game/Formula.cpp @@ -0,0 +1,222 @@ +#include "Formula.h" +#include "Utils.h" + +Formula::Formula(const std::string& formula) +{ + // tokenize formula + const std::string delimiters{ "+-*/()" }; + std::string buffer; + std::vector tokens; + for (auto c : formula) + { + if (c == ' ') + { + continue; + } + if (delimiters.find(c) != std::string::npos) + { + if (buffer.size() > 0) + { + tokens.push_back(buffer); + } + tokens.push_back(std::string(1, c)); + buffer.clear(); + } + else + { + buffer += c; + } + } + if (buffer.size() > 0 && buffer != ")") + { + tokens.push_back(buffer); + } + + // create internal formula + int brackets = 0; + for (const auto& elem : tokens) + { + if (elem.empty() == true) + { + continue; + } + if (elem == "+") + { + elements.push_back({ FormulaOp::Add }); + } + else if (elem == "-") + { + elements.push_back({ FormulaOp::Subtract }); + } + else if (elem == "*") + { + elements.push_back({ FormulaOp::Multiply }); + } + else if (elem == "/") + { + elements.push_back({ FormulaOp::Divide }); + } + else if (elem == "(") + { + elements.push_back({ FormulaOp::LeftBracket }); + brackets++; + } + else if (elem == ")") + { + if (brackets > 0) + { + elements.push_back({ FormulaOp::RightBracket }); + brackets--; + } + } + else + { + try + { + elements.push_back({ std::stod(elem) }); + } + catch (std::out_of_range e) + { + elements.push_back({ 0.0 }); + } + catch (std::invalid_argument e) + { + elements.push_back({ elem }); + } + } + } + // remove trailing closing brackets (faster eval, same result) + while (elements.empty() == false && + elements.back() == FormulaElement(FormulaOp::RightBracket)) + { + elements.pop_back(); + } +} + +double Formula::eval(size_t& idx, const LevelObject& query) const +{ + double val = 0.0; + FormulaOp currFormula = FormulaOp::Add; + + while (idx < elements.size()) + { + const auto& elem = elements[idx]; + idx++; + double val2 = 0.0; + if (elem.is() == true) + { + val2 = elem.get(); + } + else if (elem.is() == true) + { + Number32 queryVal; + if (query.getNumberProp(elem.get(), queryVal) == true) + { + val2 = queryVal.getDouble(); + } + } + else + { + switch (elem.get()) + { + case FormulaOp::LeftBracket: + val2 = eval(idx, query); + break; + case FormulaOp::RightBracket: + return val; + default: + currFormula = elem.get(); + continue; + } + } + switch (currFormula) + { + default: + case FormulaOp::Add: + val = val + val2; + break; + case FormulaOp::Subtract: + val = val - val2; + break; + case FormulaOp::Multiply: + val = val * val2; + break; + case FormulaOp::Divide: + val = val / (val2 != 0.0 ? val2 : 1.0); + break; + } + } + return val; +} + +double Formula::eval(const LevelObject& query) const +{ + size_t idx = 0; + return eval(idx, query); +} + +std::string Formula::toString() const +{ + std::string str; + int brackets = 0; + + for (const auto elem : elements) + { + if (elem.is() == true) + { + str += Utils::toString(elem.get()) + ' '; + continue; + } + else if (elem.is() == true) + { + str += elem.get() + ' '; + continue; + } + switch (elem.get()) + { + case FormulaOp::Add: + { + str += "+ "; + break; + } + case FormulaOp::Subtract: + { + str += "- "; + break; + } + case FormulaOp::Multiply: + { + str += "* "; + break; + } + case FormulaOp::Divide: + { + str += "/ "; + break; + } + case FormulaOp::LeftBracket: + { + str += '('; + brackets++; + break; + } + case FormulaOp::RightBracket: + { + if (brackets > 0) + { + str = Utils::trimEnd(str); + str += ") "; + brackets--; + } + break; + } + } + } + str = Utils::trimEnd(str); + while (brackets > 0) + { + str += ')'; + brackets--; + } + return str; +} diff --git a/src/Game/Formula.h b/src/Game/Formula.h new file mode 100755 index 00000000..d53ef7f1 --- /dev/null +++ b/src/Game/Formula.h @@ -0,0 +1,38 @@ +#pragma once + +#include "LevelObject.h" +#include +#include "Variant.h" +#include + +// use brackets to force order +// ex: 2 + 2 * 4 = 16 +// ex: 2 + (2 * 4) = 10 +class Formula +{ +private: + enum class FormulaOp + { + Add, + Subtract, + Multiply, + Divide, + LeftBracket, + RightBracket, + }; + typedef mapbox::util::variant FormulaElement; + + std::vector elements; + + double eval(size_t& idx, const LevelObject& query) const; + +public: + Formula() {} + Formula(const std::string& formula); + + bool empty() const { return elements.empty(); } + + double eval(const LevelObject& query) const; + + std::string toString() const; +}; diff --git a/src/Game/GameProperties.h b/src/Game/GameProperties.h index eb9facea..3b283476 100755 --- a/src/Game/GameProperties.h +++ b/src/Game/GameProperties.h @@ -2,8 +2,18 @@ #include #include "MapCoord.h" +#include #include +struct AnimationSpeed +{ + sf::Time animation; + sf::Time walk; + + AnimationSpeed() : animation(sf::microseconds(200000)), walk(sf::microseconds(40000)) {} + AnimationSpeed(sf::Time animation_, sf::Time walk_) : animation(animation_), walk(walk_) {} +}; + enum class InventoryPosition : size_t { TopLeft, diff --git a/src/Game/ImageLevelObject.h b/src/Game/ImageLevelObject.h index 0c2f6f6c..62928018 100755 --- a/src/Game/ImageLevelObject.h +++ b/src/Game/ImageLevelObject.h @@ -41,6 +41,7 @@ class ImageLevelObject : public LevelObject virtual void MapPosition(const MapCoord& pos) { mapPosition = pos; } virtual void executeAction(Game& game) const; + virtual bool getNumberProp(const std::string& prop, Number32& value) const { return false; } virtual bool Passable() const { return true; } virtual void setAction(const std::shared_ptr& action_) { action = action_; } diff --git a/src/Game/Item.cpp b/src/Game/Item.cpp index d781efb9..1638285b 100755 --- a/src/Game/Item.cpp +++ b/src/Game/Item.cpp @@ -159,6 +159,12 @@ bool Item::getProperty(const std::string& prop, Variable& var) const var = Variable((bool)hasDescr); break; } + case str2int16("prices"): + { + size_t idx = std::strtoul(props.second.c_str(), NULL, 10); + var = Variable((int64_t)class_->getPrice(idx, *this)); + break; + } case str2int16("identified"): var = Variable((bool)identified); break; @@ -178,12 +184,12 @@ bool Item::getProperty(const std::string& prop, Variable& var) const var = Variable((int64_t)propertiesSize); break; case str2int16("hasProperty"): - var = Variable(hasItemProperty(props.second)); + var = Variable(hasInt(props.second)); break; default: { LevelObjValue value; - if (getItemPropertyByHash(propHash, value) == true) + if (getIntByHash(propHash, value) == true) { var = Variable((int64_t)value); break; @@ -212,10 +218,10 @@ void Item::setProperty(const std::string& prop, const Variable& val) { val2 = (LevelObjValue)val.get(); } - setItemPropertyByHash(str2int16(prop.c_str()), val2); + setIntByHash(str2int16(prop.c_str()), val2); } -bool Item::hasItemProperty(const char* prop) const +bool Item::hasInt(const char* prop) const { if (propertiesSize > 0) { @@ -231,21 +237,21 @@ bool Item::hasItemProperty(const char* prop) const return false; } -LevelObjValue Item::getItemPropertyByHash(uint16_t propHash) const +LevelObjValue Item::getIntByHash(uint16_t propHash) const { LevelObjValue value = 0; - getItemPropertyByHash(propHash, value); + getIntByHash(propHash, value); return value; } -LevelObjValue Item::getItemProperty(const char* prop) const +LevelObjValue Item::getInt(const char* prop) const { LevelObjValue value = 0; - getItemProperty(prop, value); + getInt(prop, value); return value; } -bool Item::getItemPropertyByHash(uint16_t propHash, LevelObjValue& value) const +bool Item::getIntByHash(uint16_t propHash, LevelObjValue& value) const { switch (propHash) { @@ -253,11 +259,11 @@ bool Item::getItemPropertyByHash(uint16_t propHash, LevelObjValue& value) const value = (LevelObjValue)identified; break; case str2int16("indestructible"): - value = (LevelObjValue)(getItemPropertyByHash(ItemProp::DurabilityMax) + value = (LevelObjValue)(getIntByHash(ItemProp::DurabilityMax) == std::numeric_limits::max()); break; case str2int16("unlimitedCharges"): - value = (LevelObjValue)(getItemPropertyByHash(ItemProp::ChargesMax) + value = (LevelObjValue)(getIntByHash(ItemProp::ChargesMax) == std::numeric_limits::max()); break; default: @@ -279,16 +285,16 @@ bool Item::getItemPropertyByHash(uint16_t propHash, LevelObjValue& value) const return true; } -bool Item::getItemProperty(const char* prop, LevelObjValue& value) const +bool Item::getInt(const char* prop, LevelObjValue& value) const { if (propertiesSize > 0) { - return getItemPropertyByHash(str2int16(prop), value); + return getIntByHash(str2int16(prop), value); } return false; } -void Item::setItemPropertyByHash(uint16_t propHash, LevelObjValue value) +void Item::setIntByHash(uint16_t propHash, LevelObjValue value) { switch (propHash) { @@ -323,9 +329,9 @@ void Item::setItemPropertyByHash(uint16_t propHash, LevelObjValue value) updateNameAndDescr = true; } -void Item::setItemProperty(const char* prop, LevelObjValue value) +void Item::setInt(const char* prop, LevelObjValue value) { - setItemPropertyByHash(str2int16(prop), value); + setIntByHash(str2int16(prop), value); } void Item::updateNameAndDescriptions() const @@ -355,18 +361,18 @@ void Item::applyDefaults() { for (const auto& prop : class_->Defaults()) { - setItemPropertyByHash(prop.first, prop.second); + setIntByHash(prop.first, prop.second); } } bool Item::needsRecharge() const { LevelObjValue charges = 0; - if (getItemPropertyByHash(ItemProp::ChargesMax, charges) == true) + if (getIntByHash(ItemProp::ChargesMax, charges) == true) { if (charges < std::numeric_limits::max()) { - return getItemPropertyByHash(ItemProp::Charges) < charges; + return getIntByHash(ItemProp::Charges) < charges; } } return false; @@ -375,11 +381,11 @@ bool Item::needsRecharge() const bool Item::needsRepair() const { LevelObjValue durability = 0; - if (getItemPropertyByHash(ItemProp::DurabilityMax, durability) == true) + if (getIntByHash(ItemProp::DurabilityMax, durability) == true) { if (durability < std::numeric_limits::max()) { - return getItemPropertyByHash(ItemProp::Durability) < durability; + return getIntByHash(ItemProp::Durability) < durability; } } return false; diff --git a/src/Game/Item.h b/src/Game/Item.h index 30b01736..d6681c4c 100755 --- a/src/Game/Item.h +++ b/src/Game/Item.h @@ -8,16 +8,16 @@ #include "LevelObject.h" #include -typedef std::array ItemProperties; - class Item : public LevelObject { private: + typedef std::array ItemProperties; + + const ItemClass* class_; + sf::Sprite sprite; MapCoord mapPosition; - std::shared_ptr class_; - std::pair frameRange; size_t currentFrame{ 0 }; @@ -60,7 +60,7 @@ class Item : public LevelObject const_reverse_iterator crend() const { return properties.crend(); } Item() {} - Item(const std::shared_ptr& class__) : class_(class__) + Item(const ItemClass* class__) : class_(class__) { frameRange.first = 0; frameRange.second = class_->getCelDropTextureSize() - 1; @@ -81,6 +81,16 @@ class Item : public LevelObject void MapPosition(Level& level, const MapCoord& pos); virtual void executeAction(Game& game) const; + virtual bool getNumberProp(const std::string& prop, Number32& value) const + { + LevelObjValue val; + bool ret = getInt(prop, val); + if (ret == true) + { + value.setInt32(val); + } + return ret; + } virtual bool Passable() const { return true; } virtual void setAction(const std::shared_ptr& action_) {} @@ -99,32 +109,32 @@ class Item : public LevelObject virtual void setProperty(const std::string& prop, const Variable& val); virtual const Queryable* getQueryable(const std::string& prop) const { return nullptr; } - ItemClass* Class() const { return class_.get(); } + const ItemClass* Class() const { return class_; } - bool hasItemProperty(const char* prop) const; - bool hasItemProperty(const std::string& prop) const + bool hasInt(const char* prop) const; + bool hasInt(const std::string& prop) const { - return hasItemProperty(prop.c_str()); + return hasInt(prop.c_str()); } - LevelObjValue getItemPropertyByHash(uint16_t propHash) const; - LevelObjValue getItemProperty(const char* prop) const; - LevelObjValue getItemProperty(const std::string& prop) const + LevelObjValue getIntByHash(uint16_t propHash) const; + LevelObjValue getInt(const char* prop) const; + LevelObjValue getInt(const std::string& prop) const { - return getItemProperty(prop.c_str()); + return getInt(prop.c_str()); } - bool getItemPropertyByHash(uint16_t propHash, LevelObjValue& value) const; - bool getItemProperty(const char* prop, LevelObjValue& value) const; - bool getItemProperty(const std::string& prop, LevelObjValue& value) const + bool getIntByHash(uint16_t propHash, LevelObjValue& value) const; + bool getInt(const char* prop, LevelObjValue& value) const; + bool getInt(const std::string& prop, LevelObjValue& value) const { - return getItemProperty(prop.c_str(), value); + return getInt(prop.c_str(), value); } - void setItemPropertyByHash(uint16_t propHash, LevelObjValue value); - void setItemProperty(const char* prop, LevelObjValue value); - void setItemProperty(const std::string& prop, LevelObjValue value) const + void setIntByHash(uint16_t propHash, LevelObjValue value); + void setInt(const char* prop, LevelObjValue value); + void setInt(const std::string& prop, LevelObjValue value) { - return setItemProperty(prop.c_str(), value); + return setInt(prop.c_str(), value); } void applyDefaults(); diff --git a/src/Game/ItemClass.cpp b/src/Game/ItemClass.cpp index 9643110c..ece3b027 100755 --- a/src/Game/ItemClass.cpp +++ b/src/Game/ItemClass.cpp @@ -123,3 +123,21 @@ bool ItemClass::getDescription(size_t idx, const Queryable& item, std::string& d } return true; } + +void ItemClass::setPriceFormula(size_t idx, const Formula& formula) +{ + if (idx < priceFormulas.size()) + { + priceFormulas[idx] = formula; + } +} + +LevelObjValue ItemClass::getPrice(size_t idx, const LevelObject& item) const +{ + LevelObjValue val = 0; + if (idx < priceFormulas.size()) + { + val = (LevelObjValue)priceFormulas[idx].eval(item); + } + return val; +} diff --git a/src/Game/ItemClass.h b/src/Game/ItemClass.h index 3ff1f522..03464fc4 100755 --- a/src/Game/ItemClass.h +++ b/src/Game/ItemClass.h @@ -2,6 +2,7 @@ #include "Actions/Action.h" #include "CelCache.h" +#include "Formula.h" #include "GameProperties.h" #include "ItemXY.h" #include @@ -41,6 +42,8 @@ class ItemClass std::array, 5> descriptions; + std::array priceFormulas; + public: ItemClass(const std::shared_ptr& celTextureDrop_, size_t celDropIdx_, const std::shared_ptr& celTextureInventory_, @@ -142,4 +145,8 @@ class ItemClass void setDescription(size_t idx, const std::shared_ptr& namer); bool getDescription(size_t idx, const Queryable& item, std::string& description) const; + + void setPriceFormula(size_t idx, const Formula& formula); + + LevelObjValue getPrice(size_t idx, const LevelObject& item) const; }; diff --git a/src/Game/ItemLocation.h b/src/Game/ItemLocation.h index 975b70e4..4ed58568 100755 --- a/src/Game/ItemLocation.h +++ b/src/Game/ItemLocation.h @@ -6,34 +6,29 @@ class ItemCoordInventory { private: - union ItemXYOrIndex { + std::string playerId; + int16_t inventoryIdx{ 0 }; + union { ItemXY itemXY; uint16_t itemIdx; - - ItemXYOrIndex() : ItemXYOrIndex(0) {} - ItemXYOrIndex(ItemXY itemXY_) : itemXY(itemXY_) {} - ItemXYOrIndex(uint16_t itemIdx_) : itemIdx(itemIdx_) {} }; - std::string playerId; - int16_t inventoryIdx{ 0 }; - ItemXYOrIndex itemPos; - public: // inventoryIdx = -1 points to player's selected item ItemCoordInventory() : inventoryIdx(-1) {}; - ItemCoordInventory(const std::string& playerId_) : playerId(playerId_), inventoryIdx(-1) {}; + ItemCoordInventory(const std::string& playerId_) : + playerId(playerId_), inventoryIdx(-1), itemIdx(0) {}; ItemCoordInventory(const std::string& playerId_, size_t inventoryIdx_, size_t itemIdx_) : playerId(playerId_), inventoryIdx(((int16_t)inventoryIdx_) & 0x7FFF), - itemPos((uint16_t)itemIdx_) {} + itemIdx(itemIdx_) {} ItemCoordInventory(const std::string& playerId_, size_t inventoryIdx_, const ItemXY& itemXY_) : playerId(playerId_), inventoryIdx(((int16_t)inventoryIdx_) | 0x8000), - itemPos(itemXY_) {} + itemXY(itemXY_) {} bool isSelectedItem() const { @@ -64,7 +59,7 @@ class ItemCoordInventory { return 0; } - return itemPos.itemIdx; + return itemIdx; } ItemXY getItemXY() const @@ -73,7 +68,7 @@ class ItemCoordInventory { return{}; } - return itemPos.itemXY; + return itemXY; } const std::string& getPlayerId() const { return playerId; } diff --git a/src/Game/ItemProperties.h b/src/Game/ItemProperties.h index 92b0a8ee..8c86ed08 100755 --- a/src/Game/ItemProperties.h +++ b/src/Game/ItemProperties.h @@ -7,10 +7,28 @@ namespace ItemProp const uint16_t Gold = str2int16("gold"); const uint16_t GoldMax = str2int16("goldMax"); + const uint16_t AllAttributes = str2int16("allAttributes"); + + const uint16_t Strength = str2int16("strength"); + const uint16_t Magic = str2int16("magic"); + const uint16_t Dexterity = str2int16("dexterity"); + const uint16_t Vitality = str2int16("vitality"); + + const uint16_t Life = str2int16("life"); + const uint16_t Mana = str2int16("mana"); + + const uint16_t ResistAll = str2int16("resistAll"); + + const uint16_t ResistMagic = str2int16("resistMagic"); + const uint16_t ResistFire = str2int16("resistFire"); + const uint16_t ResistLightning = str2int16("resistLightning"); + const uint16_t Armor = str2int16("armor"); + const uint16_t ToHit = str2int16("toHit"); const uint16_t DamageMin = str2int16("damageMin"); const uint16_t DamageMax = str2int16("damageMax"); + const uint16_t ToDamage = str2int16("toDamage"); const uint16_t Durability = str2int16("durability"); const uint16_t DurabilityMax = str2int16("durabilityMax"); diff --git a/src/Game/Level.cpp b/src/Game/Level.cpp index b95e06ce..fef6362e 100755 --- a/src/Game/Level.cpp +++ b/src/Game/Level.cpp @@ -10,6 +10,7 @@ void Level::Init(const LevelMap& map_, Min& min_, CelFrameCache& cel_) currentMapPosition = MapCoord(map.Width() / 2, map.Height() / 2); tiles = LevelHelper::loadTilesetSprite(cel_, min_, false); tiles2 = LevelHelper::loadTilesetSprite(cel_, min_, true); + hoverObject = nullptr; } void Level::setAction(uint16_t nameHash16, const std::shared_ptr& action) @@ -455,7 +456,18 @@ void Level::clearPlayerClasses(size_t clearIdx) { if (clearIdx < playerClasses.size()) { - playerClasses.erase(playerClasses.begin() + clearIdx, playerClasses.end()); + auto removeIfFunc = [&](const auto& cls) { + auto it = std::find_if(players.begin(), players.end(), [&](const auto& plr) { + return plr->getPlayerClass() == cls.second.get(); + }); + return it == players.end(); + }; + + playerClasses.erase( + std::remove_if(playerClasses.begin() + clearIdx, + playerClasses.end(), + removeIfFunc), + playerClasses.end()); } } @@ -552,21 +564,17 @@ bool Level::setItem(const ItemCoordInventory& itemCoord, const std::shared_ptrgetInventorySize()) { - auto& inventory = player->getInventory(invIdx); size_t itemIdx; if (itemCoord.isCoordXY() == true) { - itemIdx = inventory.getIndex(itemCoord.getItemXY()); + itemIdx = player->getInventory(invIdx) + .getIndex(itemCoord.getItemXY()); } else { itemIdx = itemCoord.getItemIdx(); } - std::shared_ptr oldItem; - auto ret = inventory.set(itemIdx, item, oldItem); - player->updateGoldRemove(oldItem); - player->updateGoldAdd(item); - return ret; + return player->setItem(invIdx, itemIdx, item); } } return false; diff --git a/src/Game/Level.h b/src/Game/Level.h index b6042933..6890901c 100755 --- a/src/Game/Level.h +++ b/src/Game/Level.h @@ -117,17 +117,22 @@ class Level : public UIObject return nullptr; } + bool hasItemClass(const std::string& key) const + { + return itemClasses.find(key) != itemClasses.end(); + } + void addItemClass(const std::string& key, const std::shared_ptr& obj) { itemClasses.insert(std::make_pair(key, obj)); } - std::shared_ptr getItemClass(const std::string& key) const + ItemClass* getItemClass(const std::string& key) const { auto it = itemClasses.find(key); if (it != itemClasses.end()) { - return it->second; + return it->second.get(); } return nullptr; } @@ -137,13 +142,13 @@ class Level : public UIObject playerClasses.push_back(std::make_pair(key, obj)); } - std::shared_ptr getPlayerClass(const std::string& key) const + PlayerClass* getPlayerClass(const std::string& key) const { for (const auto& player : playerClasses) { if (player.first == key) { - return player.second; + return player.second.get(); } } return nullptr; @@ -155,6 +160,7 @@ class Level : public UIObject Player* getPlayer(const std::string& id) const; Player* getPlayerOrCurrent(const std::string& id) const; + // doesn't clear currently used player classes void clearPlayerClasses(size_t clearIdx); void clearPlayers(size_t clearIdx); diff --git a/src/Game/LevelObject.h b/src/Game/LevelObject.h index 150f6ab5..3405e5de 100755 --- a/src/Game/LevelObject.h +++ b/src/Game/LevelObject.h @@ -1,9 +1,9 @@ #pragma once #include "Actions/Action.h" -#include "Anchor.h" #include "MapCoord.h" #include +#include "Number.h" #include "Queryable.h" #include #include @@ -26,6 +26,7 @@ class LevelObject : public sf::Drawable, public Queryable // Game virtual void executeAction(Game& game) const = 0; + virtual bool getNumberProp(const std::string& prop, Number32& value) const = 0; virtual bool Hoverable() const = 0; virtual void Hoverable(bool hoverable) = 0; virtual bool Passable() const = 0; diff --git a/src/Game/Number.h b/src/Game/Number.h new file mode 100755 index 00000000..293d327e --- /dev/null +++ b/src/Game/Number.h @@ -0,0 +1,69 @@ +#pragma once + +#include + +struct Number32 +{ +private: + uint8_t type; + union + { + int32_t intNum; + uint32_t uintNum; + float floatNum; + }; + +public: + constexpr Number32() : type(0), intNum(0) {} + constexpr explicit Number32(int32_t num) : type(0), intNum(num) {} + constexpr explicit Number32(uint32_t num) : type(1), uintNum(num) {} + constexpr explicit Number32(float num) : type(2), floatNum(num) {} + + constexpr void setInt32(int32_t num) + { + type = 0; + intNum = num; + } + constexpr void setUInt32(uint32_t num) + { + type = 1; + uintNum = num; + } + constexpr void setFloat(float num) + { + type = 2; + floatNum = num; + } + + constexpr int32_t getInt32() { return intNum; } + constexpr uint32_t getUInt32() { return uintNum; } + constexpr float getFloat() { return floatNum; } + + constexpr int64_t getInt64() + { + switch (type) + { + default: + case 0: + return (int64_t)intNum; + case 1: + return (int64_t)uintNum; + case 2: + return (int64_t)floatNum; + } + } + + constexpr double getDouble() + { + switch (type) + { + default: + case 0: + return (double)intNum; + case 1: + return (double)uintNum; + case 2: + return (double)floatNum; + } + } +}; diff --git a/src/Game/Player.cpp b/src/Game/Player.cpp index 8d040606..ee3ea3d5 100755 --- a/src/Game/Player.cpp +++ b/src/Game/Player.cpp @@ -55,23 +55,43 @@ void Player::updateTexture() currentFrame++; } +void Player::updateWalkPathStep(sf::Vector2f& newDrawPos) +{ + newDrawPos.x -= std::round((drawPosA.x - drawPosB.x) * currPositionStep); + newDrawPos.y -= std::round((drawPosA.y - drawPosB.y) * currPositionStep); + + if (currPositionStep >= 1.f) + { + if (walkPath.empty() == false) + { + walkPath.pop_back(); + } + drawPosA = drawPosB; + newDrawPos = drawPosB; + } + else + { + currPositionStep += 0.1f; + } +} + void Player::updateWalkPath(Game& game, Level& level) { auto newDrawPos = drawPosA; - - beginning: if (drawPosA == drawPosB) { - if (walkPath.empty() == true) + if (walkPath.empty() == true && + hasWalkingStatus() == true) { - setStatus(PlayerStatus::Stand1); + setStandStatus(); + resetAnimationTime(); } while (walkPath.empty() == false) { const auto& nextMapPos = walkPath.back(); if (walkPath.size() == 1) { - const auto levelObj = level.Map()[nextMapPos.x][nextMapPos.y].front(); + const auto levelObj = level.Map()[nextMapPos].front(); if (levelObj != nullptr) { levelObj->executeAction(game); @@ -84,46 +104,21 @@ void Player::updateWalkPath(Game& game, Level& level) walkPath.pop_back(); continue; } - setStatus(PlayerStatus::Walk1); + setWalkStatus(); setDirection(getPlayerDirection(mapPosition, nextMapPos)); MapPosition(level, nextMapPos); - - currPositionStep = 0.125f; - goto beginning; + currPositionStep = 0.1f; + updateWalkPathStep(newDrawPos); + break; } } else { - newDrawPos.x -= std::round((drawPosA.x - drawPosB.x) * currPositionStep); - newDrawPos.y -= std::round((drawPosA.y - drawPosB.y) * currPositionStep); - - if (currPositionStep >= 1.f) - { - if (walkPath.empty() == false) - { - walkPath.pop_back(); - } - else - { - setStatus(PlayerStatus::Stand1); - } - drawPosA = drawPosB; - newDrawPos = drawPosB; - } - else - { - currPositionStep += 0.125f; - } + updateWalkPathStep(newDrawPos); } updateDrawPosition(newDrawPos); } -void Player::setWalkSpeed(int fps) -{ - fps = std::max(std::min(fps, 1000), 1); - walkTime = sf::seconds(1.f / (float)fps); -} - void Player::setWalkPath(const std::vector& walkPath_) { if (walkPath_.empty() == true) @@ -152,16 +147,34 @@ void Player::executeAction(Game& game) const } } -void Player::MapPosition(Level& level, const MapCoord& pos) +void Player::updateMapPosition(Level& level, const MapCoord& pos) { auto oldObj = level.Map()[mapPosition].getObject(this); level.Map()[mapPosition].deleteObject(this); - drawPosA = level.Map().getCoord(mapPosition); mapPosition = pos; - drawPosB = level.Map().getCoord(mapPosition); level.Map()[mapPosition].addBack(oldObj); } +void Player::MapPosition(Level& level, const MapCoord& pos) +{ + drawPosA = level.Map().getCoord(mapPosition); + drawPosB = level.Map().getCoord(pos); + updateMapPosition(level, pos); +} + +void Player::move(Level& level, const MapCoord& pos) +{ + if (mapPosition == pos) + { + return; + } + clearWalkPath(); + setStandStatus(); + resetAnimationTime(); + drawPosA = drawPosB = level.Map().getCoord(pos); + updateMapPosition(level, pos); +} + void Player::update(Game& game, Level& level) { if (celTexture == nullptr @@ -170,27 +183,22 @@ void Player::update(Game& game, Level& level) return; } - // add delta time - currentFrameTime += game.getElapsedTime(); - - // if current time is bigger then the frame time advance one frame - if (currentFrameTime >= frameTime) + currentWalkTime += game.getElapsedTime(); + if (currentWalkTime >= speed.walk) { - // reset time, but keep the remainder - currentFrameTime = sf::microseconds(currentFrameTime.asMicroseconds() % frameTime.asMicroseconds()); + currentWalkTime = sf::microseconds( + currentWalkTime.asMicroseconds() % speed.walk.asMicroseconds()); - updateTexture(); + updateWalkPath(game, level); } - currentWalkTime += game.getElapsedTime(); - - // if current time is bigger then the frame time advance one frame - if (currentWalkTime >= walkTime) + currentAnimationTime += game.getElapsedTime(); + if (currentAnimationTime >= speed.animation) { - // reset time, but keep the remainder - currentWalkTime = sf::microseconds(currentFrameTime.asMicroseconds() % walkTime.asMicroseconds()); + currentAnimationTime = sf::microseconds( + currentAnimationTime.asMicroseconds() % speed.animation.asMicroseconds()); - updateWalkPath(game, level); + updateTexture(); } if (enableHover == false) { @@ -241,21 +249,6 @@ bool Player::getProperty(const std::string& prop, Variable& var) const case str2int16("class"): var = Variable(class_->Name()); break; - case str2int16("level"): - var = Variable((int64_t)currentLevel); - break; - case str2int16("experience"): - var = Variable((int64_t)experience); - break; - case str2int16("expNextLevel"): - var = Variable((int64_t)expNextLevel); - break; - case str2int16("points"): - var = Variable((int64_t)points); - break; - case str2int16("gold"): - var = Variable((int64_t)gold); - break; case str2int16("canEquipSelectedItem"): { if (selectedItem == nullptr) @@ -343,16 +336,13 @@ bool Player::getProperty(const std::string& prop, Variable& var) const } default: { - LevelObjValue value; - if (getPlayerProperty(prop.c_str(), value) == true) + Number32 value; + if (getNumberProp(prop.c_str(), value) == true) { - var = Variable((int64_t)value); + var = Variable(value.getInt64()); break; } - else - { - return false; - } + return false; } } return true; @@ -366,19 +356,19 @@ void Player::setProperty(const std::string& prop, const Variable& val) } switch (str2int16(prop.c_str())) { - case str2int16("lifeBase"): + case str2int16("lifeDamage"): { if (val.is() == true) { - LifeBase((LevelObjValue)val.get()); + LifeDamage((LevelObjValue)val.get()); } } break; - case str2int16("manaBase"): + case str2int16("manaDamage"): { if (val.is() == true) { - ManaBase((LevelObjValue)val.get()); + ManaDamage((LevelObjValue)val.get()); } } break; @@ -424,58 +414,123 @@ const Queryable* Player::getQueryable(const std::string& prop) const return queryable; } -bool Player::getPlayerPropertyByHash(uint16_t propHash, LevelObjValue& value) const +bool Player::getNumberProp(const std::string& prop, Number32& value) const +{ + LevelObjValue iVal; + bool ret = getInt(prop, iVal); + if (ret == true) + { + value.setInt32(iVal); + } + else + { + uint32_t uVal; + ret = getUInt(prop, uVal); + if (ret == true) + { + value.setUInt32(uVal); + } + } + return ret; +} + +bool Player::getIntByHash(uint16_t propHash, LevelObjValue& value) const { switch (propHash) { - case str2int16("strengthBase"): - value = strengthBase; + case str2int16("strength"): + value = strength; + break; + case str2int16("strengthItems"): + value = strengthItems; break; case str2int16("strengthNow"): - value = strengthNow; + value = StrengthNow(); break; - case str2int16("magicBase"): - value = magicBase; + case str2int16("magic"): + value = magic; + break; + case str2int16("magicItems"): + value = magicItems; break; case str2int16("magicNow"): - value = magicNow; + value = MagicNow(); + break; + case str2int16("dexterity"): + value = dexterity; break; - case str2int16("dexterityBase"): - value = dexterityBase; + case str2int16("dexterityItems"): + value = dexterityItems; break; case str2int16("dexterityNow"): - value = dexterityNow; + value = DexterityNow(); break; - case str2int16("vitalityBase"): - value = vitalityBase; + case str2int16("vitality"): + value = vitality; + break; + case str2int16("vitalityItems"): + value = vitalityItems; break; case str2int16("vitalityNow"): - value = vitalityNow; + value = VitalityNow(); + break; + case str2int16("life"): + value = life; break; - case str2int16("lifeBase"): - value = lifeBase; + case str2int16("lifeItems"): + value = lifeItems; + break; + case str2int16("lifeDamage"): + value = lifeDamage; break; case str2int16("lifeNow"): - value = lifeNow; + value = LifeNow(); + break; + case str2int16("mana"): + value = mana; + break; + case str2int16("manaItems"): + value = manaItems; break; - case str2int16("manaBase"): - value = manaBase; + case str2int16("manaDamage"): + value = manaDamage; break; case str2int16("manaNow"): - value = manaNow; + value = ManaNow(); break; - case str2int16("armorClass"): - value = armorClass; + case str2int16("armor"): + value = armor; + break; + case str2int16("armorItems"): + value = armorItems; break; case str2int16("toHit"): value = toHit; break; + case str2int16("toHitItems"): + value = toHitItems; + break; case str2int16("damageMin"): value = damageMin; break; + case str2int16("damageMinItems"): + value = damageMin; + break; + case str2int16("damageMinNow"): + value = DamageMinNow(); + break; case str2int16("damageMax"): value = damageMax; break; + case str2int16("damageMaxItems"): + value = damageMax; + break; + case str2int16("damageMaxNow"): + value = DamageMaxNow(); + break; + case str2int16("toDamage"): + value = toDamage; + break; case str2int16("resistMagic"): value = resistMagic; break; @@ -485,62 +540,89 @@ bool Player::getPlayerPropertyByHash(uint16_t propHash, LevelObjValue& value) co case str2int16("resistLightning"): value = resistLightning; break; + case str2int16("maxStrength"): + value = class_->MaxStrength(); + break; + case str2int16("maxMagic"): + value = class_->MaxMagic(); + break; + case str2int16("maxDexterity"): + value = class_->MaxDexterity(); + break; + case str2int16("maxVitality"): + value = class_->MaxVitality(); + break; + case str2int16("maxResistMagic"): + value = class_->MaxResistMagic(); + break; + case str2int16("maxResistFire"): + value = class_->MaxResistFire(); + break; + case str2int16("maxResistLightning"): + value = class_->MaxResistLightning(); + break; default: return false; } return true; } -bool Player::getPlayerProperty(const char* prop, LevelObjValue& value) const +bool Player::getInt(const char* prop, LevelObjValue& value) const { - return getPlayerPropertyByHash(str2int16(prop), value); + return getIntByHash(str2int16(prop), value); } -void Player::setPlayerPropertyByHash(uint16_t propHash, LevelObjValue value) +bool Player::getUIntByHash(uint16_t propHash, uint32_t& value) const { switch (propHash) { - case str2int16("strengthBase"): - strengthBase = value; - break; - case str2int16("strengthNow"): - strengthNow = value; - break; - case str2int16("magicBase"): - magicBase = value; - break; - case str2int16("magicNow"): - magicNow = value; + case str2int16("level"): + value = currentLevel; break; - case str2int16("dexterityBase"): - dexterityBase = value; + case str2int16("experience"): + value = experience; break; - case str2int16("dexterityNow"): - dexterityNow = value; + case str2int16("expNextLevel"): + value = expNextLevel; break; - case str2int16("vitalityBase"): - vitalityBase = value; + case str2int16("points"): + value = points; break; - case str2int16("vitalityNow"): - vitalityNow = value; + case str2int16("gold"): + value = gold; break; - case str2int16("lifeBase"): - lifeBase = value; + default: + return false; + } + return true; +} + +bool Player::getUInt(const char* prop, uint32_t& value) const +{ + return getUIntByHash(str2int16(prop), value); +} + +bool Player::setIntByHash(uint16_t propHash, LevelObjValue value) +{ + switch (propHash) + { + case str2int16("strength"): + strength = std::min(std::max(value, 0), class_->MaxStrength()); break; - case str2int16("lifeNow"): - lifeNow = value; + case str2int16("magic"): + magic = std::min(std::max(value, 0), class_->MaxMagic()); break; - case str2int16("manaBase"): - manaBase = value; + case str2int16("dexterity"): + dexterity = std::min(std::max(value, 0), class_->MaxDexterity()); break; - case str2int16("manaNow"): - manaNow = value; + case str2int16("vitality"): + vitality = std::min(std::max(value, 0), class_->MaxVitality()); break; - case str2int16("armorClass"): - armorClass = value; + case str2int16("lifeDamage"): + lifeDamage = std::max(value, 0); break; - case str2int16("toHit"): - toHit = value; + case str2int16("manaDamage"): + manaDamage = std::max(value, 0); break; case str2int16("damageMin"): damageMin = value; @@ -548,21 +630,55 @@ void Player::setPlayerPropertyByHash(uint16_t propHash, LevelObjValue value) case str2int16("damageMax"): damageMax = value; break; - case str2int16("resistMagic"): - resistMagic = value; + default: + return false; + } + return true; +} + +bool Player::setInt(const char* prop, LevelObjValue value) +{ + return setIntByHash(str2int16(prop), value); +} + +bool Player::setUIntByHash(uint16_t propHash, uint32_t value) +{ + switch (propHash) + { + case str2int16("level"): + currentLevel = value; break; - case str2int16("resistFire"): - resistFire = value; + case str2int16("experience"): + experience = value; break; - case str2int16("resistLightning"): - resistLightning = value; + case str2int16("expNextLevel"): + expNextLevel = value; + break; + case str2int16("points"): + points = value; break; + default: + return false; } + return true; } -void Player::setPlayerProperty(const char* prop, LevelObjValue value) +bool Player::setUInt(const char* prop, uint32_t value) { - setPlayerPropertyByHash(str2int16(prop), value); + return setUIntByHash(str2int16(prop), value); +} + +void Player::setNumberByHash(uint16_t propHash, LevelObjValue value) +{ + if (setIntByHash(propHash, value) == false) + { + setUIntByHash(propHash, (uint32_t)value); + } +} + +void Player::setNumber(const char* prop, LevelObjValue value) +{ + return setNumberByHash(str2int16(prop), value); } bool Player::parseInventoryAndItem(const std::string& str, @@ -605,7 +721,7 @@ bool Player::addGold(const Level& level, LevelObjValue amount) { if (amount == 0) { - return false;; + return false; } bool remove = amount < 0; amount = std::abs(amount); @@ -614,14 +730,14 @@ bool Player::addGold(const Level& level, LevelObjValue amount) std::shared_ptr item; while (findItem(ItemTypes::Gold, invIdx, itemIdx, item) == true) { - auto itemGold = item->getItemPropertyByHash(ItemProp::Gold); - auto itemMaxGold = item->getItemPropertyByHash(ItemProp::GoldMax); + auto itemGold = item->getIntByHash(ItemProp::Gold); + auto itemMaxGold = item->getIntByHash(ItemProp::GoldMax); if (remove == true) { if (amount < itemGold) { - item->setItemPropertyByHash(ItemProp::Gold, itemGold - amount); + item->setIntByHash(ItemProp::Gold, itemGold - amount); gold -= amount; return true; } @@ -639,13 +755,13 @@ bool Player::addGold(const Level& level, LevelObjValue amount) { if (amount <= freeGoldSlots) { - item->setItemPropertyByHash(ItemProp::Gold, itemGold + amount); + item->setIntByHash(ItemProp::Gold, itemGold + amount); gold += amount; return true; } else { - item->setItemPropertyByHash(ItemProp::Gold, itemMaxGold); + item->setIntByHash(ItemProp::Gold, itemMaxGold); amount -= freeGoldSlots; gold += freeGoldSlots; } @@ -671,7 +787,7 @@ bool Player::addGold(const Level& level, LevelObjValue amount) return true; } auto newItem = std::make_shared(goldClass); - auto itemMaxGold = newItem->getItemPropertyByHash(ItemProp::GoldMax); + auto itemMaxGold = newItem->getIntByHash(ItemProp::GoldMax); if (itemMaxGold <= 0) { return false; @@ -681,7 +797,7 @@ bool Player::addGold(const Level& level, LevelObjValue amount) { goldVal = amount; } - newItem->setItemPropertyByHash(ItemProp::Gold, goldVal); + newItem->setIntByHash(ItemProp::Gold, goldVal); size_t invIdx2 = 0; size_t itemIdx2 = 0; @@ -705,7 +821,7 @@ void Player::updateGoldAdd(const std::shared_ptr& item) if (item != nullptr && item->Class()->TypeHash16() == ItemTypes::Gold) { - gold += item->getItemPropertyByHash(ItemProp::Gold); + gold += item->getIntByHash(ItemProp::Gold); } } @@ -714,7 +830,7 @@ void Player::updateGoldRemove(const std::shared_ptr& item) if (item != nullptr && item->Class()->TypeHash16() == ItemTypes::Gold) { - auto val = item->getItemPropertyByHash(ItemProp::Gold); + auto val = item->getIntByHash(ItemProp::Gold); if (val > 0) { gold -= val; @@ -734,8 +850,8 @@ uint32_t Player::getMaxGoldCapacity(const Level& level) const std::shared_ptr item; while (findItem(ItemTypes::Gold, invIdx, itemIdx, item) == true) { - auto itemGold = item->getItemPropertyByHash(ItemProp::Gold); - auto itemMaxGold = item->getItemPropertyByHash(ItemProp::GoldMax); + auto itemGold = item->getIntByHash(ItemProp::Gold); + auto itemMaxGold = item->getIntByHash(ItemProp::GoldMax); if (itemGold < itemMaxGold) { @@ -822,31 +938,122 @@ unsigned Player::countFreeSlots(const ItemClass& itemClass) const return count; } -void Player::updatePlayerProperties(size_t idx) +bool Player::setItem(size_t invIdx, size_t itemIdx, const std::shared_ptr& item) { - strengthNow = strengthBase; - magicNow = magicBase; - dexterityNow = dexterityBase; - vitalityNow = vitalityBase; - lifeNow = lifeBase; - manaNow = manaBase; + std::shared_ptr oldItem; + return setItem(invIdx, itemIdx, item, oldItem); +} - if (idx < inventories.size()) +bool Player::setItem(size_t invIdx, size_t itemIdx, const std::shared_ptr& item, + std::shared_ptr& oldItem) +{ + if (invIdx >= inventories.size()) + { + return false; + } + auto& inventory = inventories[invIdx]; + auto ret = inventory.set(itemIdx, item, oldItem); + if (ret == true) { - for (const auto& item : inventories[idx]) + updateGoldRemove(oldItem); + updateGoldAdd(item); + if (bodyInventoryIdx == invIdx) { - if (item != nullptr) - { - setPlayerPropertyByHash(ItemProp::DamageMin, - item->getItemPropertyByHash(ItemProp::DamageMin)); - setPlayerPropertyByHash(ItemProp::DamageMax, - item->getItemPropertyByHash(ItemProp::DamageMax)); - for (const auto& itemProp : (*item)) - { - setPlayerPropertyByHash(itemProp.first, itemProp.second); - } - } + updatePlayerProperties(); + } + } + return ret; +} + +bool Player::setItemInFreeSlot(size_t invIdx, + const std::shared_ptr& item, InventoryPosition invPos) +{ + if (invIdx < inventories.size()) + { + auto& inventory = inventories[invIdx]; + size_t itemIdx = 0; + if (inventory.getItemSlot(*item, itemIdx, invPos) == true) + { + return setItem(invIdx, itemIdx, item); + } + } + return false; +} + +void Player::updateBodyItemValues() +{ + if (bodyInventoryIdx >= inventories.size()) + { + return; + } + strengthItems = 0; + magicItems = 0; + dexterityItems = 0; + vitalityItems = 0; + lifeItems = 0; + manaItems = 0; + armorItems = 0; + toHitItems = 0; + damageMinItems = 0; + damageMaxItems = 0; + toDamage = 0; + resistMagic = 0; + resistFire = 0; + resistLightning = 0; + for (size_t i = 0; i < inventories[bodyInventoryIdx].Size(); i++) + { + if (inventories[bodyInventoryIdx].isItemSlotInUse(i) == false) + { + continue; } + const auto& item = inventories[bodyInventoryIdx].get(i); + + if (item->Identified() == true) + { + auto allAttributes = item->getIntByHash(ItemProp::AllAttributes); + strengthItems += allAttributes + item->getIntByHash(ItemProp::Strength); + magicItems += allAttributes + item->getIntByHash(ItemProp::Magic); + dexterityItems += allAttributes + item->getIntByHash(ItemProp::Dexterity); + vitalityItems += allAttributes + item->getIntByHash(ItemProp::Vitality); + + lifeItems += item->getIntByHash(ItemProp::Life); + manaItems += item->getIntByHash(ItemProp::Mana); + + auto resistAll = item->getIntByHash(ItemProp::ResistAll); + resistMagic += resistAll + item->getIntByHash(ItemProp::ResistMagic); + resistFire += resistAll + item->getIntByHash(ItemProp::ResistFire); + resistLightning += resistAll + item->getIntByHash(ItemProp::ResistLightning); + + toDamage += item->getIntByHash(ItemProp::ToDamage); + + resistMagic = std::min(std::max(resistMagic, 0), class_->MaxResistMagic()); + resistFire = std::min(std::max(resistFire, 0), class_->MaxResistFire()); + resistLightning = std::min(std::max(resistLightning, 0), class_->MaxResistLightning()); + } + armorItems += item->getIntByHash(ItemProp::Armor); + toHitItems += item->getIntByHash(ItemProp::ToHit); + damageMinItems += item->getIntByHash(ItemProp::DamageMin); + damageMaxItems += item->getIntByHash(ItemProp::DamageMax); + } + toDamagePercentage = (float)toDamage * 0.01f; +} + +void Player::updatePlayerProperties() +{ + updateBodyItemValues(); + + life = class_->getActualLife(*this, 0); + mana = class_->getActualMana(*this, 0); + armor = class_->getActualArmor(*this, 0); + toHit = class_->getActualToHit(*this, 0); + damageMin = damageMax = class_->getActualDamage(*this, 0); + if (DamageMinNow() <= 0) + { + damageMin = 1; + } + if (DamageMaxNow() <= 0) + { + damageMax = 1; } } @@ -854,14 +1061,14 @@ void Player::applyDefaults() { for (const auto& prop : class_->Defaults()) { - setPlayerPropertyByHash(prop.first, prop.second); + setNumberByHash(prop.first, prop.second); } } bool Player::canEquipItem(const Item& item) const { - return (item.getItemPropertyByHash(ItemProp::RequiredStrength) <= strengthNow && - item.getItemPropertyByHash(ItemProp::RequiredMagic) <= magicNow && - item.getItemPropertyByHash(ItemProp::RequiredDexterity) <= dexterityNow && - item.getItemPropertyByHash(ItemProp::RequiredVitality) <= vitalityNow); + return (item.getIntByHash(ItemProp::RequiredStrength) <= StrengthNow() && + item.getIntByHash(ItemProp::RequiredMagic) <= MagicNow() && + item.getIntByHash(ItemProp::RequiredDexterity) <= DexterityNow() && + item.getIntByHash(ItemProp::RequiredVitality) <= VitalityNow()); } diff --git a/src/Game/Player.h b/src/Game/Player.h index 72d48c26..07b95523 100755 --- a/src/Game/Player.h +++ b/src/Game/Player.h @@ -10,6 +10,8 @@ class Player : public LevelObject { private: + const PlayerClass* class_{ nullptr }; + sf::Sprite sprite; MapCoord mapPosition; MapCoord mapPositionMoveTo; @@ -19,10 +21,10 @@ class Player : public LevelObject std::vector walkPath; - std::shared_ptr class_; - PlayerDirection direction{ PlayerDirection::All }; - PlayerStatus status{ PlayerStatus::Stand1 }; + PlayerStatus status{ PlayerStatus::Size }; + + uint8_t restStatus{ 0 }; size_t celIdx{ 0 }; size_t palette{ 0 }; @@ -31,10 +33,9 @@ class Player : public LevelObject std::pair frameRange; size_t currentFrame{ 0 }; - sf::Time frameTime{ sf::milliseconds(50) }; - sf::Time currentFrameTime; + AnimationSpeed speed; - sf::Time walkTime{ sf::milliseconds(66) }; + sf::Time currentAnimationTime; sf::Time currentWalkTime; std::shared_ptr action; @@ -45,6 +46,7 @@ class Player : public LevelObject std::shared_ptr selectedItem; std::array inventories; + size_t bodyInventoryIdx{ (size_t)PlayerInventory::Size }; std::string id; std::string name; @@ -55,24 +57,32 @@ class Player : public LevelObject uint32_t points{ 0 }; uint32_t gold{ 0 }; - LevelObjValue strengthBase{ 0 }; - LevelObjValue strengthNow{ 0 }; - LevelObjValue magicBase{ 0 }; - LevelObjValue magicNow{ 0 }; - LevelObjValue dexterityBase{ 0 }; - LevelObjValue dexterityNow{ 0 }; - LevelObjValue vitalityBase{ 0 }; - LevelObjValue vitalityNow{ 0 }; - - LevelObjValue lifeBase{ 0 }; - LevelObjValue lifeNow{ 0 }; - LevelObjValue manaBase{ 0 }; - LevelObjValue manaNow{ 0 }; - - LevelObjValue armorClass{ 0 }; + LevelObjValue strength{ 0 }; + LevelObjValue strengthItems{ 0 }; + LevelObjValue magic{ 0 }; + LevelObjValue magicItems{ 0 }; + LevelObjValue dexterity{ 0 }; + LevelObjValue dexterityItems{ 0 }; + LevelObjValue vitality{ 0 }; + LevelObjValue vitalityItems{ 0 }; + + LevelObjValue life{ 0 }; + LevelObjValue lifeItems{ 0 }; + LevelObjValue lifeDamage{ 0 }; + LevelObjValue mana{ 0 }; + LevelObjValue manaItems{ 0 }; + LevelObjValue manaDamage{ 0 }; + + LevelObjValue armor{ 0 }; + LevelObjValue armorItems{ 0 }; LevelObjValue toHit{ 0 }; + LevelObjValue toHitItems{ 0 }; LevelObjValue damageMin{ 0 }; + LevelObjValue damageMinItems{ 0 }; LevelObjValue damageMax{ 0 }; + LevelObjValue damageMaxItems{ 0 }; + LevelObjValue toDamage{ 0 }; + float toDamagePercentage{ 0.f }; LevelObjValue resistMagic{ 0 }; LevelObjValue resistFire{ 0 }; @@ -80,13 +90,21 @@ class Player : public LevelObject void calculateRange(); + void updateMapPosition(Level& level, const MapCoord& pos); + + void updateWalkPathStep(sf::Vector2f& newDrawPos); void updateWalkPath(Game& game, Level& level); bool parseInventoryAndItem(const std::string& str, std::string& props, size_t& invIdx, size_t& itemIdx) const; + void updateGoldAdd(const std::shared_ptr& item); + void updateGoldRemove(const std::shared_ptr& item); + + void updateBodyItemValues(); + public: - Player(const std::shared_ptr& class__) : class_(class__) + Player(const PlayerClass* class__) : class_(class__) { calculateRange(); } @@ -99,20 +117,16 @@ class Player : public LevelObject return sf::Vector2f((float)sprite.getTextureRect().width, (float)sprite.getTextureRect().height); } - virtual const MapCoord& MapPosition() const - { - if (walkPath.empty() == false) - { - return walkPath.back(); - } - return mapPosition; - } + virtual const MapCoord& MapPosition() const { return mapPosition; } virtual void MapPosition(const MapCoord& pos) { mapPosition = pos; } void MapPosition(Level& level, const MapCoord& pos); + void move(Level& level, const MapCoord& pos); + const MapCoord& MapPositionMoveTo() const { return mapPositionMoveTo; } virtual void executeAction(Game& game) const; + virtual bool getNumberProp(const std::string& prop, Number32& value) const; virtual bool Passable() const { return false; } virtual void setAction(const std::shared_ptr& action_) { action = action_; } @@ -129,17 +143,35 @@ class Player : public LevelObject virtual void setProperty(const std::string& prop, const Variable& val); virtual const Queryable* getQueryable(const std::string& prop) const; - bool getPlayerPropertyByHash(uint16_t propHash, LevelObjValue& value) const; - bool getPlayerProperty(const char* prop, LevelObjValue& value) const; - bool getPlayerProperty(const std::string& prop, LevelObjValue& value) const + bool getIntByHash(uint16_t propHash, LevelObjValue& value) const; + bool getInt(const char* prop, LevelObjValue& value) const; + bool getInt(const std::string& prop, LevelObjValue& value) const { - return getPlayerProperty(prop.c_str(), value); + return getInt(prop.c_str(), value); } - void setPlayerPropertyByHash(uint16_t propHash, LevelObjValue value); - void setPlayerProperty(const char* prop, LevelObjValue value); - void setPlayerProperty(const std::string& prop, LevelObjValue value) const + bool getUIntByHash(uint16_t propHash, uint32_t& value) const; + bool getUInt(const char* prop, uint32_t& value) const; + bool getUInt(const std::string& prop, uint32_t& value) const { - return setPlayerProperty(prop.c_str(), value); + return getUInt(prop.c_str(), value); + } + bool setIntByHash(uint16_t propHash, LevelObjValue value); + bool setInt(const char* prop, LevelObjValue value); + bool setInt(const std::string& prop, LevelObjValue value) + { + return setInt(prop.c_str(), value); + } + bool setUIntByHash(uint16_t propHash, uint32_t value); + bool setUInt(const char* prop, uint32_t value); + bool setUInt(const std::string& prop, uint32_t value) + { + return setUInt(prop.c_str(), value); + } + void setNumberByHash(uint16_t propHash, LevelObjValue value); + void setNumber(const char* prop, LevelObjValue value); + void setNumber(const std::string& prop, LevelObjValue value) + { + return setNumber(prop.c_str(), value); } void updateDrawPosition(sf::Vector2f pos); @@ -147,8 +179,7 @@ class Player : public LevelObject void updateTexture(); - void setWalkSpeed(int fps); - void clearWalkPath() { walkPath = {}; } + void clearWalkPath() { walkPath.clear(); } void setWalkPath(const std::vector& walkPath_); void setDirection(PlayerDirection direction_) @@ -164,6 +195,7 @@ class Player : public LevelObject if (status != status_) { status = status_; + speed = class_->getSpeed(status); calculateRange(); } } @@ -180,6 +212,23 @@ class Player : public LevelObject } } + void setRestStatus(uint16_t restStatus_) { restStatus = std::min(restStatus_, (uint16_t)1); } + + void setStandStatus() + { + setStatus((PlayerStatus)((size_t)PlayerStatus::Stand1 + restStatus)); + } + void setWalkStatus() + { + setStatus((PlayerStatus)((size_t)PlayerStatus::Walk1 + restStatus)); + } + bool hasWalkingStatus() + { + return status >= PlayerStatus::Walk1 && status <= PlayerStatus::Walk2; + } + + void resetAnimationTime() { currentAnimationTime = speed.animation; } + const std::shared_ptr& SelectedItem() const { return selectedItem; } void SelectedItem(const std::shared_ptr& item) { selectedItem = item; } @@ -189,7 +238,12 @@ class Player : public LevelObject ItemCollection& getInventory(size_t idx) { return inventories[idx]; } const ItemCollection& getInventory(size_t idx) const { return inventories[idx]; } - size_t getInventorySize() { return inventories.size(); } + size_t getInventorySize() const { return inventories.size(); } + + void setBodyInventoryIdx(size_t idx) + { + bodyInventoryIdx = std::min(idx, (size_t)PlayerInventory::Size); + } bool getItemSlot(const Item& item, size_t& invIdx, size_t& itemIdx, InventoryPosition invPos = InventoryPosition::TopLeft) const; @@ -201,23 +255,62 @@ class Player : public LevelObject unsigned countFreeSlots(const ItemClass& itemClass) const; - void updatePlayerProperties(PlayerInventory inv) { updatePlayerProperties((size_t)inv); } - void updatePlayerProperties(size_t idx); + bool setItem(PlayerInventory inv, size_t itemIdx, const std::shared_ptr& item) + { + return setItem((size_t)inv, itemIdx, item); + } + bool setItem(PlayerInventory inv, size_t itemIdx, const std::shared_ptr& item, + std::shared_ptr& oldItem) + { + return setItem((size_t)inv, itemIdx, item, oldItem); + } + bool setItem(size_t invIdx, size_t itemIdx, const std::shared_ptr& item); + bool setItem(size_t invIdx, size_t itemIdx, const std::shared_ptr& item, + std::shared_ptr& oldItem); + + bool setItemInFreeSlot(PlayerInventory inv, const std::shared_ptr& item, + InventoryPosition invPos = InventoryPosition::TopLeft) + { + return setItemInFreeSlot((size_t)inv, item, invPos); + } + bool setItemInFreeSlot(size_t invIdx, const std::shared_ptr& item, + InventoryPosition invPos = InventoryPosition::TopLeft); + + void updatePlayerProperties(); void applyDefaults(); bool canEquipItem(const Item& item) const; bool addGold(const Level& level, LevelObjValue amount); - void updateGoldAdd(const std::shared_ptr& item); - void updateGoldRemove(const std::shared_ptr& item); uint32_t getMaxGoldCapacity(const Level& level) const; + const PlayerClass* getPlayerClass() const { return class_; } + const std::string& Id() const { return id; } const std::string& Name() const { return name; } const std::string& Class() const { return class_->Name(); } + LevelObjValue StrengthNow() const { return strength + strengthItems; } + LevelObjValue MagicNow() const { return magic + magicItems; } + LevelObjValue DexterityNow() const { return dexterity + dexterityItems; } + LevelObjValue VitalityNow() const { return vitality + vitalityItems; } + + LevelObjValue LifeNow() const { return life + lifeItems - lifeDamage; } + LevelObjValue ManaNow() const { return mana + manaItems - manaDamage; } + + LevelObjValue DamageMinNow() const + { + auto damg = damageMin + damageMinItems; + return damg + (LevelObjValue)(damg * toDamagePercentage); + } + LevelObjValue DamageMaxNow() const + { + auto damg = damageMax + damageMaxItems; + return damg + (LevelObjValue)(damg * toDamagePercentage); + } + void Id(const std::string& id_) { id = id_; } void Name(const std::string& name_) { name = name_; } @@ -226,21 +319,17 @@ class Player : public LevelObject void ExpNextLevel(uint32_t expNextLevel_) { expNextLevel = expNextLevel_; } void Points(uint32_t points_) { points = points_; } - void StrengthBase(LevelObjValue strengthBase_) { strengthBase = strengthBase_; } - void StrengthNow(LevelObjValue strengthNow_) { strengthNow = strengthNow_; } - void MagicBase(LevelObjValue magicBase_) { magicBase = magicBase_; } - void MagicNow(LevelObjValue magicNow_) { magicNow = magicNow_; } - void DexterityBase(LevelObjValue dexterityBase_) { dexterityBase = dexterityBase_; } - void DexterityNow(LevelObjValue dexterityNow_) { dexterityNow = dexterityNow_; } - void VitalityBase(LevelObjValue vitalityBase_) { vitalityBase = vitalityBase_; } - void VitalityNow(LevelObjValue vitalityNow_) { vitalityNow = vitalityNow_; } - - void LifeBase(LevelObjValue lifeBase_) { lifeBase = lifeBase_; } - void LifeNow(LevelObjValue lifeNow_) { lifeNow = lifeNow_; } - void ManaBase(LevelObjValue manaBase_) { manaBase = manaBase_; } - void ManaNow(LevelObjValue manaNow_) { manaNow = manaNow_; } - - void ArmorClass(LevelObjValue armorClass_) { armorClass = armorClass_; } + void Strength(LevelObjValue strength_) { strength = strength_; } + void Magic(LevelObjValue magic_) { magic = magic_; } + void Dexterity(LevelObjValue dexterity_) { dexterity = dexterity_; } + void Vitality(LevelObjValue vitality_) { vitality = vitality_; } + + void Life(LevelObjValue life_) { life = life_; } + void LifeDamage(LevelObjValue lifeDamage_) { lifeDamage = lifeDamage_; } + void Mana(LevelObjValue manaBase_) { mana = manaBase_; } + void ManaDamage(LevelObjValue manaDamage_) { manaDamage = manaDamage_; } + + void Armor(LevelObjValue armor_) { armor = armor_; } void ToHit(LevelObjValue toHit_) { toHit = toHit_; } void DamageMin(LevelObjValue damage_) { damageMin = damage_; } void DamageMax(LevelObjValue damage_) { damageMax = damage_; } diff --git a/src/Game/PlayerClass.cpp b/src/Game/PlayerClass.cpp index 760df6c5..5d1fc10c 100755 --- a/src/Game/PlayerClass.cpp +++ b/src/Game/PlayerClass.cpp @@ -18,3 +18,38 @@ void PlayerClass::setDefault(const char* prop, LevelObjValue val) } defaults.push_back(std::make_pair(propertyHash, val)); } + +AnimationSpeed PlayerClass::getSpeed(PlayerStatus status) const +{ + for (auto& elem : animationSpeeds) + { + if (elem.first == status) + { + return elem.second; + } + } + return {}; +} + +void PlayerClass::setSpeed(PlayerStatus status, const AnimationSpeed& speed) +{ + for (auto& elem : animationSpeeds) + { + if (elem.first == status) + { + elem.second = speed; + return; + } + } + animationSpeeds.push_back(std::make_pair(status, speed)); +} + +LevelObjValue PlayerClass::evalFormula(size_t idx, + const LevelObject& query, LevelObjValue default_) const +{ + if (formulas[idx].empty() == true) + { + return default_; + } + return (LevelObjValue)formulas[idx].eval(query); +} diff --git a/src/Game/PlayerClass.h b/src/Game/PlayerClass.h index 287669fc..40e75965 100755 --- a/src/Game/PlayerClass.h +++ b/src/Game/PlayerClass.h @@ -1,12 +1,11 @@ #pragma once #include "CelCache.h" +#include "Formula.h" #include "GameProperties.h" #include #include -class Player; - class PlayerClass { private: @@ -19,6 +18,22 @@ class PlayerClass std::vector defaults; + LevelObjValue maxStrength{ 0 }; + LevelObjValue maxMagic{ 0 }; + LevelObjValue maxDexterity{ 0 }; + LevelObjValue maxVitality{ 0 }; + + LevelObjValue maxResistMagic{ 0 }; + LevelObjValue maxResistFire{ 0 }; + LevelObjValue maxResistLightning{ 0 }; + + std::vector> animationSpeeds; + + std::array formulas; + + LevelObjValue evalFormula(size_t idx, + const LevelObject& query, LevelObjValue default_) const; + public: PlayerClass() : statusCelIndexes() {} @@ -42,7 +57,7 @@ class PlayerClass void clearStatusCelIndexes() { statusCelIndexes.fill(0); } - size_t getStatusCelIndex(PlayerStatus status) + size_t getStatusCelIndex(PlayerStatus status) const { if (status < PlayerStatus::Size) { @@ -64,9 +79,12 @@ class PlayerClass return celTextures; } - const std::vector Defaults() const { return defaults; } + const std::vector& Defaults() const { return defaults; } void setDefault(const char* prop, LevelObjValue val); + AnimationSpeed getSpeed(PlayerStatus status) const; + void setSpeed(PlayerStatus status, const AnimationSpeed& speed); + const std::string& Name() const { return name; } const std::string& Type() const { return type; } const std::string& Description() const { return description; } @@ -74,4 +92,49 @@ class PlayerClass void Name(const std::string& name_) { name = name_; } void Type(const std::string& type_) { type = type_; } void Description(const std::string& description_) { description = description_; } + + LevelObjValue MaxStrength() const { return maxStrength; } + LevelObjValue MaxMagic() const { return maxMagic; } + LevelObjValue MaxDexterity() const { return maxDexterity; } + LevelObjValue MaxVitality() const { return maxVitality; } + + LevelObjValue MaxResistMagic() const { return maxResistMagic; } + LevelObjValue MaxResistFire() const { return maxResistFire; } + LevelObjValue MaxResistLightning() const { return maxResistLightning; } + + void MaxStrength(LevelObjValue val) { maxStrength = val; } + void MaxMagic(LevelObjValue val) { maxMagic = val; } + void MaxDexterity(LevelObjValue val) { maxDexterity = val; } + void MaxVitality(LevelObjValue val) { maxVitality = val; } + + void MaxResistMagic(LevelObjValue val) { maxResistMagic = val; } + void MaxResistFire(LevelObjValue val) { maxResistFire = val; } + void MaxResistLightning(LevelObjValue val) { maxResistLightning = val; } + + void setLifeFormula(const Formula& formula) { formulas[0] = formula; } + void setManaFormula(const Formula& formula) { formulas[1] = formula; } + void setArmorFormula(const Formula& formula) { formulas[2] = formula; } + void setToHitFormula(const Formula& formula) { formulas[3] = formula; } + void setDamageFormula(const Formula& formula) { formulas[4] = formula; } + + LevelObjValue getActualLife(const LevelObject& query, LevelObjValue default_) const + { + return evalFormula(0, query, default_); + } + LevelObjValue getActualMana(const LevelObject& query, LevelObjValue default_) const + { + return evalFormula(1, query, default_); + } + LevelObjValue getActualArmor(const LevelObject& query, LevelObjValue default_) const + { + return evalFormula(2, query, default_); + } + LevelObjValue getActualToHit(const LevelObject& query, LevelObjValue default_) const + { + return evalFormula(3, query, default_); + } + LevelObjValue getActualDamage(const LevelObject& query, LevelObjValue default_) const + { + return evalFormula(4, query, default_); + } }; diff --git a/src/Json/JsonUtils.cpp b/src/Json/JsonUtils.cpp index 396ea60b..701c82e6 100755 --- a/src/Json/JsonUtils.cpp +++ b/src/Json/JsonUtils.cpp @@ -215,7 +215,7 @@ namespace JsonUtils } else if (elem.IsDouble() == true) { - return std::to_string(elem.GetDouble()); + return Utils::toString(elem.GetDouble()); } else if (elem.IsBool() == true) { diff --git a/src/Parser/Game/ParseItem.cpp b/src/Parser/Game/ParseItem.cpp index 632ab561..a20b2520 100755 --- a/src/Parser/Game/ParseItem.cpp +++ b/src/Parser/Game/ParseItem.cpp @@ -32,7 +32,7 @@ namespace Parser { if (it->name.GetStringLength() > 0) { - item->setItemProperty(it->name.GetString(), + item->setInt(it->name.GetString(), getMinMaxIntVal(it->value)); } } @@ -44,7 +44,7 @@ namespace Parser void parseItem(Game& game, const Value& elem) { - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; diff --git a/src/Parser/Game/ParseItemClass.cpp b/src/Parser/Game/ParseItemClass.cpp index 6fe82307..d7077738 100755 --- a/src/Parser/Game/ParseItemClass.cpp +++ b/src/Parser/Game/ParseItemClass.cpp @@ -19,6 +19,10 @@ namespace Parser { return nullptr; } + if (level.hasItemClass(id) == true) + { + return nullptr; + } std::shared_ptr itemClass; @@ -91,7 +95,7 @@ namespace Parser void parseItemClass(Game& game, const Value& elem) { - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; @@ -193,6 +197,27 @@ namespace Parser itemClass->setDescription(4, namer); } + if (elem.HasMember("price1") == true) + { + itemClass->setPriceFormula(0, getStringVal(elem["price1"])); + } + if (elem.HasMember("price2") == true) + { + itemClass->setPriceFormula(1, getStringVal(elem["price2"])); + } + if (elem.HasMember("price3") == true) + { + itemClass->setPriceFormula(2, getStringVal(elem["price3"])); + } + if (elem.HasMember("price4") == true) + { + itemClass->setPriceFormula(3, getStringVal(elem["price4"])); + } + if (elem.HasMember("price5") == true) + { + itemClass->setPriceFormula(4, getStringVal(elem["price5"])); + } + level->addItemClass(id, itemClass); } } diff --git a/src/Parser/Game/ParseLevelObject.cpp b/src/Parser/Game/ParseLevelObject.cpp index 98c4a1ff..e1a6b76d 100755 --- a/src/Parser/Game/ParseLevelObject.cpp +++ b/src/Parser/Game/ParseLevelObject.cpp @@ -20,7 +20,7 @@ namespace Parser return; } - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; diff --git a/src/Parser/Game/ParseNamer.cpp b/src/Parser/Game/ParseNamer.cpp index ab77b1f0..12401321 100755 --- a/src/Parser/Game/ParseNamer.cpp +++ b/src/Parser/Game/ParseNamer.cpp @@ -108,7 +108,7 @@ namespace Parser { return; } - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; diff --git a/src/Parser/Game/ParsePlayer.cpp b/src/Parser/Game/ParsePlayer.cpp index 5564b47a..e3c4f019 100755 --- a/src/Parser/Game/ParsePlayer.cpp +++ b/src/Parser/Game/ParsePlayer.cpp @@ -10,7 +10,7 @@ namespace Parser using namespace rapidjson; void parsePlayerItem(Game& game, const Level& level, - ItemCollection& inventory, Player& player, const Value& elem) + ItemCollection& inventory, Player& player, size_t invIdx, const Value& elem) { if (elem.HasMember("index") == false) { @@ -34,16 +34,12 @@ namespace Parser { return; } - auto item = parseItemObj(game, level, elem); - if (itemIdx < inventory.Size()) + if (itemIdx >= inventory.Size()) { - std::shared_ptr oldItem; - if (inventory.set(itemIdx, item, oldItem) == true) - { - player.updateGoldRemove(oldItem); - player.updateGoldAdd(item); - } + return; } + auto item = parseItemObj(game, level, elem); + player.setItem(invIdx, itemIdx, item); } void parsePlayerInventory(Game& game, const Level& level, @@ -96,6 +92,10 @@ namespace Parser inventory.setEnforceItemSize(getBoolKey(elem, "enforceItemSize")); + if (getBoolKey(elem, "bodyInventory") == true) + { + player.setBodyInventoryIdx(invIdx); + } if (elem.HasMember("allowedClassTypes") == true) { const auto& classesElem = elem["allowedClassTypes"]; @@ -118,12 +118,12 @@ namespace Parser { for (const auto& val : itemsElem) { - parsePlayerItem(game, level, inventory, player, val); + parsePlayerItem(game, level, inventory, player, invIdx, val); } } else if (itemsElem.IsObject() == true) { - parsePlayerItem(game, level, inventory, player, itemsElem); + parsePlayerItem(game, level, inventory, player, invIdx, itemsElem); } } } @@ -141,7 +141,7 @@ namespace Parser return; } - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; @@ -174,23 +174,15 @@ namespace Parser player->MapPosition(mapPos); player->MapPosition(*level, mapPos); - player->updateTexture(); - player->updateDrawPosition(); - player->Hoverable(getBoolKey(elem, "enableHover", true)); - player->setWalkSpeed(getIntKey(elem, "speed", 15)); - player->setDirection(getPlayerDirectionKey(elem, "direction")); player->setStatus(getPlayerStatusKey(elem, "status")); + player->setRestStatus((uint8_t)getUIntKey(elem, "restStatus")); player->setPalette(getUIntKey(elem, "palette")); player->Id(id); player->Name(getStringKey(elem, "name")); - player->CurrentLevel(getUIntKey(elem, "level")); - player->Experience(getUIntKey(elem, "experience")); - player->ExpNextLevel(getUIntKey(elem, "expNextLevel")); - player->Points(getUIntKey(elem, "points")); if (elem.HasMember("properties") == true) { @@ -201,7 +193,7 @@ namespace Parser { if (it->name.GetStringLength() > 0) { - player->setPlayerProperty(it->name.GetString(), + player->setNumber(it->name.GetString(), getMinMaxIntVal(it->value)); } } @@ -229,7 +221,9 @@ namespace Parser } } - player->updatePlayerProperties(PlayerInventory::Body); + player->updatePlayerProperties(); + player->updateTexture(); + player->updateDrawPosition(); level->addPlayer(player); diff --git a/src/Parser/Game/ParsePlayerClass.cpp b/src/Parser/Game/ParsePlayerClass.cpp index 3a7a2b9b..34455583 100755 --- a/src/Parser/Game/ParsePlayerClass.cpp +++ b/src/Parser/Game/ParsePlayerClass.cpp @@ -24,6 +24,20 @@ namespace Parser playerClass.setCelTexture(getUIntKey(elem, "palette"), celTexture); } + sf::Time getTime(int fps) + { + fps = std::max(std::min(fps, 1000), 1); + return sf::seconds(1.f / (float)fps); + } + + void parsePlayerAnimationSpeed(PlayerClass& playerClass, const Value& elem) + { + AnimationSpeed speed; + speed.animation = getTime(getIntKey(elem, "animation", 5)); + speed.walk = getTime(getIntKey(elem, "walk", 25)); + playerClass.setSpeed(getPlayerStatusKey(elem, "name"), speed); + } + void parsePlayerClass(Game& game, const Value& elem) { if (isValidString(elem, "id") == false || @@ -37,11 +51,15 @@ namespace Parser return; } - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; } + if (level->getPlayerClass(id) != nullptr) + { + return; + } auto playerClass = std::make_shared(); @@ -101,6 +119,52 @@ namespace Parser } } + if (elem.HasMember("animationSpeeds") == true) + { + const auto& speeds = elem["animationSpeeds"]; + if (speeds.IsObject() == true) + { + parsePlayerAnimationSpeed(*playerClass, speeds); + } + else if (speeds.IsArray() == true) + { + for (const auto& val : speeds) + { + parsePlayerAnimationSpeed(*playerClass, val); + } + } + } + + playerClass->MaxStrength(getIntKey(elem, "maxStrength", 250)); + playerClass->MaxMagic(getIntKey(elem, "maxMagic", 250)); + playerClass->MaxDexterity(getIntKey(elem, "maxDexterity", 250)); + playerClass->MaxVitality(getIntKey(elem, "maxVitality", 250)); + + playerClass->MaxResistMagic(getIntKey(elem, "maxResistMagic", 100)); + playerClass->MaxResistFire(getIntKey(elem, "maxResistFire", 100)); + playerClass->MaxResistLightning(getIntKey(elem, "maxResistLightning", 100)); + + if (elem.HasMember("lifeFormula") == true) + { + playerClass->setLifeFormula(getStringVal(elem["lifeFormula"])); + } + if (elem.HasMember("manaFormula") == true) + { + playerClass->setManaFormula(getStringVal(elem["manaFormula"])); + } + if (elem.HasMember("armorFormula") == true) + { + playerClass->setArmorFormula(getStringVal(elem["armorFormula"])); + } + if (elem.HasMember("toHitFormula") == true) + { + playerClass->setToHitFormula(getStringVal(elem["toHitFormula"])); + } + if (elem.HasMember("damageFormula") == true) + { + playerClass->setDamageFormula(getStringVal(elem["damageFormula"])); + } + level->addPlayerClass(id, playerClass); } } diff --git a/src/Parser/Game/ParseQuest.cpp b/src/Parser/Game/ParseQuest.cpp index 1470f8e5..5d7cc0d7 100755 --- a/src/Parser/Game/ParseQuest.cpp +++ b/src/Parser/Game/ParseQuest.cpp @@ -13,7 +13,7 @@ namespace Parser void parseQuest(Game& game, const rapidjson::Value& elem) { - auto level = game.Resources().getLevel(getStringKey(elem, "idLevel")); + auto level = game.Resources().getLevel(getStringKey(elem, "level")); if (level == nullptr) { return; diff --git a/src/Parser/ParseAction.cpp b/src/Parser/ParseAction.cpp index 8690ee14..ae23b95b 100755 --- a/src/Parser/ParseAction.cpp +++ b/src/Parser/ParseAction.cpp @@ -172,7 +172,7 @@ namespace Parser { return std::make_shared>( getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemLocationVal(elem), getBoolKey(elem, "equipable", true), getBoolKey(elem, "resetRect")); @@ -551,7 +551,7 @@ namespace Parser { return std::make_shared>( getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemLocationVal(elem), getBoolKey(elem, "equipable", true), getBoolKey(elem, "resetRect")); @@ -594,25 +594,25 @@ namespace Parser case str2int16("item.delete"): { return std::make_shared( - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemLocationVal(elem)); } case str2int16("item.drop"): { return std::make_shared( - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemCoordInventoryVal(elem)); } case str2int16("item.executeDropAction"): { return std::make_shared( - getStringKey(elem, "idLevel"), - getStringKey(elem, "idPlayer")); + getStringKey(elem, "level"), + getStringKey(elem, "player")); } case str2int16("item.loadFromLevel"): { auto action = std::make_shared( - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemCoordInventoryVal(elem)); if (elem.HasMember("position") == true) @@ -628,7 +628,7 @@ namespace Parser case str2int16("item.move"): { return std::make_shared( - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemLocationKey(elem, "from"), getItemLocationKey(elem, "to")); } @@ -636,15 +636,15 @@ namespace Parser { return std::make_shared( getItemLocationVal(elem), - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getStringKey(elem, "property"), getVariableKey(elem, "value")); } case str2int16("item.trade"): { auto action = std::make_shared( - getStringKey(elem, "idLevel"), - getStringKey(elem, "idPlayer"), + getStringKey(elem, "level"), + getStringKey(elem, "player"), getItemCoordInventoryKey(elem, "item"), getInventoryPositionKey(elem, "position")); @@ -657,51 +657,51 @@ namespace Parser case str2int16("item.update"): { return std::make_shared( - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), getItemCoordInventoryVal(elem)); } case str2int16("level.clearObjects"): { - return std::make_shared(getStringKey(elem, "id")); + return std::make_shared(getStringKey(elem, "level")); } case str2int16("level.clearPlayerClasses"): { return std::make_shared( - getStringKey(elem, "id"), + getStringKey(elem, "level"), (size_t)getUIntKey(elem, "index")); } case str2int16("level.clearPlayers"): { return std::make_shared( - getStringKey(elem, "id"), + getStringKey(elem, "level"), (size_t)getUIntKey(elem, "index")); } case str2int16("level.move"): { return std::make_shared( - getStringKey(elem, "id"), + getStringKey(elem, "level"), getVector2uKey(elem, "position")); } case str2int16("level.moveToClick"): { - return std::make_shared(getStringKey(elem, "id")); + return std::make_shared(getStringKey(elem, "level")); } case str2int16("level.moveToPlayer"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idPlayer")); + getStringKey(elem, "level"), + getStringKey(elem, "player")); } case str2int16("level.pause"): { return std::make_shared( - getStringKey(elem, "id"), + getStringKey(elem, "level"), getBoolKey(elem, "pause", true)); } case str2int16("level.zoom"): { return std::make_shared( - getStringKey(elem, "id"), + getStringKey(elem, "level"), getIntKey(elem, "zoom", 100), getBoolKey(elem, "relative"), getBoolKey(elem, "smooth")); @@ -798,61 +798,70 @@ namespace Parser case str2int16("player.addGold"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "player"), + getStringKey(elem, "level"), getVariableKey(elem, "gold"), getBoolKey(elem, "remove")); } + case str2int16("player.addToProperty"): + { + return std::make_shared( + getStringKey(elem, "player"), + getStringKey(elem, "level"), + getStringKey(elem, "property"), + getVariableKey(elem, "value"), + getBoolKey(elem, "remove")); + } case str2int16("player.move"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "player"), + getStringKey(elem, "level"), getVector2uKey(elem, "position"), getBoolKey(elem, "resetDirection")); } case str2int16("player.moveToClick"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel")); + getStringKey(elem, "player"), + getStringKey(elem, "level")); } case str2int16("player.removeGold"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "player"), + getStringKey(elem, "level"), getVariableKey(elem, "gold"), true); } case str2int16("player.setDirection"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "player"), + getStringKey(elem, "level"), getPlayerDirectionKey(elem, "direction")); } case str2int16("player.setPalette"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "player"), + getStringKey(elem, "level"), getUIntKey(elem, "palette")); } case str2int16("player.setProperty"): { return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), + getStringKey(elem, "player"), + getStringKey(elem, "level"), getStringKey(elem, "property"), getVariableKey(elem, "value")); } - case str2int16("player.setSpeed"): + case str2int16("player.setRestStatus"): { - return std::make_shared( - getStringKey(elem, "id"), - getStringKey(elem, "idLevel"), - getIntKey(elem, "speed", 30)); + return std::make_shared( + getStringKey(elem, "player"), + getStringKey(elem, "level"), + (uint8_t)getUIntKey(elem, "status")); } case str2int16("quest.add"): { @@ -862,20 +871,20 @@ namespace Parser return nullptr; } return std::make_shared( - getStringKey(elem, "idLevel"), + getStringKey(elem, "level"), quest); } case str2int16("quest.delete"): { return std::make_shared( - getStringKey(elem, "idLevel"), - getStringKey(elem, "idQuest")); + getStringKey(elem, "level"), + getStringKey(elem, "quest")); } case str2int16("quest.setState"): { return std::make_shared( - getStringKey(elem, "idLevel"), - getStringKey(elem, "idQuest"), + getStringKey(elem, "level"), + getStringKey(elem, "quest"), getIntKey(elem, "state")); } case str2int16("randomList"): diff --git a/src/Parser/ParseButton.cpp b/src/Parser/ParseButton.cpp index e53ebf97..97052e0a 100755 --- a/src/Parser/ParseButton.cpp +++ b/src/Parser/ParseButton.cpp @@ -107,6 +107,10 @@ namespace Parser button->enable(getBoolKey(elem, "enable", true)); button->setClickUp(getBoolKey(elem, "clickUp")); + if (elem.HasMember("onChange")) + { + button->setAction(str2int16("change"), parseAction(game, elem["onChange"])); + } if (elem.HasMember("onClick")) { button->setAction(str2int16("click"), parseAction(game, elem["onClick"])); diff --git a/src/Parser/ParseCelFile.cpp b/src/Parser/ParseCelFile.cpp index 7483d787..1208846f 100755 --- a/src/Parser/ParseCelFile.cpp +++ b/src/Parser/ParseCelFile.cpp @@ -74,6 +74,10 @@ namespace Parser { return; } + if (game.Resources().hasCelFile(id) == true) + { + return; + } auto celFile = parseCelFileObj(game, elem); if (celFile == nullptr) { diff --git a/src/Parser/ParseCelTexture.cpp b/src/Parser/ParseCelTexture.cpp index 019f7cc2..a8043c8c 100755 --- a/src/Parser/ParseCelTexture.cpp +++ b/src/Parser/ParseCelTexture.cpp @@ -60,11 +60,19 @@ namespace Parser { return; } + if (game.Resources().hasCelTextureCache(id) == true) + { + return; + } const CelFile* celObj = nullptr; if (elem.HasMember("file") == true) { + if (game.Resources().hasCelFile(id) == true) + { + return; + } auto cel = parseCelFileObj(game, elem); if (cel != nullptr) { diff --git a/src/Parser/ParseCelTexturePack.cpp b/src/Parser/ParseCelTexturePack.cpp index 979960ec..4f57632a 100755 --- a/src/Parser/ParseCelTexturePack.cpp +++ b/src/Parser/ParseCelTexturePack.cpp @@ -60,11 +60,19 @@ namespace Parser { return; } + if (game.Resources().hasCelTextureCacheVec(id) == true) + { + return; + } std::vector celVec; if (elem.HasMember("file") == true) { + if (game.Resources().hasCelFile(id) == true) + { + return; + } auto cel = parseCelFileObj(game, elem); if (cel != nullptr) { diff --git a/src/Parser/ParseFile.cpp b/src/Parser/ParseFile.cpp index f5a9bdd9..228ddd02 100755 --- a/src/Parser/ParseFile.cpp +++ b/src/Parser/ParseFile.cpp @@ -78,7 +78,7 @@ namespace Parser auto json = FileUtils::readText(fileName.c_str()); for (size_t i = 1; i < params.size(); i++) { - auto param = game.getVariableString(params[i]); + auto param = game.getVarOrPropString(params[i]); Utils::replaceStringInPlace(json, "{" + std::to_string(i) + "}", param); } parseJson(game, json); @@ -104,7 +104,7 @@ namespace Parser auto json = FileUtils::readText(fileName.c_str()); for (size_t i = 1; i < params.Size(); i++) { - auto param = game.getVariableString(getStringVal(params[i])); + auto param = game.getVarOrPropString(getStringVal(params[i])); Utils::replaceStringInPlace(json, "{" + std::to_string(i) + "}", param); } parseJson(game, json); diff --git a/src/Parser/ParsePalette.cpp b/src/Parser/ParsePalette.cpp index afc5fa7a..b71de530 100755 --- a/src/Parser/ParsePalette.cpp +++ b/src/Parser/ParsePalette.cpp @@ -53,6 +53,10 @@ namespace Parser { return; } + if (game.Resources().hasPalette(id) == true) + { + return; + } auto palette = std::make_shared(file); game.Resources().addPalette(id, palette); @@ -75,6 +79,10 @@ namespace Parser { return; } + if (game.Resources().hasPalette(id) == true) + { + return; + } auto refPalette = game.Resources().getPalette(elem["palette"].GetString()); if (refPalette == nullptr) diff --git a/src/Parser/ParseText.cpp b/src/Parser/ParseText.cpp index 4f2fc54d..708c9ba3 100755 --- a/src/Parser/ParseText.cpp +++ b/src/Parser/ParseText.cpp @@ -2,6 +2,7 @@ #include "BitmapText.h" #include "FileUtils.h" #include "GameUtils.h" +#include "ParseAction.h" #include "StringText.h" #include "Utils/ParseUtils.h" @@ -104,6 +105,11 @@ namespace Parser text->setBinding(getStringVectorKey(elem, "binding")); } text->setFormat(getStringKey(elem, "format", "[1]")); + + if (elem.HasMember("onChange")) + { + text->setAction(str2int16("change"), parseAction(game, elem["onChange"])); + } if (hasBinding == true) { text->update(game); diff --git a/src/Parser/Utils/ParseUtilsVal.cpp b/src/Parser/Utils/ParseUtilsVal.cpp index 6b0b10f7..6ce7e67a 100755 --- a/src/Parser/Utils/ParseUtilsVal.cpp +++ b/src/Parser/Utils/ParseUtilsVal.cpp @@ -78,7 +78,7 @@ namespace Parser } else if (elem.IsDouble() == true) { - return std::to_string(elem.GetDouble()); + return Utils::toString(elem.GetDouble()); } return val; } @@ -215,10 +215,10 @@ namespace Parser ItemCoordInventory getItemCoordInventoryVal(const Value& elem) { std::string playerId; - if (elem.HasMember("playerId") == true && - elem["playerId"].IsString() == true) + if (elem.HasMember("player") == true && + elem["player"].IsString() == true) { - playerId = elem["playerId"].GetString(); + playerId = elem["player"].GetString(); } PlayerInventory inv = PlayerInventory::Body; if (elem.HasMember("inventory") == true) diff --git a/src/Parser/Utils/ParseUtilsVal.h b/src/Parser/Utils/ParseUtilsVal.h index a09c646f..c611cdcd 100755 --- a/src/Parser/Utils/ParseUtilsVal.h +++ b/src/Parser/Utils/ParseUtilsVal.h @@ -90,9 +90,13 @@ namespace Parser template T getMinMaxIntVal(const rapidjson::Value& elem, T val = {}) { + if (elem.IsUint() == true) + { + return (T)elem.GetUint(); + } if (elem.IsInt() == true) { - return elem.GetInt(); + return (T)elem.GetInt(); } else if (elem.IsBool() == true) { diff --git a/src/Predicates/PredIO.h b/src/Predicates/PredIO.h index d423fa7d..a275b523 100755 --- a/src/Predicates/PredIO.h +++ b/src/Predicates/PredIO.h @@ -13,11 +13,10 @@ class PredFileExists : public Predicate virtual Variable getResult(const Game& game) const { - Variable var(file); - game.getVarOrProp(file, var); - if (var.is() == true) + auto file2 = game.getVarOrPropString(file); + if (file2.empty() == false) { - return { FileUtils::exists(var.get().c_str()) }; + return { FileUtils::exists(file2.c_str()) }; } return { false }; } diff --git a/src/ResourceManager.cpp b/src/ResourceManager.cpp index 1f68fc9b..12b82e70 100755 --- a/src/ResourceManager.cpp +++ b/src/ResourceManager.cpp @@ -61,7 +61,7 @@ void ResourceManager::popAllResources(bool popBaseResources) resources.resize(1); if (popBaseResources) { - resources[0] = ResourceBundle(); + resources.front() = ResourceBundle(); currentLevel = nullptr; currentLevelResourceIdx = 0; } @@ -139,49 +139,85 @@ void ResourceManager::setAction(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addFont(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().fonts[key] = obj; + if (res.fonts.find(key) == res.fonts.cend()) + { + res.fonts[key] = obj; + } } -void ResourceManager::addBitmapFont(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addBitmapFont(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().bitmapFonts[key] = obj; + if (res.bitmapFonts.find(key) == res.bitmapFonts.cend()) + { + res.bitmapFonts[key] = obj; + } } -void ResourceManager::addTexture(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addTexture(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().textures[key] = obj; + if (res.textures.find(key) == res.textures.cend()) + { + res.textures[key] = obj; + } } -void ResourceManager::addSong(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addSong(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().songs[key] = obj; + if (res.songs.find(key) == res.songs.cend()) + { + res.songs[key] = obj; + } } -void ResourceManager::addSound(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addSound(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().sounds[key] = obj; + if (res.sounds.find(key) == res.sounds.cend()) + { + res.sounds[key] = obj; + } } -void ResourceManager::addPalette(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addPalette(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().palettes[key] = obj; + if (hasPalette(key) == false) + { + res.palettes[key] = obj; + } } -void ResourceManager::addCelFile(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addCelFile(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().celFiles[key] = obj; + if (hasCelFile(key) == false) + { + res.celFiles[key] = obj; + } } -void ResourceManager::addCelTextureCache(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addCelTextureCache(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().celCaches[key] = obj; + if (hasCelTextureCache(key) == false) + { + res.celCaches[key] = obj; + } } -void ResourceManager::addCelTextureCacheVec(const std::string& key, const std::shared_ptr& obj) +void ResourceManager::addCelTextureCacheVec(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj) { - resources.back().celCachesVec[key] = obj; + if (hasCelTextureCacheVec(key) == false) + { + res.celCachesVec[key] = obj; + } } void ResourceManager::addDrawable(const std::string& key, const std::shared_ptr& obj) @@ -378,6 +414,54 @@ std::shared_ptr ResourceManager::getCelTextureCacheVec(co return nullptr; } +bool ResourceManager::hasPalette(const std::string& key) const +{ + for (const auto& resource : resources) + { + if (resource.palettes.find(key) != resource.palettes.cend()) + { + return true; + } + } + return false; +} + +bool ResourceManager::hasCelFile(const std::string& key) const +{ + for (const auto& resource : resources) + { + if (resource.celFiles.find(key) != resource.celFiles.cend()) + { + return true; + } + } + return false; +} + +bool ResourceManager::hasCelTextureCache(const std::string& key) const +{ + for (const auto& resource : resources) + { + if (resource.celCaches.find(key) != resource.celCaches.cend()) + { + return true; + } + } + return false; +} + +bool ResourceManager::hasCelTextureCacheVec(const std::string& key) const +{ + for (const auto& resource : resources) + { + if (resource.celCachesVec.find(key) != resource.celCachesVec.cend()) + { + return true; + } + } + return false; +} + UIObject* ResourceManager::getDrawable(const std::string& key) const { if (drawableCache.first == key) diff --git a/src/ResourceManager.h b/src/ResourceManager.h index 396158a4..9a7c922a 100755 --- a/src/ResourceManager.h +++ b/src/ResourceManager.h @@ -95,6 +95,25 @@ class ResourceManager } } + void addFont(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addBitmapFont(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addTexture(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addSong(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addSound(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addPalette(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addCelFile(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addCelTextureCache(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + void addCelTextureCacheVec(ResourceBundle& res, + const std::string& key, const std::shared_ptr& obj); + public: using iterator = std::vector::iterator; using const_iterator = std::vector::const_iterator; @@ -147,15 +166,43 @@ class ResourceManager void setKeyboardAction(const sf::Event::KeyEvent& key, const std::shared_ptr& obj); void setAction(const std::string& key, const std::shared_ptr& obj); - void addFont(const std::string& key, const std::shared_ptr& obj); - void addBitmapFont(const std::string& key, const std::shared_ptr& obj); - void addTexture(const std::string& key, const std::shared_ptr& obj); - void addSong(const std::string& key, const std::shared_ptr& obj); - void addSound(const std::string& key, const std::shared_ptr& obj); - void addPalette(const std::string& key, const std::shared_ptr& obj); - void addCelFile(const std::string& key, const std::shared_ptr& obj); - void addCelTextureCache(const std::string& key, const std::shared_ptr& obj); - void addCelTextureCacheVec(const std::string& key, const std::shared_ptr& obj); + + void addFont(const std::string& key, const std::shared_ptr& obj) + { + addFont(resources.back(), key, obj); + } + void addBitmapFont(const std::string& key, const std::shared_ptr& obj) + { + addBitmapFont(resources.back(), key, obj); + } + void addTexture(const std::string& key, const std::shared_ptr& obj) + { + addTexture(resources.back(), key, obj); + } + void addSong(const std::string& key, const std::shared_ptr& obj) + { + addSong(resources.back(), key, obj); + } + void addSound(const std::string& key, const std::shared_ptr& obj) + { + addSound(resources.back(), key, obj); + } + void addPalette(const std::string& key, const std::shared_ptr& obj) + { + addPalette(resources.back(), key, obj); + } + void addCelFile(const std::string& key, const std::shared_ptr& obj) + { + addCelFile(resources.back(), key, obj); + } + void addCelTextureCache(const std::string& key, const std::shared_ptr& obj) + { + addCelTextureCache(resources.back(), key, obj); + } + void addCelTextureCacheVec(const std::string& key, const std::shared_ptr& obj) + { + addCelTextureCacheVec(resources.back(), key, obj); + } void addDrawable(const std::string& key, const std::shared_ptr& obj); @@ -178,6 +225,11 @@ class ResourceManager std::shared_ptr getCelTextureCache(const std::string& key) const; std::shared_ptr getCelTextureCacheVec(const std::string& key) const; + bool hasPalette(const std::string& key) const; + bool hasCelFile(const std::string& key) const; + bool hasCelTextureCache(const std::string& key) const; + bool hasCelTextureCacheVec(const std::string& key) const; + UIObject* getDrawable(const std::string& key) const; template diff --git a/src/StringButton.cpp b/src/StringButton.cpp index caffaf41..0ecddc2d 100755 --- a/src/StringButton.cpp +++ b/src/StringButton.cpp @@ -7,6 +7,9 @@ void StringButton::setAction(uint16_t nameHash16, const std::shared_ptr& { switch (nameHash16) { + case str2int16("change"): + text->setAction(nameHash16, action); + return; case str2int16("click"): clickAction = action; return; diff --git a/src/StringText.h b/src/StringText.h index e34a82c5..27c46c48 100755 --- a/src/StringText.h +++ b/src/StringText.h @@ -38,11 +38,16 @@ class StringText : public DrawableText } virtual void updateSize(const Game& game); - virtual void setText(const std::string& string) + virtual bool setText(const std::string& str) { - text.setString(string); + if (text.getString() == str) + { + return false; + } + text.setString(str); calcLineCount(); calculateDrawPosition(); + return true; } virtual unsigned getLineCount() const { return lineCount; } diff --git a/src/Text2.cpp b/src/Text2.cpp index fdb152d1..11cb83c4 100755 --- a/src/Text2.cpp +++ b/src/Text2.cpp @@ -3,6 +3,16 @@ #include "GameUtils.h" #include "Utils.h" +void Text2::setAction(uint16_t nameHash16, const std::shared_ptr& action) +{ + switch (nameHash16) + { + case str2int16("change"): + changeAction = action; + return; + } +} + std::string Text2::getFormatString(const Game& game, const std::vector& bindings, const std::string& format) { @@ -10,7 +20,7 @@ std::string Text2::getFormatString(const Game& game, { if (format == "[1]") { - return game.getVariableString(bindings[0]); + return game.getVarOrPropString(bindings[0]); } else { @@ -19,7 +29,7 @@ std::string Text2::getFormatString(const Game& game, { for (size_t i = 0; i < bindings.size(); i++) { - auto str = game.getVariableString(bindings[i]); + auto str = game.getVarOrPropString(bindings[i]); Utils::replaceStringInPlace(displayText, "[" + std::to_string(i + 1) + "]", str); } } @@ -48,6 +58,14 @@ void Text2::update(Game& game) } if (bindings.size() > 0) { - text->setText(Text2::getFormatString(game, bindings, format)); + triggerOnChange = text->setText(Text2::getFormatString(game, bindings, format)); + } + if (triggerOnChange == true) + { + triggerOnChange = false; + if (changeAction != nullptr) + { + changeAction->execute(game); + } } } diff --git a/src/Text2.h b/src/Text2.h index 292dac68..dc26927e 100755 --- a/src/Text2.h +++ b/src/Text2.h @@ -10,6 +10,8 @@ class Text2 : public UIObject std::unique_ptr text; std::string format; std::vector bindings; + std::shared_ptr changeAction; + bool triggerOnChange{ false }; public: Text2(std::unique_ptr text_) : text(std::move(text_)) {} @@ -21,7 +23,7 @@ class Text2 : public UIObject std::string getText() const { return text->getText(); } void setText(std::unique_ptr text_) { text = std::move(text_); } - void setText(const std::string& text_) { text->setText(text_); } + void setText(const std::string& text_) { triggerOnChange = text->setText(text_); } sf::FloatRect getLocalBounds() const { return text->getLocalBounds(); } sf::FloatRect getGlobalBounds() const { return text->getGlobalBounds(); } @@ -35,7 +37,7 @@ class Text2 : public UIObject void setHorizontalSpaceOffset(int offset) { text->setHorizontalSpaceOffset(offset); } void setVerticalSpaceOffset(int offset) { text->setVerticalSpaceOffset(offset); } - virtual void setAction(uint16_t nameHash16, const std::shared_ptr& action) {} + virtual void setAction(uint16_t nameHash16, const std::shared_ptr& action); virtual void setAnchor(const Anchor anchor) { text->setAnchor(anchor); } virtual void updateSize(const Game& game) { text->updateSize(game); } diff --git a/src/Utils.cpp b/src/Utils.cpp index cdc3f1c5..6c7a6d97 100755 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -97,6 +97,18 @@ namespace Utils return ret; } + std::string toString(double d) + { + std::string str{ std::to_string(d) }; + int offset{ 1 }; + if (str.find_last_not_of('0') == str.find('.')) + { + offset = 2; + } + str.erase(str.find_last_not_of('0') + offset, std::string::npos); + return str; + } + std::string trimStart(const std::string& str, const std::string& chars) { auto startPos = str.find_first_not_of(chars); diff --git a/src/Utils.h b/src/Utils.h index 582a4700..600c1c94 100755 --- a/src/Utils.h +++ b/src/Utils.h @@ -41,6 +41,9 @@ namespace Utils std::string toLower(const std::string& str); std::string toUpper(const std::string& str); + // removes trailing zeroes from doubles + std::string toString(double d); + std::string trimStart(const std::string& str, const std::string& chars = " \t"); std::string trimEnd(const std::string& str, const std::string& chars = " \t"); std::string trim(const std::string& str, const std::string& chars = " \t"); diff --git a/src/Variable.cpp b/src/Variable.cpp index d6047f9e..b131fd60 100755 --- a/src/Variable.cpp +++ b/src/Variable.cpp @@ -1,8 +1,60 @@ #include "Variable.h" +#include "Utils.h" namespace VarUtils { - std::string toString(const Variable& var, const std::string& defVal) + bool toBool(const Variable& var) + { + if (var.is()) + { + return var.get(); + } + else if (var.is()) + { + return var.get() != 0; + } + else if (var.is()) + { + return var.get() != 0.0; + } + return var.get().empty() == false; + } + + double toDouble(const Variable& var) + { + if (var.is()) + { + return var.get(); + } + else if (var.is()) + { + return (double)var.get(); + } + else if (var.is()) + { + return (var.get() ? 1.0 : 0.0); + } + return std::atof(var.get().c_str()); + } + + int64_t toLong(const Variable& var) + { + if (var.is()) + { + return var.get(); + } + else if (var.is()) + { + return (int64_t)var.get(); + } + else if (var.is()) + { + return (var.get() ? 1 : 0); + } + return std::atol(var.get().c_str()); + } + + std::string toString(const Variable& var) { if (var.is()) { @@ -14,19 +66,16 @@ namespace VarUtils } else if (var.is()) { - return std::to_string(var.get()); + return Utils::toString(var.get()); } - else if (var.is()) + // bool + if (var.get() == true) + { + return { "true" }; + } + else { - if (var.get() == true) - { - return { "true" }; - } - else - { - return { "false" }; - } + return { "false" }; } - return defVal; } } diff --git a/src/Variable.h b/src/Variable.h index 89eebb48..867a6cd6 100755 --- a/src/Variable.h +++ b/src/Variable.h @@ -8,5 +8,8 @@ typedef mapbox::util::variant Variable; namespace VarUtils { - std::string toString(const Variable& var, const std::string& defVal = ""); + bool toBool(const Variable& var); + double toDouble(const Variable& var); + int64_t toLong(const Variable& var); + std::string toString(const Variable& var); }